ES2870657T3 - Verificación de integridad de los datos almacenados en una cadena de bloques de consorcio utilizando una cadena lateral pública - Google Patents

Verificación de integridad de los datos almacenados en una cadena de bloques de consorcio utilizando una cadena lateral pública Download PDF

Info

Publication number
ES2870657T3
ES2870657T3 ES18866464T ES18866464T ES2870657T3 ES 2870657 T3 ES2870657 T3 ES 2870657T3 ES 18866464 T ES18866464 T ES 18866464T ES 18866464 T ES18866464 T ES 18866464T ES 2870657 T3 ES2870657 T3 ES 2870657T3
Authority
ES
Spain
Prior art keywords
data
nodes
blockchain
stored
public
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
ES18866464T
Other languages
English (en)
Inventor
Long Cheng
Yanpeng Li
Zhiyuan Feng
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 ES2870657T3 publication Critical patent/ES2870657T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • G06F21/645Protecting data integrity, e.g. using checksums, certificates or signatures using a third party
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6236Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database between heterogeneous systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/08Payment architectures
    • G06Q20/10Payment architectures specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • 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)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Power Engineering (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Storage Device Security (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

Un método (600) implementado por computadora, que comprende: almacenar (405, 602) un elemento de datos en una cadena de bloques de consorcio mantenida por una red (302) de cadenas de bloques de consorcio; generar (604) un primer resumen (366) de datos en base al elemento (362) de datos almacenado; enviar (606) el primer resumen de datos a una pluralidad de nodos (330) de verificación de una red (352) de cadena de bloques pública para que cada uno de los nodos de verificación firme criptográficamente el primer resumen de datos y almacene (430) su primer resumen de datos firmado en una cadena (356) de bloques pública mantenida por una pluralidad de nodos (354) de cadena de bloques públicos de una red (352) de cadena de bloques pública, la red de cadena de bloques pública que incluye la pluralidad de nodos de verificación y la pluralidad de nodos de cadena de bloques públicos; recibir (505, 608) una solicitud (505) para recuperar el elemento de datos almacenado; en respuesta a recibir la solicitud, recuperar (410, 510, 610) el elemento de datos solicitado de la cadena de bloques de consorcio; generar (415, 612) un segundo resumen de datos en base al elemento de datos recuperado; enviar (420, 520, 614) el segundo resumen de datos a la pluralidad de nodos de verificación de modo que cada uno de los nodos de verificación firme criptográficamente (425, 525) el segundo resumen de datos y devuelva su segundo resumen de datos firmado; recibir (530, 616) los segundos resúmenes (368) de datos firmados de la pluralidad de nodos de verificación; recuperar (515, 618) los primeros resúmenes de datos firmados de la cadena de bloques pública; determinar (535, 620) que los primeros resúmenes de datos firmados coinciden con los segundos resúmenes de datos firmados; y en respuesta a determinar que los primeros resúmenes de datos firmados coinciden con los segundos resúmenes de datos firmados, enviar (622) una respuesta a la solicitud para recuperar el elemento de datos almacenado, la respuesta que indica que el elemento de datos almacenado no ha cambiado (540) desde que se almacenó.

Description

DESCRIPCIÓN
Verificación de integridad de los datos almacenados en una cadena de bloques de consorcio utilizando una cadena lateral pública
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 cadena de bloques pública 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.
Cadena de bloques es una tecnología de almacenamiento de datos distribuida descentralizada y a prueba de manipulaciones. Los datos de usuario y los contratos se operan y almacenan lógicamente en la cadena de manera pública. En muchos escenarios, los usuarios deben cumplir con los requisitos de protección de privacidad y no quieren que sus datos y lógicas se filtren a partes no autorizadas.
Aunque la criptografía se puede utilizar para mejorar la protección de privacidad para algunos diseños de escenarios específicos, se desea una solución más versátil y eficiente para resolver los problemas de privacidad existentes de las operaciones de cadena de bloques.
El documento US 2018/0101844 A1 describe un método para emitir un comprobante electrónico por un emisor específico. El método incluye (a) crear y registrar una transacción que incluye datos de un comprobante, una clave pública y un valor de firma del emisor, con una base de datos de cadena de bloques privada, proporcionar al emisor un PrivTxid que ubique la transacción en la base de datos de cadena de bloques privada y actualizar y registrar información de valor que incluye un saldo de los datos del comprobante con un BDB; y (b) adquirir y registrar un valor de resumen representativo calculado utilizando un valor de resumen específico, que es un valor de resumen de los datos de comprobante, la clave pública y el valor de firma, y sus valores de resumen correspondientes que incluyen un valor de resumen de un delta_n incluyendo todos los saldos de todos los comprobantes, identificables por todos los PrivTxids que ubican sus transacciones, con una base de datos de cadena de bloques pública, y adquieren un Txid que ubica el valor de resumen representativo en la base de datos de cadena de bloques pública. El documento US 2019/0236565 A1 describe un método que comprende los pasos de: (a) confirmar la validez de una transacción de emisión de divisa y un emisor de divisa cuando se obtiene la transacción de emisión de divisa incluye (i) un número aleatorio único específico utilizado una sola vez, (ii) un receptor de divisa, (iii) monto emitido de divisa, (iv) una clave pública del emisor de divisa, y (v) un valor de firma del emisor de divisa que firma los (i), (ii), (iii) y (iv) con una clave privada del emisor de divisa y, si es válida, registrar la transacción de emisión de divisa en un BCDB privado, en donde el registro incluye la actualización de una base de datos de saldos haciendo referencia al monto del cambio en el saldo debido al monto emitido de divisa, incluido en la transacción de emisión de divisa; y (b) registrar, en el BCDB público, un valor de resumen representativo específico generado calculando un valor de resumen asociado que coincide con el valor de resumen específico, cuando se satisface una condición específica.
RESUMEN
La invención se define en las reivindicaciones adjuntas. Las implementaciones de la presente memoria descriptiva incluyen métodos implementados por computadora para almacenar y recuperar datos a ser verificados asociados con nodos de una red de cadena de bloques. Más particularmente, las implementaciones de la presente memoria descriptiva están dirigidas a almacenar un resumen de datos de los datos a ser verificados asociados con uno o más nodos de red de cadena de bloques de consorcio utilizando una serie de nodos de verificación, y recuperar los datos a ser verificados y los resúmenes de datos almacenados.
En algunas implementaciones, las acciones incluyen almacenar un elemento de datos en una cadena de bloques de consorcio mantenida por una red de cadenas de bloques de consorcio; generar un primer resumen de datos en base al elemento de datos almacenado; enviar el primer resumen de datos a los nodos de verificación, de modo que cada uno de los nodos de verificación firme criptográficamente el primer resumen de datos y almacene su primer resumen de datos firmado en una cadena de bloques pública mantenida por una red de cadenas de bloques pública; recibir una solicitud para recuperar el elemento de datos almacenado; en respuesta a recibir la solicitud, recuperar el elemento de datos solicitado de la cadena de bloques de consorcio; generar un segundo resumen de datos en base al elemento de datos recuperado; enviar el segundo resumen de datos a los nodos de verificación para que cada uno de los nodos de verificación firme criptográficamente el segundo resumen de datos y devuelva su segundo resumen de datos firmado; recibir los segundos resúmenes de datos firmados de los nodos de verificación; recuperar los primeros resúmenes de datos firmados de la cadena de bloques pública; determinar que los primeros resúmenes de datos firmados coinciden con los segundos resúmenes de datos firmados; y, en respuesta a la determinación, enviar una respuesta a la solicitud para recuperar el elemento de datos almacenado, la respuesta indica que el elemento de datos almacenado no ha cambiado desde que se almacenó. Otras implementaciones incluyen sistemas, aparatos y programas informáticos correspondientes, configurados para realizar las acciones de los métodos, codificados en dispositivos de almacenamiento informáticos.
En algunas implementaciones, un medio de almacenamiento legible por computadora no transitorio se acopla a una o más computadoras y se configura con instrucciones ejecutables por una o más computadoras para: almacenar un elemento de datos en una cadena de bloques de consorcio mantenida por una red de cadena de bloques de consorcio; generar un primer resumen de datos en base al elemento de datos almacenado; enviar el primer resumen de datos a los nodos de verificación para que cada uno de los nodos de verificación firme criptográficamente el primer resumen de datos y almacene su primer resumen de datos firmado en una cadena de bloques pública mantenida por una red de cadenas de bloques pública; recibir una solicitud para recuperar el elemento de datos almacenado; en respuesta a recibir la solicitud, recuperar el elemento de datos solicitado de la cadena de bloques de consorcio; generar un segundo resumen de datos en base al elemento de datos recuperado; enviar el segundo resumen de datos a los nodos de verificación para que cada uno de los nodos de verificación firme criptográficamente el segundo resumen de datos y devuelva su segundo resumen de datos firmado; recibir los segundos resúmenes de datos firmados de los nodos de verificación; recuperar los primeros resúmenes de datos firmados de la cadena de bloques pública; determinar que los primeros resúmenes de datos firmados coinciden con los segundos resúmenes de datos firmados; y, en respuesta a la determinación, enviar una respuesta a la solicitud para recuperar el elemento de datos almacenado, la respuesta indica que el elemento de datos almacenado no ha cambiado desde que se almacenó.
En algunas implementaciones, un sistema incluye una o más computadoras; y una o más memorias legibles por computadora acopladas a la una o más computadoras y configuradas con instrucciones ejecutables por la una o más computadoras para: almacenar un elemento de datos en una cadena de bloques de consorcio mantenida por una red de cadena de bloques de consorcio; generar un primer resumen de datos en base al elemento de datos almacenado; enviar el primer resumen de datos a los nodos de verificación para que cada uno de los nodos de verificación firme criptográficamente el primer resumen de datos y almacene su primer resumen de datos firmado en una cadena de bloques pública mantenida por una red de cadenas de bloques pública; recibir una solicitud para recuperar el elemento de datos almacenado; en respuesta a recibir la solicitud, recuperar el elemento de datos solicitado de la cadena de bloques de consorcio; generar un segundo resumen de datos en base al elemento de datos recuperado; enviar el segundo resumen de datos a los nodos de verificación para que cada uno de los nodos de verificación firme criptográficamente el segundo resumen de datos y devuelva su segundo resumen de datos firmado; recibir los segundos resúmenes de datos firmados de los nodos de verificación; recuperar los primeros resúmenes de datos firmados de la cadena de bloques pública; determinar que los primeros resúmenes de datos firmados coinciden con los segundos resúmenes de datos firmados recibidos; y, en respuesta a la determinación, enviar una respuesta a la solicitud para recuperar el elemento de datos almacenado, la respuesta indica que el elemento de datos almacenado no ha cambiado desde que se almacenó. Cada una de estas y otras implementaciones puede incluir opcionalmente una o más de las siguientes características:
Una primera característica, combinable con cualquiera de las siguientes características, en donde los nodos de verificación son dispositivos informáticos que participan en la red de cadena de bloques pública.
Una segunda característica, combinable con cualquiera de las siguientes características, incluye además almacenar un contrato inteligente en la cadena de bloques pública, en donde el contrato inteligente está configurado para proporcionar una recompensa monetaria a los nodos de verificación en respuesta a la recepción de los segundos resúmenes de datos firmados solicitados del nodo de verificación.
Una tercera característica, combinable con cualquiera de las siguientes características, en donde generar el primer resumen de datos incluye calcular un resumen del elemento de datos almacenado.
Una cuarta característica, combinable con cualquiera de las siguientes características, en donde cada uno de los nodos de verificación está configurado para firmar criptográficamente el primer resumen de datos utilizando una clave privada asociada con ese nodo de verificación.
Una quinta característica, combinable con cualquiera de las siguientes características, en donde enviar el primer resumen de datos a los nodos de verificación incluye transmitir el primer resumen de datos a la red de cadena de bloques pública.
Una sexta característica, combinable con cualquiera de las siguientes características, en donde recuperar los primeros resúmenes de datos firmados de la cadena de bloques pública incluye identificar los primeros resúmenes de datos firmados en base a un identificador asociado con el elemento de datos almacenado y almacenado en la cadena de bloques pública.
La presente 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 son ejecutadas 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.
La presente memoria descriptiva proporciona además un sistema para implementar los métodos 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 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 métodos proporcionados en el presente documento.
La red de cadena de bloques descrita se puede utilizar para verificar la integridad de los datos almacenados en la red de cadena de bloques. Involucra una gran cantidad de nodos que pueden participar en el proceso de consenso, asegurando así la integridad de los datos. Además, las técnicas descritas proporcionan un mecanismo de incentivos en base a contratos inteligentes para aumentar la participación de los nodos en la cadena lateral pública.
Se aprecia que los métodos de acuerdo con la presente memoria descriptiva 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 memoria descriptiva 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 memoria descriptiva se establecen en los dibujos adjuntos y la descripción a continuación. Otras características y ventajas de la presente memoria descriptiva resultarán evidentes a partir de la descripción y los dibujos, y de las reivindicaciones.
DESCRIPCION DE LOS DIBUJOS
La FIG. 1 representa un ejemplo de un entorno que se puede utilizar para ejecutar implementaciones de la presente memoria descriptiva.
La FIG. 2 representa un ejemplo de una arquitectura conceptual de acuerdo con implementaciones de la presente memoria descriptiva.
La FIG. 3 representa un ejemplo de un sistema que se puede utilizar para ejecutar implementaciones de la presente memoria descriptiva de acuerdo con implementaciones de la presente memoria descriptiva.
La FIG. 4 representa un ejemplo de un proceso de almacenamiento de datos en una red de cadena de bloques de consorcio y una red de cadena lateral pública asociada de acuerdo con aspectos de la presente memoria descriptiva.
La FIG. 5 representa un ejemplo de un proceso de recuperación de datos de la red de cadena de bloques de consorcio y verificación de los datos recuperados en base a la red de cadena lateral pública de acuerdo con aspectos de la presente memoria descriptiva.
La FIG. 6 representa un ejemplo de un proceso que se puede ejecutar de acuerdo con implementaciones de la presente memoria descriptiva.
La FIG. 7 representa un ejemplo de un diagrama que ilustra módulos de un aparato de acuerdo con implementaciones de la memoria descriptiva.
Los símbolos de referencia similares en los diversos dibujos indican elementos similares.
DESCRIPCIÓN DETALLADA
Las implementaciones de la presente memoria descriptiva incluyen métodos implementados por computadora para almacenar y recuperar datos a ser verificados asociados con nodos de una red de cadena de bloques. Más particularmente, las implementaciones de la presente memoria descriptiva están dirigidas a almacenar un resumen de datos de los datos a ser verificados asociados con uno o más nodos de red de cadena de bloques de consorcio utilizando una serie de nodos de verificación, y recuperar los datos a ser verificados y los resúmenes de datos almacenados.
Para proporcionar un contexto adicional para las implementaciones de la memoria descriptiva, y como se presentó 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, habiliten a las entidades participantes para realizar transacciones de forma segura e inmutable y almacenar datos. El término cadena de bloques se utiliza en el presente documento para referirse en general 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 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. 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 pública soporta 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. Los ejemplos de protocolos de consenso incluyen, sin limitación, prueba de trabajo (POW), prueba de participación (POS) y prueba de autoridad (POA). En el presente documento se hace referencia a POW como un ejemplo no limitativo.
En general, se proporciona una red de cadena de bloques privada para una entidad 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 generalmente se denominan redes autorizadas que imponen restricciones sobre quién puede participar en la red y sobre su nivel de participación (p. ej., solo en determinadas 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 cadena de bloques de consorcio es privada entre las entidades participantes. En una red de cadena de bloques de consorcio, el proceso de consenso está controlado por un conjunto autorizado de nodos, uno o más nodos siendo operados por una entidad respectiva (p. ej., una institución financiera, una compañía de seguros). Por ejemplo, un consorcio de diez (10) entidades (p. ej., instituciones financieras, compañías de seguros) puede operar una red de cadena de bloques de consorcio, cada una de las cuales opera al menos un nodo en la red de cadena de bloques de consorcio. En consecuencia, la red de cadena de bloques de consorcio puede considerarse una red privada con respecto a las entidades participantes. En algunos ejemplos, cada una de las entidades (nodo) debe firmar cada uno de los bloques para que el bloque sea válido y se añada a la cadena de bloques. En algunos ejemplos, al menos un subconjunto de entidades (nodos) (p. ej., al menos 7 entidades) debe firmar cada uno de los bloques para que el bloque sea válido y se añada a la cadena de bloques.
Una cadena de bloques es un libro de contabilidad digital compartido a prueba de manipulaciones que registra las transacciones en una red de igual a igual pública o privada. El libro de contabilidad se distribuye a todos los nodos miembros de la red y el historial de transacciones de activos que se producen en la red se registra permanentemente en el bloque. Antes de participar en una transacción, un nodo en la cadena de bloques puede necesitar ejecutar cálculos utilizando diversas técnicas. Bajo las soluciones actuales, debido a que cada una de las cadenas de bloques es independiente, un nodo de una cadena de bloques no puede comunicarse con otras cadenas. Por ejemplo, un nodo no puede leer datos de otras cadenas de bloques o intercambiar datos con otras cadenas de bloques. Además, incluso si un nodo no necesita datos de otras cadenas de bloques para ejecutar un cálculo, realizar dichos cálculos completamente en una cadena de bloques puede consumir mucho tiempo y recursos computacionales de la cadena de bloques, si requiere lógicas y protocolos de cálculo complicados.
Las implementaciones de la memoria descriptiva se describen con más detalle en el presente documento con referencia a una red de cadena de bloques de consorcio, que es pública entre las entidades participantes. Sin embargo, se contempla que las implementaciones de la memoria descriptiva se puedan realizar en cualquier tipo apropiado de red de cadena de bloques.
Las implementaciones de la memoria descriptiva 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 memoria descriptiva están dirigidas a proporcionar un servicio de contrato inteligente fuera de la cadena capaz de operar datos entre cadenas en un entorno de ejecución confiable.
Específicamente, las técnicas descritas introducen una cadena de bloques auxiliar pública (también denominada "cadena lateral") que se utiliza para verificar la integridad de los datos almacenados en la cadena de bloques de consorcio. Debido a que la cadena lateral es pública, una gran cantidad de nodos pueden participar en el proceso de consenso, lo que garantiza la integridad de los datos en la cadena lateral. Una representación de cada una de las transacciones en la cadena de bloques de consorcio se almacena en la cadena lateral. Por lo tanto, para alterar los datos en la cadena de bloques de consorcio, un atacante también debe realizar una alteración correspondiente en la cadena lateral pública. Hacer tal alteración en la cadena lateral pública será mucho más difícil que en la cadena de bloques de consorcio, debido a la cantidad de nodos involucrados en el proceso de consenso para la cadena lateral pública. De esta manera, se puede garantizar la integridad de los datos en la cadena de bloques de consorcio. Además, las técnicas descritas proporcionan un mecanismo de incentivos en base a contratos inteligentes para aumentar la participación de los nodos en la cadena lateral pública. Un contrato inteligente puede ser un acuerdo informático diseñado para difundir, verificar o aplicar contratos de manera informativa. Los contratos inteligentes permiten realizar transacciones confiables sin la participación de terceros. Estas transacciones son rastreables e irreversibles.
Las técnicas descritas pueden tener una variedad de aplicaciones. Por ejemplo, durante un litigio por infracción de derechos de autor, el demandante debe proporcionar al tribunal algún tipo de evidencia digital para mostrar la hora exacta en que creó el trabajo original. Si la evidencia digital presentada por el demandante se almacena originalmente en una cadena de bloques de consorcio, es posible que no pueda cumplir con la carga requerida de la prueba, ya que el tribunal no puede determinar que la evidencia digital no ha sido manipulada. Para establecer un registro probatorio que sería aceptado por el tribunal, el demandante puede almacenar la evidencia de datos utilizando las técnicas descritas a través de un sistema de verificación. En el momento de la presentación de la evidencia, el demandante puede enviar la evidencia digital almacenada en la cadena de bloques de consorcio, junto con copias de la evidencia digital enviada por los nodos de verificación. De esta manera, será más probable que el tribunal reconozca la autenticidad de la evidencia digital porque una gran cantidad de nodos de verificación dan fe de la autenticidad de la evidencia digital.
Aparte del ejemplo discutido anteriormente, las técnicas descritas pueden beneficiar a muchas otras aplicaciones que hacen uso de la tecnología de cadena de bloques.
La FIG. 1 representa un ejemplo de un entorno 100 que puede utilizarse para ejecutar implementaciones de la 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 106, 108 informáticos pueden ser nodos de un sistema informático en la nube (no mostrado), o cada uno de los dispositivos 106, 108 informáticos puede ser un sistema informático en la nube independiente que incluye una serie de computadoras interconectadas por una red y que funcionan 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.
La FIG. 2 representa un ejemplo de una arquitectura 200 conceptual de acuerdo con implementaciones de la 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 serie 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 y divisa). 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 cuidadores). 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 una cantidad de fondos 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 sistema 300 que puede utilizarse para ejecutar implementaciones de la presente memoria descriptiva de acuerdo con implementaciones de la presente memoria descriptiva.
Como se ilustra en la FIG. 3, el sistema 300 incluye una red 302 de cadena de bloques de consorcio que incluye los nodos 304a-304e que mantienen una cadena 306 de bloques de consorcio. El sistema 300 incluye un sistema 316 de verificación, un sistema 320 de incentivos y una red 352 de cadena lateral pública. La red 352 de cadena lateral pública incluye una pluralidad de nodos 330 de verificación, una cadena 356 de bloques pública y nodos de cadena de bloques pública (p. ej., 354) que mantienen la cadena 356 de bloques pública.
En funcionamiento, la red 302 de cadena de bloques de consorcio (es decir, los nodos 304a-e) reciben solicitudes para almacenar datos (360). Los nodos 304a-e almacenan los datos en la cadena 306 de bloques de consorcio de acuerdo con los mecanismos descritos anteriormente. El sistema 316 de verificación recibe los datos almacenados una vez que se añaden a la cadena 306 de bloques (en 362). Por ejemplo, el sistema de verificación puede monitorizar la red 302 de cadena de bloques de consorcio y determinar que los datos se han almacenado una vez que los nodos 304a-e alcanzan un consenso en una cadena que incluye los datos.
En algunas implementaciones, el sistema 316 de verificación es responsable de la interacción entre la red 302 de cadena de bloques de consorcio y la red 352 de cadena lateral pública. En funcionamiento, el sistema 316 de verificación (en 366) envía un resumen de los datos almacenados a los nodos 330 de verificación. En algunas implementaciones, los nodos 330 de verificación son dispositivos informáticos que participan en la red 352 de cadena lateral pública. Puede haber un gran número (p. ej., miles) de nodos 330 de verificación. En algunos casos, el sistema 316 de verificación puede difundir el resumen de datos de la red 352 de cadena lateral pública. Los nodos 330 de verificación, al recibir el resumen de datos, firman criptográficamente el resumen de datos utilizando su clave privada. Luego, cada uno de los nodos de verificación intenta almacenar su resumen de datos firmado en la cadena 356 de bloques pública. En algunas implementaciones, todos los resúmenes de datos firmados producidos por los nodos 330 de verificación se almacenan en la cadena 356 de bloques pública. En algunos casos, un cierto número de los resúmenes de datos firmados se almacenan en la cadena 356 de bloques pública y los demás se descartan. Este número puede ser una función de los mecanismos de consenso utilizados en la red 352 de cadena lateral pública.
El sistema 300 también puede incluir un sistema 320 de incentivos. En algunas implementaciones, el sistema 320 de incentivos puede generar un contrato inteligente a ser almacenado en la cadena 356 de bloques pública. El contrato inteligente puede estar configurado, cuando se ejecuta por la red pública de cadena lateral, para proporcionar una recompensa monetaria a los nodos 330 de verificación que participan en la verificación de los datos almacenados. Por ejemplo, un nodo 330 de verificación que incluye con éxito su resumen de datos firmado en la cadena 356 de bloques pública puede recibir la recompensa monetaria automáticamente a través de la ejecución del contrato inteligente. En algunos casos, un nodo 330 de verificación que participa en la verificación de los datos solicitado de la cadena de bloques de consorcio (ver la FIG. 5, a continuación) puede recibir la recompensa monetaria automáticamente a través de la ejecución del contrato inteligente.
La FIG. 4 representa un proceso 400 de ejemplo del almacenamiento de datos en una red de cadena de bloques de consorcio y una red de cadena lateral pública asociada de acuerdo con aspectos de la presente memoria descriptiva.
En 405, un elemento de datos se almacena en la red 302 de cadena de bloques de consorcio. En 410, el sistema 316 de verificación recibe los datos recién almacenados de la red 302 de cadena de bloques de consorcio, tal como comunicándose con los nodos que participan en la red. En 415, el sistema 316 de verificación crea un resumen de datos del elemento de datos recién almacenado. Por ejemplo, el sistema 316 de verificación puede crear el resumen de datos generando un resumen del elemento de datos almacenado utilizando un algoritmo de resumen, tal como, por ejemplo, Secure Hash Algorithm 1 (SHA-1), SHA-256, Rivest-Shamir-Adleman (RSA) u otros algoritmos conocidos.
En 420, el sistema 316 de verificación solicita la verificación del resumen de datos mediante los nodos 330 de verificación. En respuesta, en 425, los nodos 330 de verificación firman criptográficamente el resumen de datos utilizando sus claves privadas. En 430, los nodos 330 de verificación almacenan sus resúmenes de datos individuales firmados en la cadena 356 de bloques pública gestionada por la red 352 de cadena lateral pública. Como se describió anteriormente, en algunas implementaciones, solo un cierto número de resúmenes de datos se almacenarán en la cadena 356 de bloques pública dependiendo de los mecanismos de consenso empleados por la red 352 de cadena lateral pública.
La FIG. 5 representa un proceso de ejemplo para recuperar datos de la red 302 de cadena de bloques de consorcio y verificar los datos recuperados en base a la red 352 de cadena lateral pública. En 505, la red 302 de cadena de bloques de consorcio recibe una solicitud para recuperar datos (es decir, mediante un nodo participante en la red de cadena de bloques de consorcio). En algunas implementaciones, esta solicitud puede recibirse por el sistema 316 de verificación.
En 510, el sistema 316 de verificación recupera los datos solicitados de la red 302 de cadena de bloques de consorcio, tal como obteniendo los datos solicitados de una versión de consenso de la cadena 306 de bloques de consorcio. En 515, el sistema 316 de verificación recupera los resúmenes de datos firmados asociados con los datos solicitados de la red 352 de cadena lateral pública. En algunos casos, los resúmenes firmados pueden recuperarse en base a un identificador asociado con los datos almacenados, tal como una marca de tiempo u otro identificador almacenado en la cadena 356 de bloques pública junto con los resúmenes de datos firmados por el nodo 330 de verificación.
En 520, el sistema 316 de verificación solicita el resumen de datos firmado de los datos recuperados de los nodos 330 de verificación. El sistema 316 de verificación puede crear el resumen de datos de los datos recuperados utilizando los algoritmos de resumen descritos anteriormente. En 525, el sistema 316 de verificación envía los resúmenes de datos a los nodos 330 de verificación, de modo que cada uno de los nodos 330 de verificación puede firmar criptográficamente el resumen de datos de los datos recuperados y, en 530, devolver su versión firmada del resumen de datos al sistema 316 de verificación.
En 535, el sistema 316 de verificación compara los resúmenes de datos firmados de los datos recuperados recibidos de los nodos 330 de verificación con los resúmenes de datos firmados recuperados de la cadena 356 de bloques pública (que se crearon cuando los datos estaban almacenados originalmente en la red de cadena de bloques de consorcio, ver FIG. 4). Si los resúmenes de datos firmados de los datos recuperados recibidos de los nodos 330 de verificación coinciden con los resúmenes de datos firmados recuperados de la cadena 356 de bloques pública, los datos almacenados en la red 302 de cadena de bloques de consorcio no han cambiado desde que se almacenaron originalmente (540).
Este proceso verifica que los datos solicitados no hayan sido modificados, porque si no han cambiado, el valor de los resúmenes de datos firmados de los datos recuperados producidos por los nodos 330 de verificación coincidirá con los resúmenes de datos almacenados previamente que se crearon cuando los datos se almacenaron originalmente. Si los datos han cambiado después de haber sido almacenados en la cadena de bloques de consorcio, los resúmenes de datos firmados de los datos recuperados no coincidirán con los que se almacenaron en la cadena 356 de bloques pública cuando los datos se almacenaron originalmente.
En algunos casos, el sistema 316 de verificación puede solicitar solo resúmenes de datos firmados en 520 de los nodos de verificación que insertaron con éxito sus resúmenes de datos firmados en la cadena 356 de bloques pública. Por ejemplo, los nodos 330 de verificación pueden intentar en cada caso almacenar un identificador único (p. ej. , una clave pública) que identifica el nodo particular junto con el resumen de datos. Por lo tanto, solo se consultarán las entradas que estén incluidas en la versión de consenso de la cadena 356 de bloques pública.
En algunos casos, el sistema 316 de verificación puede solicitar solo la verificación de un conjunto particular de los nodos 330 de verificación cuando se almacenan datos en la cadena 306 de bloques de consorcio. En tal caso, el sistema 316 de verificación puede consultar solo el conjunto particular de nodos para los resúmenes de datos firmados al verificar que los datos recuperados de la cadena 306 de bloques de consorcio no hayan cambiado.
La FIG. 6 representa un ejemplo del proceso 600 que se puede ejecutar de acuerdo con implementaciones de la presente memoria descriptiva. En algunas implementaciones, el ejemplo del proceso 600 puede realizarse utilizando uno o más programas ejecutables por computadora ejecutados utilizando uno o más dispositivos informáticos. Para mayor claridad de presentación, la descripción que sigue describe generalmente el proceso 600 en el contexto de las otras figuras de esta descripción. Sin embargo, se entenderá que el proceso 600 puede realizarse, por ejemplo, mediante cualquier sistema, entorno, software y hardware adecuados, o una combinación de sistemas, entornos, software y hardware, según sea apropiado. En algunas implementaciones, diversos pasos del proceso 600 pueden ejecutarse en paralelo, en combinación, en bucles o en cualquier orden.
En 602, un elemento de datos se almacena en una cadena de bloques de consorcio mantenida por una red de cadenas de bloques de consorcio.
En 604, se genera un primer resumen de datos en base al elemento de datos almacenado.
En 606, el primer resumen de datos se envía a los nodos de verificación, de modo que cada uno de los nodos de verificación firma criptográficamente el primer resumen de datos y almacena su primer resumen de datos firmado en una cadena de bloques pública mantenida por una red de cadenas de bloques pública. En algunas implementaciones, los nodos de verificación son dispositivos informáticos que participan en la red de cadena de bloques pública. En algunas implementaciones, cada uno de los nodos de verificación está configurado para firmar criptográficamente el primer resumen de datos utilizando una clave privada asociada con ese nodo de verificación. En algunas implementaciones, enviar el primer resumen de datos a los nodos de verificación incluye transmitir el primer resumen de datos a la red de cadena de bloques pública.
En 608, se recibe una solicitud para recuperar el elemento de datos almacenado.
En 610, en respuesta a la recepción de la solicitud, el elemento de datos solicitado se recupera de la cadena de bloques de consorcio.
En 612, se genera un segundo resumen de datos en base al elemento de datos recuperado. En algunas implementaciones, generar el primer resumen de datos incluye calcular un resumen del elemento de datos almacenado.
En 614, el segundo resumen de datos se envía a los nodos de verificación, de modo que cada uno de los nodos de verificación puede firmar criptográficamente el segundo resumen de datos y devolver su segundo resumen de datos firmado.
En 616, los segundos resúmenes de datos firmados se reciben de los nodos de verificación.
En 618, los primeros resúmenes de datos firmados se recuperan de la cadena de bloques pública. En algunas implementaciones, recuperar los primeros resúmenes de datos firmados de la cadena de bloques pública incluye identificar los primeros resúmenes de datos firmados en base a un identificador asociado con el elemento de datos almacenado y almacenado en la cadena de bloques pública.
En 620, se determina que los primeros resúmenes de datos firmados coinciden con los segundos resúmenes de datos firmados.
En 622, en respuesta a la determinación, se envía una respuesta para recuperar el elemento de datos almacenado, la respuesta que indica que el elemento de datos almacenado no ha cambiado desde que se almacenó.
En algunas implementaciones, el proceso 600 incluye además almacenar un contrato inteligente en la cadena de bloques pública, en donde el contrato inteligente está configurado para proporcionar una recompensa monetaria a los nodos de verificación en respuesta a recibir los segundos resúmenes de datos firmados solicitados de los nodos de verificación.
Haciendo referencia a la FIG. 7, la FIG. 7 representa un ejemplo de un diagrama que ilustra módulos de un aparato 700 de acuerdo con implementaciones de la memoria descriptiva. El aparato 700 puede ser una implementación de ejemplo para almacenar y recuperar datos a ser verificados asociados con nodos de una red de cadena de bloques. El aparato 700 puede corresponder a la implementación mostrada en las FIG. 3-5, y el aparato 700 incluye lo siguiente: un almacenamiento o una unidad 705 de almacenamiento, configurada para almacenar un elemento de datos en una cadena de bloques de consorcio que mantiene una red de cadena de bloques de consorcio; un primer generador o unidad 710 de generación, configurado para generar un primer resumen de datos en base al elemento de datos almacenado; un primer transmisor o unidad 715 de transmisión, configurado para enviar el primer resumen de datos a los nodos de verificación, cada uno de los nodos de verificación configurado para firmar criptográficamente su primer resumen de datos y almacenar su primer resumen de datos firmado en una cadena de bloques pública mantenida por la red de cadena de bloques pública; un receptor o una unidad 720 de recepción, configurada para recibir una solicitud para recuperar el elemento de datos almacenado; una primera unidad 725 de recuperación, configurada para recuperar el elemento de datos solicitado de la cadena de bloques de consorcio en respuesta a la recepción de la solicitud; un segundo generador o unidad 730 de generación, configurada para generar un segundo resumen de datos en base al elemento de datos recuperado; un solicitante o unidad 735 de solicitud, configurada para solicitar segundos resúmenes de datos asignados de los nodos de verificación y en respuesta a recibir los segundos resúmenes de datos firmados solicitados de los nodos de verificación; una segunda unidad 740 de recuperación, configurada para recuperar los primeros resúmenes de datos firmados de la cadena de bloques pública; una unidad 745 de determinación, configurada para determinar que los primeros resúmenes de datos firmados de la cadena de bloques pública coinciden con los segundos resúmenes de datos firmados recibidos de los nodos de verificación; un segundo transmisor o unidad 750 de transmisión, configurada para enviar una respuesta a la solicitud para recuperar los datos almacenados incluyendo el elemento de datos almacenado en respuesta a la determinación, la respuesta que indica que el elemento de datos almacenado no ha cambiado desde que fue almacenado.
En una implementación opcional, los nodos de verificación son dispositivos informáticos que participan en la red de cadena de bloques pública.
En una implementación opcional, el aparato 700 incluye además lo siguiente: un almacenamiento o subunidad de almacenamiento, configurada para almacenar un contrato inteligente en la cadena de bloques pública, en donde el contrato inteligente está configurado para proporcionar una recompensa monetaria a los nodos de verificación en respuesta a recibir los segundos resúmenes de datos firmados solicitados de los nodos de verificación.
En una implementación opcional, el aparato 700 incluye además lo siguiente: una calculadora o una subunidad de cálculo, configurada para calcular un resumen del elemento de datos almacenado.
En una implementación opcional, cada uno de los nodos de verificación está configurado para firmar criptográficamente el primer resumen de datos utilizando una clave privada asociada con ese nodo de verificación.
En una implementación opcional, el aparato 700 incluye además lo siguiente: una subunidad de transmisión, configurada para transmitir el primer resumen de datos a la red de cadena de bloques pública.
En una implementación opcional, el aparato 700 incluye además lo siguiente: un identificador o una subunidad de identificación, configurada para identificar los primeros resúmenes de datos firmados en base a un identificador asociado con el elemento de datos almacenado y almacenado en la cadena de bloques pública.
El sistema, aparato, módulo o unidad ilustrado en las implementaciones anteriores puede implementarse utilizando un chip informático 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, un 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 la implementación de un aparato corresponde básicamente a la implementación de un método, para partes relacionadas, se pueden hacer referencias a descripciones relacionadas en la implementación del método. La implementación del 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 o no ser 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 base a 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.
La FIG. 7 es un diagrama esquemático que ilustra un módulo funcional interno y una estructura de un aparato de red de cadena de bloques de consorcio. En esencia, un organismo de ejecución puede ser un dispositivo electrónico, y el dispositivo electrónico incluye lo siguiente: uno o más procesadores; y una memoria configurada para almacenar una instrucción ejecutable del uno o más procesadores.
El uno o más procesadores están configurados para almacenar un elemento de datos en una cadena de bloques de consorcio mantenida por una red de cadenas de bloques de consorcio; generar un primer resumen de datos en base al elemento de datos almacenado; enviar el primer resumen de datos a los nodos de verificación, cada uno de los nodos de verificación configurado para firmar criptográficamente el primer resumen de datos y almacenar su primer resumen de datos firmado en una cadena de bloques pública mantenida por una red de cadenas de bloques pública; recibir una solicitud para recuperar el elemento de datos almacenado; en respuesta a recibir la solicitud, recuperar el elemento de datos solicitado de la cadena de bloques de consorcio; generar un segundo resumen de datos en base al elemento de datos recuperado; solicitar segundos resúmenes de datos firmados de los nodos de verificación y, en respuesta, recibir los segundos resúmenes de datos firmados solicitados de los nodos; recuperar los primeros resúmenes de datos firmados de la cadena de bloques pública; determinar que los primeros resúmenes de datos firmados de la cadena de bloques pública coinciden con los segundos resúmenes de datos firmados recibidos de los nodos de verificación; y, en respuesta a la determinación, enviar una respuesta a la solicitud para recuperar los datos almacenados, incluido el elemento de datos almacenado, la respuesta que indica que el elemento de datos almacenado no ha cambiado desde que se almacenó.
Opcionalmente, los nodos de verificación son dispositivos informáticos que participan en la red de cadena de bloques pública.
Opcionalmente, el uno o más procesadores están configurados para almacenar un contrato inteligente en la cadena de bloques pública, en donde el contrato inteligente está configurado para proporcionar una recompensa monetaria a los nodos de verificación en respuesta a la recepción de los segundos resúmenes de datos firmados solicitados de los nodos de verificación.
Opcionalmente, el uno o más procesadores están configurados para calcular un resumen del elemento de datos almacenado.
Opcionalmente, cada uno de los nodos de verificación está configurado para firmar criptográficamente el primer resumen de datos utilizando una clave privada asociada con ese nodo de verificación.
Opcionalmente, el uno o más procesadores están configurados para transmitir el primer resumen de datos a la red de cadena de bloques pública.
Opcionalmente, el uno o más procesadores están configurados para identificar los primeros resúmenes de datos firmados en base a un identificador asociado con el elemento de datos almacenado y almacenado en la cadena de bloques pública.
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 soporte puede ser una señal propagada generada artificialmente, p. ej., una señal eléctrica, óptica o electromagnética generada por una máquina que se genera para codificar información para su transmisión a un aparato receptor adecuado para su ejecución por un aparato de procesamiento de datos. El medio de almacenamiento informático puede ser, o 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 compuertas 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 aplicación, 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 de 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 almacenarse en una parte 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 partes 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 desde 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. Para que uno o más programas informáticos se configuren para realizar operaciones o acciones particulares significa que el uno o más programas incluyen instrucciones que, cuando se ejecutan por un aparato de procesamiento de datos, hacen que el aparato realice las operaciones o acciones. Para que la circuitería lógica de propósito especial se configure para realizar operaciones o acciones particulares, significa que la circuitería tiene 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 (9)

REIVINDICACIONES
1. Un método (600) implementado por computadora, que comprende:
almacenar (405, 602) un elemento de datos en una cadena de bloques de consorcio mantenida por una red (302) de cadenas de bloques de consorcio;
generar (604) un primer resumen (366) de datos en base al elemento (362) de datos almacenado;
enviar (606) el primer resumen de datos a una pluralidad de nodos (330) de verificación de una red (352) de cadena de bloques pública para que cada uno de los nodos de verificación firme criptográficamente el primer resumen de datos y almacene (430) su primer resumen de datos firmado en una cadena (356) de bloques pública mantenida por una pluralidad de nodos (354) de cadena de bloques públicos de una red (352) de cadena de bloques pública, la red de cadena de bloques pública que incluye la pluralidad de nodos de verificación y la pluralidad de nodos de cadena de bloques públicos;
recibir (505, 608) una solicitud (505) para recuperar el elemento de datos almacenado;
en respuesta a recibir la solicitud, recuperar (410, 510, 610) el elemento de datos solicitado de la cadena de bloques de consorcio;
generar (415, 612) un segundo resumen de datos en base al elemento de datos recuperado;
enviar (420, 520, 614) el segundo resumen de datos a la pluralidad de nodos de verificación de modo que cada uno de los nodos de verificación firme criptográficamente (425, 525) el segundo resumen de datos y devuelva su segundo resumen de datos firmado;
recibir (530, 616) los segundos resúmenes (368) de datos firmados de la pluralidad de nodos de verificación; recuperar (515, 618) los primeros resúmenes de datos firmados de la cadena de bloques pública;
determinar (535, 620) que los primeros resúmenes de datos firmados coinciden con los segundos resúmenes de datos firmados; y
en respuesta a determinar que los primeros resúmenes de datos firmados coinciden con los segundos resúmenes de datos firmados, enviar (622) una respuesta a la solicitud para recuperar el elemento de datos almacenado, la respuesta que indica que el elemento de datos almacenado no ha cambiado (540) desde que se almacenó.
2. El método (600) implementado por computadora de la reivindicación 1, en donde la pluralidad de nodos (330) de verificación son dispositivos informáticos que participan en la red (352) de cadena de bloques pública.
3. El método (600) implementado por computadora de la reivindicación 1, que comprende además almacenar un contrato inteligente en la cadena de bloques pública, en donde el contrato inteligente está configurado para proporcionar una recompensa monetaria a los nodos (330) de verificación en respuesta a la recepción de los segundos resúmenes de datos firmados solicitados de los nodos de verificación.
4. El método (600) implementado por computadora de la reivindicación 1, en donde generar el primer resumen de datos incluye calcular un resumen del elemento de datos almacenado.
5. El método (600) implementado por computadora de la reivindicación 1, en donde cada uno de los nodos de verificación está configurado para firmar criptográficamente el primer resumen de datos utilizando una clave privada asociada con ese nodo de verificación.
6. El método (600) implementado por computadora de la reivindicación 1, en donde enviar el primer resumen de datos a la pluralidad de nodos (330) de verificación incluye transmitir el primer resumen de datos a la red de cadena de bloques pública.
7. El método (600) implementado por computadora de la reivindicación 1, en donde recuperar los primeros resúmenes de datos firmados de la cadena de bloques pública incluye identificar los primeros resúmenes de datos firmados en base a un identificador asociado con el elemento de datos almacenado y almacenado en la cadena de bloques pública.
8. Un medio de almacenamiento legible por computadora no transitorio acoplado a una o más computadoras y configurado con instrucciones ejecutables por la una o más computadoras para realizar el método (600) de cualquiera de las reivindicaciones 1 a 7.
9. Un sistema que comprende:
una o más computadoras; y
una o más memorias legibles por ordenador acopladas al uno o más ordenadores y configuradas con instrucciones ejecutables por el uno o más ordenadores para realizar el procedimiento (600) de una cualquiera de las reivindicaciones 1 a 7.
ES18866464T 2018-12-21 2018-12-21 Verificación de integridad de los datos almacenados en una cadena de bloques de consorcio utilizando una cadena lateral pública Active ES2870657T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/122559 WO2019072301A2 (en) 2018-12-21 2018-12-21 VERIFYING THE INTEGRITY OF STORED DATA IN A CONSORTIUM BLOCK CHAIN USING A PUBLIC SECONDARY CHAIN

Publications (1)

Publication Number Publication Date
ES2870657T3 true ES2870657T3 (es) 2021-10-27

Family

ID=66100041

Family Applications (1)

Application Number Title Priority Date Filing Date
ES18866464T Active ES2870657T3 (es) 2018-12-21 2018-12-21 Verificación de integridad de los datos almacenados en una cadena de bloques de consorcio utilizando una cadena lateral pública

Country Status (11)

Country Link
US (2) US10552641B2 (es)
EP (2) EP3571825B1 (es)
JP (1) JP6690066B2 (es)
KR (1) KR102153845B1 (es)
CN (1) CN111566649B (es)
ES (1) ES2870657T3 (es)
PH (1) PH12019501741A1 (es)
PL (1) PL3571825T3 (es)
SG (1) SG11201906830XA (es)
TW (1) TWI714179B (es)
WO (1) WO2019072301A2 (es)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108694189B (zh) * 2017-04-07 2022-01-21 微软技术许可有限责任公司 共同所有权的数据库系统的管理
US10963542B2 (en) * 2019-05-13 2021-03-30 Advanced New Technologies Co., Ltd. Blockchain-based image processing method and apparatus
EP3913891A1 (en) * 2019-05-15 2021-11-24 Advanced New Technologies Co., Ltd. Processing data elements stored in blockchain networks
CN110300167B (zh) * 2019-06-28 2020-07-31 京东数字科技控股有限公司 基于区块链的业务信息处理方法、设备及可读存储介质
CN110474884B (zh) * 2019-07-24 2024-04-23 北京百度网讯科技有限公司 以太坊网络系统及通信方法、设备及计算机可读存储介质
WO2021017008A1 (en) * 2019-08-01 2021-02-04 Advanced New Technologies Co., Ltd. Shared blockchain data storage based on error correction code
CN110457926A (zh) * 2019-08-13 2019-11-15 重庆邮电大学 一种工业物联网中基于数据加密存储的数据共享方法
EP3779755B1 (en) * 2019-08-14 2023-09-13 Fujitsu Limited A computer-implemented method for cross-chain-interoperability
CN110944004B (zh) 2019-09-12 2021-09-10 腾讯科技(深圳)有限公司 区块链网络中的数据处理方法、装置、存储介质和设备
JP7322621B2 (ja) * 2019-09-17 2023-08-08 富士通株式会社 取引記録装置、取引記録方法、および、取引記録プログラム
US11277260B2 (en) * 2019-09-17 2022-03-15 International Business Machines Corporation Off-chain notification of updates from a private blockchain
US20210099312A1 (en) * 2019-09-27 2021-04-01 Cypherium Blockchain Inc. Systems and methods for selecting and utilizing a committee of validator nodes in a distributed system
US11196570B2 (en) * 2019-10-07 2021-12-07 Accenture Global Solutions Limited Cryptologic blockchain interoperability membership system
US11593316B2 (en) * 2019-10-16 2023-02-28 International Business Machines Corporation Database snapshot for managing state synchronization
US20210157942A1 (en) 2019-11-27 2021-05-27 Green Data Technology Inc. Authenticating data for use using a data storage system and distributed electronic ledger system
JP7384044B2 (ja) * 2020-01-16 2023-11-21 富士通株式会社 検証方法、検証装置及び検証プログラム
CN111448565B (zh) 2020-02-14 2024-04-05 支付宝(杭州)信息技术有限公司 基于去中心化标识的数据授权
CN111327623A (zh) * 2020-02-28 2020-06-23 上海哈世科技有限公司 联盟链信息传输方法、装置、设备及存储介质
CN111339116A (zh) * 2020-02-29 2020-06-26 中央财经大学 一种基于区块链的用于开放银行数据共享的方式
CN111404962B (zh) * 2020-03-26 2022-06-24 杭州复杂美科技有限公司 联盟链节点数据传输方法、设备和存储介质
CN111464310B (zh) * 2020-03-30 2023-06-13 烟台海颐软件股份有限公司 一种联盟链与Polkadot链混合链实现方法
CN111460400B (zh) * 2020-03-31 2024-06-18 腾讯科技(深圳)有限公司 一种数据处理方法、装置及计算机可读存储介质
CN111639122B (zh) * 2020-04-08 2023-04-18 广东中科智能区块链技术有限公司 一种融合公有链的联盟链激励方案与装置
CN111565185B (zh) * 2020-04-29 2023-05-12 陈议尊 一种基于时分复用的信息摘要供需交易方法及系统
CN111614739B (zh) * 2020-05-08 2023-06-23 中国信息通信研究院 网络测量数据存储方法、装置和系统
CN111756545A (zh) * 2020-05-29 2020-10-09 中山大学深圳研究院 一种基于区块链数字签名技术的合同认证方法
CN111968000B (zh) * 2020-07-09 2022-03-08 南京邮电大学 一种基于双链机制的智慧农业数据监测与自动控制方法
CN112035894B (zh) * 2020-07-20 2024-12-10 傲为有限公司 一种电子证据托管系统
CN111917748B (zh) * 2020-07-22 2022-10-11 上海飞博激光科技股份有限公司 基于ipfs+联盟链的智能激光器远程控制系统和方法
TWI752562B (zh) * 2020-07-22 2022-01-11 重量科技股份有限公司 區塊鏈資料標準化設備及其作業系統
CN111881486B (zh) * 2020-07-23 2024-06-14 中国工商银行股份有限公司 基于区块链的多方数据备份方法、装置及系统
US11949778B1 (en) 2020-09-16 2024-04-02 Snap Inc. Privacy-preserving multi-touch attribution
US12554885B1 (en) 2020-09-30 2026-02-17 Snap Inc. Accurate and anonymized attribution
CN112783973A (zh) * 2020-12-31 2021-05-11 中国人民银行数字货币研究所 确定数据完整性的方法、相关装置和数据完整性保护系统
CN113037753B (zh) * 2021-03-09 2022-02-01 电子科技大学 一种基于区块链的具有隐私保护性的加密数据共享方法
CN113141271B (zh) * 2021-04-20 2022-09-20 国网上海市电力公司 一种基于联盟链的变电站设备配置文件版本管理方法
CN113360458B (zh) * 2021-06-05 2023-05-26 湖南大学 一种基于联盟链的分布式文件存储共享系统
CN118489111A (zh) * 2021-09-03 2024-08-13 Nft区块链有限责任公司 用于改进区块链技术的方法和系统
CN113761578A (zh) * 2021-09-10 2021-12-07 马治国 一种基于区块链的文书验真方法
IT202200011360A1 (it) * 2022-05-30 2023-11-30 Traent S R L Gestione di dati selettiva su strutture di dati persistenti verificabili
IT202200011387A1 (it) * 2022-05-30 2023-11-30 Traent S R L Verifica pubblica di singola storia consistente di registri privati
IT202200011378A1 (it) * 2022-05-30 2023-11-30 Traent S R L Verifica di accettazione di dati condivisi tra una pluralità di nodi
EP4544729A4 (en) * 2022-06-22 2025-10-15 Visa Int Service Ass System, method, and computer program product for preventing attacks on miner extractable value (MEV) in a blockchain network
US20250156522A1 (en) * 2023-11-14 2025-05-15 Via Science, Inc. Certifying camera images

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011188029A (ja) * 2010-03-04 2011-09-22 Fujitsu Ltd 電子署名装置、電子署名方法及びコンピュータプログラム
US20150206106A1 (en) * 2014-01-13 2015-07-23 Yaron Edan Yago Method for creating, issuing and redeeming payment assured contracts based on mathemematically and objectively verifiable criteria
HK1249791A1 (zh) * 2015-03-31 2018-11-09 Nasdaq, Inc. 区块链交易记录的系统和方法
US20170011460A1 (en) * 2015-07-09 2017-01-12 Ouisa, LLC Systems and methods for trading, clearing and settling securities transactions using blockchain technology
EP4050503B1 (en) * 2015-12-22 2023-11-01 Financial & Risk Organisation Limited Methods and systems for identity creation, verification and management
KR101735708B1 (ko) * 2016-02-02 2017-05-15 주식회사 코인플러그 파일에 대한 노터리 서비스를 제공하고 상기 노터리 서비스를 사용하여 기록된 파일에 대한 검증을 수행하는 방법 및 서버
JP6648555B2 (ja) * 2016-02-29 2020-02-14 富士ゼロックス株式会社 情報処理装置及びプログラム
WO2017170679A1 (ja) * 2016-03-31 2017-10-05 株式会社bitFlyer プライベートノード、プライベートノードにおける処理方法、及びそのためのプログラム
US10713731B2 (en) * 2016-07-22 2020-07-14 Nec Corporation Method for secure ledger distribution and computer system using secure distributed ledger technology
KR101841566B1 (ko) * 2016-10-11 2018-05-04 주식회사 코인플러그 블록체인 내의 블록별로 발란스 데이터베이스를 관리하여 전자 바우처를 발행, 사용, 환불, 정산 및 파기하는 방법과 이를 이용한 서버
US10361853B2 (en) * 2016-10-12 2019-07-23 Bank Of America Corporation Automated data authentication and service authorization via cryptographic keys in a private blockchain
KR101837166B1 (ko) * 2016-10-26 2018-03-09 주식회사 코인플러그 블록체인 내의 블록별로 발란스 데이터베이스를 관리하여 통화를 발행 및 지급 결제하는 방법과 이를 이용한 서버
US10554746B2 (en) * 2016-11-14 2020-02-04 International Business Machines Corporation Decentralized immutable storage blockchain configuration
US10447480B2 (en) * 2016-12-30 2019-10-15 Guardtime Sa Event verification receipt system and methods
CN111724150B (zh) * 2017-03-28 2023-11-24 创新先进技术有限公司 一种业务请求的处理方法及装置
US10581621B2 (en) * 2017-05-18 2020-03-03 International Business Machines Corporation Enhanced chaincode analytics provenance in a blockchain
US10663303B2 (en) * 2017-06-12 2020-05-26 Panasonic Intellectual Property Management Co., Ltd. System and method for dynamically authenticating map data using blockchains
CN107292621B (zh) * 2017-06-22 2020-10-27 丁江 海量数据确权存证方法和节点
CN107342867B (zh) * 2017-07-07 2020-10-09 深圳和信安达科技有限公司 签名验签方法和装置
US10810683B2 (en) * 2017-11-21 2020-10-20 General Electric Company Hierarchical meta-ledger transaction recording
CN108092982B (zh) * 2017-12-22 2020-10-23 广东工业大学 一种基于联盟链的数据存储方法及系统
CA3089009A1 (en) * 2018-01-19 2019-07-25 Nasdaq, Inc. Systems and methods of digital content certification and verification using cryptography and blockchain
CN108924130B (zh) * 2018-07-02 2021-05-07 上海达家迎信息科技有限公司 一种区块数据的验证方法、装置、设备和存储介质

Also Published As

Publication number Publication date
JP2020511809A (ja) 2020-04-16
US20190278944A1 (en) 2019-09-12
US20200175207A1 (en) 2020-06-04
KR102153845B1 (ko) 2020-09-09
WO2019072301A3 (en) 2019-10-31
CN111566649A (zh) 2020-08-21
JP6690066B2 (ja) 2020-04-28
EP3849133A1 (en) 2021-07-14
TW202025664A (zh) 2020-07-01
PL3571825T3 (pl) 2021-08-16
EP3571825A4 (en) 2020-01-01
CN111566649B (zh) 2023-06-27
WO2019072301A2 (en) 2019-04-18
EP3849133B1 (en) 2022-07-13
EP3571825A2 (en) 2019-11-27
US10691835B1 (en) 2020-06-23
SG11201906830XA (en) 2019-08-27
KR20200079218A (ko) 2020-07-02
US10552641B2 (en) 2020-02-04
TWI714179B (zh) 2020-12-21
EP3571825B1 (en) 2021-03-10
PH12019501741A1 (en) 2020-06-01

Similar Documents

Publication Publication Date Title
ES2870657T3 (es) Verificación de integridad de los datos almacenados en una cadena de bloques de consorcio utilizando una cadena lateral pública
JP6892513B2 (ja) 信頼できる実行環境に基づいたオフチェーンスマートコントラクトサービス
EP3566391B1 (en) Parallel execution of transactions in a blockchain network based on smart contract whitelists
US11354656B2 (en) Smart contract whitelists
ES2869166T3 (es) Comercio de activos cruzados dentro de redes de cadena de bloques
US20200366472A1 (en) Cryptographic key management based on identity information
JP6921266B2 (ja) パブリックサイドチェーンを使用してコンソーシアムブロックチェーンに記憶されたデータの完全性を検証すること
TWI728587B (zh) 用於安全地執行加密操作的電腦實施的方法、系統及裝置
CN115698997A (zh) 使能擦除区块链中的信息
HK40036090A (en) Verifying integrity of data stored in a consortium blockchain using a public sidechain
HK40036090B (en) Verifying integrity of data stored in a consortium blockchain using a public sidechain
HK40017317B (zh) 基於可信执行环境的链外智能合约服务
HK40017317A (en) Off-chain smart contract service based on trusted execution environment