Batch-Transaktionen für MetaMask mit sendAsync

Ich habe MetaMask, das gut funktioniert - es ist so cool! Ich habe jedoch ein (Reaktions-)Formular, das viele Informationen sammelt und 14 verschiedene Aufrufe an erstellt sendTransaction. Daher erhalte ich (derzeit) 14 Popup-Fenster von MetaMask, in denen ich aufgefordert werde, diese Transaktionen zu akzeptieren. Tatsächlich genau wie diese Situation: https://github.com/MetaMask/metamask-plugin/issues/1000

... was ich sehe, war "gelöst". Ich weiß also, dass es möglich ist, Anfragen zu stapeln, aber meine Frage ist, wie? Grundsätzlich, wie soll ich den sendAsyncAnruf bilden? Nehmen wir zum Beispiel an, ich hätte diese drei Transaktionen:

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

Wie würde mein Aufruf aussehen web3.currentProvider.sendAsync?

Antworten (2)

Sie können die Batch-Request- Web3-Funktion verwenden.

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 bittet den Benutzer dreimal um Bestätigung:Geben Sie hier die Bildbeschreibung ein

Aber ich denke, sendAsync wird nur einmal nach einer Bestätigung fragen ....
Dadurch werden immer noch mehrere Registerkarten auf MetaMask geöffnet.
Habe es. Ich sehe nur eine Registerkarte, aber für jede Transaktion sind mehrere Bestätigungen erforderlich, obwohl es eine Bestätigung sein sollte!
@GregJeanmart - danke - sieht so aus, als ob Ihre batch.add-Lösung korrekt ist - sobald der Fehler behoben ist (siehe unten), akzeptiere ich ihn als Antwort;)

Sie haben einen legitimen Fehler in MetaMask gefunden, ich habe ihn hier im MetaMask-Github-Repository geöffnet (wo wir Fehler verfolgen und schließen):

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

Ausgezeichnet - danke - ich habe auch einen Kommentar zum MetaMask-Problem hinzugefügt ...