Wie implementiert man kryptografische Algorithmen in Smart Contracts?

Ich muss kryptografische Algorithmen wie AESCCM und elliptische Kurvenalgorithmen (ECDSA, ECIES) in einem Smart Contract implementieren. Gibt es eine Implementierung solcher Algorithmen in Solidity oder Serpent?

Oder gibt es eine Möglichkeit, Python-Code (oder eine andere Sprache) beispielsweise in Serpent zu integrieren (es gibt viele kryptografische Bibliotheken in Python)?

Oder irgendwelche anderen Vorschläge, wie ich diese Algorithmen implementieren kann?

Wenn es sich um eine private Kette handelt, sollten Sie erwägen, Pyethereum zu forken und Ihre eigenen „vorkompilierten Verträge“ hinzuzufügen: siehe github.com/ethereum/pyethereum/blob/develop/ethereum/… .
vielen Dank für Ihre Antwort, ich bin neu in Ethereum und Smart Contracts. Können Sie Ihre Antwort bitte erläutern. Vielen Dank
Ich arbeite auch an etwas ähnlichem. Hast du es zum Laufen bekommen?

Antworten (2)

Diese Bibliothek ist ein guter Ausgangspunkt: https://github.com/HarryR/solcrypto

Wie Richard betont, sind Kryptographie mit symmetrischen Schlüsseln und der Betrieb mit privaten Schlüsseln in einem Smart Contract selten sinnvoll, da der Smart Contract keine Privatsphäre hat. Public-Key-Operationen wie das Überprüfen von Signaturen, Beweisen und Hashes können jedoch sehr nützlich sein und wurden durch die Hinzufügung der vorkompilierten Verträge mit elliptischer Kurve in Byzanz effizienter.

Denken Sie daran, dass alles, was innerhalb eines Smart Contracts getan wird, mit Gas bezahlt werden muss: Rechenaufwand entspricht Gasaufwand. Auch wenn hohe Gaskosten keine Abschreckung darstellen, gibt es immer noch ein Gaslimit pro Block, das berücksichtigt werden müsste. (Ich weiß nicht viel über die Implementierung von Kryptoalgorithmen, aber ich habe die OpenSSL C-Implementierung von ECDSA überprüft, und sie ist Hunderte von Zeilen lang ...)

Wie in früheren Threads erwähnt, würde das Unterzeichnen von irgendetwas in einem Smart Contract notwendigerweise die privaten Schlüssel offenlegen, was vermutlich nicht das ist, was Sie wollen. Eine bessere Option wäre, das Fleisch der Krypto außerhalb des Vertrags auszuführen und die resultierenden Hashes dorthin zu senden.