ES2879907T3 - Ejecución paralela de transacciones en una red de cadena de bloques basada en listas blancas de contratos inteligentes - Google Patents

Ejecución paralela de transacciones en una red de cadena de bloques basada en listas blancas de contratos inteligentes Download PDF

Info

Publication number
ES2879907T3
ES2879907T3 ES18865725T ES18865725T ES2879907T3 ES 2879907 T3 ES2879907 T3 ES 2879907T3 ES 18865725 T ES18865725 T ES 18865725T ES 18865725 T ES18865725 T ES 18865725T ES 2879907 T3 ES2879907 T3 ES 2879907T3
Authority
ES
Spain
Prior art keywords
transactions
smart contract
blockchain network
nodes
groups
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
ES18865725T
Other languages
English (en)
Inventor
Ning Xia
Guilu Xie
Fuxi Deng
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 ES2879907T3 publication Critical patent/ES2879907T3/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/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
    • 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/466Transaction processing
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3827Use of message hashing
    • 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/389Keeping log of transactions for guaranteeing non-repudiation of a transaction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/101Access control lists [ACL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/102Entity profiles
    • 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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Accounting & Taxation (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Storage Device Security (AREA)

Abstract

Un método (500) implementado por computadora para la ejecución en paralelo de transacciones en una red (212) de cadena de bloques, el método que comprende: identificar (502) una pluralidad de transacciones a ser ejecutadas en la cadena (216) de bloques, en donde las transacciones están dispuestas en un orden (400) de ejecución, en donde las transacciones incluyen una o más llamadas (405a-b, 410a-b, 415a-e, 420a-c) de contrato inteligente a uno o más contratos (302) inteligentes, cada una de la una o más llamadas de contrato inteligente está asociada con una lista (306) blanca que identifica una o más cuentas (308) que están autorizadas para ejecutar el respectivo contrato inteligente llamado por cada una de la una o más llamadas de contrato inteligente, y en donde el orden de ejecución incluye una llamada (405c) de contrato inteligente a un contrato inteligente, que no está asociada con una lista blanca y se dispone después de la pluralidad de transacciones; identificar (504) grupos (455, 460, 465) de transacciones dentro de la pluralidad de transacciones, en donde las transacciones en cada uno de los grupos están asociadas con un conjunto en particular de cuentas en la red de cadena de bloques, y en donde el conjunto en particular de cuentas asociado con cada una de la una o más llamadas de contrato inteligente se determina en base a la lista blanca asociada con cada una de la una o más llamadas de contrato inteligente; instruir (506) a los nodos de la red de cadena de bloques para que ejecuten cada uno de los grupos de transacciones en paralelo, en donde la ejecución de cada uno de los grupos de transacciones incluye ejecutar las transacciones dentro del grupo en serie y de acuerdo con el orden de ejecución; determinar (508) que los nodos de la red de cadena de bloques han completado la ejecución de todos los grupos de transacciones; y en respuesta a determinar que los nodos de la red de cadena de bloques han completado la ejecución de todos los grupos de transacciones, instruir (510) a los nodos de la red de cadena de bloques para que ejecuten la llamada de contrato inteligente que no está asociada con una lista blanca, la llamada (405c) de contrato inteligente que no está asociado con una lista blanca que representa un punto de sincronización donde converge la ejecución en paralelo de todos los grupos de transacciones.

Description

DESCRIPCIÓN
Ejecución paralela de transacciones en una red de cadena de bloques basada en listas blancas de contratos inteligentes
ANTECEDENTES
Los sistemas de contabilidad distribuida (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 conocen comúnmente como redes de cadena de bloques sin hacer referencia a un caso de usuario en particular. Los ejemplos de tipos de redes de cadena de bloques pueden incluir redes de cadena de bloques públicas, redes de cadena de bloques privadas y redes de cadena de bloques de consorcio. Una red de cadenas de bloques de consorcio se proporciona a un grupo selecto de entidades, que controlan el proceso de consenso, e incluye una capa de control de acceso.
Un contrato inteligente es un conjunto de instrucciones de software ejecutables almacenadas y ejecutadas por una red de cadena de bloques. Los contratos inteligentes generalmente se almacenan sin cifrar y, por lo tanto, son visibles para todos los participantes en la red de cadena de bloques. Los participantes en la red de cadena de bloques pueden escribir y publicar sus propios contratos inteligentes y, en general, también pueden llamar a contratos inteligentes que ya se han desplegado en la red de cadena de bloques. Xiwei Xu et al., "A Pattern Collection for Blockchain-based Applications", describen la colección de una lista de patrones para aplicaciones basadas en cadena de bloques. La colección de patrones se clasifica en cuatro tipos, incluida la interacción con patrones del mundo externo, patrones de gestión de datos, patrones de seguridad y patrones estructurales de contratos. Algunos patrones están diseñados teniendo en cuenta la naturaleza de la cadena de bloques y cómo se puede introducir específicamente en aplicaciones del mundo real. Otras son variantes de patrones de diseño existentes aplicados en el contexto de aplicaciones basadas en cadena de bloques y contratos inteligentes.
El documento anónimo, "aelf -A Multi-Chain Parallel Computing Blockchain Framework", describe una arquitectura de cadena de bloques eficiente que incorpora principios y tecnologías de diseño de TI del estado de la técnica para llevar la cadena de bloques a un estándar comercial. El sistema operativo de aelf se describe como el análisis del estado estático de las transacciones y la evaluación del rango de datos afectados de cada una de las transacciones. Luego, se pueden procesar múltiples transacciones sin conflictos de lectura/escritura en paralelo, sin afectar al resultado de cada una de las transacciones. Durante el proceso de formación de bloques, los nodos asignan transacciones a diferentes grupos en base al mutex de las transacciones. Las transacciones dentro de un grupo se procesarán en secuencia, mientras que todos los grupos se procesarán simultáneamente. Las transacciones especiales que no se pueden procesar en paralelo se procesarán opcionalmente en un grupo no paralelo, con tarifas de transacción suficientes o se rechazarán de otra manera.
Un problema que se encuentra en las redes de cadena de bloques es la velocidad a la que se procesan las transacciones (incluidas las llamadas a contratos inteligentes). Generalmente, los nodos en la red de cadena de bloques procesan las transacciones en serie en el orden en que se envían. Esto puede provocar un bajo rendimiento de transacciones y retrasos entre el momento en que se envía una transacción y su liquidación.
Las técnicas para abordar estos problemas de rendimiento de transacciones en una red de cadena de bloques serían ventajosas.
RESUMEN
La invención se define en las reivindicaciones adjuntas. Las implementaciones de esta memoria descriptiva incluyen métodos implementados por computadora para la ejecución en paralelo de transacciones en una red de cadena de bloques basada en listas blancas de contratos inteligentes. Más particularmente, las implementaciones de esta memoria descriptiva están dirigidas a técnicas para ejecutar grupos de transacciones y llamadas a contratos inteligentes que tienen una dependencia compartida en paralelo con otros grupos.
En algunas implementaciones, las acciones incluyen identificar una pluralidad de transacciones a ser ejecutadas en la cadena de bloques, en donde las transacciones se organizan en una orden de ejecución, en donde las transacciones incluyen una o más llamadas de contrato inteligente a contratos inteligentes cada uno de los cuales tiene una lista blanca que identifica una o más cuentas que están autorizadas para ejecutar el contrato inteligente, y en donde la orden de ejecución incluye una llamada de contrato inteligente a un contrato inteligente que no tiene una lista blanca dispuesta después de la pluralidad de transacciones; identificar grupos de transacciones dentro de la pluralidad de transacciones, en donde las transacciones en cada uno de los grupos están asociadas con un conjunto en particular de cuentas en la red de cadena de bloques, y donde el conjunto en particular de cuentas asociadas con cada una de las una o más llamadas de contrato inteligente se determina en base a la lista blanca asociada con la llamada de contrato inteligente; instruir a los nodos de la red de cadena de bloques para que ejecuten cada uno de los grupos de transacciones en paralelo, en donde la ejecución de cada uno de los grupos de transacciones incluye ejecutar las transacciones dentro del grupo en serie y de acuerdo con el orden de ejecución; determinar que los nodos de la red de cadena de bloques han completado la ejecución de todos los grupos de transacciones; y, en respuesta, determinar que los nodos de la red de cadena de bloques han completado la ejecución de todos los grupos de transacciones, instruir a los nodos de la red de cadena de bloques para que ejecuten la llamada de contrato inteligente que no incluye una lista blanca. Otras implementaciones incluyen sistemas, aparatos, y programas informáticos, configurados para realizar las acciones de los métodos, codificados en dispositivos de almacenamiento informático.
Cada una de estas y otras implementaciones puede incluir opcionalmente una o más de las siguientes características: En algunos casos, instruir a los nodos de la red de cadena de bloques para que ejecuten cada uno de los grupos de transacciones en paralelo incluye instruir a un primer conjunto de nodos para que ejecuten un primer grupo de transacciones e instruir a un primer grupo de nodos para que ejecuten un segundo grupo de transacciones.
En algunas implementaciones, determinar que los nodos de la red de cadena de bloques han completado la ejecución de todos los grupos de transacciones incluye determinar que todas las transacciones en la pluralidad de transacciones se han incluido en uno o más bloques almacenados en una cadena de bloques mantenida por la red de cadena de bloques.
En algunos casos, instruir a los nodos de la red de cadena de bloques para que ejecuten cada uno de los grupos de transacciones en paralelo incluye enviar un mensaje a los nodos a través de una red.
En algunos casos, identificar la pluralidad de transacciones a ser ejecutadas en la cadena de bloques incluye recibir transacciones difundidas a la red de cadena de bloques.
En algunas implementaciones, la lista blanca se incluye dentro de un conjunto de instrucciones ejecutables asociadas con cada uno de los contratos inteligentes.
En algunos casos, la lista blanca está separada de un conjunto de instrucciones ejecutables asociadas con cada uno de los contratos inteligentes.
En algunas implementaciones, la lista blanca incluye una identificación de la una o más cuentas que están autorizadas para acceder a cada uno de los contratos inteligentes.
En algunos casos, la lista blanca incluye una referencia a una ubicación externa a cada uno de los contratos inteligentes que almacena el uno o más que están autorizados para acceder a cada uno de los contratos inteligentes. Esta memoria descriptiva también proporciona uno o más medios de almacenamiento legibles por computadora 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 métodos 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 computadora 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.
DESCRIPCIÓN DE LOS DIBUJOS
La FIG. 1 muestra un ejemplo de un entorno que se puede utilizar 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 muestra un ejemplo de un entorno para habilitar listas blancas de contratos inteligentes de acuerdo con implementaciones de esta memoria descriptiva.
La FIG. 4A representa un ejemplo de un orden de ejecución para transacciones en una red de cadena de bloques de acuerdo con implementaciones de esta memoria descriptiva.
La FIG. 4B representa un ejemplo de un orden de ejecución en paralelo para transacciones en una red de cadena de bloques de acuerdo con implementaciones de esta memoria descriptiva.
FIG. 5 representa un ejemplo de un proceso que se puede ejecutar de acuerdo con implementaciones de esta memoria descriptiva.
FIG. 6 representa ejemplos de módulos de un aparato de acuerdo con implementaciones de esta memoria descriptiva.
Los símbolos de referencia similares en los diversos dibujos indican elementos similares.
DESCRIPCIÓN DETALLADA
Las implementaciones de esta memoria descriptiva incluyen métodos implementados por computadora para hacer cumplir las listas blancas de cuentas para contratos inteligentes. Más particularmente, las implementaciones de esta memoria descriptiva están dirigidas a técnicas para permitir que el creador de un contrato inteligente defina una lista blanca que especifique qué cuentas pueden llamar al contrato inteligente.
Para proporcionar un contexto adicional para las implementaciones de esta memoria descriptiva, y como se introdujo anteriormente, los sistemas de contabilidad distribuida (DLS), que también pueden denominarse redes de consenso (p. ej., compuestas por nodos de igual a igual) y redes de cadena de bloques, permiten realizar a entidades participantes transacciones de forma segura e inmutable y almacenar datos. El término cadena de bloques se utiliza en el presente documento para referirse generalmente a un DLS sin referencia a un caso de uso particular.
Una cadena de bloques es una estructura de datos que almacena transacciones de manera que las transacciones son inmutables y pueden verificarse posteriormente. Una cadena de bloques incluye uno o más bloques. Cada uno de los bloques de la cadena está vinculado a un bloque anterior inmediatamente antes de él en la cadena al incluir un resumen criptográfico del bloque anterior. Cada uno de los bloques también incluye una marca de tiempo, su propio resumen criptográfico y una o más transacciones. Las transacciones, que ya han sido verificadas por los nodos de la red de cadena de bloques, se procesan y codifican en un árbol Merkle. Un árbol Merkle es una estructura de datos en la que los datos en los nodos hoja del árbol están resumidos, y todos los resúmenes en cada una de las ramas del árbol se concatenan en la raíz de la rama. Este proceso continúa subiendo por el árbol hasta la raíz de todo el árbol, que almacena un resumen que es representativo de todos los datos del árbol. Un resumen que pretende ser de una transacción almacenada en el árbol se puede verificar rápidamente determinando si es consistente con la estructura del árbol.
Mientras que una cadena de bloques es una estructura de datos para almacenar transacciones, una red de cadenas de bloques es una red de nodos de cálculo que administran, actualizan y mantienen una o más cadenas de bloques. Como se presentó anteriormente, una red de cadena de bloques se puede proporcionar como una red de cadena de bloques pública, una red de cadena de bloques privada o una red de cadena de bloques de consorcio.
En una red de cadena de bloques pública, el proceso de consenso está 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 de contabilidad distribuido) de la red de cadena de bloques. Las redes de cadena de bloques públicas de ejemplo incluyen redes de pago de igual a igual particulares que aprovechan un libro de contabilidad distribuido, denominado cadena de bloques. Como se señaló anteriormente, el término cadena de bloques, sin embargo, se utiliza para referirse en general a libros de contabilidad distribuidos sin una referencia particular a una red de cadena de bloques particular.
En general, una red de cadena de bloques de consorcio 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.
Se contempla que las implementaciones de esta memoria descriptiva se puedan realizar en cualquier tipo apropiado de red de cadena de bloques.
Las implementaciones de esta memoria descriptiva se describen con más detalle en el presente documento en vista del contexto anterior. Más particularmente, y como se presentó anteriormente, las implementaciones de esta memoria descriptiva están dirigidas a técnicas para permitir que el creador de un contrato inteligente defina una lista blanca que especifique qué cuentas pueden llamar al contrato inteligente.
Generalmente, un contrato inteligente es un conjunto de una o más instrucciones informáticas que se almacenan en una cadena de bloques y se ejecutan por los nodos de una red de cadenas 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.
Esta memoria descriptiva describe técnicas que permiten al creador de un contrato inteligente especificar una lista de cuentas (una lista blanca) en la red de cadena de bloques a las que se les permite llamar al contrato inteligente. Cuando un participante en la red de cadena de bloques llama a un contrato inteligente implementado en la cadena de bloques administrada por la red de cadena de bloques, el participante proporciona una cuenta como parte de la llamada. La red de cadena de bloques verifica la lista blanca asociada con el contrato inteligente para la cuenta del participante. Si la cuenta del participante está en la lista blanca, la red de cadena de bloques ejecuta la llamada de contrato inteligente. Si la cuenta del participante no está en la lista blanca, la red de cadena de bloques no ejecuta la llamada de contrato inteligente. La red de cadena de bloques también puede almacenar un registro del intento fallido del participante de acceder al contrato inteligente.
Las implementaciones de esta memoria descriptiva están dirigidas a ejecutar grupos de transacciones (incluidas las llamadas de contactos inteligentes) que tienen una dependencia compartida (es decir, que afectan a las mismas cuentas) en paralelo con otros grupos. Las cuentas afectadas por una llamada de contrato inteligente se pueden determinar en base a la lista blanca asociada con el contrato inteligente. Debido a que las transacciones en diferentes grupos no tienen dependencia entre sí (p. ej., no afectan a las mismas cuentas en la red de cadena de bloques), el orden en el que las transacciones en diferentes grupos se ejecutan una con respecto a otra no afecta el estado general de la red de cadena de bloques. Por lo tanto, estas transacciones se pueden ejecutar en paralelo, lo que puede conducir a un aumento en el rendimiento de transacciones en una red de cadena de bloques.
La FIG. 1 representa un ejemplo de un entorno 100 que puede utilizarse para ejecutar implementaciones de esta memoria descriptiva. En algunos ejemplos, el entorno 100 permite a las entidades participar en una red 102 de cadena de bloques. El entorno 100 incluye dispositivos 106, 108 informáticos y una red 110. En algunos ejemplos, la red 110 incluye una red de área local (LAN), red de área amplia (WAN), el Internet o una combinación de las mismas, y conecta sitios web, dispositivos de usuario (p. ej., dispositivos informáticos) y sistemas de servidor. En algunos ejemplos, se puede acceder a la red 110 a través de un enlace de comunicaciones cableado y/o inalámbrico. En algunos ejemplos, la red 110 permite la comunicación con y dentro de la red 102 de cadena de bloques. En general, la red 110 representa una o más redes de comunicaciones. 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 computadoras interconectadas mediante una red y que funciona como un sistema de procesamiento distribuido.
En el ejemplo representado, los sistemas 106, 108 informáticos pueden incluir cada uno cualquier sistema informático apropiado que permita la participación como un nodo en la red 102 de cadena de bloques. Ejemplos de dispositivos informáticos incluyen, sin limitación, un servidor, una computadora de escritorio, una computadora portátil, una computadora tableta y un teléfono inteligente. En algunos ejemplos, los sistemas 106, 108 informáticos alojan uno o más servicios implementados por computadora para interactuar con la red 102 de cadena de bloques. Por ejemplo, el sistema 106 informático puede alojar servicios implementados por computadora de una primera entidad (p. ej., Participante A), tal como el sistema de gestión de transacciones que utiliza la primera entidad para gestionar sus transacciones con una o más otras entidades (p. ej., otros participantes). El sistema 108 informático puede alojar servicios implementados por computadora de una segunda entidad (p. ej., Participante B), tal como un sistema de gestión de transacciones que utiliza la segunda entidad para gestionar sus transacciones con una o más otras entidades (p. ej., otros participantes). En el ejemplo de la FIG. 1, la red 102 de cadena de bloques se representa como una red de igual a igual de nodos, y los sistemas 106, 108 informáticos proporcionan nodos de la primera entidad y la segunda entidad, respectivamente, que participan en la red 102 de cadena de bloques.
FIG. 2 representa un ejemplo de una arquitectura 200 conceptual de acuerdo con implementaciones de esta memoria descriptiva. El ejemplo de una arquitectura 200 conceptual incluye los sistemas 202, 204, 206 participantes que corresponden al Participante A, Participante B y Participante C, respectivamente. Cada uno de los participantes (p. ej., usuario, empresa) participa en una red 212 de cadena de bloques proporcionada como una red de igual a igual que incluye una pluralidad de nodos 214, al menos algunos de los cuales registran información de manera inmutable en una cadena 216 de bloques. Aunque se representa esquemáticamente una sola cadena 216 de bloques dentro de la red 212 de cadena de bloques, se proporcionan múltiples copias de la cadena 216 de bloques, y se mantienen a través de la red 212 de cadena de bloques, como se describe con más detalle en el presente documento.
En el ejemplo representado, cada uno de los sistemas 202, 204, 206 participantes se proporcionan por, o en nombre del Participante A, Participante B y Participante C, respectivamente, y funciona como un nodo 214 respectivo dentro de la red de cadena de bloques. Como se utiliza en el presente documento, un nodo en general se refiere a un sistema individual (p. ej., computadora, servidor) que está conectado a la red 212 de cadena de bloques y permite que un participante respectivo participe en la red de cadena de bloques. En el ejemplo de la FIG. 2, un participante corresponde a cada uno de los nodos 214. Se contempla, sin embargo, que un participante pueda operar múltiples nodos 214 dentro de la red 212 de cadena de bloques, y/o múltiples participantes puedan compartir un nodo 214. En algunos ejemplos, los sistemas 202, 204, 206 participantes se comunican con, o a través de, la red 212 de cadena de bloques utilizando un protocolo (p. ej., protocolo de transferencia de hipertexto seguro (HTTPS)) y/o utilizando llamadas a procedimiento remoto (RPC).
Los nodos 214 pueden tener grados variables de participación dentro de la red 212 de cadena de bloques. Por ejemplo, algunos nodos 214 pueden participar en el proceso de consenso (p. ej., como nodos cuidadores que añaden bloques a la cadena 216 de bloques), mientras que otros nodos 214 no participan en el proceso de consenso. Por dar otro ejemplo, algunos nodos 214 almacenan una copia completa de la cadena 216 de bloques, mientras que otros nodos 214 solo almacenan copias de porciones de la cadena 216 de bloques. Por ejemplo, los privilegios de acceso a datos pueden limitar los datos de cadena de bloques que un participante respectivo almacena dentro de su sistema respectivo. En el ejemplo de la FIG. 2, los sistemas 202, 204, 206 participantes almacenan copias 216', 216", 216"' completas respectivas de la cadena 216 de bloques.
Una cadena de bloques (p. ej., la cadena 216 de bloques de la FIG. 2) está formada por una cadena de bloques, cada uno de los bloques almacena datos. Los ejemplos de datos incluyen datos de transacción representativos de una transacción entre dos o más participantes. Si bien las transacciones se utilizan en el presente documento a modo de ejemplo no limitativo, se contempla que cualquier dato apropiado se pueda almacenar en una cadena de bloques (p. ej., documentos, imágenes, vídeos, audio). Los ejemplos de transacciones pueden incluir, sin limitación, intercambios de algo de valor (p. ej., activos, productos, servicios). Los datos de transacción se almacenan de forma inmutable dentro de la cadena de bloques. Es decir, los datos de transacción no se pueden cambiar.
Antes de almacenarlos en un bloque, los datos de transacción se resumen. El resumen es un proceso de transformación de los datos de transacción (proporcionados como datos de cadena) en un valor de resumen de longitud fija (también proporcionado como datos de cadena). No es posible deshacer el resumen del valor de resumen para obtener los datos de transacción. El resumen asegura que incluso un pequeño cambio en los datos de transacción da como resultado un valor de resumen completamente diferente. Además, y como se indicó anteriormente, el valor de resumen es de longitud fija. Es decir, no importa el tamaño de los datos de transacción, la longitud del valor de resumen es fija. El resumen incluye procesar los datos de transacción a través de una función de resumen para generar el valor de resumen. Un ejemplo de función de resumen incluye, sin limitación, el algoritmo de resumen seguro (SHA)-256, que genera valores de resumen de 256 bits.
Los datos de transacción de múltiples transacciones se resumen y almacenan en un bloque. Por ejemplo, se proporcionan valores de resumen de dos transacciones y ellos mismos se resumen para proporcionar otro resumen. Este proceso se repite hasta que, para que todas las transacciones a ser almacenadas en un bloque, se proporciona un único valor de resumen. Este valor de resumen se denomina resumen de raíz de Merkle y se almacena en un encabezado del bloque. Un cambio en cualquiera de las transacciones dará como resultado un cambio en su valor de resumen y, en última instancia, un cambio en el resumen de raíz de Merkle.
Los bloques se agregan a la cadena de bloques a través de un protocolo de consenso. Múltiples nodos dentro de la red de cadena de bloques participan en el protocolo de consenso y compiten para que se añada un bloque a la cadena de bloques. Dichos nodos se conocen como mineros (o nodos mineros). La POW, presentada anteriormente, se utiliza como un ejemplo no limitativo.
Los nodos mineros ejecutan el proceso de consenso para añadir transacciones a la cadena de bloques. Aunque múltiples nodos mineros participan en el proceso de consenso, solo un nodo minero puede escribir el bloque en la cadena de bloques. Es decir, los nodos mineros compiten en el proceso de consenso para que su bloque se agregue a la cadena de bloques. Más detalladamente, un nodo minero recopila periódicamente transacciones pendientes de un grupo de transacciones (p. ej., hasta un límite predefinido en el número de transacciones que se pueden incluir en un bloque, si las hay). El grupo de transacciones incluye mensajes de transacción de los participantes en la red de cadena de bloques. El nodo minero construye un bloque y añade las transacciones al bloque. Antes de añadir las transacciones al bloque, el nodo minero verifica si alguna de las transacciones ya está incluida en un bloque de la cadena de bloques. Si una transacción ya está incluida en otro bloque, la transacción se descarta.
El nodo minero genera un encabezado de bloque, resume todas las transacciones en el bloque y combina el valor de resumen en pares para generar más valores de resumen hasta que se proporciona un solo valor de resumen para todas las transacciones en el bloque (el resumen raíz de Merkle). Este resumen se añade al encabezado del bloque. El minero también determina el valor de resumen del bloque más reciente en la cadena de bloques (es decir, el último bloque añadido a la cadena de bloques). El nodo minero también añade un valor de número aleatorio utilizado una sola vez y una marca de tiempo al encabezado del bloque. En un proceso de minería, el nodo minero intenta encontrar un valor de resumen que cumpla con los parámetros requeridos. El nodo minero sigue cambiando el valor de número aleatorio utilizado una sola vez hasta encontrar un valor de resumen que cumpla con los parámetros requeridos.
Cada uno de los mineros en la red de cadena de bloques intenta encontrar un valor de resumen que cumpla con los parámetros requeridos y, de esta manera, competir entre sí. Finalmente, uno de los nodos mineros encuentra un valor de resumen que cumple con los parámetros requeridos y lo anuncia a todos los demás nodos mineros en la red de cadena de bloques. Los otros nodos mineros verifican el valor de resumen y, si se determina que es correcto, verifican cada una de las transacciones en el bloque, aceptan el bloque y añaden el bloque a su copia de la cadena de bloques. De esta manera, un estado global de la cadena de bloques es consistente en todos los nodos mineros dentro de la red de cadena de bloques. El proceso descrito anteriormente es el protocolo de consenso de POW.
Con referencia a la FIG. 2, se proporciona un ejemplo no limitativo. En este ejemplo, el participante A desea enviar un monto al participante B. El participante A genera un mensaje de transacción (p. ej., que incluye los campos De, Para y Valor) y envía el mensaje de transacción a la red de cadena de bloques, que añade el mensaje de transacción a un grupo de transacciones. Cada uno de los nodos mineros en la red de cadena de bloques crea un bloque y coge todas las transacciones del grupo de transacciones (p. ej., hasta un límite predefinido en el número de transacciones que se pueden añadir a un bloque, si las hay), y añade las transacciones al bloque. De esta manera, la transacción publicada por el Participante A se añade a los bloques de los nodos mineros.
En algunas redes de cadena de bloques, la criptografía se implementa para mantener la privacidad de las transacciones. Por ejemplo, si dos nodos quieren mantener una transacción privada, de modo que otros nodos en la red de cadena de bloques no puedan discernir los detalles de la transacción, los nodos pueden cifrar los datos de transacción. Los ejemplos de métodos criptográficos incluyen, sin limitación, cifrado simétrico y cifrado asimétrico. El cifrado simétrico se refiere a un proceso de cifrado que utiliza una única clave tanto para el cifrado (generar texto cifrado a partir del texto plano) como para el descifrado (generar texto plano a partir del texto cifrado). En el cifrado simétrico, la misma clave está disponible para múltiples nodos, de modo que cada uno de los nodos puede cifrar/descifrar datos de transacción.
El cifrado asimétrico utiliza pares de claves, cada uno de los cuales incluye una clave privada y una clave pública, siendo la clave privada conocida solo por un respectivo nodo y la clave pública siendo conocida por cualquiera o todos los demás nodos en la red de cadena de bloques. Un nodo puede utilizar la clave pública de otro nodo para cifrar datos, y los datos cifrados se pueden descifrar utilizando la clave privada de otro nodo. Por ejemplo, y haciendo referencia de nuevo a la FIG. 2, el participante A puede utilizar la clave pública del participante B para cifrar los datos y enviar los datos cifrados al participante B. El participante B puede utilizar su clave privada para descifrar los datos cifrados (texto cifrado) y extraer los datos originales (texto plano). Los mensajes cifrados con la clave pública de un nodo solo se pueden descifrar utilizando la clave privada del nodo.
El cifrado asimétrico se utiliza para proporcionar firmas digitales, lo que permite a los participantes en una transacción confirmar a otros participantes en la transacción, así como la validez de la transacción. Por ejemplo, un nodo puede firmar digitalmente un mensaje y otro nodo puede confirmar que el mensaje fue enviado por el nodo en base la firma digital del Participante A. Las firmas digitales también se pueden utilizar para garantizar que los mensajes no sean manipulados en tránsito. Por ejemplo, y haciendo referencia de nuevo a la FIG. 2, el participante A debe enviar un mensaje al participante B. El participante A genera un resumen del mensaje y luego, utilizando su clave privada, cifra el resumen para proporcionar una firma digital como resumen cifrado. El participante A agrega la firma digital al mensaje y envía el mensaje con la firma digital al participante B. El participante B descifra la firma digital utilizando la clave pública del participante A y extrae el resumen. El participante B resume el mensaje y compara los resúmenes. Si los resúmenes son iguales, el participante B puede confirmar que el mensaje era realmente del participante A y que no se manipuló.
La FIG. 3 representa un ejemplo de un entorno 300 para habilitar listas blancas de contratos inteligentes de acuerdo con implementaciones de esta memoria descriptiva. Como se muestra, un contrato 302 inteligente se almacena en la cadena 216 de bloques de la red 212 de cadena de bloques de la FIG. 2. El contrato 302 inteligente incluye instrucciones 304 y una lista 306 blanca. La lista 306 blanca incluye una o más cuentas 308.
Como se describió anteriormente, el contrato 302 inteligente se almacena en la cadena 216 de bloques. Los participantes en la red 212 de cadena de bloques pueden llamar al contrato 302 inteligente, lo que puede hacer que los nodos 214 de la red 212 de cadena de bloques ejecuten las instrucciones 304. En algunas implementaciones, los nodos 214 de la red de cadena de bloques comprobarán si una cuenta especificada por el llamador del contrato inteligente está incluida en una o más cuentas 308 especificadas por la lista 306 blanca. Si la cuenta está en la lista 306 blanca, los nodos 214 ejecutan las instrucciones 304. Si la cuenta no está en la lista 306 blanca, los nodos 214 no ejecutan las instrucciones 304.
En algunas implementaciones, las instrucciones 304 pueden ser código de software escrito en un lenguaje de programación de alto nivel soportado por los nodos 214 de la red 212 de cadena de bloques, tal como, por ejemplo, Solidity, Serpent, LLL, Viper, Mutan, C, C +, Python, Java, Javascript u otros lenguajes de programación. Las instrucciones 304 también se pueden ser código de bytes compilado generado a partir del código de software asociado con el contrato 302 inteligente.
En algunas implementaciones, la lista 306 blanca y las cuentas 308 se almacenan en la cadena 216 de bloques junto con el contrato 302 inteligente. En algunos casos, la lista 306 blanca y las cuentas 308 se incluyen dentro de las instrucciones 304 del contrato 302 inteligente. Por ejemplo, la lista 306 blanca puede incluirse en una directiva en las instrucciones 304, tal como una instrucción de preprocesador o un comentario con formato especial. La lista 306 blanca también puede incluirse utilizando un constructo específico del lenguaje de programación utilizado para crear el contrato inteligente, tal como un decorador de funciones. La lista 306 blanca también se puede especificar en instrucciones ejecutables dentro de las instrucciones 304. En algunas implementaciones, la lista 306 blanca se examina antes de que los nodos 214 ejecuten las instrucciones 304. En algunos casos, como cuando la lista 306 blanca se incluye en las instrucciones ejecutables, los nodos 214 pueden comenzar la ejecución de las instrucciones 304 antes de evaluar la lista 306 blanca. Por ejemplo, el contrato 302 inteligente podría incluir una función privada definida con las instrucciones 304 que tomaría la cuenta del llamador como parámetro y verificaría que el llamador está autorizado para llamar al contrato inteligente en base a la lista 306 blanca. Tal función podría llamarse automáticamente cuando se ejecuta el contrato 302 inteligente, y el contrato 302 inteligente podría simplemente salir si la cuenta del llamador no está autorizada para ejecutar el contrato. En algunos casos, el nodo 214 que está ejecutando el contrato 302 inteligente podría llamar a la función privada para verificar la lista 306 blanca, y solo ejecutar la función principal del contrato 302 inteligente si la llamada a la función privada indica que la cuenta del llamador está autorizada. para ejecutar el contrato 302 inteligente.
La FIG. 4A representa un ejemplo de un orden 400 de ejecución para transacciones en una red de cadena de bloques de acuerdo con implementaciones de esta memoria descriptiva Como se muestra, el orden 400 de ejecución incluye una pluralidad de transacciones (405, 410, 415, 420) secuenciadas de acuerdo con el orden en el que deben ejecutarse por los nodos de una red de cadena de bloques. Las transacciones 405a, 405b y 405c son llamadas de contrato inteligente. Además de las llamadas contrato inteligente, el orden 400 de ejecución incluye múltiples grupos de transacciones que comparten una dependencia común (denotada por rayado cruzado), tales como, por ejemplo, que afectan a la misma cuenta o cuentas. Las llamadas 405a y 405b de contrato inteligente se agrupan junto con otras transacciones en base al contenido de sus respectivas listas blancas, que definen las cuentas que pueden ejecutar el contrato inteligente y, por lo tanto, pueden cambiar su estado mediante el contrato inteligente. Como se describe a continuación, cada uno de los grupos de transacciones puede ejecutarse en paralelo por los nodos de la red de cadena de bloques de acuerdo con implementaciones de esta memoria descriptiva.
La FIG. 4B representa un ejemplo de un orden 450 de ejecución en paralelo para transacciones en una red de cadena de bloques de acuerdo con implementaciones de esta memoria descriptiva. Como se muestra, en el orden 450 de ejecución en paralelo, se han identificado grupos 455, 460 y 465 de transacciones. Los nodos de una red de cadena de bloques pueden ejecutar los grupos de transacciones en paralelo, como se muestra en la FIG. 4B y discutido anteriormente. En algunos casos, todas las transacciones de un grupo comparten una dependencia común y, por lo tanto, se ejecutan en serie de acuerdo con el orden de ejecución original. Esto asegura que el estado de la red de cadena de bloques (p. ej., los saldos de cuenta) será el mismo como resultado de ejecutar las transacciones de acuerdo con el orden 450 de ejecución en paralelo como sería después de ejecutar las transacciones de acuerdo con el orden 400 de ejecución en la FIG. 4A.
Considerando el ejemplo en el que la cuenta A tiene un saldo de $0 antes de ejecutar cualquiera de las transacciones en la FIG. 4B, donde la transacción 410a representa un pago a la cuenta A desde la cuenta B por un monto de $400 y la transacción 410b representa un pago de la cuenta A a la cuenta C de $50. Si las transacciones 410a y 410b se ejecutan en serie (como se describió originalmente en el orden 400 de ejecución), la cuenta A se financiará primero con $400 y luego se debitará con $50, dejando un saldo de $250. Sin embargo, si las transacciones 410a y 410b no se ejecutan en serie, y la transacción 410b se ejecuta antes de 410a, la cuenta A tendrá un saldo de $0 cuando se ejecute el pago de la transacción 410b. La cuenta A tendrá un saldo insuficiente para financiar el pago en este escenario, lo que podría llevar a que la red de cadena de bloques rechace la transacción 410b.
Sobre la base de este ejemplo, considerando un caso en el que la transacción 420a representa un pago de una cuenta D a una cuenta E de $100. Debido a que las cuentas afectadas por la transacción 420a (cuentas D y E) no incluyen una de las cuentas afectadas por las transacciones 410a y 410b (cuentas A, B y C), la transacción 420a no tiene una dependencia común con las transacciones 410a y 410b. Por tanto, la transacción 420a se puede ejecutar en paralelo con las transacciones 410a y 410b.
Las llamadas (p. e., 405a-c) de contrato inteligente son diferentes de otros tipos de transacciones en que las cuentas a las que afectará la ejecución de un contrato inteligente pueden no ser determinables en base al contrato inteligente en sí. Dado que un contrato inteligente es un programa de software ejecutable que puede llamarse por cualquier participante en la red de cadena de bloques, teóricamente puede afectar a cualquier cuenta en la red de cadena de bloques. Sin embargo, con la adición de las listas blancas descritas anteriormente, se pueden determinar las cuentas a las que puede afectar un contrato inteligente en particular. Debido a que solo las cuentas en la lista blanca pueden hacer que se ejecute el contrato inteligente, solo esas cuentas tienen el potencial para cambiar su estado (p. e., su saldo) mediante la ejecución del contrato inteligente. Por lo tanto, la lista blanca permite agrupar las llamadas de contrato inteligente para su ejecución en paralelo en la red de cadena de bloques junto con otras transacciones que afectan a las mismas cuentas.
En algunas implementaciones, las transacciones a ser ejecutadas en serie se pueden agrupar. Por ejemplo, como se muestra en la FIG. 4B, las transacciones 410a-b y la llamada 405b de contrato inteligente se agrupan en 455, las transacciones 415a-e se agrupan en 460 y las transacciones 420a-c y la llamada 405a de contrato inteligente se agrupan en 465. Cada uno de los grupos 455, 460 y 465 puede ejecutarse en paralelo por los nodos de la red de cadena de bloques. La ejecución de los grupos 455, 460 y 465 de transacciones en paralelo puede conducir a un aumento en el rendimiento de las transacciones en la red de cadena de bloques, ya que la red ahora está ejecutando tres transacciones a la vez en paralelo en lugar de solo una si todas las transacciones se ejecutaron en serie.
En algunas implementaciones, si un contrato inteligente no incluye una lista blanca, cualquier cuenta en la red de cadena de bloques puede ejecutar el contrato inteligente. La llamada 405c de contrato inteligente es una llamada de contrato inteligente que no especifica una lista blanca. Debido a que cualquier cuenta en la red de cadena de bloques puede ejecutar la llamada 405c de contrato inteligente, no se puede ejecutar en paralelo con otras transacciones. La llamada 405c de contrato representa un punto de sincronización, donde converge la ejecución en paralelo. Debido a que las llamadas de contrato conducen a la ejecución de las instrucciones que componen el contrato inteligente, puede que sea posible determinar el alcance de las cuentas a las que afectará una llamada de contrato en particular. Por ejemplo, considerando un contrato inteligente simple que toma una cuenta en particular y un monto de pago como parámetros, y aplica el monto de pago a la cuenta en particular si alguna condición es cierta. Debido a que un llamador a este contrato inteligente especifica la cuenta en particular cuando se llama al contrato inteligente, no es posible determinar, a partir de la definición del contrato inteligente en sí (es decir, su código fuente), qué cuentas afectará una llamada en particular al contrato inteligente. Por esta razón, en algunas implementaciones, la llamada de contrato puede verse como una transacción con el potencial de afectar a todas las cuentas en la red de cadena de bloques, lo cual, por lo tanto, no se puede ejecutar en paralelo con otras transacciones. Por tanto, el orden 450 de ejecución en paralelo converge cuando alcanza la llamada 405c de contrato. Por ejemplo, como se muestra, los grupos 455, 460 y 465 se ejecutan en paralelo hasta alcanzar la llamada 405c de contrato. En este punto, la red de cadena de bloques espera hasta que todas las transacciones en los grupos 455, 460 y 465 hayan completado la ejecución y luego procede con la ejecución de la llamada 405c de contrato inteligente.
La FIG. 5 representa un ejemplo de un proceso 500 que puede ejecutarse de acuerdo con implementaciones de esta memoria descriptiva. En algunas implementaciones, el proceso 400 puede realizarse utilizando uno o más programas ejecutables por computadora que se ejecutan utilizando uno o más dispositivos informáticos.
En 502, se identifican una pluralidad de transacciones a ser ejecutadas en la cadena de bloques. Las transacciones se organizan en un orden de ejecución y pueden incluir una o más llamadas de contrato inteligente a contratos inteligentes, cada uno de los cuales tiene una lista blanca que identifica una o más cuentas que están autorizadas para ejecutar el contrato inteligente. El orden de ejecución incluye una llamada de contrato inteligente a un contrato inteligente que no tiene una lista blanca dispuesta después de la pluralidad de transacciones. En algunos casos, identificar la pluralidad de transacciones a ser ejecutadas en la cadena de bloques incluye recibir transacciones difundidas a la red de cadena de bloques. En algunas implementaciones, la lista blanca de cada uno de los contratos inteligentes se incluye dentro de un conjunto de instrucciones ejecutables asociadas con cada uno de los contratos inteligentes. La lista blanca puede estar separada de un conjunto de instrucciones ejecutables asociadas con cada uno de los contratos inteligentes. La lista blanca puede incluir una identificación de una o más cuentas que están autorizadas para acceder a cada uno de los contratos inteligentes. En algunos casos, la lista blanca incluye una referencia a una ubicación externa a cada uno de los contratos inteligentes que almacena el uno o más que están autorizados para acceder a cada uno de los contratos inteligentes.
En 504, los grupos de transacciones se identifican dentro de la pluralidad de transacciones, en donde las transacciones en cada uno de los grupos están asociadas con un conjunto en particular de cuentas en la red de cadena de bloques, y en donde el conjunto en particular de cuentas asociadas con cada una de la una o más llamadas de contrato inteligente se determina en base a la lista blanca asociada con la llamada de contrato inteligente.
En 506, los nodos de la red de cadena de bloques reciben instrucciones para ejecutar cada uno de los grupos de transacciones en paralelo, en donde la ejecución de cada uno de los grupos de transacciones incluye ejecutar las transacciones dentro del grupo en serie y de acuerdo con el orden de ejecución. En algunos casos, instruir a los nodos de la red de cadena de bloques para que ejecuten cada uno de los grupos de transacciones en paralelo incluye instruir a un primer conjunto de nodos para que ejecuten un primer grupo de transacciones e instruir a un primer grupo de nodos para que ejecuten un segundo grupo de transacciones. En algunos casos, instruir a los nodos de la red de cadena de bloques para que ejecuten cada uno de los grupos de transacciones en paralelo incluye enviar un mensaje a los nodos a través de una red.
En 508, se determina que los nodos de la red de cadena de bloques han completado la ejecución de todos los grupos de transacciones. En algunos casos, determinar que los nodos de la red de cadena de bloques han completado la ejecución de todos los grupos de transacciones incluye determinar que todas las transacciones en la pluralidad de transacciones se han incluido en uno o más bloques almacenados en una cadena de bloques mantenida por la red de cadena de bloques.
En 510, en respuesta determinar que los nodos de la red de cadena de bloques han completado la ejecución de todos los grupos de transacciones, los nodos de la red de cadena de bloques reciben instrucciones para ejecutar la llamada de contrato inteligente que no incluye una lista blanca.
La FIG. 6 representa ejemplos de módulos de un aparato 600 de acuerdo con implementaciones de esta memoria descriptiva. El aparato 500 puede ser una implementación de ejemplo de un aparato configurado para permitir la ejecución en paralelo de transacciones en una red de cadena de bloques, tal como una red de cadena de bloques de consorcio. El aparato 600 puede corresponder a las implementaciones descritas anteriormente, y el aparato 600 incluye lo siguiente: un primer identificador o primera unidad 602 de identificación que identifica una pluralidad de transacciones a ser ejecutadas en la cadena de bloques, en donde las transacciones se disponen en un orden de ejecución, en donde las transacciones incluyen una o más llamadas de contrato inteligente a contratos inteligentes, cada uno de los cuales tiene una lista blanca que identifica una o más cuentas que están autorizadas para ejecutar el contrato inteligente, y en donde el orden de ejecución incluye una llamada de contrato inteligente a un contrato inteligente que no tiene una lista blanca dispuesta después de la pluralidad de transacciones; un segundo identificador o segunda unidad 604 de identificación para identificar grupos de transacciones dentro de la pluralidad de transacciones, en donde las transacciones en cada uno de los grupos están asociadas con un conjunto en particular de cuentas en la red de cadena de bloques, y en donde el conjunto en particular de cuentas asociado con cada una de la una o más llamadas de contrato inteligente se determina en base a la lista blanca asociada con la llamada de contrato inteligente; un primer instructor o primera unidad 606 de instrucción para instruir a los nodos de la red de cadena de bloques para que ejecuten cada uno de los grupos de transacciones en paralelo, en donde ejecutar cada uno de los grupos de transacciones incluye ejecutar las transacciones dentro del grupo en serie y de acuerdo con el orden de ejecución; un determinante o unidad 608 de determinación para determinar que los nodos de la red de cadena de bloques han completado la ejecución de todos los grupos de transacciones; y un segundo instructor o segunda unidad 610 de instrucción para instruir a los nodos de la red de cadena de bloques para que ejecuten la llamada de contrato inteligente que no incluye una lista blanca en respuesta a determinar que los nodos de la red de cadena de bloques han completado la ejecución de todos los grupos de transacciones.
El sistema, aparato, módulo o unidad ilustrado en las implementaciones anteriores puede implementarse utilizando un chip de computadora o una entidad, o puede implementarse utilizando un producto que tenga una determinada función. Un dispositivo de implementación típico es una computadora, y la computadora puede ser una computadora personal, una computadora 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, una dispositivo de recepción y envío de correo electrónico, una consola de juegos, una computadora tableta, un dispositivo ponible o cualquier combinación de estos dispositivos.
Para un proceso de implementación de funciones y roles de cada una de las unidades en el aparato, se pueden hacer referencias a un proceso de implementación de los pasos correspondientes en el método anterior. Los detalles se omiten aquí por simplicidad.
Debido a que una implementación del aparato corresponde básicamente a una implementación del método, para las partes relacionadas, se pueden hacer referencias a descripciones relacionadas en la implementación del método. 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 y poner en práctica las formas de realización de la presente solicitud sin esfuerzos creativos.
Haciendo referencia de nuevo a la FIG. 6, se puede interpretar como que ilustra un módulo funcional interno y una estructura de un aparato para permitir la ejecución en paralelo de transacciones en una red de cadena de bloques. El aparato de ejecución en paralelo puede ser un ejemplo de un aparato configurado para permitir la ejecución en paralelo de transacciones en una red de cadena de bloques.
Las implementaciones de la materia objeto y las acciones y operaciones descritas en esta memoria descriptiva se pueden implementar en circuitería electrónica digitales, en software o firmware de computadora incorporados de manera tangible, en hardware de computadora, incluidas las estructuras descritas en esta memoria descriptiva y sus equivalentes estructurales, o en combinaciones de uno o más de ellos. Las implementaciones de la materia objeto descrita en esta memoria descriptiva se pueden implementar como uno o más programas informáticos, p. ej., 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 la operación de, aparatos de procesamiento de datos. El soporte puede ser un medio de almacenamiento informático tangible no transitorio. Alternativa o adicionalmente, el portador puede ser una señal propagada generada artificialmente, p. ej., una señal eléctrica, óptica o electromagnética generada por 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 ser 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 ellos. Un medio de almacenamiento informático no es una señal propagada.
El término "aparato de procesamiento de datos" abarca todo tipo de aparatos, dispositivos y máquinas para procesar datos, incluyendo, a modo de ejemplo, un procesador programable, una computadora o múltiples procesadores u computadoras. El aparato de procesamiento de datos puede incluir circuitería lógica de propósito especial, p. ej., una FPGA (matriz de puertas programables en campo), un ASIC (circuito integrado de aplicación específica) o una GPU (unidad de procesamiento de gráficos). El aparato también puede incluir, además del hardware, código que crea un entorno de ejecución para programas informáticos, p. ej., código que constituye el firmware del procesador, una pila de protocolo, un sistema de gestión de bases de datos, un sistema operativo o una combinación de uno o más de ellos.
Un programa informático, que también puede denominarse o describirse como un programa, software, una aplicación de software, una app, un módulo, un módulo de software, un motor, una secuencia de comandos o código, se puede escribir en cualquier forma de lenguaje de programación, incluidos los lenguajes compilados o interpretados, o los lenguajes declarativos o procedimentales; y se puede desplegar 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, cuyo entorno puede incluir una o más computadoras interconectadas por una red de comunicaciones de datos en una o más ubicaciones.
Un programa informático puede, pero no necesariamente, corresponder a un archivo en un sistema de archivos. Un programa informático puede estar almacenado en una porción de un archivo que contiene otros programas o datos, p. ej., una o más secuencias de comandos almacenadas en un documento de lenguaje de marcado, en un solo archivo dedicado al programa en cuestión, o en múltiples archivos coordinados, p. ej., archivos que almacenan uno o más módulos, subprogramas o porciones de código.
Los procesos y flujos lógicos descritos en esta memoria descriptiva pueden realizarse por una o más computadoras que ejecutan uno o más programas informáticos para realizar operaciones operando con datos de entrada y generando salida. Los procesos y flujos lógicos también se pueden realizar mediante circuitería lógica de propósito especial, p. ej., una FPGA, un ASIC o una GPU, o mediante una combinación de circuitería lógica de propósito especial y uno o más computadoras programadas.
Las computadoras adecuadas para la ejecución de un programa informático pueden estar basadas en microprocesadores de propósito general o especial o ambos, o cualquier otro tipo de unidad central de procesamiento. Generalmente, una unidad central de procesamiento recibirá instrucciones y datos de una memoria de solo lectura o una memoria de acceso aleatorio o ambas. Los elementos de una computadora 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 complementarse o incorporarse en circuitería lógica de propósito especial.
En general, una computadora se acoplará a al menos un medio de almacenamiento legible por computadora no transitorio (también denominado memoria legible por computadora). El medio de almacenamiento acoplado a la computadora puede ser un componente interno de la computadora (p. ej., un disco duro integrado) o un componente externo (p. ej., un disco duro de bus serie universal (USB) o un sistema de almacenamiento al que se accede a través de una red). Los ejemplos de medios de almacenamiento pueden incluir, por ejemplo, discos magnéticos, magnetoópticos u ópticos, unidades de estado sólido, recursos de almacenamiento en red tales como sistemas de almacenamiento en la nube u otros tipos de medios de almacenamiento. Sin embargo, una computadora no necesita tener tales dispositivos. Además, una computadora puede integrarse en otro dispositivo, p. ej., 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, p. ej., una unidad flash de bus serie universal (USB), por nombrar solo algunas.
Para facilitar la interacción con un usuario, las implementaciones de la materia objeto descrita en esta memoria descriptiva se pueden implementar o configurar para comunicarse con una computadora que tenga un dispositivo de visualización, p. ej., un monitor LCD (pantalla de cristal líquido), para visualizar información al usuario, y un dispositivo de entrada mediante el cual el usuario puede proporcionar entrada a la computadora, p. ej., un teclado y un dispositivo señalador, p. ej., 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 retroalimentación proporcionada al usuario puede ser cualquier forma de retroalimentación sensorial, p. ej., retroalimentación visual, retroalimentación auditiva o retroalimentación táctil; y la entrada del usuario se puede recibir de cualquier forma, incluida la entrada acústica, de voz o táctil. Además, una computadora puede interactuar con un usuario enviando documentos a y recibiendo documentos desde un dispositivo que se utiliza por el usuario; por ejemplo, enviando páginas web a un navegador web en el dispositivo de un usuario en respuesta a solicitudes recibidas desde el navegador web, o interactuando con una app que se ejecuta en un dispositivo de usuario, p. ej., un teléfono inteligente o tableta electrónica. Además, una computadora puede interactuar con un usuario enviando mensajes de texto u otras formas de mensaje a un dispositivo personal, p. ej., un teléfono inteligente que está ejecutando una aplicación de mensajería, y recibiendo de vuelta mensajes de respuesta del usuario.
Esta memoria descriptiva utiliza el término "configurado para" en relación con sistemas, aparatos y componentes de programas informáticos. Para que un sistema de una o más computadoras esté configurado para realizar operaciones o acciones particulares significa que el sistema tiene instalado software, firmware, hardware o una combinación de ellos que en funcionamiento hacen que el sistema realice las operaciones o acciones. Que uno o más programas informáticos se configuren 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. Que un circuito lógico de propósito especial se configure para realizar operaciones o acciones particulares significa que el circuito tiene una lógica electrónica que realiza las operaciones o acciones.
Si bien esta memoria descriptiva contiene muchos detalles de implementación específica, estos no deben interpretarse como limitaciones en el alcance de lo que se reivindica, que está definido por las propias reivindicaciones, sino más bien como descripciones de características que pueden ser específicas de implementaciones particulares. Ciertas características que se describen en esta memoria descriptiva en el contexto de implementaciones separadas también se pueden realizar en combinación en una sola implementación. A la inversa, diversas características que se describen en el contexto de una sola implementación también se pueden realizar en múltiples implementaciones por separado o en cualquier subcombinación adecuada. Además, aunque las características pueden describirse anteriormente como que actúan en ciertas combinaciones e incluso inicialmente reivindicarse como tales, una o más características de una combinación reivindicada pueden en algunos casos eliminarse de la combinación, y la reivindicación puede estar dirigida a una subcombinación o variación de una subcombinación.
De manera similar, si bien las operaciones se describen en los dibujos y se enumeran en las reivindicaciones en un orden particular, esto no debe entenderse como que requiere que tales operaciones se realicen en el orden particular mostrado o en orden secuencial, o que se realicen todas las operaciones ilustradas, para lograr resultados deseables. En determinadas circunstancias, la multitarea y el procesamiento en paralelo pueden resultar ventajosos. Además, la separación de diversos módulos y componentes del sistema en las implementaciones descritas anteriormente no debe entenderse que requiera dicha separación en todas las implementaciones, y debe entenderse que los componentes y sistemas del programa descritos generalmente se pueden integrar juntos en un solo producto de software o empaquetarse en múltiples productos de software.
Se han descrito implementaciones particulares de la materia objeto. Por ejemplo, las acciones enumeradas en las reivindicaciones se pueden realizar en un orden diferente y aún, así lograr resultados deseables. Como ejemplo, los procesos representados en las figuras adjuntas no requieren necesariamente el orden particular mostrado, o el orden secuencial, para lograr resultados deseables. En algunos casos, la multitarea y el procesamiento en paralelo pueden resultar ventajosos.

Claims (11)

REIVINDICACIONES
1. Un método (500) implementado por computadora para la ejecución en paralelo de transacciones en una red (212) de cadena de bloques, el método que comprende:
identificar (502) una pluralidad de transacciones a ser ejecutadas en la cadena (216) de bloques, en donde las transacciones están dispuestas en un orden (400) de ejecución, en donde las transacciones incluyen una o más llamadas (405a-b, 410a-b, 415a-e, 420a-c) de contrato inteligente a uno o más contratos (302) inteligentes, cada una de la una o más llamadas de contrato inteligente está asociada con una lista (306) blanca que identifica una o más cuentas (308) que están autorizadas para ejecutar el respectivo contrato inteligente llamado por cada una de la una o más llamadas de contrato inteligente, y en donde el orden de ejecución incluye una llamada (405c) de contrato inteligente a un contrato inteligente, que no está asociada con una lista blanca y se dispone después de la pluralidad de transacciones;
identificar (504) grupos (455, 460, 465) de transacciones dentro de la pluralidad de transacciones, en donde las transacciones en cada uno de los grupos están asociadas con un conjunto en particular de cuentas en la red de cadena de bloques, y en donde el conjunto en particular de cuentas asociado con cada una de la una o más llamadas de contrato inteligente se determina en base a la lista blanca asociada con cada una de la una o más llamadas de contrato inteligente;
instruir (506) a los nodos de la red de cadena de bloques para que ejecuten cada uno de los grupos de transacciones en paralelo, en donde la ejecución de cada uno de los grupos de transacciones incluye ejecutar las transacciones dentro del grupo en serie y de acuerdo con el orden de ejecución;
determinar (508) que los nodos de la red de cadena de bloques han completado la ejecución de todos los grupos de transacciones; y
en respuesta a determinar que los nodos de la red de cadena de bloques han completado la ejecución de todos los grupos de transacciones, instruir (510) a los nodos de la red de cadena de bloques para que ejecuten la llamada de contrato inteligente que no está asociada con una lista blanca, la llamada (405c) de contrato inteligente que no está asociado con una lista blanca que representa un punto de sincronización donde converge la ejecución en paralelo de todos los grupos de transacciones.
2. El método (500) de la reivindicación 1, en donde instruir (506) a los nodos de la red (212) de cadena de bloques para que ejecuten cada uno de los grupos (455, 460, 465) de transacciones en paralelo incluye instruir a un primer conjunto de nodos para que ejecuten un primer grupo de transacciones e instruir a un primer conjunto de nodos para que ejecuten un segundo grupo de transacciones.
3. El método (500) de la reivindicación 1, en donde determinar (508) que los nodos de la red (212) de cadena de bloques han completado la ejecución de todos los grupos de transacciones incluye determinar que todas las transacciones de la pluralidad de transacciones se han incluido en uno o más bloques almacenados en una cadena (216) de bloques mantenida por la red de cadenas de bloques.
4. El método (500) de la reivindicación 1, en donde instruir (506) a los nodos de la red (212) de cadena de bloques que ejecuten cada uno de los grupos (455, 460, 465) de transacciones en paralelo incluye enviar un mensaje a los nodos a través de una red.
5. El método (500) de la reivindicación 1, en donde identificar (502) la pluralidad de transacciones a ser ejecutadas en la cadena (216) de bloques incluye recibir transacciones difundidas a la red (212) de cadenas de bloques.
6. El método (500) de la reivindicación 1, en donde la lista blanca se incluye dentro de un conjunto de instrucciones ejecutables asociadas con cada uno de los contratos (302) inteligentes.
7. El método (500) de la reivindicación 1, en donde la lista blanca está separada de un conjunto de instrucciones ejecutables asociadas con cada uno de los contratos (302) inteligentes.
8. El método (500) de la reivindicación 1, en donde la lista blanca incluye una identificación de una o más cuentas que están autorizadas para acceder a cada uno de los contratos (302) inteligentes.
9. El método (500) de la reivindicación 1, en donde la lista blanca incluye una referencia a una ubicación externa a cada uno de los contratos (302) inteligentes que almacena la una o más cuentas que están autorizadas para acceder a cada uno de los contratos inteligentes.
10. Un medio de almacenamiento legible por computadora no transitorio acoplado a una o más computadoras y que tiene almacenadas en el mismo instrucciones que son ejecutables por la una o más computadoras para realizar el método (500) de una cualquiera de las reivindicaciones 1 a 9.
11. Un sistema que comprende:
una o más computadoras; y
una o más memorias legibles por computadora acopladas a una o más computadoras y que tienen almacenadas en las mismas instrucciones que son ejecutables por la una o más computadoras para realizar el método (500) de una cualquiera de las reivindicaciones 1 a 9.
ES18865725T 2018-12-28 2018-12-28 Ejecución paralela de transacciones en una red de cadena de bloques basada en listas blancas de contratos inteligentes Active ES2879907T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/124873 WO2019072305A2 (en) 2018-12-28 2018-12-28 PARALLEL EXECUTION OF TRANSACTIONS IN A BLOCK CHAIN NETWORK BASED ON WHITE LISTS OF INTELLIGENT CONTRACTS

Publications (1)

Publication Number Publication Date
ES2879907T3 true ES2879907T3 (es) 2021-11-23

Family

ID=66100122

Family Applications (1)

Application Number Title Priority Date Filing Date
ES18865725T Active ES2879907T3 (es) 2018-12-28 2018-12-28 Ejecución paralela de transacciones en una red de cadena de bloques basada en listas blancas de contratos inteligentes

Country Status (17)

Country Link
US (2) US10911461B2 (es)
EP (1) EP3566391B1 (es)
JP (1) JP7012730B2 (es)
KR (1) KR102294223B1 (es)
CN (1) CN110300985B (es)
AU (1) AU2018347205C1 (es)
BR (1) BR112019016290A2 (es)
CA (1) CA3052884C (es)
ES (1) ES2879907T3 (es)
MX (1) MX2019009344A (es)
MY (1) MY201623A (es)
PH (1) PH12019501847A1 (es)
PL (1) PL3566391T3 (es)
RU (1) RU2731417C1 (es)
SG (1) SG11201907243UA (es)
WO (1) WO2019072305A2 (es)
ZA (1) ZA201905218B (es)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11243810B2 (en) * 2018-06-06 2022-02-08 The Bank Of New York Mellon Methods and systems for improving hardware resiliency during serial processing tasks in distributed computer networks
US11405182B2 (en) 2018-12-03 2022-08-02 Ebay Inc. Adaptive security for smart contracts using high granularity metrics
US11250125B2 (en) 2018-12-03 2022-02-15 Ebay Inc. Highly scalable permissioned block chains
US11263315B2 (en) 2018-12-03 2022-03-01 Ebay Inc. System level function based access control for smart contract execution on a blockchain
CN118196938A (zh) * 2018-12-06 2024-06-14 开利公司 由区块链支持的智能锁***
JP6816300B2 (ja) 2018-12-28 2021-01-20 アドバンスド ニュー テクノロジーズ カンパニー リミテッド ブロックチェーンネットワークにおけるトランザクションの並列実行
EP3566391B1 (en) * 2018-12-28 2021-04-21 Advanced New Technologies Co., Ltd. Parallel execution of transactions in a blockchain network based on smart contract whitelists
SG11201910057QA (en) 2019-04-12 2019-11-28 Alibaba Group Holding Ltd Performing parallel execution of transactions in a distributed ledger system
CA3060790C (en) 2019-04-12 2021-06-08 Alibaba Group Holding Limited Performing parallel execution of transactions in a distributed ledger system
SG11202000784SA (en) * 2019-04-30 2020-02-27 Alibaba Group Holding Ltd Methods and devices for managing access to account in blockchain system
SG11201910069YA (en) 2019-04-30 2019-11-28 Alibaba Group Holding Ltd Method and device for avoiding double-spending problem in read-write set-model-based blockchain technology
CN110175844A (zh) * 2019-05-07 2019-08-27 深圳前海微众银行股份有限公司 一种区块链中智能合约的发布方法及装置
WO2021032115A1 (zh) * 2019-08-19 2021-02-25 杭州趣链科技有限公司 智能合约并行执行的方法、装置、设备和介质
CN110968437A (zh) * 2019-11-27 2020-04-07 杭州趣链科技有限公司 一种基于Java智能合约的单个合约并行执行的方法、装置、设备及介质
US10783082B2 (en) * 2019-08-30 2020-09-22 Alibaba Group Holding Limited Deploying a smart contract
KR102304953B1 (ko) * 2019-08-30 2021-09-27 주식회사 미디움 피어 노드와 그 정보 처리 방법 및 블록체인 플랫폼 시스템
US11768701B2 (en) * 2019-09-17 2023-09-26 Western Digital Technologies, Inc. Exception analysis for data storage devices
CN110691122B (zh) * 2019-09-23 2022-04-05 杭州复杂美科技有限公司 平行链共识方法、设备及存储介质
DE102019216744A1 (de) * 2019-10-30 2021-05-06 Robert Bosch Gmbh Granulare Speicherverwaltung für einen Distributed Ledger
KR102342788B1 (ko) * 2019-11-19 2021-12-24 한양대학교 산학협력단 트랜잭션의 병렬적 실행을 지원하는 방법, 이를 이용하는 블록체인 노드 및 프로그램
US11387979B2 (en) 2019-12-23 2022-07-12 International Business Machines Corporation Partially-ordered blockchain
CN111294234B (zh) * 2020-01-17 2022-07-29 麦科思(苏州)数据科技有限公司 一种基于智能合约优化模型的并行区块链分片方法
CN111339108A (zh) * 2020-02-18 2020-06-26 杭州复杂美科技有限公司 一种交易并行执行方法、设备及存储介质
CN111414374B (zh) * 2020-03-20 2023-04-28 深圳市迅雷网络技术有限公司 一种区块链交易并发处理方法、装置及设备
CN111325928B (zh) * 2020-04-01 2021-12-21 中国银行股份有限公司 银行自助设备的业务执行方法及装置
CN111563820B (zh) * 2020-05-08 2023-09-22 中国工商银行股份有限公司 智能合约并行执行方法及装置
CN111339208B (zh) * 2020-05-15 2020-08-25 支付宝(杭州)信息技术有限公司 调用智能合约的方法及装置
CN111754350B (zh) 2020-08-28 2020-11-24 支付宝(杭州)信息技术有限公司 并行获取区块链中的交易访问变量的编号的方法和装置
CN111754349B (zh) 2020-08-28 2020-12-04 支付宝(杭州)信息技术有限公司 对区块链中的交易进行分组的方法和装置
CN111770202B (zh) 2020-08-31 2021-10-29 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和存储介质
CN111770204B (zh) 2020-08-31 2021-10-22 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和存储介质
CN111768183B (zh) 2020-08-31 2024-04-19 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和存储介质
CN111768184A (zh) * 2020-08-31 2020-10-13 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法及区块链节点
CN111770113B (zh) * 2020-08-31 2021-07-30 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和节点设备
CN113191895B (zh) * 2020-09-04 2022-04-26 支付宝(杭州)信息技术有限公司 一种交易执行方法、***及装置
CN113454597A (zh) 2020-09-28 2021-09-28 支付宝(杭州)信息技术有限公司 区块链交易处理***和方法
KR102286473B1 (ko) * 2020-10-14 2021-08-06 (주)헥슬란트 가상 자산 검증 모듈, 이를 포함하는 가상 자산 거래 시스템 및 그 방법
US11194791B1 (en) * 2020-10-23 2021-12-07 Coinbase Crypto Services, LLC. Blockchain orchestrator computer system
CN113205424B (zh) * 2020-10-28 2023-08-25 支付宝(杭州)信息技术有限公司 在区块链中部署和调用合约的方法和装置
CN112465514A (zh) * 2020-12-08 2021-03-09 苏州域乎区块链科技有限公司 一种基于区块链的分层式交易并行执行方法及***
CN112748994B (zh) * 2020-12-31 2023-11-28 上海简苏网络科技有限公司 一种区块链交易并行处理方法及***
CN112764897B (zh) * 2020-12-31 2024-03-22 杭州趣链科技有限公司 任务请求的处理方法、装置、***及计算机可读存储介质
US11829765B2 (en) 2021-03-31 2023-11-28 International Business Machines Corporation Computer mechanism for analytic orchestration and entitled execution
WO2023277553A1 (ko) * 2021-06-30 2023-01-05 주식회사 아티프렌즈 블록체인 네트워크에서의 트랜잭션의 처리 속도 향상 방법
US11936794B2 (en) * 2021-09-16 2024-03-19 Masterard International Incorporated Method and system for parallel processing of smart contracts in permissioned blockchains
CN113869902A (zh) * 2021-12-03 2021-12-31 深圳前海微众银行股份有限公司 一种区块链交易执行方法及装置
CN114285632B (zh) * 2021-12-23 2023-07-28 成都质数斯达克科技有限公司 一种区块链数据传输方法、装置和设备及可读存储介质
CN116382815B (zh) * 2023-06-05 2023-10-10 安徽中科晶格技术有限公司 基于dag模型的合约并行化方法
CN117422468B (zh) * 2023-12-18 2024-03-29 安徽中科晶格技术有限公司 基于dag模型的合约链合约并行化方法、设备及存储介质

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7401235B2 (en) 2002-05-10 2008-07-15 Microsoft Corporation Persistent authorization context based on external authentication
CN102915421B (zh) * 2011-08-04 2013-10-23 腾讯科技(深圳)有限公司 文件的扫描方法及***
US9870310B1 (en) * 2013-11-11 2018-01-16 Amazon Technologies, Inc. Data providers for annotations-based generic load generator
RU2670029C2 (ru) * 2014-06-03 2018-10-17 Общество С Ограниченной Ответственностью "Яндекс" Система и способ автоматической модерации сообщений
US10095549B1 (en) * 2015-09-29 2018-10-09 Amazon Technologies, Inc. Ownership transfer account service in a virtual computing environment
EP4375908A1 (en) * 2015-10-17 2024-05-29 Banqu, Inc. Blockchain-based identity and transaction platform
US20170132615A1 (en) * 2015-11-11 2017-05-11 Bank Of America Corporation Block chain alias for person-to-person payments
US10432471B2 (en) * 2015-12-31 2019-10-01 Microsoft Technology Licensing, Llc Distributed computing dependency management system
EP3193299A1 (en) * 2016-01-15 2017-07-19 Accenture Global Services Limited Device, method and system for autonomous selection of a commodity supplier through a blockchain distributed database
US10255108B2 (en) 2016-01-26 2019-04-09 International Business Machines Corporation Parallel execution of blockchain transactions
US10720232B2 (en) * 2016-04-13 2020-07-21 Accenture Global Solutions Limited Distributed healthcare records management
US10046228B2 (en) * 2016-05-02 2018-08-14 Bao Tran Smart device
CA3027630A1 (en) * 2016-07-01 2018-01-04 Wells Fargo Bank, N.A. International trade finance blockchain system
US10425399B2 (en) 2016-07-12 2019-09-24 International Business Machines Corporation Template-based distributed certificate issuance in a multi-tenant environment
US10417217B2 (en) * 2016-08-05 2019-09-17 Chicago Mercantile Exchange Inc. Systems and methods for blockchain rule synchronization
WO2018031551A1 (en) * 2016-08-08 2018-02-15 The Dun & Bradstreet Corporation Trusted platform and integrated bop applications for networking bop components
US11146535B2 (en) * 2016-10-12 2021-10-12 Bank Of America Corporation System for managing a virtual private ledger and distributing workflow of authenticated transactions within a blockchain distributed network
US20180158034A1 (en) 2016-12-07 2018-06-07 International Business Machines Corporation Dynamic reordering of blockchain transactions to optimize performance and scalability
US11200966B2 (en) 2016-12-27 2021-12-14 Cerner Innovation, Inc. Healthcare system based on devices and wearables
CN108269072A (zh) * 2016-12-30 2018-07-10 深圳瀚德创客金融投资有限公司 用于区块链的交易处理方法和网络节点
KR102470727B1 (ko) * 2016-12-30 2022-11-25 비씨 디벨롭먼트 랩스 게엠베하 블록체인 가능한 서비스 제공자 시스템
CN106980649B (zh) * 2017-02-28 2020-07-10 创新先进技术有限公司 写入区块链业务数据的方法和装置及业务子集合确定方法
CN106878000B (zh) * 2017-03-06 2020-02-21 中钞***产业发展有限公司杭州区块链技术研究院 一种联盟链共识方法及***
CN106934710A (zh) * 2017-03-06 2017-07-07 钱德君 一种基于智能合约内容的量子合约账本
US10489597B2 (en) * 2017-03-28 2019-11-26 General Electric Company Blockchain verification of network security service
GB201707296D0 (en) 2017-05-08 2017-06-21 Nchain Holdings Ltd Computer-implemented system and method
US10341105B2 (en) * 2017-06-07 2019-07-02 At&T Intellectual Property I, L.P. Blockchain-based social media history maps
AU2018289562A1 (en) * 2017-06-22 2020-01-16 Jpmorgan Chase Bank, N.A. System and method for implementing an interbank information network
US10679210B2 (en) 2017-06-26 2020-06-09 International Business Machines Corporation Blockchain transaction commitment ordering
US10616324B1 (en) * 2017-07-20 2020-04-07 Architecture Technology Corporation Decentralized ledger system and method for enterprises
US11196552B2 (en) * 2017-08-04 2021-12-07 Truss Financial, LLC Secure data distribution protocol using blockchains
CN107688999B (zh) 2017-08-11 2020-11-13 杭州溪塔科技有限公司 一种基于区块链的并行交易执行方法
US20190087793A1 (en) * 2017-08-31 2019-03-21 Brown University Adding concurrency to smart contracts
US11132451B2 (en) * 2017-08-31 2021-09-28 Parity Technologies Ltd. Secret data access control systems and methods
RU2673399C1 (ru) * 2017-09-07 2018-11-26 Олег Александрович Серебренников Способ сохранения покупательной способности сбережений
CN107678865A (zh) * 2017-09-20 2018-02-09 中国银行股份有限公司 基于交易分组的区块链的验证方法以及***
WO2019067603A1 (en) * 2017-09-27 2019-04-04 Securrency, Inc. METHOD, APPARATUS, AND COMPUTER-READABLE MEDIUM FOR CONFORMITY-SENSITIVE TOKENIZATION AND ASSET VALUE CONTROL
US11100483B2 (en) * 2017-09-29 2021-08-24 Intel Corporation Hierarchical data information
CN107704269A (zh) 2017-10-16 2018-02-16 中国银行股份有限公司 一种基于区块链生成区块的方法以及***
US11823178B2 (en) * 2017-11-17 2023-11-21 International Business Machines Corporation Optimization of high volume transaction performance on a blockchain
TWI677213B (zh) * 2017-11-23 2019-11-11 財團法人資訊工業策進會 監控裝置、方法及其電腦程式產品
JP2019125914A (ja) * 2018-01-16 2019-07-25 アラクサラネットワークス株式会社 通信装置及びプログラム
US10373158B1 (en) * 2018-02-12 2019-08-06 Winklevoss Ip, Llc System, method and program product for modifying a supply of stable value digital asset tokens
US10540654B1 (en) * 2018-02-12 2020-01-21 Winklevoss Ip, Llc System, method and program product for generating and utilizing stable value digital assets
CN108848119B (zh) * 2018-04-03 2020-04-28 阿里巴巴集团控股有限公司 跨区块链的交互方法及装置、***、电子设备
RU181439U1 (ru) * 2018-04-06 2018-07-13 Оксана Валерьевна Кириченко Децентрализованная технологическая платформа хранения и обмена данными транзакций в распределенной вычислительной сети
CN108681565B (zh) 2018-04-28 2020-11-10 百度在线网络技术(北京)有限公司 区块链数据并行处理方法、装置、设备和存储介质
CN108769173B (zh) * 2018-05-21 2021-11-09 阿里体育有限公司 运行智能合约的区块链实现方法及设备
CN108846659B (zh) 2018-06-13 2021-09-14 深圳前海微众银行股份有限公司 基于区块链的转账方法、装置及存储介质
US11836721B2 (en) * 2018-06-29 2023-12-05 Intel Corporation Protection of information in an information exchange
CN109064171A (zh) 2018-07-26 2018-12-21 杭州秘猿科技有限公司 一种区块链并行交易的方法、装置及电子***
JP6816300B2 (ja) 2018-12-28 2021-01-20 アドバンスド ニュー テクノロジーズ カンパニー リミテッド ブロックチェーンネットワークにおけるトランザクションの並列実行
EP3566391B1 (en) * 2018-12-28 2021-04-21 Advanced New Technologies Co., Ltd. Parallel execution of transactions in a blockchain network based on smart contract whitelists

Also Published As

Publication number Publication date
EP3566391A2 (en) 2019-11-13
MX2019009344A (es) 2019-10-02
US20210160245A1 (en) 2021-05-27
SG11201907243UA (en) 2019-09-27
WO2019072305A2 (en) 2019-04-18
RU2731417C1 (ru) 2020-09-02
AU2018347205B2 (en) 2021-02-25
PH12019501847A1 (en) 2020-03-09
US10911461B2 (en) 2021-02-02
EP3566391B1 (en) 2021-04-21
US20190281065A1 (en) 2019-09-12
EP3566391A4 (en) 2020-03-18
CN110300985A (zh) 2019-10-01
JP2020518880A (ja) 2020-06-25
CA3052884C (en) 2022-05-17
AU2018347205A1 (en) 2020-07-16
ZA201905218B (en) 2020-05-27
WO2019072305A3 (en) 2019-10-24
AU2018347205C1 (en) 2021-08-12
KR102294223B1 (ko) 2021-08-30
US11381573B2 (en) 2022-07-05
CA3052884A1 (en) 2019-04-18
PL3566391T3 (pl) 2021-10-18
CN110300985B (zh) 2023-08-01
KR20200083938A (ko) 2020-07-09
BR112019016290A2 (pt) 2021-07-20
JP7012730B2 (ja) 2022-01-28
MY201623A (en) 2024-03-06

Similar Documents

Publication Publication Date Title
ES2879907T3 (es) Ejecución paralela de transacciones en una red de cadena de bloques basada en listas blancas de contratos inteligentes
ES2870657T3 (es) Verificación de integridad de los datos almacenados en una cadena de bloques de consorcio utilizando una cadena lateral pública
US11132676B2 (en) Parallel execution of transactions in a blockchain network
JP6892513B2 (ja) 信頼できる実行環境に基づいたオフチェーンスマートコントラクトサービス
US11068887B2 (en) Smart contract whitelists
ES2879908T9 (es) Colaboración abierta distribuida basada en cadena de bloques de aplicaciones de mapa
CN110582987A (zh) 使用区块链建立配对群组并交换受保护的数据
Doshi Blockchain as a service