5

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

请问,有人可以帮我吗?

提前致谢!

4

1 回答 1

7

根据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)
于 2021-01-20T14:05:46.393 回答