Wenn ich einen Vertragsfunktionsaufruf über Truffle durchführe und dann das zurückgegebene Versprechen auflöse, erhalte ich etwa Folgendes:
{
"tx": "0x...",
"receipt": {
"transactionHash": "0x...",
"transactionIndex": 0,
"blockHash": "0x...",
"blockNumber": 24,
"gasUsed": 42860,
"cumulativeGasUsed": 42860,
"contractAddress": null,
"logs": [
{
"logIndex": 0,
"transactionIndex": 0,
"transactionHash": "0x...",
"blockHash": "0x...",
"blockNumber": 24,
"address": "0x...",
"data": "0x...",
"topics": [
"0x...",
"0x...",
"0x..."
],
"type": "mined"
}
],
"status": "0x1",
"logsBloom": "0x..."
},
"logs": [
{
"logIndex": 0,
"transactionIndex": 0,
"transactionHash": "0x...",
"blockHash": "0x...",
"blockNumber": 24,
"address": "0x...",
"type": "mined",
"event": "Transfer",
"args": {
"from": "0x...",
"to": "0x...",
"value": "0"
}
}
]
}
Ich bin mir nicht sicher, wie genau Truffle web3.js umschließt, um Vertragsfunktionen aufzurufen, daher bin ich mir nicht sicher, wo ich in der web3.js-Dokumentation nachsehen soll. Aber ich verwende Truffle v4.1.14, das auf web3.js v0.18.4 basiert, und die Dokumentation für web3.js v0.x ist etwas schwer zu lesen, also habe ich in der Dokumentation stattdessen nach web3.js v1.x gesucht.
Jetzt sollte ich wohl in web3.eth.sendSignedTransaction nachsehen , was Folgendes zurückgibt:
Ein Promise Combined Event Emitter. Wird gelöst, sobald der Transaktionsbeleg verfügbar ist.
Es scheint also, dass Truffle diese Quittung nimmt und sie in ein JSON-Objekt einbettet, das die folgenden zusätzlichen Felder enthält:
tx
, was der Transaktionshash ist, nehme ich anlogs
, die einige oder alle der receipt.logs
, aber entschlüsselt enthältAlso, was genau ist hier los?
Dieses neue Objekt ist sicherlich nicht die in den Dokumenten beschriebene Quittung.
Gibt es dafür eine offizielle Terminologie oder handelt es sich nur um einen „Trüffel-Hack“, der mir das Entschlüsseln von Ereignissen erleichtern soll?
Danke schön.
Trüffel gibt eindeutig ein eigenes Objekt zurück. Es wird sicherlich die originale web3-Quittung enthalten, die gekennzeichnet ist, receipt
weil Truffle web3 0.x verwendet, wie Sie erwähnt haben. Die hinzugefügten Attribute sind also nichts weiter als ein Versuch von Trüffel, sein Framework zu verbessern und die Schicht über web3 zu halten.
Ich glaube nicht, dass es eine bestimmte Terminologie für dieses Objekt gibt, oder zumindest wird es immer von der transactionReceipt
von Web3 überschattet, daher wird für beide derselbe Name verwendet.
gute Stimmung
Kaki Meister der Zeit
gute Stimmung
response
angemessen genug wäre. Dann kann ich aufresponse.tx
,response.logs
,response.receipt
,response.receipt.logs
, usw. verweisen.gute Stimmung
response.logs[0].event
.