为什么web3.js拒绝有效的RSK智能合约地址?

我正在尝试与 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 会出现此错误。

拜托,有人可以帮我吗?

提前致谢!

回答

根据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)


以上是为什么web3.js拒绝有效的RSK智能合约地址?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>