ES2914510T3 - Red de nodos remotos incentivado sin estado sin confianza utilizando clientes de verificación mínima - Google Patents

Red de nodos remotos incentivado sin estado sin confianza utilizando clientes de verificación mínima Download PDF

Info

Publication number
ES2914510T3
ES2914510T3 ES19737870T ES19737870T ES2914510T3 ES 2914510 T3 ES2914510 T3 ES 2914510T3 ES 19737870 T ES19737870 T ES 19737870T ES 19737870 T ES19737870 T ES 19737870T ES 2914510 T3 ES2914510 T3 ES 2914510T3
Authority
ES
Spain
Prior art keywords
client
node
response
nodes
registry
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
ES19737870T
Other languages
English (en)
Inventor
Christoph Jentzsch
Steffen Kux
Simon Jentzsch
Jean Paul Ruiz Depraz
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.)
BC Development Labs GmbH
Original Assignee
BC Development Labs GmbH
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 BC Development Labs GmbH filed Critical BC Development Labs GmbH
Application granted granted Critical
Publication of ES2914510T3 publication Critical patent/ES2914510T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1087Peer-to-peer [P2P] networks using cross-functional networking aspects
    • H04L67/1093Some peer nodes performing special functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/535Tracking the activity of the user
    • 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/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
    • 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/3218Cryptographic 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 proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/10Integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/70Services for machine-to-machine communication [M2M] or machine type communication [MTC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/80Wireless
    • H04L2209/805Lightweight hardware, e.g. radio-frequency identification [RFID] or sensor

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Health & Medical Sciences (AREA)
  • Power Engineering (AREA)
  • Computer And Data Communications (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

Un método (400) que comprende: recibir (402), en un cliente (130) que no está sincronizado con una red de cadena de bloque (120), una solicitud de transacción, siendo el cliente (130) ejecutado por un dispositivo de Internet de las cosas, IoT (110); acceder (404), por parte del cliente (130), a un registro (150) de nodos (140), estando cada uno de los nodos (140) sincronizados con la red de cadena de bloque (120); seleccionar (406), por parte del cliente (130), un nodo (140B) del registro (150); transmitir (408), desde el cliente (130) al nodo (140B), una solicitud de cadena de bloques (303) para procesar la solicitud de transacción en la red de cadena de bloques (120); recibir (410), por parte del cliente (130), una respuesta (309) a la solicitud de cadena de bloque (303), incluyendo la respuesta (309) indicios de validación; verificar (412), por parte del cliente (130), si la respuesta (309) es válida en base a los indicios de validación; y dar instrucciones (414), por parte del cliente (130), en respuesta a la determinación de que la respuesta (309) es válida, al dispositivo IoT (110) para validar una transacción correspondiente a la solicitud de transacción.

Description

DESCRIPCIÓN
Red de nodos remotos incentivado sin estado sin confianza utilizando clientes de verificación mínima
CAMPO TÉCNICO
[0001] La descripción generalmente se relaciona con el campo de los dispositivos livianos, como los dispositivos de Internet de las cosas (IoT), y más específicamente se relaciona con el procesamiento remoto de las interacciones de cadena de bloque para los dispositivos livianos sin comprometer los aspectos descentralizados y sin confianza de tecnología de cadena de bloques. La divulgación se relaciona con un procesamiento similar en el contexto de aplicaciones, como aplicaciones web y aplicaciones móviles.
ANTECEDENTES
[0002] La implementación de dispositivos con baja capacidad de procesamiento, baja capacidad de ancho de banda (p. ej., conectividad limitada a Internet) y/o baja capacidad de potencia (denominados colectivamente como "dispositivos livianos" en el presente), como dispositivos IoT, se está volviendo cada vez más ubicuo. Debido a las limitaciones de procesamiento, ancho de banda y/o potencia de los dispositivos livianos, el procesamiento y la validación de las interacciones de cadena de bloque para estos dispositivos livianos requiere algún tipo de compromiso en las implementaciones de la técnica relacionada. Por ejemplo, muchas implementaciones de la técnica relacionada para interactuar con una cadena de bloques u otra red DLT (tecnología de contabilidad distribuida) requieren que se instale un cliente en un dispositivo que intenta interactuar con la red de cadena de bloques o DLT. Reconociendo que algunos dispositivos tienen limitaciones de capacidad, los sistemas de última generación desarrollaron versiones recortadas y ligeras de sus clientes (por ejemplo, reduciendo los requisitos de capacidad de datos de 200 GB a 40 GB o incluso 50 MB).
[0003] Hay escenarios, sin embargo, donde los dispositivos livianos no tienen la capacidad de manejar incluso la versión más liviana de un cliente para facilitar las interacciones de cadena de bloque o DLT. En tales escenarios, los sistemas de última generación facilitan las interacciones de la cadena de bloques mediante el uso de clientes instalados de forma remota en un servidor (denominado en el presente documento como "cliente remoto"). Las implementaciones de clientes remotos, sin embargo, comprometen los principios centrales de las interacciones de cadena de bloque o DLT, ya que requieren que el dispositivo liviano que interactúa con el cliente remoto confíe en un servidor central en particular, derrotando así el aspecto de descentralización que ha popularizado el uso de cadena de bloque o DLT. Además, las implementaciones de clientes remotos provocan la formación de un punto único de falla, en el sentido de que si el servidor que aloja al cliente remoto falla, entonces el dispositivo liviano que depende del cliente remoto para procesar una interacción de cadena de bloques o DLT no podrá procesar la interacción.
[0004] Pustisek Matevz et al ("Approaches to Front-End IoTApplication Development for the Ethereum Blackchain", Procedia Computer Science, Elsevier, Amsterdam, NL, vol. 129, 13 April 2018, p410-419) discuten cómo hay varios protocolos de libro mayor distribuido potencialmente adecuado para Internet de las cosas (IoT), incluidos Ethereum, Hyperledger Fabric e IOTA. Brevemente los presentan y comparan desde la perspectiva del desarrollo de aplicaciones de IoT. Las aplicaciones IoT basadas en cadena de bloque (BC) pueden incorporar la lógica en cadena -los contratos inteligentes- y partes de aplicaciones web, móviles o extremo frontal de clientes integrados. Se presentan tres arquitecturas posibles para las aplicaciones BC de extremo frontal de IoT. Difieren en el posicionamiento de los clientes de cadena de bloque de Ethereum (dispositivo local, servidor remoto) y en el posicionamiento del almacén de claves necesario para la gestión de transacciones salientes. Las limitaciones prácticas de estas arquitecturas, que utilizan la red Ethereum para el intercambio de transacciones confiables, son los volúmenes de datos, la ubicación y sincronización del nodo completo de la cadena de bloques y la ubicación y el acceso al almacén de claves de Ethereum.
[0005] Novo Oscar ("Blackchain Meets IoT: An Architecture for Scalable Access Management in IoT", IEEE Internet of Things Journal, IEEE, EE. UU., vol. 5, N° 2, 1 April 2018, p1184-1195) propone una nueva arquitectura para el arbitraje de roles y permisos en IoT. La nueva arquitectura es un sistema de control de acceso totalmente distribuido para IoT basado en tecnología cadena de bloque. La arquitectura está respaldada por una implementación de prueba de concepto y se evalúa en escenarios realistas de IoT. Los resultados muestran que la tecnología cadena de bloque podría usarse como tecnología de gestión de acceso en escenarios IoT escalables específicos.
[0006] Arshdeep Bahga et al ("Blackchain Platform for Industrial Internet of Things", Journal of Software Engineering and Applications, vol. 09, N° 10, 28 de octubre de 2016, p533-546) presentan una plataforma entre pares descentralizada denominada BPIIoT para Internet of Things Industrial basada en la tecnología de cadena de bloque. Con el uso de la tecnología de cadena de bloque, la plataforma BPIIoT permite que los pares en una red entre pares descentralizada y sin confianza interactúen entre sí sin la necesidad de un intermediario confiable.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
[0007] Las formas de realización descritas tienen otras ventajas y características que serán evidentes más fácilmente a partir de la descripción detallada, las reivindicaciones adjuntas y las figuras (o dibujos) adjuntas. A continuación se presenta una breve introducción de las figuras.
La Figura (FIG.) 1 ilustra una forma de realización de un sistema que implementa un cliente remoto sin estado y sin confianza para facilitar las interacciones de la cadena de bloques mediante una aplicación o dispositivo ligero. FIG. 2 es un diagrama de bloques que ilustra los componentes de una máquina de ejemplo capaz de leer instrucciones desde un medio legible por máquina y ejecutarlas en un procesador (o controlador).
FIG. 3 ilustra un diagrama de flujo de datos para validar una transacción de cadena de bloques por parte de un cliente remoto sin confianza y sin estado, de acuerdo con algunas formas de realización de la descripción. FIG. 4 ilustra un diagrama de flujo para validar una transacción de cadena de bloques de un dispositivo IoT, de acuerdo con algunas formas de realización de la divulgación.
DESCRIPCIÓN DETALLADA
[0008] Las Figuras (FIGS.) y la siguiente descripción se refieren a formas de realización preferidas solo a modo de ilustración.
DESCRIPCIÓN GENERAL DE LA CONFIGURACIÓN
[0009] Se revela una forma de realización de un sistema, un método y un medio de almacenamiento legible por computadora que permite el uso de un cliente remoto por medio de dispositivos livianos, como dispositivos IoT, para procesar interacciones de registros distribuidos, al tiempo que preserva el sistema descentralizado, sin confianza y ventajas sin estado de las interacciones de registros distribuidos. Con este fin, se puede instalar un cliente (por ejemplo, un cliente de verificación mínimo como se describe a continuación) dentro de un dispositivo liviano. El cliente no está sincronizado con una red de contabilidad distribuida y puede recibir una solicitud de transacción de un dispositivo de Internet de las cosas (IoT). El cliente recupera un registro de nodos (que actúan como proveedor de información y/o validador), estando sincronizados cada uno de los nodos con la red de contabilidad distribuida, y selecciona un nodo proveedor de información del registro. El cliente transmite una solicitud de información (información de transacciones, información de cuentas, contratos inteligentes, etc.) en la red de contabilidad distribuida y recibe una respuesta a la solicitud, la respuesta incluye la información en sí y los indicios de validación (por ejemplo, hashes de bloque firmados), pruebas (por ejemplo, una prueba de Merkle), etc.). El cliente determina si la respuesta es válida basándose en los indicios de validación y transmite, en respuesta a la determinación de que la respuesta es válida, una confirmación al dispositivo IoT. Un ejemplo de un libro mayor distribuido es una cadena de bloques. Para facilitar la discusión, las formas de realización descritas en este documento estarán en el contexto de una cadena de bloques. Sin embargo, se observa que los principios divulgados en este documento pueden aplicarse a otras formas de libros mayores electrónicos distribuidos. Si bien los sistemas y métodos descritos en este documento se describen utilizando IoT como aplicación, los mismos mecanismos también se aplican a aplicaciones web, aplicaciones móviles y otro software, especialmente con recursos restringidos.
ARQUITECTURA DEL SISTEMA
[0010] La figura (FIG.) 1 ilustra una forma de realización de un sistema que implementa un cliente remoto sin estado y sin confianza para facilitar las interacciones de la cadena de bloques mediante un dispositivo ligero. El sistema 100 incluye el dispositivo IoT 110, el cliente 130, uno o más nodos 140 y el registro 150. El sistema también incluye una red 120 a través de la cual el dispositivo IoT 110 (y el cliente 130, que es ejecutado por el dispositivo IoT 110) y los nodos 140. Si bien solo se representa un dispositivo IoT 110, esto es simplemente por conveniencia; cualquier número de dispositivos IoT puede estar dentro del sistema 100. Además, el uso del término "dispositivo IoT" también se usa por conveniencia; cualquier aplicación o dispositivo ligero, tal como se describe en el presente documento, puede utilizarse siempre que se mencione el término dispositivo IoT o dispositivo IoT 110. Como se describió anteriormente, el término IoT significa "Internet de las cosas" y es un término técnico que se utiliza para referirse a dispositivos habilitados para Internet, incluidos dispositivos que tradicionalmente no tienen conectividad a Internet (por ejemplo, un candado de bicicleta con conectividad a Internet).). Es posible que un dispositivo IoT no tenga conectividad directa a Internet y aún puede ser un dispositivo IoT si está configurado para acceder a Internet indirectamente (por ejemplo, a través de una comunicación de corto alcance con otro dispositivo que tiene conectividad directa a Internet). A diferencia de los dispositivos informáticos convencionales, los dispositivos IoT (y los dispositivos livianos en general) suelen tener recursos y capacidades de procesamiento muy limitados, incluida la potencia de procesamiento, la memoria y la capacidad de almacenamiento y el ancho de banda de conectividad. Por lo tanto, sus capacidades funcionales son considerablemente limitadas.
[0011] En una forma de realización, el dispositivo IoT 110 es un dispositivo liviano que tiene una restricción, como se describe anteriormente, que evita que el dispositivo IoT 110 ejecute un cliente local completo o ligero (como se describe anteriormente) para realizar y verificar completamente las interacciones de cadena de bloque como un miembro de una red de cadena de bloque entre pares. El término interacción de cadena de bloques, como se usa aquí, puede referirse a una transacción de cadena de bloques que se conmemora mediante la adquisición de información general de cadena de bloques, la interacción con cuentas o el uso de un contrato inteligente de cadena de bloques. La manera en que se procesan las interacciones de la cadena de bloques se describe con más detalle con respecto a la FIG. 3 a continuación. Dada la falta de un cliente local completo o ligero en el dispositivo 110 de IoT que pueda procesar completamente una interacción de cadena de bloques al sincronizarse con la red, el cliente 130 del dispositivo 110 de IoT transmite una solicitud a través de la red 120 para realizar una interacción de cadena de bloques. El cliente 130 es un cliente que no está sincronizado con una red de cadena de bloques. La red 120 se describe con mayor detalle a continuación con respecto a la FIG. 2.
[0012] El cliente 130 valida una respuesta de un nodo relativa a la transacción. Para obtener la respuesta, el cliente 130 selecciona un nodo de nodos 140 para procesar la solicitud, donde los nodos 140 están sincronizados con la red de cadena de bloque. La manera en que el nodo seleccionado procesa la solicitud se describe con mayor detalle a continuación con respecto a las FIGS. 3 y 4. El nodo puede solicitar una validación adicional de otros nodos del nodo 140 al procesar la interacción, como se describirá con más detalle a continuación.
[0013] El cliente 130 puede seleccionar cuál de los nodos 140 procesará la interacción de cadena de bloques recuperando del almacenamiento del dispositivo IoT 110 una lista de nodos 140, de la cual el cliente 130 puede seleccionar aleatoriamente o pseudoaleatoriamente un nodo. Inicialmente, el cliente 130 puede configurarse para ponerse en contacto con un conjunto predeterminado de nodos y puede solicitar desde un nodo del conjunto predeterminado de nodos un registro actualizado de nodos. El nodo puede recuperar un registro actualizado de nodos 140 del registro 150 y transmitir el registro actualizado al cliente 130. El registro 150 es un contrato inteligente en la cadena de bloques que cataloga los nodos 140. Los nodos 140 se pueden enumerar dentro del registro 150 basado en los nodos 140 que transmiten una solicitud al registro 150 para suscribirse al registro 150. La manera en que el cliente 130 selecciona cuál de los nodos 140 procesará la interacción de la cadena de bloques se describe en detalle más adelante con respecto a las FIGS. 3 y 4. Mientras que tres nodos, el nodo 140A, el nodo 140B y el nodo 140C, se representan formando nodos 140, cualquier número de nodos puede formar nodos 140.
ARQUITECTURA DE LA MÁQUINA DE COMPUTACIÓN
[0014] FIG. (Figura) 2 es un diagrama de bloques que ilustra los componentes de una máquina de ejemplo capaz de leer instrucciones desde un medio legible por máquina y ejecutarlas en un procesador (o controlador). Específicamente, la FIG. 2 muestra una representación esquemática de una máquina en forma de ejemplo de un sistema informático 200 dentro del cual puede ejecutarse el código de programa (por ejemplo, software) para hacer que la máquina realice cualquiera o más de las metodologías discutidas aquí. Algunos o todos los componentes del sistema informático 200 pueden ser representativos de un sistema informático del dispositivo IoT 110 u otros dispositivos o aplicaciones livianos como se describe en este documento; sin embargo, como se discutió anteriormente, dichos componentes pueden proporcionar una capacidad limitada con respecto a los sistemas informáticos más robustos. Algunos o todos los componentes del sistema informático 200 también pueden ser representativos de un dispositivo informático que ejecuta el cliente 130, un dispositivo informático que aloja el registro 150 y un dispositivo informático que ejecuta cualquiera de los nodos 140. El código del programa puede estar compuesto por instrucciones 224 ejecutables por uno o más procesadores 202. Tenga en cuenta que el dispositivo IoT 110 y otros dispositivos livianos pueden tener procesadores o controladores simples, mientras que el dispositivo cliente 130 ma tiene procesadores informáticos convencionales que a menudo se encuentran en teléfonos inteligentes o computadoras personales (PC). En formas de realización alternativas, la máquina funciona como un dispositivo independiente o puede estar conectada (por ejemplo, en red) a otras máquinas. En una implementación en red, la máquina puede operar en la capacidad de una máquina servidor o una máquina cliente en un entorno de red servidor-cliente, o como una máquina del mismo nivel en un entorno de red de entre pares (o distribuida).
[0015] Para sistemas informáticos complejos, como un sistema que ejecuta el cliente 130 o el registro 150, la máquina puede ser, por ejemplo, una computadora servidor, una computadora cliente, una computadora personal (PC), una tableta PC, un decodificador (STB), un asistente digital personal (PDA), un teléfono celular, un teléfono inteligente, un dispositivo web, un enrutador de red, conmutador o puente. El dispositivo IoT (u otros dispositivos livianos) puede ser un timbre, un termostato, un refrigerador, un candado de bicicleta, etc. Cualquiera de las máquinas puede ser capaz de ejecutar instrucciones 224 (secuenciales o de otro tipo) que especifican las acciones que debe tomar esa máquina. Además, aunque solo se ilustra una sola máquina, el término "máquina" también se considerará para incluir cualquier colección de máquinas que individual o conjuntamente ejecuten instrucciones 124 para realizar una o más de las metodologías discutidas aquí.
[0016] El sistema informático de ejemplo 200 incluye un procesador 202 (p. ej., una unidad de procesamiento central (CPU), una unidad de procesamiento de gráficos (GPU), un procesador de señal digital (DSP), uno o más circuitos integrados específicos de la aplicación (ASIC), uno o más circuitos integrados de radiofrecuencia (RFIC) y/o cualquier combinación de estos), una memoria principal 204 y una memoria estática 206, que están configuradas para comunicarse entre sí a través de un bus 208. El sistema informático 200 puede incluir además la interfaz de pantalla visual 210. Los dispositivos livianos, como el dispositivo IoT 110, pueden excluir algunos de estos componentes, como se describe anteriormente, ya que pueden tener una capacidad limitada para realizar una función dedicada. El cliente 130 del dispositivo IoT 110 puede ser un cliente de verificación mínima.
[0017] El término cliente de verificación mínima, tal como se usa en el presente documento, puede referirse a un cliente de cadena de bloques o DLT que no forma parte de una red de entre pares (por ejemplo, una red de cadena de bloques), pero que, no obstante, está configurado para adquirir información de la cadena de bloques o DLT de forma descentralizada (por ejemplo, utilizando una interfaz RPC). Los clientes de verificación mínima no almacenan ninguna información del estado de la cadena de bloques. Los clientes de verificación mínima están configurados para (1) verificar y (2) validar datos de cadena de bloque o DLT.
[0018] Para realizar la verificación, los clientes de verificación mínima utilizan indicios de validación, como pruebas adjuntas que el cliente puede usar para evaluar y confirmar que la información devuelta pertenece al bloque entregado (utilizando, por ejemplo, la prueba Merkle de esta información). Para realizar la validación, se configuran clientes de verificación mínima para que validen por sí mismos que el bloque entregado pertenece a la cadena de bloques o DLT solicitando esta información a otros nodos (validadores) (por ejemplo, nodos 140). Con estas características, un Cliente de Verificación Mínima es independiente de la cadena de bloques y puede interactuar con varias cadenas de bloques, DLT y cualquier otro servicio de datos que pueda proporcionar dichas pruebas e información de validación.
[0019] La interfaz visual puede incluir un controlador de software que permite mostrar interfaces de usuario en una pantalla (o pantalla). La interfaz visual puede mostrar interfaces de usuario directamente (p. ej., en la pantalla) o indirectamente en una superficie, ventana o similar (p. ej., a través de una unidad de proyección visual). Para facilitar la discusión, la interfaz visual puede describirse como una pantalla. La interfaz visual 210 puede incluir o puede interactuar con una pantalla táctil. El sistema informático 200 también puede incluir un dispositivo de entrada alfanumérico 212 (p. ej., un teclado o un teclado de pantalla táctil), un dispositivo de control del cursor 214 (p. ej., un ratón, un trackball, un joystick, un sensor de movimiento u otro instrumento de señalización), una unidad de almacenamiento 216, un dispositivo de generación de señal 218 (por ejemplo, un altavoz) y un dispositivo de interfaz de red 220, que también están configurados para comunicarse a través del bus 208.
[0020] La unidad de almacenamiento 216 incluye un medio legible por máquina 222 en el que se almacenan instrucciones 224 (por ejemplo, software) que incorporan cualquiera o más de las metodologías o funciones descritas en este documento. Las instrucciones 224 (por ejemplo, software) también pueden residir, total o parcialmente, dentro de la memoria principal 204 o dentro del procesador 202 (por ejemplo, dentro de la memoria caché de un procesador) durante su ejecución por el sistema informático 200, la memoria principal 204 y el procesador 202 también constituye un medio legible por máquina. Para dispositivos ligeros como el dispositivo IoT 110, el almacenamiento puede estar limitado a lo que es necesario para realizar funciones dedicadas. Las instrucciones 224 (p. ej., el software) pueden transmitirse o recibirse a través de una red 226 (p. ej., una red de banda ancha como Internet, una red de área local, una red de corto alcance o cualquier otra red de comunicaciones) a través del dispositivo de interfaz de red 220.
[0021] Si bien el medio legible por máquina 222 se muestra en una forma de realización de ejemplo como un solo medio, el término "medio legible por máquina" debe tomarse para incluir un solo medio o múltiples medios (por ejemplo, una base de datos centralizada o distribuida, o cachés y servidores asociados) capaces de almacenar instrucciones (por ejemplo, instrucciones 224). El término "medio legible por máquina" también se considerará que incluye cualquier medio que sea capaz de almacenar instrucciones (por ejemplo, instrucciones 224) para que la máquina las ejecute y que hagan que la máquina realice una o más de las metodologías descritas en este documento. El término "medio legible por máquina" incluye, entre otros, depósitos de datos en forma de memorias de estado sólido, medios ópticos y medios magnéticos.
EJEMPLO DE PROCESAMIENTO DE INTERACCIÓN DE CADENA DE BLOQUES
[0022] FIG. 3 ilustra un diagrama de flujo de datos para validar una transacción de cadena de bloque por un cliente de verificación mínima, de acuerdo con algunas formas de realización de ejemplo de la divulgación. Las comunicaciones representadas pueden ocurrir a través de una red (p. ej., la red 120) entre las máquinas mostradas (p. ej., el dispositivo IoT 110 y uno o más nodos 140). Como se representa en la FIG. 3, un cliente (p. ej., el cliente 130) accede a una lista de nodos (p. ej., mediante la solicitud 301 de acceso a la lista de nodos, lo que hace que la memoria (p. ej., del dispositivo 110 de IoT) devuelva 302 la lista de nodos. La solicitud 301 puede activarse en función del dispositivo IoT 110 ha recibido una solicitud para procesar una interacción de cadena de bloques. Por ejemplo, el dispositivo IoT 110 puede ser un sensor ambiental que describe la calidad del aire, al que el público puede acceder (o cuyo conjunto de datos puede acceder) (por ejemplo, a cambio de pago de una pequeña tarifa). En respuesta a la detección de que alguien está solicitando los datos, el cliente 130 del dispositivo IoT 110 puede activarse para recuperar la lista de nodos para procesar la interacción de cadena de bloques.
[0023] Como otro ejemplo, el dispositivo IoT 110 puede ser un candado de bicicleta inteligente que permite compartir una bicicleta. La potencia computacional de la unidad de control del candado para bicicletas puede estar restringida al control del candado y, por lo tanto, solo funciona si es necesario para ahorrar energía. Dicho candado no tiene capacidad para procesar las interacciones de la cadena de bloques para desbloquear el candado de la bicicleta y, por lo tanto, envía una solicitud de transacción 301 utilizando, por ejemplo, un cliente de verificación mínima que se ejecuta en el candado, lo que permite establecer una conexión segura con la cadena de bloques en los tiempos requeridos a través del cliente 130, incluso si la conexión a Internet solo permite un ancho de banda limitado.
[0024] El cliente 130 pasa a seleccionar un nodo de nodos 140 de la lista de nodos para procesar la solicitud de transacción. La selección es de naturaleza aleatoria o pseudoaleatoria. Después de seleccionar un nodo (por ejemplo, el nodo 140B) de la lista de nodos, el cliente 130 puede comprobar qué nodo, o los varios nodos, el cliente 130 seleccionó en último lugar. Si el nodo seleccionado coincide con el último nodo seleccionado, o un nodo seleccionado recientemente (por ejemplo, uno de los últimos diez nodos que se seleccionaron), entonces el cliente 130 se abstiene de usar el nodo seleccionado y, en su lugar, selecciona otro nodo. En una forma de realización, el cliente 130 selecciona múltiples nodos de los nodos 140 de la lista de nodos para procesar la solicitud de transacción. Por ejemplo, para evitar obtener una respuesta no válida de un nodo, el cliente 130 puede seleccionar múltiples nodos y puede evaluar múltiples respuestas de esos nodos para determinar si las respuestas coinciden. Por tanto, aunque en la FIG. 3, múltiples nodos (incluyendo cualquiera de los nodos A y C) que realizan procesamiento en paralelo están dentro del alcance de esta descripción.
[0025] Habiendo seleccionado un nodo de los nodos 140, el cliente 130 transmite una solicitud (por ejemplo, una solicitud de Llamada a Procedimiento Remoto (RPC), una solicitud JSON-RPC, o cualquier otra solicitud de estructura) a ese nodo. Por ejemplo, como se representa en la FIG. 3, el cliente 130 ha seleccionado el nodo 140B y transmite la solicitud RPC 303 al nodo 140B. En una forma de realización, al recibir la solicitud de RPC 303, el nodo 140B procesa la transacción de cadena de bloques (por ejemplo, actualizando la cadena de bloques para reflejar la transacción) y transmite la respuesta de RPC 309 al cliente 130. Mientras que una solicitud de transacción de cadena de bloques generalmente se describe aquí como una solicitud de RPC para verificar una transacción, las solicitudes de transacción de cadena de bloque como se describe en este documento también pueden tener otros fines, como una solicitud para devolver un resultado verificado de una llamada de función en un contrato inteligente, o una simple solicitud de un saldo de una cuenta o cualquier otro tipo de datos almacenados en la cadena de bloques. El cliente 130 recibe la respuesta RPC 309 y verifica la respuesta RPC 309. El cliente 130 puede verificar la respuesta RPC 309 por sí mismo basándose en el contenido de la respuesta RPC 309. En una forma de realización, la respuesta RPC 309 incluye una prueba. El cliente 130 resuelve la prueba para obtener un resultado ("prueba de resultado") y compara el resultado con un resultado indicado en la respuesta RPC 309. El cliente 130, en respuesta a la determinación de que el resultado de la prueba coincide con el resultado indicado en la respuesta RPC 309, determina que la respuesta RPC 309 incluye un resultado válido y, por tanto, valida la transacción tras la verificación. En una forma de realización, la respuesta RPC 309 incluye un encabezado de bloque. El cliente 130 usa el encabezado de bloque para hacer referencia a un libro mayor de cadena de bloques para validar la transacción.
[0026] La respuesta de RPC 309 también puede incluir una firma, como un hash de bloque firmado o cualquier otro dato verificado que pueda usarse para comparar el resultado de una prueba, de uno o más nodos de los nodos 140. Por ejemplo, la solicitud de RPC 303 puede solicitar que el nodo 140B valide sus resultados con uno o más nodos de los nodos 140, para mejorar la probabilidad de recibir una respuesta válida. Por lo tanto, antes de transmitir la respuesta RPC 309 al cliente 130, el nodo 140B puede solicitar 304 una firma del nodo 140A y/o puede transmitir la solicitud 305 de una firma del nodo 140C. El nodo 140C puede transmitir una firma de retorno 306 al nodo 140B para su inclusión en la respuesta RPC 309. De manera similar, el nodo 140A puede transmitir una devolución de firma 307 al nodo 140B para su inclusión en la respuesta RPC 309. La firma de retorno de los nodos 140A y 140C puede incluir un hash de bloque firmado, o cualquier otro dato requerido por el cliente 130 para confirmar los indicios de validación (por ejemplo, datos de prueba). En una forma de realización, al recibir una firma de retorno, el nodo 140B valida si el hash de bloque firmado es válido. Si el hash de bloque firmado (por ejemplo, tal como se recibió en 306 o 307) no es válido, el nodo 140B puede informar el fraude 308 al registro 150, y el registro 150 puede tomar medidas correctivas (como se describe arriba y abajo), como eliminar el nodo infractor del registro 150.
[0027] El cliente 130 puede verificar 310 la respuesta RPC, y si la verificación es exitosa, el cliente 130 puede validar el resultado del nodo 140B recibido dentro de la respuesta RPC (p. ej. en uno o más encabezados de bloque derivados de hashes de bloque firmados de uno o más nodos adicionales). En respuesta a la validación del resultado del nodo 140B, el dispositivo cliente 130 puede confirmar el procesamiento exitoso de la transacción y puede indicar al dispositivo IoT 110 que tome la acción resultante (por ejemplo, desbloquear un candado de bicicleta inteligente o transmitir información del sensor a un usuario solicitante). En respuesta a la determinación de que la respuesta RPC no es válida, el cliente 130 puede informar 311 de fraude al registro 150 (p. ej., transmitiendo una solicitud al nodo 140A para informar al nodo 140B), y el registro 150 puede tomar medidas correctivas (p. ej., eliminar el nodo B del registro).
IMPLEMENTACIÓN DE VIGILANCIA
[0028] Las formas de realización descritas permiten ventajosamente una implementación de vigilancia que evita que los nodos de los nodos 140 actúen de manera fraudulenta o maliciosa. La implementación de vigilancia elimina los nodos de los nodos 140 del registro 150 cuando se informa al registro 150 de un mal comportamiento, como una actividad fraudulenta o maliciosa. En una forma de realización, se comprueba e informa del comportamiento de los propios nodos (nodos virtuales) o por nodos especiales que comprueban el comportamiento de otros nodos (nodos de vigilancia). Por ejemplo, en respuesta a la recepción de la respuesta RPC 309, el cliente 130 puede determinar (p. ej., basándose en la prueba o el encabezado de bloque) que el resultado recibido del nodo 140B es incorrecto. En cambio, un nodo que actúa como nodo de vigilancia puede transmitir la comunicación 310-2 al registro 150 para informar del mal comportamiento. El registro 150 puede eliminar en respuesta el nodo 140B de la lista de nodos 140 que utilizará el cliente 130 (o cualquier otro cliente) para procesar transacciones futuras.
[0029] Alternativamente, el cliente 130 puede incluir en la lista negra el nodo 140B, mientras se abstiene de informar el fraude 311 al registro (a través de un nodo). Por ejemplo, el cliente 130 puede almacenar en una estructura de datos la identidad del nodo 140B en relación con un indicador de "no usar", donde, cuando se seleccionan los nodos para procesar una solicitud RPC 303, el cliente 130 verifica dos veces esos nodos contra la lista negra para determinar si está presente un indicador de "no usar", lo que provocaría la selección de un nodo diferente. Como otra alternativa más, el cliente 130 puede, al determinar que el resultado recibido del nodo 140B es incorrecto, documentar el resultado incorrecto (por ejemplo, incrementando un contador correspondiente a los resultados incorrectos del nodo 140B, o manipulando alguna otra función que refleje la frecuencia y/o carácter reciente de resultados incorrectos del nodo 140B). El cliente puede incluir en la lista negra o informar de fraude cuando se detecta una cantidad umbral o una frecuencia umbral de resultados incorrectos del nodo 140B. La razón por la que se puede usar esta implementación menos draconiana es porque un nodo puede proporcionar involuntariamente una respuesta inconsistente (por ejemplo, en un escenario donde un nodo aún no se ha sincronizado con un bloque actual o se está ejecutando en una micro bifurcación).
[0030] Además, de forma similar al cliente 130, los propios nodos 140 pueden mantener listas negras (o similares). Por ejemplo, el nodo 140B puede almacenar en una estructura de datos la identidad del nodo 140A en relación con un indicador de "no usar", donde, cuando se seleccionan los nodos para firmar un resultado, el nodo 140B verifica esos nodos contra la lista negra para determinar si un indicador de "no usar" está presente, lo que provocaría la selección de un nodo diferente. Como otra alternativa más, el nodo 140B (o cualquier otro nodo) puede, al determinar que la firma recibida, por ejemplo, del nodo 140C es incorrecta, documentar el resultado incorrecto (por ejemplo, incrementando un contador correspondiente a los resultados incorrectos del nodo 140C, o manipulando alguna otra función que refleje la frecuencia y/o la actualidad de los resultados incorrectos del nodo 140C). El nodo puede incluir en la lista negra o informar de fraude cuando se detecta una cantidad umbral o una frecuencia umbral de resultados incorrectos del nodo 140C. La razón por la que se puede usar esta implementación menos draconiana es porque un nodo puede proporcionar involuntariamente una respuesta inconsistente (por ejemplo, en un escenario donde un nodo aún no se ha sincronizado con un bloque actual o se está ejecutando en una micro bifurcación).
[0031] En una forma de realización, el mal comportamiento de un nodo de nodos 140 es informado por otro nodo. Por ejemplo, como se describió anteriormente, el nodo 140B puede transmitir la solicitud 304 al nodo 140A, y el nodo 140A puede devolver en respuesta 307 la firma al nodo 140B. En respuesta a la determinación de que la firma no es válida, el nodo 140B puede transmitir la comunicación 308 al registro 150. El registro 150 puede eliminar en respuesta una referencia al nodo 140A de la lista de nodos 140 que pueden seleccionarse para validar una solicitud de un cliente, o puede tomar otra acción correctiva similar a la descrita anteriormente (por ejemplo, incrementar un contador correspondiente al nodo 140A y eliminar el nodo 140A si el contador excede un umbral). Ya sea que el cliente 130 o un nodo de los nodos 140 notifiquen un mal comportamiento, el registro 150 puede, en respuesta a la eliminación de un nodo de la lista de nodos, propagar la lista actualizada de nodos al cliente 130 (y a cualquier otro cliente).
COMPORTAMIENTO DE INCENTIVOS POR PARTE DE CLIENTES Y NODOS
[0032] En una forma de realización, se puede requerir que los nodos depositen una participación antes de ser aptos para cotizar en el registro 150. Los nodos pueden recibir recompensas del cliente cuya solicitud se valida cuando la solicitud se valida correctamente. Sin embargo, los nodos pueden ser sancionados cuando pretenden validar una solicitud de manera fraudulenta, no solo dejándolos inelegibles para validar solicitudes futuras (por ejemplo, mediante la eliminación del registro 150 como se describe anteriormente), sino también mediante la pérdida de la participación depositada.
[0033] De manera similar, un cliente puede negarse a transmitir una recompensa a un nodo 140 después de recibir una respuesta correcta. Como respuesta, un nodo puede incluir en la lista negra o degradar al cliente para evitar que el nodo procese solicitudes adicionales de ese cliente. El nodo también puede señalar a otros nodos el mal comportamiento, lo que hace que el cliente no pueda procesar transacciones futuras.
[0034] Como un incentivo adicional o alternativo para promover el buen comportamiento de los nodos 140, el cliente puede ponderar los nodos en función de varios parámetros, y puede utilizar estas ponderaciones para sesgar la selección aleatoria de los nodos enumerados en el registro 150 para procesar una transacción basada en una puntuación correspondiente al buen comportamiento. Por ejemplo, la ponderación puede basarse en un monto de depósito por parte de un nodo determinado (por ejemplo, porque es menos probable que un nodo se comporte mal si tiene más que perder). La ponderación puede, adicional o alternativamente, basarse en el desempeño anterior, donde una puntuación aumenta (p. ej., en una pequeña unidad) por cada resultado correcto entregado a un cliente por un nodo, y donde la puntuación disminuye (p. ej., en una unidad grande mayor que la unidad pequeña) por cada resultado incorrecto entregado a un cliente por un nodo.
[0035] Los clientes (por ejemplo, el cliente 130 y otros clientes) pueden agruparse y asignarse a uno o más nodos de los nodos 140. Para formar dicha agrupación, cada cliente puede proporcionar la aprobación de un nodo asociado. Esto permite que un nodo que recibe una solicitud de un cliente (p. ej., el cliente 130) utilice los pesos determinados y catalogados por ese cliente como criterio al seleccionar otros nodos de los nodos 140 (p. ej., para proporcionar un hash de bloque firmado). Esto forma un fuerte incentivo para que los nodos 140 entreguen respuestas correctas y rápidas para asegurar la calidad de la respuesta para sus clientes.
PROCESAMIENTO ILUSTRATIVO DE LA INTERACCIÓN DE LA CADENA DE BLOQUES
[0036] FIG. 4 ilustra un diagrama de flujo para validar una transacción de cadena de bloques desde un dispositivo IoT, de acuerdo con algunas formas de realización de la divulgación. El proceso 400 comienza cuando el cliente (p. ej., el cliente 130) recibe 402 una solicitud de transacción (p. ej., la solicitud de transacción 301), siendo ejecutado el cliente por un dispositivo IoT (p. ej., el dispositivo IoT 110). El proceso 400 continúa con el cliente accediendo 404 a un registro de nodos de validación (por ejemplo, una lista de nodos 140 almacenados en un registro local para el cliente 130 y accedidos a través de los elementos 301 y 302). El cliente pasa a seleccionar 406 un nodo (p. ej., el nodo 140B) del registro (p. ej., basándose en un proceso aleatorio o aleatorio ponderado que produce el nodo 140B).
[0037] El cliente transmite 408 una solicitud de validación (por ejemplo, la solicitud RPC 303, transmitida al nodo 140B) para procesar la solicitud de transacción en la red de cadena de bloque. El cliente recibe 410 (p. ej., del nodo 140B) una respuesta a la solicitud (p. ej., la respuesta RPC 309), la respuesta incluye indicios de validación (p. ej., una prueba, un encabezado de bloque, un hash de bloque firmado del nodo 140A o del nodo 140C, etc.). El cliente verifica 412 si la respuesta es válida basándose en los indicios de validación (por ejemplo, resolviendo la prueba). El cliente, en respuesta a la determinación de que la respuesta es válida, instruye 414 al dispositivo IoT para validar una transacción correspondiente a la solicitud de transacción (por ejemplo, desbloquear un candado de bicicleta inteligente o transmitir datos de sensor solicitados).
CONSIDERACIONES ADICIONALES DE CONFIGURACIÓN
[0038] A lo largo de esta especificación, varias instancias pueden implementar componentes, operaciones o estructuras descritas como una única instancia. Aunque las operaciones individuales de uno o más métodos se ilustran y describen como operaciones separadas, una o más de las operaciones individuales pueden realizarse al mismo tiempo, y nada requiere que las operaciones se realicen en el orden ilustrado. Las estructuras y funcionalidades presentadas como componentes separados en configuraciones de ejemplo pueden implementarse como una estructura o componente combinado. De manera similar, las estructuras y la funcionalidad presentadas como un solo componente pueden implementarse como componentes separados. Estas y otras variaciones, modificaciones, adiciones y mejoras caen dentro del alcance del objeto de este documento.
[0039] Ciertas formas de realización se describen aquí e incluyen lógica o una serie de componentes, módulos o mecanismos. Los módulos pueden constituir módulos de software (por ejemplo, código incorporado en un medio legible por máquina o en una señal de transmisión) o módulos de hardware. Un módulo de hardware es una unidad tangible capaz de realizar ciertas operaciones y puede configurarse o disponerse de cierta manera. En formas de realización de ejemplo, uno o más sistemas informáticos (p. ej., un sistema informático independiente, cliente o servidor) o uno o más módulos de hardware de un sistema informático (p. ej., un procesador o un grupo de procesadores) pueden configurarse mediante software (p. ej., una aplicación o parte de la aplicación) como un módulo de hardware que opera para realizar ciertas operaciones como se describe en este documento.
[0040] En varias formas de realización, un módulo de hardware puede implementarse mecánica o electrónicamente. Por ejemplo, un módulo de hardware (p. ej., de un dispositivo liviano o no liviano representado por el sistema informático 200) puede comprender circuitos o lógica dedicada que está configurada permanentemente (p. ej., como un procesador de propósito especial, como un matriz de puertas lógicas programable en campo (FPGA) o un circuito integrado específico de la aplicación (ASIC)) para realizar ciertas operaciones. Un módulo de hardware también puede comprender circuitos o lógica programable (p. ej., incluidos dentro de un procesador de propósito general u otro procesador programable) que es temporalmente configurado por software para realizar ciertas operaciones. Se apreciará que la decisión de implementar un módulo de hardware mecánicamente, en circuitos dedicados y permanentemente configurados, o en circuitos configurados temporalmente (p. ej., configurados por software) puede ser impulsada por consideraciones de costo y tiempo.
[0041] En consecuencia, el término "módulo de hardware" debe entenderse que abarca una entidad tangible, ya sea una entidad construida físicamente, configurada permanentemente (p. ej., cableada) o configurada temporalmente (p. ej., programada) para operar en una determinada manera o para realizar ciertas operaciones descritas en este documento. Como se usa aquí, "módulo implementado por hardware" se refiere a un módulo de hardware. Teniendo en cuenta las formas de realización en las que los módulos de hardware se configuran temporalmente (por ejemplo, se programan), no se requiere que cada uno de los módulos de hardware se configure ni se instancie en ninguna instancia en el tiempo. Por ejemplo, cuando los módulos de hardware comprenden un procesador de propósito general configurado usando software, el procesador de propósito general puede configurarse como módulos de hardware diferentes respectivos en momentos diferentes. Por consiguiente, el software puede configurar un procesador, por ejemplo, para constituir un módulo de hardware particular en un momento dado y para constituir un módulo de hardware diferente en un momento diferente.
[0042] Los módulos de hardware pueden proporcionar información y recibir información de otros módulos de hardware. En consecuencia, se puede considerar que los módulos de hardware descritos están acoplados comunicativamente. Cuando existan varios de tales módulos de hardware al mismo tiempo, las comunicaciones pueden lograrse a través de la transmisión de señales (por ejemplo, a través de circuitos y buses apropiados) que conectan los módulos de hardware. En formas de realización en las que se configuran o instancian múltiples módulos de hardware en diferentes momentos, las comunicaciones entre tales módulos de hardware pueden lograrse, por ejemplo, a través del almacenamiento y recuperación de información en estructuras de memoria a las que tienen acceso los múltiples módulos de hardware. Por ejemplo, un módulo de hardware puede realizar una operación y almacenar la salida de esa operación en un dispositivo de memoria al que está acoplado comunicativamente. Un módulo de hardware adicional puede entonces, en un momento posterior, acceder al dispositivo de memoria para recuperar y procesar la salida almacenada. Los módulos de hardware también pueden iniciar comunicaciones con dispositivos de entrada o salida y pueden operar en un recurso (por ejemplo, una colección de información).
[0043] Las diversas operaciones de los métodos de ejemplo descritos aquí pueden ser realizadas, al menos parcialmente, por uno o más procesadores que están configurados temporalmente (por ejemplo, por software) o permanentemente configurados para realizar las operaciones relevantes. Ya sea que estén configurados de manera temporal o permanente, dichos procesadores pueden constituir módulos implementados por el procesador que operan para realizar una o más operaciones o funciones. Los módulos a los que se hace referencia en este documento pueden, en algunas formas de realización de ejemplo, comprender módulos implementados en un procesador.
[0044] De manera similar, los métodos descritos en este documento pueden implementarse al menos parcialmente en el procesador. Por ejemplo, al menos algunas de las operaciones de un método pueden ser realizadas por uno o más procesadores o módulos de hardware implementados por procesador. El rendimiento de algunas de las operaciones puede distribuirse entre uno o más procesadores, no solo residiendo dentro de una sola máquina, sino desplegados en varias máquinas. En algunas formas de realización de ejemplo, el procesador o los procesadores pueden estar ubicados en una única ubicación (p. ej., dentro de un entorno doméstico, un entorno de oficina o como una granja de servidores), mientras que en otras formas de realización los procesadores pueden estar distribuidos en varias ubicaciones.
[0045] El uno o más procesadores también pueden operar para soportar el rendimiento de las operaciones relevantes en un entorno de "computación en la nube" o como un "software como servicio" (SaaS). Por ejemplo, al menos algunas de las operaciones pueden ser realizadas por un grupo de computadoras (como ejemplos de máquinas que incluyen procesadores), pudiendo acceder a estas operaciones a través de una red (p. ej., Internet) y a través de una o más interfaces apropiadas (p. ej., aplicaciones interfaces de programa (API).
[0046] El rendimiento de algunas de las operaciones puede distribuirse entre uno o más procesadores, no solo residiendo dentro de una sola máquina, sino desplegados en varias máquinas. En algunas formas de realización de ejemplo, uno o más procesadores o módulos implementados por procesador pueden estar ubicados en una única ubicación geográfica (por ejemplo, dentro de un entorno doméstico, un entorno de oficina o una granja de servidores). En otras formas de realización de ejemplo, uno o más procesadores o módulos implementados por procesador pueden estar distribuidos a través de una serie de ubicaciones geográficas.
[0047] Algunas partes de esta especificación se presentan en términos de algoritmos o representaciones simbólicas de operaciones en datos almacenados como bits o señales digitales binarias dentro de una memoria de máquina (por ejemplo, una memoria de computadora). Estos algoritmos o representaciones simbólicas son ejemplos de técnicas utilizadas por los expertos en las técnicas del procesamiento de datos para transmitir la esencia de su trabajo a otros expertos en la materia. Tal como se utiliza aquí, un "algoritmo" es una secuencia autoconsistente de operaciones o un procesamiento similar que conduce a un resultado deseado. En este contexto, los algoritmos y las operaciones involucran la manipulación física de cantidades físicas. Por lo general, pero no necesariamente, tales cantidades pueden tomar la forma de señales eléctricas, magnéticas u ópticas que una máquina puede almacenar, acceder, transferir, combinar, comparar o manipular de otra manera. A veces es conveniente, principalmente por razones de uso común, referirse a tales señales usando palabras como "datos", "contenido", "bits", "valores", "elementos", "símbolos", "caracteres", "términos", "números", "numerales" o similares. Estas palabras, sin embargo, son simplemente etiquetas convenientes y deben asociarse con cantidades físicas apropiadas.
[0048] A menos que se indique específicamente lo contrario, las discusiones en este documento que usan palabras como "procesar", "computar", "calcular", "determinar", "presentar", "mostrar" o similares pueden referirse a acciones o procesos de una máquina (por ejemplo, una computadora) que manipula o transforma datos representados como cantidades físicas (p. ej., electrónicas, magnéticas u ópticas) dentro de una o más memorias (p. ej., memoria volátil, memoria no volátil o una combinación de los mismos), registros u otros componentes de máquinas que reciben, almacenan, transmiten o muestran información.
[0049] Como se usa aquí, cualquier referencia a "una forma de realización" o "una forma de realización" significa que un elemento, característica, estructura o característica particular descrita en relación con la realización está incluida en al menos una forma de realización. Las apariciones de la frase "en una forma de realización" en varios lugares de la memoria descriptiva no necesariamente se refieren todas a la misma forma de realización.
[0050] Algunas formas de realización pueden describirse usando la expresión "acoplado" y "conectado" junto con sus derivados. Debe entenderse que estos términos no pretenden ser sinónimos entre sí. Por ejemplo, algunas formas de realización pueden describirse usando el término "conectado" para indicar que dos o más elementos están en contacto físico o eléctrico directo entre sí. En otro ejemplo, algunas formas de realización pueden describirse usando el término "acoplado" para indicar que dos o más elementos están en contacto físico o eléctrico directo. Sin embargo, el término "acoplado" también puede significar que dos o más elementos no están en contacto directo entre sí, pero aun así cooperan o interactúan entre sí. Las formas de realización no están limitadas en este contexto.
[0051] Como se usa en este documento, los términos "comprende", "que comprende", "incluye", "que incluye", "tiene", "que tiene" o cualquier otra variación de los mismos, pretenden cubrir una inclusión no exclusiva. Por ejemplo, un proceso, método, artículo o aparato que comprende una lista de elementos no está necesariamente limitado solo a esos elementos, sino que puede incluir otros elementos no enumerados expresamente o inherentes a dicho proceso, método, artículo o aparato. Además, a menos que se indique expresamente lo contrario, "o" se refiere a un o inclusivo y no a un o exclusivo. Por ejemplo, una condición A o B se cumple con cualquiera de los siguientes: A es verdadero (o presente) y B es falso (o no presente), A es falso (o no presente) y B es verdadero (o presente), y tanto A como B son verdaderos (o presentes).
[0052] Además, el uso de "un" o "una" se emplea para describir elementos y componentes de las formas de realización del presente documento. Esto se hace simplemente por conveniencia y para dar una idea general de la invención. Esta descripción debe leerse para incluir uno o al menos uno y el singular también incluye el plural a menos que sea obvio que se entiende de otra manera.
[0053] Al leer esta divulgación, los expertos en la técnica apreciarán diseños estructurales y funcionales alternativos adicionales para un sistema y un proceso para procesar interacciones de cadena de bloques para dispositivos IoT a través de los principios divulgados en este documento. Por lo tanto, aunque se han ilustrado y descrito formas de realización y aplicaciones particulares, debe entenderse que las formas de realización descritas no se limitan a la construcción y los componentes precisos descritos en este documento.

Claims (15)

REIVINDICACIONES
1. Un método (400) que comprende:
recibir (402), en un cliente (130) que no está sincronizado con una red de cadena de bloque (120), una solicitud de transacción, siendo el cliente (130) ejecutado por un dispositivo de Internet de las cosas, IoT (110); acceder (404), por parte del cliente (130), a un registro (150) de nodos (140), estando cada uno de los nodos (140) sincronizados con la red de cadena de bloque (120);
seleccionar (406), por parte del cliente (130), un nodo (140B) del registro (150);
transmitir (408), desde el cliente (130) al nodo (140B), una solicitud de cadena de bloques (303) para procesar la solicitud de transacción en la red de cadena de bloques (120);
recibir (410), por parte del cliente (130), una respuesta (309) a la solicitud de cadena de bloque (303), incluyendo la respuesta (309) indicios de validación;
verificar (412), por parte del cliente (130), si la respuesta (309) es válida en base a los indicios de validación; y dar instrucciones (414), por parte del cliente (130), en respuesta a la determinación de que la respuesta (309) es válida, al dispositivo IoT (110) para validar una transacción correspondiente a la solicitud de transacción.
2. El método (400) de la reivindicación 1, en el que seleccionar (406), por parte del cliente (130), el nodo (140B) del registro (150) comprende:
identificar aleatoriamente, por parte del cliente (130), un nodo candidato (140B) del registro (150); determinar, por parte del cliente (130), si el nodo candidato (140B) procesó una última solicitud de cadena de bloques (303) enviada por el cliente (130); en respuesta a determinar que el nodo candidato (140B) procesó la última solicitud de cadena de bloque (303) enviada por el cliente (130):
identificar aleatoriamente, por parte del cliente (130), un nodo candidato diferente (140) del registro (150) y
seleccionar, por parte del cliente (130), los diferentes nodos candidatos (140) como el nodo (140B); y
en respuesta a determinar que el nodo candidato (140B) no procesó la última solicitud de cadena de bloque (303) enviada por el cliente (130), seleccionando el nodo candidato (140B) como el nodo (140B).
3. El método (400) de la reivindicación 1, en el que los indicios de validación comprenden un hash de bloque firmado (306, 307) de un nodo adicional (140A, 140C), y en el que la verificación (412), por parte del cliente (130), si la respuesta (309) del documento es válida en función de los indicios de validación comprende la determinación por parte del cliente (130) de que la respuesta (309) es válida en función del hash de bloque firmado (306, 307) del nodo adicional (140A, 140C) corroborando el procesamiento por parte del nodo (140B).
4. El método (400) de la reivindicación 1, en el que los indicios de validación comprenden una prueba, y en el que la verificación (412), por parte del cliente (130), si la respuesta (309) es válida en base a los indicios de validación comprende:
determinar un resultado de la prueba alimentando datos a través de la prueba;
determinar si el resultado de la prueba coincide con un resultado indicado en la respuesta (309); y determinar, en respuesta a determinar que el resultado de la prueba coincide con el resultado indicado en la respuesta (309), que la respuesta (309) es válida.
5. El método (400) de la reivindicación 1, en el que el nodo (140B) solicita una firma de un nodo adicional (140A, 140C) en la red de cadena de bloque (120) del nodo (140B), donde el nodo (140B) determina que la firma del nodo adicional (140A, 140C) no es válida, y en el que el nodo (140B) solicita en respuesta (308) que el nodo adicional (140A, 140C) se elimine del registro (150) de nodos (140).
6. El método (400) de la reivindicación 1, en el que el método (400) comprende además, en respuesta a la verificación (412), por parte del cliente (130), que la respuesta (309) es válida, procesar una actualización de aumento de puntuación a un registro local (150) de nodos (140) para el cliente (130).
7. El método (400) de la reivindicación 6, en el que la selección (406), por parte del cliente (130), del nodo (140B) del registro (150) comprende:
ponderar cada nodo candidato (140) del registro local (150) en base a su puntuación; y seleccionar el nodo (140B) mediante una selección aleatoria que está sesgada en función de los pesos de cada nodo candidato (140).
8. Un medio legible por computadora no transitorio (216) que comprende instrucciones almacenadas (224), las instrucciones (224) cuando son ejecutadas por un procesador (202) hacen que el procesador (202) opere un cliente (130) que no está sincronizado con una red de cadena de bloque (120) para:
recibir (402), en un cliente (130) que no está sincronizado con una red de cadena de bloque (120), una solicitud de transacción, siendo ejecutado el cliente (130) por un dispositivo de internet de las cosas, IoT (110); acceder (404), por parte del cliente (130), a un registro (150) de nodos (140), estando sincronizados cada uno de los nodos (140) con la red de cadena de bloque (120);
seleccionar (406), por parte del cliente (130), un nodo (140B) del registro (150);
transmitir (408), desde el cliente al nodo (140B), una solicitud de cadena de bloques (303) para procesar la solicitud de transacción en la red de cadena de bloques (120);
recibir (410), por parte del cliente (130), una respuesta (309) a la solicitud de cadena de bloques (303), incluyendo la respuesta (309) indicios de validación;
verificar (412), por parte del cliente (130), si la respuesta (309) es válida en base a los indicios de validación; e instruir (414), por parte del cliente (130), en respuesta a determinar que la respuesta (309) es válida, el dispositivo IoT (110) para validar una transacción correspondiente a la solicitud de transacción.
9. El medio legible por computadora no transitorio de la reivindicación 8 (216), donde las instrucciones (224) para seleccionar (406), por parte del cliente (130), el nodo (140) del registro (150) comprenden instrucciones para:
identificar aleatoriamente, por parte del cliente (130), un nodo candidato (140B) del registro (150); determinar, por el cliente (130), si el nodo candidato (140B) procesó una última solicitud de cadena de bloque (303) enviada por el cliente (130);
en respuesta a determinar que el nodo candidato (140B) procesó la última solicitud cadena de bloque (303) enviada por el cliente (130):
identificar aleatoriamente, por parte del cliente (130), un nodo candidato diferente (140) del registro (150), y
seleccionar, por parte del cliente (130), los diferentes nodos candidatos (140) como nodo (140B); y
en respuesta a determinar que el nodo candidato (140B) no procesó la última solicitud de cadena de bloques (303) enviada por el cliente (130), seleccione el nodo candidato (140B) como el nodo (140B).
10. El medio legible por computadora no transitorio (216) de la reivindicación 8, en el que los indicios de validación comprenden un hash de bloque firmado (306, 307) de un nodo adicional (140A, 140C), y en el que la verificación (412), por parte del cliente (130), si la respuesta (309) es válida en base a los indicios de validación comprende determinar por parte del cliente (130), que la respuesta (309) es válida en base al hash de bloque firmado (306, 307) del nodo adicional (140A, 140C) corroborando el procesamiento por parte del nodo (140B).
11. El medio legible por computadora no transitorio (216) de la reivindicación 8, en el que los indicios de validación comprenden una prueba, y en el que las instrucciones (224) para verificar (412), por parte del cliente (130), si la respuesta (309) es válida en base a los indicios de validación comprende además instrucciones (224) para:
determinar un resultado de prueba alimentando datos a través de la prueba;
determinar si el resultado de la prueba coincide con un resultado indicado en la respuesta (309); y determinar, en respuesta a determinar que el resultado de la prueba coincide con el resultado indicado en la respuesta (309), que la respuesta (309) es válida.
12. El medio legible por computadora no transitorio (216) de la reivindicación 8, donde el nodo (140B) solicita una firma de un nodo adicional (140A, 140C) en la red de cadena de bloque (120) del nodo (140B), donde el el nodo (140B) determina que la firma del nodo adicional (140A, 140C) no es válida, y en el que el nodo (140B) solicita en respuesta (308) que el nodo adicional (140A, 140C) se elimine del registro (150) de nodos (140).
13. El medio legible por computadora no transitorio (216) de la reivindicación 8, en el que las instrucciones (224) comprenden además, además en respuesta a la verificación (412), por parte del cliente (130), que la respuesta (309) es válida, procesar una actualización de aumento de puntuación en un registro local (150) de nodos (140) para el cliente (130).
14. El medio legible por computadora no transitorio (216) de la reivindicación 8 o la reivindicación 13, en el que las instrucciones (224) comprenden además instrucciones (224) para, además en respuesta a la verificación (412), por parte del cliente (130), que la respuesta (309) es válida, transmite una actualización de aumento de puntaje a un registro local (150) de nodos (140) para el cliente (130), y en donde las instrucciones (224) para seleccionar (406), por parte del cliente (130), el nodo (140B) del registro (150) comprende instrucciones (224) para:
ponderar cada nodo candidato (140) en función de su puntuación; y
seleccionar el nodo (140B) mediante una selección aleatoria que está sesgada en función de los pesos de cada nodo candidato (140).
15. Un sistema (200) que comprende:
un procesador (202) para ejecutar instrucciones de programas informáticos (224); y
el medio legible por computadora no transitorio (216) de cualquiera de las reivindicaciones 8 a 14.
ES19737870T 2018-04-16 2019-04-15 Red de nodos remotos incentivado sin estado sin confianza utilizando clientes de verificación mínima Active ES2914510T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201862658496P 2018-04-16 2018-04-16
PCT/IB2019/000499 WO2019202393A1 (en) 2018-04-16 2019-04-15 Trustless statelessincentivized remote node network using minimal verification clients

Publications (1)

Publication Number Publication Date
ES2914510T3 true ES2914510T3 (es) 2022-06-13

Family

ID=67226292

Family Applications (1)

Application Number Title Priority Date Filing Date
ES19737870T Active ES2914510T3 (es) 2018-04-16 2019-04-15 Red de nodos remotos incentivado sin estado sin confianza utilizando clientes de verificación mínima

Country Status (7)

Country Link
US (2) US11281658B2 (es)
EP (1) EP3782387B1 (es)
JP (1) JP6949249B2 (es)
KR (2) KR102310803B1 (es)
CN (1) CN112166619A (es)
ES (1) ES2914510T3 (es)
WO (1) WO2019202393A1 (es)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11281658B2 (en) * 2018-04-16 2022-03-22 Bc Development Labs Gmbh Trustless stateless incentivized remote node network using minimal verification clients
EP3564883B1 (en) * 2018-04-30 2023-09-06 Hewlett Packard Enterprise Development LP System and method of decentralized management of device assets outside a computer network
EP3565218B1 (en) 2018-04-30 2023-09-27 Hewlett Packard Enterprise Development LP System and method of decentralized management of multi-owner nodes using blockchain
EP3564873B1 (en) 2018-04-30 2022-11-30 Hewlett Packard Enterprise Development LP System and method of decentralized machine learning using blockchain
JP7036665B2 (ja) * 2018-05-22 2022-03-15 株式会社日立製作所 データ管理方法およびデータ管理システム
CN110046036A (zh) * 2018-12-25 2019-07-23 阿里巴巴集团控股有限公司 一种操作请求分配方法、装置及设备
US11966818B2 (en) 2019-02-21 2024-04-23 Hewlett Packard Enterprise Development Lp System and method for self-healing in decentralized model building for machine learning using blockchain
US11201747B2 (en) * 2019-07-15 2021-12-14 Sap Se Federated data management between partner systems
US11880383B2 (en) 2019-07-15 2024-01-23 Sap Se Federated data management between partner systems
US11847171B2 (en) * 2019-08-20 2023-12-19 International Business Machines Corporation Facilitating blockchain transactions with an Internet of Things (IoT) device
US11323883B2 (en) * 2019-09-30 2022-05-03 Inlecom Systems Limited Pattern driven selective sensor authentication for internet of things
US11695568B1 (en) 2019-10-01 2023-07-04 Equinix, Inc. Virtualized network functions verification using decentralized identifiers
US11777932B1 (en) * 2019-11-22 2023-10-03 Equinix, Inc. Controlling access to internet of things devices using verifiable credentials
SG10201912999VA (en) * 2019-12-23 2020-09-29 Islamic Res And Training Institute Method and System for Transaction Validation in a Distributed Computing System
CN111262848A (zh) * 2020-01-13 2020-06-09 万春琦 一种基于区块链账户加密的访问控制系统
US11748835B2 (en) 2020-01-27 2023-09-05 Hewlett Packard Enterprise Development Lp Systems and methods for monetizing data in decentralized model building for machine learning using a blockchain
US11218293B2 (en) 2020-01-27 2022-01-04 Hewlett Packard Enterprise Development Lp Secure parameter merging using homomorphic encryption for swarm learning
US11726846B2 (en) * 2020-08-21 2023-08-15 Sap Se Interface for processing sensor data with hyperscale services
CN112491841A (zh) * 2020-11-17 2021-03-12 国网北京市电力公司 数据处理方法、装置和数据处理系统
JP7521692B2 (ja) 2021-03-24 2024-07-24 株式会社デンソー 分散型台帳システム及び方法
US11816475B2 (en) * 2021-07-09 2023-11-14 Micro Focus Llc Installation and authentication of applications using blockchain

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4569015A (en) * 1983-02-09 1986-02-04 International Business Machines Corporation Method for achieving multiple processor agreement optimized for no faults
US6671821B1 (en) * 1999-11-22 2003-12-30 Massachusetts Institute Of Technology Byzantine fault tolerance
US20150156266A1 (en) * 2013-11-29 2015-06-04 Qualcomm Incorporated Discovering cloud-based services for iot devices in an iot network associated with a user
US10839020B2 (en) * 2014-04-14 2020-11-17 Netspective Communications Llc Multi-source user generated electronic data integration in a blockchain-based transactional system
US9635021B2 (en) * 2014-12-18 2017-04-25 Intel Corporation Trusted ephemeral identifier to create a group for a service and/or to provide the service
US10853592B2 (en) * 2015-02-13 2020-12-01 Yoti Holding Limited Digital identity system
US10915891B1 (en) * 2015-03-16 2021-02-09 Winklevoss Ip, Llc Autonomous devices
CA2980002A1 (en) * 2015-03-20 2016-09-29 Rivetz Corp. Automated attestation of device integrity using the block chain
EP3281171A4 (en) * 2015-04-06 2018-11-07 Bitmark Inc. System and method for decentralized title recordation and authentication
US20160342977A1 (en) * 2015-05-20 2016-11-24 Vennd.io Pty Ltd Device, method and system for virtual asset transactions
US9881176B2 (en) * 2015-06-02 2018-01-30 ALTR Solutions, Inc. Fragmenting data for the purposes of persistent storage across multiple immutable data structures
US20170011460A1 (en) * 2015-07-09 2017-01-12 Ouisa, LLC Systems and methods for trading, clearing and settling securities transactions using blockchain technology
US20170228731A1 (en) * 2016-02-09 2017-08-10 Fmr Llc Computationally Efficient Transfer Processing and Auditing Apparatuses, Methods and Systems
US11488147B2 (en) * 2015-07-14 2022-11-01 Fmr Llc Computationally efficient transfer processing and auditing apparatuses, methods and systems
US20170116693A1 (en) * 2015-10-27 2017-04-27 Verimatrix, Inc. Systems and Methods for Decentralizing Commerce and Rights Management for Digital Assets Using a Blockchain Rights Ledger
US20170134162A1 (en) * 2015-11-10 2017-05-11 Shannon Code System and process for verifying digital media content authenticity
US10713654B2 (en) * 2016-01-21 2020-07-14 International Business Machines Corporation Enterprise blockchains and transactional systems
US20170289134A1 (en) * 2016-03-30 2017-10-05 Ping Identity Corporation Methods and apparatus for assessing authentication risk and implementing single sign on (sso) using a distributed consensus database
EP4102431A1 (en) * 2016-04-29 2022-12-14 nChain Licensing AG Implementing logic gate functionality using a blockchain
US10382208B2 (en) * 2016-04-29 2019-08-13 Olympus Sky Technologies, S.A. Secure communications using organically derived synchronized processes
GB201607476D0 (en) * 2016-04-29 2016-06-15 Eitc Holdings Ltd Operating system for blockchain IOT devices
US10135616B2 (en) * 2016-05-07 2018-11-20 Keir Finlow-Bates Revocation of cryptographic keys in the absence of a trusted central authority
JP6601623B2 (ja) * 2016-05-10 2019-11-06 日本電信電話株式会社 コンテンツ流通システム、コンテンツ流通方法、コンテンツ生成装置及びコンテンツ生成プログラム
US10204341B2 (en) * 2016-05-24 2019-02-12 Mastercard International Incorporated Method and system for an efficient consensus mechanism for permissioned blockchains using bloom filters and audit guarantees
CN107659536A (zh) * 2016-07-25 2018-02-02 中兴通讯股份有限公司 一种应用区块链的方法、装置及系统
US10417217B2 (en) * 2016-08-05 2019-09-17 Chicago Mercantile Exchange Inc. Systems and methods for blockchain rule synchronization
CN107770115B (zh) * 2016-08-15 2021-01-05 华为技术有限公司 在对等网络中分发数字内容的方法和系统
CN106789875B (zh) * 2016-11-15 2019-07-02 深圳市新国都支付技术有限公司 一种区块链服务装置、区块链服务系统及其通信方法
WO2018119930A1 (zh) 2016-12-29 2018-07-05 深圳前海达闼云端智能科技有限公司 交易验证处理方法、装置及节点设备
WO2018125989A2 (en) * 2016-12-30 2018-07-05 Intel Corporation The internet of things
US10164983B2 (en) * 2017-01-20 2018-12-25 Verizon Patent And Licensing Inc. Distributed authentication for internet-of-things resources
WO2018140830A1 (en) * 2017-01-27 2018-08-02 Walmart Apollo, Llc Managing smart appliances using blockchain technology
CN110300969B (zh) * 2017-02-17 2023-08-18 诺基亚技术有限公司 投票-共识分布式账本
US11188977B2 (en) * 2017-03-08 2021-11-30 Stichting Ip-Oversight Method for creating commodity assets from unrefined commodity reserves utilizing blockchain and distributed ledger technology
JP7162350B2 (ja) * 2017-03-09 2022-10-28 グルブランドセン,マグヌス,スクラースタッド コアネットワークアクセスプロバイダ
CN106899680B (zh) * 2017-03-09 2019-07-30 深圳壹账通智能科技有限公司 多区块链的分片处理方法和装置
WO2018170504A1 (en) * 2017-03-17 2018-09-20 Labyrinth Research Llc Unified control of privacy-impacting devices
EP4386609A3 (en) * 2017-04-11 2024-08-28 nChain Licensing AG Secure transfer between blockchains
US10757103B2 (en) * 2017-04-11 2020-08-25 Xage Security, Inc. Single authentication portal for diverse industrial network protocols across multiple OSI layers
US10102265B1 (en) * 2017-04-12 2018-10-16 Vijay K. Madisetti Method and system for tuning blockchain scalability for fast and low-cost payment and transaction processing
GB201706132D0 (en) * 2017-04-18 2017-05-31 Nchain Holdings Ltd Computer-implemented system and method
CN107317672A (zh) * 2017-05-10 2017-11-03 广东网金控股股份有限公司 一种轻量终端机区块链系统
US11924322B2 (en) * 2017-05-16 2024-03-05 Arm Ltd. Blockchain for securing and/or managing IoT network-type infrastructure
CN107231299A (zh) * 2017-06-07 2017-10-03 众安信息技术服务有限公司 一种链路由及实现区块链跨链通信的系统
CN107230056B (zh) * 2017-06-28 2021-02-26 无锡井通网络科技有限公司 一种基于区块链合约的快速交易系统
US10616324B1 (en) * 2017-07-20 2020-04-07 Architecture Technology Corporation Decentralized ledger system and method for enterprises
CN107579848B (zh) * 2017-08-30 2020-08-25 上海保险交易所股份有限公司 实用拜占庭容错共识机制中动态更改共识节点的方法
CN107819829B (zh) * 2017-10-17 2020-07-07 上海点融信息科技有限责任公司 访问区块链的方法、系统、区块链节点设备及用户终端
TWI677213B (zh) * 2017-11-23 2019-11-11 財團法人資訊工業策進會 監控裝置、方法及其電腦程式產品
US10642967B2 (en) * 2017-11-28 2020-05-05 American Express Travel Related Services Company, Inc. Single sign-on solution using blockchain
US10567156B2 (en) * 2017-11-30 2020-02-18 Bank Of America Corporation Blockchain-based unexpected data detection
US10735450B2 (en) * 2017-11-30 2020-08-04 Intel Corporation Trust topology selection for distributed transaction processing in computing environments
US20190180276A1 (en) * 2017-12-07 2019-06-13 Bank Of America Corporation Automated Event Processing Computing Platform for Handling and Enriching Blockchain Data
US20190188697A1 (en) * 2017-12-19 2019-06-20 Tbcasoft, Inc. Systems of multiple distributed ledgers using cross-ledger transfers for highly-scalable transaction throughput
US11315110B2 (en) * 2017-12-27 2022-04-26 International Business Machines Corporation Private resource discovery and subgroup formation on a blockchain
US11032252B2 (en) * 2018-01-03 2021-06-08 Syccure, Inc. Distributed authentication between network nodes
US10701054B2 (en) * 2018-01-31 2020-06-30 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing super community and community sidechains with consent management for distributed ledger technologies in a cloud based computing environment
EP3759870B1 (en) * 2018-02-26 2023-11-29 Telefonaktiebolaget Lm Ericsson (Publ) Network slicing with smart contracts
US11429967B2 (en) * 2018-03-13 2022-08-30 Nec Corporation Mechanism for efficient validation of finality proof in lightweight distributed ledger clients
US11281658B2 (en) * 2018-04-16 2022-03-22 Bc Development Labs Gmbh Trustless stateless incentivized remote node network using minimal verification clients
US10693716B2 (en) * 2018-05-29 2020-06-23 At&T Mobility Ii Llc Blockchain based device management
US10790976B1 (en) * 2018-08-01 2020-09-29 Bloomio Ag System and method of blockchain wallet recovery
US11503036B2 (en) * 2019-03-13 2022-11-15 Nec Corporation Methods of electing leader nodes in a blockchain network using a role-based consensus protocol
US11669833B1 (en) * 2022-10-25 2023-06-06 01 Communique Laboratory Inc. Blockchain endpoint protection

Also Published As

Publication number Publication date
US20190317934A1 (en) 2019-10-17
KR20210122913A (ko) 2021-10-12
JP6949249B2 (ja) 2021-10-13
US20220335037A1 (en) 2022-10-20
EP3782387B1 (en) 2022-03-02
CN112166619A (zh) 2021-01-01
WO2019202393A1 (en) 2019-10-24
JP2021513300A (ja) 2021-05-20
EP3782387A1 (en) 2021-02-24
US11281658B2 (en) 2022-03-22
KR102310803B1 (ko) 2021-10-13
KR102475649B1 (ko) 2022-12-07
KR20210015786A (ko) 2021-02-10

Similar Documents

Publication Publication Date Title
ES2914510T3 (es) Red de nodos remotos incentivado sin estado sin confianza utilizando clientes de verificación mínima
KR102270518B1 (ko) 크로스 블록체인 인증 방법 및 장치
KR102437812B1 (ko) 자산 관리 방법과 장치, 및 전자 디바이스
JP6878699B2 (ja) クロスブロックチェーン相互作用のための方法、装置、システム、および電子デバイス
JP7090709B2 (ja) 資産管理方法および装置、ならびに電子デバイス
US11218325B2 (en) Asset management method and apparatus, and electronic device
KR102403581B1 (ko) 블록체인에 기반한 트랜잭션을 실행하기 위한 방법, 장치, 및 전자 디바이스
EP3522088B1 (en) Securing blockchain access through a gateway
JP2021504847A (ja) クロスブロックチェーンインタラクション方法、装置、システム、および電子デバイス
KR20200084009A (ko) 자산 관리 방법 및 장치, 및 전자 디바이스
KR20200074996A (ko) 교차 블록체인 인증 방법, 장치, 및 전자 디바이스
KR20200083544A (ko) 자산 관리 방법 및 장치, 및 전자 디바이스
Khan et al. Decentralised internet of things
CN110445769A (zh) 业务系统的访问方法及装置
EP4011031B1 (en) Secure identity card using unclonable functions