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

Posted

技术标签:

【中文标题】web3 提供的地址无效,大小写校验和测试失败【英文标题】:web3 Provided Address is invalid, the capitalization checksum test failed 【发布时间】:2021-10-19 17:15:58 【问题描述】:

我正在尝试使用 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 );

【问题讨论】:

【参考方案1】:

您将帐户对象传递给from 字段。但是你只需要传递地址。

from: accounts 替换为from: accounts.address


注意:accounts 对象如下所示:


  address: '0x29B67BB1cFE4799FDb46B49aD81cD771665E2dF7',
  privateKey: '0x38544e1555a3553829219281253d2400fa20ebbd922fdh3918a7s2b53b9e1358',
  signTransaction: [Function: signTransaction],
  sign: [Function: sign],
  encrypt: [Function: encrypt]

【讨论】:

【参考方案2】:

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

但是如果你想校验一个地址。您可以简单地使用 Web3 实用函数web3.utils.toChecksumAddress(address) 进行转换。更多详情here

【讨论】:

感谢您的回答。我都尝试了,但我现在收到错误 eth_sendTransaction 方法不存在/不可用。我不太确定如何在当前配置中使用 web3。我曾经使用 Truffle 钱包提供程序,我只需传递我的助记符,然后将提供程序对象传递给 web3(新 Web3(提供程序))。但我需要重构代码以不使用它。我从未将我的帐户助记符或私钥传递给 web3。 web3 与合约交互是否不需要这些凭据? 第一。您是否使用 ABI 和合同地址初始化了合同对象?其次是 Web3。您需要先创建一个事务对象。交易对象包含关于从、到、数据和气场等信息。然后您可以使用未锁定的帐户发送交易,或者先使用您的未锁定帐户签署交易,然后将签署的交易发送到网络。在此处阅读如何进行交易和发送交易:web3js.readthedocs.io/en/v1.2.11/web3-eth.html#sendtransaction 应用程序的合约端工作正常,我可以与它交互并调用函数但不能处理它们。当我使用 Truffle 钱包提供商时,我会将助记符传递给钱包提供商,然后在创建 web3 实例时传递它。然后我就可以调用 web3.eth.getAccounts 来获取帐户。有没有办法可以将我的助记符或私钥传递给 web3,以便我能够使用 getAccounts() 方法检索该帐户?我认为这会解决问题 您可以提示如何签署和发送交易:ethereum.stackexchange.com/questions/68911/…。您已经从 dummy privateKey 获取帐户。您可以从 Petr 的回答中看到该对象的外观。它有一个 signTransaction 功能,您需要使用该帐户进行操作。它将创建一个 rawTransaction,然后由 sendSignedTransaction 发送。阅读 Web3 文档中的详细信息。您的帐户需要解锁,您也可以从 Web3 文档中看到。我知道一开始看起来很混乱,因此您需要阅读 谢谢,我会注意的

以上是关于web3 提供的地址无效,大小写校验和测试失败的主要内容,如果未能解决你的问题,请参考以下文章

在 python 中与 ganache-cli 同步

DAPP开发中Web3唤醒MetaMask签名数据+Java校验签名实现去中心化和中心化用户数据的鉴权

校验MD5 是啥 意思?

邮储银行手机银行finish校验失败怎么回事

数据校验之XML文件校验

百度地图报错:APP Referer校验失败