Ich habe mit Truffle Unbox Webpack eine Web-App erstellt, die mit einem Smart Contract interagiert. Mein Vertrag hat eine Variable namens Summe und 2 Funktionen: eine namens Antwort, die die Summenvariable erhöht, nachdem sie ausgeführt wurde, und eine weitere Funktion namens Summe, die den Wert der Variablensumme zurückgibt. In meiner app.js habe ich den Code:
SmartContract.deployed().then(function(contractInstance) {
contractInstance.answer(1, {gas: 140000, from: web3.eth.accounts[0]}).then(function(v) {
return contractInstance.total.call().then(function(total){
$("#total").html(total.toString());
});
});
}
Meine Frage ist, ob der Aufruf contractInstansce.total ausgeführt wird, nachdem der Transaktionsaufruf contractInstance.answer abgebaut wurde, sodass die Variable total in meiner index.html den aktualisierten Wert hat. Außerdem ist das Wort "return" nach einem Transaktionsaufruf erforderlich Funktion, wie answer in diesem Beispiel, damit die folgende Vertragsaufruffunktion, wie total in diesem Beispiel, ausgeführt wird, nachdem die Transaktion abgebaut wurde?
Ich habe testrpc verwendet, um zu testen, ob meine Webanwendung wie erwartet funktioniert, aber in testrpc werden die Blöcke sofort abgebaut, daher bin ich mir nicht sicher, ob der von mir geschriebene Code korrekt ist, wenn ich diese Anwendung im Testnet-Netzwerk verwende.
Vielen Dank für Ihre Zeit!
Meine Frage ist, ob der Aufruf contractInstansce.total ausgeführt wird, nachdem die Transaktion call contractInstance.answer abgebaut wurde,
Nein, contractInstance.answer
gibt den Hash der Transaktion zurück (der möglicherweise noch nicht abgebaut wurde).
Erwägen Sie, die Version web3 1.0.x zu verwenden. Es hat Ereignisse, die Sie anhören können http://web3js.readthedocs.io/en/1.0/web3-eth-contract.html?highlight=contract#id15
contractInstance.methods.answer().send({from: '_address'})
.on('transactionHash', function(hash){
...
})
.on('receipt', function(receipt){
...// your transaction is mined here
})
.on('confirmation', function(confirmationNumber, receipt){
...
})
.on('error', console.error);
Kathi
Viktor Baranow
npm view web3
, aktualisieren Sie Ihre package.json damit und installieren Sie sieKathi
Viktor Baranow
getTxCallBack
die Funktion hier: ethereum.stackexchange.com/questions/18884/…Kathi
David Callanan