Transaktionsüberprüfung

Ich verwende ein 0-Bestätigungstool. Um neue Transaktionen zu verfolgen, verwende ich:

  1. bitcoin getrawmempool
  2. neue Transaktionen in neuem Block nicht in Mempool verfügbar (es scheint, dass ich nicht alle Transaktionen in Mempool erhalte, bevor mein Client einen neuen Block akzeptiert)

Ich vertraue meinem Bitcoin-Client-Transaktionsverifizierungsprozess (Protokollregeln). (Ich erwarte, dass es alle Schritte in: https://en.bitcoin.it/wiki/Protocol_rules#.22tx.22_messages ausführt )

Ich gehe davon aus, dass ich nicht die Garantie habe, dass der Kunde / die Person, die den neuen Block erstellt hat, die Protokollregeln für die enthaltenen Transaktionen befolgt hat, daher möchte ich die „fehlende“ Transaktion aus meinem Mempool überprüfen.

Ich weiß, dass 6 Bestätigungen als "sicher" erwartet werden, aber ich möchte eine 0-Bestätigung (oder 1-Bestätigung bezüglich eines neuen Blocks) so sicher wie möglich machen.

1: Wird jede Transaktion von meinem Bitcoin-Client geprüft, bevor ein neuer Block (lokal) akzeptiert wird? (um sicherzustellen, dass jede Transaktion, die in Mempool und Blockchain meines (offiziellen) Kunden verfügbar ist, die Protokollregeln erfüllt)

2: Wenn 1. nicht wahr ist: Welche Bitcoin-API oder (Python-)Programm ist verfügbar, um Transaktionen zu überprüfen, die in einem neuen Block enthalten sind, wenn sie die (offiziellen) Protokollregeln erfüllen?

Antworten (1)

Ja, Ihr Kunde wird jeden empfangenen Block vollständig verifizieren.

Ihr größtes Problem beim Akzeptieren von 0-Bestätigungstransaktionen besteht darin, sicherzustellen, dass ein Angreifer Ihren Knoten keine Transaktion senden kann, die der Rest des Netzwerks als doppelte Ausgabe verwirft. Grundsätzlich sollten Sie direkte Verbindungen zu Ihren Knoten verbieten und sie mit vertrauenswürdigen Knoten wie großen Minern verbinden.

Dies eliminiert das Risiko nicht, reduziert es jedoch etwas auf Finney-Angriffe und einen Angreifer, der das Glück hat, die schlechte Transaktion durch einen großen Miner zu Ihnen zu bringen, der diese Transaktion am Ende nicht in einen Block legt, bevor die widersprüchliche Transaktion abgebaut wird.

Danke! Ich verstehe jetzt das Risiko, wenn die Knoten meines Kunden rückverfolgbar sind und/oder nicht vertrauenswürdige Knoten verwenden.
Weitere Informationen zu den Risiken, die mit der Annahme unbestätigter Transaktionen verbunden sind, finden Sie in den jüngsten Arbeiten von Karame et al. und Bamert et al. (Haftungsausschluss: Ich bin ein Autor des zweiten). Sie bieten eine eingehende Analyse der Ursachen und Gegenmaßnahmen.