DAPP(七)——React与智能合约的架构整合

合并一下react和智能合约,创建react脚手架

create-react-app myapp

将合约中对应的文件 复制到 react脚手架的根目录中

 结果如下:

 下载合约所要的依赖:

npm i openzeppelin-solidity

可以在脚手架终端执行truffle的命令语句,truffle migrate --reset

也可以执行脚本

在APP.js中引入合约build下的json文件:

import logo from './logo.svg';
import './App.css';
import json from '../build/contracts/TestToken.json'
function App() {
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>
      </header>
    </div>
  );
}

export default App;

启动项目但是会报错:

 修改合约的配置文件truffle-config.js,来约定打包的json文件放在哪里,添加contracts_build_directory属性,修改到src目录下,方便我们引入

下载web3依赖(版本可自行匹配):

npm i --save web3@1.8.0

 创建Content组件,以及修改App.js文件:

import './App.css';
import Content from './views/Content';
function App() {
  return (
    <div>
      <Content />
    </div>
  );
}

export default App;
import React from 'react'
import Web3 from 'web3'
import tokenJson from '../build/TestToken.json'
import exchangeJson from '../build/Exchange.json'
import { useEffect } from 'react';

export default function Content() {
    useEffect(() => {
        async function start() {
            //获取连接后的合约
            const web = await initWeb()
            console.log(web);
            //获取资产信息


        }
        start()
    }, [])
    async function initWeb() {
        let web3 = new Web3(Web3.givenProvider || "ws://localhost:8545")
        console.log(web3);
        let accounts = await web3.eth.requestAccounts()
        //获取netWorkId
        const netWorkId = await web3.eth.net.getId()
        //获取byteToken的合约
        const token = await new web3.eth.Contract(tokenJson.abi, tokenJson.networks[netWorkId].address)
        //获取交易所合约
        const exchange = await new web3.eth.Contract(exchangeJson.abi, exchangeJson.networks[netWorkId].address)
        //返回web3对象,当前授权账户,交易所的实例以及货币的实例
        return {
            web3,
            account: accounts[0],
            token,
            exchange
        }
    }
    return (
        <div>Content</div>
    )
}

启动项目,如此一来,我们便连接到了智能合约,我们获取到了需要的所有对象信息,那么前端就可以实现交互,实践示例会上传到资源,可自行查看,关于智能合约的内容就到这里,以后有问题再补充。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
区块链智能合约是一种基于区块链技术的智能化合约,它通过编写智能合约代码,实现了自动化执行、验证和执行合约条件的功能。区块链智能合约具有去中心化、透明、安全等特点,可以用于各种领域的应用。 DApp(去中心化应用)是构建在区块链上的应用程序,与传统的中心化应用不同,DApp使用智能合约来管理和执行应用逻辑,数据存储在区块链上,确保信息的可靠性和安全性。 实战电子版指的是对区块链智能合约与DApp应用进行实际操作和开发的电子版本。通过实战电子版,用户可以学习如何编写智能合约代码,了解区块链技术的应用场景,以及如何开发DApp应用。 实战电子版可以提供一系列的案例和示例代码,提供操作指南和开发工具,帮助用户深入理解区块链智能合约与DApp应用的原理和使用方法。用户可以通过实践和模拟操作来学习,并将所学知识应用到实际的区块链项目中。 通过实战电子版,用户可以学习到智能合约的编写和部署、DApp应用的开发和测试、区块链节点的搭建和管理等相关知识。同时,实战电子版还可以提供实时更新和维护,以适应区块链技术的不断发展和更新。 总而言之,区块链智能合约与DApp应用实战电子版是一种通过实践和模拟操作来学习和探索区块链技术的电子学习资源,对于理解、应用和开发区块链相关项目具有重要意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Goat恶霸詹姆斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值