So erhalten Sie den Token-Transaktionsverlauf über web3.js (0.20.6)

aufstellen

node.js + web3.js (Version 0.20.6) + und Verwendung von infura für den httpProvider

Ich habe herausgefunden und erfolgreich erc20-Token mit web3.js gesendet (nach viel googeln ... komplett noobie hier ...)

und ich versuche jetzt herauszufinden, wie ich den Token-Transaktionsverlauf einer bestimmten Adresse abrufen kann.

Ich habe die Idee, dass ich die Ereignisse beobachten muss, die für Token-Transaktionen das "Transfer" -Ereignis wären.

Also folge ich der Javascript-API für "Vertragsereignisse" https://github.com/ethereum/wiki/wiki/JavaScript-API#contract-events

und unten ist der Code, den ich ausführe (oder zumindest versuche)

var Web3 = require('web3');
var web3 = new Web3(new Web3.providers.HttpProvider('https://rinkeby.infura.io/MYINFURATOKEN'));

var myaddress = "0x482d42bc7a5dd62f3fae88c3b4cde29a333cf913";

var contractAddress = "0x31a86307bfe81780a47fe98c192004ccdce8fcc0";

var abi = [{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"enableTokenTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TransferAllowed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"frozenAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"disableTokenTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"freeze","type":"bool"}],"name":"freezeAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"initialSupply","type":"uint256"},{"name":"tokenName","type":"string"},{"name":"tokenSymbol","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"},{"indexed":false,"name":"frozen","type":"bool"}],"name":"FrozenFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"","type":"bool"}],"name":"TransferEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"","type":"bool"}],"name":"TransferDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"}];

var myContractInstance = web3.eth.contract(abi).at(contractAddress);

var event = myContractInstance.Transfer({_from: myaddress}, {fromBlock:0, toBlock: 'latest'});

event.watch(function(error, result){
  if (!error)
    console.log(result);
});  

und das kehrt zurück

Filter {
  requestManager: 
   RequestManager {
     provider: 
      HttpProvider {
        host: 'https://rinkeby.infura.io/MYINFURATOKEN',
        timeout: 0,
        user: undefined,
        password: undefined,
        headers: undefined },
     polls: {},
     timeout: null },
  options: 
   { topics: 
      [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
        null,
        null ],
     from: undefined,
     to: undefined,
     address: '0x31a86307bfe81780a47fe98c192004ccdce8fcc0',
     fromBlock: '0x0',
     toBlock: 'latest' },
  implementation: 
   { newFilter: { [Function: send] request: [Function: bound ], call: [Function: newFilterCall] },
     uninstallFilter: { [Function: send] request: [Function: bound ], call: 'eth_uninstallFilter' },
     getLogs: { [Function: send] request: [Function: bound ], call: 'eth_getFilterLogs' },
     poll: { [Function: send] request: [Function: bound ], call: 'eth_getFilterChanges' } },
  filterId: null,
  callbacks: [ [Function] ],
  getLogsCallbacks: [],
  pollFilters: [],
  formatter: [Function: bound ] }

Was ich mir ziemlich sicher bin, ist nicht der Token-Transaktionsverlauf ... oder gibt es einen Schritt, den ich vermisse?

Wie würde ich von hier aus gehen?

Vielen Dank im Voraus. Justin.

Antworten (2)

Was Sie wollen, sind vergangene Ereignisse, glaube ich.

Nun, "getPastEvents" ist nur für web3 1.0.0, das sich in der Beta-Phase befindet ... Ich würde lieber die stabile Version verwenden, die im Moment die 0.20.6 ist und "getPastEvents" nicht anbietet.
Ich würde empfehlen, den Quellcode zu überprüfen und selbst zu implementieren, wenn Sie hoffen, auf der stabilen Version zu bleiben. Sie finden es hier: github.com/ChainSafe/web3.js/blob/… Hinweis: Zum Zeitpunkt des Schreibens ist die getPastEvents-Methode stabil.

Ich mache hier dasselbe wie Sie. Dies zeigt Ihnen den Verlauf der Token-Transaktionen, die Sache ist, dass es Ihnen nicht den Verlauf einer Token-Transaktion einer bestimmten Adresse zeigt.