Web3 React项目Dapp获取智能合约对象

这篇具有很好参考价值的文章主要介绍了Web3 React项目Dapp获取智能合约对象。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上文Web3 整理React项目 导入Web3 并获取区块链信息中,我们在react搭建的dapp中简单拿到了我们区块链中的账号授权信息
那 我们继续
先终端运行

ganache -d

将ganache环境起起来
Web3 React项目Dapp获取智能合约对象,web3,react.js,智能合约
然后 我们运行 dapp 拿到授权列表 回到上文结束的一个状态
Web3 React项目Dapp获取智能合约对象,web3,react.js,智能合约
然后 我们发布一下自己的智能合约
在我们的项目终端执行

truffle migrate --reset

Web3 React项目Dapp获取智能合约对象,web3,react.js,智能合约
这样 合约就发布到我们区块链上了

下一步 就有点麻烦喽
这里 我们需要通过 abi 获取当前区块链上指定的智能合约
Web3 React项目Dapp获取智能合约对象,web3,react.js,智能合约
那么 这里 我们就需要json

这里 我们也不说更多的 先导入 grToken合约的json 然后 将这个token先打印一下看看
Web3 React项目Dapp获取智能合约对象,web3,react.js,智能合约
然后 我们 运行项目 打开浏览器的控制台
Web3 React项目Dapp获取智能合约对象,web3,react.js,智能合约
很明显 abi直接就有了
abi的问题解决了 那么address呢?
address 在 networks中
我们打开会看到 networks 下面会有一个value值 然后它下面有一个address
Web3 React项目Dapp获取智能合约对象,web3,react.js,智能合约
这个自然就没有abi那么简单了
首先中间这个value的内容你肯定不能写死 因为这是生成的 不固定的
如果写死 那么以后部署一次就要改一次代码

这个东西确实叫 networkId 他也是有办法获取出来的

我们可以通过 web3 下的 eth 下的 net 对象的get方法直接拿到它的id
Web3 React项目Dapp获取智能合约对象,web3,react.js,智能合约
可以看到 这里拿到的 也是我们最先发布的 因为就是当前区块链中存的
Web3 React项目Dapp获取智能合约对象,web3,react.js,智能合约
那么 根据这个对象结构
Web3 React项目Dapp获取智能合约对象,web3,react.js,智能合约
我们直接

grToken.networks[networkId].address

就可以轻松拿到啦
Web3 React项目Dapp获取智能合约对象,web3,react.js,智能合约
运行之后我们查看控制台
Web3 React项目Dapp获取智能合约对象,web3,react.js,智能合约
address 就被我们拿到了

那么 我们整体代码就可以改成这样

import { useEffect } from 'react';
import Web3 from "web3";
import grToken from "../build/grToken.json";

export default function PageIndex() {
  useEffect(() =>{
      async function start(){
          var web3 = new Web3(Web3.givenProvider || "http://localhost:8545");
          const WebData = await initialization(web3)
          console.log(WebData)
          let networkId = await web3.eth.net.getId();
          const token = await new web3.eth.Contract(grToken.abi,grToken.networks[networkId].address);
          console.log(token)
      }
      start();
  },[])

  // 获取web 信息
  async function initialization(web3) {
      let account = await web3.eth.requestAccounts();
      return account
  }
  return (
    <div>
      欢迎来到 Web3 练习的世界
    </div>
  );
}

这里 我们通过刚才拿到的 abi 与 address
new了 web3的Contract
去获取我们合约的对象
然后 我们运行代码 查看控制台
Web3 React项目Dapp获取智能合约对象,web3,react.js,智能合约
这里 我们合约的对象就被输出出来了
但这里看着不是很明显 我们打开这个合约对象 找到 methods 查看下面有没有我们合约自己写的方法就可以了
Web3 React项目Dapp获取智能合约对象,web3,react.js,智能合约
我们之前也说过 想调用这些函数 也要通过 methods

然后 我们甚至可以如法炮制的 将交易所的json也弄进来
其实就是 引入json 然后 从json中拿abi 通过区块链拿到的networkId
拿到对应的 address
Web3 React项目Dapp获取智能合约对象,web3,react.js,智能合约

然后 我们运行代码查看控制台
然后打开 methods 会发现 我们交易所合约的这些订单函数也都进来了 说明是没问题的
Web3 React项目Dapp获取智能合约对象,web3,react.js,智能合约文章来源地址https://www.toymoban.com/news/detail-738224.html

到了这里,关于Web3 React项目Dapp获取智能合约对象的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于区块链、Web3.0、智能合约、DApp、DAO一文解释清楚

    区块链简单理解就是, 所有数据变成区块组成的链条,一个区块里保存着一条数据。 一笔支付、一个评论、一次查看、一条短信、一袋苹果都能保存为一个数据区块。 由于区块通过链条环环相扣,这确保了链上的数据是不可被篡改的。 链条复制了多条副本放置到多台互不相

    2024年02月02日
    浏览(69)
  • 以太坊Dapp通过web3js部署调用智能合约

    参考视频:https://www.bilibili.com/video/BV14z4y1Z7Jd?p=1 https://remix.ethereum.org/ 创建一个新的文件夹 mkdir MyDapp2 启动 ganache-cli 下载web3 npm install web3 ,注:ganache的启动和deploy.js要在同一个目录。 先进行测试 node deploy.js 部署合约 web3的版本:1.7.1 复制 WEB3DEPLOY 的内容到deploy.js == ganache需要

    2023年04月23日
    浏览(46)
  • 为 Web3 项目撰写智能合约(Web3项目三实战之二)

    时间像是在我们身边悄然而过,而我们的 Web3项目实战 系列也来到了第三个 Web3 项目。若正在屏幕前浏览本篇文章的您,或是从 Web3项目一 开篇之作,一直跟随着我的步伐来到了本文,想必您对于 Web3 与 Web2 的区别,有了最为深刻的感触了! 当然咯,前提是您先前或者说是当

    2024年01月18日
    浏览(50)
  • Web3 整理React项目 导入Web3 并获取区块链信息

    上文 WEB3 创建React前端Dapp环境并整合solidity项目,融合项目结构便捷前端拿取合约 Abi 我们用react 创建了一个 dapp 项目 并将前后端代码做了个整合 那么 我们就来好好整理一下 我们的前端react的项目结构 我们在 src 目录下创建一个 components 用来存放我们的 大规模组件 然后 在

    2024年02月02日
    浏览(48)
  • WEB3 在 React搭建的Dapp中通过redux全局获取并存储用户ETH与自定义token与交易所存储数量

    上文 web3 在React dapp中全局管理web3当前登录用户/智能合约等信息中 我们简单操作,将web3的公共信息都存在了window对象上 然后 我们先来启动一下环境 终端输入 打开项目 终端输入 在区块链上发布一下智能合约 然后 我们在 src下的 components 目录下创建两个组件 分别是 余额组件

    2024年02月05日
    浏览(51)
  • 使用 React、Web3.js 和 Metamask 构建 Web3 dApp 身份验证

    我相信您和我一样对 Web3 充满热情。本文介绍了一种新的区块链开发登录方法:使用 MetaMask 扩展的一键式加密安全登录流程,所有数据都存储在我们自己的后端。它还可以保护我们的数据和加密货币的安全。 在这里,我们将构建一个允许用户使用 MetaMask 登录的身份验证解决

    2024年02月04日
    浏览(62)
  • Java Web3J :使用web3j调用自己的智能合约,返回一个内部有数组的对象结构时出现NPE问题

    之前有写过一篇文章Java Web3J :使用web3j调用自己的智能合约的方法(教程),当时只是简单的方法调用,也不涉及到什么复杂的数据类型,入参是long类型,出参是String类型。 遇到这个问题是因为有一个方法,需要通过提案的治理id,查询链上提案数据,这个就需要接收提案

    2024年01月19日
    浏览(67)
  • web3 React dapp项目通过事件从区块链中拿到 已取消 已完成 和所有的订单数据 并存入redux中

    好 上文web3通过antd 在React dapp中构建订单组件基本结构我们算是把一个基本的订单组件展示做出来了 然后 我们继续 起一下环境先 ganache 终端运行 MetaMask 登录一下 然后 打开项目 发布一下合约 然后 运行一下 测试脚本 转入交易所 ETH和grToken 还创建两个订单 然后 运行起 dapp项

    2024年02月05日
    浏览(49)
  • 部署智能合约到 polygon 上(Web3项目三实战之三)

    在上一篇 为 Web3 项目撰写智能合约(Web3项目三实战之二) 中,我们已经为 Web3 项目编写好了 智能合约 ,而本文将要部署 智能合约 到 polygon 上。 您或许会问, polygon 到底是什么?其实它是 测试链 (也可以说是 测试网 ),由于 主链 (或 主网 )部署 智能合约 是需要 ga

    2024年01月23日
    浏览(49)
  • web3 React dapp中编写balance组件从redux取出并展示用户资产

    好啊 上文WEB3 在 React搭建的Dapp中通过redux全局获取并存储用户ETH与自定义token与交易所存储数量中 我们拿到了用户的一个本身 和 交易所token数量 并放进了redux中做了一个全局管理 然后 我们继续 先 起来ganache的一个模拟环境 然后 我们启动自己的项目 顺手发布一下合约 然后

    2024年02月05日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包