提供的地址无效,大小写校验和测试失败

And*_*ian 7 javascript ethereum smartcontracts web3js

我正在尝试使用 web3 发送合同上的方法。我正在使用 privateKeyToAccount 方法创建一个帐户,但在合同上发送该方法时出现以下错误:

所提供的地址 [object Object] 无效,大小写校验和测试失败,或者它是无法转换的间接 IBAN 地址。

我是不是少了一步?我已经创建了一个 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 });
Run Code Online (Sandbox Code Playgroud)

Tai*_*oor 9

彼得是对的。我错过了您提供整个对象而不是地址的部分。

但如果你想对地址进行校验和。您可以简单地使用Web3实用程序功能web3.utils.toChecksumAddress(address)进行转换。更多详情请点击此处


Pet*_*jda 6

您将帐户对象传递到该from字段。但您只需传递地址即可。

替换from: accountsfrom: accounts.address.


注意:该accounts对象如下所示:

{
  address: '0x29B67BB1cFE4799FDb46B49aD81cD771665E2dF7',
  privateKey: '0x38544e1555a3553829219281253d2400fa20ebbd922fdh3918a7s2b53b9e1358',
  signTransaction: [Function: signTransaction],
  sign: [Function: sign],
  encrypt: [Function: encrypt]
}
Run Code Online (Sandbox Code Playgroud)