Ich versuche, auf kürzlich abgebaute Ereignisse von einem Live-Smart-Contract ( EtherDelta ) zu hören.
//https://github.com/praneethmendu/ethualizer/blob/master/backnd.js
tradeEvent = contractIns.Trade({}, {fromBlock: '4221476', toBlock: 'latest'});
tradeEvent.watch(function (error, eventResult) {
if (error) {
console.error(error);
} else {
loco.play();
console.log(JSON.stringify(eventResult, null, 4));
}
Ich erhalte Ergebnisse vom Watch-Callback, aber Blocknummer und andere Hashes und Indizes sind 0, obwohl Argumente echt erscheinen, vermute ich, dass ich ausstehende Transaktionen betrachte
{
"address": "0x8d12a197cb00d4747a1fe03395095ce2a5cc6819",
"blockNumber": 0,
"transactionHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"transactionIndex": 0,
"blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"logIndex": 0,
"removed": false,
"event": "Trade",
"args": {
"tokenGet": "0x0000000000000000000000000000000000000000",
"amountGet": "3909184320983949755",
"tokenGive": "0xe41d2489571d322189246dafa5ebde1f4699f498",
"amountGive": "4.093386723543402884816e+21",
"get": "0x798888341bfc01b30196091d27613fc6c68df159",
"give": "0xafe15d1c5baab8f6fc9ba107a90a5729964ea14c"
}
}
Ich kann den aktuellen neuesten Block abrufen und mit Gettern im Vertrag interagieren. Ich verwende einen Geth-Lightnode im RPC-Modus, um eine Verbindung herzustellen, also keine Verbindungsprobleme.
andere Details: Betriebssystem: Ubuntu 17.04
Bearbeiten: Verbesserte Frage mit der Antwort von @ farhankhwaja .
Ich denke, Sie haben hier etwas verpasst. Ich konnte das EREIGNIS meines Vertrags erfassen, das ich im TestNet bereitgestellt habe.
Anforderungen
1. ABI - The contract ABI
2. Contract Address
3. Web3js
Code
var myContractInstance = web3.eth.contract(JSON.parse(*<ABI>*)).at(*<CONTRAC_ADDRESS>*);
// Watching for MyEvent
var myEvent = myContractInstance.MyEvent({}, {fromBlock: '0', toBlock: 'latest'});
myEvent.get(function (error, eventResult) {
if (error) {
console.error(error);
}
else {
loco.play();
console.log(JSON.stringify(eventResult, null, 4));
}
});
Wenn der obige Code ausgeführt wird, gibt er Ihnen alle Transaktionen zurück, in denen das Ereignis aufgerufen wurde.
Beispieltransaktion
{
"address": "0x5c99dadde01ce61ab5b5536d566bf41ecd17e3a9",
"blockNumber": 1495157,
"transactionHash": "0x41fe9e995dba27c422ac5d0e9f1c8360ac512c3767c2217a0e729ed0b6098aa6",
"transactionIndex": 0,
"blockHash": "0x833c293455edb27c266fc2a0fbdab97431137c2f3d690c19835ddcf59ed4fe8a",
"logIndex": 0,
"removed": false,
"event": "MyEevent",
"args": {
"_from": "0xb1aa0ac057639e534a89b095853befc4d6d264cf",
"_to": "0x5c99dadde01ce61ab5b5536d566bf41ecd17e3a9",
"_value": "1",
"_tokenAddress": "0x85c02a9957f87445298eadffce717b7d256d6542",
"_tokenName": "CC Series",
"_tokenSymbol": "CC"
}
}
Lassen Sie mich wissen, wenn dies nicht zum gewünschten Ergebnis führt.
praneeth mendu
farhankhwaja
web3.eth.blockNumber
nach dem Verbinden mit Ihrem Client laufen. Der Wert/die Ausgabe des obigen Befehls sollte die Blocknummer sein, die auf EtherScan angezeigt wirdpraneeth mendu
praneeth mendu
farhankhwaja