Noob: Wie verifiziere ich, dass eine Transaktion nicht von einem Hacker stammt?

Ich arbeite gerade an meinem ersten Ethereum-Projekt.

Wenn ein Benutzer die MySecretApp öffnet, erstellt er eine Transaktion auf der Ethereum-Blockchain.

Meine Fragen sind:

1) Teile ich die Ethereum-Blockchain (und die Milliarde bestehender Transaktionen) mit anderen Unternehmen? Oder kann ich eine neue Kette erstellen, die nur Transaktionen enthält, die von MySecretApp kommen?

1) Wie verifiziere ich, dass ein Hacker mit einer App namens HackersFakeApp keine Transaktion in meiner Kette veröffentlicht? Ich möchte nur Transaktionen speichern, die von meiner App stammen.

Wird die Transaktion auf dem Computer des Benutzers oder auf einem von Ihnen kontrollierten Server erstellt?
Es wäre von einem physischen Gerät (mit WLAN), das sie bei mir kaufen

Antworten (1)

Ein mögliches Setup:

  • Speichern Sie einen privaten Schlüssel in den physischen Geräten. Es sollte für alle Geräte gleich sein und nur Ihnen bekannt sein. Sie sollten sicherstellen, dass die Leute nicht mit dem von Ihrer Hardware bereitgestellten Mechanismus darauf zugreifen können.

  • Schreiben Sie den öffentlichen Schlüssel dieses privaten Schlüssels als Konstante in Ihren Smart Contract

  • Beim Erstellen einer Transaktion verwendet das Gerät den privaten Schlüssel, um eine Nachricht zu signieren, die die Details der Transaktion enthält (z. B. Methoden-ID, Argumente, Absender und eine Sequenznummer).

  • Das Gerät sendet die Transaktion mit der Signatur als Argument

  • Der Smart Contract rekonstruiert die Nachricht und verifiziert die Signatur der Nachricht

An diesem Punkt können Sie sicher sein, dass nur Transaktionen erfolgreich ausgeführt werden, die von einem Ihrer Geräte gesendet wurden.

Wenn Sie weitere Fragen haben, kommentieren Sie einfach, ich werde diese Antwort aktualisieren.

Danke! Ist dies ein übliches Setup für Blockchain mit physischen Geräten? Ist es sicher, den privaten Schlüssel auf all diesen Geräten zu speichern? Ich würde denken, dass die Geräte normalerweise öffentliche Schlüssel haben würden und der Smart Contract den privaten Schlüssel haben würde. (Ich bin ein absoluter Noob, also korrigiert mich bitte, wenn ich falsch liege)
@Edmund Dies ist ein gängiges Setup. Sie sollten niemals geheime Informationen in einem Smart Contract speichern, da der gesamte Smart Contract-Code in der Blockchain öffentlich sichtbar ist. Viele Chips, die in der Embedded-Welt verwendet werden, haben einen permanenten Verriegelungsmechanismus als Hardware-Funktion eingebaut. Nach dem Flashen können Sie die Sperre aktivieren und niemand kann mehr den Programmspeicher lesen. Sie sollten den privaten Schlüssel nur in gesperrtem Speicher weitergeben. Das Gerät, das als Quelle bestimmter Informationen verifiziert wurde, sollte den privaten Schlüssel enthalten. Der Code, der die Überprüfung durchführt, enthält immer den öffentlichen Schlüssel.
Wow, das sind tolle Infos! Ich hatte die falsche Idee. Würde die Verwendung dieses Setups also bedeuten, dass ein Konsens nicht erforderlich ist? Ich bin mir ehrlich gesagt nicht sicher, wie Konsens funktioniert ... meines Wissens handhabt Ethereum das automatisch, sodass ich mir keine Gedanken darüber machen muss, sodass ich einfach Transaktionen erstellen und codieren kann, in der Annahme, dass alles sicher ist. Ist das richtig?
@Edmund Consensus geschieht automatisch innerhalb der Ethereum-Plattform. Alles, was Sie tun müssen, ist, eine Transaktion mit ausreichender Gebühr zu übertragen und zu warten, bis sie bestätigt wurde, indem sie in einen Block geschürft (normalerweise innerhalb von 5 bis 40 Sekunden) und erfolgreich ausgeführt wurde.
Du bist der beste!! Alles ist jetzt so viel klarer. Vielen Dank!