ethers.js常用的操作方法

news2024/11/26 19:29:12
安装:npm install --save@5.7.2 ethers

--ethers比web3来说使用方式相对简洁很多,主要就操作三个大对象

        1. Provider,(提供者)是一个用于连接以太坊网络的抽象类,提供了只读形式来访问区块链网络和获取链上状态;

        2. Signer,(签名器)通常是以某种方式直接或间接访问私钥,可以签名消息和在已授权网络中管理你账户中的以太币来进行交易。

        3. Contract(合约)是一个运行在以太坊网络上表示现实中特定合约的抽象,应用可以像使用JavaScript对象一样使用它。

1.创建一个Provider


import { ethers } from "ethers";
let provider = new ethers.providers.Web3Provider(window.ethereum)

2.创建一个Signer,在此之前要先链接用户钱包,获取地址

//参数有两个,第一个固定字符串,第二个数组,该方法会启动metask插件,并链接账户,返回结果是账户地址
const go = async () => {
  //地址
  let account = await provider.send("eth_requestAccounts", []);
  //signer
  let signer = provider.getSigner(account[0]);
};
go();


2.1获取余额

let balance = await signer.getBalance()

2. 2格式化余额

//格式化后以eth为单位
let balance = ethers.utils.formatEther(balance)

3. 创建Contract

  const proxyContract = new ethers.Contract(
    address,//合约地址
    abi,//合约abi
    signer
  );
// 下面解释三个参数的含义

        --参数有三个,第一个是合约地址,第二个是合约abi,第三个是签名者,合约abi是solidity语言编写代码之后,编译成的json文件,需要文件里的abi字段作为第二个参数,json文件结构大概长这样:

        --几万行的json文件,只需要其中的 abi 和 bytecode 生成地址作为第一个参数,其他的我们不care~

import { ContractFactory } from "ethers";//用于生成地址
import abi from "./UsufructNFT.json"; //引入json文件

// 参数有三个,1.abi   2. bytecode   3. signer;如果有合约文件的话都可以获取到
let factory = new ContractFactory(abi.abi, abi.bytecode, signer); 
let factoryRes = await factory.deploy();
console.log("合约地址: " + factoryRes.address);

        --参数都获取到就可以创建合约并调用合约上的属性及方法啦

  const proxyContract = new ethers.Contract(
    factoryRes.address,//合约地址
    abi.abi,//合约abi
    signer
  );
  console.log(proxyContract)

        --proxyContract 就是实例化的合约,可以使用proxyContract. 点合约上的方法

        ethers官网:https://learnblockchain.cn/ethers_v5/

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

8年测试老鸟总结,性能测试案例经验,高级测试之道...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 性能基准测试&…

测试员最令程序员讨厌的十种行为,你中了几条?

在做软件测试这些年,总会有程序员给我吐槽某某测试员令其发指的一些事。这里我总结了一些,看你有没有中呢? 1、爱较真,只要逮着问题,哪怕是技术文档中的错别字也要提到bug管理工具中,更让程序员绝望的是&a…

测试员与程序员那些烂在心里的共同秘密

1、生产环境出现了一个较严重的bug,赶在用户没发现的情况下,测试员与程序员悄悄地改了,并跳过了N个步骤做了次发布。 2、程序员告诉测试员,新来的技术leader每天做得最多的事就是copy他们的代码,一份不够还再来一份&a…

VR全景智慧园区,沉浸式数字化体验,720度全视角展示

导语: 随着科技的迅猛发展,虚拟现实(Virtual Reality,简称VR)全景技术已经成为了人们趋之若鹜的新兴领域。 而城市园区作为现代社会的重要组成部分,也正在积极寻求创新的方式来吸引更多的人流和投资。 一&…

【QQ界面展示-设置文本框的leftView属性 Objective-C语言】

一、这个搞定以后,接下来,就实现另外一个效果, 1.注意,我们上午把这个文本框,是不是本来说文本框,直接放这儿就OK了吧,但是,我们上午为了能让这个文本框兼容iOS6,是不是把这个文本框的边框,设为None,然后呢,边框设为nil边框,是不是设了一个背景图啊, 但我们做完…

Ansys Zemax | 如何在OpticStudio中建模和设计真实波片

本文介绍了如何在 OpticStudio 中建模和设计真实的单色和消色差波片。它将演示如何使用双折射材料,通过构建评价函数来计算相位延迟,并使用 Universal Plot 将相位延迟与波片厚度的关系可视化。(联系我们获取文章附件) 双折射材料…

搜索树的逻辑以及代码实现-重点删除结点的逻辑

目录 搜索二叉树概念 代码 二叉搜索树的插入 二叉搜索树的查找 二叉搜索树的删除(非常重要) a、b、c情况:删除14 d情况 打印结点中序遍历 整体代码:(有R开头的就是递归写法,逻辑一样) 搜…

合宙Air724UG Cat.1模块硬件设计指南--UART接口

UART接口 简介 串行接口简称串口,同时串口又分为同步收发串口与异步收发串口两种方式,而CAT1模块支持的串口为异步收发方式,简称UART口。串口作为设备的外部接口,是调试开发的一种重要的开发手段。 特性 UART1串口 包括数据线TXD…

ubuntu (Linux mint) 安装mysql 5.7

1 从官网下载deb格式安装包 网址: https://downloads.mysql.com/archives/community/ 2 解压安装包 执行命令: tar -xvf mysql-server_5.7.41-1ubuntu18.04_amd64.deb-bundle.tar 如下图所示: 你会发现多了很多.deb文件。 3 批量安装 .d…

当C/C++遇上高性能计算|会C/C++编程的看过来,这类岗位是真香

C/C编程语言作为经典而强大的编程语言,一直在计算机科学领域占据着重要的地位。而当C/C遇上高性能计算,这个组合将带给你无尽的机遇和挑战,成为一名高性能计算工程师,你会发现这类岗位是真香。从此告别爹不疼、娘不爱的尴尬境地。…

【RH850/U2A】:Task激活过程

Task激活过程 Autostart非AutostartTASK(Default_Init_Task)EcuM_StartupTwo(void)SchM_Init(void)BswM_Init(xx)Rte_Start(void)Task激活过程,分自动运行(AutoStart)和非自动运行。 Autostart 在DavinciCfg中的配置如下: Autostart意味作在执行StartOS()后就开始运行了。…

使用Python进行小波变化

上图展示了使用Python小波变换的一个使用案例,数据和代码来自https://github.com/ct6502/wavelets。在使用运行代码的时候发现了源代码的报错分别在Line115和Line136,是将Y轴变为对数轴,需要将“plt3.set_yscale(‘log’,base2, subsNone)”改…

pycharm HfArgumentParser ArgumentParser 参数设置 以及Debug

HfArgumentParser可以将类对象中的实例属性转换成转换为解析参数。必须注意的是,这里的类对象必须是通过dataclass()创建的类对象。并且通过HfArgumentParser创建的解析参数,都是可选参数。 from transformers import HfArgumentParser from dataclasse…

Pytest教程__fixture(9)

什么是fixture fixture是pytest特有的功能,使用装饰器 pytest.fixture 标记的函数在其他函数中能被当作参数传入并被调用。 fixture有明确的名字,在其他函数,模块,类或整个工程调用它时会被激活。 fixture是基于模块来执行的&a…

【计算机视觉 | 分割】SAM 升级版:HQ-SAM 的源代码测试(含测试用例)

文章目录 一、第一段代码二、第二段代码三、第三段代码3.1 函数13.2 函数23.3 函数33.4 函数43.5 函数5 四、第四段代码五、第五段代码5.1 测试用例15.2 测试用例25.3 测试用例35.4 测试用例45.5 测试用例55.6 测试用例65.7 测试用例75.8 测试用例8 下面是一个测试用例&#xf…

代理模式(十五)

相信自己,请一定要相信自己 上一章简单介绍了享元模式(十四), 如果没有看过, 请观看上一章 一. 代理模式 引用 菜鸟教程里面的代理模式介绍: https://www.runoob.com/design-pattern/proxy-pattern.html 在代理模式(Proxy Pattern)中&…

阿里云服务器租用费用_2023价格表

2023年阿里云服务器租用费用,阿里云轻量应用服务器2核2G3M带宽轻量服务器一年108元,2核4G4M带宽轻量服务器一年297.98元12个月,阿里云u1服务器2核4G、2核8G、4核8G、8核16G、4核16G、8核64等配置新人3折,云服务器c7、g7和r7均有活…

责任链模式:构建一条责任链去处理不同级别的日志信息

概要 责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,在有多个对象(处理者)都可以接收请求的情况下,允许你将多个对象连接成一条处理链,请求沿着处理链进行发送。收到请求后…

最新水文水动力模型在城市内涝、城市排水、海绵城市规划设计中深度应用丨SWMM排水管网水力、水质建模及海绵与水环境应用

目录 第一部分 CAD、GIS在水力建模过程中的应用 第二部分 SWMM模型深度应用 第三部分 城市内涝一维二维耦合模拟 第四部分 海绵城市关键控制指标计算 第五部分 SWMM二次开发基础 SWMM排水管网水力、水质建模及在海绵与水环境中的应用 随着计算机的广泛应用和各类模型软件…

基于AutoJs7实现的薅羊毛App专业版源码大分享

源码下载链接:https://pan.baidu.com/s/1QvalXeUBE3dADfpVwzF_xg?pwd0736 提取码:0736 专业版肯定比个人版功能强大并且要稳定。增加了很多功能的同时也测试封号的App,对于封号的App,给予剔除。虽然App数量减少了但是都是稳定的…