web3 Provided Address 无效,大写校验和测试失败
web3 Provided Address is invalid, the capitalization checksum test failed
我正在尝试使用 web3 在合同上发送一个方法。我正在使用 privateKeyToAccount 方法创建一个帐户,但是当在合同上发送该方法时,我收到以下错误:
Provided address [object Object] is invalid, the capitalization checksum test failed, or it's an indirect IBAN address which can't be converted.
我是不是漏掉了一步?我已经创建了一个 web3 的实例并且合约接口可以工作。我附上了下面的部分代码。在此先感谢您的帮助。
const web3 = new Web3(
new Web3.providers.WebsocketProvider(
'wss://rinkeby.infura.io/ws/v3/<api>'
)
);
const dummyPrivateKey = '0x38544e1555a3553829219281253d2400fa20ebbd922fdh3918a7s2b53b9e1358';
const accounts = web3.eth.accounts.privateKeyToAccount(dummyPrivateKey);
await contract.methods // add username
.addMessage(_username, _message)
.send({ from: accounts });
Petr 是对的。我错过了你给出整个对象而不是地址的部分。
但是如果你想校验一个地址。您可以简单地使用 Web3 效用函数 web3.utils.toChecksumAddress(address)
进行转换。更多详情 here
您正在将帐户对象传递给 from
字段。但是你只需要传递地址。
将 from: accounts
替换为 from: accounts.address
。
注意:这是 accounts
对象的样子:
{
address: '0x29B67BB1cFE4799FDb46B49aD81cD771665E2dF7',
privateKey: '0x38544e1555a3553829219281253d2400fa20ebbd922fdh3918a7s2b53b9e1358',
signTransaction: [Function: signTransaction],
sign: [Function: sign],
encrypt: [Function: encrypt]
}
确保您提供的地址有效。您可以从 Infura 等在线提供商或 Ganache 等本地设置处获取地址。
如果问题仍然存在,请尝试使用以下代码。
web3.utils.toChecksumAddress(address)
我正在尝试使用 web3 在合同上发送一个方法。我正在使用 privateKeyToAccount 方法创建一个帐户,但是当在合同上发送该方法时,我收到以下错误:
Provided address [object Object] is invalid, the capitalization checksum test failed, or it's an indirect IBAN address which can't be converted.
我是不是漏掉了一步?我已经创建了一个 web3 的实例并且合约接口可以工作。我附上了下面的部分代码。在此先感谢您的帮助。
const web3 = new Web3(
new Web3.providers.WebsocketProvider(
'wss://rinkeby.infura.io/ws/v3/<api>'
)
);
const dummyPrivateKey = '0x38544e1555a3553829219281253d2400fa20ebbd922fdh3918a7s2b53b9e1358';
const accounts = web3.eth.accounts.privateKeyToAccount(dummyPrivateKey);
await contract.methods // add username
.addMessage(_username, _message)
.send({ from: accounts });
Petr 是对的。我错过了你给出整个对象而不是地址的部分。
但是如果你想校验一个地址。您可以简单地使用 Web3 效用函数 web3.utils.toChecksumAddress(address)
进行转换。更多详情 here
您正在将帐户对象传递给 from
字段。但是你只需要传递地址。
将 from: accounts
替换为 from: accounts.address
。
注意:这是 accounts
对象的样子:
{
address: '0x29B67BB1cFE4799FDb46B49aD81cD771665E2dF7',
privateKey: '0x38544e1555a3553829219281253d2400fa20ebbd922fdh3918a7s2b53b9e1358',
signTransaction: [Function: signTransaction],
sign: [Function: sign],
encrypt: [Function: encrypt]
}
确保您提供的地址有效。您可以从 Infura 等在线提供商或 Ganache 等本地设置处获取地址。
如果问题仍然存在,请尝试使用以下代码。
web3.utils.toChecksumAddress(address)