MetaMask - RPC 錯誤:內部 JSON-RPC 錯誤
當我嘗試在本地使用元遮罩進行從一個帳戶(例如 A)到另一個帳戶(例如 B)的簡單交易時,出現此錯誤。
程式碼:-32603
數據:{originalError:{…}}
消息:“內部 JSON-RPC 錯誤。”
堆棧:“錯誤:WalletMiddleware - 無效的“發件人”地址。↵ at h (chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/background.js:1:1226252)↵ at async chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/background.js:1: 1224243"
原型:對象
我自己嘗試的解決方案(不起作用):
Downgrading my web3.js to beta 33,35 and 37 release. Currently, I am using 1.2.0 version.
2.
Changing my metamask to mainnet and then back to local test net, which I am running on port:9545
下面是我的智能合約:
contract ApprovalContract { address payable public sender; address payable public receiver; address public constant approver = <some account address>; function deposit (address payable _receiver) external payable { require(msg.value > 0); sender = msg.sender; receiver = _receiver; } }
下面是我的自定義 js(使用 web3.js)
var web3 = new Web3(Web3.givenProvider || "ws://localhost:9545"); var contractAddress = <contractAddress>; var ApprovalContract = new web3.eth.Contract(ABI, contractAddress); $('#contract-form').submit(function() { event.preventDefault(); var fromAddress = $('#fromAddress').val(); var toAddress = $('#toAddress').val(); var amount = $('#amount').val(); ApprovalContract.methods.deposit(toAddress).send({"from": fromAddress, "value": web3.utils.toWei(amount,'ether')}, function(error, result) { if (error) { console.log('error: ' + error); $('#deposit-result').html('Error: ' + error); } else { $('#deposit-result').html('Success TX: <b>' + result + '</b>'); } }); });
流程進入最後一個函式並顯示如下錯誤:
error: Error: Internal JSON-RPC error. { "originalError": {} }
期望:既然我的賬戶A,就是賬戶
$$ 0 $$在登錄的 Metamask 中,我希望 Metamask 彈出顯示以確認交易,但我得到了這個“內部 JSON RPC 錯誤”。 有任何想法嗎 ???
提前致謝!!!
**ethereum.enable()**對我有用。
我的解決方案:
補充:
window.addEventListener('load', async () => { try { await ethereum.enable(); } catch (error) {} });
更新了gas值:
ApprovalContract.methods.deposit(toAddress).send({"from": fromAddress, gas: 1000000, "value": web3.utils.toWei(amount,'ether')}
將Metamask網路改為mainnet,然後回到Local test net,然後重置賬號。
詳情請查看:連結
嘗試通過刪除舊的 JSON 文件並重新編譯 .sol 文件來重新生成 JSON 文件。它對我有用。