Contratos de Ethereum Oracle: ¿Podemos confiar en Oracle?
Publicado: 2022-03-11Este artículo es la parte final de una serie de tres partes sobre el uso de los contratos del oráculo de Ethereum.
- La primera parte fue una introducción a cómo configurar, ejecutar y probar el código con truffle framework.
- La segunda parte analizó un poco el código y lo usó como punto de partida para la discusión sobre algunas de las características de diseño y código de Solidity.
Ahora, en esta parte final me gustaría hacer las preguntas: ¿qué acabamos de hacer y por qué? Y trate de proporcionar algunas vías de pensamiento que, con suerte, provoquen la reflexión. El jurado todavía está muy deliberado sobre cómo el uso de oráculos se relaciona con la falta de confianza, y qué significa realmente la palabra "falta de confianza" en relación con blockchain, en el uso del mundo real. A medida que traemos algunas de estas ideas de su forma conceptual al uso práctico, nos veremos obligados a luchar y aceptar preguntas como esta. Vamos a empezar.
Resumen: ¿Por qué necesitamos un oráculo de Ethereum?
Esto llega al corazón mismo de la naturaleza de la ejecución de código en la cadena de bloques. Para satisfacer los requisitos de inmutabilidad y determinismo, y como un artefacto de la forma en que los nodos de la cadena ejecutan el código, un contrato inteligente no puede llegar directamente fuera de la cadena de bloques para hacer nada bien.
Para la mayoría de los programadores, este hecho introduce una forma de pensar muy poco natural. Si necesitamos datos de algún lugar, normalmente simplemente nos conectamos a ese lugar y los extraemos. ¿Un contrato inteligente que necesita datos del informe meteorológico? Simplemente conéctese a una fuente meteorológica. Pero no; un contrato inteligente de blockchain absolutamente no puede hacer esto; si algunos datos no están ya en la cadena de bloques, el código del contrato no tiene acceso a ellos en el momento de la ejecución. Entonces, la solución es tener los datos necesarios ya existentes en la cadena de bloques, en el momento de la ejecución del contrato. Esto requiere una maquinaria externa que, en lugar de introducir datos en la cadena, introduzca datos en la cadena, específicamente para que los utilicen otros contratos. Esa maquinaria externa es el oráculo. Los datos enviados a la cadena se envían a un contrato de Oracle, que presumiblemente ha hecho provisiones para compartirlos con otros contratos. Un ejemplo de esa configuración es precisamente lo que hemos creado y examinado en las dos partes anteriores de esta trilogía de artículos.
Agujeros de seguridad deslumbrantes
Para mí, el tema central involucrado en todas las cadenas de bloques públicas es la palabra T: confianza. En su forma más pura, lo que estos sistemas están haciendo es lo mejor para garantizar (no es posible una garantía perfecta en este mundo, pero lo más cerca posible) de que no tenemos que confiar ciegamente en ninguna de las partes. Es posible que el lector astuto ya haya cuestionado algunos de los evidentes agujeros de seguridad en el ejemplo de Boxing Bets. Me gustaría centrarme en aquellos que serán más importantes para nuestra discusión sobre la falta de confianza y cómo se relaciona con el uso de oráculos con contratos inteligentes.
1. El propietario/mantenedor del contrato de apuestas puede ser corrupto
A partir de la línea 58 de BoxingBets.sol tenemos la siguiente función:
/// @notice sets the address of the boxing oracle contract to use /// @dev setting a wrong address may result in false return value, or error /// @param _oracleAddress the address of the boxing oracle /// @return true if connection to the new oracle address was successful function setOracleAddress(address _oracleAddress) external onlyOwner returns (bool) { boxingOracleAddr = _oracleAddress; boxingOracle = OracleInterface(boxingOracleAddr); return boxingOracle.testConnection(); }
Debería quedar bastante claro lo que esto permite. El propietario del contrato (y solo el propietario del contrato) puede, en cualquier momento y sin restricciones, cambiar el oráculo que se utiliza para servir los combates de boxeo y determinar los ganadores. ¿Por que eso es un problema? Si aún no es obvio para usted, esto le permite al propietario del contrato abusar deliberadamente del contrato para su propio beneficio.
Ejemplo: El próximo próximo combate de boxeo es Soda Popinski vs. Glass Joe. La soda es la clara favorita por un amplio margen. Todo el mundo apuesta por Soda. Toneladas de dinero en juego. Yo, el dueño del contrato, decido hacer una rápida. Justo antes de que se decida el partido, cambio el oráculo por uno malicioso, que es idéntico al oráculo oficial excepto que está codificado para declarar a Glass Joe como el ganador. Declara Glass Joe, gano todo el dinero y nadie puede detenerme. Después de eso, tal vez nadie vuelva a confiar en mi contrato, pero supongamos que no me importa; tal vez escribí y publiqué el contrato con el único propósito de llevar a cabo ese atraco.
¿Cuáles son algunas alternativas?
1. No permitas que se cambie el oráculo
El problema que hemos identificado anteriormente surge del hecho de que permitimos que el propietario del contrato cambie el oráculo. Entonces, supongamos que codificamos la dirección de Oracle y no permitimos que se cambie en absoluto. Bueno, en realidad podemos hacer eso, no está fuera de discusión. Pero luego surge la pregunta, ¿qué pasa si ese oráculo se cierra, deja de proporcionar datos por cualquier motivo? Entonces tendremos que conseguir un nuevo oráculo. ¿O qué pasa si ese oráculo, en el que inicialmente se confiaba, resulta corrupto y ya no se confía en él? Nuevamente, querremos cambiar a un nuevo oráculo. Si codificamos el oráculo, entonces la única forma de cambiar el oráculo es lanzar un nuevo contrato que use un oráculo diferente. Ok, de nuevo, podemos hacer esto. No está fuera de discusión. Tenga en cuenta, por supuesto, que los contratos inteligentes no se pueden actualizar tan fácilmente como, por ejemplo, un sitio web. ¿No sería eso fácil? Si nota un error o un agujero de seguridad, simplemente lo repara y nadie se da cuenta. El modelo de implementación de contrato inteligente está un poco más cerca del modelo de software empaquetado; una vez que el software está en manos del usuario, está ahí y no se puede arreglar. Debe solicitar al usuario que se actualice manualmente. Los contratos inteligentes son un poco similares. Una vez que ese contrato está en la cadena de bloques, es inmutable como el resto de la cadena de bloques, excepto en las partes en las que ha escrito lógica para que sea mutable.
Sin embargo, esto no es necesariamente un bloqueador; ahora hay muchos modelos y escuelas de pensamiento sobre cómo hacer que un contrato inteligente sea modificable. Este tema sería un artículo decente en sí mismo, pero por ahora puede consultar este artículo de Hackernoon, así como este artículo sobre estrategias de contratos inteligentes.
¿Cómo sería eso desde la perspectiva de un usuario? Digamos que estoy considerando hacer una apuesta en el próximo partido de Don Flamenco. Puedo ver claramente que el contrato codifica sin complicaciones un oráculo que ya conozco y en el que confío (bueno, confío lo suficiente como para hacer una apuesta de cierto tamaño). Eso es todo. Bastante simple. Si el propietario del contrato publica una nueva versión del contrato con un nuevo oráculo, todavía (debería) tener la libertad de continuar usando el anterior. Bien quizás. Depende de cómo se manejó la actualización. Si el contrato fue inhabilitado o destruido, es posible que no tenga suerte. Pero en el caso de la vainilla, aún debe permanecer.
2. Bloquee el oráculo por la duración
Podemos agregar alguna complicación al código (no es realmente deseable que un ejemplo sea demasiado complejo, pero para una solución del mundo real es posible que deseemos el beneficio que brinda esta complejidad) para mitigar travesuras como la descrita anteriormente. Creo que algo muy razonable sería agregar un código que "bloquearía" el oráculo durante la duración de la apuesta. Para decirlo de otra manera, la lógica del contrato podría garantizar de una manera muy clara y simple, que cualquier oráculo que estuviera presente cuando hice la apuesta debe ser el mismo oráculo que se usa para determinar el ganador. De modo que incluso si el oráculo cambia mientras tanto, para otros partidos, para mi partido y para mi apuesta, debe permanecer igual en todo momento. Esto va de la mano con permitir que el usuario sepa quién es el oráculo.
Veamos un ejemplo rápido para ilustrar esto. soy un usuario Estoy considerando hacer una apuesta en la próxima pelea de Little Mac. Hay una instalación en el contrato que me permite inspeccionar el oráculo que se utilizará para determinar el ganador de este partido. Verifico que el contrato es un conocido presentado por Nintendo Sports. Me siento lo suficientemente confiado en ese oráculo. (Para agregar un poco más de complejidad, tal vez el contrato permita a los usuarios elegir entre una variedad de oráculos disponibles para una coincidencia determinada). Ahora puedo inspeccionar el código del oráculo y ver que la lógica del oráculo garantiza que ese mismo oráculo se utilizará para determinar el resultado de la partida. Así que yo, como apostante, tengo al menos esa seguridad. No excluye el hecho de que mi oráculo pueda ser malo (es decir, corrupto o no confiable), pero al menos me asegura que no se puede cambiar en segundo plano.
Un riesgo aquí sería que el oráculo quede "fuera del negocio" (deje de ser mantenido o actualizado) entre el momento en que hago la apuesta y se decide el partido. El dinero podría quedar bloqueado en el contrato y volverse irrecuperable. Para eso, podríamos (tal vez) incluir una cláusula de activación temporal en el contrato, en la que si un partido no está decidido en un momento o fecha determinados (podría ser parte de la definición del partido), se considera "muerto" y todo el dinero encerrado dentro se devuelve a los apostantes.
3. Deje que el oráculo sea definido por el usuario
Una opción aún más complicada (pero posiblemente más interesante) sería dejar la dirección del oráculo "en blanco", en cierto sentido, para permitir a los usuarios especificar sus propios oráculos y formar sus propios grupos de apuestas (a través del contrato) en torno a esos oráculos. Grupos de usuarios que estén usando el mismo oráculo podrían apostar juntos siguiendo la lógica del contrato. Eso hace que el usuario tenga la responsabilidad de elegir un oráculo en el que confíe y compartir ese oráculo con otros usuarios de ideas afines. De hecho, fragmenta la comunidad de apuestas, por lo que solo funcionaría si hubiera una gran base de usuarios; de lo contrario, habría muy pocos apostadores involucrados para que las apuestas fueran realmente interesantes y rentables. Si soy la única persona que apuesta con mi oráculo favorito, ¡no hay mucho incentivo allí! Pero por otro lado, asume la responsabilidad de elegir un oráculo de confianza del dueño del contrato, y él puede lavarse las manos de eso. Si algunos usuarios encuentran que un oráculo no es confiable, simplemente dejarán de usarlo y cambiarán a otro, y nadie se enojará con el propietario del contrato. Simplemente proporcionó la arena de apuestas y realizó su servicio con honor.
A la complicación de esta estrategia se suma el hecho de que de alguna manera tendríamos que dejar que un lote orgánico de oráculos 'creciera' en la naturaleza, y que se ajusten exactamente a esta solución. Tendríamos que transmitir al mundo la interfaz exacta a la que deben adherirse los oráculos potenciales, y esperar que surja un número suficiente de ellos para darle al usuario alguna opción. Tal vez podríamos sembrar el lote con uno o dos de los nuestros. Si no se necesita, entonces no tenemos DApp de apuestas. Pero si es así, tengo que admitir que la idea de oráculos cultivados orgánicamente y seleccionados por el usuario en la naturaleza es una solución interesante y atractiva.
2. El propietario/mantenedor del oráculo podría estar corrupto
Corrupto, es decir, en el sentido de indigno de confianza; que es probable que el propietario/mantenedor/gerente del oráculo proclame un resultado incorrecto para un partido, con el fin de enriquecerse.
Ejemplo: soy el propietario/mantenedor del oráculo real que alimenta datos de boxeo en la cadena de bloques para que los use el contrato de apuestas. Mi oráculo no está directamente involucrado en ninguna apuesta o gestión de apuestas. Su trabajo es simplemente proporcionar datos, que el contrato de apuestas (y tal vez cualquier número de otros contratos) puede usar. Sin embargo, personalmente puedo hacer una apuesta usando el contrato de apuestas que a su vez usa mi oráculo; Soy anónimo de todos modos, así que no tengo miedo de represalias. Una vez que he apostado por un contrato de este tipo, existe un claro conflicto de intereses. Específicamente, la honestidad con la que actualizo mi oráculo con información verdadera y precisa puede estar en conflicto con mis acciones de apuestas.
Así que digamos que en el próximo partido Sandman/von Kaiser, en el que von Kaiser es el perdedor masivo, sigo adelante y hago una gran apuesta por von Kaiser. Cuando von Kaiser pierde como se esperaba, ¡uso mi oráculo para proclamarlo falsamente como el ganador! El contrato de apuestas se ejecuta como debería (no hay forma de detenerlo en este punto), hago un asesinato en el partido, no hay recurso ni forma de castigarme, y la vida continúa. Quizás, después de eso, la gente se niegue a usar más mi oráculo; tal vez no me importa.
como podemos prevenir esto?
Ahora estamos en una pregunta mucho más grande y que va directamente al corazón de la llamada falta de confianza en lo que se refiere a los oráculos. Se confía en que el oráculo sea un tercero neutral o incluso un tercero de confianza. El problema es que el oráculo está dirigido por humanos. Otro problema más es que el oráculo ejerce un gran control sobre cómo el contrato del cliente realiza sus funciones, ya que proporciona los datos sobre los que actúa el contrato. ¿Cómo podemos saber que podemos confiar en un oráculo determinado?
¿Por qué debemos confiar en cualquier oráculo?
Si toda la idea de los contratos inteligentes de blockchain es eliminar la necesidad de confiar en alguien, ¿el hecho de que debemos "confiar" en un oráculo no va en contra de la falta de confianza? Bueno, yo diría: ¡es hora de crecer, hijo (o hija)! No existe la falta de confianza pura, y blockchain no proporciona un entorno sin confianza. Blockchain es una capa que facilita las interacciones humanas. Las interacciones humanas siguen siendo el núcleo o el resultado final, y las interacciones humanas no pueden carecer de confianza.

Enlace: El problema de Oracle
La evolución de la confianza
En los albores de los tiempos, ¿cómo podría confiar en otro ser humano? Supongamos que estoy cazando mamuts y ese tipo dice que me ayudará a cazar mamuts a cambio de la mitad de la carne. ¿Cómo puede confiar en que yo le daré la mitad? ¿Cómo puedo confiar en que no me golpeará en la cabeza y se llevará todo el mamut, una vez que termine la cacería?
En aquellos tiempos, la amenaza de la violencia probablemente estaba en el centro de muchos tipos de confianza socioeconómica. Si trato de robar la parte de ese tipo, estoy seguro de que tratará de atacarme y eso implica un riesgo para mí. Incluso si me siento seguro de que ganaría en una pelea con él, yo (como hombre de las cavernas) sé lo suficiente sobre peleas para saber que cualquier cosa puede pasar, y fácilmente podría sufrir una lesión que ponga en peligro la vida, incluso si técnicamente gano. Siempre es un riesgo y una inversión de energía. En ese mundo, eso podría ser suficiente para mantener a la gente honesta.
En general, no haré trampa porque hacerlo no es lo mejor para mí , en general y en promedio. En otras palabras, el resultado esperado de hacer trampa es menor que el resultado esperado de cooperar.
Si ese no es el caso, o si los actores perciben que este no es el caso, posiblemente uno o más simplemente optarán por no participar. Por ejemplo, si veo que el otro tipo es un gigante de 9 pies de alto con cuernos y dientes monstruosos, podría elegir huir y no hacer ningún trato; el tipo parece demasiado peligroso para mí, simplemente podría robar lo que quiera con impunidad. Si estamos más o menos igualados, entonces percibimos que estamos en una situación en la que a ninguna de las partes le conviene hacer trampa, a ambos les interesa cooperar y, por lo tanto, suponiendo que ambas partes están cuerdas y son racionales, ambas partes cooperarán.
A medida que se desarrolló la cultura, también lo hicieron las interacciones humanas. Se volvieron menos violentos, aunque la amenaza implícita de la fuerza no desapareció. Las costumbres culturales dieron a la gente un mayor incentivo para cooperar y diferentes tipos de desincentivos para hacer trampa.
Avance rápido a una época de civilización temprana; Estoy haciendo un trato para comprar 100 fanegas de trigo. Es una especie de contrato de futuros primitivo; Estoy pagando hoy por el grano que recibiré cuando se coseche el próximo mes. Le doy al tipo mi moneda de cobre, nos damos la mano, compartimos un trago de cerveza de cebada y nos separamos hasta el próximo mes para la liquidación del contrato. Parece bien.
Me he puesto a merced de ese tipo; él tiene la cantidad total de mi dinero, y yo no tengo nada todavía. Entonces, ¿qué me hace sentir seguro de que cumplirá el contrato? Unas pocas cosas. El es un hombre de negocios; regularmente hace negocios con la población local. Ha hecho negocios con personas que conozco, y siempre ha entregado de manera justa ya tiempo. Tiene fama de honesto. Además, sé que tiene un desincentivo para hacer trampa. Se gana la vida principalmente por el hecho de que es conocido por ser un comerciante honesto. Si me engañara, se lo haría saber a todo el mundo, y esto dañaría su buena reputación y, por lo tanto, su negocio. La cantidad de dinero que gana al engañarme sería pequeña en comparación con la cantidad futura que podría dejar de ganar si su base de clientes lo abandonara. Así que sé que no es necesariamente lo mejor para él engañarme.
Esto es genial; la amenaza de fuerza o violencia está ausente en la imagen de arriba. Excepto por dos cosas:
- La amenaza de la fuerza no está del todo ausente. Otro desincentivo para hacer trampa podría ser pensar en lo que hará un tipo engañado. Tengo armas y amigos leales a mí. Yo, como parte enfadada y enfadada, podría recurrir a la fuerza. ¡Así es como comienzan las guerras de clanes!
- También puede existir un sistema de gobierno de algún tipo, que evaluará los detalles del caso y posiblemente multará al comerciante o lo encarcelará. Su desincentivo estándar respaldado por el gobierno siempre está respaldado por la amenaza de la fuerza, porque el castigo subyacente por negarse a pagar la multa, negarse a ir a la cárcel, negarse a cumplir con todas las medidas, es en última instancia la fuerza. Y eso se prolonga hasta el día de hoy. Si me niego a pagar una multa, puedo ser arrestado. Si me niego a ser arrestado, se usará la fuerza en mi contra y se me puede encarcelar en contra de mi voluntad o incluso matarme (si mi resistencia es lo suficientemente terca). ¡Allí vemos la amenaza de la fuerza a solo dos pasos de distancia, incluso por una infracción menor!
Confianza descentralizada hoy
Avance rápido hasta el día de hoy. ¿Cuáles son los desincentivos para romper un contrato? ¿Son muy diferentes del escenario anterior?
La empresa X tiene un reembolso por correo por la compra de este producto. ¿Por qué confías en que cumplirán con esto? Igual que en el ejemplo anterior; la empresa tiene poco que ganar haciendo trampa en una cantidad insignificante y mucho que perder si daña su reputación. Esta es la base detrás de muchos escenarios de confianza y lo ha sido durante mucho tiempo. Y nuevamente, como en el ejemplo del comerciante de granos, existe la amenaza de la fuerza, aunque en este caso, no se va a llegar a eso. La empresa puede ser multada o castigada con una demanda colectiva, y la empresa debe pagar la multa o enfrentar castigos peores. Esos castigos están respaldados por un gobierno, que a su vez está respaldado por la amenaza de la fuerza, tanto económica como militar, aunque posiblemente podríamos considerar que la amenaza de la fuerza económica está respaldada a su vez por la fuerza militar, es decir, la violencia.
Sistemas Tradicionales
¿El modelo de contratos respaldados por la aplicación de la fuerza sancionada por el gobierno ha servido bien a la humanidad durante miles de años? ¿O lo tiene? Bueno, lo ha hecho, pero es una progresión natural. En ausencia de gobierno, grupos de personas forman gobiernos. Casi parece que no se puede impedir que la gente forme gobiernos; formarán.
Entonces, ¿qué pasa con los contratos inteligentes de blockchain? ¿Cómo aseguran la cadena de bloques y el modelo de contrato inteligente la confiabilidad o desincentivan las trampas? No se limite a decir "falta de confianza", ¡esa no es una respuesta! En nuestros ejemplos anteriores, hacer trampa se desincentiva de alguna manera.
Echemos un vistazo más de cerca a cómo la cadena de bloques cumple (o reemplaza) esa función.
Sistemas de cadena de bloques: Bitcoin
Para dividir esta gran pregunta en preguntas más pequeñas, comencemos con bitcoin. ¿Cómo desincentiva bitcoin las trampas? Soy libre de ejecutar cualquier software de nodo de bitcoin que desee, siempre que parezca adherirse a los protocolos de la red de bitcoin. Nadie me disuade de ejecutar mi propio nodo de bitcoin casero que hace lo que quiere mientras se adhiere a los protocolos de red; ¿Hay alguna forma en que pueda usar eso para obtener ganancias ilícitas?
Claro, puedo liberar cualquier tipo de transacción en la red de bitcoin para su aprobación. Puedo liberar una transacción que me envíe todos sus bitcoins, liberarlos en la red, esperar a que se agreguen a un bloque y wow, ¿ahora todos sus bitcoins me pertenecen ? No, debido al cifrado.
No tengo su clave privada y dicha transacción debe firmarse con su clave privada. Entonces, estoy bloqueado allí por criptografía. ¿O soy yo? ¿Quién dice que tal transacción debe ser firmada? ¿Qué pasará si lo pruebo? Bueno, lo que sucederá, por supuesto, es que toda la red de bitcoins rechazará mi transacción. ¿Por qué alguien lo aceptaría? Además del hecho de que todos ejecutan nodos estándar, lo que lo rechazará sin más, ¿por qué me ayudarían a hacer trampa? Si lo hace, sin duda socavará la integridad de la red de bitcoin y, al hacerlo, socavará su propia cripto-riqueza. Entonces no tiene sentido que me ayuden a mí, un extraño anónimo, a engañar a otro extraño anónimo. Incluso si un actor irracional de alguna manera acepta mi transacción no válida, la gran mayoría de la red de bitcoin la rechazará y no tiene ninguna posibilidad. Ha vuelto a vencer, esta vez por números absolutos.
¿Qué pasa si, sin embargo, soy una poderosa operación minera? Seguramente ahora tengo más poder para arreglar las cosas a mi favor. Lo hago, pero todavía no me da nada cercano al poder absoluto. Incluso como un minero poderoso, si controlo menos del 50% de la red, no puedo hacer mucho. Tengo cierto poder para elegir el orden en que se agregan las transacciones a los bloques, pero ese no es el poder para acuñar o robar monedas. Incluso si controlo más del 50% de la red (suponiendo aquí que el lector esté al tanto del conocido ataque del 51% en relación con la prueba de trabajo como en bitcoin), mi poder principal sería el doble de gasto. Si bien es un poder genial, es muy cuestionable si me conviene hacerlo, ya que socavaría la integridad de bitcoin. Parece probable que estaría mejor usando mi control para extraer todas las monedas, ganando así más dinero y defendiendo el terreno sobre el que se asienta esa riqueza. Por lo tanto, no estoy vencido, pero mi impulso de hacer trampa se ve obstaculizado por un desincentivo que está integrado orgánicamente en el protocolo. Y ese desincentivo se sustenta básicamente en la fuerza de los números; el abrumador consenso de los participantes en la red bitcoin.
Contratos inteligentes de blockchain y contratos de Oracle
¿Qué son los contratos inteligentes? Supongamos que implementé un contrato engañoso para engañar a las personas para que me enviaran su dinero. ¿O supongamos que desplegué un contrato de apuestas y usé uno de los ataques (si se les puede llamar así) descritos anteriormente? Puedo hacer eso, podría engañar a algunas personas; Yo, como actor deshonesto, podría obtener una pequeña ganancia de tal esfuerzo. La defensa contra esto sería que cada participante considere cuidadosamente (como se debe hacer con cualquier contrato) el contrato en el que están a punto de ser parte y las posibles formas en que se puede abusar de él. También deben considerar la fuente: qué saben, si es que saben algo, sobre la parte que publica y mantiene el contrato y cualquier oráculo asociado o contratos asociados. Uno esperaría que un contrato deshonesto no durara mucho antes de que la red lo marcara informalmente como deshonesto, lo que provocaría que los participantes lo evitaran voluntariamente y lo cortaran. La red es grande y la palabra viaja rápidamente.
Excepto en algún momento, todavía necesitas confiar en un ser humano. Los datos para el contrato de apuestas son proporcionados por un oráculo. El oráculo es mantenido por un humano. No importa cuántas capas agregue en un intento de mantener la red honesta, en algún momento vuelve a ser humano. Entonces, ¿en qué tipo de oráculo confiaría usted, dado nuestro ejemplo de apuestas? Confiaría en un oráculo que tuviera más que perder que ganar, haciendo trampa. Ejemplo: imagina que ESPN o una cadena similar fueran los patrocinadores del oráculo. Esperaría que ellos, más que nadie, proporcionen datos honestos, ya que ganar ilícitamente una pequeña cantidad en una apuesta de boxeo se vería eclipsado por la pérdida de reputación resultante. En este caso, su confianza está bien depositada por la misma razón por la que confiamos en el honesto comerciante de granos. Ese tipo de acuerdo de fideicomiso es antiguo y está bien establecido.
Entonces, ¿qué hemos ganado con el uso de contratos inteligentes? ¿En qué se diferencian los contratos inteligentes de la gobernanza o de los métodos anteriores de mantenimiento de contratos?
Terminando
Solo para hacer un punto, para dar que pensar y discutir, y para concluir mi artículo, voy a presentar algunas observaciones simples, en lugar de conclusiones duras. Porque para un tema de esta complejidad, una conclusión concisa se siente como una especie de historia y una simplificación excesiva. Las observaciones que voy a presentar (y siéntanse libres de discutirlas/refutarlas/contradecirlas) son las siguientes:
- La confianza basada en la suposición de que la otra parte tiene más que ganar cooperando que haciendo trampa es antigua, funciona en situaciones prácticas y no ha desaparecido. Todavía es inherente en ciertos casos en el mundo de la cadena de bloques, aunque quizás eliminado en muchos casos. En el caso de nuestro ejemplo de oráculo, todavía está vivo y bien.
- La confianza basada en la amenaza de la fuerza o la violencia también ha sido inherente a la sociedad humana desde tiempos inmemoriales, pero está notablemente ausente de nuestro modelo de contrato inteligente y ha sido reemplazada por la aplicación a través de combinaciones inteligentes de cifrado y consenso de grandes números.
Desafío a otros desarrolladores de Ethereum a hacer dos cosas:
- Piense en cualquier forma, en los sistemas de cadenas de bloques públicas (como bitcoin o ethereum), en las que cualquier cosa se impone mediante la amenaza implícita o explícita de la fuerza.
- Piense en cualquier sistema de reglas importante en el derecho contractual o financiero moderno, que no se hace cumplir de alguna manera por la amenaza explícita o implícita de la fuerza.
Algo viejo, algo nuevo
Y creo que aquí hemos llegado a la principal diferencia y, de hecho, a la verdadera razón por la que decimos que los sistemas de cadena de bloques son "revolucionarios", en comparación con los sistemas del pasado. En mi forma de pensar, no es falta de confianza en absoluto, sino más bien una plataforma más estable para la confianza y, sobre todo, una que no depende en absoluto de la amenaza de la fuerza o la violencia.
Por un lado, tenemos la vieja y comprobada garantía de beneficio mutuo en situaciones en las que faltan incentivos para hacer trampa. Eso no es nada nuevo. Lo nuevo es la introducción del consenso asistido por cifrado, que ayuda a desalentar las trampas y mantener la honestidad del sistema. Y la síntesis de estos dos elementos ha producido algo realmente notable, posible por primera vez en la historia de la humanidad: un sistema utilizable por grandes grupos anónimos, en el que en ningún lado se encuentra la amenaza explícita o implícita de la fuerza como desincentivo o castigo. . Y eso, creo, es lo verdaderamente sorprendente. Si se pasa por alto ese aspecto, lo que tenemos es una nueva tecnología ingeniosa (que, lo admito, es lo suficientemente genial como es). Pero cuando se considera ese aspecto, es evidente que hemos entrado en una nueva era de gobierno.