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

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

ganache -d

将ganache环境起起来
在这里插入图片描述
然后 我们运行 dapp 拿到授权列表 回到上文结束的一个状态
在这里插入图片描述
然后 我们发布一下自己的智能合约
在我们的项目终端执行

truffle migrate --reset

在这里插入图片描述
这样 合约就发布到我们区块链上了

下一步 就有点麻烦喽
这里 我们需要通过 abi 获取当前区块链上指定的智能合约
在这里插入图片描述
那么 这里 我们就需要json

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

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

我们可以通过 web3 下的 eth 下的 net 对象的get方法直接拿到它的id
在这里插入图片描述
可以看到 这里拿到的 也是我们最先发布的 因为就是当前区块链中存的
在这里插入图片描述
那么 根据这个对象结构
在这里插入图片描述
我们直接

grToken.networks[networkId].address

就可以轻松拿到啦
在这里插入图片描述
运行之后我们查看控制台
在这里插入图片描述
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
去获取我们合约的对象
然后 我们运行代码 查看控制台
在这里插入图片描述
这里 我们合约的对象就被输出出来了
但这里看着不是很明显 我们打开这个合约对象 找到 methods 查看下面有没有我们合约自己写的方法就可以了
在这里插入图片描述
我们之前也说过 想调用这些函数 也要通过 methods

然后 我们甚至可以如法炮制的 将交易所的json也弄进来
其实就是 引入json 然后 从json中拿abi 通过区块链拿到的networkId
拿到对应的 address
在这里插入图片描述

然后 我们运行代码查看控制台
然后打开 methods 会发现 我们交易所合约的这些订单函数也都进来了 说明是没问题的
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/111164.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

提高小程序SEO 排名,9招优化技巧!

在当今移动互联网时代&#xff0c;小程序已经成为企业必不可少的一种营销手段&#xff0c;而如何让用户能够更容易地找到自己的小程序&#xff0c;就需要进行SEO优化&#xff0c;提升小程序的排名&#xff0c;本文将 为大家介绍9个小程序SEO优化技巧&#xff0c;帮助您的小程序…

双指针——快乐数

一、题目解析 由题目我们可以分析出无非就两种情况&#xff1a; 这个数一直变化最终能变到1这个数一直变化最终是无限循环 其实这两种情况我们也可以抽象成是一种情况&#xff0c;因为第一种情况虽然变到了1但是1再继续变下去也是形成一个环&#xff0c;只不过这个环的数都是…

视频下载软件 Downie4 mac中文介绍

Downie mac是一款Mac平台上非常实用的视频下载工具。它支持下载各种视频网站上的视频&#xff0c;并且具有快速、稳定、易于使用的特点。 Downie支持下载各种视频网站上的视频&#xff0c;包括YouTube、Vimeo、Netflix、Hulu、Amazon等等。它具有快速、稳定的下载速度&#xff…

css:transform实现平移、旋转、缩放、倾斜元素

目录 文档语法示例旋转元素 transform-rotate旋转过渡旋转动画 参考文章 文档 https://developer.mozilla.org/zh-CN/docs/Web/CSS/transform 语法 /* Keyword values */ transform: none;/* Function values */ transform: matrix(1, 2, 3, 4, 5, 6); transform: translate…

使用simple_3dviz进行三维模型投影

【版权声明】 本文为博主原创文章&#xff0c;未经博主允许严禁转载&#xff0c;我们会定期进行侵权检索。 更多算法总结请关注我的博客&#xff1a;https://blog.csdn.net/suiyingy&#xff0c;或”乐乐感知学堂“公众号。 本文章来自于专栏《Python三维模型处理基础》的系列文…

0基础学习PyFlink——用户自定义函数之UDTAF

大纲 UDTAFTableAggregateFunction的实现累加器定义创建累加 返回类型计算 完整代码 在前面几篇文章中&#xff0c;我们分别介绍了UDF、UDTF和UDAF这三种用户自定义函数。本节我们将介绍最后一种函数&#xff1a;UDTAF——用户自定义表值聚合函数。 UDTAF UDTAF函数即具备了…

ATECLOUD如何进行电源模块各项性能指标的测试?

ATECLOUD平台进行电源模块各项性能指标的测试是通过以下步骤实现的&#xff1a; 连接测试设备&#xff1a;将测试设备与云计算服务器连接&#xff0c;实现数据采集和远程控制。测试设备包括示波器、电子负载、电源、万用表等&#xff0c;这些设备通过纳米BOX连接到云测试平台上…

【Java 进阶篇】深入理解 Java Response:从基础到高级

HTTP响应&#xff08;Response&#xff09;是Web开发中的一个关键概念&#xff0c;它是服务器向客户端&#xff08;通常是浏览器&#xff09;返回数据的方式。理解如何在Java中处理和构建HTTP响应是开发Web应用程序的重要一部分。本文将从基础知识到高级技巧&#xff0c;详细介…

【Linux】虚拟机部署与发布J2EE项目(Linux版本)

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《微信小程序开发实战》。&#x1f3af;&#x1f3a…

Linux 命令|服务器相关

1. 在公共 linux 上创建 python 虚拟环境 【精选】在公共Linux服务器上创建自己的python虚拟环境_服务器创建自己的环境-CSDN博客 2. 查看现存的状态&#xff0c;看有没有程序在跑 nvidia-smi命令详解-CSDN博客 3. 上传本地文件到服务器 在本地 Mac 计算机的终端中&#x…

谷歌财报解读:基本盘守成有余,云业务进取不足?

科技巨头的AI之战持续上演&#xff0c;而财报季是一窥AI成色的重要窗口。 谷歌和微软这对在多个领域均正面对决的科技巨头&#xff0c;又在同一日发布了财报&#xff0c;而这次相比上季度&#xff0c;战局似乎迎来了反转。 上季度&#xff0c;谷歌不仅成功抵御了Bing联手ChatG…

HTML基本概念:

HTML简介&#xff1a; 超文本标记语言&#xff08;英语&#xff1a;HyperText Markup Language&#xff0c;简称&#xff1a;HTML&#xff09;是一种用于创建网页的标准标记语言。 1&#xff09;、HTML 是用来描述网页的一种语言。 2&#xff09;、HTML 不是一种编程语言&am…

STM32:串口轮询模式、中断模式、DMA模式和接收不定长数据

一.串口轮询模式底层机制&#xff1a; 在STM32每个串口的内部都有两个寄存器&#xff1a;发送数据寄存器(TDR)/发送移位寄存器,当我们调用HAL_UART_Transmit 把数据发送出去时&#xff0c;CPU会将数据依次将数据发送到数据寄存器中&#xff0c;移位寄存器中的数据会根据我们设置…

应用于智慧矿山的皮带跑偏视频分析AI算法

一、引言 随着科技的发展&#xff0c;人工智能技术已经在各个领域得到广泛应用。而在智慧矿山领域&#xff0c;皮带跑偏视频分析是其中一个重要的应用方向。本文将详细介绍皮带跑偏视频分析AI算法的原理&#xff0c;以期为智慧矿山的发展提供有益的参考。 二、算法原理 1. 视…

Mac上具好用的屏幕录像工具(Omi录屏专家)Screen Recorder By Omi Mac 下载安装详细教程

Omi 录屏专家 是 Mac 上的一款出色的录音工具&#xff0c;它让您能够在Mac电脑上轻松录制和保存高质量音频。这款应用拥有简单直观的操作界面&#xff0c;无论我们水平如何&#xff0c;都可以轻松捕捉录制卓越的音质和录像视频。 该版本的 Omi 安装后可以直接支持最高 4K 60帧…

Django 尝试SSE报错 AssertionError: Hop-by-hop headers not allowed 的分析

情况描述 近期计划测试一下django对日志打印的支持&#xff0c;一般都是用websocket的方式&#xff0c;想测试一下SSE (Server-sent events)的服务端推送&#xff0c;发现过程中存在报错&#xff1a; Traceback (most recent call last):File "D:\Software\Anaconda3\li…

正点原子嵌入式linux驱动开发——Linux 音频驱动

音频是最常用到的功能&#xff0c;音频也是linux和安卓的重点应用场合。STM32MP1带有SAI接口&#xff0c;正点原子的STM32MP1开发板通过此接口外接了一个CS42L51音频DAC芯片&#xff0c;本章就来学习一下如何使能CS42L51驱动&#xff0c;并且CS42L51通过芯片来完成音乐播放与录…

3.5 队列的表示和操作的实现

思维导图&#xff1a; 3.5.1 队列类型 3.5.1 队列的类型定义 1. 简介 队列是一种特殊的线性表&#xff0c;它的特性是只能在表的一端进行插入操作&#xff0c;而在另一端进行删除操作。通常将允许插入操作的一端称为队尾&#xff0c;允许删除操作的一端称为队头。 2. 抽象…

秒级启动的集成测试框架

本文介绍了一种秒级启动的集成测试框架&#xff0c;使用该框架可以方便的修改和完善测试用例&#xff0c;使得测试用例成为测试过程的产物。 背景 传统的单元测试&#xff0c;测试的范围往往非常有限&#xff0c;常常覆盖的是一些工具类、静态方法或者较为底层纯粹的类实现&…

Shadingsphere proxy 启动报错 Windows

Exception in thread "main" java.lang.NoClassDefFoundError 本来打算在本地电脑测试一下proxy的功能&#xff0c;使用的二进制安装包&#xff0c;没想到怎么都启动不起来&#xff0c;一直报找不到某个类的错误。我还以为是自身的配置有问题&#xff0c;等我copy了…