¿Cómo implementar algoritmos criptográficos en contratos inteligentes?

Necesito implementar algoritmos criptográficos como AESCCM y algoritmos de curva elíptica (ECDSA, ECIES) dentro de un contrato inteligente. ¿Existe alguna implementación de dichos algoritmos en Solidity o Serpent?

¿O hay alguna forma de integrar el código Python (u otro idioma) dentro de Serpent, por ejemplo (hay muchas bibliotecas criptográficas en Python)?

¿O alguna otra sugerencia sobre cómo puedo implementar esos algoritmos?

Si se trata de una cadena privada, considere bifurcar pyethereum y agregar sus propios "contratos precompilados": consulte github.com/ethereum/pyethereum/blob/develop/ethereum/… .
gracias por su respuesta, soy nuevo en Ethereum y contratos inteligentes. ¿Puede explicar su respuesta, por favor? Gracias
Yo también estoy trabajando en algo similar. hiciste que funcionara?

Respuestas (2)

Esta biblioteca es un buen punto de partida: https://github.com/HarryR/solcrypto

Como Richard señala, la criptografía de clave simétrica y la operación de clave privada rara vez son sensatas en un contrato inteligente, ya que el contrato inteligente no tiene privacidad. Sin embargo, las operaciones de clave pública como la verificación de firmas, pruebas y hashes pueden ser muy útiles y se volvieron más eficientes con la adición de los contratos precompilados de curva elíptica en Bizancio.

Recuerde que cualquier cosa que se haga dentro de un contrato inteligente debe pagarse con gas: el gasto computacional equivale al gasto de gas. Incluso si los altos costos de la gasolina no son un impedimento, todavía hay un límite de gasolina por bloque que debería considerarse. (No sé mucho sobre la implementación de algoritmos criptográficos, pero revisé la implementación OpenSSL C de ECDSA, y tiene cientos de líneas de largo...)

Además, como se mencionó en hilos anteriores , firmar cualquier cosa dentro de un contrato inteligente necesariamente expondría las claves privadas, lo que presumiblemente no es lo que desea. Una mejor opción sería realizar la carne de la criptografía fuera del contrato y enviarle los hashes resultantes.