当前位置:   article > 正文

以太坊标准JS API库——浅谈Web3.js与Ethers.js_web3.js ethers.js

web3.js ethers.js

web3.js与ethers.js/hardhat-ethers介绍

版本号:
Web3.js v1.7.3
Ethers.js v.5.6

简单介绍web3.js

web3.js是一个标准的以太坊JavaScript API库,该JS库由以太坊基金会开发维护,同时它也是最早且使用最广泛的一个ETH API库。由于Moonbeam完全兼容以太坊EVM,因此web3.js可以在Moonbeam上进行正常交互

web3.js(v1.7.3)库官方使用文档:https://web3js.readthedocs.io/en/v1.7.3/index.html

web3.js的安装与常用API介绍

安装web3.js

在命令终端输入npm install web3即可正常安装

常用API介绍

1. 签名交易web3.eth.accounts.signTransaction()
web3.eth.accounts.signTransaction(tx, privateKey, [, callback]) => promise<object>
  • 1

第一个参数为tx,即定义该交易的细则,在其中可以定义的交易细则有gas,to,value,gasPrice等参数,其中gas是必须要设置的参数(其余用到的交易参数都是可选择的),gas参数规定了该交易将要花费的gas费用,to参数则说明了这笔交易的接受者,而value参数则规定了这笔交易中转移代币的数量
第二个参数为privateKey,为发起交易人的私钥,该交易将由该私钥进行签署

第三个参数为callback,该参数为一个可选参数,该回调函数返回的第一个参数为一个错误对象,第二个参数为结果对象

该接口返回一个Promise对象,如果签署交易成功,将会返回该交易的一些具体信息,如messageHashrawTransactiontransactionHash等信息

2. 部署合约contractInstance.deploy()
new web3.eth.Contract(jsonInterface[, address][, options]) => promise<contract>
  • 1

该方法用于生产合约实例,只有通过合约实例才能进行部署操作。该函数只需要填写一个一个参数即可,jsonInterface即为该合约的abi,填入该参数即可完成合约实例的生成

contractInstace.deploy(options) => promise<transaction>
  • 1

改方法用于部署合约,调用该函数将返回部署合约交易的具体信息
其中的参数为options,其中里面可以写入两个部分,即data(String)与arguments(Array)两个参数,data参数为合约的bytecode;arguments参数为合约构造函数中的参数,因此该参数为可选的

deploy函数会返回一个交易对象,该对象自带一个数组与4个函数,数组表示先前传入的构造函数的入参,四个函数分别为send()estimateGas()encodeABI()createAccessList()

3. 调用合约方法methods.myMethod.call()
myContract.methods.myMethod(param1[, param2[, ...]]).call(options [, defaultBlock] [, callback]) => returnValuesOfContract
  • 1

该方法用于调用一个“constant”方法并在不发起任何交易的同时在EVM执行智能合约的方法,使用此方法调用的智能合约方法均不会改变合约状态
其中myMethod()括号中填入的参数为该方法的入参,call()中填入的options包含如下几个方面的值:from、gasPrice、gas,call()中还可以选择性的填入defaultBlock与callback,其中defaultBlock为默认区块设置,callback回调函数第一个参数为错误对象,第二个参数为合约方法结果

该方法会返回调用函数的返回结果,如果返回结果为多个,则返回一个带有索引的对象

4. 订阅监听事件web3.eth.subscribe()
web3.eth.subscribe(type [, options] [, callback]) => subscriptionInstance
  • 1

该方法用于订阅监听智能合约中触发的事件
其中订阅方法包含四种方法,分别为:pendingTransactions,newBlockHeaders,syncing,logs

监听事件一般采用newBlockHeaders模式,该模式订阅监听传入的区块头,该特性可以作为计时器来检查区块链上的变化。callback参数与上述函数一样,第一个参数为错误对象,第二个参数为结果对象

同时在该函数的返回内容中,有几个回调函数比较常见:on("connected"), on("data"), on("error"), on("changed")

  1. 一旦订阅成功连接则触发on("connected"),该函数返回订阅id;
  2. 当log有数据时触发on("data")
  3. 当订阅出错时触发on("error")
  4. 当有log被删除出区块链时触发on("changed")

简单介绍Ethers.js

Ethers.js与Web3.js一样,都是以太坊标准JavaScript API库,Ethers.js最初是为了ethers.io设计,后来拓展为一个开放的JS API库,与Web3.js相同的是,Ethers.js同样可以与Moonbeam进行正常交互,这得益于Moonbeam是一个完全兼容以太坊EVM的智能合约平台;而与Web3.js不同的是,Ethers.js在使用时不需要过多的回调函数,而且可以搭配Hardhat工具是的语法得到进一步的优化

Ethers.js(Hardhat)的安装与常用API介绍

Ethers.js(Hardhat)的安装

Ethers.js的安装分为两种,一种为直接使用命令行安装,另一种为通过Hardhat间接安装(配合Hardhat使用),推荐第二种通过Hardhat声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】

推荐阅读
相关标签