Как реализовать криптографические алгоритмы в смарт-контрактах?

Мне нужно внедрить криптографические алгоритмы, такие как AESCCM, и алгоритмы эллиптических кривых (ECDSA, ECIES) в рамках смарт-контракта. Есть ли реализация таких алгоритмов в Solidity или Serpent?

Или есть ли способ интегрировать код Python (или другой язык) в Serpent, например (в Python много криптографических библиотек)?

Или любые другие предложения о том, как я могу реализовать эти алгоритмы?

Если это частная цепочка, рассмотрите возможность создания форка pyethereum и добавления собственных «предварительно скомпилированных контрактов»: см . github.com/ethereum/pyethereum/blob/develop/ethereum/… .
спасибо за ваш ответ, я новичок в Ethereum и смарт-контрактах. Можете ли вы объяснить свой ответ, пожалуйста. Спасибо
Я тоже работаю над чем-то подобным. Вы заставили его работать?

Ответы (2)

Эта библиотека является хорошей отправной точкой: https://github.com/HarryR/solcrypto .

Как указывает Ричард, шифрование с симметричным ключом и операция с закрытым ключом редко бывают разумными в смарт-контракте, поскольку смарт-контракт не имеет конфиденциальности. Однако операции с открытым ключом, такие как проверка подписей, доказательств и хэшей, могут быть очень полезными и стали более эффективными с добавлением предварительно скомпилированных контрактов на основе эллиптических кривых в Byzantium.

Помните, что все, что делается внутри смарт-контракта, должно оплачиваться газом: вычислительные затраты приравниваются к расходам на газ. Даже если высокая стоимость газа не является сдерживающим фактором, все же существует ограничение газа на блок, которое необходимо учитывать. (Я мало что знаю о реализации криптоалгоритмов, но я проверил реализацию ECDSA на OpenSSL C , и она состоит из сотен строк...)

Кроме того, как упоминалось в предыдущих потоках , подписание чего-либо внутри смарт-контракта обязательно раскроет закрытые ключи, что, по-видимому, не то, что вам нужно. Лучшим вариантом было бы выполнить мясо крипты вне контракта и отправить ему полученные хэши.