Was ist ein empfohlener Weg, um Geheimnisse in Solidity weiterzugeben?

Hallo, ich bin ein Ethereum-Noob und probiere gerade etwas aus.

Ich habe hier eine kurze Frage zur Weitergabe von Geheimnissen in Solidity an die Community. Da wir nur kontrollieren können, wer Zustandsvariablen in Solidity ändern kann, sind die Werte in Variablen für die Öffentlichkeit sichtbar.

Was ist der empfohlene Weg, um einen Smart Contract zu implementieren, der bestimmte Werte für eine bestimmte Adresse anzeigt? Kann ich meine Nachricht mit dem öffentlichen Schlüssel (Adresse) des beabsichtigten Empfängers verschlüsseln? Und den Empfänger die Nachricht mit seinem privaten Schlüssel entschlüsseln lassen? Wie würde ich das in Solidity machen?

Vielen Dank

Verwandte: Aktuelle Methoden zum Senden verschlüsselter Nachrichten aus Verträgen

Antworten (1)

In dem Fall, in dem es akzeptabel ist, die Verschlüsselung und Entschlüsselung außerhalb der Kette durchzuführen, befolgen Sie diese vier Schritte:

  1. Verwenden Sie außerhalb der Kette eine Verschlüsselungsbibliothek, um die Nachricht mit dem öffentlichen Schlüssel des Empfängers zu verschlüsseln, der mit seiner Ethereum-Adresse verknüpft ist. Ein Beispiel dafür: So verschlüsseln Sie eine Nachricht mit dem öffentlichen Schlüssel einer Ethereum-Adresse

  2. Senden Sie eine Ethereum-Transaktion, die eine Methode in Ihrem Vertrag aufruft, um die verschlüsselte Nachricht in einer Vertragsstatusvariablen zu speichern.

  3. Nachdem die Transaktion bestätigt wurde, kann der Empfänger einen (Nicht-Transaktions-)Aufruf tätigen, um den Inhalt der Zustandsvariablen aus dem Vertrag zu lesen.

  4. Außerhalb der Kette verwendet der Empfänger seinen privaten Ethereum-Schlüssel, um die Nachricht zu entschlüsseln.

Beachten Sie, dass nur Schritt 2 die Blockchain modifiziert.

Wie würde ich das in Solidity machen?

Sie möchten die Entschlüsselung wahrscheinlich nicht in der Kette durchführen, da dies erfordern würde, den privaten Schlüssel des Empfängers als Eingabe für eine Transaktion einzuschließen, wodurch er für alle sichtbar wäre.

Ich weiß auch nicht, ob dies derzeit möglich ist. Die Operationen mit elliptischen Kurven sind komplex und verbrauchen viel Gas. In der bevorstehenden Metropolis-Hardfork werden neue vorkompilierte Verträge gaseffiziente Implementierungen von Operationen mit elliptischen Kurven bereitstellen (siehe EIP 213 ). Diese sollen es Ihnen ermöglichen, die Entschlüsselung in Solidity umzusetzen. Aber an diesem Punkt wird der private Schlüssel offengelegt, sodass es schwierig ist, sich einen sinnvollen Anwendungsfall vorzustellen.