MetaMask - RPC错误:错误:MetaMask Tx签名:用户拒绝交易签名

时间:2018-05-31 10:16:26

标签: javascript ethereum metamask

在javascript中我运行合约的方法

contract[methodName](...params, { from: myAccount }, (err, response) => {
    console.log('get transaction', methodName, err, response);
    if (err) return reject(err);
    resolve(response);
});

然后通过MetaMask拒绝交易。在控制台中出错

MetaMask - RPC Error: Error: MetaMask Tx Signature: User denied transaction signature.

但我无法在代码中发现此错误。回调无效。

我怎样才能在JS中发现这个错误?

1 个答案:

答案 0 :(得分:0)

以下代码示例已在MacOS上使用Chrome(v78.0)和Firefox(v70.0)中的Metamask插件在macOS上进行了测试,并在交易被用户拒绝的情况下为您提供了预期的错误消息:

  createContract: function () {

        let myContract = new web3.eth.Contract(ABI, CONTRACT_ADDRESS, {
            from: account,
            gasLimit: web3.utils.toHex(7900000),
            gasPrice: web3.utils.toHex(1000000000)
        });
        myContract.methods.myMethodName().send().on("receipt", (receipt) => {

            // Transaction succeeded
            myContract.getPastEvents(
                "myEventName", {
                    fromBlock: receipt.blockNumber,
                    toBlock: receipt.blockNumber
                }, (errors, events) => {
                    for (let event in events) {
                        let returnValues = events[event].returnValues;
                        // Now do something with the event
                    }
                });

        }).catch(function (e) {
            // Transaction rejected or failed
            console.log(e);
        });
    }

Firefox控制台中的结果将符合预期(请参阅最后一行app.js:218):

enter image description here

Chrome控制台中的结果将符合预期(请参阅最后一行app.js:218):

enter image description here