参考ethers库的官方文档(合约介绍):https://docs.ethers.io/ethers.js/html/api-contract.html#connecting-to-existing-contracts
在ethers库中这里非常重要:
providerOrSigner参数解释:
provider:提供者(节点)----只能读取区块链的数据,无需发送交易!
Signer:钱包签名,改变区块链的数据必须使用钱包签名具有写权限!
ActiveWallet活跃的钱包(等价于provider+Signer)具有读写权限!
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 )