以太坊智能合约库ethers(基于web3.js封装,比web3.js更容易操作)中Providers vs Signers的区别(务必注意,有坑!!!)

时间:2024-04-13 09:21:06

参考ethers库的官方文档(合约介绍):https://docs.ethers.io/ethers.js/html/api-contract.html#connecting-to-existing-contracts

 

在ethers库中这里非常重要:

providerOrSigner参数解释:

provider:提供者(节点)----只能读取区块链的数据,无需发送交易!

Signer:钱包签名,改变区块链的数据必须使用钱包签名具有写权限!

ActiveWallet活跃的钱包(等价于provider+Signer)具有读写权限!

 

以太坊智能合约库ethers(基于web3.js封装,比web3.js更容易操作)中Providers vs Signers的区别(务必注意,有坑!!!)

以太坊智能合约库ethers(基于web3.js封装,比web3.js更容易操作)中Providers vs Signers的区别(务必注意,有坑!!!)

以太坊智能合约库ethers(基于web3.js封装,比web3.js更容易操作)中Providers vs Signers的区别(务必注意,有坑!!!)

 

ethers库中两个常用的创建合约的方法:

# 合约工厂是来自动部署合约的
new ethers.ContractFactory ( abi , bytecode [ , signer ] ).deploy();


# 合约对象使用truffle部署合约之后,拿到合约地址(等价于web3.js中的at方法)
new ethers.Contract ( addressOrName , abi , providerOrSigner )


# 如果创建合约没有提供providerOrSigner,那就手动**合约
let new_contract = contract.connect( providerOrSigner )