【问题标题】:How to connect ethers.js library with Rinkeby programmatically?如何以编程方式将 ethers.js 库与 Rinkeby 连接?
【发布时间】:2021-08-28 17:10:53
【问题描述】:

根据 ethers.jsofficial docs,这应该是如何使用自定义数据连接到特定网络(如 Rinkeby-testnet)的方式:

 const provider = ethers.getDefaultProvider(network, {
    etherscan: ETHERSCAN_API_KEY,
    infura: INFURA_API_KEY,

此外,这将是获取签名者以签署交易的方式:

 const signer = provider.getSigner()

但是,现在默认提供程序上提供了方法“getSigner”。

TypeError:provider.getSigner 不是函数

如何使用 ethers.js 来实现?

【问题讨论】:

    标签: ethereum web3 ethers.js


    【解决方案1】:

    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);
    

    【讨论】:

    • 到 2021 年仍然如此,而且这个解决方案有效
    【解决方案2】:

    ethers.getDefaultProvider 似乎以某种方式损坏或过时。反而, 您应该直接连接到特定的 Provider,例如 Alchemy:

    const provider = new ethers.providers.AlchemyProvider("rinkeby", apiKey)
    

    或对于 Infura:

    const provider = new ethers.providers.InfuraProvider("rinkeby", apiKey)
    

    在这之后,很容易得到一个签名者:

    const signer = provider.getSigner()
    

    const walletSigner = wallet.connect(provider);
    

    您可以阅读有关此here 的更多信息。

    【讨论】:

    • 我也一直在尝试从 InfuraProvider 获取签名者,但不断收到错误消息“API 提供者不支持签名 (operation="getSigner", code=UNSUPPORTED_OPERATION, version=providers/5.4. 3)" 知道为什么会发生这种情况吗?
    • @Vlad 请在下面查看我的答案。
    猜你喜欢
    • 2020-07-02
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 2011-10-27
    • 2012-06-14
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    相关资源
    最近更新 更多