Go-Ethereum

MetaMask 使用 sendAsync 的批處理事務

  • June 24, 2017

我的 MetaMask 執行良好 - 太酷了!但是,我有一個(反應)表單,它收集了大量資訊並創建了 14 個不同的sendTransaction. 因此,我(目前)從 MetaMask 獲得 14 個彈出視窗,要求我接受這些交易。其實和這種情況一模一樣:https ://github.com/MetaMask/metamask-plugin/issues/1000

……我看到這是’解決’。所以我知道可以批量請求,但我的問題是如何?基本上,我應該如何形成sendAsync通話?例如,假設我有這三個交易:

myContractObject.doSomething(name,type)
myContractObject.doSomethingElse(hash)
myContractObject.doSomethingElseEntirely(key)

我的電話web3.currentProvider.sendAsync會是什麼樣子?

您可以使用**批量請求**web3 功能。

var batch = web3.createBatch();
batch.add(myContractInstance.doSomething(arg1, arg2, {from: account, gas: 4000000}));
batch.add(myContractInstance.doSomethingElse(arg1, arg2, {from: account, gas: 4000000}));
batch.add(myContractInstance.doSomethingElseEntirely(arg1, arg2, {from: account, gas: 4000000}));
batch.execute();

Metamask 要求使用者確認 3 次:在此處輸入圖像描述

您在 MetaMask 中發現了一個合法的錯誤,我在 MetaMask github 儲存庫(我們跟踪錯誤並關閉它們的地方)上打開了它,這裡:

https://github.com/MetaMask/metamask-plugin/issues/1666

引用自:https://ethereum.stackexchange.com/questions/18660