Abrufen des Transaktionsverlaufs für ein bestimmtes Konto

Ich möchte die Liste aller Transaktionen erhalten, die von/auf einem Konto in meiner privaten Blockchain durchgeführt wurden. Ich habe versucht, die Funktion zu verwenden

getTransactionsByAccount(accountAddress, startBlockNumber, endBlockNumber)

auf diesem Link gegeben . Das Problem bei dieser Methode besteht darin, dass bei Transaktionen, die eine Überweisung (von Beträgen) von einem Konto auf ein anderes beinhalten, die richtige Adresse im "Von"-Feld angegeben wird, aber eine falsche im "An"-Feld.

Also, ich möchte fragen, ob es eine andere Methode gibt, mit der wir den Transaktionsverlauf abrufen können???

Antworten (2)

contractAddress = "0x00.."
web3.eth.filter({
address: contractAddress
from: 1,
to: 'latest'
}).get(function (err, result) {
// callback code here
})

Sie können die Dokumente hier lesen

Dies funktioniert für Vertragsadressen, nicht für externe Konten.
Ich weiß nicht, welchen Unterschied es macht, aber das Speichern der Vertragsadresse in einer Variablen und das anschließende Übergeben an den Filter funktioniert nicht, während das direkte Übergeben der Vertragsadresse an den Filter das richtige Ergebnis liefert. Außerdem sollten „from“ und „to“ durch „fromBlock“ und „toBlock“ ersetzt werden.
Kann jemand bitte diese Antwort für web3.js 1.x aktualisieren? web3.eth.filterist nicht mehr verfügbar und ich konnte in den Dokumenten nichts finden, um das zu erreichen, wonach ursprünglich gefragt wurde.
Auch dies funktioniert nur, wenn der Vertrag ein Ereignis generiert hat.
Der Link zum Dokument existiert nicht. Funktioniert es für das aktuelle web3?

Ja, der oben erwähnte Ansatz funktioniert für Vertragsadressen. Leider gibt es in Web3js keine Methode, die uns bei dieser Aufgabe hilft. Aber so, wie ich es gemacht habe, ging ich von der 0-Blocknummer zu Latest. Während ich durchging, bekam ich alle Transaktionen, die in dem Block stattfanden, zusammen mit den Details der Transaktion.

Unten ist der Code:

Ich habe web3.eth.getBlock verwendet , um alle Transaktionen aus dem Block zu erhalten.

function getAccountTransactions(accAddress, startBlockNumber, endBlockNumber) {
  // You can do a NULL check for the start/end blockNumber

  console.log("Searching for transactions to/from account \"" + accAddress + "\" within blocks "  + startBlockNumber + " and " + endBlockNumber);

  for (var i = startBlockNumber; i <= endBlockNumber; i++) {
    var block = eth.getBlock(i, true);

    if (block != null && block.transactions != null) {
      block.transactions.forEach( function(e) {
        if (accAddress == "*" || accAddress == e.from || accAddress == e.to) {
          console.log("  tx hash          : " + e.hash + "\n"
            + "   nonce           : " + e.nonce + "\n"
            + "   blockHash       : " + e.blockHash + "\n"
            + "   blockNumber     : " + e.blockNumber + "\n"
            + "   transactionIndex: " + e.transactionIndex + "\n"
            + "   from            : " + e.from + "\n" 
            + "   to              : " + e.to + "\n"
            + "   value           : " + e.value + "\n"
            + "   gasPrice        : " + e.gasPrice + "\n"
            + "   gas             : " + e.gas + "\n"
            + "   input           : " + e.input);
        }
      })
    }
  }
}

Beispiel Transaktionsdetails auf Ropsten Etherscan

Transaktionen zu/von eth.accounts[0]-Adresse finden:

getTransactionsByAccount(eth.accounts[0])
endBlockNumber: 1575620
startBlockNumber: 1575619
Searching for transactions to/from account "0x87bae5d55603cfe2703062cea8bf76263fa0ca95" within blocks 1575619 and 1575620

  tx hash          : 0xd55f196cd4a41f518c84804ac6286972db1d0fa8e51d137e00299fb4906a51ab
   nonce           : 12044
   blockHash       : 0xdac37667bca025e8107cea79b6b9bc5c1d86ddbec5a8b13615a2ce70bec63e60
   blockNumber     : 1575620
   transactionIndex: 0
   from            : 0x87bae5d55603cfe2703062cea8bf76263fa0ca95
   to              : 0x60b634cf459c6e88dfb2a52311199a8473ed85b5
   value           : 0.000909211685644988
   gasPrice        : 20000000000
   gas             : 21000
   input           : 0x