【问题标题】:Web3 Library Javascript - getAccounts vs accounts.wallet[0]Web3 库 Javascript - getAccounts 与 accounts.wallet[0]
【发布时间】:2022-10-05 13:17:49
【问题描述】:

我有以下代码:

const web3 = new Web3(window.ethereum);

console.log('Accounts:', await web3.eth.getAccounts()); 

console.log('Wallet Account:', web3.eth.accounts.wallet[0]);

这给了我两个不同的东西。第一个返回“Accounts: 0xEF..42a3”,这是我的钱包地址,而另一个返回“未定义”

如果这两种方式适用于同一个领域,为什么会有如此不同?

【问题讨论】:

    标签: javascript web3js web3


    【解决方案1】:

    documentation for web3.eth.getAccounts() 内容如下:

    返回节点控制的帐户列表。

    回报:

    Promise 返回 Array - 由节点控制的地址数组。

    documentation for web3.eth.accounts 内容如下:

    web3.eth.accounts [object] 包含生成以太坊账户和签署交易和数据的功能。

    所以,它们指的不是同一个东西,web.eth.getAccounts() 就是你要找的东西. web3.eth.getAccounts() 返回一个帐户数组,但 web.eth.accounts 是一个执行一般操作的对象。

    您可能对web.eth.accounts.wallet[0] 返回undefined 而不是错误感到困惑。这只是一个奇怪的 JS 事情。在 JS 中,数组实际上是带有数字键的对象。所以,wallet[0] 实际上意味着“从对象wallet 中获取键0 的值”。因为wallet 是一个对象,所以不会返回错误。但是,wallet 没有密钥 0,因此返回了 undefined

    【讨论】:

      猜你喜欢
      • 2019-07-18
      • 2018-12-11
      • 2021-12-26
      • 2019-01-10
      • 2011-03-08
      • 2018-11-04
      • 2017-08-29
      • 2018-11-15
      • 2011-04-09
      相关资源
      最近更新 更多