Contenido


Extender contratos inteligentes de blockchain con lógica que está fuera de la cadena

Instalar un servicio de nube como IBM ODM en vez de preguntar a un oráculo confiable

Comments

Este artículo presenta dos maneras de reforzar los contratos inteligentes con la lógica que se obtiene fuera de los límites típicos de blockchain, mientras se preservan la confianza y la transparencia que definen a las redes blockchain.

En las redes empresariales que aprovechan la tecnología blockchain, las transacciones se ejecutan según las reglas contenidas en un contrato inteligente. Los contratos inteligentes están codificados en un lenguaje de programación y se implementan en la plataforma de tiempos de ejecución de blockchain. Por ejemplo, los contratos inteligentes para el tiempo de ejecución de Hyperledger Fabric se pueden codificar en el lenguaje de programación Go o en JavaScript (en Fabric v1.1).

Antes de implementar e instanciar los contratos inteligentes, estos pasan a través de los mismos procesos de evaluación y aprobación que las transacciones normales antes de ser asignados al libro contable compartido. Los participantes de la red que son propietarios y administran los nodos de pares utilizan revisiones de código para validar y verificar que las reglas y la lógica empresarial de un contrato inteligente sean válidas antes de que el mismo entre a formar parte de la red de blockchain.

Cuando los contratos inteligentes no son tan inteligentes como deberían ser

La validación y verificación de los contratos inteligentes crean transparencia e incrementan la visibilidad de los procesos y reglas que gobiernan las transacciones que se ejecutan en la red. Por lo tanto, lo ideal es que toda la lógica de las transacciones esté encapsulada en contratos inteligentes para garantizar que todos los pares que participan en el proceso de aprobación de las transacciones ejecuten el mismo código.

Sin embargo, hay escenarios en los que es posible que un contrato inteligente no tenga todo el conocimiento necesario para finalizar el proceso de una transacción. Por ejemplo, es posible que un contacto inteligente tenga que obtener información volátil (como el precio de una acción) en el tiempo de ejecución y desde un sistema externo. O que las reglas empresariales que gobiernan una transacción sean tan intrincadas y complejas que externalizarlas sería más apropiado. Este tipo de situaciones nos traen a la cabeza la siguiente pregunta:

¿Cómo de factible es extender los contratos inteligentes con lógica que está fuera de la cadena?

Dos maneras de utilizar lógica que está fuera de la cadena

En este artículo, presentamos dos mecanismos para implementar lógica que está fuera de la cadena y, así, mantener la confianza, visibilidad y transparencia que caracterizan el servicio para una red de blockchain:

  • Extender las delimitaciones operativas de un contacto inteligente a un sistema de terceros (por ejemplo, IBM Operational Decision Manager, ODM). En este modelo, los pares de blockchain invocan un servicio de un tercero que está situado en el mismo sitio de ellos. La suposición subyacente es que el resultado de la invocación es determinista.
    Figura 1. Extender las delimitaciones operativas de un contacto inteligente a un servicio de terceros, como ODM
    Pares que invocan un servicio de un terceros
    Pares que invocan un servicio de un terceros
  • Presentación de un oráculo al que los contratos inteligentes pueden invocar. En este modelo, el oráculo es un programa de terceros confiable que responde a preguntas de una forma determinista sin saber todo el contexto de la transacción. En otras palabras, se preservan la privacidad y la confidencialidad.
    Figura 2. Introducir un oráculo confiable
    Contratos inteligentes invocando un oráculo confiable
    Contratos inteligentes invocando un oráculo confiable

En las siguientes secciones se cubren las consideraciones para ambos modelos.

1

Cómo extender los límites operativos del contrato inteligente

Asumamos que una organización utiliza IBM Operational Decision Manager (ODM) para implementar y alojar muchas reglas empresariales complejas. Vamos a suponer también que esta organización planea crear una nueva red de blockchain que incluirá participantes de otras empresas.

Una opción para esta organización es reimplementar las reglas empresariales que actualmente residen y se ejecutan dentro de IBM ODM como varios contratos inteligentes e implementarlos en la plataforma que tiempos de ejecución de blockchain.

Desde un punto de vista puramente técnico, esta parece ser la solución ideal. Pero ¿es factible reimplementar cientos o miles de reglas que han sido probadas y validadas, y que se sabe que funcionan según lo esperado? Hacerlo podría ser costoso para la organización, y fácilmente se podrían producir errores en la reimplementación de esas reglas como contratos inteligentes. Otro posible inconveniente de reimplementar y desplegar dichas reglas como contratos inteligentes es que la gente de negocios está acostumbrada a actualizar y validar las reglas a través de la infraestructura de usuario de IBM ODM, con lo que perderían esta flexibilidad.

Evitar la reinvención de la rueda

Una opción más viable para esta organización es aprovechar las reglas existentes que están implementadas en IBM ODM desde el contexto de los contratos inteligentes:

  1. Cada organización de la red empresarial tiene, junto con cada par, su propia instancia privada de IBM ODM.
  2. Los contratos inteligentes invocan reglas empresariales que residen en IBM ODM. El resultado que IBM ODM devuelve después se utiliza en contratos inteligentes para realizar cálculos adicionales o para actualizar el libro contable compartido.
  3. Cada organización de la red despliega la misma versión del código de las reglas empresariales en sus instancias de IBM ODM para asegurarse de que cuando se ejecuten los contratos inteligentes, la red pueda llegar a un consenso.
  4. El proceso para instalar y actualizar el código que se ejecuta en las instancias de IBM ODM no sigue el típico proceso de despliegue que se utiliza para IBM ODM. (Si se utilizase el proceso de despliegue típico, podrían surgir potenciales problemas de confianza entre las organizaciones de la red. Por ejemplo ¿sabrían con seguridad que todas las instancias de IBM ODM que invocan los contratos inteligentes de la red blockchain están ejecutando exactamente el mismo código?) Igual que el código del contrato inteligente está protegido contra manipulaciones dentro de la red blockchain, nadie debería ser capaz de manipular la lógica de las reglas empresariales que se ejecutan dentro de IBM ODM.
  5. La instalación y la actualización del código que se ejecuta en IBM ODM ocurren dentro del contexto de una transacción de la red blockchain. Esto asegura que todas las instancias de IBM ODM de toda la red tienen la misma versión de la lógica/reglas empresariales. El elemento binario del archivo del conjunto de reglas (es decir, el artefacto de IBM ODM que contiene la lógica/reglas empresariales), se envía junto con su número de versión a la red blockchain a través de una transacción, que después es atendida por un contrato inteligente que hace lo siguiente:
    • Almacena el archivo del conjunto de reglas en la base de datos de estados mundiales
    • Almacena la versión del conjunto de reglas
    • Despliega el conjunto de reglas en la instancia de IBM ODM que se está ejecutando en el par local

El enfoque arquitectónico anterior permite que las organizaciones aprovechen los artefactos existentes desde una solución de una red blockchain mientras garantizan que los mismos son a prueba de manipulaciones y que se pueden validar y evaluar cuando son instalados o actualizados.

Además, aunque nosotros nos enfocamos en IBM ODM, este enfoque arquitectónico es aplicable a otros componentes que contienen la lógica empresarial que reside fuera de la cadena. Por ejemplo, se puede utilizar un enfoque similar para aprovechar desde el tiempo de ejecución de una red blockchain, la lógica definida y ejecutada dentro de un proceso empresarial que se ejecuta dentro del contexto de IBM Business Process Manager.

Observe que, aunque este enfoque arquitectónico conserva la confianza que usted esperaría en una red blockchain network, conlleva costos adicionales y problemas operativos. Estos se deben principalmente a la configuración y al constante mantenimiento necesarios para los sistemas de terceros y que coexisten con los contratos inteligentes en los pares de la red.

2

Introducir un oráculo confiable

El enfoque arquitectónico descrito en la sección anterior brinda una forma confiable de externalizar reglas para decisiones complejas. Sin embargo, en el caso de información volátil (como el tipo de interés) ¿cómo podemos enriquecer de forma fiable un contrato inteligente con dicha información?

Una manera es delegando esta responsabilidad en la aplicación del cliente: la aplicación del cliente recupera el tipo de interés actual y lo incluye en la carga útil del contrato inteligente. Pero ¿por qué debería confiar la red en que la aplicación del cliente siempre va a brindar dicha información de forma confiable y precisa? Por eso, en vez de delegar esta responsabilidad en la aplicación del cliente, una opción mejor es:

  1. delegar el proceso para obtener información volátil en un tercero conocido como oráculo
  2. Decidir de manera determinista el valor a utilizar para una un fragmento de información volátil

Para que un oráculo funcione dentro de una red blockchain se deben cumplir algunas condiciones necesarias:

  • Varios aprobadores deben ser capaces de obtener del oráculo la misma respuesta para preservar el aspecto determinista de un contacto inteligente.
  • Se debe establecer un enlace duradero entre la ejecución del contrato inteligente y la respuesta del oráculo.
  • La confidencialidad de los datos se debe preservar donde sea necesario.

La arquitectura para este escenario

El siguiente diagrama muestra la arquitectura y la secuencia de eventos para aprovechar un componente del oráculo desde una red blockchain con varios participantes:

Figura 3. Cómo funciona un componente del oráculo con una red blockchain
Cómo funciona un componente del oráculo con una red blockchain
Cómo funciona un componente del oráculo con una red blockchain

En el diagrama anterior:

  1. una aplicación del cliente envía a la transacción a todas las organizaciones que tienen que aprobarla (tal como se especifica en la política de aprobación).  La aplicación del cliente ignora completamente que el contrato inteligente delegará una parte de la ejecución a un sistema externo.
  2. En paralelo, cada par aprobador de cada organización envía una solicitud al oráculo con suficiente información para que pueda correlacionar las diferentes solicitudes de los diferentes pares aprobadores. Esta estructura de la transacción muestra un enfoque potencial para hacerlo: El oráculo puede correlacionar las diferentes solicitudes de los diferentes pares aprobadores
    El oráculo puede correlacionar las diferentes solicitudes de los diferentes pares aprobadores

    La estructura de datos anterior utiliza un árbol de Merkle que incluye toda la información que se envía al contacto inteligente, aunque solo expone los campos que se deben compartir con el oráculo. Utilizar un árbol de Merkle permite tener rastreabilidad entre los parámetros de la información y la respuesta del oráculo. Observe que el el campo de vinculación se utiliza como forma exclusiva de identificar la transacción y al solicitante. Aunque, la creación de esta vinculación puede ser opcional ya que la fase de verificación y ejecución de Hyperledger Fabric atenderá los casos de pares en peligro.

  3. El oráculo utiliza el campo de vinculación (como se muestra en el siguiente diagrama) para correlacionar las solicitudes habituales y para garantizar la consistencia en la respuesta. El oráculo debe firmar la respuesta para evitar posibles manipulaciones. También se utilizará el Apache Kaftemaka para garantizar la ordenación de dichas solicitudes. El oráculo utiliza el campo de vinculación para correlacionar las solicitudes habituales
    El oráculo utiliza el campo de vinculación para correlacionar las solicitudes habituales

    La estructura de la respuesta del oráculo podría parecerse a la anterior, lo que incluye un enlace entre el hash de la solicitud y la respuesta, y también una firma del oráculo.

  4. Los pares aprobadores validan la firma del oráculo. La firma y todos los datos de la respuesta se deben preservar en el libro contable para proporcionar la capacidad de realizar auditorías.

En esta sección hemos supuesto la utilización de un mecanismo específico para interactuar por un oráculo, pero la red empresarial podría elegir integrarse con un oráculo comercial. Si así fuera, el proveedor del oráculo podría imponer el enfoque. Sin embargo, se seguirán aplicando las condiciones descritas al comienzo de esta sección.

Resumen y recomendaciones

Ahora sabe dos enfoques para implementar lógica de fuera de la cadena mientras preserva la confianza y la transparencia que requieren las redes blockchain.

El primer enfoque requiere instalar componentes de terceros en pares de la red. Esos componentes de terceros contienen lógica empresarial intrincada y compleja que se mantiene más fácilmente si está externalizada. Las instalaciones y actualizaciones de los artefactos que se ejecutan en esos componentes se realizan como transacciones de la red.

El segundo enfoque muestra una manera de utilizar un componente de un oráculo para ampliar los contratos inteligentes, y requiere de un enlace duradero entre los insumos del contacto inteligente y la respuesta del oráculo. Como algunos podrán observar, esta es una implementación diferente de las que utilizan otras tecnologías. En el siguiente artículo de esta serie, veremos las consideraciones adicionales para integrar un oráculo dentro de una red empresarial y observaremos diferentes alternativas.

Al igual que con el resto de soluciones, se debe ponderar el impacto no funcional que puede provocar la introducción de componentes adicionales.  Por ejemplo, debido a que la disponibilidad de un servicio es el producto de la disponibilidad de todos sus componentes, añadir más componentes a la cadena de la transacción afectará directamente al tiempo de actividad del servicio.  La latencia general de la transacción se ve afectada por similares preocupaciones. Teniendo eso presente, la externalización del contrato inteligente se debe considerar cuidadosamente.

El proceso para instalar y actualizar contratos inteligentes y cualquier punto de extensión que exista fuera de la cadena debe ser evaluado por los miembros de la red para garantizar que todos entienden correctamente sus términos y condiciones. Hacerlo debe formar parte del proceso de gobierno de la red. Requiere de un nivel de colaboración que va más allá de los límites tradicionales de una única organización y de las habilidades en tecnologías de la información, empresariales y legales. La decisión de externalizar las reglas empresariales fuera de los contratos inteligentes puede tener muchos beneficios, aunque se debe alinear con la madurez de los procesos del consorcio.

Permanezca atento a la entrega del segundo artículo de esta serie, donde examinamos consideraciones y alternativas adicionales para integrar un oráculo en una red empresarial

Siguientes pasos

  • Pruebe estas opciones para extender los contratos inteligentes en el IBM Blockchain Starter Plan, que actualmente es gratuito en su fase Beta. El Starter Plan brinda una forma fácil y económica de empezar a desplegar y desarrollar aplicaciones de blockchain en IBM Cloud. Cómo empezar con el Starter Plan.
     
  • Para ajustar su solución blockchain personalizada a sus necesidades empresariales, eche un vistazo al IBM Blockchain Workshop, donde puede convertir sus conceptos iniciales en prototipos listos para producción.
     
  • Para conocer más a fondo el asunto, este patrón de IBM Code muestra cómo crear y ejecutar contratos inteligentes con Hyperledger Composer. Eche un vistazo a los muchos otros patrones de código, que brindan hojas de ruta para solucionar problemas complejos con la tecnología blockchain, y que incluyen diagramas arquitectónicos, repositorios de código y lecturas adicionales.
     
  • Permanezca actualizado con el boletín de noticias mensual de Blockchain Newsletter para desarrolladores. Vea la edición actual y suscríbase.
     
  • Pase por el Centro de Desarrollo de Blockchain. Es una fuente de herramientas y tutoriales gratuitos, junto con soporte para el código y para la comunidad, para desarrollar y desplegar soluciones de blockchain para los negocios.
     
  • Aprenda más acerca de la arquitectura de las soluciones Blockchain en esta presentación de Slideshare; en particular, las diapositivas que van de la 55 a la 58 cubren el diseño de los contratos inteligentes con un motor de reglas externo, como IBM Operational Decision Manager.

Recursos para Descargar


Comentarios

Inicie Sesión o Regístrese para agregar comentarios.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Cloud computing
ArticleID=1063881
ArticleTitle=Extender contratos inteligentes de blockchain con lógica que está fuera de la cadena
publish-date=12122018