Contrato inteligente
El contrato inteligente (también, contrato de auto-ejecución, contrato de blockchain o contrato digital) es un algoritmo electrónico destinado a la automatización del proceso de ejecución de contratos en un blockchain. La idea general de los contratos inteligentes es excluir las divergencias en el tratamiento de los términos del acuerdo por parte de los participantes.
Contenido
Historia
Nick Szabo creó contratos inteligentes en 1996. Ofreció utilizar algoritmos informáticos con interfaces de usuario para cerrar tratos en el área del comercio electrónico. Según la idea del autor, la descripción de los términos del contrato se debe hacer con la utilización de herramientas matemáticas y lenguajes de programación. Luego, Vitalik Buterinpuso en práctica la idea de los contratos inteligentes por primera vez en su proyecto Ethereum (2013).
Principios básicos de trabajo
La realización de la idea de Szabo se hizo posible con la aparición de la tecnología de la blockchain que garantiza la fiabilidad y la protección de un contrato inteligente debido a sus características:
- Tipo de sistema descentralizado: Ninguna de las partes contratantes puede cambiar el texto del documento, ya que una copia del acuerdo se mantiene en el registro, distribuido entre numerosos nodos de red.
- Abrir bases de datos: Los términos del contrato están disponibles para todos los participantes de la blockchain: la auditoría de la ejecución del contrato se vuelve más fácil.
- Formalización de los términos del contrato. El control y la ejecución de los términos del contrato se realiza con un código de programa – if-this-then-that (IFTTT, por sus siglas en inglés) – por lo que se excluye la posibilidad de una ejecución incorrecta.
- Operaciones atómicas. Se implementará un contrato con éxito o no se implementará en absoluto.
- Totalidad del Turing: El blockchain que presenta Ethereum tiene un lenguaje de programación completo de Turing, gracias al cual los usuarios podrán crear cualquier contrato por sí mismos.
Ejecución de contratos inteligentes
En Ethereum, se ejecutan los códigos de contratos inteligentes en un entorno específico: la máquina virtual Ethereum (EVM, conforme a sus siglas en inglés). Cada nodo de red realiza la verificación de un nuevo bloque, al realizar las transacciones incluidas en este bloque y al implementar los códigos iniciados por estas transacciones en EVM.
Cada nodo de red realiza los mismos cálculos, guarda valores iguales.
La formación de bloques de transacción que hacen los mineros se realiza por una tarifa: el costo de la operación se evalúa en unidades de gas.
Seguridad y susceptibilidad
Los contratos inteligentes en Ethereum son vulnerables a los ataques de los hackers debido a diferentes razones:
Errores en el uso de la Solidez
- Semántica del lenguaje de Solidity: Se crea los contratos en el lenguaje de programación – Solidity, que es similar a Java y presenta un conjunto de funciones. Sin embargo, el bytecode de la máquina virtual Ethereum no admite el trabajo con funciones, por lo que se recopila los contratos antes de enviarlos a la blockchain. Un error de tipeo en el código del contrato puede conducir a la implementación de la función de respaldo.
- Orden incorrecto de excepciones: Para la implementación de un contrato inteligente se puede necesitar una excepción, una interrupción del trabajo de su método. Si aparece una excepción durante la ejecución del comando de llamada, entonces la ejecución de los contratos continuará hasta que el gas haya terminado.
- Capacidad de volver a ingresar: Se puede ingresar las mismas instrucciones de programa muchas veces, por ejemplo, a través de la función de respaldo lo que dará lugar a un ciclo en la llamada del método de llamado y al gastar todo el gas. Se construyó el ataque a la DAO (digital decentralized autonomous organization, por sus siglas en inglés) en este tipo [1].
Errores en el trabajo de la máquina virtual de Ethereum
- Invariabilidad de los contratos: No se puede cambiar un contrato publicado en la blockchain. Si un contrato contiene un error es imposible corregirlo, ya que solo se puede detener la ejecución del contrato. Un ejemplo destacado puede ser la eliminación de las consecuencias del ataque a la DAO.
- Pérdidas de éter durante la transferencia: Para enviar éter, se debe indicar la dirección de la parte receptora, que presenta una secuencia de 160 bits. Si la dirección dada no está vinculada a un usuario o un contrato, el éter enviado se perderá para siempre.
Errores de la blockchain
- Estado de un contrato: No se ejecutará una parte de un contrato inteligente que entró en un corto circuito secundario. En consecuencia, el estado del contrato no se determinará únicamente de forma temporal. Una de las partes contratantes puede considerar que el contrato se ha ejecutado, aunque no sucedió.
- Restricciones temporales: Para determinar el estado de un contrato, se necesita algo de tiempo (ver el párrafo anterior), que lo hace vulnerable a los ataques.
Grandes casos de fraude
En julio de 2016, hubo un ataque a la DAO como resultado de lo que un hacker logró transferir a un contrató que él [2] creo con un saldo de más de $ 64 millones. Para un ataque, se ha utilizado la característica de volver a ingresar dentro de una transacción, el hacker retiró fondos de la DAO y transfirió el éter a su hija DAO, al repetir la operación muchas veces [3].
Ver también
Notas
1. ↑ http://www.blockchaintechnologies.com/blockchain-smart-contracts [4]
2. ↑ Szabo N. Contratos inteligentes: Construir bloques para mercados digitales //URL: http://www.alamut.com/subj/economics/nick_szabo/smartContracts.html [5] (Letzter Abruf vom 31.10. 2016). 1996.
3. ↑ Szabo N. http://firstmonday.org/ojs/index.php/fm/article/view/548/469 //URL: http://firstmonday.org/ojs/index.php/fm/article/view/548/469 [6] 1997.
4. ↑ Dannen C. Acortar la brecha de conocimiento de Blockchain // Presentar Ethereum y Solidity. Apress, 2017. С. 1-20.
5. ↑ Delmolino K. et al. Un paso tras otro hacia la creación de un contrato inteligente seguro: lecciones y perspectivas de un laboratorio de criptodivisas // Conferencia Internacional sobre Criptografía Financiera y Seguridad de Datos. – Springer Berlin Heidelberg, 2016. – С. 79-94.
6. ↑ Atzei N., Bartoletti M., Cimoli T., Una encuesta de ataques contra contratos inteligentes de Ethereum (SoK, conforme a sus siglas en inglés) // Conferencia Internacional sobre Principios de Seguridad y Confianza. – Springer, Berlin, Heidelberg, 2017. – С. 164-186.
7. ↑ Velner Y., Teutsch J., Luu L. Los contratos inteligentes hacen que las pool mineras de Bitcoin sean vulnerables.// IACR Cryptology ePrint Archive – 2017. – Т. 2017. – С. 230.
8. ↑ [ http://www.cbc.ca/news/technology/ethereum-hack-blockchain-fork-bitcoin-1.3719009 http://www.cbc.ca/news/technology/ethereum-hack-blockchain-fork-bitcoin-1.3719009] [7]