【问题标题】:Why does web3.js reject a valid RSK smart contract address?为什么 web3.js 拒绝有效的 RSK 智能合约地址?
【发布时间】:2021-04-24 21:24:02
【问题描述】:

我正在尝试与 RSK 主网上的智能合约进行交互,但我收到了这个错误...

Provided address "0xAb2d290b7a600f5eA8d5B933f6F15c867Fd7e60e" is invalid,
the capitalization checksum test failed, 
or its an indirect IBAN address which can't be converted.

地址是从RSK Explorer本身获取的,所以不知道web3.js为什么会出现这个错误。

请问有人可以帮我吗?

提前致谢!

【问题讨论】:

    标签: checksum web3 web3js rsk


    【解决方案1】:

    根据RSKIP-60,RSK 网络在EIP1191 之后有自己的校验和验证。

    但是,一些工具和库仍然不支持 EIP-1191。

    大多数以太坊工具和库仅支持 EIP-155。 web3.js 就是其中之一,它会检查期望 EIP-155 校验和的校验和。

    解决方法

    (1) 将智能合约地址转换为全小写字符串:

    return new web3.eth.Contract(coinBackAbi, tokenObj.address.toString().toLowerCase());
    

    请注意,EIP-155 和 EIP-1191 都定义将全小写地址视为“跳过校验和”。

    (2)另一种方法是使用@rsksmart/rsk-utils, 使用它来转换地址以使用适当的校验和:

    // Ethereum --> use this for web3.js
    toChecksumAddress ("0xAb2d290b7a600f5eA8d5B933f6F15c867Fd7e60e", null)
    // RSK Mainnet
    toChecksumAddress ("0xAb2d290b7a600f5eA8d5B933f6F15c867Fd7e60e", 30)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      • 2012-05-06
      • 2021-10-16
      • 1970-01-01
      • 2019-08-27
      • 2021-08-28
      • 1970-01-01
      相关资源
      最近更新 更多