如何从React应用程序使用Web3和MetaMask签名消息

时间:2019-02-11 23:14:15

标签: ethereum web3 metamask ganache

  

我正在第一个dapp上工作,并且尝试使用Web3和MetaMask对消息进行签名,但是我一直收到此错误:

inpage.js:1 MetaMask - RPC Error: Error: WalletMiddleware - Invalid "from" address.
  

我关闭了MetaMask隐私模式。 getCoinBase()方法正确返回了我在MetaMask中选择的地址。但是,当我尝试使用它对邮件签名时,它将无法正常工作。

     

这是我的代码:点线将跳过不重要的部分。

let Web3 = require('web3')
.
.
.
constructor(props) {

    super(props);

    if (typeof web3 != 'undefined') {
      // eslint-disable-next-line no-undef  
      this.web3 = new Web3(web3.currentProvider);
    }

    this.web3.eth.getCoinbase()
    .then(account => {
      this.web3.eth.sign('test message', account);
    });
}

1 个答案:

答案 0 :(得分:0)

Metamask最近对它们向用户显示地址的方式进行了更改。我发现了一个与here相关的StackOverflow帖子。引用:

The Invalid address error can also happen if you haven't called window.ethereum.enable(); yet.

Metamask团队的相关博客文章:https://medium.com/metamask/https-medium-com-metamask-breaking-change-injecting-web3-7722797916a8