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?
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.
eth
Dissou
Adithya Bhat