ES2880453T3 - Utilizar tabla de números de un solo uso para resolver fallas de transacciones concurrentes de cadena de bloques - Google Patents

Utilizar tabla de números de un solo uso para resolver fallas de transacciones concurrentes de cadena de bloques Download PDF

Info

Publication number
ES2880453T3
ES2880453T3 ES18865364T ES18865364T ES2880453T3 ES 2880453 T3 ES2880453 T3 ES 2880453T3 ES 18865364 T ES18865364 T ES 18865364T ES 18865364 T ES18865364 T ES 18865364T ES 2880453 T3 ES2880453 T3 ES 2880453T3
Authority
ES
Spain
Prior art keywords
time number
time
number value
blockchain
transaction
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
ES18865364T
Other languages
English (en)
Inventor
Chao Shen
Kailai Shao
Xuming Lu
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 ES2880453T3 publication Critical patent/ES2880453T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Hardware Redundancy (AREA)

Abstract

Un método implementado por computadora para proporcionar valores de números de un solo uso para escribir transacciones en cadenas de bloques en una red de cadena de bloques, en donde cada una de las transacciones escrita con éxito en una cadena de bloques en la red de cadena de bloques utiliza un valor de número de un solo uso respectivo que no se utiliza para escribir otra transacción en una cadena de bloques en la red de cadena de bloques, y en donde el método se ejecuta por uno o más procesadores y comprende: inicializar (602) una tabla de números de un solo uso que comprende una pluralidad de ranuras de número de un solo uso, en donde i) cada una de las ranuras de número de un solo uso está asociada con un índice de número de un solo uso respectivo y un estado respectivo, ii) cada una de las ranuras de número de un solo uso almacena un valor de número de un solo uso respectivo, y iii) el estado respectivo indica si el valor de número de un solo uso respectivo está disponible para una transacción; recibir (604) una solicitud para un valor de número de un solo uso desde una aplicación y, en respuesta a recibir la solicitud de un valor de número de un solo uso, i) solicitar un valor de número de un solo uso desde la tabla de números de un solo uso y ii) recibir (606) un valor de número de un solo uso, en donde a) el valor de número de un solo uso recibido comprende un valor de número de un solo uso almacenado en una ranura de número de un solo uso con un estado asociado que indica que el valor de número de un solo uso está disponible para una transacción y b) un estado de la ranura de número de un solo uso correspondiente al valor de número de un solo uso recibido se actualiza a un estado ocupado para evitar que el valor de número de un solo uso recibido se utilice en múltiples transacciones; determinar si una transacción que utiliza el valor de número de un solo uso recibido se escribe con éxito en una cadena de bloques en la red de cadenas de bloques; en respuesta a determinar que una transacción que utiliza el valor de número de un solo uso recibido se escribe con éxito en la cadena de bloques, liberar el índice de número de un solo uso correspondiente al valor de número de un solo uso recibido, comprende i) actualizar el valor de número de un solo uso almacenado en la ranura de número aleatorio asociada con el valor de número de un solo uso recibido y ii) establecer el estado de número de un solo uso asociado con la ranura de número de un solo uso en no ocupado para indicar que el valor de número de un solo uso actualizado está disponible para una transacción; y en respuesta a determinar que una transacción que utiliza el valor de número de un solo uso recibido no se escribe con éxito en la cadena de bloques, restablecer el índice de número de un solo uso correspondiente al valor de número de un solo uso recibido actualizando el estado de número de un solo uso correspondiente al índice de número de un solo uso a no ocupado para indicar que el valor de número de un solo uso recibido está disponible para una transacción.

Description

DESCRIPCIÓN
Utilizar tabla de números de un solo uso para resolver fallas de transacciones concurrentes de cadena de bloques 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 denominan comúnmente redes de cadena de bloques sin hacer referencia a ningún caso de uso particular (por ejemplo, criptomonedas). Ejemplos de redes de cadena de bloques pueden incluir redes públicas de cadena de bloques, redes privadas de cadena de bloques y redes de consorcio de cadena de bloques. Una red pública de cadena de bloques está abierta para que todas las entidades utilicen el DLS y participen en el proceso de consenso. Una red de cadena de bloques privada se proporciona para una entidad particular, que controla de forma centralizada los permisos de lectura y escritura. Una red de cadena de bloques de consorcio se proporciona para un grupo selecto de entidades, que controlan el proceso de consenso e incluye una capa de control de acceso.
En las redes de cadena de bloques, se ejecuta un protocolo de consenso para añadir transacciones a bloques de una cadena de bloques. El protocolo de consenso puede operar en base a números de un solo uso (p. ej., números arbitrarios que se usan una vez), cada uno de los nodos en la cadena de bloques consume un número de un solo uso. Por ejemplo, para cada una de las transacciones a ser añadida, cada uno de los nodos consume un número de un solo uso en un esfuerzo por añadir la transacción a un bloque en la cadena de bloques. En la mayoría de los casos, las transacciones pueden ser concurrentes, lo que puede resultar en que múltiples nodos utilicen el mismo número de un solo uso. En consecuencia, una o más de las transacciones concurrentes pueden fallar.
El documento US 2018/324158 A1 describe cómo permitir que los dispositivos informáticos acepten cargas útiles de dispositivos de entidades de acceso externo y accedan de manera segura a redes externas.
"Automatic Certificate Management Environment (ACME)", Barnes et. Al., DRAFT-IETF-ACME-ACME-16.TXT, INTERNET-DRAFT describe un protocolo para automatizar el proceso de verificación y emisión de certificados. El documento US 2018/204191 A1 describe operaciones seguras de datos digitales.
RESUMEN
Las implementaciones de la presente patente incluyen métodos implementados por computadora para mitigar fallas de transacciones concurrentes en redes de cadena de bloques. Más en particular, las implementaciones de la presente divulgación se dirigen a una tabla de números de un solos uso con una pluralidad de números de un solo uso rellenados previamente para evitar la colisión de números de un solo uso en el procesamiento de transacciones concurrentes en redes de cadena de bloques.
La presente invención se define por las reivindicaciones.
Se aprecia que los métodos de acuerdo con la presente patente pueden incluir cualquier combinación de los aspectos y características descritos en el presente documento. Es decir, los métodos de acuerdo con la presente patente no se limitan a las combinaciones de aspectos y características descritos específicamente 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 la presente patente se establecen en los dibujos adjuntos y la descripción a continuación. Otras características y ventajas de la presente patente resultarán evidentes a partir de la descripción y los dibujos, y de las reivindicaciones.
DESCRIPCIÓN DE LOS DIBUJOS
La FIG. 1 representa un entorno de ejemplo que puede utilizarse para ejecutar implementaciones de la presente divulgación.
La FIG. 2 representa un ejemplo de arquitectura conceptual de acuerdo con implementaciones de la presente divulgación.
La FIG. 3 representa un flujo de señal de ejemplo para inicializar una tabla de números de un solo uso de acuerdo con implementaciones de la presente divulgación.
La FIG. 4 representa un flujo de señal de ejemplo para recuperar, liberar y restablecer números de un solo uso de la tabla de números de un solo uso de acuerdo con implementaciones de la presente divulgación.
La FIG. 5 representa un flujo de señal de ejemplo para actualizar los valores de números de un solo uso disponibles en la tabla de números de un solo uso de acuerdo con implementaciones de la presente divulgación.
La FIG. 6 representa un proceso de ejemplo de mantenimiento de una tabla de números de un solo uso que se puede ejecutar de acuerdo con implementaciones de la presente divulgación.
Los símbolos de referencia similares en los diversos dibujos indican elementos similares.
DESCRIPCIÓN DETALLADA
Las implementaciones de la presente divulgación incluyen métodos implementados por computadora para mitigar fallas de transacciones concurrentes en redes de cadena de bloques. Más en particular, las implementaciones de la presente divulgación se dirigen a una tabla de números de un solos uso con una pluralidad de números de un solo uso rellenados previamente para evitar la colisión de números de un solo uso en el procesamiento de transacciones concurrentes en redes de cadena de bloques. En algunas implementaciones, las acciones incluyen inicializar una tabla de números de un solo uso que incluye una pluralidad de ranuras de número de un solo uso, cada una de las ranuras de número de un solo uso se asocia con un índice de número de un solo uso y un estado, y almacenar un valor de número de un solo uso respectivo, recibir una solicitud de un valor de número de un solo uso desde una aplicación y, en respuesta, solicitar un valor de número de un solo uso desde la tabla de números de un solo uso, recibir un valor de número de un solo uso en respuesta a la solicitud, un estado de una ranura de número de un solo uso correspondiente al valor de número de un solo uso que se establece en ocupado y, en respuesta a una transacción que utiliza el valor de número de un solo uso siendo con éxito o fallida, ejecutar una de las siguientes opciones: liberar el valor de número de un solo uso dentro de la ranura de número de un solo uso y establecer el estado en no ocupado si la transacción tiene éxito y establecer el estado en desocupado si la transacción falló.
Para proporcionar un contexto adicional para las implementaciones de la presente divulgación, 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 que las entidades participantes realicen transacciones de forma segura e inmutable, y almacenen datos. Aunque el término cadena de bloques se asocia generalmente con la red de criptomonedas de Bitcoin, cadena de bloques se utiliza en el presente documento para referirse generalmente a un DLS sin referencia a un caso de uso particular. 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 pública de cadena de bloques, el proceso de consenso es controlado por nodos de la red de consenso. Por ejemplo, cientos, miles, incluso millones de entidades pueden cooperar en una red pública de cadena de bloques, cada una de las cuales hace funcionar al menos un nodo en la red pública de cadena de bloques. En consecuencia, la red pública de cadena de bloques puede considerarse una red pública con respecto a las entidades participantes. En algunos ejemplos, la mayoría de entidades (nodos) debe firmar cada bloque para que éste sea válido y se añada a la cadena de bloques (libro de contabilidad distribuido) de la red de cadena de bloques. Un ejemplo de red de cadena de bloques pública incluye la red Bitcoin, que es una red de pago de igual a igual. La red Bitcoin utiliza un libro mayor distribuido, denominado cadena de bloques. Sin embargo, como se ha indicado anteriormente, el término cadena de bloques se utiliza para hacer referencia, en general, a libros mayores distribuidos, sin referencia particular a la red Bitcoin.
En general, una red pública de cadena de bloques admite transacciones públicas. Una transacción pública se comparte con todos los nodos de la red pública de cadena de bloques y se almacena en una cadena de bloques global. Una cadena de bloques global es una cadena de bloques que se repite en todos los nodos. Es decir, todos los nodos están en perfecto estado de consenso con respecto a la cadena de bloques global. Para lograr un consenso (p. ej., un acuerdo para la adición de un bloque a una cadena de bloques), se implementa un protocolo de consenso dentro de la red de cadena de bloques pública. Un ejemplo de protocolo de consenso incluye, sin limitación, prueba de trabajo (POW) implementada en la red Bitcoin.
En general, se proporciona una red de cadena de bloques privada para una entidad en particular, que controla de forma centralizada los permisos de lectura y escritura. La entidad controla qué nodos pueden participar en la red de cadena de bloques. En consecuencia, las redes de cadena de bloques privadas se conocen generalmente como redes autorizadas que imponen restricciones sobre quién puede participar en la red y sobre su nivel de participación (p. ej., solo en ciertas transacciones). Se pueden utilizar diversos tipos de mecanismos de control de acceso (p. ej., los participantes existentes votan sobre la adición de nuevas entidades, una autoridad reguladora puede controlar la admisión).
En general, una red de consorcio de cadena de bloques es privada entre las entidades participantes. En una red de consorcio de cadena de bloques, el proceso de consenso es controlado por un conjunto autorizado de nodos, donde uno o más nodos se hacen funcionar por una entidad respectiva (por ejemplo, una institución financiera, una compañía de seguros). Por ejemplo, un consorcio de diez (10) entidades (por ejemplo, instituciones financieras, compañías de seguros) puede hacer funcionar una red de consorcio de cadena de bloques, cada una de las cuales hace funcionar al menos un nodo de la red de consorcio de cadena de bloques. En consecuencia, la red de consorcio de cadena de bloques puede considerarse una red privada con respecto a las entidades participantes. En algunos ejemplos, cada una de las entidades (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.
Las implementaciones de la presente divulgación se describen con más detalle en el presente documento con referencia a redes de cadena de bloques en general. Se contempla que las implementaciones de la presente divulgación se puedan realizar en cualquier tipo apropiado de red de cadena de bloques.
Como se presentó anteriormente, se ejecuta un protocolo de consenso dentro de una red de cadena de bloques para añadir bloques a una cadena de bloques. Cada uno de los bloques se puede describir como un paquete de transacciones ejecutadas entre entidades en la red de cadena de bloques. Múltiples nodos dentro de la red de cadena de bloques compiten a través del protocolo de consenso para que su bloque se añada a la cadena de bloques. Las transacciones y los bloques se registran utilizando números de un solo uso. Es decir, cada uno de los nodos que participa en el protocolo de consenso utiliza un número de un solo uso. En algunos ejemplos, un número de un solo uso es un número aleatorio (arbitrario) (p. ej., de longitud fija) que se utiliza solo una vez. Por ejemplo, si se utiliza un número de un solo uso para registrar con éxito una transacción en la cadena de bloques, ese número de un solo uso no se vuelve a utilizar. Con más detalle, cada una de las transacciones escrita en la cadena de bloques utiliza un número de un solo uso. El número de un solo uso se puede utilizar de varias maneras. Por ejemplo, el número de un solo uso se puede concatenar al valor de resumen de un bloque de transacción, por lo que el resumen será menor o igual que el objetivo de la red. Por dar otro ejemplo, el número de un solo uso se puede concatenar con un valor de transacción que debe resumirse.
En algunos casos, las transacciones pueden ser concurrentes. En consecuencia, se puede requerir un número significativo de números de un solo uso al mismo tiempo para registrar transacciones en la cadena de bloques. Puede ocurrir que dos o más nodos utilicen simultáneamente el mismo número de un solo uso. Si un nodo tiene éxito en añadir su transacción a la cadena de bloques, el número de un solo uso ya no es válido para su uso y el o los otros nodos fallarán en su esfuerzo por registrar sus transacciones en la cadena de bloques.
Las implementaciones de la presente divulgación se describen con más detalle en el presente documento en vista del contexto anterior. Más particularmente, y como se introdujo anteriormente, las implementaciones de la presente divulgación se dirigen a una tabla de números de un solo uso con una pluralidad de números de un solo uso cargados previamente para evitar la colisión de números de un solo uso en el procesamiento de transacciones concurrentes en redes de cadena de bloques. Como se describe con más detalle en el presente documento, se emplea un modelo de prioridad, de modo que, mientras un nodo utiliza un número de un solo uso de la tabla de números de un solo uso, el número de un solo uso no está disponible para su uso por cualquier otro nodo. Si la transacción tiene éxito, el número de un solo uso se elimina de la tabla de números de un solo uso y se proporciona un nuevo número de un solo uso en su lugar. Si la transacción no tiene éxito, el número de un solo uso se libera para su uso y permanece en la tabla de números de un solo uso para su reutilización en una transacción posterior.
La FIG. 1 representa un entorno 100 de ejemplo que puede utilizarse para ejecutar implementaciones de la presente divulgación. En algunos ejemplos, el entorno 100 de ejemplo permite a las entidades participar en una red de cadena de bloques 102. El entorno 100 de ejemplo incluye dispositivos informáticos 106, 108 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 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. Los dispositivos informáticos de ejemplo 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., el usuario A), tal como el sistema de gestión de transacciones que utiliza la primera entidad para gestionar sus transacciones con una o más entidades (p. ej., otros usuarios). El sistema informático 108 puede alojar servicios implementados por ordenador de una segunda entidad (por ejemplo, un usuario B), tal como un sistema de gestión de transacciones que la segunda entidad utiliza para gestionar sus transacciones con una o más entidades (por ejemplo, otros usuarios).
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.
La FIG. 2 representa una arquitectura 200 conceptual de ejemplo de acuerdo con implementaciones de la presente divulgación. La arquitectura 200 conceptual de ejemplo incluye una capa 202 de entidad, una capa 204 de servicios alojados y una capa 206 de red de cadena de bloques. En el ejemplo representado, la capa de entidad 202 incluye tres entidades, Entidad_1 (E1), Entidad_2 (E2) y Entidad_3 (E3), teniendo cada una de las entidades un sistema de gestión de transacciones respectivo 208.
En el ejemplo representado, la capa de servicios alojados 204 incluye interfaces 210 para cada sistema de gestión de transacciones 210. En algunos ejemplos, un sistema 208 de gestión de transacciones respectivo se comunica con una interfaz 210 respectiva a través de una red (p. ej., la red 110 de la FIG. 1) utilizando un protocolo (p. ej., protocolo de transferencia de hipertexto seguro (HTTPS)). En algunos ejemplos, cada una de las interfaces 210 proporciona una conexión de comunicación entre un respectivo sistema 208 de gestión de transacciones y la capa 206 de red de cadena de bloques. Más particularmente, la interfaz 210 se comunica con una red 212 de cadena de bloques de la capa 206 de red de cadena de bloques. En algunos ejemplos, la comunicación entre una interfaz 210 y la capa 206 de red de cadena de bloques se realiza utilizando llamadas a procedimiento remoto (RPC). En algunos ejemplos, las interfaces 210 "alojan" nodos de red de cadena de bloques para los sistemas de gestión de transacciones respectivos 208. Por ejemplo, las interfaces 210 proporcionan la interfaz de programación de aplicaciones (API) para acceder a la red 212 de cadena de bloques.
Como se describe en el presente documento, la red 212 de cadena de bloques se proporciona como una red entre pares que incluye una pluralidad de nodos 214 que registran de forma inmutable información en una cadena 216 de bloques. Aunque se representa esquemáticamente una única cadena 216 de bloques, se proporcionan múltiples copias de la cadena 216 de bloques, que se mantienen en la red 212 de cadena de bloques. Por ejemplo, cada nodo 214 almacena una copia de la cadena de bloques. En algunas implementaciones, la cadena 216 de bloques almacena información asociada con las transacciones que se realizan entre dos o más entidades que participan en la red 212 de cadena de bloques.
La FIG. 3 representa un flujo 300 de señal de ejemplo para inicializar una tabla (tablaNonce) de números de un solo uso de acuerdo con implementaciones de la presente divulgación. Por conveniencia, se describirá que el flujo 300 de señal se realiza entre componentes dentro de una red de cadena de bloques. Como se describe con más detalle en el presente documento, la tabla de números de un solo uso registra una pluralidad de números de un solo uso, que se pueden utilizar, por ejemplo, en la ejecución de un protocolo de consenso dentro de la red de cadena de bloques para registrar transacciones en una cadena de bloques dentro de la red de cadena de bloques. La tabla de números de un solo uso puede almacenar decenas, centenas, miles o cualquier número apropiado de valores de números de un solo uso. En algunos ejemplos, el tamaño de la tabla de números de un solo uso se configura en base a un número esperado y/o la frecuencia de números de un solo uso a ser recuperados. En algunos ejemplos, el tamaño de la tabla de números de un solo uso se puede elegir de diversas formas. Por ejemplo, el tamaño se puede inicializar aleatoriamente, predeterminar en base a un tipo de cuenta. Por dar otro ejemplo, el tamaño se puede definir en una solicitud para inicializar la tabla de números de un solo uso. En algunas implementaciones, la tabla de números de un solo uso incluye filas, cada una de las filas registra un índice (índiceNonce) de número de un solo uso, un número (valorNonce) de un solo uso y un estado (estadoÍndiceNonce) de índice de número de un solo uso.
En el ejemplo de la FIG. 3, el flujo 300 de señal está entre una aplicación 302 (p. ej., ejecutada dentro de un nodo de la red de cadena de bloques), un puente 304 y una base 306 de datos. El puente 304 está alojado junto con las aplicaciones del lado del cliente. La base 306 de datos almacena la tabla de números de un solo uso que utiliza la aplicación 302.
En algunas implementaciones, la aplicación 302 envía (308) una solicitud para inicializar una tabla de números de un solo uso. En algunos ejemplos, esto ocurre después de que se crea una cuenta de cadena de bloques asociada con la aplicación 302. El puente 304 abstrae una implementación de modelo y servicio del cliente de cadena de bloques para mantener la tabla de números de un solo uso. El puente 304 se encuentra entre la aplicación 302 y la base 306 de datos para facilitar la inicialización de la tabla de números de un solo uso.
En algunas implementaciones, el puente 304 inicializa cada uno de los índices de número de un solo uso en la tabla de números de un solo uso recorriendo el tamaño de la tabla de números de un solo uso. La tabla de números de un solo uso se almacena en la base 306 de datos. El puente 304 inserta (310) una fila correspondiente a cada uno de los índices de número de un solo uso. Cada uno de los índices de número de un solo uso puede tener uno o más valores asociados. Los valores de ejemplo incluyen, sin limitación, un identificador, una dirección de cuenta, una versión de número de un solo uso, un índice de número de un solo uso, un número de un solo uso, un estado ocupado y un tiempo ocupado por última vez. Las variables correspondientes al valor de número de un solo uso caracterizan el número de un solo uso. Por ejemplo, el identificador es una referencia única al valor de un solo uso, la dirección de cuenta puede referirse a una o más cuentas asociadas con transacciones, la versión de número de un solo uso puede especificar qué variante del número de un solo uso se utiliza, y ocupado indica la disponibilidad del número de un solo uso para una transacción. En algunos ejemplos, el tiempo ocupado por última vez se puede utilizar para determinar si se ha agotado un tiempo de espera y debe liberarse como se describe con más detalle en el presente documento.
La FIG. 4 representa un flujo 400 de señal de ejemplo para recuperar, liberar y restablecer valores de números de un solo uso de la tabla de números de un solo uso de acuerdo con implementaciones de la presente divulgación. Por conveniencia, se describirá que el flujo 400 de señal se realiza entre componentes dentro de una red de cadena de bloques. En el ejemplo de la FIG. 4, el flujo 400 de señal se encuentra entre la aplicación 302 (p. ej., ejecutada dentro de un nodo de la red de cadena de bloques), el puente 304, la base 306 de datos y una cadena 402 de bloques.
De acuerdo con implementaciones de la presente divulgación, se utiliza un modelo de prioridad de modo que, mientras un nodo (p. ej., la aplicación 302) está utilizando un número de un solo uso de la tabla de números de un solo uso, el número de un solo uso no está disponible para su uso por cualquier otro nodo. Si la transacción tiene éxito, el número de un solo uso se elimina de la tabla de números de un solo uso y se proporciona un nuevo número de un solo uso en su lugar. Si la transacción no tiene éxito, el número de un solo uso se libera para su uso y permanece en la tabla de números de un solo uso para su reutilización en una transacción posterior. Al priorizar el número de un solo uso, mientras está en uso, las transacciones concurrentes no pueden utilizar el mismo número de un solo uso, evitando fallas en las transacciones. En algunas implementaciones, y como se describe con más detalle en el presente documento, el modelo de prioridad incluye primitivas de operación de recuperar, liberar y reiniciar.
En algunas implementaciones, la operación de recuperación obtiene un valor de número de un solo uso que se utilizará en la transacción de cadena de bloques. La aplicación 302 envía (410) un mensaje de número de un solo uso de recuperación al puente 304. A su vez, el puente 304 consulta la base 306 de datos para solicitar (412) un índice de número de un solo uso no ocupado. La consulta de la base de datos para un número de un solo uso se puede ejecutar mediante las siguientes sentencias de SQL de ejemplo:
update tabla_nonce set ocupado = #uuid#, último_tiempo_ocupado = ahora, where id in (select id from tabla_nonce where dirección_cuenta = #dirección_cuenta# and ocupado is null order by índice_nonce asc limit 1)
En algunos ejemplos, la sentencia de SQL selecciona todos los índices de número de un solo uso con un estado ocupado establecido en nulo y elige el índice de número de un solo uso más pequeño para ser priorizado (p. ej., ocupado). El último tiempo ocupado del índice de número de un solo uso seleccionado se establece en ‘ahora’ (p. ej., una marca de tiempo actual) para evitar que el valor de número de un solo uso respectivo se utilice en otra transacción.
Si la prioridad tiene éxito, el puente 304 consulta (414) información sobre el índice de número de un solo uso que se priorizó (p. ej., el número de un solo uso), y el número de un solo uso se devuelve (416) a la aplicación 302. La información sobre el índice de número de un solo uso se puede consultar utilizando la siguiente consulta SQL de ejemplo:
select id, dirección_cuenta, versión_nonce, índice_nonce, valor_nonce, ocupado, último_tiempo_ocupado from tabla_nonce where ocupado = #uuid#
La sentencia de SQL de ejemplo selecciona toda la información de número de un solo uso de la tabla de números de un solo uso en base al estado ocupado especificado en la consulta inicial de un valor de número de un solo uso.
Sin embargo, si la recuperación de un número de un solo uso no tiene éxito (p. ej., todos los índices de números de un solo uso están ocupados), la base 306 de datos devuelve un valor de actualización de cero, el puente 304 devuelve (418) que todas las ranuras de índice de número de un solo uso en la tabla de números de un solo uso están ocupadas y lanza una excepción.
El valor de número de un solo uso seleccionado se utiliza para iniciar (420) el registro de una transacción en la cadena 408 de bloques. Mediante la ejecución del protocolo de consenso, la cadena 408 de bloques envía (422) mensajes asíncronos para informar a los nodos de la red de cadenas de bloques sobre los estados de las transacciones. Dichos mensajes asíncronos se reciben por la aplicación 302. El sistema de cadena de bloques no garantiza que el mensaje asíncrono deba entregarse con éxito. Si el mensaje asíncrono que indica el estado de la transacción no se devuelve a la aplicación 302, el estado ocupado del índice de número de un solo uso y el valor de número de un solo uso no se pueden restablecer y sigue disponible para su uso con transacciones posteriores.
En algunas implementaciones, la aplicación 302 recibe un mensaje que indica que la transacción tuvo éxito o falló. Si la transacción tuvo éxito, la aplicación informa (424) al puente 304 y el puente 304 libera el índice de número de un solo uso para uso futuro. En algunos ejemplos, la liberación incluye actualizar el número de un solo uso (p. ej., incrementar un valor del número de un solo uso) y establecer el estado ocupado en nulo. La actualización del valor de número de un solo uso asegura que solo se utilicen nuevos números de un solo uso y que los números de un solo uso utilizados anteriormente sigan indisponibles para transacciones futuras. Si la transacción no tuvo éxito, la aplicación 302 informa (428) al puente 304 y el puente restablece el índice de número de un solo uso actualizando el estado ocupado a nulo. Es decir, el número de un solo uso permanece sin cambios y vuelve a estar disponible para su uso en una transacción futura. Se pueden proporcionar sentencias SQL primera y segunda de ejemplo como: update tabla_nonce set ocupado = NULL, último_tiempo_ocupado = NULL, valor_nonce = valor_nonce 1 where dirección_cuenta = #direcciónCuenta# and índice_nonce = #índiceNonce# update tabla_nonce set ocupado = NULL, último_tiempo_ocupado = NULL, where dirección_cuenta = #direcciónCuenta# and índice_nonce = #índiceNonce#
La primera sentencia de SQL de ejemplo se puede ejecutar para su liberación (p. ej., en respuesta al éxito de la transacción), y la segunda sentencia de SQL de ejemplo se puede ejecutar para restablecer (p. ej., en respuesta a la falla de la transacción).
La FIG. 5 representa un flujo 500 de señal de ejemplo para actualizar los valores de números de un solo uso disponibles en la tabla de números de un solo uso de acuerdo con implementaciones de la presente divulgación. Por conveniencia, se describirá que el flujo 400 de señal se realiza entre componentes dentro de una red de cadena de bloques. En el ejemplo de la FIG. 5, el flujo 500 de señal es entre la aplicación 302 (p. ej., ejecutada dentro de un nodo de la red de cadena de bloques), el puente 304, la base 306 de datos y la cadena 402 de bloques.
Como se señaló anteriormente, debido a que la cadena 402 de bloques no garantiza que el mensaje entregado deba entregarse con éxito a la aplicación 302, algunas ranuras de número de un solo uso están ocupadas y no esperan a que el mensaje se libere/reinicie. En vista de esto, las implementaciones de la presente divulgación proporcionan una tarea demonio para verificar periódicamente todas las ranuras de índice de número de un solo uso ocupadas. En algunos ejemplos, el último tiempo ocupado de cada una de las ranuras de índice de número de un solo uso se utiliza para determinar si se ha agotado el tiempo de espera y si la tarea demonio es liberar/reiniciar la ranura de índice de número de un solo uso.
En el ejemplo de la FIG. 5, la aplicación 302 envía (510) una activación temporizada al puente 304. En respuesta, el puente consulta (512) la base 306 de datos para obtener una lista de índices de números de un solo uso con un último tiempo ocupado no establecido en nulo. Esto permite que todos los valores de índice de número de un solo uso se actualicen utilizando un único método para actualizar los valores respectivos devueltos por la sentencia select. El puente 304 recorre cada uno de los valores en la lista devuelta desde la base 306 de datos para consultar (514) el estado en tiempo real del valor de número de un solo uso respectivo en la cadena 402 de bloques. El puente 304 recibe la actualización y actualiza (516) el estado de último tiempo ocupado dentro de la base 306 de datos en base a los resultados devueltos por la cadena 306 de bloques. Si se agota un tiempo de espera (p. ej., una diferencia entre un tiempo actual y el último tiempo ocupado es mayor que un tiempo umbral), el puente 304 consulta directamente el estado en tiempo real correspondiente a la ranura de número de un solo uso de la cadena 402 de bloques y actualiza la base 306 de datos. Al actualizar la base 306 de datos, el estado de ocupación se establece en nulo, y el valor de número de un solo uso es el resultado de la consulta en tiempo real desde la cadena 402 de bloques.
La FIG. 6 representa un proceso 600 de ejemplo que se puede ejecutar de acuerdo con implementaciones de la presente divulgación. En algunas implementaciones, el proceso 600 de ejemplo puede realizarse utilizando uno o más programas ejecutables por computadora ejecutados utilizando uno o más dispositivos informáticos. El proceso 600 de ejemplo se basa en uno o más de los flujos de señal descritos anteriormente. En general, el proceso de ejemplo está dirigido al uso de una tabla de números de un solo uso de acuerdo con implementaciones de la presente divulgación.
Se inicializa una tabla de números de un solo uso (602). Como se describe en el presente documento, por ejemplo, con referencia a la FIG. 3, la tabla de números de un solo uso incluye una pluralidad de ranuras de número de un solo uso, cada una de las ranuras de número de un solo uso está asociada con un índice de número de un solo uso y un estado, y almacena un valor de número de un solo uso respectivo. Se recibe una solicitud para un número de un solo uso (604). Por ejemplo, y como se describe en el presente documento con referencia a la FIG. 4, la solicitud se recibe una aplicación y, en respuesta, y un puente solicita un número de un solo uso de la tabla de números de un solo uso. Se recibe un valor de número de un solo uso en respuesta a la solicitud (606). Como se describe en el presente documento, un estado de una ranura de número de un solo uso correspondiente al valor de número de un solo uso se establece en ocupado (p. ej., la operación de recuperación de la FIG. 4) En respuesta a una transacción que utiliza el valor de número de un solo siendo con éxito y fallida, se ejecuta uno de los siguientes (610): liberar el valor de número de un solo uso dentro de la ranura de número de un solo uso y establecer el estado en no ocupado si la transacción tiene éxito y establecer el estado a no ocupado si la transacción falló. Esto se describe con referencia a las operaciones de liberación y reinicio de la FIG. 4.
Las características descritas pueden implementarse en circuitería electrónica digital, o en hardware, firmware, software o en combinaciones de ellos. El aparato puede implementarse en un producto de programa informático incorporado de forma tangible en un soporte de información (por ejemplo, en un dispositivo de almacenamiento legible por máquina) para su ejecución mediante un procesador programable, y las etapas de procedimiento pueden ser realizadas por un procesador programable que ejecute un programa de instrucciones para llevar a cabo funciones de las implementaciones descritas operando en datos de entrada y generando una salida. Las características descritas pueden implementarse de forma ventajosa en uno o más programas informáticos que pueden ejecutarse en un sistema programable que incluye al menos un procesador programable acoplado para recibir datos e instrucciones desde, y transmitir datos e instrucciones a, un sistema de almacenamiento de datos, al menos un dispositivo de entrada y al menos un dispositivo de salida. Un programa informático es un conjunto de instrucciones que pueden ser utilizadas, directa o indirectamente, en un ordenador para realizar una determinada actividad o conseguir un determinado resultado. Un programa informático puede estar escrito en cualquier forma de lenguaje de programación, incluidos los lenguajes compilados o interpretados, y puede desplegarse de cualquier forma, incluso como un programa independiente o como un módulo, componente, subrutina u otra unidad adecuada para su uso en un entorno informático.
Los procesadores adecuados para la ejecución de un programa de instrucciones incluyen, a modo de ejemplo, microprocesadores de propósito general y especial, y el procesador único o uno de múltiples procesadores de cualquier tipo de computadora. Generalmente, un procesador recibirá instrucciones y datos desde una memoria de solo lectura o una memoria de acceso aleatorio o ambas. Los elementos de una computadora pueden incluir un procesador para ejecutar instrucciones y una o más memorias para almacenar instrucciones y datos. Generalmente, una computadora también puede incluir, o estar operativamente acoplada para comunicarse con, uno o más dispositivos de almacenamiento masivo para almacenar archivos de datos; tales dispositivos incluyen discos magnéticos, tales como discos duros internos y discos extraíbles; discos magneto-ópticos; y discos ópticos. Los dispositivos de almacenamiento adecuados para incorporar de forma tangible instrucciones y datos de programa informático incluyen todas las formas de memoria no volátil, incluyendo, a modo de ejemplo, dispositivos de memoria semiconductores, tales como EPROM, EEPROM y dispositivos de memoria flash; discos magnéticos, tales como discos duros internos y discos extraíbles; discos magneto-ópticos; y discos CD-ROM y DVD-ROM. El procesador y la memoria pueden complementarse o incorporarse en circuitos integrados de aplicación específica (ASIC).
Para proporcionar interacción con un usuario, las características se pueden implementar en una computadora que tenga un dispositivo de visualización, tal como un monitor de tubo de rayos catódicos (CRT) o de pantalla de cristal líquido (LCD) para mostrar información al usuario y un teclado y un dispositivo señalador, tal como un ratón o una bola de seguimiento, mediante el cual el usuario puede proporcionar entrada a la computadora.
Las características pueden implementarse en un sistema informático que incluye un componente servidor, tal como un servidor de datos, o que incluye un componente de middleware, tal como un servidor de aplicaciones o un servidor de Internet, o que incluye un componente de frontal, tal como una computadora cliente que tiene una interfaz gráfica de usuario o un navegador de Internet, o cualquier combinación de ellos. Los componentes del sistema pueden conectarse mediante cualquier forma o medio de comunicación de datos digital, tal como una red de comunicaciones. Los ejemplos de redes de comunicaciones incluyen, p. ej., una red de área local (LAN), una red de área amplia (WAN) y las computadoras y redes que forman el Internet.
El sistema informático puede incluir clientes y servidores. Por lo general, un cliente y un servidor son remotos entre sí y normalmente interactúan a través de una red, tal como la descrita. La relación de cliente y servidor surge en virtud de los programas informáticos que se ejecutan en los respectivos ordenadores y que tienen una relación clienteservidor entre sí.
Además, los flujos lógicos representados en las figuras no requieren el orden particular mostrado, o el orden secuencial, para lograr los resultados deseados. Además, se pueden proporcionar otras etapas, o se pueden eliminar etapas, de los flujos descritos, y otros componentes se pueden añadir a, o eliminar de, los sistemas descritos. Por consiguiente, otras implementaciones están dentro del alcance de las siguientes reivindicaciones.
Se han descrito una serie de implementaciones de la presente divulgación. No obstante, se entenderá que se pueden realizar diversas modificaciones sin apartarse del alcance de la presente divulgación. Por consiguiente, otras implementaciones están dentro del alcance de las siguientes reivindicaciones.

Claims (8)

REIVINDICACIONES
1. Un método implementado por computadora para proporcionar valores de números de un solo uso para escribir transacciones en cadenas de bloques en una red de cadena de bloques, en donde cada una de las transacciones escrita con éxito en una cadena de bloques en la red de cadena de bloques utiliza un valor de número de un solo uso respectivo que no se utiliza para escribir otra transacción en una cadena de bloques en la red de cadena de bloques, y en donde el método se ejecuta por uno o más procesadores y comprende:
inicializar (602) una tabla de números de un solo uso que comprende una pluralidad de ranuras de número de un solo uso, en donde i) cada una de las ranuras de número de un solo uso está asociada con un índice de número de un solo uso respectivo y un estado respectivo, ii) cada una de las ranuras de número de un solo uso almacena un valor de número de un solo uso respectivo, y iii) el estado respectivo indica si el valor de número de un solo uso respectivo está disponible para una transacción;
recibir (604) una solicitud para un valor de número de un solo uso desde una aplicación y, en respuesta a recibir la solicitud de un valor de número de un solo uso, i) solicitar un valor de número de un solo uso desde la tabla de números de un solo uso y ii) recibir (606) un valor de número de un solo uso, en donde a) el valor de número de un solo uso recibido comprende un valor de número de un solo uso almacenado en una ranura de número de un solo uso con un estado asociado que indica que el valor de número de un solo uso está disponible para una transacción y b) un estado de la ranura de número de un solo uso correspondiente al valor de número de un solo uso recibido se actualiza a un estado ocupado para evitar que el valor de número de un solo uso recibido se utilice en múltiples transacciones;
determinar si una transacción que utiliza el valor de número de un solo uso recibido se escribe con éxito en una cadena de bloques en la red de cadenas de bloques;
en respuesta a determinar que una transacción que utiliza el valor de número de un solo uso recibido se escribe con éxito en la cadena de bloques, liberar el índice de número de un solo uso correspondiente al valor de número de un solo uso recibido, comprende i) actualizar el valor de número de un solo uso almacenado en la ranura de número aleatorio asociada con el valor de número de un solo uso recibido y ii) establecer el estado de número de un solo uso asociado con la ranura de número de un solo uso en no ocupado para indicar que el valor de número de un solo uso actualizado está disponible para una transacción; y
en respuesta a determinar que una transacción que utiliza el valor de número de un solo uso recibido no se escribe con éxito en la cadena de bloques, restablecer el índice de número de un solo uso correspondiente al valor de número de un solo uso recibido actualizando el estado de número de un solo uso correspondiente al índice de número de un solo uso a no ocupado para indicar que el valor de número de un solo uso recibido está disponible para una transacción.
2. El método de la reivindicación 1, en donde actualizar el valor de número de un solo uso almacenado en la ranura de número de un solo uso asociada con el valor de número de un solo uso recibido comprende almacenar un valor de número de un solo uso incrementado en la ranura de número de un solo uso.
3. El método de la reivindicación 1, que comprende, además:
recibir una segunda solicitud para un valor de número de un solo uso desde la aplicación y, en respuesta a recibir la segunda solicitud para un valor de número de un solo uso, solicitar un valor de número de un solo uso desde la tabla de números de un solo uso;
determinar que un estado de cada una de las ranuras de número de un solo uso en la tabla de números de un solo uso está ocupado y, en respuesta a determinar que un estado si cada una de las ranuras de número de un solo uso en la tabla de números de un solo uso está ocupada, transmitir una indicación a la aplicación de que todas las ranuras de número de un solo uso están ocupadas.
4. El método de la reivindicación 1, en donde la tabla de números de un solo uso se almacena en una base de datos y en donde un puente entre la aplicación y la base de datos i) recibe solicitudes para valores de números de un solo uso y ii) proporciona selectivamente valores de números de un solo uso a la aplicación.
5. El método de la reivindicación 1, en donde determinar si la transacción que utiliza el valor de número de un solo uso recibido se escribe con éxito en la cadena de bloques es en base a uno o más mensajes recibidos por la aplicación desde la red de la cadena de bloques.
6. El método de la reivindicación 1, en donde se activa periódicamente un estado de la transacción para determinar si ha ocurrido un evento de tiempo de espera.
7. Un medio de almacenamiento legible por computadora no transitorio acoplado a 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 para proporcionar valores de números de un solo uso para escribir transacciones en una red de cadena de bloques, en donde cada una de las transacciones escrita con éxito en una cadena de bloques en la red de cadena de bloques utiliza un valor de número de un solo uso respectivo que no se utiliza para escribir otra transacción en una cadena de bloques en la red de cadena de bloques, las operaciones comprenden el método de una cualquiera de las reivindicaciones 1 a 6.
8. Un sistema que comprende:
un dispositivo informático; y
un dispositivo de almacenamiento legible por computadora acoplado al dispositivo informático y que tiene instrucciones almacenadas en el mismo que, cuando se ejecutan por el dispositivo informático, hacen que el dispositivo informático realice operaciones para proporcionar valores de números de un solo uso para escribir transacciones en una red de cadena de bloques, en donde cada una de las transacciones escrita con éxito en una cadena de bloques en la red de cadenas de bloques utiliza un valor de número de un solo uso respectivo que no se utiliza para escribir otra transacción en una cadena de bloques en la red de cadenas de bloques, las operaciones comprende el método de una cualquiera de las reivindicaciones 1 a 6.
ES18865364T 2018-11-30 2018-11-30 Utilizar tabla de números de un solo uso para resolver fallas de transacciones concurrentes de cadena de bloques Active ES2880453T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/118523 WO2019072287A2 (en) 2018-11-30 2018-11-30 USING A TABLE OF NUTS TO RESOLVE SIMULTANEOUS BLOCK CHAIN TRANSACTION FAILURE

Publications (1)

Publication Number Publication Date
ES2880453T3 true ES2880453T3 (es) 2021-11-24

Family

ID=66100017

Family Applications (1)

Application Number Title Priority Date Filing Date
ES18865364T Active ES2880453T3 (es) 2018-11-30 2018-11-30 Utilizar tabla de números de un solo uso para resolver fallas de transacciones concurrentes de cadena de bloques

Country Status (16)

Country Link
US (1) US10540344B2 (es)
EP (1) EP3552167B1 (es)
JP (1) JP6704627B1 (es)
KR (1) KR102121157B1 (es)
CN (1) CN110431580B (es)
AU (1) AU2018348327B2 (es)
BR (1) BR112019007995A2 (es)
CA (1) CA3041211C (es)
ES (1) ES2880453T3 (es)
MX (1) MX2019004669A (es)
PH (1) PH12019500870A1 (es)
PL (1) PL3552167T3 (es)
RU (1) RU2720529C1 (es)
SG (1) SG11201903529TA (es)
WO (1) WO2019072287A2 (es)
ZA (1) ZA201902488B (es)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11614769B2 (en) * 2019-07-15 2023-03-28 Ecole Polytechnique Federale De Lausanne (Epfl) Asynchronous distributed coordination and consensus with threshold logical clocks
CN111562947B (zh) * 2020-04-01 2021-08-03 支付宝实验室(新加坡)有限公司 一种业务处理方法、装置及电子设备
CN111506783B (zh) * 2020-04-08 2023-12-22 百度在线网络技术(北京)有限公司 区块链中事务请求处理方法、装置、设备和介质
CN112346825A (zh) * 2020-11-11 2021-02-09 湖南智慧政务区块链科技有限公司 一种基于位图算法的区块链事务防重机制

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7117366B2 (en) * 2002-01-08 2006-10-03 International Business Machines Corporation Public key based authentication method for transaction delegation in service-based computing environments
US7788700B1 (en) * 2002-05-15 2010-08-31 Gerard A. Gagliano Enterprise security system
US7797751B1 (en) * 2006-03-27 2010-09-14 Oracle America, Inc. Nonce structure for storage devices
US20080066181A1 (en) * 2006-09-07 2008-03-13 Microsoft Corporation DRM aspects of peer-to-peer digital content distribution
US8104073B2 (en) * 2007-08-10 2012-01-24 Juniper Networks, Inc. Exchange of network access control information using tightly-constrained network access control protocols
DE102008046563A1 (de) * 2008-09-10 2010-03-11 Siemens Aktiengesellschaft Verfahren zur Datenübertragung zwischen Netzwerkknoten
KR20120100046A (ko) * 2011-03-02 2012-09-12 삼성전자주식회사 분산 환경 네트워크에서 컨텐츠의 접근 제어를 위한 장치 및 방법
US9210183B2 (en) * 2013-12-19 2015-12-08 Microsoft Technology Licensing, Llc Detecting anomalous activity from accounts of an online service
US10340038B2 (en) * 2014-05-13 2019-07-02 Nant Holdings Ip, Llc Healthcare transaction validation via blockchain, systems and methods
SG11201708000PA (en) * 2015-03-31 2017-10-30 Nasdaq Inc Systems and methods of blockchain transaction recordation
GB201511964D0 (en) 2015-07-08 2015-08-19 Barclays Bank Plc Secure digital data operations
SE542966C2 (en) * 2015-07-10 2020-09-22 Strawpay AB Methods and computer programs for efficient payments using digital promissory notes
WO2017134281A1 (en) * 2016-02-04 2017-08-10 Nasdaq Technology Ab Systems and methods for storing and sharing transactional data using distributed computer systems
EP3424177B1 (en) * 2016-02-29 2021-10-13 SecureKey Technologies Inc. Systems and methods for distributed identity verification
KR20180128968A (ko) * 2016-04-11 2018-12-04 엔체인 홀딩스 리미티드 블록체인 기반의 암호화폐를 위한 토큰을 검증하는 컴퓨터로 구현된 방법 및 시스템
US10204341B2 (en) * 2016-05-24 2019-02-12 Mastercard International Incorporated Method and system for an efficient consensus mechanism for permissioned blockchains using bloom filters and audit guarantees
US10447478B2 (en) * 2016-06-06 2019-10-15 Microsoft Technology Licensing, Llc Cryptographic applications for a blockchain system
US10243990B1 (en) * 2016-09-23 2019-03-26 Apple Inc. Systems and methods for detecting replay attacks on security space
CN106815722B (zh) * 2016-12-22 2021-05-07 中钞信用卡产业发展有限公司杭州区块链技术研究院 基于区块链的信息处理方法和装置
US10275739B2 (en) * 2017-01-05 2019-04-30 International Business Machines Corporation Tracking assets with a blockchain
CN107391320B (zh) * 2017-03-10 2020-07-10 创新先进技术有限公司 一种共识方法及装置
CN108572978A (zh) * 2017-03-10 2018-09-25 深圳瀚德创客金融投资有限公司 构建用于区块链的倒排索引结构的方法和计算机系统
CN107124278B (zh) * 2017-03-30 2021-03-30 腾讯科技(深圳)有限公司 业务处理方法、装置以及数据共享系统
GB201705858D0 (en) * 2017-04-11 2017-05-24 Nchain Holdings Ltd Computer-implemented system and method
CN107392040B (zh) * 2017-04-28 2019-08-09 阿里巴巴集团控股有限公司 一种共识验证的方法及装置
CN107301546B (zh) * 2017-05-03 2020-10-16 北京众享比特科技有限公司 随机数生成和应用方法及装置
US10348706B2 (en) * 2017-05-04 2019-07-09 Ernest Brickell Assuring external accessibility for devices on a network
CN108009918B (zh) * 2017-11-23 2021-10-26 深圳捷汇科技有限公司 区块链共识算法交易系统的记账方法及电子设备
CN108334307B (zh) * 2017-12-29 2020-11-20 北京欧链科技有限公司 基于区块链的数据筛选方法和装置
CN108389044A (zh) * 2018-02-28 2018-08-10 北京比特大陆科技有限公司 工作量证明的计算方法和系统、电子设备、程序和介质
CN108416578A (zh) * 2018-03-14 2018-08-17 郑杰骞 一种区块链系统及数据处理方法
CN108805569A (zh) * 2018-05-29 2018-11-13 阿里巴巴集团控股有限公司 基于区块链的交易处理方法及装置、电子设备

Also Published As

Publication number Publication date
ZA201902488B (en) 2022-05-25
EP3552167B1 (en) 2021-05-05
WO2019072287A2 (en) 2019-04-18
MX2019004669A (es) 2019-08-21
PL3552167T3 (pl) 2021-10-25
EP3552167A2 (en) 2019-10-16
JP2020518872A (ja) 2020-06-25
AU2018348327B2 (en) 2020-04-09
BR112019007995A2 (pt) 2019-11-12
WO2019072287A3 (en) 2019-10-03
CA3041211C (en) 2020-05-05
CA3041211A1 (en) 2019-04-18
SG11201903529TA (en) 2019-05-30
CN110431580B (zh) 2023-05-16
CN110431580A (zh) 2019-11-08
KR102121157B1 (ko) 2020-06-10
JP6704627B1 (ja) 2020-06-03
RU2720529C1 (ru) 2020-04-30
PH12019500870A1 (en) 2019-12-02
EP3552167A4 (en) 2020-03-11
US10540344B2 (en) 2020-01-21
US20190243820A1 (en) 2019-08-08

Similar Documents

Publication Publication Date Title
ES2880453T3 (es) Utilizar tabla de números de un solo uso para resolver fallas de transacciones concurrentes de cadena de bloques
CN110352445B (zh) 使用智能合约执行多方交易
TWI706647B (zh) 區塊鏈網路中的功能即服務(faas)平臺
ES2863573T3 (es) Almacenamiento de cadena de bloques basado en secreto con privacidad
US20200201683A1 (en) Systems and method for managing memory resources used by smart contracts of a blockchain
JP2021507407A (ja) ブロックチェーン・ライフサイクルを管理するための方法、装置及びコンピュータ・プログラム
US10318475B2 (en) System and method for persistence of application data using replication over remote direct memory access
EP3905178A1 (en) Blockchain-based resource allocation method and apparatus, and electronic device
JP2022504348A (ja) ブロックチェーン・リソースを格納するブロックチェーン通知ボード
CN110162570B (zh) 区块链数据的分次获取方法和装置
CN110622149A (zh) 基于二进制日志复制的区块链数据关系结构方案
CN112071390A (zh) 去中心化的处方再配药
US11422715B1 (en) Direct read in clustered file systems
US20170242726A1 (en) Batched commit in distributed transactions
CN112071389A (zh) 去中心化的处方再配药
US20190377642A1 (en) Decoupled backup solution for distributed databases across a failover cluster
US11579785B2 (en) Systems and methods of providing fault-tolerant file access
US10726049B2 (en) Obtaining blockchain data in stages
CN114610740A (zh) 医疗数据平台的数据版本管理方法及装置