ES2870919T3 - Interfaz de software para contratos inteligentes - Google Patents

Interfaz de software para contratos inteligentes Download PDF

Info

Publication number
ES2870919T3
ES2870919T3 ES19725889T ES19725889T ES2870919T3 ES 2870919 T3 ES2870919 T3 ES 2870919T3 ES 19725889 T ES19725889 T ES 19725889T ES 19725889 T ES19725889 T ES 19725889T ES 2870919 T3 ES2870919 T3 ES 2870919T3
Authority
ES
Spain
Prior art keywords
smart contract
call
contract
interface
blockchain network
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES19725889T
Other languages
English (en)
Inventor
Yanpeng Li
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced New Technologies Co Ltd
Original Assignee
Advanced New Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced New Technologies Co Ltd filed Critical Advanced New Technologies Co Ltd
Application granted granted Critical
Publication of ES2870919T3 publication Critical patent/ES2870919T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3297Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving time stamps, e.g. generation of time stamps
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q2220/00Business processing using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes

Abstract

Un procedimiento implementado por ordenador para implementar una llamada a contrato inteligente en una red de cadena de bloques, comprendiendo el procedimiento: recuperar (402) una o más definiciones de contrato inteligente de la red de cadena de bloques, donde las definiciones de contrato inteligente incluyen una pluralidad de funciones de contrato de una pluralidad de contratos inteligentes almacenados en una cadena de bloques mantenida por la red de cadena de bloques; generar (404) una interfaz de contrato inteligente que represente las definiciones de contrato inteligente, donde la interfaz de contrato inteligente incluye una pluralidad de funciones de interfaz (306) correspondientes a la pluralidad de funciones de contrato, estando la interfaz de contrato inteligente configurada para permitir que aplicaciones de software (302) llamen a cada una de las funciones de contrato llamando a una función de interfaz correspondiente; recibir (406) una llamada a una función de interfaz particular desde una aplicación de software, donde la llamada incluye parámetros de llamada correspondientes a parámetros de una función de contrato particular correspondiente a la función de interfaz particular; en respuesta a la recepción de la llamada a la función de interfaz particular, generar (408) una llamada de contrato inteligente a la función de contrato particular que incluye los parámetros de llamada; y transmitir (410) a la red de cadena de bloques la llamada a contrato inteligente.

Description

DESCRIPCIÓN
Interfaz de software para contratos inteligentes
CAMPO TÉCNICO
Esta memoria descriptiva se refiere a proporcionar una interfaz de software para llamadas a contratos inteligentes.
ANTECEDENTES
Los sistemas de libro mayor distribuido (DLS), que también pueden denominarse redes de consenso y/o redes de cadena de bloques, permiten a las entidades participantes almacenar datos de forma segura e inmutable. Los DLS se denominan comúnmente redes de cadena de bloques sin hacer referencia a ningún caso de uso particular. Ejemplos de tipos de redes de cadena de bloques pueden incluir redes públicas de cadena de bloques, redes privadas de cadena de bloques y redes de consorcio de cadena de bloques. Una red de consorcio de cadena de bloques se proporciona a un grupo selecto de entidades, que controla el proceso de consenso, e incluye una capa de control de acceso.
Un contrato inteligente es un conjunto de instrucciones de software con un conjunto predefinido de reglas para varias partes en una red de cadena de bloques. Los contratos inteligentes son ejecutados por los nodos de la red de cadena de bloques y establecen las condiciones en las que todas las partes del contrato inteligente acuerdan interactuar entre sí. Además, un contrato inteligente puede ejecutarse siempre y cuando se cumplan todas las condiciones del contrato inteligente. Aunque los contratos inteligentes mitigan la necesidad de contar con terceros de confianza, la ejecución del contrato inteligente o de una o más funciones del contrato inteligente desde una aplicación de software es un proceso tedioso, meticuloso y propenso a errores. Sería deseable permitir a los desarrolladores de aplicaciones de software ejecutar las funciones de los contratos inteligentes de una manera más transparente y menos engorrosa.
RESUMEN
Las implementaciones de esta memoria descriptiva incluyen procedimientos implementados por ordenador para proporcionar una interfaz de software para llamadas a contratos inteligentes. Más en particular, las implementaciones de esta memoria descriptiva están dirigidas a generar un marco simplificado para llamadas a contratos inteligentes. Se analiza una estructura de cadena de bloques, y se generan una o más bibliotecas de software que incluyen funciones correspondientes a contratos inteligentes almacenados en la cadena de bloques. Las funciones pueden llamarse desde aplicaciones de software para iniciar la ejecución de la funcionalidad de los contratos inteligentes, simplificando así en gran medida el proceso de acceder a la funcionalidad de los contratos inteligentes desde las aplicaciones de software estándar.
Esta memoria descriptiva también proporciona uno o más medios de almacenamiento legibles por ordenador no transitorios acoplados a uno o más procesadores y que tienen instrucciones almacenadas en los mismos que, cuando se ejecutan por el uno o más procesadores, hacen que el uno o más procesadores realicen operaciones de acuerdo con implementaciones de los procedimientos proporcionados en el presente documento.
Esta memoria descriptiva proporciona además un sistema para implementar los procedimientos proporcionados en el presente documento. El sistema incluye uno o más procesadores y un medio de almacenamiento legible por ordenador acoplado al uno o más procesadores y que tiene instrucciones almacenadas en el mismo que, cuando se ejecutan por el uno o más procesadores, hacen que el uno o más procesadores realicen operaciones de acuerdo con implementaciones de los procedimientos proporcionados en el presente documento.
Se aprecia que los procedimientos de acuerdo con esta memoria descriptiva pueden incluir cualquier combinación de los aspectos y características descritos en el presente documento. Es decir, los procedimientos de acuerdo con esta memoria descriptiva no se limitan a las combinaciones de aspectos y características específicamente descritos en el presente documento, sino que también incluyen cualquier combinación de los aspectos y características proporcionados.
Los detalles de una o más implementaciones de esta memoria descriptiva se exponen en los dibujos adjuntos y en la siguiente descripción. Otras características y ventajas de esta memoria descriptiva serán evidentes a partir de la descripción y los dibujos, y de las reivindicaciones. La invención se divulga en las reivindicaciones adjuntas.
DESCRIPCIÓN DE LOS DIBUJOS
La FIG. 1 representa un ejemplo de un entorno que puede ser utilizado para ejecutar implementaciones de esta memoria descriptiva.
La FIG. 2 representa un ejemplo de una arquitectura conceptual de acuerdo con implementaciones de esta memoria descriptiva.
La FIG. 3 representa un ejemplo de un entorno que puede ser utilizado para generar el marco para ejecutar llamadas a contratos inteligentes.
La FIG. 4 representa un ejemplo de un proceso que puede ser ejecutado de acuerdo con implementaciones de esta memoria descriptiva.
La FIG. 5 representa ejemplos de módulos de un aparato de acuerdo con implementaciones de esta memoria descriptiva.
Los símbolos de referencia similares en los distintos dibujos indican elementos similares.
DESCRIPCIÓN DETALLADA
Las implementaciones de esta memoria descriptiva incluyen procedimientos implementados por ordenador para contratos inteligentes. Más en particular, las implementaciones de esta memoria descriptiva están dirigidas a generar un marco simplificado para llamadas a contratos inteligentes. En algunas implementaciones, las acciones incluyen recuperar definiciones de contratos inteligentes desde la red de cadena de bloques, donde las definiciones de contratos inteligentes incluyen una pluralidad de funciones de contrato de una pluralidad de contratos inteligentes almacenados en una cadena de bloques mantenida por la red de cadena de bloques; generar una interfaz de contrato inteligente que represente las definiciones de contratos inteligentes, donde la interfaz de contrato inteligente incluye una pluralidad de funciones de interfaz correspondientes a la pluralidad de funciones de contrato, estando la interfaz de contrato inteligente configurada para permitir que aplicaciones de software invoquen a cada una de las funciones de contrato invocando a una función de interfaz correspondiente; recibir una llamada a una función de interfaz particular desde una aplicación de software, donde la llamada incluye parámetros de llamada correspondientes a parámetros de una función de contrato particular correspondiente a la función de interfaz particular; en respuesta a la recepción de la llamada a la función de interfaz particular, generar una llamada de contrato inteligente a la función de contrato particular que incluye los parámetros de llamada; transmitir a la red de cadena de bloques la llamada a contrato inteligente; y recibir resultados de una ejecución de la llamada a contrato inteligente por la red de cadena de bloques y proporcionar los resultados a la aplicación de software.
Para proporcionar un contexto adicional para las implementaciones de esta memoria descriptiva, y como se ha introducido anteriormente, los sistemas de libro mayor distribuido (DLS), que también pueden denominarse redes de consenso (por ejemplo, formada por nodos de par a par) y redes de cadena de bloques, permiten a las entidades participantes realizar transacciones de forma segura e inmutable, almacenar datos y comunicarse con contratos inteligentes. El término cadena de bloques se utiliza en el presente documento para referirse, en general, a un DLS sin hacer referencia a ningún caso de uso particular. Como se ha introducido anteriormente, una red de cadena de bloques puede proporcionarse como una red pública de cadena de bloques, una red privada de cadena de bloques o una red de consorcio de cadena de bloques.
En una red pública de cadena de bloques, el proceso de consenso es controlado por nodos de la red de consenso. Por ejemplo, cientos, miles, incluso millones de entidades pueden cooperar en una red pública de cadena de bloques, cada una de las cuales hace funcionar al menos un nodo en la red pública de cadena de bloques. En consecuencia, la red pública de cadena de bloques puede considerarse una red pública con respecto a las entidades participantes. En algunos ejemplos, la mayoría de entidades (nodos) debe firmar cada bloque para que éste sea válido y se añada a la cadena de bloques (libro mayor distribuido) de la red de cadena de bloques. Ejemplos de redes públicas de cadena de bloques incluyen las redes de criptomonedas, que son redes de pagos entre pares. Las redes de criptomonedas utilizan un libro mayor distribuido, denominado cadena de bloques. Sin embargo, como se ha indicado anteriormente, el término cadena de bloques se utiliza para hacer referencia, en general, a libros mayores distribuidos, sin referencia particular a una red de criptomonedas.
En general, una red pública de cadena de bloques admite transacciones públicas. Una transacción pública se comparte con todos los nodos de la red pública de cadena de bloques y se almacena en una cadena de bloques global. Una cadena de bloques global es una cadena de bloques que se repite en todos los nodos. Es decir, todos los nodos están en perfecto estado de consenso con respecto a la cadena de bloques global. Para lograr el consenso (por ejemplo, el acuerdo para la adición de un bloque a una cadena de bloques), se implementa un protocolo de consenso en la red pública de cadena de bloques. Ejemplos de protocolo de consenso incluyen, sin limitación, el protocolo de prueba de trabajo (POW) implementado en redes de criptomonedas.
En general, una red privada de cadena de bloques se proporciona a una entidad en particular, que controla de manera centralizada los permisos de lectura y escritura. La entidad controla qué nodos pueden participar en la red de cadena de bloques. En consecuencia, las redes privadas de cadena de bloques se denominan generalmente redes de permisos que imponen restricciones sobre quién puede participar en la red y sobre su nivel de participación (por ejemplo, sólo en determinadas transacciones). Se pueden utilizar varios tipos de mecanismos de control de acceso (por ejemplo, los participantes existentes votan para añadir nuevas entidades, una autoridad reguladora puede controlar la admisión).
En general, una red de consorcio de cadena de bloques es privada entre las entidades participantes. En una red de consorcio de cadena de bloques, el proceso de consenso es controlado por un conjunto autorizado de nodos, donde uno o más nodos se hacen funcionar por una entidad respectiva (por ejemplo, una institución financiera, una compañía de seguros). Por ejemplo, un consorcio de diez (10) entidades (por ejemplo, instituciones financieras, compañías de seguros) puede hacer funcionar una red de consorcio de cadena de bloques, cada una de las cuales hace funcionar al menos un nodo de la red de consorcio de cadena de bloques. En consecuencia, la red de consorcio de cadena de bloques puede considerarse una red privada con respecto a las entidades participantes. En algunos ejemplos, cada entidad (nodo) debe firmar cada bloque para que éste sea válido y se añada a la cadena de bloques. En algunos ejemplos, al menos un subconjunto de entidades (nodos) (por ejemplo, al menos 7 entidades) debe firmar cada bloque para que éste sea válido y se añada a la cadena de bloques.
Implementaciones de esta memoria descriptiva se describen con más detalle en el presente documento con referencia a una red pública de cadena de bloques, que es pública entre las entidades participantes. Sin embargo, se contempla que las implementaciones de esta memoria descriptiva pueden realizarse en cualquier tipo apropiado de red de cadena de bloques.
En algunas implementaciones, una red de cadena de bloques puede incluir uno o más contratos inteligentes. Generalmente, un contrato inteligente es un conjunto de una o más instrucciones informáticas que se almacenan en una cadena de bloques (como una definición de contrato inteligente) y son ejecutadas por los nodos de una red de cadena de bloques. El código de un contrato inteligente se transforma generalmente en una forma ejecutable por los nodos de la red de cadena de bloques (por ejemplo, código de octetos) y el propio código de octetos o un código de octetos configurado para recuperar el código de octetos de contrato inteligente se almacena en la cadena de bloques. Las funciones definidas en el código de contrato inteligente pueden ser llamadas entonces por los participantes de la red de cadena de bloques, haciendo que los nodos ejecuten las instrucciones de la función llamada. Una "llamada" a un contrato inteligente es una solicitud para ejecutar el contrato inteligente por parte de un participante de la red de cadena de bloques (por ejemplo, un usuario, cliente, nodo de cadena de bloques u otra entidad).
Cuando un contrato inteligente almacenado en una cadena de bloques es llamado por un participante de la red de cadena de bloques, la red de cadena de bloques ejecuta cada instrucción del contrato inteligente de forma consensuada. Por ejemplo, en respuesta a una llamada a un contrato inteligente, cada nodo de la red de cadena de bloques ejecuta una primera instrucción del contrato inteligente. El primer nodo de la red de cadena de bloques que termina de ejecutar la primera instrucción del contrato inteligente escribe un resultado de la ejecución (por ejemplo, un estado de ejecución actualizado para el contrato inteligente) en la cadena de bloques. Los otros nodos de la red de cadena de bloques pueden verificar el resultado de la ejecución de la primera instrucción por parte del primer nodo. Si los otros nodos de la red de cadena de bloques verifican el resultado de la ejecución de la primera instrucción por parte del primer nodo (por ejemplo, los otros nodos generan el mismo resultado con la ejecución de la primera instrucción), entonces cada nodo procede a ejecutar la segunda instrucción del contrato inteligente. Este proceso se repite hasta que cada instrucción del contrato inteligente ha sido ejecutada y verificada.
Como se describe a continuación, esta memoria descriptiva describe técnicas para generar bibliotecas de software que permiten llamar a contratos inteligentes durante la ejecución de un programa de software. En particular, las bibliotecas de software pueden incorporarse a la aplicación de un desarrollador para que éste invoque una o más llamadas a contratos inteligentes correspondientes como si el desarrollador estuviera invocando una llamada a una función local. Por ejemplo, una llamada a contrato inteligente puede tener un aspecto similar a "FunctionName (int 1, int 2, char "input", char "input2")". Las bibliotecas de software pueden incluir llamadas a funciones para ejecutar el contrato inteligente y llamadas a funciones para ejecutar una o más funciones del contrato inteligente. De este modo, en lugar de que el desarrollador tenga que generar un mensaje de red que se transmita a través de la red para ejecutar una función de un contrato inteligente o el propio contrato inteligente en la red de cadena de bloques, el desarrollador puede simplemente generar una llamada local a una función de la biblioteca de software que ejecute el contrato inteligente en la red de cadena de bloques. La biblioteca de software puede convertir la llamada local en una llamada de red y transmitir la llamada de red a la red de cadena de bloques para ejecutar una función del contrato inteligente. Las funciones incorporadas en la biblioteca de software pueden coincidir con las definiciones de funciones del contrato inteligente en la red de cadena de bloques.
Esto puede ser beneficioso para el desarrollador. Las bibliotecas (por ejemplo, la interfaz de contrato inteligente) se generan en base a la definición en la cadena de bloques, y pueden actualizarse con frecuencia o automáticamente en respuesta a cambios en la cadena de bloques (por ejemplo, la creación de nuevos contratos inteligentes). Por tanto, las bibliotecas pueden mantenerse sincronizadas con el estado de la cadena de bloques con un esfuerzo mínimo. Además, al incorporar las bibliotecas de software que incluyen las llamadas a funciones del contrato inteligente y las funciones correspondientes al contrato inteligente en las aplicaciones, el desarrollador puede invocar las funciones de las bibliotecas de software para el contrato inteligente y las funciones correspondientes. El desarrollador puede hacer llamadas a contratos inteligentes y llamadas a funciones de contratos inteligentes en su aplicación como si el desarrollador estuviera haciendo una llamada local.
Además, cuando las llamadas a contratos inteligentes y a funciones de contratos inteligentes están organizadas en las bibliotecas de software, un desarrollador puede incorporar rápidamente estas bibliotecas de software en cualquier aplicación que el desarrollador desee. Esto da al usuario flexibilidad para ejecutar contratos inteligentes en una red de cadena de bloques en una variedad de aplicaciones.
La FIG. 1 representa un ejemplo de un entorno 100 que puede ser utilizado para ejecutar implementaciones de esta memoria descriptiva. En algunos ejemplos, el entorno 100 permite a las entidades participar en una red de consorcio de cadena de bloques 102. El entorno 100 incluye dispositivos informáticos 106, 108 y una red 110. En algunos ejemplos, la red 110 incluye una red de área local (LAN), una red de área amplia (WAN), Internet o una combinación de las mismas, y conecta sitios web, dispositivos de usuario (por ejemplo, dispositivos informáticos) y sistemas de sección de procesamiento (back-end). En algunos ejemplos, se puede acceder a la red 110 a través de un enlace de comunicaciones por cable y/o inalámbrico. En algunos ejemplos, la red 110 permite la comunicación con y dentro de la red de cadena de bloques 102. En general, la red 110 representa una o más redes de comunicación. En algunos casos, los dispositivos informáticos 106, 108 pueden ser nodos de un sistema informático en la nube (no mostrado), o cada dispositivo informático 106, 108 puede ser un sistema informático en la nube independiente que incluye una pluralidad de ordenadores interconectados mediante una red y que funciona como un sistema de procesamiento distribuido.
En el ejemplo representado, los sistemas informáticos 106, 108 pueden incluir cada uno cualquier sistema informático apropiado que permita la participación como nodo en la red de consorcio de cadena de bloques 102. Ejemplos de dispositivos informáticos incluyen, sin limitación, un servidor, un ordenador de sobremesa, un ordenador portátil, un dispositivo informático de tableta y un teléfono inteligente. En algunos ejemplos, los sistemas informáticos 106, 108 alojan uno o más servicios implementados por ordenador para interactuar con la red de consorcio de cadena de bloques 102. Por ejemplo, el sistema informático 106 puede alojar servicios implementados por ordenador de una primera entidad (por ejemplo, un usuario A), tal como un sistema de gestión de transacciones que la primera entidad utiliza para gestionar sus transacciones con otra u otras entidades (por ejemplo, otros usuarios). El sistema informático 108 puede alojar servicios implementados por ordenador de una segunda entidad (por ejemplo, un usuario B), tal como un sistema de gestión de transacciones que la segunda entidad utiliza para gestionar sus transacciones con otra u otras entidades (por ejemplo, otros usuarios). En el ejemplo de la FIG. 1, la red de consorcio de cadena de bloques 102 se representa como una red de nodos entre pares, y los sistemas informáticos 106, 108 proporcionan nodos de la primera entidad, y de la segunda entidad respectivamente, que participan en la red de consorcio de cadena de bloques 102.
La FIG. 2 representa un ejemplo de una arquitectura conceptual 200 de acuerdo con implementaciones de esta memoria descriptiva. La arquitectura conceptual 200 incluye una capa de entidad 202, una capa de servicios alojados 204 y una capa de red de cadena de bloques 206. En el ejemplo representado, la capa de entidad 202 incluye tres entidades, Entidad_1 (E1), Entidad_2 (E2) y Entidad_3 (E3), teniendo cada entidad un sistema de gestión de transacciones respectivo 208.
En el ejemplo representado, la capa de servicios alojados 204 incluye interfaces 210 para cada sistema de gestión de transacciones 210. En algunos ejemplos, un sistema de gestión de transacciones respectivo 208 se comunica con una interfaz respectiva 210 a través de una red (por ejemplo, la red 110 de la FIG. 1) utilizando un protocolo (por ejemplo, protocolo de transferencia de hipertexto seguro (HTTPS)). En algunos ejemplos, cada interfaz 210 proporciona una conexión de comunicación entre un sistema de gestión de transacciones respectivo 208 y la capa de red de cadena de bloques 206. Más en particular, la interfaz 210 se comunica con una red de cadena de bloques 212 de la capa de red de cadena de bloques 206. En algunos ejemplos, la comunicación entre una interfaz 210 y la capa de red de cadena de bloques 206 se lleva a cabo mediante llamadas a procedimientos remotos (RPC). En algunos ejemplos, las interfaces 210 "alojan" nodos de red de cadena de bloques para los sistemas de gestión de transacciones respectivos 208. Por ejemplo, las interfaces 210 proporcionan la interfaz de programación de aplicaciones (API) para acceder a la red de cadena de bloques 212.
Como se describe en el presente documento, la red de cadena de bloques 212 se proporciona como una red entre pares que incluye una pluralidad de nodos 214 que registran de forma inmutable información en una cadena de bloques 216. Aunque se representa esquemáticamente una única cadena de bloques 216, se proporcionan múltiples copias de la cadena de bloques 216, que se mantienen en la red de cadena de bloques 212. Por ejemplo, cada nodo 214 almacena una copia de la cadena de bloques. En algunas implementaciones, la cadena de bloques 216 almacena información asociada a transacciones que se realizan entre dos o más entidades que participan en la red de consorcio de cadena de bloques.
La FIG. 3 representa un ejemplo de un entorno 300 que puede ser utilizado para generar el marco para ejecutar llamadas a contratos inteligentes. El entorno 300 puede incluir una o más aplicaciones de software 302, una interfaz de contrato inteligente 304, un generador de interfaz 308, una red de cadena de bloques 212, una pluralidad de nodos 214 de la red de cadena de bloques 212 y una única cadena de bloques 216. El entorno 300 puede implementarse en un dispositivo cliente o en uno o más ordenadores conectados localmente o a través de Internet.
En algunas implementaciones, el generador de interfaz 308 se comunica con la red de cadena de bloques 212. Tras activarse el dispositivo cliente, el generador de interfaz 308 recupera datos de la red de cadena de bloques 212. Por ejemplo, el generador de interfaz 308 recupera datos que representan uno o más contratos inteligentes, una o más definiciones para llamar a contratos inteligentes desde la red de cadena de bloques 212, una o más definiciones para llamar a funciones del contrato inteligente desde la red de cadena de bloques 212 y características que describen la red de cadena de bloques 212. Los datos que representan uno o más contratos inteligentes pueden incluir una pluralidad de contratos inteligentes y el tipo de contratos inteligentes, por ejemplo. Las características pueden incluir un número de la pluralidad de nodos 214, las direcciones de cada uno de los nodos, y un libro mayor utilizado por la pluralidad de nodos 214.
El generador de interfaz 308 recupera esta información de la red de cadena de bloques 212 y, en respuesta, genera una interfaz de contrato inteligente 304 que proporcionar a un desarrollador para invocar llamadas a contratos inteligentes en su respectiva aplicación. La interfaz de contrato inteligente 304 puede incluir, por ejemplo, una o más bibliotecas de software, una interfaz de usuario o un enlace a la ubicación de las llamadas a funciones de software. El generador de interfaz 308 carga la interfaz de contrato inteligente 304 con definiciones de funciones para que el desarrollador las utilice para instanciar llamadas a contratos inteligentes en su propio software, tal como la aplicación de software 302.
La interfaz de contrato inteligente 304, que puede incluir una o más bibliotecas de software, por ejemplo, puede permitir a un desarrollador llamar a una o más funciones de un contrato inteligente encontrado en la red de cadena de bloques 212. De este modo, el desarrollador puede interactuar con uno o más contratos inteligentes encontrados en la red de cadena de bloques 212 invocando a una o más de las funciones 306 de la interfaz de contrato inteligente 304.
Un desarrollador puede incorporar una o más llamadas al contrato inteligente o llamadas a las funciones del contrato inteligente en su aplicación de software 302. En particular, la aplicación de software 302 puede ser cualquier aplicación que el desarrollador desee, tal como, por ejemplo, software multimedia, software de presentación, software de simulación y software para la ingeniería y el desarrollo de productos, por citar algunos ejemplos. Además, el software puede estar relacionado con aplicaciones tales como una cadena de distribución, el gobierno electrónico, los juegos y las apuestas, los bancos y los seguros, el sector energético, IoT, la identidad digital y la tecnología jurídica, por citar algunos ejemplos. La aplicación de software 302 puede estar escrita en C++, C, JavaScript, Python, Perl u otros lenguajes de software, por citar algunos ejemplos.
En algunas implementaciones, el desarrollador puede incorporar llamadas de funciones 306 a la interfaz de contrato inteligente 304 en la aplicación de software 302. Por ejemplo, el desarrollador puede importar una biblioteca de la interfaz de contrato inteligente 304, múltiples bibliotecas de la interfaz de contrato inteligente 304 o la propia interfaz de contrato inteligente 304 en la aplicación de software 302. Al incorporar estas bibliotecas en la aplicación de software 302, el desarrollador puede invocar una o más de las funciones proporcionadas por estas bibliotecas (por ejemplo, la interfaz de contrato inteligente 304) según desee. El desarrollador puede revisar las definiciones de función de la una o más funciones 306 proporcionadas por la interfaz de contrato inteligente importada 304 para determinar cómo realizar una llamada a función en su aplicación de software 302. Además, la interfaz de contrato inteligente 304 puede indicar cómo el desarrollador puede hacer una llamada a contrato inteligente ubicada en la red de cadena de bloques 212.
La interfaz de contrato inteligente 304 puede incluir una colección de definiciones de clase correspondientes a las funciones 306. Estas definiciones de clase muestran cómo un desarrollador puede invocar código en su aplicación de software 302 para llamar a funciones 306. Por ejemplo, para un desarrollador que busca invocar una llamada a contrato inteligente, el desarrollador no tiene que analizar el contrato inteligente en la red de cadena de bloques 212 para determinar los parámetros y los tipos de parámetros necesarios para generar la llamada a contrato inteligente. En cambio, el desarrollador puede ver la definición de contrato inteligente en la interfaz de contrato inteligente 304, como por ejemplo a través de su archivo de cabecera, para determinar cómo invocar una llamada a contrato inteligente ubicada en la red de cadena de bloques 212. Una vez que el desarrollador analiza la definición de contrato inteligente en la interfaz de contrato inteligente 304, el desarrollador puede incorporar la definición de contrato inteligente como una llamada a función en su aplicación de software para realizar una función deseada. Por ejemplo, la interfaz de contrato inteligente 304 permite al desarrollador, mediante el uso de su aplicación de software 302, realizar una función deseada que incluye la generación de un nuevo contrato inteligente, la creación de una o más funciones/procedimientos nuevos de un contrato inteligente, la llamada a un contrato inteligente previamente implantado en la red de cadena de bloques 212, y la llamada a una o más funciones/procedimientos de un contrato inteligente previamente implantado en la red de cadena de bloques 302, por citar algunos ejemplos.
En algunas implementaciones, un desarrollador puede crear un contrato inteligente en su aplicación de software 302 mediante la interacción con la interfaz de contrato inteligente 304. En particular, la interfaz 304 permite al desarrollador escribir software que realiza una llamada localizada a la interfaz de contrato inteligente 304 para ejecutar una o más funciones 306. Por ejemplo, la una o más funciones 306 pueden incluir la llamada a un contrato inteligente previamente implantado que existe en la red de cadena de bloques 212, una o más funciones del contrato inteligente encontrado en la red de cadena de bloques 212, o la invocación de un nuevo contrato inteligente en la red de cadena de bloques 212. En algunas implementaciones, la red de cadena de bloques 212 puede incluir múltiples contratos inteligentes, cada uno con su propio conjunto de funciones 306. La interfaz de contrato inteligente 304 permite al usuario invocar cada uno de los contratos inteligentes encontrados en la red de cadena de bloques 212 y cada una de las funciones de cada uno de los contratos inteligentes.
Como se define en la interfaz de contrato inteligente 304, cada contrato inteligente encontrado en la red de cadena de bloques 212 puede incluir un número variable de funciones y/o procedimientos que un desarrollador puede invocar. Para que un desarrollador pueda acceder a un contrato inteligente previamente implantado y a sus funciones correspondientes, un desarrollador debe proporcionar datos de entrada para una llamada a contrato inteligente. Por ejemplo, la interfaz de contrato inteligente 304 puede usar una interfaz binaria de aplicación (ABI) para hacer llamadas al contrato inteligente en la red de cadena de bloques 212 para comunicarse utilizando funciones del contrato inteligente en la red de cadena de bloques 212 y recibir datos del contrato inteligente. Al utilizar el software ABI, un desarrollador puede especificar qué función del contrato inteligente invocar en su aplicación de software, así como garantizar que la función devolverá datos en el formato esperado por el desarrollador.
Para realizar una llamada a un contrato inteligente, el usuario especifica los parámetros del contrato inteligente en su aplicación de software 302. Los parámetros de contrato inteligente pueden tener diferentes tipos de datos. Por ejemplo, los parámetros de contrato inteligente pueden incluir firmas criptográficas, valores lógicos, valores enteros, valores hash, matrices de octetos, claves criptográficas, valores de cadena de caracteres, direcciones de datos, direcciones de red, números de puerto, identificadores de usuario, identificadores de función y otros tipos de parámetros.
En algunas implementaciones, la interfaz de contrato inteligente 304 ayuda a los desarrolladores a llamar a una o más funciones 306. La interfaz de contrato inteligente 304 puede rellenar previamente uno o más datos de entrada de una llamada a contrato inteligente desde la aplicación de software 302. Por ejemplo, una llamada a un contrato inteligente puede requerir que un desarrollador introduzca cinco datos de entrada: las entradas incluyen un tipo string, un tipo int, un tipo char, un tipo int y un tipo char*, como se describe en la definición de función de esta llamada a contrato inteligente. La interfaz de contrato inteligente 304 puede indicar que el desarrollador sólo debe introducir los datos de entrada de tipo string y de tipo char*. El tipo string puede corresponder a un nombre del contrato inteligente y el tipo char* corresponde a un búfer que se utilizará para almacenar los datos que se pasarán al contrato inteligente en la red de cadena de bloques 212. La interfaz de contrato inteligente 304 puede rellenar automáticamente los tres datos de entrada restantes.
En algunas implementaciones, la interfaz de contrato inteligente 304 puede mostrar al desarrollador una forma de representación de las definiciones de las funciones del contrato inteligente y de las definiciones del uno o más contratos inteligentes. Por ejemplo, la forma de representación puede incluir un archivo de explicación, un archivo de cabecera, un archivo de biblioteca para que el desarrollador lo revise, y un manual que da instrucciones al desarrollador acerca de cómo llamar al contrato inteligente y a sus funciones correspondientes.
En algunas implementaciones, la interfaz de contrato inteligente 304 puede realizar la conversión de parámetros en los parámetros introducidos por el desarrollador en la aplicación de software 302. La interfaz de contrato inteligente 304 convierte los parámetros introducidos por el desarrollador tal y como se define en las definiciones de función en los archivos de cabecera, por ejemplo, en los datos de entrada necesarios para la llamada al contrato inteligente en la red de cadena de bloques 212. Por ejemplo, la interfaz de contrato inteligente 304 puede convertir cada uno de los valores de string (cadena de caracteres) o valores de carácter introducidos por el usuario en la interfaz 304 en los valores de byte (octetos), u_int8 y u_int32 requeridos por los datos de entrada de la llamada a contrato inteligente. La interfaz de contrato inteligente 304 puede realizar la conversión de parámetros para aliviar el número de datos de entrada que un desarrollador debe introducir en su aplicación de software 302. Por ejemplo, la interfaz de contrato inteligente 304 puede requerir solamente que el desarrollador introduzca cinco datos de entrada para llamar a un contrato inteligente en la red de cadena de bloques 212. Cuando la interfaz de contrato inteligente 304 recibe la llamada con cinco datos de entrada para el contrato inteligente, la interfaz de contrato inteligente 304 puede generar un nuevo comando para llamar al contrato inteligente en la red de cadena de bloques 212. Por ejemplo, la interfaz de contrato inteligente 304 transmite una llamada de función a cada nodo de la red de cadena de bloques con diez datos de entrada. Los cinco datos de entrada adicionales pueden ser datos de entrada normalizadas que incluyen una o más direcciones, números de puerto, nombres de usuario y otra información relativa a la llamada a contrato inteligente introducida por la interfaz de contrato inteligente 304.
Además, la interfaz de contrato inteligente 304 puede consultar una tabla para generar la llamada a contrato inteligente en la red de cadena de bloques 212 en respuesta a la recepción de una llamada al contrato inteligente desde la aplicación de software 302. Por ejemplo, un desarrollador puede proporcionar una llamada a contrato inteligente en la aplicación de software 302 y, tras su ejecución, la interfaz de contrato inteligente 304 puede recuperar uno o más parámetros de una base de datos necesarios para la llamada a contrato inteligente en la red de cadena de bloques 212. Esto permite al desarrollador introducir una cantidad mínima de parámetros para la llamada a contrato inteligente en su aplicación de software 302, y no tener que realizar ninguna etapa adicional o añadir entradas adicionales. El desarrollador no tiene que lidiar con la dificultad de alinear octetos de los datos de entrada ni cerciorarse de que se proporcionan los datos de entrada correctos para la llamada a contrato inteligente en la ubicación correcta.
La interfaz de contrato inteligente 304 puede realizar adicionalmente una comprobación de compilación y de errores en la ejecución de la aplicación de software 302. Por ejemplo, la interfaz de contrato inteligente 304 puede ejecutar el código de la aplicación de software 302 y analizar cada instrucción. Por ejemplo, para la instrucción correspondiente a la llamada a función de contrato inteligente, la interfaz de contrato inteligente 304 puede determinar si los tipos de datos de entrada que el usuario ha introducido son correctos, si la ortografía de cada dato de entrada es correcta y si el número de datos de entrada introducidos es correcto. Si la interfaz de contrato inteligente 304 determina que el usuario introdujo un error en los datos de entrada, la interfaz de contrato inteligente 304 puede designar una notificación al desarrollador para que corrija el error. Por tanto, la interfaz de contrato inteligente 304 puede realizar una primera capa de comprobación de errores en la llamada a contrato inteligente antes de difundir a la red de cadena de bloques 212 la llamada a contrato inteligente.
Además, la interfaz de contrato inteligente 304 permite al desarrollador introducir su firma (por ejemplo, su clave privada) antes de llamar a la red de cadena de bloques 212. El desarrollador puede introducir su firma y su clave pública a través del dispositivo cliente cuando ejecuta la aplicación de software 302. Además, el desarrollador puede introducir su firma y su clave pública como datos de entrada de la llamada a contrato inteligente en la aplicación de software 302. De forma alternativa, la firma y la clave pública del desarrollador pueden añadirse al final de la llamada a contrato inteligente para verificar que la llamada a contrato inteligente proviene del desarrollador con acceso autenticado para interactuar con la red de cadena de bloques 212 y, posteriormente, con el contrato inteligente. Además, la red de cadena de bloques 212 verificará la firma y la clave pública del desarrollador en relación con el libro mayor de la red de cadena de bloques 212 para verificar la autenticidad del desarrollador.
En respuesta a la autenticación de la interfaz de contrato inteligente 304 y la compilación de la aplicación de software 302 del desarrollador, la interfaz de contrato inteligente 304 genera el mensaje de contrato inteligente para difundirlo a la red de cadena de bloques 212. En particular, la interfaz de contrato inteligente 304 puede empaquetar los parámetros de la llamada a contrato inteligente en la aplicación de software 302 en una forma aceptable por la red de cadena de caracteres 212. Por ejemplo, la información puede codificarse en formato de interfaz binaria de aplicación (ABI) para pasar a un contrato inteligente en la red de cadena de bloques. En particular, la interfaz de contrato inteligente 304 puede generar una lista de las funciones y argumentos en formato de notación de objetos de JavaScript (JSON). La interfaz de contrato inteligente 304 puede aplicar una función hash a los datos introducidos como una llamada a contrato inteligente en la aplicación de software 302 y a los datos recuperados de una base de datos para crear una llamada a función de contrato inteligente. El formato ABI permite a la interfaz de contrato inteligente 304 codificar un formato significativo para la llamada a contrato inteligente en la red de cadena de bloques 212 para entender la llamada a nivel de octetos. Además, la red de cadena de bloques 212 puede recibir en formato ABI los datos del contrato inteligente previamente implantado.
La interfaz de contrato inteligente 304 proporciona a la red de cadena de bloques 212 la llamada a contrato inteligente. En particular, la interfaz de contrato inteligente 304 difunde la llamada a contrato inteligente a cada nodo de la pluralidad de nodos 214 en la red de cadena de bloques 212. Cada nodo de la pluralidad de nodos 214 en la red de cadena de bloques 212 realiza un cálculo hash para verificar la autenticidad de la llamada a contrato inteligente desde la interfaz de contrato inteligente 304. En particular, cada nodo verifica que el desarrollador que solicita la llamada a contrato inteligente se corresponde con la firma del desarrollador (por ejemplo, la clave privada) y con la clave pública del desarrollador encontrada en la llamada a contrato inteligente.
Además, cada nodo de la pluralidad de nodos 214 verifica que el desarrollador está autenticado para comunicarse con el contrato inteligente particular previamente implantado o es capaz de generar un nuevo contrato inteligente. En particular, cada nodo compara la firma del desarrollador con el libro mayor encontrado en cada nodo. Si cada nodo autentica la firma del desarrollador y autentica que el desarrollador es capaz de comunicarse con el contrato inteligente previamente implantado o es capaz de generar un nuevo contrato inteligente, cada nodo comunica un éxito entre sí. En particular, cada uno de los nodos transmite una aceptación de la llamada a contrato inteligente recibida a cada uno de los otros nodos. De forma alternativa, si al menos uno de los nodos determina que existe un error con los datos encontrados en la llamada a contrato inteligente, ese nodo puede notificar a todos los demás nodos que existe un error en la llamada a contrato inteligente. Después, la red de cadena de bloques 212 puede notificar a la interfaz de contrato inteligente 304 que existe un error en la llamada a contrato inteligente. La interfaz de contrato inteligente 304 puede transmitir una notificación al dispositivo cliente del desarrollador notificándole del error.
Si la pluralidad de nodos transmite al resto de nodos una aceptación de la llamada a contrato inteligente recibida, entonces cada uno de los nodos realiza la función solicitada por la interfaz de contrato inteligente 304. La función puede incluir la ejecución de una función/procedimiento para un contrato inteligente previamente implantado, la generación de un nuevo contrato inteligente o la llamada a un contrato inteligente previamente implantado. Por ejemplo, en respuesta a cada uno de los nodos de la pluralidad de nodos que aceptan la llamada a contrato inteligente recibida, cada nodo de la red de cadena de bloques 212 ejecuta la llamada a contrato inteligente de forma consensuada. Cada nodo de la red de cadena de bloques ejecuta una primera instrucción de la llamada a contrato inteligente. Como se ha descrito anteriormente, el primer nodo de la red de cadena de bloques que termina de ejecutar la primera instrucción escribe un resultado de la ejecución de la primera instrucción en la memoria de la red de cadena de bloques 212. Los otros nodos de la red de cadena de bloques pueden verificar el resultado de la ejecución de la primera instrucción por parte del primer nodo. Si cada uno de los nodos verifica el resultado, entonces cada nodo procede a ejecutar la segunda instrucción de la llamada a contrato inteligente. Este proceso se repite hasta que cada instrucción de la llamada a contrato inteligente sea ejecutada y verificada por cada uno de los nodos. Esta verificación consensuada a través de la pluralidad de nodos 214 garantiza que los resultados de la llamada a contrato inteligente sean verificados por cada nodo de la red de cadena de bloques 212.
En respuesta a la pluralidad de nodos 214 que realizan la verificación consensuada de los resultados de la llamada a contrato inteligente, la red de cadena de bloques 212 puede transmitir a la interfaz de contrato inteligente 304 los resultados de la llamada a contrato inteligente. Por ejemplo, los resultados de la llamada a contrato inteligente pueden indicar que se ha creado y almacenado un nuevo contrato inteligente en la red de cadena de bloques 212. En otro ejemplo, los resultados de la llamada a contrato inteligente pueden indicar que se ha ejecutado una función de un contrato inteligente previamente implantado en la red de cadena de bloques 212, tal como la transferencia de dinero de un primer nodo a un segundo nodo. En otro ejemplo, los resultados de la llamada a contrato inteligente pueden indicar que un cambio en la titularidad de un producto, tal como un vehículo o una casa, ha transferido a un usuario los derechos de un usuario diferente. La interfaz de contrato inteligente 304 puede mostrar los resultados al desarrollador en un dispositivo de visualización del dispositivo cliente. El desarrollador puede ver los resultados de la aplicación de software 302 ejecutada y proceder a ejecutar otra aplicación de software 302 o apagar el sistema.
La FIG. 4 representa un ejemplo de un proceso 400 que puede ser ejecutado de acuerdo con implementaciones de esta memoria descriptiva. En algunas implementaciones, el proceso 400 puede realizarse utilizando uno o más programas ejecutables por ordenador que se ejecutan utilizando uno o más dispositivos informáticos.
En 402, las definiciones de contrato inteligente se recuperan de la red de cadena de bloques, donde las definiciones de contrato inteligente incluyen una pluralidad de funciones de contrato de una pluralidad de contratos inteligentes almacenados en una cadena de bloques mantenida por la red de cadena de bloques. En algunos ejemplos, la definición de contrato inteligente es una entrada en la cadena de bloques que incluye instrucciones de software que serán ejecutadas por la red de cadena de bloques cuando se llame al contrato inteligente, por ejemplo por un cliente, un usuario o un nodo de cadena de bloques de la red de cadena de bloques. La definición del contrato inteligente también puede incluir definiciones de función que definen las diversas formas de llamar a un contrato inteligente (por ejemplo, una función de contrato inteligente llamada "pay()" que toma dos direcciones de cuenta como parámetros). Las funciones incluyen una o más instrucciones de software que serán ejecutadas por la red de cadena de bloques cuando se llame a la función. En algunos casos, la una o más instrucciones de software en las definiciones de contrato inteligente pueden representarse como código de octetos asociado a un lenguaje de programación específico. En algunos casos, la recuperación de las definiciones de contrato inteligente incluye la recuperación del código de octetos asociado a los contratos inteligentes almacenados en la cadena de bloques.
En 404, se genera una interfaz de contrato inteligente basada en las definiciones de contrato inteligente. La interfaz de contrato inteligente puede incluir una pluralidad de funciones de interfaz correspondientes a la pluralidad de funciones de contrato. La interfaz de contrato inteligente puede estar configurada para permitir que las aplicaciones de software llamen a cada una de las funciones de contrato llamando a una función de interfaz correspondiente. En algunos casos, la generación de una llamada de contrato inteligente a la función de contrato particular que incluye los parámetros de llamada incluye la recuperación de los parámetros de llamada de la llamada a la función de interfaz y la conversión de los parámetros de llamada en parámetros de contrato inteligente para la comunicación con el contrato inteligente correspondiente en la red de cadena de bloques. En algunas implementaciones, la recuperación de las definiciones de contrato inteligente y la generación de la interfaz de contrato inteligente se realizan automáticamente en respuesta a un cambio en las definiciones de contrato inteligente almacenadas en la cadena de bloques.
En 406, una llamada a una función de interfaz particular se recibe desde una aplicación de software, donde la llamada incluye parámetros de llamada correspondientes a parámetros de una función de contrato particular correspondiente a la función de interfaz particular.
En 408, en respuesta a la recepción de la llamada a la función de interfaz particular, se genera una llamada de contrato inteligente a la función de contrato particular que incluye los parámetros de llamada. En algunos casos, cada parámetro de llamada tiene un tipo de parámetro que coincide con un tipo de parámetro de contrato de un parámetro correspondiente de la función de contrato particular. El tipo de parámetro puede incluir al menos uno de un entero, una cadena de caracteres o una matriz de octetos.
En 410, la llamada a contrato inteligente se transmite a la red de cadena de bloques. En algunos casos, la llamada a contrato inteligente puede difundirse a través de una red a los nodos de la red de cadena de bloques.
En algunos casos, los resultados de una ejecución de la llamada a contrato inteligente por la red de cadena de bloques se reciben y se proporcionan a la aplicación de software.
La FIG. 5 representa ejemplos de módulos de un aparato 500 de acuerdo con implementaciones de esta memoria descriptiva. El aparato 500 puede ser una implementación de un proceso de software configurado para implementar una llamada a contrato inteligente en una red de cadena de bloques, tal como una red de consorcio de cadena de bloques. El aparato 500 puede corresponder a las implementaciones descritas anteriormente, y el aparato 500 incluye lo siguiente: un recuperador o módulo de recuperación 502 para recuperar definiciones de contrato inteligente de la red de cadena de bloques, donde las definiciones de contrato inteligente incluyen una pluralidad de funciones de contrato de una pluralidad de contratos inteligentes almacenados en una cadena de bloques mantenida por la red de cadena de bloques; un primer generador o primer módulo de generación 504 para generar una interfaz de contrato inteligente que representa las definiciones de contrato inteligente, donde la interfaz de contrato inteligente incluye una pluralidad de funciones de interfaz correspondientes a la pluralidad de funciones de contrato, estando la interfaz de contrato inteligente configurada para permitir que aplicaciones de software llamen a cada una de las funciones de contrato llamando a una función de interfaz correspondiente; un receptor o módulo de recepción 506 para recibir una llamada a una función de interfaz particular desde una aplicación de software, donde la llamada incluye parámetros de llamada correspondientes a parámetros de una función de contrato particular correspondiente a la función de interfaz particular; un segundo generador o módulo de generación 508 para generar una llamada de contrato inteligente a la función de contrato particular que incluye los parámetros de llamada en respuesta a la recepción de la llamada a la función de interfaz particular; un transmisor o módulo de transmisión 510 para transmitir a la red de cadena de bloques la llamada a contrato inteligente.
El sistema, aparato, módulo o unidad ilustrados en las implementaciones anteriores pueden implementarse utilizando un chip informático o una entidad, o pueden implementarse utilizando un producto que tenga una función determinada. Un dispositivo de implementación típico es un ordenador, y el ordenador puede ser un ordenador personal, un ordenador portátil, un teléfono móvil, un teléfono con cámara, un teléfono inteligente, un asistente digital personal, un reproductor multimedia, un dispositivo de navegación, un dispositivo de recepción y envío de correo electrónico, una consola de juegos, una tableta electrónica, un dispositivo ponible o cualquier combinación de estos dispositivos.
Para un proceso de implementación de funciones y roles de cada unidad en el aparato, se puede hacer referencia a un proceso de implementación de etapas correspondientes en el procedimiento anterior. Los detalles se omiten aquí por simplicidad.
Dado que una implementación de aparato corresponde básicamente a una implementación de procedimiento, para partes relacionadas, se puede hacer referencia a descripciones relacionadas en la implementación de procedimiento. La implementación de aparato descrita anteriormente es simplemente un ejemplo. Las unidades descritas como partes separadas pueden estar, o no, físicamente separadas, y las partes mostradas como unidades pueden ser, o no, unidades físicas, pueden estar ubicadas en una posición, o pueden estar distribuidas en varias unidades de red. Algunos o todos los módulos pueden seleccionarse en función de las demandas reales para lograr los objetivos de las soluciones de la memoria descriptiva. Un experto en la técnica puede entender e implementar las implementaciones de esta memoria descriptiva sin realizar investigaciones adicionales.
Con referencia de nuevo a la FIG. 5, puede interpretarse que ilustra un módulo funcional interno y una estructura de un proceso de software configurado para implementar una llamada a contrato inteligente en una red de cadena de bloques. Un cuerpo de ejecución puede ser, en esencia, un dispositivo electrónico, y el dispositivo electrónico incluye lo siguiente: uno o más procesadores y una memoria que almacena una instrucción ejecutable de los uno o más procesadores.
Las técnicas descritas en esta memoria descriptiva producen uno o más efectos técnicos. En algunas formas de realización, al generar automáticamente una biblioteca de interfaz de software para contratos inteligentes en una cadena de bloques, las técnicas producen una definición actualizada de los contratos inteligentes y de las funciones de contrato inteligente disponibles para su ejecución. En otras formas de realización, las aplicaciones de software que utilizan esta biblioteca generada harán menos llamadas erróneas a contratos inteligentes y a funciones (por ejemplo, llamadas a funciones que no existen, parámetros no válidos, etc.). Debido a que tales llamadas erróneas dan lugar a una sobrecarga adicional tanto en la red de cadena de bloques como en el dispositivo que ejecuta la aplicación de software que realiza la llamada errónea (por ejemplo, manejando el error, manejando reintentos de la llamada fallida, etc.), la reducción o eliminación de estas llamadas erróneas mediante la biblioteca de interfaz de software puede dar lugar a una mayor eficacia y un mayor rendimiento tanto en el dispositivo que llama como en la red de cadena de bloques.
Las formas de realización descritas de la materia objeto pueden incluir una o más características, solas o en combinación.
Por ejemplo, en algunas implementaciones, las acciones incluyen recuperar definiciones de contratos inteligentes desde la red de cadena de bloques, donde las definiciones de contratos inteligentes incluyen una pluralidad de funciones de contrato de una pluralidad de contratos inteligentes almacenados en una cadena de bloques mantenida por la red de cadena de bloques; generar una interfaz de contrato inteligente que represente las definiciones de contratos inteligentes, donde la interfaz de contrato inteligente incluye una pluralidad de funciones de interfaz correspondientes a la pluralidad de funciones de contrato, estando la interfaz de contrato inteligente configurada para permitir que aplicaciones de software invoquen a cada una de las funciones de contrato invocando a una función de interfaz correspondiente; recibir una llamada a una función de interfaz particular desde una aplicación de software, donde la llamada incluye parámetros de llamada correspondientes a parámetros de una función de contrato particular correspondiente a la función de interfaz particular; en respuesta a la recepción de la llamada a la función de interfaz particular, generar una llamada de contrato inteligente a la función de contrato particular que incluye los parámetros de llamada; transmitir a la red de cadena de bloques la llamada a contrato inteligente; y recibir resultados de una ejecución de la llamada a contrato inteligente por la red de cadena de bloques y proporcionar los resultados a la aplicación de software.
Otras implementaciones incluyen sistemas, aparatos y programas informáticos correspondientes, configurados para realizar las acciones de los procedimientos, codificados en dispositivos de almacenamiento informático.
Las anteriores y otras formas de realización descritas pueden incluir, opcionalmente, una o más de las siguientes características:
En algunas formas de realización, la recuperación de las definiciones de contrato inteligente incluye la recuperación de código de octetos asociado a los contratos inteligentes almacenados en la cadena de bloques.
En algunas formas de realización, la generación de una llamada de contrato inteligente a la función de contrato particular que incluye los parámetros de llamada incluye la recuperación de los parámetros de llamada de la llamada a la función de interfaz y la conversión de los parámetros de llamada en parámetros de contrato inteligente para la comunicación con el contrato inteligente correspondiente en la red de cadena de bloques.
En algunas formas de realización, cada parámetro de llamada tiene un tipo de parámetro que coincide con un tipo de parámetro de contrato de un parámetro correspondiente de la función de contrato particular.
En algunas formas de realización, el tipo de parámetro incluye al menos uno de un entero, una cadena de caracteres o una matriz de octetos.
En algunas formas de realización, la transmisión de la llamada de contrato inteligente a la red de cadena de bloques comprende la difusión de la llamada de contrato inteligente a una pluralidad de nodos de la red de cadena de bloques.
En algunas formas de realización, la recuperación de las definiciones de contrato inteligente y la generación de la interfaz de contrato inteligente se realizan automáticamente en respuesta a un cambio en las definiciones de contrato inteligente almacenadas en la cadena de bloques.
Las formas de realización de la materia objeto y las acciones y operaciones descritas en esta memoria descriptiva pueden implementarse en circuitos electrónicos digitales, en software o firmware informático implementado de forma tangible, en hardware informático, incluidas las estructuras divulgadas en esta memoria descriptiva y sus equivalentes estructurales, o en combinaciones de uno o más de los mismos. Las formas de realización de la materia objeto descrita en esta memoria descriptiva pueden implementarse como uno o más programas informáticos, por ejemplo uno o más módulos de instrucciones de programa informático, codificados en un soporte de programa informático, para su ejecución por, o para controlar el funcionamiento de, aparatos de procesamiento de datos. Por ejemplo, un soporte de programa informático puede incluir uno o más medios de almacenamiento legibles por ordenador que tienen instrucciones codificadas o almacenadas en los mismos. El soporte puede ser un medio tangible no transitorio legible por ordenador, tal como un disco magnético, magneto-óptico u óptico, una unidad de estado sólido, una memoria de acceso aleatorio (RAM), una memoria de sólo lectura (ROM) u otros tipos de medios. De forma alternativa o adicional, la portadora puede ser una señal propagada generada artificialmente, por ejemplo una señal eléctrica, óptica o electromagnética generada por una máquina que se genera para codificar información para su transmisión a un aparato receptor adecuado para su ejecución por un aparato de procesamiento de datos. El medio de almacenamiento informático puede ser o formar parte de un dispositivo de almacenamiento legible por máquina, un sustrato de almacenamiento legible por máquina, un dispositivo de memoria de acceso aleatorio o en serie, o una combinación de uno o más de los mismos. Un medio de almacenamiento informático no es una señal propagada.
Un programa informático, que también puede denominarse o describirse como programa, software, aplicación de software, app, módulo, módulo de software, motor, secuencia de comandos o código, puede escribirse en cualquier forma de lenguaje de programación, incluidos lenguajes compilados o interpretados, o lenguajes declarativos o procedimentales; y puede implantarse en cualquier forma, incluso como un programa independiente o como un módulo, componente, motor, subrutina u otra unidad adecuada para ejecutarse en un entorno informático, entorno que puede incluir uno o más ordenadores interconectados por una red de comunicación de datos en una o más ubicaciones.
Un programa informático puede, pero no es necesario, corresponder a un archivo en un sistema de archivos. Un programa informático puede almacenarse en una parte de un archivo que contiene otros programas o datos, por ejemplo, una o más secuencias de comandos almacenadas en un documento de lenguaje de marcas, en un único archivo dedicado al programa en cuestión, o en múltiples archivos coordinados, por ejemplo, archivos que almacenan uno o más módulos, subprogramas o partes de código.
Los procesadores para la ejecución de un programa informático incluyen, a modo de ejemplo, microprocesadores tanto de propósito general como de propósito especial, y uno o varios procesadores de cualquier tipo de ordenador digital. Generalmente, un procesador recibirá las instrucciones del programa informático para su ejecución, así como datos de un medio no transitorio legible por ordenador acoplado al procesador.
El término "aparato de procesamiento de datos" abarca todo tipo de aparatos, dispositivos y máquinas para el procesamiento de datos, incluidos a modo de ejemplo un procesador programable, un ordenador o múltiples procesadores u ordenadores. Los aparatos de procesamiento de datos pueden incluir circuitos lógicos de propósito especial, por ejemplo, una FPGA (matriz de puertas programables in situ), un ASIC (circuito integrado específico de la aplicación) o una GPU (unidad de procesamiento gráfico). El aparato también puede incluir, además de hardware, código que crea un entorno de ejecución para programas informáticos, por ejemplo, código que constituye el firmware de procesador, una pila de protocolos, un sistema de gestión de bases de datos, un sistema operativo o una combinación de uno o más de los mismos.
Los procesos y flujos lógicos descritos en esta memoria descriptiva pueden ser realizados por uno o más ordenadores o procesadores que ejecutan uno o más programas informáticos para realizar operaciones operando con datos de entrada y generando datos de salida. Los procesos y flujos lógicos también pueden ser realizados por circuitos lógicos de propósito especial, por ejemplo, una FPGA, un ASIC o una GPU, o por una combinación de circuitos lógicos de propósito especial y uno o más ordenadores programados.
Los ordenadores adecuados para la ejecución de un programa informático pueden estar basados en microprocesadores de propósito general o especial, o ambos, o en cualquier otro tipo de unidad central de procesamiento. Por lo general, una unidad central de procesamiento recibirá instrucciones y datos de una memoria de sólo lectura o de una memoria de acceso aleatorio, o de ambas. Los elementos de un ordenador pueden incluir una unidad central de procesamiento para ejecutar instrucciones y uno o más dispositivos de memoria para almacenar instrucciones y datos. La unidad central de procesamiento y la memoria pueden ser complementadas por, o estar incorporadas en, circuitos lógicos de propósito especial.
Por lo general, un ordenador también incluirá, o estará operativamente acoplado para recibir datos desde o transferir datos a, uno o más dispositivos de almacenamiento. Los dispositivos de almacenamiento pueden ser, por ejemplo, discos magnéticos, magneto-ópticos u ópticos, unidades de estado sólido o cualquier otro tipo de medio no transitorio legible por ordenador. Sin embargo, no es necesario que un ordenador tenga tales dispositivos. Por tanto, un ordenador puede estar acoplado a uno o más dispositivos de almacenamiento, tales como una o más memorias, que son locales y/o remotos. Por ejemplo, un ordenador puede incluir una o más memorias locales que son componentes integrantes del ordenador, o el ordenador puede estar acoplado a una o más memorias remotas que están en una red en la nube. Además, un ordenador puede estar integrado en otro dispositivo, por ejemplo, un teléfono móvil, un asistente digital personal (PDA), un reproductor de audio o vídeo móvil, una consola de juegos, un receptor del Sistema de Posicionamiento Global (GPS) o un dispositivo de almacenamiento portátil, por ejemplo una unidad flash de bus serie universal (USB), por citar solo algunos.
Los componentes pueden estar "acoplados" entre sí al estar conectados entre sí de forma conmutable, tal como eléctrica u ópticamente, ya sea directamente o a través de uno o más componentes intermedios. Los componentes también pueden estar "acoplados" entre sí si uno de los componentes está integrado en el otro. Por ejemplo, un componente de almacenamiento que está integrado en un procesador (por ejemplo, un componente de memoria caché L2) está "acoplado" al procesador.
Para proporcionar interacción con un usuario, las formas de realización de la materia objeto descrita en esta memoria descriptiva pueden implementarse en, o estar configuradas para comunicarse con, un ordenador que tenga un dispositivo de visualización, por ejemplo, un monitor LCD (pantalla de cristal líquido), para mostrar información al usuario, y un dispositivo de entrada mediante el cual el usuario pueda proporcionar datos de entrada al ordenador, por ejemplo, un teclado y un dispositivo de puntero, por ejemplo, un ratón, una bola de seguimiento o un panel táctil. También se pueden utilizar otros tipos de dispositivos para proporcionar la interacción con un usuario; por ejemplo, la información proporcionada al usuario puede ser cualquier forma de información sensorial, por ejemplo, información visual, auditiva o táctil; y los datos de entrada del usuario se pueden recibir de cualquier forma, incluidos datos de entrada acústicos, verbales o táctiles. Además, un ordenador puede interactuar con un usuario enviando documentos a y recibiendo documentos desde un dispositivo utilizado por el usuario; por ejemplo, enviando páginas web a un navegador web en el dispositivo de un usuario en respuesta a las solicitudes recibidas desde el navegador web, o interactuando con una aplicación que se ejecuta en un dispositivo de usuario, por ejemplo, un teléfono inteligente o una tableta electrónica. Asimismo, un ordenador puede interactuar con un usuario enviando mensajes de texto u otras formas de mensaje a un dispositivo personal, por ejemplo, un teléfono inteligente que esté ejecutando una aplicación de mensajería, y recibiendo a cambio mensajes de respuesta del usuario.
Esta memoria descriptiva utiliza el término "configurado/a para" en relación con sistemas, aparatos y componentes de programa informático. Para que un sistema de uno o más ordenadores esté configurado para realizar determinadas operaciones o acciones significa que el sistema tiene instalado en el mismo software, firmware, hardware o una combinación de los mismos que, en funcionamiento, hacen que el sistema realice las operaciones o acciones. Para que uno o más programas informáticos estén configurados para realizar operaciones o acciones particulares significa que el o los programas incluyen instrucciones que, cuando son ejecutadas por el aparato de procesamiento de datos, hacen que el aparato realice las operaciones o acciones. Para que circuitos lógicos de propósito especial estén configurados para realizar operaciones o acciones particulares significa que los circuitos tienen una lógica electrónica que realiza las operaciones o acciones.
Aunque esta memoria descriptiva contiene muchos detalles específicos de formas de realización, éstos no deben interpretarse como limitaciones del alcance de lo que se reivindica, el cual está definido en las propias reivindicaciones, sino como descripciones de características que pueden ser específicas de determinadas formas de realización. Determinadas características que se describen en esta memoria descriptiva en el contexto de formas de realización independientes también pueden realizarse en combinación en una sola formas de realización. A la inversa, varias características que se describen en el contexto de una sola forma de realización también pueden realizarse en múltiples formas de realización por separado o en cualquier subcombinación adecuada. Además, aunque las características pueden haberse descrito anteriormente como actuando en determinadas combinaciones e incluso inicialmente ser reivindicadas como tales, una o más características de una combinación reivindicada pueden, en algunos casos, excluirse de la combinación, y la reivindicación puede referirse a una subcombinación o variación de una subcombinación.
Del mismo modo, aunque las operaciones se representan en los dibujos y se enumeran en las reivindicaciones en un orden particular, esto no debe entenderse como que se requiera que dichas operaciones se realicen en el orden particular mostrado o en orden secuencial, o que se realicen todas las operaciones ilustradas, para lograr los resultados deseados. En determinadas circunstancias, la multitarea y el procesamiento en paralelo pueden ser ventajosos. Además, la separación de diversos módulos y componentes de sistema en las formas de realización descritas anteriormente no debe entenderse como una exigencia de dicha separación en todas las formas de realización, y debe entenderse que los componentes de programa y los sistemas descritos pueden, por lo general, integrarse juntos en un único producto de software o empaquetarse en múltiples productos de software.
Se han descrito formas de realización particulares de la materia objeto. Otras realizaciones están dentro del alcance de las siguientes reivindicaciones. Por ejemplo, las acciones enumeradas en las reivindicaciones pueden realizarse en un orden diferente y aún así lograr resultados deseables. Como un ejemplo, los procesos representados en las figuras no requieren el orden particular mostrado, o el orden secuencial, para lograr los resultados deseados. En algunos casos, la multitarea y el procesamiento en paralelo pueden ser ventajosos.

Claims (10)

REIVINDICACIONES
1. Un procedimiento implementado por ordenador para implementar una llamada a contrato inteligente en una red de cadena de bloques, comprendiendo el procedimiento:
recuperar (402) una o más definiciones de contrato inteligente de la red de cadena de bloques, donde las definiciones de contrato inteligente incluyen una pluralidad de funciones de contrato de una pluralidad de contratos inteligentes almacenados en una cadena de bloques mantenida por la red de cadena de bloques;
generar (404) una interfaz de contrato inteligente que represente las definiciones de contrato inteligente, donde la interfaz de contrato inteligente incluye una pluralidad de funciones de interfaz (306) correspondientes a la pluralidad de funciones de contrato, estando la interfaz de contrato inteligente configurada para permitir que aplicaciones de software (302) llamen a cada una de las funciones de contrato llamando a una función de interfaz correspondiente; recibir (406) una llamada a una función de interfaz particular desde una aplicación de software, donde la llamada incluye parámetros de llamada correspondientes a parámetros de una función de contrato particular correspondiente a la función de interfaz particular;
en respuesta a la recepción de la llamada a la función de interfaz particular, generar (408) una llamada de contrato inteligente a la función de contrato particular que incluye los parámetros de llamada; y
transmitir (410) a la red de cadena de bloques la llamada a contrato inteligente.
2. El procedimiento de la reivindicación 1, que comprende además recibir (412) resultados de una ejecución de la llamada a contrato inteligente por parte de la red de cadena de bloques y proporcionar los resultados a la aplicación de software.
3. El procedimiento de cualquier reivindicación anterior, en el que la recuperación de las definiciones de contrato inteligente incluye la recuperación de código de octetos asociado a los contratos inteligentes almacenados en la cadena de bloques.
4. El procedimiento de cualquier reivindicación anterior, en el que la generación de una llamada de contrato inteligente a la función de contrato particular que incluye los parámetros de llamada incluye:
recuperar los parámetros de llamada de la llamada a la función de interfaz; y
convertir los parámetros de llamada recuperados de la llamada a la función de interfaz en parámetros de contrato inteligente para la función de contrato particular, para la comunicación con el contrato inteligente correspondiente en la red de cadena de bloques.
5. El procedimiento de cualquier reivindicación anterior, en el que cada parámetro de llamada tiene un tipo de parámetro que coincide con un tipo de parámetro de contrato de un parámetro correspondiente de la función de contrato particular.
6. El procedimiento de la reivindicación 5, en el que el tipo de parámetro incluye al menos uno de un entero, una cadena de caracteres o una matriz de octetos.
7. El procedimiento de cualquier reivindicación anterior, en el que la transmisión de la llamada de contrato inteligente a la red de cadena de bloques comprende la difusión de la llamada de contrato inteligente a una pluralidad de nodos de la red de cadena de bloques.
8. El procedimiento de cualquier reivindicación anterior, en el que la recuperación de las definiciones de contrato inteligente y la generación de la interfaz de contrato inteligente se realizan automáticamente en respuesta a un cambio en las definiciones de contrato inteligente almacenadas en la cadena de bloques.
9. Un sistema para implementar una llamada a contrato inteligente en una red de cadena de bloques, que comprende: uno o más procesadores; y
una o más memorias legibles por ordenador acopladas al uno o más procesadores y que tienen instrucciones almacenadas en las mismas que pueden ejecutarse por el uno o más procesadores para realizar el procedimiento de cualquiera de las reivindicaciones 1 a 8.
10. Un aparato para implementar una llamada a contrato inteligente en una red de cadena de bloques, comprendiendo el aparato una pluralidad de módulos para realizar el procedimiento de cualquiera de las reivindicaciones 1 a 8.
ES19725889T 2019-03-04 2019-03-04 Interfaz de software para contratos inteligentes Active ES2870919T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/076887 WO2019101236A2 (en) 2019-03-04 2019-03-04 Software interface for smart contracts

Publications (1)

Publication Number Publication Date
ES2870919T3 true ES2870919T3 (es) 2021-10-28

Family

ID=66631232

Family Applications (1)

Application Number Title Priority Date Filing Date
ES19725889T Active ES2870919T3 (es) 2019-03-04 2019-03-04 Interfaz de software para contratos inteligentes

Country Status (8)

Country Link
US (1) US10812255B2 (es)
EP (1) EP3610630B1 (es)
CN (1) CN110959282B (es)
ES (1) ES2870919T3 (es)
PL (1) PL3610630T3 (es)
SG (1) SG11201909076VA (es)
TW (1) TWI706284B (es)
WO (1) WO2019101236A2 (es)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11270383B1 (en) * 2017-05-24 2022-03-08 State Farm Mutual Automobile Insurance Company Blockchain subrogation claims with arbitration
US11706280B2 (en) * 2019-03-18 2023-07-18 Red Hat, Inc. Methods and system for auditing batch jobs using blockchain
CN110532115B (zh) * 2019-09-04 2021-03-05 北京海益同展信息科技有限公司 用于开发智能合约的系统、方法和装置
CN110633076B (zh) * 2019-09-16 2021-05-04 杭州趣链科技有限公司 一种自动生成Solidity智能合约Java客户端程序的方法
CN112270160A (zh) * 2020-10-10 2021-01-26 中国信息通信研究院 一种基于智能合约分配标识符的方法及装置
CN112583608B (zh) * 2021-02-24 2021-05-28 浙江口碑网络技术有限公司 协作处理方法、装置及设备
CN113472512A (zh) * 2021-06-10 2021-10-01 东软集团股份有限公司 智能合约执行方法、装置、存储介质及电子设备

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9858401B2 (en) * 2011-08-09 2018-01-02 Biogy, Inc. Securing transactions against cyberattacks
US11130042B2 (en) * 2016-02-02 2021-09-28 Bao Tran Smart device
US9849364B2 (en) * 2016-02-02 2017-12-26 Bao Tran Smart device
WO2017153495A1 (en) * 2016-03-08 2017-09-14 Appii Pty Ltd A system and method for creating a database of independently validated educational and work experience profiles (curricula vitae) using blockchain smart contracts
US10046228B2 (en) * 2016-05-02 2018-08-14 Bao Tran Smart device
US10022613B2 (en) * 2016-05-02 2018-07-17 Bao Tran Smart device
CN106919419A (zh) * 2017-02-03 2017-07-04 中钞信用卡产业发展有限公司北京智能卡技术研究院 区块链上的智能合约程序的更新方法及装置
US10158479B2 (en) * 2017-02-06 2018-12-18 Northern Trust Corporation Systems and methods for generating, uploading and executing code blocks within distributed network nodes
US10356102B2 (en) * 2017-02-24 2019-07-16 Verizon Patent And Licensing Inc. Permissions using blockchain
US20180293578A1 (en) * 2017-04-07 2018-10-11 Blossom Llc System and methods for implementing secure financial transactions
CN107147704B (zh) * 2017-04-21 2019-12-13 杭州趣链科技有限公司 一种面向区块链的通用服务中间件系统
CN107274186A (zh) * 2017-05-11 2017-10-20 上海点融信息科技有限责任公司 在区块链中获得智能合约接口的方法和设备
US10146792B1 (en) * 2017-05-31 2018-12-04 Symbiont.Io, Inc. Systems and methods for implementing a programming model for smart contracts within a decentralized computer network
US11461768B2 (en) * 2017-08-21 2022-10-04 American Express Travel Related Services Company, Inc. Systems and methods for data file transfer balancing and control on blockchain
US20190058582A1 (en) * 2017-08-21 2019-02-21 NIIT Technology Ltd Accessing blockchain data from applications
CN107688927A (zh) * 2017-09-19 2018-02-13 中国银行股份有限公司 一种调用区块链上的智能合约的方法及系统
US10528551B2 (en) * 2017-09-29 2020-01-07 Oracle International Corporation System and method for providing a representational state transfer proxy service for a blockchain cloud service
US20190102163A1 (en) * 2017-10-04 2019-04-04 Dispatch Labs, LLC System and Method for a Blockchain-Supported Programmable Information Management and Data Distribution System
US11256712B2 (en) * 2018-02-05 2022-02-22 Accenture Global Solutions Limited Rapid design, development, and reuse of blockchain environment and smart contracts
CA3098150A1 (en) * 2018-03-30 2019-10-03 Exposition Park Holdings SEZC Blockchain loan transaction systems and methods
CN108510389B (zh) * 2018-03-30 2020-12-18 深圳前海微众银行股份有限公司 基于区块链的智能合约调用方法、设备及可读存储介质
KR20210024994A (ko) * 2018-03-30 2021-03-08 엑스포지션 파크 홀딩스 에스이지씨 디지털 자산 교환
US20190361917A1 (en) * 2018-05-25 2019-11-28 Bao Tran Smart device
CN108765158B (zh) 2018-05-31 2020-11-24 杭州溪塔科技有限公司 一种基于区块链的智能合约引擎系统及其合约执行方法
CN109274524B (zh) * 2018-08-28 2021-12-24 广东工业大学 一种基于联盟区块链的设备管理与共享系统

Also Published As

Publication number Publication date
WO2019101236A2 (en) 2019-05-31
WO2019101236A3 (en) 2020-01-02
EP3610630B1 (en) 2021-03-03
TW202034199A (zh) 2020-09-16
TWI706284B (zh) 2020-10-01
PL3610630T3 (pl) 2021-07-26
EP3610630A4 (en) 2020-06-17
US10812255B2 (en) 2020-10-20
US20200287706A1 (en) 2020-09-10
SG11201909076VA (en) 2019-10-30
CN110959282A (zh) 2020-04-03
EP3610630A2 (en) 2020-02-19
CN110959282B (zh) 2022-05-31

Similar Documents

Publication Publication Date Title
ES2870919T3 (es) Interfaz de software para contratos inteligentes
RU2731417C1 (ru) Параллельное выполнение транзакций в сети цепочек блоков на основе белых списков смарт-контрактов
RU2738826C1 (ru) Параллельное выполнение транзакций в сети блокчейнов
CN110520884B (zh) 基于可信执行环境的链外智能合约服务
ES2870657T3 (es) Verificación de integridad de los datos almacenados en una cadena de bloques de consorcio utilizando una cadena lateral pública
US20210232558A1 (en) Data isolation in a blockchain network
US20190027237A1 (en) Blockchain network for secure exchange of healthcare information
KR102145701B1 (ko) 안전한 다자 계산에서 참가자에 의한 입력 데이터의 허위 표시 방지
KR20200078420A (ko) 블록체인 네트워크에서의 데이터 아이솔레이션
KR20200011949A (ko) 미결정 소스로부터 미결정 데이터를 블록체인 트랜잭션의 잠금 스크립트에 안전하게 제공하는 기법
US20210051011A1 (en) Performing map iterations in a blockchain-based system
BR112019016188A2 (pt) método implementado por computador para o controle do acesso aos contratos inteligentes, meio de armazenamento legível por computador não transitório e sistema
US20210119806A1 (en) Performing map iterations in a blockchain-based system
JP2023518761A (ja) ハッシュチェインを使用してスカラーデジタル資産を表すための方法及びシステム
US20210344510A1 (en) Computer-implemented system and method including public key combination verification
US20230275765A1 (en) Method and system for quantum-resistant hashing scheme
KR20240005957A (ko) 양자 내성 해싱 스킴을 위한 방법 및 시스템
JP2024518487A (ja) 量子耐性ハッシュ化スキームについての方法及びシステム