Abonnieren Sie alle Token-Transfers für die gesamte Blockchain

Ich suche, wie ich alle Token-Übertragungsereignisse innerhalb der gesamten Blockchain abonnieren kann. Ich frage mich, wie dies auf etherscan.io implementiert ist

https://ropsten.etherscan.io/tokentxns

Ich habe nach web3.js api gesucht und gegoogelt, wo es im Internet gibt, aber es scheint mir, dass es dafür keine einfache Lösung gibt. Kann ich diese Daten irgendwie über eine verfügbare API abrufen oder muss ich tiefer gehen und meine eigene EVM mit eingebetteten Listenern ausführen?

Antworten (1)

Ok, nach einigem Kampf habe ich eine Lösung gefunden

var Web3 = require('web3');

var web3 = new Web3('ws://127.0.0.1:8585');
console.log('Initiated');

// Track all the token transactions in whole blockchain
var subscription = web3.eth.subscribe('logs', { fromBlock: 1, topics: ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"] }, function() {})
.on("data", function(trxData){
  function formatAddress(data) {
    var step1 = web3.utils.hexToBytes(data);
    for (var i = 0; i < step1.length; i++) if (step1[0] == 0) step1.splice(0, 1);
    return web3.utils.bytesToHex(step1);
  }

  console.log("Register new transfer: " + trxData.transactionHash);
  console.log("Contract " + trxData.address + " has transaction of " + web3.utils.hexToNumberString(trxData.data) + " from " + formatAddress(trxData.topics['1']) + " to " + formatAddress(trxData.topics['2']));
  //console.log(trxData);
  web3.eth.getTransactionReceipt(trxData.transactionHash, function(error, reciept) {
    console.log('Sent by ' + reciept.from + ' to contract ' + reciept.to);
  });
});

Das Skript gibt Daten im folgenden Format aus:

Register new transfer: 0x3bb3d83fa26560002cad0e920b78979eee5c5652a623f98cea5460dbb8d8fc94
Contract 0x0F5B3e7B0074F43c8C9C5324fabF83942c1FEf5c has transaction of 1 from 0x3cd40959e6fa78d4636cad472fdd4fa15d9867c7 to 0xd5142d2778f26471c1017f79687a91783636cfeb
Sent by 0xc270d8a6cf39b560c2746d4efdb24290fed76123 to contract 0x2c09402b4a1a42321160fd5af7737ca432e68c90

Es enthält ifo darüber, wer die Übertragung ausgelöst hat, welcher Vertrag der Haupteinstiegspunkt der Transaktion war, wie die Token-Vertragsadresse lautet, wie viele Kones übertragen wurden, von welcher Adresse zu welcher Adresse und Transaktions-Hash.

Sie können jetzt die GANZE Blockchain ausspionieren! Viel Spaß beim Hacken!