Los 3 malentendidos más comunes en los contratos inteligentes

Como desarrollador de una popular plataforma blockchain, a veces se nos pregunta si los contratos inteligentes similares a Ethereum toman la línea de enlaces múltiples. Siempre respondo: No, al menos todavía no.

QQ captura de pantalla 20160418152033_copy

Pero los contratos inteligentes pueden estar de moda en el mundo del bombo de blockchain, ¿por qué no antes? Entonces, el problema es que, aunque ahora comprendemos los tres casos de uso sólidos para la cadena de bloques de Bitcoin (fuente, registros intercompañía y financiamiento liviano), aún no hemos encontrado el equivalente de los contratos inteligentes de Ethereum.

Esto no quiere decir que las personas carecen de la idea de usar contratos inteligentes. Por el contrario, muchas de estas ideas son simplemente imposibles de realizar. Verá, cuando las personas inteligentes escuchan la palabra "contrato inteligente", su imaginación tiende a enloquecer. Piensan en un software inteligente automatizado para integrarse en este mundo y usan sus datos para compensar la emoción.

Desafortunadamente, la realidad de los contratos inteligentes es mucho más secular que estos:

Un contrato inteligente es en realidad una pieza de código almacenada en una cadena de bloques, desencadenada por una transacción de cadena de bloques.

Lee y escribe datos en la base de datos blockchain. Este es el contrato inteligente. De verdad. Un contrato inteligente es solo una cadena de código con un nombre peculiar que se ejecuta en la cadena de bloques e interactúa con el modelo de estado de la cadena de bloques. ¿Qué es el código? El código puede ser Pascal, Python o PHP. Es Java, Fortran y C ++. Si estamos hablando de una base de datos, es un procedimiento almacenado escrito en SQL extendido. Todos estos lenguajes son básicamente equivalentes y resuelven el mismo tipo de problemas del mismo tipo. Por supuesto, cada lenguaje tiene sus fortalezas y debilidades: debe estar loco para construir un sitio web en C o comprimir video HD en Ruby. Pero, al menos en principio, puedes, todo el tiempo que quieras. Acaba de pagar un alto precio por su comodidad y rendimiento

El problema con los contratos inteligentes no es solo que las expectativas de las personas sean exageradas. Son esas expectativas las que hacen que muchas personas gasten tiempo y dinero en ideas que son imposibles de lograr. Parece que las grandes empresas deben tener los recursos suficientes para realizar un largo viaje, desde el momento en que los gerentes superiores se encuentran con una nueva tecnología y realmente comprenden sus ventajas y limitaciones. Quizás nuestra propia experiencia pueda ayudar a acortar este tiempo.

En los últimos nueve meses, hemos invertido en muchos casos de uso de contratos inteligentes y hemos encontrado nuestra propia respuesta, una y otra vez, de que simplemente no pueden hacerlo. Finalmente, hemos identificado los tres malentendidos más comunes de los contratos inteligentes. Ninguna de estas ideas es incorrecta porque la tecnología es inmadura o las herramientas aún no están disponibles. En cambio, solo malinterpretaron la naturaleza básica de ejecutar código de manera descentralizada en una base de datos.

 

Contactar servicio externo

 

 

Por lo general, el contrato inteligente propuesto en el primer caso de uso es cambiar su comportamiento en respuesta a algunos eventos externos. Por ejemplo, en un mes determinado, las pólizas de seguro agrícola se pagan en función de la cantidad de lluvia. El proceso imaginario es probablemente así: el contrato inteligente espera un tiempo predeterminado, recuperará el pronóstico del tiempo del servicio externo y realizará las acciones apropiadas en función de los datos recibidos.

Todo esto suena simple, pero al mismo tiempo imposible. Por qué Dado que blockchain es un sistema basado en el consenso, esto significa que solo funcionará si cada nodo alcanza el mismo estado después de procesar una transacción. Todo esto solo puede existir si la cadena de bloques debe estar completamente determinada, y no hay diferencias posibles. Cuando dos nodos honestos no están de acuerdo con el estado de esta cadena, todo el sistema dejará de tener valor.

Recuerde ahora que los contratos inteligentes se ejecutan independientemente por cada nodo en la cadena. Por lo tanto, si el contrato inteligente recupera alguna información de una fuente externa, cada nodo la recuperará repetidamente y la ejecutará por separado. Sin embargo, dado que la fuente de información está fuera de la cadena de bloques, no hay garantía de que cada nodo reciba la misma respuesta. Quizás la fuente de información cambiará el tiempo de respuesta de sus solicitudes entre diferentes nodos, o puede dejar de estar disponible temporalmente. De cualquier manera, una vez que se rompa el consenso, todo el sistema blockchain se paralizará.

Entonces, ¿hay alguna solución? De hecho, es muy simple. En lugar de un contrato inteligente, se inicia la recuperación de datos externos y los datos en la cadena de transacciones se integran en la creación de recuperación de una o más partes confiables ("bases de datos"). Cada nodo tendrá una copia exacta de los datos, por lo que puede usarse de manera segura en un contrato de computación inteligente. En otras palabras, enviar datos de la base de datos a la cadena de bloques es mucho mejor que arrastrar datos de contratos inteligentes.

Surgen problemas similares cuando los contratos inteligentes implican la activación de eventos externos. Por ejemplo, a muchas personas les gusta la idea de llamar a la API de un banco en un contrato inteligente para completar una transferencia. Si cada nodo ejecuta el código en la cadena de forma independiente, ¿quién es responsable de llamar a esta interfaz del programa? Si la respuesta es un cierto nodo, ¿qué sucede si ese nodo en particular falla, puede tomarlo con calma? Si la respuesta es cada nodo, ¿podemos confiar en la contraseña de cada nodo y la interfaz? ¿Realmente queremos que esta interfaz de programa se llame cientos de veces? Peor aún, si el contrato inteligente necesita saber si la llamada de la interfaz es exitosa, volvemos al problema de confiar en datos externos.

Como antes, hay una solución simple. En cambio, los contratos inteligentes llaman a API externas, y usamos un servidor de confianza para monitorear el estado de la cadena de bloques y responder a ciertas operaciones. Por ejemplo, el banco puede esperar la cadena de bloques e implementar transferencias de fondos y reflejar las transacciones en cadena. No existe ningún riesgo para el consenso de la cadena de bloques, porque la cadena juega un papel completamente pasivo.

Mirando estas dos soluciones, podemos hacer algunos comentarios. Primero, todos necesitan una entidad confiable para lidiar con la interacción entre blockchain y el mundo exterior. Aunque esto es técnicamente posible, destruye el objetivo de un sistema descentralizado. En segundo lugar, el mecanismo de usar bases de datos de lectura y escritura en estas soluciones es un ejemplo sencillo. La base de datos que proporciona información externa simplemente escribe esta información en la cadena. Esto refleja que el estado de la cadena de bloques no es más que leer datos de la cadena en el mundo real. En otras palabras, cualquier interacción entre una cadena de bloques y el mundo exterior se limita a las operaciones regulares de la base de datos. Discutiremos esto en detalle más adelante.

 

Hacer cumplir el pago en la cadena

 

 

A menudo escuchamos mucho sobre otra sugerencia: utilice un contrato inteligente para automatizar el pago de cupones, los llamados "bonos inteligentes". La idea es iniciar automáticamente el código de pago del contrato inteligente en el momento adecuado, lo que no solo evita el proceso manual, sino que también protege al emisor del incumplimiento.

Por supuesto, para este trabajo, los fondos utilizados para el reembolso también deben circular dentro de la cadena de bloques; de lo contrario, el contrato inteligente no puede garantizar el pago. Ahora recuerde que blockchain es una base de datos. En este caso, el libro mayor financiero contiene bonos emitidos y una porción de efectivo. Por lo tanto, cuando hablamos de pago de cupones, en realidad es una operación de base de datos que ocurre automáticamente dentro del tiempo acordado.

Aunque esta automatización es técnicamente factible, siempre ha estado plagada de dificultades financieras. Si los fondos utilizados para pagar los bonos están controlados por el contrato inteligente del bono, entonces estos pagos pueden ser garantizados. Pero también significa que estos emisores de bonos no pueden utilizar estos fondos para otros fines. Si estos fondos no están bajo el control del contrato inteligente, entonces no hay forma de garantizar que se pueda garantizar el pago.

En otras palabras, los bonos inteligentes son emisores sin sentido o inversores sin sentido. Si lo piensas, este es un resultado obvio. Desde la perspectiva de los inversores, el foco de los bonos es su atractiva tasa de rendimiento, pero existe un cierto costo de riesgo de incumplimiento. Para los emisores, el propósito de los bonos es utilizar fondos similares para la producción, pero algunas actividades son riesgosas, como la construcción de una nueva fábrica. Por lo tanto, no hay forma de que los emisores de bonos recauden fondos al tiempo que garantizan que los inversores puedan ser reembolsados. Esto no es una sorpresa, la relación original entre riesgo y recompensa no es un problema que blockchain pueda resolver.

 

Ocultar datos confidenciales

 

 

Como he escrito antes, el mayor desafío para el uso efectivo de blockchain es que proporciona una transparencia demasiado completa. Por ejemplo, si diez bancos construyen una cadena de bloques juntos y dos de ellos realizan una transacción bidireccional, la transacción será inmediatamente visible para los otros ocho. Aunque existen varias estrategias para aliviar este problema, no existe una base de datos central que pueda vencer de manera simple y efectiva a menos que haya un administrador confiable que tenga control total sobre quién puede ver qué.

Algunas personas piensan que los contratos inteligentes pueden resolver este problema. Exponen el argumento de que cada contrato inteligente contiene su propia microbase de datos, creyendo que tiene el control total. Dado que todas las operaciones de lectura y escritura en la base de datos están mediadas por el código del contrato, el contrato no puede leer directamente otros datos. (Este acoplamiento estrecho entre datos y código se denomina incrustación y es la base del popular paradigma de programación orientada a objetos).

Entonces, si un contrato inteligente no puede acceder a otros datos, ¿podemos resolver el problema de la confidencialidad de blockchain? ¿Tiene sentido hablar de ocultar información en contratos inteligentes? Lamentablemente, la respuesta es no. Porque incluso si un contrato inteligente no puede leer otros datos, los datos aún se almacenan en cada nodo de la cadena. Para cada participante de blockchain, es posible controlar la memoria o el disco de un sistema. Si cuando quieren leer información de su sistema, ¿qué puede detenerlos?

Ocultar los datos de la página web en un contrato inteligente es tan seguro como ocultarlo en un código HTML. Por supuesto, el usuario promedio de Internet no lo verá porque no se muestra en la ventana de su navegador. Sin embargo, todo esto requiere un navegador web para agregar la función "ver fuente" (porque todos lo han hecho), y la información oculta se vuelve generalmente visible. Del mismo modo, para los datos ocultos en el contrato inteligente, todo lo que se necesita es que alguien modifique su software blockchain para mostrar el estado completo del contrato, y puede ver la ilusión oculta. Mientras un programador similar pueda pasar una hora más o menos.

 

¿Qué es un contrato inteligente?

 

 

Con tantas cosas que los contratos inteligentes no pueden hacer, alguien puede preguntar cuáles son en realidad. Pero para responder a esta pregunta, necesitamos volver a la base de nuestra propia cadena de bloques. Para recapitular brevemente, blockchain permite que las bases de datos sean compartidas de forma directa y segura por entidades que no confían entre sí, sin la necesidad de una administración central. La cadena de bloques logra la intermediación de datos y reduce significativamente la complejidad y muchos costos.

Todas las bases de datos se cambian a través de "datos de transacciones", que contienen un conjunto de cambios en la base de datos, pero deben cambiarse como un todo, independientemente del éxito o el fracaso. Por ejemplo, en el libro de contabilidad financiera, Alice realiza un pago a Bob, luego la transacción aparece como: (1) Verifique si Alice tiene fondos suficientes; (2) Deduzca una cierta cantidad igual al monto de la transacción de la cuenta de Alice; C) Agregue una cantidad igual a la cuenta de Bob.

En una base de datos centralizada convencional, estas transacciones son creadas por una sola autoridad confiable. Por el contrario, en una base de datos compartida impulsada por una cadena de bloques, los usuarios de cualquier cadena de bloques pueden crear transacciones. Además, debido a que estos usuarios no confían plenamente entre sí, la base de datos debe contener reglas que restrinjan las transacciones. Por ejemplo, en un libro de contabilidad financiero de una red de igual a igual, cada transacción debe mantener la cantidad total de fondos sin cambios; de lo contrario, los usuarios pueden extraer libremente la mayor cantidad de dinero posible porque les gusta a todos.

Puede imaginar varias formas de expresar estas reglas, pero ahora hay dos modelos dominantes, que se lanzan con Bitcoin y Ethereum. Podemos llamar al método de Bitcoin "límite de transacción", que consiste en evaluar cada transacción de varias maneras: (a) eliminar la entrada de la base de datos de la transacción y (b) crear una entrada. En un libro mayor financiero, la regla establece que la cantidad total de fondos para las entradas eliminadas debe coincidir con la cantidad total creada. (Creemos que la modificación de una entrada existente es equivalente a eliminar la entrada y crear una nueva en su lugar).

El segundo modelo proviene de Ethereum, que es un contrato inteligente. Esto significa que todos los datos del contrato modificado deben ser ejecutados por su código. (En el contexto de las bases de datos tradicionales, podemos pensar en esto como un procedimiento almacenado obligatorio). Para modificar los datos del contrato, los usuarios de blockchain enviarán solicitudes a su código para decidir si y cómo satisfacer estas solicitudes. En este ejemplo, como administrador de la base de datos del centro de contratos inteligentes de un libro de contabilidad financiera, también se deben realizar tres pasos: verificar si hay fondos suficientes, deducir fondos de una cuenta y agregarlos a otra cuenta.

Ambos modelos son efectivos, y cada uno tiene sus ventajas y desventajas, como discutí en profundidad anteriormente. En resumen, las restricciones de transacción en forma de Bitcoin proporcionan un rendimiento y concurrencia superiores, mientras que los contratos inteligentes de estilo Ethereum brindan una mayor flexibilidad. Por lo tanto, la pregunta vuelve a qué son los contratos inteligentes: los contratos inteligentes no se pueden implementar con restricciones de transacción para casos de uso de blockchain.

Dado el estándar de los contratos inteligentes, no lo he visto convertirse en un caso de uso poderoso en línea con la autoridad de la cadena de bloques. Todas las aplicaciones persuasivas de blockchain que conozco usan transacciones de bitcoin, que pueden manejar permisos de administración y almacenamiento general de datos, así como la creación, transferencia, custodia, transacción y eliminación de activos. Sin embargo, todavía están surgiendo nuevos casos de uso. Incluso si alguien necesita el poder de los contratos inteligentes, no me sorprendería. En otras palabras, al menos una extensión del modelo de Bitcoin.

Independientemente de la respuesta, la clave para recordar es que los contratos inteligentes son solo una forma de restringir las transacciones realizadas en la base de datos. Sin duda, esto es algo útil y es la clave para que la base de datos sea segura para compartir. Pero los contratos inteligentes no pueden hacer nada y, por supuesto, no pueden escapar de los límites de su base de datos.

Publicó 150 artículos originales · elogió 149 · 810,000 visitas

Supongo que te gusta

Origin blog.csdn.net/chaishen10000/article/details/102589295
Recomendado
Clasificación