Metamask(Chrome)web3.js控制台:ETH交易问题(同步方法)+ web3.version

问题描述 投票:0回答:1

我正在通过Google Chrome控制台使用Metamask(Chrome扩展程序)和web3.js API。但是,我有两个问题:

1)我正在尝试使用Ganache GUI(本地主机7545)发送一次简单交易,并在下面输入代码:

> ethereum.enable()

> web3.currentProvider.selectedAddress

<."0xb8662b66584ae08a88341df0d2b3fa7a65eb158c"
> var transaction = {
    from: web3.currentProvider.selectedAddress,
    to: "0xA8b62F503181D9A56683129de1B98ea4Bf143a40",
    value: web3.toWei("1", "ether")
}
> web3.eth.sendTransaction(transaction)

然后我收到以下错误消息:

> Uncaught Error: The MetaMask Web3 object does not support synchronous methods like eth_sendTransaction without a callback parameter. See https://github.com/MetaMask/faq/blob/master/DEVELOPERS.md#dizzy-all-async---think-of-metamask-as-a-light-client for details.
    at MetamaskInpageProvider._sendSync (inpage.js:1)
    at MetamaskInpageProvider.send (inpage.js:1)
    at Proxy.t.send (inpage.js:1)
    at a.send (inpage.js:1)
    at w.e [as sendTransaction] (inpage.js:1)
    at <anonymous>:1:10

2)另外请注意,web3.version似乎是0.20.7,而当我检查此网站https://web3js.readthedocs.io/en/v1.2.4/时,web3.js API的新版本似乎是1.2.4。使用Metamask扩展时,是否可以在chrome控制台中更新web3.js API版本?请注意,我尝试在控制台web3 = new Web3(web3.currentProvider)中输入此内容,但web3.version仍为0.20.7。

我认为优先级1)更关键。

[请您帮忙。

谢谢

ethereum web3js metamask
1个回答
0
投票

对于第一个问题,可能恰如错误所言:Web3对象不支持同步方法,这意味着在调用web3.eth.sendTransaction时必须提供回调,因此当操作完成时,您将得到结果。回调,因为它是异步操作

这是正确的含义:

   web3.eth.sendTransaction(transaction,function(err, transactionHash) {
      if (!err)
        console.log(transactionHash); 
    }

对于第二个问题,您可以更新metamask提供的web3包括web3 js文件的相关标记,然后执行:

web3 = new Web3(web3.currentProvider);
  • web3在不久的将来将不推荐使用,以太坊服务商。
© www.soinside.com 2019 - 2024. All rights reserved.