Konten können eingehende Transaktionen nicht anzeigen

In Ethereum-Mist_wallet sehe ich unter Konten:

Konten können keine eingehenden Transaktionen anzeigen, aber Ether halten und senden. Um eingehende Transaktionen zu sehen, erstellen Sie einen Wallet-Vertrag, um Ether zu speichern.

Was bedeutet das genau? In meinem privaten Netzwerk kann ich Transaktionen eines bestimmten Kontos unter sehen Latest Transactions. Also, wofür ist das?

Antworten (2)

Es gibt zwei Arten von Konten bei Ethereum:

  1. Konten im externen Besitz, die von privaten Schlüsseln kontrolliert werden
  2. Vertragskonten, gesteuert durch ihren Vertragscode

Konten können keine eingehenden Transaktionen anzeigen, aber Ether halten und senden

Hier beziehen sich Konten auf EOAs. EOAs können Ether halten und übertragen, aber sie können die eingehenden Transaktionen nicht anzeigen. Sie können jedoch die vom Konto gesendeten Transaktionen anzeigen, wie z. B. die Übertragung von Ether oder die Vertragsausführung.
Zum Beispiel, wenn Sie einige Ether von Etherbase (Konto1) auf ein anderes Konto übertragen, sagen Sie Konto2. Konto 1 zeigt die Transaktionsdetails, aber Konto zeigt nichts unter Latest TransactionsTab.

Konto1 Registerkarte „Letzte Transaktion“.

Um eingehende Transaktionen zu sehen, erstellen Sie einen Wallet-Vertrag, um Ether zu speichern.

Wenn Sie jedoch eingehende Transaktionen auf einem Konto verfolgen müssen, müssen Sie einen Wallet-Vertrag erstellen.
Wenn Sie nun Ether von Account1 auf Ihren WalletContract übertragen (z. B. WalletContract1), zeigen sowohl Account1 als auch WalletContract1 die Transaktionen an.
Daher führen Wallet-Verträge auch eine Liste eingehender Transaktionen, während EOAs dies nicht tun .


Es gibt verschiedene Arten von Wallet-Verträgen wie:

  • Einzelbesitzerkonto
  • MultiSignature-Wallet-Vertrag

die viel bessere Funktionen bieten als normale EOAs. Das Erstellen eines Wallet-Vertrags erfordert jedoch eine Transaktionsgebühr (Gas). Lesen Sie hier die vollständige Beschreibung .


Lesen Sie hier den Unterschied zwischen EOAs und Wallet Contracts .

Sie können Transaktionen erhalten, die nichts anderes tun, als Ether von Konto A auf Konto B zu verschieben, signiert von Konto A; indem Sie einfach auf neue Blöcke hören und tx mit filtern to === B. Aber um „interne Transaktionen“ abzufangen, d. h. intelligente Verträge, die Ether an Konto B senden, müssten Sie Ausführungsspuren durchgehen und die Opcodes auswählen, die Ether senden. Alternativ können Sie den Kontostand von Konto B nach jeder Übertragung überprüfen und Änderungen feststellen.

Mit ERC20-Tokens können Sie das Ereignis jedoch einfach abonnieren Transferund sogar automatisch nach Empfänger filtern :

const filter = myToken.events.Transfer({ filter: { to: B } })
filter.on("data", event => {
    console.log(`Received ${event.returnValues.tokens} tokens!`)
})

// later...
filter.unsubscribe()

Diese Methode wird in Ethereum 2.0 auch für Ether verfügbar sein, wenn die Pläne voranschreiten, es zu einem ERC20-Token zu machen, das in einer festen Adresse wie 0x00 lebt. Im Moment ist das Verfolgen von Ether am einfachsten, indem eth.getBalance(B)nach jedem Block aufgerufen wird.