Wie erhalte ich einen bestimmten Ereignisprotokollvertrag?

Ich kann alle Ereignisprotokolle erhalten. Mein Code ist:

var contractInstance = contract.at("0x123456...789");
var transferEvents = contractInstance.allEvents({fromBlock:0, toBlock:'latest'});

und die Ausgabe ist:

{ address: '0xafe6851c1d9ee2e759acdee8cfc827e22a9ec5d7',
blockHash: '0xe5cdc4ae1e70ad4b4610a1f5a45fb3ff56bc3530f159ab0613ffeb33a7bf9c0a',
blockNumber: 1924935,
logIndex: 3,
transactionHash: '0x2e18ac5cb925b95ec609970e66d566623f446bc67bd0b72aac0a2ca6e96ef128',
transactionIndex: 4,
event: 'Transfer',
args:
 { from: '0xd94c9ff168dc6aebf9b6cc86deff54f3fb0afc33',
   to: '0x414755edffa43707f7d51600edf9ecbe57152a8a',
   value: [Object] } },

Aber ich bekomme Übertragungsereignisdaten

var contractInstance = contract.at("0x123456...789");
var transferEvents = contractInstance.Transfer({fromBlock:0, toBlock:'latest'});

die Ausgabe ist leer.

Gibt es ein Problem in meinem Code?

Antworten (1)

Versuchen

var transferEvents = contractInstance.Transfer({}, {fromBlock:0, toBlock:'latest'});

Quelle: Wie rufe ich die Voted-Ereignisse von The DAO ab



Antwort auf die Frage im Kommentar

Q Die Rückgabe scheint eine lange Zeichenfolge zu sein, die alle Protokolle enthält. Wie kann ich sie einzeln aufteilen?

(vom selben Link oben) verwende ich zunächst JSON.stringify(...), um die Daten anzuzeigen:

> var theDAOVotedEvent = theDAO.Voted({}, {fromBlock: 1614771, toBlock: 'latest'});
undefined
> theDAOVotedEvent.watch(function(error, result){
  console.log(JSON.stringify(result));
});
...
{"address":"0xbb9bc244d798123fde783fcc1c72d3bb8c189413","args":{"position":true,"proposalID":"15","voter":"0xebbf5d7d649aedde2c27a8b850a2a3862595eb53"},"blockHash":"0x3d0e8b47fbb03727c72585fbe2fd5f25c69c03f2b832753567c2309f1ecb3b2a","blockNumber":1614808,"event":"Voted","logIndex":0,"transactionHash":"0x0060654808a2dee9710fa01e26adb46e77df03c17e453e8fddc8749269ffad92","transactionIndex":1}
{"address":"0xbb9bc244d798123fde783fcc1c72d3bb8c189413","args":{"position":false,"proposalID":"11","voter":"0xebbf5d7d649aedde2c27a8b850a2a3862595eb53"},"blockHash":"0x607d940ebbbb17e6d5c3c8a871cd4783b271ddf71f4aeb83dbcdcaf8ce2154d9","blockNumber":1614812,"event":"Voted","logIndex":1,"transactionHash":"0x6b5cab6f7987d7283fdde051c76ace98c9f080bda6dbdf720689fc0c3958005b","transactionIndex":6}
{"address":"0xbb9bc244d798123fde783fcc1c72d3bb8c189413","args":{"position":false,"proposalID":"11","voter":"0xebbf5d7d649aedde2c27a8b850a2a3862595eb53"},"blockHash":"0x69be968ce90c7e910c149cc80ab1e5f2ae6bdb45f142ee0e6fa181be9d1e106e","blockNumber":1614812,"event":"Voted","logIndex":0,"transactionHash":"0x6b5cab6f7987d7283fdde051c76ace98c9f080bda6dbdf720689fc0c3958005b","transactionIndex":2}

...

Sobald Sie die Daten sehen, können Sie auf jedes Feld verweisen, zum Beispiel:

result.address
result.args
...
Es klappt! Also schätzen!
Die Rückgabe scheint eine lange Zeichenfolge zu sein, die alle Protokolle enthält. Wie kann ich sie einzeln aufteilen?
Siehe Update zur Antwort
Ich habe es bekommen. Es tut mir leid, weil ich mit node.js nicht vertraut bin. Entschuldigung für die Low-Level-Frage.
Keine Sorge. Ich lerne mich selbst, wenn neue Fragen gestellt werden.
result.args.positionoder result.args.proposalIDist der richtige Weg, um auf Args-Werte zuzugreifen? @BokkyPooBah
Jep. Damit bekommst du die result.argsWerte.