del*_*ete 9 ethereum web3js ethers.js
根据ethers.js的官方文档,这应该是使用自定义数据连接到特定网络(如Rinkeby -testnet)的方式:
const provider = ethers.getDefaultProvider(network, {
etherscan: ETHERSCAN_API_KEY,
infura: INFURA_API_KEY,
Run Code Online (Sandbox Code Playgroud)
此外,这也是获得签名者来签署交易的方法:
const signer = provider.getSigner()
Run Code Online (Sandbox Code Playgroud)
但是,现在默认提供程序提供了“getSigner”方法。
类型错误:provider.getSigner 不是函数
如何使用 ethers.js 实现这一点?
InfuraProvider 的 getSigner() 不起作用,请使用:
const infuraProvider = new ethers.providers.InfuraProvider(network, API_KEY);
const wallet = new ethers.Wallet(privateKey, infuraProvider);
const signer = wallet.connect(infuraProvider);
contract = new ethers.Contract(smartContractAddress, abi, signer);
Run Code Online (Sandbox Code Playgroud)
ethers.getDefaultProvider似乎有些破损或过时了。相反,您应该直接连接到特定的提供程序,对于 Alchemy 如下所示:
const provider = new ethers.providers.AlchemyProvider("rinkeby", apiKey)
Run Code Online (Sandbox Code Playgroud)
或对于 Infura:
const provider = new ethers.providers.InfuraProvider("rinkeby", apiKey)
Run Code Online (Sandbox Code Playgroud)
之后,很容易获得签名者:
const signer = provider.getSigner()
Run Code Online (Sandbox Code Playgroud)
或者
const walletSigner = wallet.connect(provider);
Run Code Online (Sandbox Code Playgroud)
您可以在此处阅读有关此内容的更多信息。
这对我有用:
const provider = new ethers.providers.JsonRpcProvider(url)
const signer = provider.getSigner()
Run Code Online (Sandbox Code Playgroud)
从 Alchemy文档中了解这一点
ethers.js文档
| 归档时间: |
|
| 查看次数: |
8302 次 |
| 最近记录: |