So verschlüsseln Sie eine Zeichenfolge mit einem privaten Smart-Contract-Schlüssel und entschlüsseln diesen offline

Angenommen, ich möchte einen Smart Contract erstellen, der geheime Nachrichten (Strings) speichern kann. Die Nachrichten sollten nur in verschlüsselter Form gespeichert werden, damit niemand sie lesen kann, aber von einigen Benutzern entschlüsselt werden können.

Ich kann grundlegende Solidity schreiben, aber ich brauche etwas Hilfe, wie ich das designweise mache.

Ich weiß, dass es möglich ist, Zeichenfolgen offline zu verschlüsseln/entschlüsseln und nur die verschlüsselten Daten an die Blockchain zu senden. Aber für den Fall, dass mehrere Benutzer in der Lage sein müssen, dieselben Zeichenfolgen zu entschlüsseln, wie kann dies am besten geschehen?

Wäre dies mit der Erstellung eines Multi-Sig-Wallet- Vertrags möglich, der aus wenigen Benutzern besteht? Müssen sie alle den privaten Schlüssel auf ihren Computern haben, um ihn verwenden zu können? Ist das nicht gefährlich?

Jeder Rat wird sehr geschätzt.

Antworten (1)

Tut mir leid, es kann nicht sicher auf der Ethereum-Blockchain mit Standard-Solidity durchgeführt werden, nicht in diesem Modus. Sollten Sie in einem Smart Contract mit Solidity verschlüsseln, werden alle an der Ausarbeitung beteiligten Variablen auf/in der Blockchain gespeichert. Es kann formell nachgewiesen werden.

Was Sie tun können, ist, jeden bereits verschlüsselten Wert in der Blockchain zu speichern, der von jeder Person gelesen werden kann, die den Verschlüsselungsschlüssel kennt.

Dies (die Entschlüsselung) muss außerhalb der Kette erfolgen (d. h. auf einem separaten Server und/oder in JavaScript auf der Web-UI), wenn auf die Daten von mehr als einem Benutzer zugegriffen werden muss und sie geheim bleiben müssen, denn wenn Sie sie entschlüsseln EVM mit einigen

decrypt (address encryptedData, uint256 key) returns (byte32 decryptedData)

Eine Kopie des Schlüssels soll für immer in der Blockchain verfügbar und für alle lesbar sein (Sie können die Transaktion beispielsweise auf Etherscan im Klartext lesen).

Sie können etwas Nützliches durch zk-SNARK-Algorithmen haben, siehe https://link.medium.com/Gj2AvUVMeR , aber es ist nicht trivial und bis jetzt sind keine geeigneten Implementierungen in Solidity und EVM bekannt.