Woher wissen die anderen Knoten, welcher bestimmte Knoten das Konto hat, das in der Transaktion verwendet wird?

Kurz zu meinem Setup. Ich verwende ein privates Ethereum-Netzwerk mit 3 Knoten. Ich habe alle Knoten peersuntereinander erstellt, indem ich Folgendes verwendet habe:admin.addPeer("enode:1234abcd..")

Wenn das Mining stattfindet, sind alle Knoten synchron.

Ich habe auch festgestellt, dass die auf einem Knoten erstellten Konten für denselben Knoten lokal sind. Die auf einem Knoten erstellten Konten sind also auf demselben Knoten verfügbar und nicht bei einem seiner Peers.

Ich bin jedoch in der Lage, Transaktionen zwischen Konten verschiedener Knoten zu verarbeiten.eth.sendTransaction({from:sender, to:receiver, value: amount})

Nun sind meine Fragen:

  • Woher weiß das Netzwerk, welcher Knoten nach dem Vorhandensein des Kontos abgefragt werden soll?
  • Werden alle Knoten auf das Vorhandensein von „Sender“- und „Empfänger“-Konto überprüft?
  • Erhöht sich die Transaktionszeit, wenn weitere Peers zum Netzwerk hinzugefügt werden?
  • Beeinträchtigt es die Sicherheit meines Netzwerks, wenn ich die Schlüsseldateien von Konten, die auf einem Knoten erstellt wurden, zu allen anderen Knoten übertrage?

Antworten (1)

  • Transaktionen werden mit einem privaten Schlüssel signiert, der eine Signatur erstellt. Anhand der Transaktionsdaten und der Signatur kann der Knoten die öffentliche Adresse des Unterzeichners ableiten und die Transaktion verifizieren. Der „Sender“ ist der Unterzeichner, also der private Schlüssel. Dem Netzwerk ist es egal, wer im "Besitz" des Kontos ist. Die Blockchain ist ein Hauptbuch, das öffentliche Adressen den verarbeiteten Transaktionswerten zuordnet, und es spielt keine Rolle, woher die Transaktion stammt. Es prüft einfach, ob der Unterzeichner legitim ist, indem es den Unterzeichner der Signatur mit dem von vergleichtöffentliche Adresse. Ich vereinfache natürlich viel davon, aber der Punkt ist, dass es dem Netzwerk egal ist, welcher Knoten den privaten Schlüssel hat. Sie können die Transaktion von einem Knoten oder offline oder von Pluto aus signieren und dann die signierte Transaktion an einen anderen Knoten weitergeben, um sie zu übertragen, und es wird funktionieren.
  • Nein, die Knoten werden nicht auf das Vorhandensein des Kontos überprüft.
  • Nein, die Transaktionszeit basiert auf der Blockschwierigkeit, dh wie lange ein Miner oder ein Pool von Minern braucht, um einen Block abzubauen, was auf etwa 15 Sekunden geschätzt wird. Das Netzwerk kann jedoch überlastet werden, wenn es eine Tonne mehr Transaktionen gibt, als es verarbeiten kann, und damit meine ich, dass es Einschränkungen gibt, wie viele Transaktionen in einen Block passen. Wenn also zu viele Transaktionen vorhanden sind, bleiben viele Transaktionen in der Nähe ein Pool (Mempool genannt) von Transaktionen, die darauf warten, abgeholt und abgebaut (in einem Block enthalten) zu werden.
  • Solange die Keystore-Dateien verschlüsselt und über TLS übertragen werden, ist es sicher, sie zu transportieren.