马蹄链(matic)智能合约系统开发
Ethers.js与Web3.js一样,都是以太坊标准JavaScript API库,Ethers.js最初是为了ethers.io设计,系统开发对接详情+牛客号V后来拓展为一个开放的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的方式使用Ethers.js(安装Hardhat时通过hardhat-ethers插件安装经过包装后的Ethers.js)
安装步骤如下:
// command line
npm install --save ethers
// install Hardhat
npm init
npm install --save-dev hardhat
npx hardhat
常用API介绍
Ethers.js库中的API主要由4大部分组成:Providers,Signers,Contract Interaction,Utilities
1. Provider
Provider是以太坊网络连接的抽象,其为标准以太坊节点功能提供简洁、一致的接口
在Provider中比较常用的方法为JsonRpcProvider,该方法允许通过JSON-RPC的方式连接某一个节点网络
// new ethers.providers.JsonRpcProvider([urlOrConnectionInfo[, networkish]])
const provider = new ethers.providers.JsonRpcProvider(
'https://rpc.api.moonbase.moonbeam.network',
{
chainId: 1287,
name: 'moonbase-alpha'
}
);
在上面的代码示例中,通过JsonRpcProvider的方式,连接到了Moonbase Alpha测试网中,在其中不止可以定义url参数,还可以定义该网络的chainId与name等信息
2. Signers
Signer是以太坊账户的抽象,可用于对消息和交易进行签名,并将签名过的交易发送到以太坊网络以执行状态更改操作
在Signer中比较常用的方法为Wallet,只有Wallet可以使用私钥对交易和信息进行签名
// new ethers.Wallet(privateKey[, provider])
const alice = new ethers.Wallet(privateKeyAlice, provider);
const bob = new ethers.Wallet(privateKeyBob, provider);
const txReceipt = await alice.sendTransaction({
to: bob.address,
value: ethers.utils.parseEther('1.0')
});
await txReceipt.wait();