ES2864179T3 - Sistema y método para implementar un contrato nativo en una cadena de bloques - Google Patents

Sistema y método para implementar un contrato nativo en una cadena de bloques Download PDF

Info

Publication number
ES2864179T3
ES2864179T3 ES18867145T ES18867145T ES2864179T3 ES 2864179 T3 ES2864179 T3 ES 2864179T3 ES 18867145 T ES18867145 T ES 18867145T ES 18867145 T ES18867145 T ES 18867145T ES 2864179 T3 ES2864179 T3 ES 2864179T3
Authority
ES
Spain
Prior art keywords
blockchain
contract
type
native
blockchain contract
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
ES18867145T
Other languages
English (en)
Inventor
He Sun
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 ES2864179T3 publication Critical patent/ES2864179T3/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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • G06Q20/0655Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash e-cash managed centrally
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q2220/00Business processing using cryptography

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Strategic Management (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Data Mining & Analysis (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Operations Research (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Power Engineering (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

Un método implementado por ordenador para implementar contratos de cadena de bloques en una cadena de bloques, que comprende: obtener un código de bytes combinado de un contrato de cadena de bloques, en donde un código fuente del contrato de cadena de bloques ha sido compilado por un compilador en una primera porción de código de bytes en donde: el código de bytes combinado comprende: i) la primera porción de código de bytes; y ii) una segunda porción de código de bytes que incluye un indicador que representa un tipo del contrato de cadena de bloques; el tipo del contrato de cadena de bloques comprende un tipo de contrato nativo o un tipo de contrato de Solidity, el tipo de contrato nativo indica que el código fuente del contrato de cadena de bloques está escrito en un lenguaje de programación de alto nivel distinto de Solidity, y el tipo de contrato de Solidity indica que el código fuente del contrato de cadena de bloques está escrito en Solidity; determinar el tipo del contrato de cadena de bloques basándose al menos en el indicador; y ejecutar el contrato de cadena de bloques basándose en el tipo determinado del contrato de cadena de bloques.

Description

DESCRIPCIÓN
Sistema y método para implementar un contrato nativo en una cadena de bloques
Campo técnico
Esta solicitud se refiere en general a métodos y dispositivos para implementar un contrato nativo en una cadena de bloques.
Antecedentes
La tecnología de cadena de bloques promete el almacenamiento de datos de una forma descentralizada. Los datos se pueden almacenar en una serie de bloques de datos que tienen una relación de precedencia entre sí, lo que forma una cadena de bloques. La cadena de bloques se mantiene mediante una red de nodos, que también son responsables de validar los datos antes de almacenar los mismos en los bloques. Con las tecnologías de criptografía y de consenso empleadas por los nodos, los datos almacenados en la cadena de bloques son casi inalterables. La red de nodos también se denomina red de consenso de cadena de bloques. Recientemente, la tecnología de cadena de bloques se ha ampliado para proporcionar un marco para la ejecución de contratos de cadena de bloques (también denominados contratos inteligentes). Un contrato de cadena de bloques es un protocolo informático que pretende facilitar, verificar o imponer digitalmente la negociación o realización de un contrato. Por ejemplo, los contratos de cadena de bloques permiten la realización de transacciones creíbles en ausencia de terceros.
Los contratos inteligentes actuales son en su mayoría contratos de Solidity que se ejecutan en la Máquina Virtual de Ethereum (MVE), debido a que se requiere que estos estén escritos en lenguaje Solidity. Los contratos de Solidity son una colección de código (funciones de contrato) y datos (estado de contrato) que residen en una dirección específica en la cadena de bloques de Ethereum. Algunos otros contratos inteligentes son contratos nativos. Los contratos nativos pueden redactarse en un lenguaje distinto de Solidity. No se debería confundir los contratos nativos con los contratos precompilados. Los contratos precompilados son funciones reutilizables que se ejecutan fuera de la MVE pero que se pueden invocar desde la MVE. Por ejemplo, SHA256, RIPEMD160 y ECRECOVER se implementan como contratos precompilados. Los contratos nativos permiten que los programadores escriban un código de escape de espacio aislado, de ejecución infinita y no determinista. Para los contratos nativos, los desarrolladores no están limitados por Gas (la tarifa de ejecución por cada operación realizada en Ethereum) y límite de Gas, y el código se ejecuta significativamente más rápido que en la MVE. Sin embargo, los sistemas de cadena de bloques actuales requieren que los contratos se escriban en Solidity y carecen del soporte adecuado para ejecutar contratos nativos. El documento D1 (CN106598549) divulga un sistema de acuerdo inteligente que comprende un módulo de ejecución de códigos de OP, una máquina virtual de ejecución de acuerdos y un módulo de acuerdo inteligente, en donde el módulo de ejecución de códigos de OP se usa para conformar un contenido de secuencia de comandos basándose en una pila como códigos de operación correspondientes a través de un análisis de Códigos de OP, de tal modo que se obtienen lenguajes ensambladores ejecutados por los códigos de operación. Una máquina virtual de ejecución de acuerdos ejecuta el acuerdo inteligente llamando al lenguaje ensamblador obtenido por el módulo de ejecución de códigos de OP. El documento D2 (CN106598579) divulga un método para integrar un lenguaje de programación de tipo dinámico en una cadena de bloques. Comprendiendo el método: llamar a un código de bytes almacenado en la cadena de bloques correspondiente a un contrato inteligente escrito mediante un lenguaje de programación de tipo dinámico; analizar sintácticamente el código de bytes para obtener el contrato inteligente correspondiente en donde no se define el tipo de variable del contrato inteligente; y definir el tipo de variable y ejecutar el contrato en consecuencia. El documento D3 (CN107392619) divulga un método de procesamiento de contratos inteligentes que comprende: examinar la legalidad de unas solicitudes de llamada obtenidas dirigidas a un contrato inteligente determinando una información de identificación y un archivo de clase del contrato inteligente.
Sumario
Aspectos de la invención se exponen en las reivindicaciones adjuntas. Diversas realizaciones de la presente solicitud incluyen sistemas, métodos y medios legibles por ordenador no transitorios para implementar contratos de cadena de bloques en una cadena de bloques.
Se proporciona además un método implementado por ordenador para implementar un contrato nativo en una cadena de bloques, que comprende: obtener un código de bytes combinado asociado a un contrato de cadena de bloques, en donde el código de bytes combinado comprende un indicador que representa un tipo del contrato de cadena de bloques; determinar el tipo del contrato de cadena de bloques basándose al menos en el indicador; y ejecutar el contrato de cadena de bloques basándose en el tipo determinado del contrato de cadena de bloques.
En algunos ejemplos, el código fuente está en C++.
En algunos ejemplos, determinar el tipo del contrato de cadena de bloques basándose al menos en el indicador comprende: determinar si el tipo del contrato de cadena de bloques es un contrato nativo.
En algunos ejemplos, ejecutar el contrato de cadena de bloques basándose en el tipo determinado del contrato de cadena de bloques comprende: en respuesta a determinar que el contrato de cadena de bloques es un contrato nativo, activar una máquina virtual de cadena de bloques para ejecutar el contrato de cadena de bloques. Activar la máquina virtual para ejecutar el contrato de cadena de bloques comprende: determinar la máquina virtual correspondiente al tipo basándose al menos en el indicador; activar la máquina virtual determinada para ejecutar el archivo de biblioteca dinámica.
En algunos ejemplos, ejecutar el contrato de cadena de bloques basándose en el tipo determinado del contrato de cadena de bloques comprende: en respuesta a determinar que el contrato de cadena de bloques es un contrato nativo, crear un proceso hijo para ejecutar el contrato de cadena de bloques. Crear un proceso hijo para ejecutar el contrato de cadena de bloques comprende: crear un archivo ejecutable; y generar el proceso hijo para lanzar el archivo ejecutable para ejecutar el archivo de biblioteca dinámica. El proceso hijo y una máquina virtual de cadena de bloques se comunican a través de un zócalo o memoria compartida.
En algunos ejemplos, ejecutar el contrato de cadena de bloques basándose en el tipo determinado del contrato de cadena de bloques comprende: en respuesta a determinar que el contrato de cadena de bloques es un contrato nativo, lanzar un contenedor de Docker para ejecutar el contrato de cadena de bloques. Lanzar el contenedor de Docker para ejecutar el contrato de cadena de bloques comprende: crear un contenedor de Docker; e iniciar el contenedor de Docker para ejecutar el archivo de biblioteca dinámica. El contenedor de Docker y una máquina virtual de cadena de bloques se comunican a través de un zócalo.
Se proporciona además un medio de almacenamiento legible por ordenador no transitorio configurado con instrucciones ejecutables por uno o más procesadores para hacer que el uno o más procesadores realicen las operaciones para implementar los contratos de cadena de bloques en la cadena de bloques.
Se proporciona además un sistema para implementar contratos de cadena de bloques en una cadena de bloques que comprende uno o más procesadores y una o más memorias legibles por ordenador no transitorias acopladas al uno o más procesadores y configuradas con instrucciones ejecutables por el uno o más procesadores para hacer que el sistema realice las operaciones para implementar los contratos de cadena de bloques en una cadena de bloques. Breve descripción de los dibujos
Ciertas características de diversas realizaciones de la presente tecnología se exponen con particularidad en las reivindicaciones adjuntas. Se obtendrá un mejor entendimiento de las características y ventajas de la tecnología mediante referencia a la siguiente descripción detallada que expone realizaciones ilustrativas, en las que se utilizan los principios de la invención, y los dibujos adjuntos, de los cuales:
La figura 1A ilustra un sistema ilustrativo para implementar un contrato nativo en una cadena de bloques, de acuerdo con diversas realizaciones.
La figura 1B ilustra un marco ilustrativo para implementar un contrato de cadena de bloques, de acuerdo con diversas realizaciones.
La figura 2 ilustra un método ilustrativo para añadir un indicador, de acuerdo con diversas realizaciones.
La figura 3A ilustra un método ilustrativo para implementar un contrato nativo en una cadena de bloques, de acuerdo con diversas realizaciones.
La figura 3B ilustra un método ilustrativo para implementar un contrato nativo en una cadena de bloques, de acuerdo con diversas realizaciones.
La figura 3C ilustra un método ilustrativo para implementar un contrato nativo en una cadena de bloques, de acuerdo con diversas realizaciones.
La figura 4 ilustra un diagrama de flujo de un método ilustrativo para implementar un contrato nativo en una cadena de bloques, de acuerdo con diversas realizaciones.
La figura 5 ilustra un diagrama de bloques de un sistema informático ilustrativo para implementar un contrato nativo en una cadena de bloques, de acuerdo con diversas realizaciones.
La figura 6 ilustra un diagrama de bloques de un sistema informático ilustrativo en el que se puede implementar cualquiera de las realizaciones descritas en el presente documento.
Descripción detallada
La cadena de bloques se puede considerar como una base de datos descentralizada, comúnmente denominada libro de contabilidad distribuido debido a que la operación es realizada por diversos nodos (por ejemplo, dispositivos informáticos) en una red entre iguales (P2P). Cualquier información puede escribirse en la cadena de bloques y guardarse o leerse de ella. Los nodos son, por ejemplo, dispositivos informáticos o sistemas informáticos grandes que soportan la red de cadena de bloques y la mantienen funcionando sin problemas. Cada nodo puede proporcionar una parte o la totalidad de las funciones de la cadena de bloques. Por ejemplo, un nodo que proporciona una verificación de consenso se puede denominar nodo participante en el consenso (o nodo de consenso).
La figura 1A muestra un sistema 100 ilustrativo para realizar diversas etapas y métodos divulgados, de acuerdo con diversas realizaciones. Como se muestra, una red de cadena de bloques puede comprender una pluralidad de nodos de cadena de bloques (por ejemplo, nodo 1, nodo 2, nodo 3, nodo 4, nodo i, etc.). Los nodos de cadena de bloques pueden formar una red (por ejemplo, una red entre iguales), comunicándose un nodo de cadena de bloques con otro. El orden y el número de los nodos de cadena de bloques como se muestran son simplemente ilustrativos y por simplicidad de ilustración. Los nodos de cadena de bloques se pueden implementar en servidores, ordenadores, etc. Cada nodo de cadena de bloques puede corresponder a uno o más dispositivos de hardware físicos o dispositivos virtuales acoplados juntos a través de diversos tipos de métodos de comunicación tales como TCP/IP. Dependiendo de las clasificaciones, los nodos de cadena de bloques pueden comprender nodos totales, nodos Geth, nodos de consenso, etc.
En diversas realizaciones, el usuario A y el usuario B pueden usar dispositivos correspondientes, tales como ordenadores portátiles y teléfonos móviles, para activar los nodos de cadena de bloques para ejecutar transacciones, que se pueden llevar a cabo mediante contratos de cadena de bloques (por ejemplo, contratos inteligentes). Por ejemplo, el usuario A puede querer realizar transacciones con el usuario B transfiriendo algún activo de la cuenta del usuario A a la cuenta del usuario B. El usuario A y el usuario B pueden usar unos dispositivos correspondientes en los que se instala un software de cadena de bloques apropiado (por ejemplo, monedero de criptomonedas) para la transacción. El dispositivo del usuario A se puede denominar nodo iniciador A que inicia una transacción con el dispositivo del usuario B denominado nodo destinatario B. El nodo A puede acceder a la cadena de bloques a través de la comunicación con el nodo 1 y el nodo B puede acceder a la cadena de bloques a través de la comunicación con el nodo 2. Por ejemplo, el nodo A y el nodo B pueden enviar transacciones a la cadena de bloques a través del nodo 1 y el nodo 2 para solicitar que se añadan las transacciones a la cadena de bloques. Fuera de la cadena de bloques, el nodo A y el nodo B pueden tener otros canales de comunicación (por ejemplo, comunicación ordinaria por Internet sin pasar por los nodos 1 y 2). En algunas realizaciones, el software de cadena de bloques en el nodo A se puede considerar como un extremo frontal del nodo de cadena de bloques 1, y el nodo de cadena de bloques 1 ejecuta un extremo posterior del software de cadena de bloques.
Cada uno de los nodos de la figura 1A puede comprender un procesador y un medio de almacenamiento legible por ordenador no transitorio configurado con instrucciones ejecutables por el procesador para hacer que el nodo realice diversas etapas para implementar un contrato nativo en una cadena de bloques que se describe en el presente documento. En cada uno de los nodos se puede instalar un software (por ejemplo, un programa de transacciones) y/o hardware (por ejemplo, hilos, conexiones inalámbricas) para comunicarse con otros nodos y/u otros dispositivos. Por ejemplo, en dispositivos de usuario tales como el nodo A y el nodo B se puede instalar un software de extremo de usuario tal como un monedero de criptomonedas, y en los nodos de cadena de bloques se puede instalar un software de procesamiento de transacciones de cadena de bloques. Más adelante se describen detalles adicionales del hardware y software de nodo con referencia a la figura 5 y la figura 6.
Los nodos de cadena de bloques pueden cada uno comprender o acoplarse a una memoria. En algunas realizaciones, la memoria puede almacenar una base de datos de agrupación. La base de datos de agrupación puede ser accesible para la pluralidad de nodos de cadena de bloques de una manera distribuida. Por ejemplo, la base de datos de agrupación puede almacenarse respectivamente en las memorias de los nodos de cadena de bloques. La base de datos de agrupación puede almacenar una pluralidad de transacciones enviadas mediante el uno o más dispositivos de usuario tales como el nodo A operado por usuarios. En algunas realizaciones con respecto a un sistema de Ethereum, después de recibir una solicitud de transacción de una transacción no confirmada, el nodo de cadena de bloques destinatario puede realizar alguna verificación preliminar de la transacción. Por ejemplo, haciendo referencia a la figura 1A, el nodo 1 puede realizar la verificación preliminar después de recibir una transacción desde el nodo A. Una vez se ha verificado, la transacción se puede almacenar en la base de datos de agrupación del nodo de cadena de bloques destinatario, que también puede enviar la transacción a uno o más nodos de cadena de bloques (por ejemplo, nodo 3, nodo 4) que repiten el proceso realizado por el nodo destinatario. Una vez que las transacciones en la base de datos de agrupación correspondiente alcanzan un cierto nivel, los nodos de cadena de bloques pueden verificar el lote de transacciones en la base de datos de agrupación correspondiente de acuerdo con unas reglas de consenso u otro método. Si la transacción involucra un contrato de cadena de bloques, el nodo de cadena de bloques puede ejecutar el contrato de cadena de bloques de forma local. Un cierto nodo de cadena de bloques que verifica con éxito su lote de transacciones (por ejemplo, de acuerdo con unas reglas de consenso) puede empaquetar las transacciones para añadir estas a sus copias locales de la cadena de bloques y difundir los resultados a otros nodos de cadena de bloques. El cierto nodo de cadena de bloques puede ser uno que complete en primer lugar la verificación con éxito, que haya obtenido el privilegio de verificación o que se determine basándose en otra regla de consenso. Los otros nodos de cadena de bloques pueden ejecutar las transacciones de forma local, verificar los resultados de ejecución entre sí (por ejemplo, realizando un cálculo de troceo) y sincronizar sus copias de la cadena de bloques con la del cierto nodo de cadena de bloques. Al actualizar las copias locales de la cadena de bloques, los nodos de cadena de bloques pueden escribir tal información en las memorias locales. Si la verificación falla en algún momento, las transacciones se rechazan.
La figura 1B ilustra un marco ilustrativo para implementar un contrato de cadena de bloques, de acuerdo con diversas realizaciones. Se pretende que las operaciones que se presentan a continuación sean ilustrativas. Dependiendo de la implementación, las etapas ilustrativas pueden incluir etapas adicionales, menos etapas o etapas alternativas realizadas en diversos órdenes o en paralelo.
En diversas realizaciones, para implementar un contrato de cadena de bloques, el nodo A puede compilar el código fuente de contrato de cadena de bloques con un compilador, que devuelve un código de bytes. El nodo A puede construir y firmar una transacción que incluye el código de bytes. Por ejemplo, la transacción puede comprender información tal como palabra de ocasión, precio de Gas, límite de Gas, a (por ejemplo, contrato de cadena de bloques a llamar o una dirección de la cuenta de un receptor), valor, datos (por ejemplo, el código de bytes) y similares. El nodo A puede enviar la transacción a un nodo de cadena de bloques 1 a través de una interfaz de llamada a procedimiento remoto (RPC). Una RPC se produce cuando un programa informático hace que un procedimiento (por ejemplo, una subrutina) se ejecute en un espacio de direcciones diferente (por ejemplo, en otro ordenador tal como el nodo 1 en una red compartida), que se codifica como si fuera una llamada a procedimiento normal (local), sin que el programador codifique explícitamente los detalles para la interacción remota. El nodo 1 puede verificar si la transacción es válida verificando la firma. Una vez se ha verificado, el nodo 1 puede radiodifundir la transacción a la red de cadena de bloques, incluyendo diversos otros nodos de cadena de bloques. Los nodos de cadena de bloques pueden verificar la transacción a través de cómputo en máquinas virtuales (MV) locales y empaquetar la transacción verificada en un bloque nuevo de la cadena de bloques. El bloque nuevo se sincronizará con todos los nodos de cadena de bloques.
Las plataformas de cadena de bloques actuales, tales como el sistema de Ethereum, solo soportan contratos de Solidity. Solidity es el lenguaje de programación orientado a contratos para escribir contratos de cadena de bloques implementados por la máquina virtual de Ethereum (MVE). Estos sistemas de cadena de bloques no soportan lenguajes de contrato en otros lenguajes de programa, tales como C++, Java, Python, etc. Como resultado, los sistemas de cadena de bloques no soportan ni ejecutan contratos nativos (por ejemplo, contratos de cadena de bloques escritos en C++ u otros lenguajes que no sean Solidity). Tal deficiencia en las tecnologías existentes obstaculiza el desarrollo y limita la aplicación de sistemas de cadena de bloques.
Para al menos mitigar las deficiencias de las tecnologías actuales, proporcionar una solución técnica al problema técnico descrito anteriormente y mejorar las funcionalidades informáticas, se divulgan sistemas y métodos para implementar contratos nativos en una cadena de bloques. El soporte para contratos nativos se puede lograr mediante el uso de una biblioteca dinámica para ampliar las aplicaciones de contratos inteligentes. Como un ejemplo, los sistemas y métodos a continuación se describen basándose en un sistema de C++. Los expertos en la materia apreciarán la aplicación de los sistemas y métodos divulgados en diversos otros sistemas de lenguaje informático.
La figura 2 ilustra un método ilustrativo para añadir un indicador, de acuerdo con diversas realizaciones. Se pretende que las operaciones que se presentan a continuación sean ilustrativas. Dependiendo de la implementación, las etapas ilustrativas pueden incluir etapas adicionales, menos etapas o etapas alternativas realizadas en diversos órdenes o en paralelo. Aunque la figura 2 usa C++ como un lenguaje de programación ilustrativo, se pueden usar diversos otros lenguajes de programación para escribir el contrato de cadena de bloques.
En la etapa 201, un usuario puede programar un contrato de cadena de bloques en C++ en un dispositivo de usuario. Se muestra parte del código fuente en C++ ilustrativo. El código fuente se puede enviar a un compilador (por ejemplo, un compilador de C++). El compilador puede estar en el dispositivo de usuario o en otro dispositivo acoplado al dispositivo de usuario.
En la etapa 202, el compilador puede compilar el código fuente (por ejemplo, en un archivo .cpp) en un código de bytes (por ejemplo, en un archivo .so) del contrato de cadena de bloques. En algunas realizaciones, el usuario puede construir el contrato de cadena de bloques en el extremo frontal en diversos lenguajes de programación (por ejemplo, Java, C++, Python). El software de extremo frontal se puede cargar en el dispositivo de usuario. Entonces, el compilador asociado coal extremo frontal puede compilar el contrato de cadena de bloques en código de bytes. Un compilador puede ser un software informático que transforma un código informático escrito en un lenguaje de programación (el lenguaje de origen) en otro lenguaje de programación (el lenguaje de destino). Los compiladores pueden traducir código fuente desde un lenguaje de programación de alto nivel a un lenguaje de nivel inferior (por ejemplo, lenguaje ensamblador, código objeto o código máquina) para crear un programa ejecutable. El código de bytes, también denominado código portátil o código p, es una forma de conjunto de instrucciones diseñada para una ejecución eficiente por un intérprete de software. El contrato de cadena de bloques se puede escribir mediante un código fuente legible por el ser humano en diversos lenguajes de programación, mientras que un código de bytes se puede denominar código máquina o código objeto. A diferencia de un código fuente legible por el ser humano, los códigos de bytes son códigos, constantes y referencias de índole numérica (por ejemplo, direcciones numéricas) y compacta que codifican el resultado de que un compilador realice un análisis sintáctico y semántico de cosas como el tipo, el ámbito y las profundidades de anidación de objetos de programa. En este caso, el código de bytes puede ser leído por un nodo de cadena de bloques para ejecutar el contrato de cadena de bloques.
Como un ejemplo, se muestra el primer par de bytes del área hexadecimal del código de bytes según se ha compilado. Por claridad, no se muestra cierta parte del código de bytes, tal como el área de direcciones y el área de ASCII. El código de bytes puede estar en hexadecimal. En esta memoria descriptiva, el código de bytes de C++ puede estar comprendido en un archivo de biblioteca dinámica (por ejemplo, un archivo .so) que contiene instrucciones para la máquina virtual correspondientes a C++ para ejecutar el programa. En diversas realizaciones, existe una biblioteca dinámica fuera de la aplicación o archivo ejecutable. Durante el tiempo de ejecución, se establece un enlace entre la biblioteca dinámica y la aplicación o archivo ejecutable. Una biblioteca dinámica que comprende funcionalidades especiales se lanza durante una ejecución de programa, lo que minimiza el tamaño de programa global y facilita una realización mejorada de la aplicación para un consumo de memoria reducido.
En la etapa 203, el dispositivo de usuario (por ejemplo, el software de monedero) puede insertar un indicador en el código de bytes según se ha compilado del contrato de cadena de bloques. Como un ejemplo que se muestra en el presente caso, el indicador se puede añadir al principio mismo del código de bytes. El indicador puede comprender datos de un byte que indican el tipo del contrato de cadena de bloques (por ejemplo, si el contrato de cadena de bloques es un contrato nativo, el lenguaje de programación del contrato de cadena de bloques, etc.). En este ejemplo, el indicador es 03, lo que indica un contrato nativo y se refiere a C++. El indicador también puede estar en hexadecimal. Por lo tanto, 03 en el presente caso se refiere a 0x03. Como alternativa, se pueden usar diversas otras representaciones. El indicador también se puede insertar en otra posición del código de bytes.
En algunas realizaciones, el dispositivo de usuario (por ejemplo, con un monedero de criptomonedas u otro software de plataforma de cadena de bloques instalado) puede solicitar al usuario que introduzca, seleccione o identifique de otro modo el tipo de contrato del contrato de cadena de bloques (por ejemplo, un contrato nativo, un contrato de Solidity, un contrato escrito en Java, un contrato escrito en C++, un contrato escrito en Python, etc.). Basándose en la información proporcionada por el usuario, el dispositivo de usuario puede aplicar el indicador para representar el tipo de contrato. El dispositivo de usuario puede, como alternativa, detectar automáticamente el tipo de contrato y aplicar el indicador para representar el tipo de contrato. Por ejemplo, "03" o "0x03" puede representar un contrato nativo, y "05" o "0x05" puede representar un contrato de Solidity. Como otro ejemplo, "01" o "0x01" puede representar un contrato en lenguaje Solidity, "02" o "0x02" puede representar un contrato en lenguaje Java, "03" o "0x03" puede representar un contrato en lenguaje C++, "04" o "0x04" puede representar un contrato en lenguaje Python, etc. El indicador puede estar en el código de bytes o un formato alternativo. Aunque a menudo se usa la representación hexadecimal, el indicador puede no limitarse a los ejemplos de representación anteriores. Un experto en la materia puede apreciar el uso de diversos tipos de representaciones de indicador. El indicador se puede añadir delante del código de bytes según se ha compilado del contrato de cadena de bloques, o en otra ubicación. En un ejemplo, el indicador se añade delante del código de bytes. El indicador puede ocupar un byte u otra unidad de datos.
Después de que el indicador se haya añadido al código de bytes según se ha compilado, se obtiene un código de bytes combinado. Después de la etapa 203, el dispositivo de usuario puede enviar el código de bytes combinado a un nodo de cadena de bloques, y el nodo de cadena de bloques u otro nodo de cadena de bloques de la red de cadena de bloques puede activar una máquina virtual basándose en el indicador para ejecutar el contrato de cadena de bloques.
En algunas realizaciones, con el indicador añadido al código de bytes, el dispositivo de usuario puede transmitir el contrato de cadena de bloques a uno o más nodos de consenso. El nodo de consenso puede recibir un código de bytes combinado que comprende el indicador y el código de bytes según se ha compilado del contrato de cadena de bloques. Después de recibir un mensaje de que el contrato se ha implementado, el nodo de consenso puede obtener una porción (por ejemplo, el indicador en el primer byte del código de bytes combinado) del código de bytes combinado y activar una máquina virtual correspondiente para ejecutar y almacenar el contrato basándose en la porción obtenida del código de contrato. En diversas realizaciones, la máquina virtual puede convertir el código de bytes en lenguaje ensamblador u otro conjunto de instrucciones que pueda ser ejecutado por un procesador. Por ejemplo, si el código de contrato está en C++, se puede llamar a la colección de compiladores de GNU (GCC) para ejecutar el contrato; si el código de contrato está en Java, se puede llamar a la máquina virtual de Java (MVJ) para ejecutar el contrato; y, si el código de contrato está en Solidity, se puede llamar a la máquina virtual de Ethereum (MVE) para ejecutar el contrato; y, si el código de contrato está en Python, se puede llamar a la máquina virtual de Python (MVP) para ejecutar el contrato. Las máquinas virtuales anteriores son simplemente ilustrativas y se pueden sustituir por alternativas.
Cada una de la figura 3A a la figura 3C ilustra un diagrama de flujo de un método ilustrativo para implementar un contrato nativo en una cadena de bloques, de acuerdo con diversas realizaciones. El método se puede implementar mediante un sistema de cadena de bloques (por ejemplo, el sistema 100) que comprende diversos software y hardware. Por ejemplo, el sistema de cadena de bloques puede comprender un cliente opcional como un primer software y una máquina virtual como un segundo software y tener acceso a un archivo de código fuente apply.cpp. Se pretende que las operaciones que se presentan a continuación sean ilustrativas. Dependiendo de la implementación, las etapas ilustrativas pueden incluir etapas adicionales, menos etapas o etapas alternativas realizadas en diversos órdenes o en paralelo. Los métodos con respecto a la figura 3A a la figura 3C pueden compartir las etapas comunes 1 a 5 descritas a continuación.
En algunas realizaciones, en la etapa 1, un software de extremo frontal puede solicitar a un usuario que identifique el tipo del contrato de cadena de bloques a ejecutar. El extremo frontal se puede proporcionar a través de un nodo de cadena de bloques o a través de un dispositivo (por ejemplo, un dispositivo de usuario) acoplado al nodo de cadena de bloques. En esta memoria descriptiva, el tipo del contrato de cadena de bloques se puede referir a una categoría o clasificación del contrato de cadena de bloques. Por ejemplo, el tipo se puede basar en el lenguaje de programación del contrato de cadena de bloques. Un contrato de cadena de bloques puede estar escrito en Java, C++, Solidity, Python, etc. El contrato de cadena de bloques escrito en Solidity se puede denominar contrato de Solidity. Un contrato de cadena de bloques escrito en Java, C++, Python u otro lenguaje igual al del sistema de cadena de bloques se puede denominar contrato nativo. No obstante, el tipo del contrato de cadena de bloques se puede referir a una categoría o clasificación no relacionada con el lenguaje de programación del contrato de cadena de bloques.
En un ejemplo, se puede requerir que el usuario identifique el tipo de contrato, lo que se puede representar mediante un indicador. El usuario puede identificar el tipo de contrato a través de una interfaz de usuario. Si se indica un contrato nativo, se realiza una etapa siguiente de este método.
En algunas realizaciones, en la etapa 2, en una plataforma de C++, se puede proporcionar al usuario una interfaz (por ejemplo, una interfaz genérica) para acceder a la cadena de bloques y ejecutar contratos nativos. La interfaz se puede proporcionar mediante carga dinámica. La interfaz puede requerir formatos de entrada y de salida predeterminados para que los usuarios implementen contratos nativos. Los formatos de entrada y de salida pueden comprender métodos para llamar a datos. De acuerdo con tales requisitos, el usuario puede proporcionar un código fuente para el contrato nativo en la interfaz.
En algunas realizaciones, en la etapa 3, un compilador puede compilar el contrato nativo (por ejemplo, un archivo de código fuente (.cpp) en lenguaje C++) para generar un archivo de biblioteca dinámica correspondiente (por ejemplo, un archivo .so). El archivo de biblioteca dinámica puede estar en código máquina, tal como un código de bytes. Se pueden consultar detalles de esta etapa anteriormente con referencia a la figura 2.
En algunas realizaciones, en la etapa 4, el contrato nativo se puede implementar en el sistema de cadena de bloques. Por ejemplo, el indicador se puede añadir al código de bytes para obtener un código de bytes combinado. Es decir, el código de bytes combinado puede comprender el indicador y el código de bytes según se ha compilado del archivo de biblioteca dinámica. El código de bytes combinado se puede enviar al nodo de cadena de bloques (por ejemplo, el software de extremo posterior). Se pueden consultar detalles de esta etapa anteriormente con referencia a la figura 2.
En algunas realizaciones, en la etapa 5, el nodo de cadena de bloques puede determinar si el contrato de cadena de bloques es un contrato nativo basándose al menos en el indicador. Por ejemplo, el nodo de consenso puede extraer una porción del código de bytes correspondiente al indicador para determinar si el contrato de cadena de bloques es un contrato nativo.
En algunas realizaciones, el extremo posterior de nodo de consenso puede ejecutar el contrato nativo mediante cualquiera de las tres etapas 6.1 - 6.3. La etapa 6.1 se muestra en la figura 3A, la etapa 6.2 se muestra en la figura 3B y la etapa 6.3 se muestra en la figura 3C.
Para la etapa 6.1, el nodo de cadena de bloques puede ejecutar directamente el contrato de cadena de bloques en el sistema de cadena de bloques enlazando y/o cargando dinámicamente el archivo de biblioteca dinámica (o el código de bytes combinado) y devolver un resultado. Por ejemplo, el nodo de cadena de bloques puede activar una máquina virtual correspondiente al contrato de cadena de bloques para ejecutar el contrato de cadena de bloques enlazando y/o cargando dinámicamente el archivo de biblioteca dinámica y devolver un resultado. Opcionalmente, el nodo de cadena de bloques puede establecer un archivo de biblioteca dinámica local correspondiente para enlazar y/o cargar dinámicamente el archivo de biblioteca dinámica.
Para la etapa 6.2, el nodo de consenso puede crear un proceso hijo (por ejemplo, a través de una función de bifurcación) para ejecutar el archivo de biblioteca dinámica (o el código de bytes combinado). Por ejemplo, el nodo de consenso puede activar una máquina virtual para llamar a un cliente para compilar la lógica llamada en un archivo ejecutable (cliente). El archivo ejecutable se puede usar para ejecutar el archivo de biblioteca dinámica enlazando y/o cargando el archivo de biblioteca dinámica y devolver un resultado de ejecución a la máquina virtual. El proceso hijo y el sistema de cadena de bloques (por ejemplo, la máquina virtual o un componente alternativo del sistema de cadena de bloques) se pueden comunicar a través de un zócalo o memoria compartida. Después de recibir el resultado de ejecución, el sistema de cadena de bloques puede continuar ejecutando una transacción siguiente.
Para la etapa 6.3, el nodo de consenso puede guardar la lógica de ejecución como un Docker. Cuando un usuario realiza una llamada para ejecutar un contrato nativo, se activa el Docker para llamar a y ejecutar el archivo de biblioteca dinámica y devolver un resultado de ejecución al sistema de cadena de bloques. Después de obtener el resultado de ejecución, el sistema de cadena de bloques puede continuar ejecutando una transacción siguiente. El Docker y el sistema de cadena de bloques (por ejemplo, la máquina virtual o un componente alternativo del sistema de cadena de bloques) se pueden comunicar a través de un zócalo.
Docker posibilita un empaquetado, un envío y una ejecución fáciles de una aplicación como un contenedor liviano, portátil y autosuficiente. Los contenedores Docker comparten el sistema operativo, debido a que el sistema operativo de anfitrión comparte su núcleo con los contenedores Docker en ejecución, mientras que cada una de las aplicaciones de máquina virtual tiene un sistema operativo invitado. Docker hace posible establecer unos entornos de desarrollo locales que son como un servidor activo, ejecutar múltiples entornos de desarrollo desde el mismo anfitrión, cada uno de los cuales tiene software, sistemas operativos y configuraciones singulares, someter a prueba proyectos en servidores nuevos o diferentes y permitir que cualquiera trabaje en el mismo proyecto con exactamente los mismos ajustes, independientemente del entorno de anfitrión local. En el presente caso, Docker proporciona un entorno virtual para ejecutar el contrato de cadena de bloques, que puede mantener el nodo de consenso protegido ante los problemas causados por la ejecución (por ejemplo, reinicio de sistema, error, ejecución de código malicioso, etc.).
La figura 4 ilustra un diagrama de flujo de un método 450 ilustrativo para implementar un contrato nativo en una cadena de bloques, de acuerdo con diversas realizaciones. El método 450 se puede implementar mediante uno o más componentes (por ejemplo, nodo 1, nodo 2, ..., nodo i, o una combinación de nodo 1 y nodo A o similares) del sistema 100 de la figura 1A. El método 450 se puede implementar mediante un nodo de consenso correspondiente a una máquina de hardware (por ejemplo, un servidor) y un software (por ejemplo, un software de cadena de bloques). El método 450 se puede implementar mediante uno o más sistemas o dispositivos (por ejemplo, ordenador, servidor). El sistema o dispositivo puede comprender uno o más procesadores y uno o más medios de almacenamiento legibles por ordenador no transitorios (por ejemplo, una o más memorias) acoplados al uno o más procesadores, y configurados con instrucciones ejecutables por el uno o más procesadores para hacer que el sistema o dispositivo (por ejemplo, el procesador) realicen el método 450. Se pretende que las operaciones del método 450 que se presentan a continuación sean ilustrativas. Dependiendo de la implementación, el método 450 ilustrativo puede incluir etapas adicionales, menos etapas o etapas alternativas realizadas en diversos órdenes o en paralelo.
El bloque 451 comprende: obtener un código de bytes combinado asociado a un contrato de cadena de bloques, en donde el código de bytes combinado comprende un indicador que representa un tipo del contrato de cadena de bloques. En algunas realizaciones, el código de bytes combinado comprende un código de bytes de un archivo de biblioteca dinámica compilado a partir de un código fuente del contrato de cadena de bloques. En un ejemplo, el código fuente está en C++. La palabra "combinado" puede indicar la inclusión del indicador, debido a que el código de bytes combinado puede comprender (1) el indicador y (2) el código de bytes según se ha compilado a partir del código fuente. El indicador puede estar, o no, en un formato de código de bytes.
El bloque 452 comprende: determinar el tipo del contrato de cadena de bloques basándose al menos en el indicador. En algunas realizaciones, determinar el tipo del contrato de cadena de bloques basándose al menos en el indicador comprende: determinar si el tipo del contrato de cadena de bloques es un contrato nativo.
El bloque 453 comprende: ejecutar el contrato de cadena de bloques basándose en el tipo determinado del contrato de cadena de bloques.
En algunas realizaciones, en el bloque 454, ejecutar el contrato de cadena de bloques basándose en el tipo determinado del contrato de cadena de bloques comprende: en respuesta a determinar que el contrato de cadena de bloques es un contrato nativo, activar una máquina virtual de cadena de bloques para ejecutar el contrato de cadena de bloques. Activar la máquina virtual para ejecutar el contrato de cadena de bloques comprende: determinar la máquina virtual correspondiente al tipo basándose al menos en el indicador; activar la máquina virtual determinada para ejecutar el archivo de biblioteca dinámica.
En algunas realizaciones, en el bloque 455, ejecutar el contrato de cadena de bloques basándose en el tipo determinado del contrato de cadena de bloques comprende: en respuesta a determinar que el contrato de cadena de bloques es un contrato nativo, crear un proceso hijo para ejecutar el contrato de cadena de bloques. Crear un proceso hijo para ejecutar el contrato de cadena de bloques comprende: crear un archivo ejecutable; y generar el proceso hijo para lanzar el archivo ejecutable para ejecutar el archivo de biblioteca dinámica. El proceso hijo y una máquina virtual de cadena de bloques se comunican a través de un zócalo o memoria compartida.
En algunas realizaciones, en el bloque 456, ejecutar el contrato de cadena de bloques basándose en el tipo determinado del contrato de cadena de bloques comprende: en respuesta a determinar que el contrato de cadena de bloques es un contrato nativo, lanzar un contenedor de Docker para ejecutar el contrato de cadena de bloques. Lanzar el contenedor de Docker para ejecutar el contrato de cadena de bloques comprende: crear un contenedor de Docker; e iniciar el contenedor de Docker para ejecutar el archivo de biblioteca dinámica. El contenedor de Docker y una máquina virtual de cadena de bloques se comunican a través de un zócalo.
En las tecnologías actuales, es poco probable que el software de cadena de bloques del nodo de cadena de bloques integre diversos tipos de máquinas virtuales, a pesar de que la máquina de hardware del nodo de cadena de bloques puede acceder a estas máquinas virtuales (por ejemplo, desde instalaciones previas en la máquina de hardware o configuraciones de sistema). Con los métodos divulgados, el nodo de cadena de bloques puede determinar el tipo de contrato (por ejemplo, si es un contrato nativo o de Solidity, el lenguaje de programación del contrato) basándose en el código de bytes del contrato recibido y activar el método correspondiente para ejecutar el contrato. Con el uso del archivo de biblioteca dinámica, los contratos nativos pueden ser soportados por el sistema de cadena de bloques para su ejecución sin tener que convertirse en contratos de Solidity. Por lo tanto, se ha ampliado el rango de aplicación y la compatibilidad del sistema de contratos de cadena de bloques, debido a que ya no se requiere que el contrato de cadena de bloques esté escrito en lenguaje Solidity y se pueden ejecutar contratos nativos como contratos de Solidity.
Las técnicas descritas en el presente documento se implementan mediante uno o más dispositivos informáticos de propósito especial. Los dispositivos informáticos de propósito especial pueden ser sistemas informáticos de escritorio, sistemas informáticos servidores, sistemas informáticos portátiles, dispositivos portátiles, dispositivos de red o cualquier otro dispositivo o combinación de dispositivos que incorpora lógica cableada y/o de programa para implementar las técnicas. El o los dispositivos informáticos generalmente están controlados y coordinados por el software del sistema operativo. Los sistemas operativos convencionales controlan y programan procesos informáticos para su ejecución, realizan gestión de memoria, proporcionan sistema de archivos, interconexión en red, servicios de E/S y proporcionan una funcionalidad de interfaz de usuario, tal como una interfaz gráfica de usuario ("GUI"), entre otras cosas.
La figura 5 ilustra un diagrama de bloques de un sistema informático 550 ilustrativo para implementar un contrato nativo en una cadena de bloques, de acuerdo con diversas realizaciones. El sistema 550 puede ser una implementación ilustrativa del nodo 1, una combinación del nodo A y el nodo 1, el nodo 2, ..., el nodo i del sistema 100 de la figura 1A, o un dispositivo similar. El método 450 se puede implementar mediante el sistema informático 550. El sistema informático 550 puede comprender uno o más procesadores y uno o más medios de almacenamiento legibles por ordenador no transitorios (por ejemplo, una o más memorias) acoplados al uno o más procesadores, y configurados con instrucciones ejecutables por el uno o más procesadores para hacer que el sistema o dispositivo (por ejemplo, el procesador) realicen el método 450. El sistema informático 550 puede comprender diversas unidades/módulos que corresponden a las instrucciones (por ejemplo, instrucciones de software). En algunas realizaciones, el sistema informático 550 puede comprender un módulo de obtención 551 configurado para obtener un código de bytes combinado asociado a un contrato de cadena de bloques, en donde el código de bytes combinado comprende un indicador que representa un tipo del contrato de cadena de bloques; un módulo de determinación 552 configurado para determinar el tipo del contrato de cadena de bloques basándose al menos en el indicador; y un módulo de ejecución 553 configurado para ejecutar el contrato de cadena de bloques basándose en el tipo determinado del contrato de cadena de bloques.
La figura 6 es un diagrama de bloques que ilustra un sistema informático 600 en el que se puede implementar cualquiera de las realizaciones descritas en el presente documento. El sistema 600 se puede implementar en cualquiera de los nodos descritos en el presente documento y configurarse para realizar correspondientes etapas para implementar un contrato nativo en una cadena de bloques. El sistema informático 600 incluye un bus 602 u otro mecanismo de comunicación para comunicar información, y uno o más procesador o procesadores de hardware 604 acoplados con el bus 602 para procesar información. El procesador o procesadores de hardware 604 pueden ser, por ejemplo, uno o más microprocesadores de propósito general.
El sistema informático 600 también incluye una memoria principal 606, tal como una memoria de acceso aleatorio (RAM) u otro dispositivo de almacenamiento dinámico, acoplado al bus 602 para almacenar información e instrucciones a ejecutar por el procesador o procesadores 604. La memoria principal 606 también se puede usar para almacenar variables temporales u otra información intermedia durante la ejecución de instrucciones a ejecutarse por el procesador o procesadores 604. Tales instrucciones, cuando se almacenan en medios de almacenamiento a los que puede acceder el procesador o procesadores 604, representan el sistema informático 600 en una máquina de propósito especial que se personaliza para realizar las operaciones especificadas en las instrucciones. El sistema informático 600 incluye adicionalmente una memoria de solo lectura (ROM) 608 u otro dispositivo de almacenamiento estático acoplado al bus 602 para almacenar información estática e instrucciones para el procesador o procesadores 604. Se proporciona un dispositivo de almacenamiento 610, tal como un disco magnético, un disco óptico o una unidad de memoria USB (unidad flash), etc., y se acopla al bus 602 para almacenar información e instrucciones.
El sistema informático 600 puede implementar las técnicas descritas en el presente documento usando lógica cableada personalizada, uno o más ASIC o FPGA, firmware y/o lógica de programa que, en combinación con el sistema informático, provoca o programa que el sistema informático 600 sea una máquina de propósito especial. De acuerdo con una realización, las operaciones, métodos y procesos descritos en el presente documento son realizados por el sistema informático 600 en respuesta a que el procesador o procesadores 604 ejecuten una o más secuencias de una o más instrucciones contenidas en la memoria principal 606. Tales instrucciones pueden leerse en la memoria principal 606 desde otro medio de almacenamiento, tal como el dispositivo de almacenamiento 610. La ejecución de las secuencias de instrucciones contenidas en la memoria principal 606 provoca que el procesador o procesadores 604 realicen las etapas de proceso descritas en el presente documento. En realizaciones alternativas, se puede usar circuitería cableada permanente en lugar de o en combinación con instrucciones de software.
La memoria principal 606, la ROM 608, y/o el almacenamiento 610 pueden incluir medios de almacenamiento no transitorios. La expresión "medios no transitorios" y términos similares, como se usan en el presente documento, se refieren a medios que almacenan datos y/o instrucciones que hacen que una máquina funcione de una manera específica, los medios excluyen las señales transitorias. Tales medios no transitorios pueden comprender medios no volátiles y/o medios volátiles. Los medios no volátiles incluyen, por ejemplo, discos ópticos o magnéticos, tales como un dispositivo de almacenamiento 610. Los medios volátiles incluyen memoria dinámica, tal como la memoria principal 606. Las formas comunes de medios no transitorios incluyen, por ejemplo, un disco flexible, un disco flexible, un disco duro, disco de estado sólido, cinta magnética, o cualquier otro medio de almacenamiento de datos magnético, un CD-ROM, cualquier otro medio de almacenamiento de datos óptico, cualquier medio físico con patrones de orificios, una RAM, una PROM y EPROM, una FLASH-EPROM, NVRAM, cualquier otro chip o cartucho de memoria y versiones en red de los mismos.
El sistema informático 600 también incluye una interfaz de comunicación 618 acoplada al bus 602. La interfaz de red 618 proporciona un acoplamiento de comunicación de datos bidireccional a uno o más enlaces de red que están conectados a una o más redes locales. Por ejemplo, la interfaz de red 618 puede ser una tarjeta de red digital de servicios integrados (ISDN), módem por cable, módem por satélite o un módem para proporcionar una conexión de comunicación de datos a un correspondiente tipo de línea telefónica. Como otro ejemplo, la interfaz de red 618 puede ser una tarjeta de red de área local (LAN) para proporcionar una conexión de comunicación de datos a una LAN compatible (o componente WAN para comunicarse con una WAN). También pueden implementarse enlaces inalámbricos. En cualquier implementación de este tipo, la interfaz de red 618 envía y recibe señales eléctricas, electromagnéticas u ópticas que transportan flujos de datos digitales que representan diversos tipos de información.
El sistema informático 600 puede enviar mensajes y recibir datos, incluyendo código de programa, a través de la red o redes, el enlace de red y la interfaz de comunicación 618. En el ejemplo de Internet, un servidor podría transmitir un código solicitado para un programa de aplicación a través de Internet, el ISP, la red local y la interfaz de red 618.
El código recibido puede ejecutarse mediante el procesador o procesadores 604 como se recibió, y/o almacenarse en el dispositivo de almacenamiento 610, u otro almacenamiento no volátil para su ejecución posterior.
Cada uno de los procesos, métodos y algoritmos descritos en las secciones anteriores puede estar incorporado y automatizado total o parcialmente por módulos de código ejecutados por uno o más sistemas informáticos o procesadores informáticos que comprenden hardware informático. Los procesos y algoritmos pueden implementarse parcial o totalmente en circuitería específica de la aplicación.
Las diversas características y procesos anteriormente descritos pueden usarse de manera independiente unos de otros, o pueden combinarse de diversas maneras. Se pretende que todas las posibles combinaciones y subcombinaciones entren dentro del alcance de la presente memoria descriptiva. Además, ciertos bloques de métodos o proceso pueden omitirse en algunas implementaciones. Los métodos y procesos descritos en el presente documento tampoco están limitados a ninguna secuencia particular y los bloques o estados relacionados con los mismos pueden realizarse en otras secuencias que sean apropiadas. Por ejemplo, los bloques o estados descritos se pueden realizar en un orden distinto del específicamente divulgado o múltiples bloques o estados pueden combinarse en un único bloque o estado. Los bloques o estados ilustrativos pueden realizarse en serie, en paralelo o de alguna otra manera. Bloques o estados se pueden añadir a o eliminarse de las realizaciones ilustrativas divulgadas. Los sistemas y componentes ilustrativos descritos en el presente documento pueden configurarse de manera diferente a lo descrito. Por ejemplo, elementos se pueden añadir a, eliminarse de, o reorganizarse, en comparación con las realizaciones ilustrativas divulgadas.
Las diversas operaciones de los métodos ilustrativos descritos en el presente documento pueden realizarse, al menos parcialmente, mediante un algoritmo. El algoritmo puede estar comprendido en códigos de programa o instrucciones almacenadas en una memoria (por ejemplo, un medio de almacenamiento legible por ordenador no transitorio descrito anteriormente). Tal algoritmo puede comprender un algoritmo de aprendizaje automático. En algunas realizaciones, es posible que un algoritmo de aprendizaje automático no programe explícitamente los ordenadores para que realicen una función, sino que puede aprender de los datos de entrenamiento para hacer un modelo de predicciones que realice la función.
Las diversas operaciones de los métodos ilustrativos descritos en el presente documento pueden ser realizadas, al menos parcialmente, por uno o más procesadores que están configurados temporalmente (por ejemplo, por software) o configurados permanentemente para realizar las operaciones relevantes. Ya se hayan configurado de forma temporal o permanente, tales procesadores pueden constituir motores implementados por procesadores que operan para realizar una o más operaciones o funciones descritas en el presente documento.
De manera similar, los métodos descritos en el presente documento pueden implementarse al menos parcialmente con un procesador, siendo un procesador o procesadores particulares un ejemplo de hardware. Por ejemplo, al menos algunas de las operaciones de un método pueden realizarse por uno o más procesadores o motores implementados por procesador. Además, el uno o más procesadores también pueden operar para soportar la realización de las operaciones relevantes en un entorno de "informática en la nube" o como un "software como servicio" (SaaS). Por ejemplo, al menos algunas de las operaciones pueden realizarse por un grupo de ordenadores (como ejemplos de máquinas que incluyen procesadores), siendo estas operaciones accesibles a través de una red (por ejemplo, Internet) y a través de una o más interfaces apropiadas (por ejemplo, una Interfaz de Programa de Aplicación (API)).
La realización de algunas de las operaciones se puede distribuir entre los procesadores, residiendo no solo dentro de una única máquina, sino implementándose en un número de máquinas. En algunas realizaciones ilustrativas, los procesadores o motores 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 realizaciones ilustrativas, los procesadores o motores implementados por procesador pueden distribuirse a través de varias ubicaciones geográficas.
De principio a fin de la presente memoria descriptiva, múltiples instancias pueden implementar componentes, operaciones o estructuras descritos como una única instancia. Aunque operaciones individuales de uno o más métodos se ilustran y se describen como operaciones separadas, una o más de las operaciones individuales se pueden realizar simultáneamente y nada requiere que las operaciones se realicen en el orden ilustrado. Unas estructuras y una funcionalidad presentadas como componentes separados en las configuraciones ilustrativas se pueden implementar como una estructura o componente combinado. De forma similar, unas estructuras y una funcionalidad presentadas como un único componente se pueden implementar como componentes separados. Estas y otras variaciones, modificaciones, adiciones y mejoras entran dentro del alcance de la materia objeto en el presente documento.
Aunque se ha descrito una visión general de la materia objeto con referencia a realizaciones ilustrativas específicas, se pueden realizar diversas modificaciones y cambios a estas realizaciones sin apartarse del alcance más amplio de las realizaciones de la presente memoria descriptiva. Se puede hacer referencia en el presente documento a tales realizaciones de la materia objeto, individual o colectivamente, mediante el término "invención" meramente por razones de conveniencia y sin tener por objeto limitar voluntariamente el alcance de la presente solicitud a cualquier divulgación o concepto único si, de hecho, se divulga más de uno. La presente descripción detallada no se debería interpretar en un sentido limitante y el alcance de diversas realizaciones se define solo mediante las reivindicaciones adjuntas, junto con la gama completa de equivalentes a la que tienen derecho tales reivindicaciones.

Claims (14)

REIVINDICACIONES
1. Un método implementado por ordenador para implementar contratos de cadena de bloques en una cadena de bloques, que comprende:
obtener un código de bytes combinado de un contrato de cadena de bloques, en donde un código fuente del contrato de cadena de bloques ha sido compilado por un compilador en una primera porción de código de bytes en donde:
el código de bytes combinado comprende:
i) la primera porción de código de bytes; y
ii) una segunda porción de código de bytes que incluye un indicador que representa un tipo del contrato de cadena de bloques;
el tipo del contrato de cadena de bloques comprende un tipo de contrato nativo o un tipo de contrato de Solidity, el tipo de contrato nativo indica que el código fuente del contrato de cadena de bloques está escrito en un lenguaje de programación de alto nivel distinto de Solidity, y
el tipo de contrato de Solidity indica que el código fuente del contrato de cadena de bloques está escrito en Solidity;
determinar el tipo del contrato de cadena de bloques basándose al menos en el indicador; y
ejecutar el contrato de cadena de bloques basándose en el tipo determinado del contrato de cadena de bloques.
2. El método de la reivindicación 1, en donde:
la primera porción de código de bytes comprende un archivo de biblioteca dinámica compilado a partir del código fuente del contrato de cadena de bloques.
3. El método de la reivindicación 2, en donde determinar el tipo del contrato de cadena de bloques basándose al menos en el indicador comprende:
determinar, en un nodo de cadena de bloques, si el tipo del contrato de cadena de bloques es el tipo de contrato nativo o el tipo de contrato de Solidity.
4. El método de la reivindicación 3, en donde ejecutar el contrato de cadena de bloques basándose en el tipo determinado del contrato de cadena de bloques comprende:
en respuesta a determinar que el contrato de cadena de bloques es del tipo de contrato nativo, activar la máquina virtual de cadena de bloques para ejecutar el contrato de cadena de bloques.
5. El método de la reivindicación 4, en donde activar la máquina virtual de cadena de bloques comprende: determinar la máquina virtual de cadena de bloques correspondiente al tipo de contrato nativo basándose al menos en el indicador; y
activar la máquina virtual de cadena de bloques determinada para ejecutar el archivo de biblioteca dinámica.
6. El método de la reivindicación 3, en donde ejecutar el contrato de cadena de bloques basándose en el tipo determinado del contrato de cadena de bloques comprende:
en respuesta a determinar que el contrato de cadena de bloques es del tipo de contrato nativo, crear un proceso hijo para ejecutar el contrato de cadena de bloques.
7. El método de la reivindicación 6, en donde crear el proceso hijo comprende:
crear un archivo ejecutable; y
lanzar el archivo ejecutable para ejecutar el archivo de biblioteca dinámica.
8. El método de la reivindicación 6, en donde:
el proceso hijo y la máquina virtual de cadena de bloques se comunican a través de un zócalo o de una memoria compartida.
9. El método de la reivindicación 3, en donde ejecutar el contrato de cadena de bloques basándose en el tipo determinado del contrato de cadena de bloques comprende:
en respuesta a determinar que el contrato de cadena de bloques es del tipo de contrato nativo, lanzar un contenedor de Docker para ejecutar el contrato de cadena de bloques.
10. El método de la reivindicación 9, en donde lanzar el contenedor de Docker comprende:
crear un contenedor de Docker; y
lanzar el contenedor de Docker para ejecutar el archivo de biblioteca dinámica.
11. El método de la reivindicación 9, en donde:
el contenedor de Docker y la máquina virtual de cadena de bloques se comunican a través de un zócalo.
12. Un medio de almacenamiento legible por ordenador no transitorio para implementar contratos de cadena de bloques en una cadena de bloques, configurado con instrucciones ejecutables por uno o más procesadores para hacer que el uno o más procesadores realicen el método de una cualquiera de las reivindicaciones 1 a 11.
13. Un sistema para implementar contratos de cadena de bloques en una cadena de bloques, que comprende uno o más procesadores y una o más memorias legibles por ordenador no transitorias acopladas al uno o más procesadores y configuradas con instrucciones ejecutables por el uno o más procesadores para hacer que el sistema realice el método de acuerdo con una cualquiera de las reivindicaciones 1 a 11.
14. Un producto de programa informático para implementar contratos de cadena de bloques en una cadena de bloques, que comprende instrucciones de programa que, cuando son ejecutadas por un procesador, hacen que el procesador realice un método de acuerdo con cualquiera de las reivindicaciones 1 a 11.
ES18867145T 2018-12-29 2018-12-29 Sistema y método para implementar un contrato nativo en una cadena de bloques Active ES2864179T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/125623 WO2019072310A2 (en) 2018-12-29 2018-12-29 SYSTEM AND METHOD FOR IMPLEMENTING NATIVE CONTRACT ON BLOCK CHAIN

Publications (1)

Publication Number Publication Date
ES2864179T3 true ES2864179T3 (es) 2021-10-13

Family

ID=66100137

Family Applications (1)

Application Number Title Priority Date Filing Date
ES18867145T Active ES2864179T3 (es) 2018-12-29 2018-12-29 Sistema y método para implementar un contrato nativo en una cadena de bloques

Country Status (9)

Country Link
US (1) US11086847B2 (es)
EP (1) EP3542494B1 (es)
JP (1) JP6856749B2 (es)
KR (1) KR102237015B1 (es)
CN (1) CN110249307B (es)
ES (1) ES2864179T3 (es)
PH (1) PH12019501153A1 (es)
PL (1) PL3542494T3 (es)
WO (1) WO2019072310A2 (es)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3542494B1 (en) 2018-12-29 2021-02-17 Advanced New Technologies Co., Ltd. System and method for implementing native contract on blockchain
US10733152B2 (en) 2018-12-29 2020-08-04 Alibaba Group Holding Limited System and method for implementing native contract on blockchain
EP3612930A4 (en) * 2019-03-26 2020-06-24 Alibaba Group Holding Limited SYSTEM AND METHOD FOR IMPLEMENTING VARIOUS TYPES OF BLOCKCHAIN CONTRACTS
CA3058236C (en) 2019-03-27 2020-08-25 Alibaba Group Holding Limited Retrieving public data for blockchain networks using highly available trusted execution environments
EP3673617B1 (en) * 2019-03-27 2021-11-17 Advanced New Technologies Co., Ltd. Retrieving public data for blockchain networks using trusted execution environments
SG11201908983WA (en) 2019-03-29 2019-10-30 Alibaba Group Holding Ltd Retrieving access data for blockchain networks using highly available trusted execution environments
JP7221799B2 (ja) * 2019-05-31 2023-02-14 株式会社日立製作所 情報処理システム、及び情報処理システムの制御方法
CN111095338B (zh) 2019-06-28 2023-06-30 创新先进技术有限公司 用于执行不同类型区块链合约的系统和方法
CN110392052B (zh) * 2019-07-22 2021-05-25 中国工商银行股份有限公司 一种区块链智能合约处理系统及方法
US20220292082A1 (en) * 2019-08-19 2022-09-15 Hangzhou Qulian Technology Co., Ltd. Method, apparatus and device for parallel execution of smart contract, and medium
CN110543407B (zh) * 2019-08-21 2021-11-05 杭州趣链科技有限公司 一种Solidity智能合约性能静态分析方法
CN110659907B (zh) * 2019-09-24 2021-11-12 北京海益同展信息科技有限公司 用于执行智能合约的方法和装置
CN112491887B (zh) * 2019-09-25 2023-06-30 支付宝(杭州)信息技术有限公司 基于fpga实现虚拟机运算的方法及装置
CN110855688B (zh) * 2019-11-18 2021-06-25 腾讯科技(深圳)有限公司 一种区块链信息处理方法及相关设备
WO2021102616A1 (zh) * 2019-11-25 2021-06-03 深圳市网心科技有限公司 一种智能合约开发方法、装置及电子设备和存储介质
CN111026461B (zh) * 2019-12-06 2022-04-22 联想(北京)有限公司 用于区块链系统的数据处理方法、装置和电子设备
CN111179086B (zh) * 2019-12-31 2024-01-02 杭州趣链科技有限公司 一种基于WebAssembly的智能合约虚拟机
CN111240830A (zh) * 2019-12-31 2020-06-05 陕西医链区块链集团有限公司 一种公链合约资源分配方法、装置、电子设备、存储介质
CN111258714B (zh) * 2020-01-13 2023-03-10 电子科技大学 一种区块链智能合约执行方法
CN111324396B (zh) * 2020-03-19 2023-09-15 深圳市迅雷网络技术有限公司 一种区块链智能合约执行方法、装置及设备
CN111338616A (zh) * 2020-03-24 2020-06-26 北京自如信息科技有限公司 协议解析代码的生成方法、装置及电子设备
CN112835975B (zh) * 2020-06-05 2023-09-29 支付宝(杭州)信息技术有限公司 一种在区块链中部署、更新、调用智能合约的方法
CN111752850B (zh) * 2020-07-13 2021-08-20 腾讯科技(深圳)有限公司 区块链系统的测试方法及相关设备
CN111562969B (zh) * 2020-07-15 2020-10-20 百度在线网络技术(北京)有限公司 一种区块链的智能合约实现方法、装置、设备和介质
CN112866412B (zh) 2020-08-31 2023-06-30 支付宝(杭州)信息技术有限公司 一种部署智能合约的方法、区块链节点和存储介质
CN111815310B (zh) 2020-08-31 2021-08-17 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和存储介质
CN111770205B (zh) * 2020-08-31 2020-12-04 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点、系统和存储介质
CN112363804B (zh) * 2020-11-16 2024-01-26 北京差旅天下网络科技有限责任公司 区块链jvm应用方法、设备和存储介质
CN112286643B (zh) * 2020-12-24 2021-04-20 北京百度网讯科技有限公司 以太坊虚拟机的事务处理方法、装置、设备和介质
CN112306645B (zh) * 2020-12-24 2021-05-04 北京百度网讯科技有限公司 以太坊虚拟机的事务处理方法、装置、设备和介质
CN112686672A (zh) * 2021-01-08 2021-04-20 新晨科技股份有限公司 区块链上背书签名压缩方法、电子设备及存储介质
KR102548117B1 (ko) * 2021-04-14 2023-06-27 아주대학교 산학협력단 블록체인을 이용한 미래 이벤트에 대한 스마트컨트랙트 처리 방법 및 노드 장치
CN113312429B (zh) * 2021-06-22 2023-01-17 工银科技有限公司 区块链中的智能合约管理系统、方法、介质和产品
CN113256296B (zh) * 2021-07-01 2021-10-08 支付宝(杭州)信息技术有限公司 智能合约执行方法、系统、装置和存储介质
CN113360893B (zh) * 2021-08-11 2021-11-30 北京微芯感知科技有限公司 基于容器的智能合约执行方法、装置及存储介质
CN113360251B (zh) * 2021-08-11 2021-12-21 北京微芯感知科技有限公司 智能合约执行与跨合约调用方法、装置及存储介质
US11960579B2 (en) 2022-02-17 2024-04-16 Bank Of America Corporation Smart glass and blockchain digital signature implementation
GB2618105A (en) * 2022-04-27 2023-11-01 Nchain Licensing Ag Protocol for communicating compact scripts
US11928438B1 (en) * 2023-07-07 2024-03-12 Northern Trust Corporation Computing technologies for large language models

Family Cites Families (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6092147A (en) 1997-04-15 2000-07-18 Sun Microsystems, Inc. Virtual machine with securely distributed bytecode verification
EP1898597B1 (en) 2006-09-07 2008-12-03 Research In Motion Limited Mediated registration of client applications and content providers with push content delivery system
US20080115125A1 (en) 2006-11-13 2008-05-15 Cingular Wireless Ii, Llc Optimizing static dictionary usage for signal compression and for hypertext transfer protocol compression in a wireless network
US9164749B2 (en) 2008-08-29 2015-10-20 Red Hat, Inc. Differential software provisioning on virtual machines having different configurations
US9274919B2 (en) 2011-04-29 2016-03-01 Dynatrace Software Gmbh Transaction tracing mechanism of distributed heterogenous transactions having instrumented byte code with constant memory consumption and independent of instrumented method call depth
US9495180B2 (en) 2013-05-10 2016-11-15 Fireeye, Inc. Optimized resource allocation for virtual machines within a malware content detection system
US9942250B2 (en) 2014-08-06 2018-04-10 Norse Networks, Inc. Network appliance for dynamic protection from risky network activities
US11159599B2 (en) 2014-10-10 2021-10-26 Dynatrace Llc Method and system for real-time modeling of communication, virtualization and transaction execution related topological aspects of monitored software applications and hardware entities
US9967334B2 (en) 2015-03-02 2018-05-08 Dell Products Lp Computing device configuration and management using a secure decentralized transaction ledger
WO2017049220A1 (en) 2015-09-17 2017-03-23 Laundry 2.0, LLC System for commercial laundry services and facilities
US10437585B2 (en) * 2015-10-23 2019-10-08 Oracle International Corporation Managing highly scalable continuous delivery pipelines
US20170230285A1 (en) 2015-10-28 2017-08-10 Fractal Industries, Inc. Regulation based switching system for electronic message routing
US11130042B2 (en) 2016-02-02 2021-09-28 Bao Tran Smart device
EP3862947A1 (en) 2016-03-03 2021-08-11 NEC Laboratories Europe GmbH Method for managing data in a network of nodes
AU2017240796A1 (en) 2016-03-31 2018-10-25 Clause, Inc. System and method for creating and executing data-driven legal contracts
US10521775B2 (en) 2016-04-18 2019-12-31 R3 Ltd. Secure processing of electronic transactions by a decentralized, distributed ledger system
US20170345011A1 (en) 2016-05-26 2017-11-30 Hitfin, Inc. System and method executed on a blockchain network
US10447478B2 (en) * 2016-06-06 2019-10-15 Microsoft Technology Licensing, Llc Cryptographic applications for a blockchain system
US11829998B2 (en) 2016-06-07 2023-11-28 Cornell University Authenticated data feed for blockchains
US10445698B2 (en) 2016-06-30 2019-10-15 Clause, Inc. System and method for forming, storing, managing, and executing contracts
EP3485437B1 (en) 2016-07-18 2024-04-03 Royal Bank Of Canada Distributed ledger platform for vehicle records
US11153092B2 (en) 2016-08-30 2021-10-19 Commonwealth Scientific And Industrial Research Organisation Dynamic access control on blockchain
CA3037106A1 (en) 2016-09-19 2018-03-22 Financial & Risk Organisation Limited Systems and methods for interception of smart contracts
EP3542277A4 (en) 2016-11-19 2020-08-05 Costanz, Mario A. SYSTEM AND METHOD OF CONCILIATION OF INTERACTION OBJECTS IN A LARGE PUBLIC BOOK BLOCKCHAIN ENVIRONMENT
CN106598579B (zh) 2016-12-06 2020-12-25 北京果仁宝科技有限公司 区块链上集成动态类型编程语言方法和装置
CN106598549B (zh) * 2016-12-08 2019-02-01 天津米游科技有限公司 一种基于区块链的智能合约系统及实现方法
US11349666B2 (en) 2017-01-27 2022-05-31 Meta Platforms, Inc. Electronically signing and distributing identification data as a service that provides proof of identity, integrity, validity and origin of data for non-repudiation and ID validation methods
US10243731B2 (en) 2017-01-27 2019-03-26 Accenture Global Solutions Limited Hardware blockchain acceleration
EP3355225B1 (en) 2017-01-31 2022-07-27 Sony Group Corporation Apparatus and method for providing a ethereum virtual device
US20180365201A1 (en) 2017-06-14 2018-12-20 Clause, Inc. System and method for compound data-driven contracts and documentation
WO2019023286A1 (en) 2017-07-24 2019-01-31 Martino William SYSTEMS, METHODS AND APPARATUS BASED ON BLOCK CHAIN TO SECURE ACCESS TO INFORMATION STORES
CN107392619B (zh) 2017-07-31 2020-12-29 众安信息技术服务有限公司 智能合约处理方法及装置
US20190050831A1 (en) 2017-08-03 2019-02-14 Liquineq AG System and method for multi-tiered distributed network transactional database
US10552556B2 (en) 2017-08-03 2020-02-04 Liquineq AG System and method for performance testing of scalable distributed network transactional databases
US11146380B2 (en) 2017-08-03 2021-10-12 Parity Technologies Ltd. Methods and systems for a heterogeneous multi-chain framework
US20190066101A1 (en) 2017-08-22 2019-02-28 Sap Se Transaction Platform Providing Unified View on Multiple Heterogeneous Blockchains
CN109426949B (zh) 2017-08-29 2021-02-09 华为技术有限公司 一种跨链交易方法及装置
US10938567B2 (en) 2017-09-12 2021-03-02 Kadena Llc Parallel-chain architecture for blockchain systems
US20190102163A1 (en) 2017-10-04 2019-04-04 Dispatch Labs, LLC System and Method for a Blockchain-Supported Programmable Information Management and Data Distribution System
US20190108576A1 (en) 2017-10-11 2019-04-11 Capital One Services, Llc Blockchain systems and methods for procurement
US11568505B2 (en) 2017-10-18 2023-01-31 Docusign, Inc. System and method for a computing environment for verifiable execution of data-driven contracts
US20210174360A1 (en) 2017-11-06 2021-06-10 Velo Holdings Limited Blockchain system
US11182780B2 (en) 2017-11-13 2021-11-23 American Express Travel Related Services Company, Inc. Secured account provisioning and payments for NFC-enabled devices
CN107833060B (zh) * 2017-11-13 2020-12-25 中国银行股份有限公司 一种区块链中智能合约交易的验证方法以及系统
EP3718069B1 (en) 2017-11-30 2024-04-17 Visa International Service Association Blockchain system for confidential and anonymous smart contracts
WO2019113495A1 (en) 2017-12-08 2019-06-13 Solana Labs, Inc. Systems and methods for cryptographic provision of synchronized clocks in distributed systems
GB201720767D0 (en) 2017-12-13 2018-01-24 Barker Trevor Computer-implemented system and method
US11544708B2 (en) 2017-12-29 2023-01-03 Ebay Inc. User controlled storage and sharing of personal user information on a blockchain
CN108833460B (zh) 2018-04-10 2021-05-25 平安科技(深圳)有限公司 基于区块链的音乐发布方法、装置及终端设备
US10833865B2 (en) 2018-04-30 2020-11-10 Dell Products L.P. Blockchain-based method and system for immutable resource allocation in a cloud computing environment
CN108664650B (zh) * 2018-05-17 2020-05-22 百度在线网络技术(北京)有限公司 一种区块链网络的事务处理方法、装置、设备及存储介质
CN108765158B (zh) * 2018-05-31 2020-11-24 杭州溪塔科技有限公司 一种基于区块链的智能合约引擎系统及其合约执行方法
CN108830720B (zh) * 2018-06-21 2021-04-30 北京京东尚科信息技术有限公司 智能合约运行方法、装置、系统和计算机可读存储介质
US10896195B2 (en) 2018-07-29 2021-01-19 International Business Machines Corporation Automatic generation of smart contracts
US11182379B2 (en) * 2018-08-24 2021-11-23 Oracle International Corporation DAG based methods and systems of transaction processing in a distributed ledger
CN109493042A (zh) 2018-10-24 2019-03-19 南京邮电大学 一种拥有访问控制功能的智能合约可信存证方法和系统
EP3542494B1 (en) 2018-12-29 2021-02-17 Advanced New Technologies Co., Ltd. System and method for implementing native contract on blockchain
EP3612930A4 (en) 2019-03-26 2020-06-24 Alibaba Group Holding Limited SYSTEM AND METHOD FOR IMPLEMENTING VARIOUS TYPES OF BLOCKCHAIN CONTRACTS

Also Published As

Publication number Publication date
KR20200083932A (ko) 2020-07-09
JP6856749B2 (ja) 2021-04-14
WO2019072310A3 (en) 2019-10-24
JP2020509443A (ja) 2020-03-26
US11086847B2 (en) 2021-08-10
US20200311050A1 (en) 2020-10-01
PH12019501153A1 (en) 2019-12-11
CN110249307A (zh) 2019-09-17
EP3542494A2 (en) 2019-09-25
KR102237015B1 (ko) 2021-04-07
EP3542494B1 (en) 2021-02-17
WO2019072310A2 (en) 2019-04-18
PL3542494T3 (pl) 2021-08-23
CN110249307B (zh) 2022-05-31
EP3542494A4 (en) 2020-02-26

Similar Documents

Publication Publication Date Title
ES2864179T3 (es) Sistema y método para implementar un contrato nativo en una cadena de bloques
US11010184B2 (en) System and method for implementing different types of blockchain contracts
US10733152B2 (en) System and method for implementing native contract on blockchain
US10942756B2 (en) System and method for executing different types of blockchain contracts
TWI730654B (zh) 部署和執行智能合約的方法及裝置
US10713176B2 (en) System and method for data processing
US10445334B1 (en) Query transmission in type-limited interchange formats
KR101242479B1 (ko) 어플리케이션 배포 시스템 및 방법
US9390284B1 (en) Method for secure and private computer file