Wie wird die Transaktion verschlüsselt und entschlüsselt? Sollen alle Peers den öffentlichen Schlüssel jedes anderen Peers besitzen?

Nehmen wir an, Peer A sendet eine Transaktion an den Vertrag. Wie können Peer B und C dies sehen? Müssen sie verschlüsselt werden? Wenn ja, wie? Muss jeder einzelne Peer den öffentlichen Schlüssel jedes Kontos haben?

Antworten (2)

Die Daten der Transaktionen sind für alle Knoten sichtbar, dies wird benötigt, damit sie die Verträge ausführen können. Daher ist keine Verschlüsselung erforderlich, um eine Transaktion zu senden.

Siehe auch:

Immer wenn eine Transaktion durchgeführt wird, wird sie nur mit dem privaten Schlüssel signiert. Dies ist erforderlich, um die Authentizität des Absenders zu überprüfen (um betrügerische Eingaben zu verhindern). Ist es das richtige Konzept? Wenn ja, wie der Signiervorgang abläuft. Kann ich das etwas ausführlicher erklären?
@BudhadityaDutta, Sie haben Recht, Transaktionen werden mit dem privaten Schlüssel signiert, aber nur der entsprechende öffentliche Schlüssel wird benötigt, um die Signatur zu verifizieren (weitere Informationen dazu finden Sie unter Asymetric Cryptography Signatures). Ein Vertrag kann Transaktionen nur nach seinen eigenen codierten Regeln durchführen. Daher ist für einen Vertragsabschluss keine Unterschrift erforderlich. Wenn zum Beispiel ein Vertrag besagt, dass er nach Erhalt einer Adresse als Parameter seiner Geschenkmethode 1 Ether an diese Adresse gibt, wenn er über genügend Mittel verfügt, können die Peers überprüfen, ob der Vertrag über genügend Mittel verfügt, und dann den Ether an die Adresse senden .

Du hast gefragt:

... wie der Signiervorgang abläuft. Kann ich eine kleine tiefgründige Erklärung dazu haben.

Wenn Sie eine ausführliche Erklärung wünschen, lesen Sie Anhang F des Yellow Paper , in dem der Transaktionssignierungs- und -verifizierungsprozess im Detail beschrieben wird.

Kurz gesagt, eine von Ihnen gesendete Transaktion ist mehr oder weniger im Klartext; es ist nicht verschlüsselt. Es wird jedoch von einer Signatur über die Transaktionsdaten begleitet. Diese Signatur wird aus den Transaktionsdaten und Ihrem privaten Schlüssel erstellt.

Wenn ein Knoten Ihre Transaktion empfängt, kann er die Signatur mit einer Technik namens verarbeiten ECDSARECOVER. Die Ausgabe davon ist Ihr öffentlicher Schlüssel, und Ihre Kontoadresse wird direkt aus Ihrem öffentlichen Schlüssel generiert (es ist kein Geheimnis). Wenn die aus dem wiederhergestellten öffentlichen Schlüssel generierte Adresse mit der „Von“-Adresse in Ihrer Transaktion übereinstimmt, wissen wir, dass die gesamte Transaktion mit einem korrekten privaten Schlüssel für Ihr Konto signiert wurde.

Verträge haben keine privaten Schlüssel und können daher keine Transaktionen senden. Stattdessen gibt es andere Mechanismen für Verträge, um sich gegenseitig aufzurufen oder Werte intern innerhalb der EVM zu senden.