ES2880455T3 - Plataforma de función como servicio (FAAS) en redes de cadena - Google Patents

Plataforma de función como servicio (FAAS) en redes de cadena Download PDF

Info

Publication number
ES2880455T3
ES2880455T3 ES18865365T ES18865365T ES2880455T3 ES 2880455 T3 ES2880455 T3 ES 2880455T3 ES 18865365 T ES18865365 T ES 18865365T ES 18865365 T ES18865365 T ES 18865365T ES 2880455 T3 ES2880455 T3 ES 2880455T3
Authority
ES
Spain
Prior art keywords
function
blockchain
call
smart contract
version
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
ES18865365T
Other languages
English (en)
Inventor
Kailai Shao
Xuming Lu
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced New Technologies Co Ltd
Original Assignee
Advanced New Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced New Technologies Co Ltd filed Critical Advanced New Technologies Co Ltd
Application granted granted Critical
Publication of ES2880455T3 publication Critical patent/ES2880455T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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
    • 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/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/36Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
    • G06Q20/367Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
    • G06Q20/3678Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes e-cash details, e.g. blinded, divisible or detecting double spending
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • 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
    • 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/56Financial cryptography, e.g. electronic payment or e-cash

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Finance (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Signal Processing (AREA)
  • Telephonic Communication Services (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Retry When Errors Occur (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Technology Law (AREA)

Abstract

Un método implementado por computadora para proporcionar una plataforma de función como servicio (FaaS) dentro de una red de cadena de bloques, el método se ejecuta por uno o más procesadores, y que comprende: recibir, desde un contrato inteligente, y mediante una primera aplicación (312, 412) de función que contiene un primer controlador (314, 414) de función que se ejecuta dentro de la red de cadena de bloques, una primera llamada de función para ejecutar una primera función, la primera llamada de función que comprende datos para la ejecución de la primera función, en donde en la primera función se implementa mediante código (316, 318, 320, 416) en la primera aplicación (312, 412) de función, en donde la primera aplicación (312) de función contiene múltiples versiones de la primera función (316, 318, 320) y el primer controlador (314) de función encamina la primera llamada de función a una versión apropiada de la primera función (316, 318, 320), y en donde la aplicación primera función (312) se almacena en la cadena de bloques, el primera controlador (314) de función tiene una dirección única dentro de la red de cadena de bloques, y cada una de las versiones de la primera función tiene una dirección única respectiva dentro de la red de cadena de bloques; transmitir, mediante el primer controlador (314, 414) de función, los datos de la primera llamada (418) de función a un primer componente (416) de función, el primer componente de función ejecuta la primera función en base a los datos de la primera llamada de función; recibir (420), mediante el primer controlador (414) de función, un primer resultado (420) de función desde el primer componente (416) de función; y proporcionar (506), mediante el primer controlador (414) de función, el primer resultado (424) de función al contrato (406) inteligente.

Description

DESCRIPCIÓN
Plataforma de función como servicio (FAAS) en redes de cadena
ANTECEDENTES
Los sistemas de contabilidad distribuida (DLS), que también pueden denominarse redes de consenso y/o redes de cadena de bloques, permiten a las entidades participantes almacenar datos de forma segura e inmutable. Los DLS se denominan comúnmente redes de cadena de bloques sin hacer referencia a ningún caso de uso particular (por ejemplo, criptomonedas). Ejemplos de redes de cadena de bloques pueden incluir redes públicas de cadena de bloques, redes privadas de cadena de bloques y redes de consorcio de cadena de bloques. Una red de cadena de bloques pública está abierta para que todas las entidades utilicen el DLS y participen en el proceso de consenso. Se proporciona una red de cadena de bloques privada para una entidad en particular, que controla de forma centralizada los permisos de lectura y escritura. Se proporciona una red de cadena de bloques de consorcio para un grupo selecto de entidades, que controlan el proceso de consenso e incluye una capa de control de acceso.
Los contratos inteligentes se pueden ejecutar dentro de las redes de cadena de bloques para realizar una o más funciones. Un contrato inteligente se puede describir como una aplicación monolítica que incluye funciones codificadas. Como aplicación monolítica, se pueden requerir operaciones de desarrollo relativamente sólidas para respaldar el contrato inteligente (p. ej., codificación de cada una de las funciones, actualizaciones de funciones que resultan en actualizaciones de todo el contrato inteligente).
La página web, Documentación de Oraclize, disponible el 7 de noviembre de 2018, capturada en https://web.archive.org/web/20181107044842/https://docs.oraclize.it/, describe Oraclize, un servicio de oracle para contratos inteligentes y aplicaciones de cadena de bloques. En el espacio de cadena de bloques, un oracle es una parte que proporciona datos. Las aplicaciones de cadena de bloques, tal como las secuencias de comandos de Bitcoin y los contratos inteligentes, no pueden acceder ni obtener directamente los datos que necesitan. Oraclize obtiene esos datos y demuestra que los datos obtenidos desde la fuente de datos original son genuinos y no están modificados. Esto se logra acompañando los datos devueltos con un documento llamado prueba de autenticidad. Las pruebas de autenticidad pueden basarse en diferentes tecnologías, tal como máquinas virtuales auditables y entornos de ejecución confiables. Como resultado, los desarrolladores de aplicaciones de cadena de bloques y los usuarios de dichas aplicaciones no tienen que confiar en Oraclize, por lo que se mantiene el modelo de seguridad de cadena de bloques Los proveedores de datos no tienen que modificar sus servicios para que sean compatibles con los protocolos de cadena de bloques. Los contratos inteligentes pueden acceder directamente a los datos desde sitios web o API. El motor Oraclize se puede integrar con instancias públicas y privadas de diferentes protocolos de cadena de bloques.
Chen et al., FBaaS: Functional Blockchain as a Service, International Conference on Financial Cryptography and Data Security, 22 de junio de 2018, divulga un modelo de servicio que se basa en el modelo de función como servicio (FaaS), denominado FBaaS - cadena de bloques funcional como servicio, sobre una arquitectura sin servidor. En comparación con Blockchain as a Service (BaaS), FBaaS tiene una implementación más ligera de la lógica de negocio de nivel superior, lo que aporta una serie de ventajas. En primer lugar, podría mejorar la velocidad operativa de una cadena de bloques. En segundo lugar, los avances continuos en alta robustez y alta disponibilidad de una red de FaaS subyacente pueden adaptarse de manera natural a FBaaS debido a su arquitectura jerárquica. En tercer lugar, FaaS implementa un mayor nivel de abstracción de la lógica. El documento también divulga un método de abstracción en la realización de una lógica de negocio de las cadenas de bloques de consorcio que puede mejorar aún más el rendimiento.
La publicación de patente de los Estados Unidos US 2018/0331835 A1 a Jackson para "Trusted agent blockchain oracle", publicada el 15 de noviembre de 2018, divulga un oracle de cadena de bloques confiable que observa eventos extrínsecos a una cadena de bloques para proporcionar una indicación del evento extrínseco adecuado para el envío a una aplicación de cadena de bloques descentralizada en una cadena de bloques. El oracle firma las indicaciones de los eventos extrínsecos para producir un registro de cadena de bloques firmado. El oracle publica una fuente de los registros de cadena de bloques firmados o distribuye los registros de cadena de bloques firmados a los usuarios potenciales de la aplicación descentralizada a un bajo costo computacional. Los usuarios que deseen enviar un registro de cadena de bloques firmado a la aplicación descentralizada pueden formar y difundir sus propias transacciones, incluido el registro de cadena de bloques firmado, y asumir los costos de confirmar la transacción en la cadena de bloques. El oracle de cadena de bloques confiable se libera de los costos de confirmar eventos extrínsecos en línea y puede proporcionar una cantidad mucho mayor de indicaciones de eventos extrínsecos de lo que sería posible de otra manera.
RESUMEN
Las implementaciones de la presente memoria descriptiva incluyen métodos implementados por computadora para aprovisionar aplicaciones en redes de cadena de bloques. Más particularmente, las implementaciones de la presente memoria descriptiva están dirigidas a una plataforma de function-as-a-service (FaaS) para proporcionar funciones a aplicaciones que se ejecutan en redes de cadena de bloques.
En algunas implementaciones, las acciones incluyen recibir, desde un contrato inteligente, y mediante un primer controlador de función que se ejecuta dentro de la red de cadena de bloques, una primera llamada de función para ejecutar una primera función, la primera llamada de función incluye datos para la ejecución de la primera función, transmitir, por el primer controlador de función, los datos de la primera llamada de función a un primer componente de función, el primer componente de función ejecuta la primera función en base a los datos de la primera llamada de función, recibir, por el primer controlador de función, un primer resultado de función desde el primer componente de función, y proporcionar, mediante el primer controlador de función, el primer resultado de función para el contrato inteligente. Otras implementaciones incluyen sistemas, aparatos y programas informáticos correspondientes, configurados para realizar las acciones de los métodos, codificados en dispositivos de almacenamiento informáticos.
Cada una de estas y otras implementaciones puede incluir opcionalmente una o más de las siguientes características: la primera llamada de función incluye además una dirección de la primera función y un identificador de versión de la primera función; el identificador de versión es nulo, lo que indica que se va a ejecutar una última versión de la primera función; las acciones incluyen además actualizar, mediante el primer controlador de función, las estadísticas asociadas con una versión de la primera función que se ejecutó en respuesta a la primera llamada de función; las estadísticas indican el número de veces que se ha ejecutado cada una de las versiones de una primera función; las acciones incluyen además: recibir, desde un contrato inteligente, y por un segundo controlador de función que se ejecuta dentro de la red de cadena de bloques, una segunda llamada de función para ejecutar una segunda función, la segunda llamada de función incluye datos para la ejecución de la segunda función, en donde la segunda función es diferente de la primera función, y en donde el segundo controlador de función es diferente del primer controlador de función, transmitir, por el segundo controlador de función, los datos de la segunda llamada de función a un segundo componente de función, el segundo componente de función ejecuta la segunda función en base a los datos de la segunda llamada de función, en donde el segundo componente de función es diferente del primer componente de función, recibir, por el segundo controlador de función, un segundo resultado de función del segundo componente de función, y proporcionar, por el segundo controlador de función, el resultado de la segunda función para el contrato inteligente; la primera función y la segunda función se proporcionan por diferentes proveedores; y el contrato inteligente ejecuta una transacción en base, al menos parcialmente, a los resultados de la función, registrándose la transacción dentro de una cadena de bloques de la red de cadenas de bloques.
La presente memoria descriptiva también proporciona uno o más medios de almacenamiento legibles por computadora no transitorios acoplados a uno o más procesadores y que tienen instrucciones almacenadas en los mismos que, cuando son ejecutadas por el uno o más procesadores, hacen que el uno o más procesadores realicen operaciones de acuerdo con implementaciones de los métodos proporcionados en el presente documento.
La presente memoria descriptiva proporciona además un sistema para implementar los métodos proporcionados en el presente documento. El sistema incluye uno o más procesadores, y un medio de almacenamiento legible por computadora acoplado al uno o más procesadores que tiene instrucciones almacenadas en el mismo que, cuando se ejecutan por el uno o más procesadores, hacen que el uno o más procesadores realicen operaciones de acuerdo con implementaciones de los métodos proporcionados en el presente documento.
Se aprecia que los métodos de acuerdo con la presente memoria descriptiva pueden incluir cualquier combinación de los aspectos y características descritos en el presente documento. Es decir, los métodos de acuerdo con la presente memoria descriptiva no se limitan a las combinaciones de aspectos y características descritos específicamente en el presente documento, sino que también incluyen cualquier combinación de los aspectos y características proporcionados.
Los detalles de una o más implementaciones de la presente memoria descriptiva se establecen en los dibujos adjuntos y la descripción a continuación. Otras características y ventajas de la presente memoria descriptiva resultarán evidentes a partir de la descripción y los dibujos, y de las reivindicaciones.
DESCRIPCION DE LOS DIBUJOS
La FIG. 1 representa un entorno de ejemplo que se puede utilizar para ejecutar implementaciones de la presente memoria descriptiva.
La FIG. 2 representa un ejemplo de arquitectura conceptual de acuerdo con implementaciones de la presente memoria descriptiva.
La FIG. 3 representa un ejemplo de arquitectura conceptual para una plataforma de función como servicio (FaaS) de acuerdo con implementaciones de la presente memoria descriptiva.
La FIG. 4 representa un diagrama de carriles que muestra la comunicación entre componentes de acuerdo con implementaciones de la presente memoria descriptiva.
La FIG. 5 representa un proceso de ejemplo que se puede ejecutar de acuerdo con implementaciones de la presente memoria descriptiva.
Los símbolos de referencia similares en los diversos dibujos indican elementos similares.
DESCRIPCIÓN DETALLADA
Las implementaciones de la presente memoria descriptiva incluyen métodos implementados por computadora para aprovisionar aplicaciones en redes de cadena de bloques. Más particularmente, las implementaciones de la presente memoria descriptiva están dirigidas a una plataforma de función como servicio (FaaS) para proporcionar funciones a aplicaciones que se ejecutan en redes de cadena de bloques. En algunas implementaciones, las acciones incluyen recibir, desde un contrato inteligente, y mediante un controlador de función que se ejecuta dentro de la red de cadena de bloques, una llamada de función para ejecutar una función, la llamada de función incluye datos para la ejecución de la función, transmitir, por el controlador de función, los datos de la llamada de función a un componente de función, el componente de función que ejecuta la función en base a los datos de la llamada de función, recibir, por el controlador de función, un resultado de función desde el componente de función, y proporcionar, mediante el controlador de función, el resultado de función al contrato inteligente.
Para proporcionar un contexto adicional para las implementaciones de la presente memoria descriptiva, y como se introdujo anteriormente, los sistemas de contabilidad distribuida (DLS), que también pueden denominarse redes de consenso (p. ej., compuestas por nodos de igual a igual) y redes de cadena de bloques, permiten que las entidades participantes realicen transacciones de forma segura e inmutable, y almacenen datos. Aunque el término cadena de bloques se asocia generalmente con la red de criptomonedas de Bitcoin, cadena de bloques se utilizas en el presente documento para referirse generalmente a un DLS sin referencia a un caso de uso particular. Como se ha introducido anteriormente, una red de cadena de bloques puede proporcionarse como una red pública de cadena de bloques, una red privada de cadena de bloques o una red de consorcio de cadena de bloques.
En una red pública de cadena de bloques, el proceso de consenso es controlado por nodos de la red de consenso. Por ejemplo, cientos, miles, incluso millones de entidades pueden cooperar en una red de cadena de bloques pública, cada una de las cuales opera al menos un nodo en la red de cadena de bloques pública. En consecuencia, la red de cadena de bloques pública puede considerarse una red pública con respecto a las entidades participantes. En algunos ejemplos, la mayoría de las entidades (nodos) deben firmar cada uno de los bloques para que el bloque sea válido y se añada a la cadena de bloques (libro mayor distribuido) de la red de cadena de bloques. Un ejemplo de red de cadena de bloques pública incluye la red Bitcoin, que es una red de pago de igual a igual. La red Bitcoin utiliza un libro mayor distribuido, denominado cadena de bloques. Sin embargo, como se ha indicado anteriormente, el término cadena de bloques se utiliza para hacer referencia, en general, a libros mayores distribuidos, sin referencia particular a la red Bitcoin.
En general, una red pública de cadena de bloques admite transacciones públicas. Una transacción pública se comparte con todos los nodos de la red pública de cadena de bloques y se almacena en una cadena de bloques global. Una cadena de bloques global es una cadena de bloques que se repite en todos los nodos. Es decir, todos los nodos están en perfecto estado de consenso con respecto a la cadena de bloques global. Para lograr un consenso (p. ej., un acuerdo para la adición de un bloque a una cadena de bloques), se implementa un protocolo de consenso dentro de la red de cadena de bloques pública. Un ejemplo de protocolo de consenso incluye, sin limitación, prueba de trabajo (POW) implementado en la red Bitcoin.
En general, una red privada de cadena de bloques se proporciona a una entidad en particular, que controla de manera centralizada los permisos de lectura y escritura. La entidad controla qué nodos pueden participar en la red de cadena de bloques. En consecuencia, las redes de cadena de bloques privadas se conocen generalmente como redes autorizadas que imponen restricciones sobre quién puede participar en la red y sobre su nivel de participación (p. ej., solo en ciertas transacciones). Se pueden utilizar diversos tipos de mecanismos de control de acceso (p. ej., los participantes existentes votan sobre la adición de nuevas entidades, una autoridad reguladora puede controlar la admisión).
En general, una red de consorcio de cadena de bloques es privada entre las entidades participantes. En una red de consorcio de cadena de bloques, el proceso de consenso es controlado por un conjunto autorizado de nodos, donde uno o más nodos se hacen funcionar por una entidad respectiva (por ejemplo, una institución financiera, una compañía de seguros). Por ejemplo, un consorcio de diez (10) entidades (por ejemplo, instituciones financieras, compañías de seguros) puede hacer funcionar una red de consorcio de cadena de bloques, cada una de las cuales hace funcionar al menos un nodo de la red de consorcio de cadena de bloques. En consecuencia, la red de consorcio de cadena de bloques puede considerarse una red privada con respecto a las entidades participantes. En algunos ejemplos, cada una de las entidades (nodo) debe firmar cada uno de los bloques para que el bloque sea válido y se añada a la cadena de bloques. En algunos ejemplos, al menos un subconjunto de entidades (nodos) (p. ej., al menos 7 entidades) debe firmar cada uno de los bloques para que el bloque sea válido y se añada a la cadena de bloques.
Las implementaciones de la presente memoria descriptiva se describen con más detalle en el presente documento con referencia a una red de cadena de bloques pública, que es pública entre las entidades participantes. Sin embargo, se contempla que las implementaciones de la presente memoria descriptiva se puedan realizar en cualquier tipo apropiado de red de cadena de bloques. Aunque las técnicas descritas en la presente memoria descriptiva se indican como relevantes para redes de cadena de bloques públicas, las técnicas también se pueden utilizar, con o sin cambios, en otros tipos de redes de cadena de bloques, incluidas las redes de cadena de bloques privadas y las redes de cadena de bloques de consorcio.
Las implementaciones de la presente memoria descriptiva se describen con más detalle en el presente documento en vista del contexto anterior. Más particularmente, y como se introdujo anteriormente, las implementaciones de la presente memoria descriptiva están dirigidas a una plataforma de FaaS para proporcionar funciones a aplicaciones que se ejecutan en redes de cadena de bloques. De esta manera, los desarrolladores pueden desarrollar aplicaciones (p. ej., contratos inteligentes) que son relativamente ligeras (p. ej., en términos de codificación) y pueden llamar a una o más funciones a través de la plataforma de FaaS de la presente memoria descriptiva.
Para proporcionar un contexto adicional para las implementaciones de la presente memoria descriptiva, en las redes de cadena de bloques, las aplicaciones se pueden desarrollar, probar y desplegar para su ejecución dentro de la red de cadena de bloques. Una aplicación de ejemplo puede incluir, sin limitación, un contrato inteligente. Un contrato inteligente puede describirse como representaciones digitales de contratos legales del mundo real que tienen términos contractuales que afectan a diversas partes. Un contrato inteligente se implementa, almacena, actualiza (según sea necesario) y se ejecuta dentro, en el contexto de ejemplo, de una red de cadena de bloques de consorcio. Las partes contratantes asociadas con el contrato inteligente (p. ej., compradores y vendedores) se representan como nodos en la red de cadena de bloques de consorcio.
En algunos ejemplos, un contrato inteligente puede almacenar datos, que se pueden utilizar para registrar información, hechos, asociaciones, saldos y cualquier otra información necesaria para implementar la lógica para la ejecución del contrato. Los contratos inteligentes se pueden describir como un programa ejecutable por computadora que consta de funciones, donde se puede crear una instancia del contrato inteligente y se pueden invocar funciones para la ejecución de la lógica en el mismo.
En términos técnicos, los contratos inteligentes se pueden implementar en base a objetos y clases orientadas a objetos. Por ejemplo, los términos y componentes del contrato inteligente se pueden representar como objetos que son manejados por aplicaciones que implementan los contratos inteligentes. Un contrato inteligente (o un objeto en el contrato inteligente) puede llamar a otro contrato inteligente (o un objeto en el mismo contrato inteligente) al igual que otros objetos orientados a objetos. Las llamadas que realiza un objeto pueden ser, por ejemplo, una llamada para crear, actualizar, eliminar, propagar o comunicarse con objetos de otra clase. Las llamadas entre objetos se pueden implementar como funciones, métodos, interfaces de programación de aplicaciones (API) u otros mecanismos de llamada. Por ejemplo, un primer objeto puede llamar a una función para crear un segundo objeto.
Se puede utilizar un entorno de desarrollo integrado (IDE) para desarrollar, probar y desplegar aplicaciones, tales como contratos inteligentes en redes de cadena de bloques. Un IDE de ejemplo incluye el IDE Remix, proporcionado por la Fundación Ethereum de Zug, Suiza, para crear contratos inteligentes en Solidity.
La FIG. 1 representa un entorno 100 de ejemplo que puede utilizarse para ejecutar implementaciones de la presente memoria descriptiva. En algunos ejemplos, el entorno 100 de ejemplo permite a las entidades participar en una red 102 de cadena de bloques privada. El entorno 100 de ejemplo incluye los sistemas 106, 108 informáticos y una red 110. En algunos ejemplos, la red 110 incluye una red de área local (LAN), una red de área amplia (WAN), Internet o una combinación de las mismas, y conecta sitios web, dispositivos de usuario (p. ej., dispositivos informáticos) y sistemas de servidor. En algunos ejemplos, se puede acceder a la red 110 a través de un enlace de comunicaciones cableado y/o inalámbrico.
En el ejemplo representado, los sistemas 106, 108 informáticos pueden incluir cada uno cualquier sistema informático apropiado que permita la participación como un nodo en la red 102 de cadena de bloques privada. Los dispositivos informáticos de ejemplo incluyen, sin limitación, un servidor, una computadora de escritorio, una computadora portátil, una computadora tableta y un teléfono inteligente. En algunos ejemplos, los sistemas 106, 108 informáticos alojan uno o más servicios implementados por computadora para interactuar con la red 102 de cadena de bloques privada. Por ejemplo, el sistema 106 informático puede alojar servicios implementados por computadora de una primera entidad (p. ej., el usuario A), tal como un sistema de gestión de transacciones que utiliza la primera entidad para gestionar sus transacciones con una o más entidades (p. ej., otros usuarios). El sistema 108 informático puede alojar servicios implementados por computadora de una segunda entidad (p. ej., el usuario B), tal como un sistema de gestión de transacciones que la segunda entidad utiliza para gestionar sus transacciones con una o más entidades (p. ej., otros usuarios) distintas. En el ejemplo de la FIG. 1, la red 102 de cadena de bloques privada se representa como una red de nodos de igual a igual, y los sistemas 106, 108 informáticos proporcionan nodos de la primera entidad y la segunda entidad, respectivamente, que participan en la red 102 de cadena de bloques privada.
La FIG. 2 representa una arquitectura 200 conceptual de ejemplo de acuerdo con implementaciones de la presente memoria descriptiva. La arquitectura 200 conceptual de ejemplo incluye una capa 202 de entidad, una capa 204 de servicios alojados y una capa 206 de red de cadena de bloques. En el ejemplo representado, la capa de entidad 202 incluye tres entidades, Entidad_1 (E1), Entidad_2 (E2) y Entidad_3 (E3), teniendo cada entidad un sistema de gestión de transacciones respectivo 208.
En el ejemplo representado, la capa de servicios alojados 204 incluye interfaces 210 para cada sistema de gestión de transacciones 208. En algunos ejemplos, un respectivo sistema 208 de gestión de transacciones se comunica con una respectiva interfaz 210 a través de una red (p. ej., la red 110 de la FIG 1)). En algunos ejemplos, cada una de las interfaces 210 proporciona una conexión de comunicación entre un respectivo sistema 208 de gestión de transacciones y la capa 206 de red de cadena de bloques. Más particularmente, la interfaz 210 se comunica con una red 212 de cadena de bloques de la capa 206 de red de cadena de bloques. En algunos ejemplos, la comunicación entre una interfaz 210 y la capa 206 de red de cadena de bloques se realiza utilizando llamadas a procedimiento remoto (RPC). En algunos ejemplos, las interfaces 210 "alojan" nodos de red de cadena de bloques para los sistemas de gestión de transacciones respectivos 208. Por ejemplo, las interfaces 210 proporcionan la interfaz de programación de aplicaciones (API) para acceder a la red 212 de cadena de bloques.
Como se describe en el presente documento, la red 212 de cadena de bloques se proporciona como una red entre pares que incluye una pluralidad de nodos 214 que registran de forma inmutable información en una cadena 216 de bloques. Aunque se representa esquemáticamente una única cadena 216 de bloques, se proporcionan múltiples copias de la cadena 216 de bloques, que se mantienen en la red 212 de cadena de bloques. Por ejemplo, cada nodo 214 almacena una copia de la cadena de bloques. En algunas implementaciones, la cadena 216 de bloques almacena información asociada con las transacciones que se realizan entre dos o más entidades que participan en la red de cadena de bloques privada.
La FIG. 3 representa una arquitectura conceptual de ejemplo para una plataforma 300 de FaaS de acuerdo con implementaciones de la presente memoria descriptiva. Como se describe con más detalle en el presente documento, la plataforma 300 de FaaS se utiliza para proporcionar funciones que soportan la ejecución de contratos inteligentes, tales como un contrato 302 inteligente de la FIG. 3. En algunos ejemplos, el contrato 302 inteligente puede ejecutar transacciones que se registran en los bloques 304 de una cadena de bloques.
En el ejemplo de la FIG. 3, la plataforma 300 de FaaS incluye un iniciador 306 de transacción que puede ser, por ejemplo, un nodo que inicia una acción que solicita la ejecución del contrato 302 inteligente. Por ejemplo, el iniciador 306 de transacción puede enviar una solicitud 308 para instigar la ejecución del contrato 302 inteligente. En algunos ejemplos, el contrato 302 inteligente recibe la solicitud y ejecuta la lógica programada en el contrato 302 inteligente. De acuerdo con implementaciones de la presente memoria descriptiva, la lógica puede incluir una llamada a una o más aplicaciones 312 de función de la plataforma 300 de FaaS.
En algunos ejemplos, cada una de las aplicaciones 312 de función se proporciona por un proveedor 310 de funciones respectivo. Por ejemplo, un proveedor 310 de funciones puede incluir una entidad (p. ej., desarrollador) que desarrolla una aplicación de función para recibir entrada, ejecutar una función y proporcionar salida. En algunos ejemplos, cada una de las aplicaciones 312 de función incluye un controlador 314 de función y una o más funciones 316, 318, 320 (código de función). El proveedor 310 de funciones puede proporcionar una versión inicial de una función (p. ej., función 316) y puede actualizar la función para proporcionar versiones posteriores (p. ej., funciones 318, 320).
En algunas implementaciones, el contrato 302 inteligente se ejecuta hasta un punto en el que llama a una función. El contrato 302 inteligente envía una llamada de función a una aplicación 312 de función respectiva, que incluye la entrada a ser procesada por la aplicación 312 de función. La llamada de función se recibe por el controlador 314 de función respectivo. El controlador 314 de función encamina la entrada a una versión apropiada de la función 316, 318, 320. La función 316, 318, 320 que recibe la entrada procesa la entrada para proporcionar la salida, que se envía de vuelta al contrato 302 inteligente.
En algunas implementaciones, las aplicaciones de función proporcionadas por la plataforma 300 de FaaS se almacenan en la cadena de bloques y se registran con la plataforma 300 de FaaS. En algunos ejemplos, el registro expone información de las funciones a los usuarios (p. ej., desarrolladores de contratos inteligentes). La información de ejemplo puede incluir, sin limitación, un identificador del proveedor 310, una descripción de la función, versiones de la función y estadísticas de la función (p. ej., un número de veces que se ha llamado a cada una de las versiones). Los usuarios pueden utilizar la información, por ejemplo, como una indicación de un nivel de confianza asociado con cada una de las funciones. Por ejemplo, un usuario que desarrolla un contrato inteligente puede revisar el registro para identificar una función que se necesita y puede programar el contrato inteligente para llamar a la función.
Lo siguiente es un ejemplo no limitativo para ilustrar el diseño y uso de la plataforma de FaaS de acuerdo con implementaciones de la presente memoria descriptiva. Uno o más proveedores de funciones, también denominados proveedores de FaaS (p. ej., los proveedores 310 de funciones de la FIG. 3), proporcionan una o más funciones ejecutables por computadora. Por ejemplo, un proveedor de funciones puede desarrollar un código ejecutable por computadora para ejecutar una función, la función recibe la entrada, procesa la entrada y proporciona la salida. Una función de ejemplo puede incluir, sin limitación, una función de suma de verificación Rivest-Shami-Adleman (RSA), que recibe, como entrada, un mensaje de longitud arbitraria y produce una suma de verificación como salida (p. ej., una suma de verificación de 128 bits (16 octetos)). En algunos ejemplos, la función es una función pura. Es decir, la función no tiene información de estado, llamadas repetibles y/o llamadas anidadas.
En algunas implementaciones, se proporciona un controlador de función (también denominado controlador de FaaS) para la función (p. ej., el controlador 314 de función de la FIG. 3). En algunos ejemplos, el controlador de función y la función forman juntos una aplicación de función, también denominada aplicación de FaaS (p. ej., la aplicación 312 de función de la FIG. 3). En algunos ejemplos, el controlador de función maneja estadísticas y almacenamiento para versiones de la función, así como también información de llamada. La Tabla 1, a continuación, muestra información de ejemplo almacenada por un controlador de función:
T l 1: Inf rm i n E m l
Figure imgf000007_0001
En algunas implementaciones, cuando una función está lista para su uso en producción, el proveedor de la función envía la función (como código de función ejecutable por computadora) a la red de cadena de bloques, y al código de la función se le asigna una dirección única dentro de la red de cadena de bloques (p. ej., 23d61f4a88f90be1290c0eeab344992e1 a2e8f6d). En algunos ejemplos, el controlador de funciones también se envía a la red de cadena de bloques y se le asigna su propia dirección única dentro de la red de cadena de bloques. En algunos ejemplos, cuando una función se envía por primera vez a la red de cadena de bloques, el valor de la última versión (p. ej., ultimaVersion) se establece en un valor predeterminado (p. ej., 1.0.0). En algunos ejemplos, la función se registra en el mapa de versiones en base a la dirección y al valor de versión (p. ej., 23d61f4a88f90be1290c0 eeab344992ela2e8f6d, 1.0.0) y las estadísticas de la función están vacías.
En algunas implementaciones, se pueden crear uno o más contratos inteligentes (p. ej., el contrato 302 inteligente) que llaman a una o más funciones de la plataforma de FaaS. En algunos ejemplos, un usuario que crea un contrato inteligente puede ver una biblioteca de funciones disponibles con información de función relevante (p. ej., descripción, dirección, versión, estadísticas) y puede programar el contrato inteligente para llamar a una o más funciones. Por ejemplo, el contrato inteligente puede incluir una lógica que llame a la función de suma de verificación RSA de ejemplo presentada anteriormente. En algunos ejemplos, el contrato inteligente puede incluir un identificador de versión que indique una versión (p. ej., 1.0.0) de la función que se va a llamar. En algunos ejemplos, el identificador de versión puede estar vacío (o nulo), lo que indica que se debe llamar a la última versión de la función. En algunas implementaciones, una vez que el contrato inteligente se completa y está listo para su uso, el contrato inteligente se envía a la red de cadena de bloques y al contrato inteligente se le asigna una dirección única dentro de la red de cadena de bloques (p. ej., 39a1509440f8c549dfd6e 995def14b1ce3c98e5d).
En algunas implementaciones, para evitar que el impacto de una eventual mejora (actualización) del código de función afecte la lógica de ejecución del contrato inteligente, se actualiza el mapa de versiones (mapaVersiones) del controlador de función. Continuando con el ejemplo no limitante anterior, el mapa de versiones de la aplicación de función para la función de suma de verificación RSA se actualiza a: { "39a1509440f8c549dfd6e995def14b1ce3c98e5d" : "23d61f4a88f90be1290c0eeab344992e1a2e8f6d, 1.0.0"} Esto indica que el contrato inteligente de ejemplo utiliza la primera versión de la función de suma de verificación RSA de ejemplo. Es decir, la primera versión de la función debe utilizarse siempre cuando el contrato inteligente en particular llama a la función.
La FIG. 4 representa un diagrama 400 de carriles que muestra la comunicación entre componentes de acuerdo con implementaciones de la presente memoria descriptiva. De acuerdo con las implementaciones de la presente memoria descriptiva, se inicia una transacción que utiliza el contrato inteligente (402). Por ejemplo, un nodo en la red de cadena de bloques (p. ej., automáticamente, o solicitado por un usuario que actúa como iniciador 404 de transacción) puede iniciar una transacción utilizando el contrato inteligente (p. ej., contrato 406 inteligente). El contrato inteligente puede identificar (408) las funciones que se necesitan para completar la transacción. En algunos ejemplos, durante la ejecución de la lógica del contrato inteligente, se pueden realizar una o más llamadas de función (410) a una o más aplicaciones 412 de FaaS. Cada una de las aplicaciones 412 de FaaS incluye un controlador 414 de FaaS y un código 416 de FaaS. Una aplicación 412 de FaaS puede existir para cada uno de los proveedores.
Continuando con la referencia al ejemplo anterior, el contrato inteligente puede transmitir una llamada 410 de función para un valor de suma de verificación RSA. En algunos ejemplos, el controlador 414 de función recibe la llamada de función para que la ejecute el código 416 de FaaS. En algunos ejemplos, la llamada de función incluye una entrada de función y una variable de versión, que indica una versión de la función que se va a ejecutar. En algunos ejemplos, la llamada de función no especifica la versión que se va a ejecutar (p. ej., el valor de la versión es nulo), en cuyo caso se utiliza la última versión de la función.
El controlador de función procesa la entrada (p. ej., un mensaje) para proporcionar una salida (p. ej., un valor de suma de verificación). Se realiza una solicitud 418 de función del código 416 de FaaS. Como se indicó anteriormente, en una respuesta 420 de función, se ejecuta una versión específica de la función o las últimas versiones de la función. Además, el valor de recuento del mapa de estadísticas de llamadas correspondiente a la versión ejecutada de la función se actualiza 422 (p. ej., incrementa). Continuando con el ejemplo anterior, después de ser llamado el primero, el contenido de las estadísticas para la función de suma de verificación RSA de ejemplo se puede proporcionar como: { "23d61f4a88f90be1290c0eeab344992ela2e8f6d,1,0.0": 1 }
Se proporciona un resultado 424 de función al contrato inteligente, que luego puede completar (426) la transacción. La transacción puede registrarse (428) por la cadena de bloques (p. ej., la cadena 430 de bloques). Se puede enviar una confirmación 432 al iniciador 404 de transacción.
La secuencia de los pasos 410-424 se puede repetir para cada una de las funciones llamada por el contrato 406 inteligente. Por ejemplo, el contrato 406 inteligente puede llamar a dos funciones, de dos proveedores de FaaS diferentes, y recibir resultados de función de cada uno, que el contrato 406 inteligente utiliza para completar la transacción.
En algunas implementaciones, el proveedor de función puede actualizar una función proporcionada previamente. Por ejemplo, el proveedor de función puede codificar de nuevo al menos una parte de la función para mejorar la eficiencia de ejecución (p. ej., más rápida, menos recursos computacionales). En consecuencia, se puede proporcionar una versión posterior de la función. Continuando con el ejemplo anterior, se puede proporcionar una segunda versión de la función de suma de verificación RSA y enviarla a la red de cadena de bloques. A la segunda versión de la función se le asigna una dirección única dentro de la red de cadena de bloques (p. ej., 2aae6a1150787a834382d0202 ef1e89e3bc89d4d). El valor de la última versión (ultimaVersion) dentro del controlador de función se actualiza para incluir la dirección de la función actualizada y un identificador de versión (p. ej., 2aae6a1150787a834382d0202ef1e89e3bc89d4d.2.0.0).
Se inicia otra transacción (segunda transacción) utilizando el contrato inteligente. Por ejemplo, y siguiendo con referencia al ejemplo anterior, el contrato inteligente puede transmitir una llamada de función para un valor de suma de verificación RSA. En algunos ejemplos, el controlador de función recibe la llamada de función. En algunos ejemplos, la llamada de función incluye una entrada de función y una variable de versión, que indica una versión de la función que se va a ejecutar.
En algunas implementaciones, el controlador de función reconoce que el mismo contrato inteligente (p. ej., 39a1509440f8c549dfd6e995def14b1ce3c98e5d) ha emitido la llamada de función. En consecuencia, aunque hay disponible otra versión (p. ej., 2.0.0) de la función, se utiliza la última versión (p. ej., 1.0.0) utilizada de la función. La función procesa la entrada (p. ej., un mensaje) para proporcionar una salida (p. ej., un valor de suma de verificación), y se incrementa el valor de recuento del mapa de estadísticas de llamadas correspondiente a la versión ejecutada de la función. Continuando con el ejemplo anterior, después de ser llamada por segunda vez, el contenido de estadísticas para la función de suma de verificación RSA de ejemplo se puede proporcionar como: { 23d61f4a88f90be1290c0eeab344992e1a2e8f6d, 1.0.0": 2 }
En algunas implementaciones, se puede determinar que el contrato inteligente puede utilizar otras versiones de una función. Por ejemplo, el usuario que originó el contrato inteligente y había indicado que se iba a utilizar una versión (p. ej., 1.0.0) en particular, puede determinar que una versión (p. ej., 2.0.0) posterior del contrato inteligente es satisfactoria. En consecuencia, el usuario puede actualizar el identificador de versión dentro del mapa de versiones (p. ej., especificar una versión diferente o establecer el identificador de versión en nulo). En un ejemplo no limitativo, el identificador de versión se establece en nulo. De esta manera, la próxima vez que el contrato inteligente realice una llamada de función, se utilizará la última versión de la función.
Se inicia otra transacción (tercera transacción) utilizando el contrato inteligente. Por ejemplo, y siguiendo con referencia al ejemplo anterior, el contrato inteligente puede transmitir una llamada de función para un valor de suma de verificación RSA. En algunos ejemplos, el controlador de función recibe la llamada de función. En algunos ejemplos, la llamada de función incluye una entrada de función y una variable de versión, que indica una versión de la función que se va a ejecutar.
En algunas implementaciones, el controlador de función reconoce que el mismo contrato inteligente (p. ej., 39a1509440f8c549dfd6e995def14b1ce3c98e5d) ha emitido la llamada de función, pero que el identificador de versión es nulo. En consecuencia, aunque la primera versión (p. ej., 1.0.0) de la función se había utilizado anteriormente, se utiliza la última versión (p. ej., 2.0.0) utilizada de la función. La función procesa la entrada (p. ej., un mensaje) para proporcionar una salida (p. ej., un valor de suma de verificación), y se incrementa el valor de recuento del mapa de estadísticas de llamadas correspondiente a la versión ejecutada de la función. Continuando con el ejemplo anterior, el contenido de las estadísticas para la función de suma de verificación RSA de ejemplo se puede proporcionar como: { 23d61f4a88f90be1290c0eeab344992e1a2e8f6d, 1.0.0": 2 "2aae6a1150787a834382d0202ef1e89e3bc89d4d.2.0.0" : 1 }
La FIG. 5 representa un proceso 500 de ejemplo que se puede ejecutar de acuerdo con implementaciones de la presente memoria descriptiva. En algunas implementaciones, el proceso 500 de ejemplo puede realizarse utilizando uno o más programas ejecutables por computadora ejecutados utilizando uno o más dispositivos informáticos.
En 502, se inicia una transacción. Por ejemplo, la transacción puede utilizar un contrato inteligente que es parte de una red de cadena de bloques. La transacción puede iniciarse automáticamente o un usuario puede solicitar la transacción. La transacción puede ser, por ejemplo, una transacción que un usuario está utilizando para generar un número aleatorio para utilizar en el contrato inteligente.
En 504, el contrato inteligente llama a una función. Como ejemplo, se puede realizar la llamada 410 de función, tal como para llamar a una función generadora de números aleatorios proporcionada por la plataforma de FaaS. En algunas implementaciones, la llamada de función puede incluir además una dirección de la función y un identificador de versión de la función. Por ejemplo, el contrato 406 inteligente puede incluir, en la llamada 410 de función, la dirección dentro de la cadena de bloques que está asociada con la función y un número de versión que identifica una versión específica de la función a ser llamada.
En 506, el contrato inteligente recibe el o los resultados. Por ejemplo, la aplicación 412 de FaaS puede proporcionar el resultado 424 de función, tal como un número aleatorio determinado por la función de números aleatorios. En 508, el contrato inteligente completa la transacción en base al o a los resultados. Como ejemplo, después de recibir el número aleatorio, el contrato 406 inteligente puede completar la operación de número aleatorio que solicitó el usuario. En 510, se escribe una transacción en la cadena de bloques. Por ejemplo, se puede registrar la transacción 428, actualizando estadísticas que indican que la función de número aleatorio se ha utilizado en otro momento.
Las características descritas pueden implementarse en circuitería electrónica digital, o en hardware, firmware, software o en combinaciones de ellos. El aparato puede implementarse en un producto de programa informático incorporado de forma tangible en un soporte de información (por ejemplo, en un dispositivo de almacenamiento legible por máquina) para su ejecución mediante un procesador programable, y las etapas de procedimiento pueden ser realizadas por un procesador programable que ejecute un programa de instrucciones para llevar a cabo funciones de las implementaciones descritas operando en datos de entrada y generando una salida. Las características descritas pueden implementarse de forma ventajosa en uno o más programas informáticos que pueden ejecutarse en un sistema programable que incluye al menos un procesador programable acoplado para recibir datos e instrucciones desde, y transmitir datos e instrucciones a, un sistema de almacenamiento de datos, al menos un dispositivo de entrada y al menos un dispositivo de salida. Un programa informático es un conjunto de instrucciones que pueden ser utilizadas, directa o indirectamente, en un ordenador para realizar una determinada actividad o conseguir un determinado resultado. Un programa informático puede estar escrito en cualquier forma de lenguaje de programación, incluidos los lenguajes compilados o interpretados, y puede desplegarse de cualquier forma, incluso como un programa independiente o como un módulo, componente, subrutina u otra unidad adecuada para su uso en un entorno informático.
Los procesadores adecuados para la ejecución de un programa de instrucciones incluyen, a modo de ejemplo, microprocesadores de propósito general y especial, y el procesador único o uno de múltiples procesadores de cualquier tipo de computadora. Generalmente, un procesador recibirá instrucciones y datos desde una memoria de solo lectura o una memoria de acceso aleatorio o ambas. Los elementos de una computadora pueden incluir un procesador para ejecutar instrucciones y una o más memorias para almacenar instrucciones y datos. Generalmente, una computadora también puede incluir, o estar operativamente acoplada para comunicarse con, uno o más dispositivos de almacenamiento masivo para almacenar archivos de datos; tales dispositivos incluyen discos magnéticos, tales como discos duros internos y discos extraíbles; discos magneto-ópticos; y discos ópticos. Los dispositivos de almacenamiento adecuados para incorporar de forma tangible instrucciones y datos de programa informático incluyen todas las formas de memoria no volátil, incluyendo, a modo de ejemplo, dispositivos de memoria semiconductores, tales como EPROM, EEPROM y dispositivos de memoria flash; discos magnéticos, tales como discos duros internos y discos extraíbles; discos magneto-ópticos; y discos CD-ROM y DVD-ROM. El procesador y la memoria pueden complementarse o incorporarse en circuitos integrados de aplicación específica (ASIC).
Para proporcionar interacción con un usuario, las características se pueden implementar en una computadora que tenga un dispositivo de visualización, tal como un monitor de tubo de rayos catódicos (CRT) o de pantalla de cristal líquido (LCD) para mostrar información al usuario y un teclado y un dispositivo señalador, tal como un ratón o una bola de seguimiento, mediante el cual el usuario puede proporcionar entrada a la computadora.
Las características pueden implementarse en un sistema informático que incluye un componente servidor, tal como un servidor de datos, o que incluye un componente de middleware, tal como un servidor de aplicaciones o un servidor de Internet, o que incluye un componente de frontal, tal como una computadora cliente que tiene una interfaz gráfica de usuario o un navegador de Internet, o cualquier combinación de ellos. Los componentes del sistema pueden conectarse mediante cualquier forma o medio de comunicación de datos digital, tal como una red de comunicaciones. Los ejemplos de redes de comunicaciones incluyen, p. ej., una red de área local (LAN), una red de área amplia (WAN) y las computadoras y redes que forman el Internet.
El sistema informático puede incluir clientes y servidores. Por lo general, un cliente y un servidor son remotos entre sí y normalmente interactúan a través de una red, tal como la descrita. La relación de cliente y servidor surge en virtud de los programas informáticos que se ejecutan en los respectivos ordenadores y que tienen una relación clienteservidor entre sí.
Además, los flujos lógicos representados en las figuras no requieren el orden particular mostrado, o el orden secuencial, para lograr los resultados deseados. Además, se pueden proporcionar otras etapas, o se pueden eliminar etapas, de los flujos descritos, y otros componentes se pueden añadir a, o eliminar de, los sistemas descritos. Por consiguiente, otras implementaciones están dentro del alcance de las siguientes reivindicaciones.
Se han descrito una serie de implementaciones de la presente memoria descriptiva. No obstante, se entenderá que pueden realizarse diversas modificaciones.

Claims (10)

REIVINDICACIONES
1. Un método implementado por computadora para proporcionar una plataforma de función como servicio (FaaS) dentro de una red de cadena de bloques, el método se ejecuta por uno o más procesadores, y que comprende: recibir, desde un contrato inteligente, y mediante una primera aplicación (312, 412) de función que contiene un primer controlador (314, 414) de función que se ejecuta dentro de la red de cadena de bloques, una primera llamada de función para ejecutar una primera función, la primera llamada de función que comprende datos para la ejecución de la primera función,
en donde en la primera función se implementa mediante código (316, 318, 320, 416) en la primera aplicación (312, 412) de función,
en donde la primera aplicación (312) de función contiene múltiples versiones de la primera función (316, 318, 320) y el primer controlador (314) de función encamina la primera llamada de función a una versión apropiada de la primera función (316, 318, 320), y
en donde la aplicación primera función (312) se almacena en la cadena de bloques, el primera controlador (314) de función tiene una dirección única dentro de la red de cadena de bloques, y cada una de las versiones de la primera función tiene una dirección única respectiva dentro de la red de cadena de bloques;
transmitir, mediante el primer controlador (314, 414) de función, los datos de la primera llamada (418) de función a un primer componente (416) de función, el primer componente de función ejecuta la primera función en base a los datos de la primera llamada de función;
recibir (420), mediante el primer controlador (414) de función, un primer resultado (420) de función desde el primer componente (416) de función; y
proporcionar (506), mediante el primer controlador (414) de función, el primer resultado (424) de función al contrato (406) inteligente.
2. El método de la reivindicación 1, en donde la primera llamada de función comprende además una dirección de la primera función y un identificador de versión de la primera función.
3. El método de la reivindicación 2, en donde el identificador de versión es nulo, lo que indica que se va a ejecutar una última versión de la primera función.
4. El método de la reivindicación 1, que comprende además actualizar (422), mediante el primer controlador de función, las estadísticas asociadas con una versión de la primera función que se ejecutó en respuesta a la primera llamada de función.
5. El método de la reivindicación 4, en donde las estadísticas indican un número de veces que se ha ejecutado cada una de las versiones de la primera función.
6. El método de la reivindicación 1, que comprende, además:
recibir, desde el contrato inteligente, y mediante un segundo controlador de función que se ejecuta dentro de la red de cadena de bloques, una segunda llamada de función para ejecutar una segunda función, la segunda llamada de función que comprende datos para la ejecución de la segunda función, en donde la segunda función es diferente de la primera función, y en donde el segundo controlador de función es diferente del primer controlador de función; transmitir, por el segundo controlador de función, los datos de la segunda llamada de función a un segundo componente de función, el segundo componente de función ejecuta la segunda función en base a los datos de la segunda llamada de función, en donde el segundo componente de función es diferente del primer componente de función;
recibir, mediante el segundo controlador de función, un segundo resultado de función desde el segundo componente de función; y
proporcionando, mediante el segundo controlador de función, el segundo resultado de función al contrato inteligente.
7. El método de la reivindicación 6, en donde la primera función y la segunda función se proporcionan por diferentes proveedores.
8. El método de la reivindicación 1, en donde el contrato inteligente ejecuta (508) una transacción en base, al menos parcialmente, al primer resultado de función, registrándose la transacción (510, 428) dentro de una cadena de bloques de la red de cadenas de bloques.
9. Uno o más medios de almacenamiento legibles por computadora codificados con instrucciones que, cuando se ejecutan por una o más computadoras, hacen que la una o más computadoras realicen operaciones para proporcionar una plataforma de función como servicio (FaaS) dentro de una red de cadena de bloques, las operaciones que comprenden el método de una cualquiera de las reivindicaciones 1 a 8.
10. Un sistema que comprende:
una o más computadoras configuradas para realizar operaciones para proporcionar una plataforma de función como servicio (FaaS) dentro de una red de cadena de bloques, las operaciones que comprenden el método de una cualquiera de las reivindicaciones 1 a 8.
ES18865365T 2018-11-27 2018-11-27 Plataforma de función como servicio (FAAS) en redes de cadena Active ES2880455T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/117637 WO2019072282A2 (en) 2018-11-27 2018-11-27 FUNCTION-AS-A-SERVICE PLATFORM (FAAS) IN BLOCK CHAIN NETWORKS

Publications (1)

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

Family

ID=66100148

Family Applications (1)

Application Number Title Priority Date Filing Date
ES18865365T Active ES2880455T3 (es) 2018-11-27 2018-11-27 Plataforma de función como servicio (FAAS) en redes de cadena

Country Status (16)

Country Link
US (2) US10671380B2 (es)
EP (1) EP3552166B1 (es)
JP (1) JP6756914B2 (es)
KR (1) KR102193533B1 (es)
CN (1) CN110622192B (es)
AU (1) AU2018348323C1 (es)
BR (1) BR112019007939B1 (es)
CA (1) CA3041223C (es)
ES (1) ES2880455T3 (es)
MX (1) MX2019004667A (es)
PH (1) PH12019500872A1 (es)
PL (1) PL3552166T3 (es)
RU (1) RU2744322C2 (es)
SG (1) SG11201903493YA (es)
TW (1) TWI706647B (es)
WO (1) WO2019072282A2 (es)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110622192B (zh) 2018-11-27 2023-07-14 创新先进技术有限公司 区块链网络中的功能即服务(faas)平台
US11263315B2 (en) * 2018-12-03 2022-03-01 Ebay Inc. System level function based access control for smart contract execution on a blockchain
US11250125B2 (en) 2018-12-03 2022-02-15 Ebay Inc. Highly scalable permissioned block chains
US11405182B2 (en) * 2018-12-03 2022-08-02 Ebay Inc. Adaptive security for smart contracts using high granularity metrics
US10841153B2 (en) * 2018-12-04 2020-11-17 Bank Of America Corporation Distributed ledger technology network provisioner
FR3094521A1 (fr) * 2019-03-29 2020-10-02 Orange Procédés et dispositifs permettant de prouver la connaissance d’une donnée par un utilisateur d’une chaîne de blocs
CN110704063B (zh) * 2019-09-30 2021-09-07 支付宝(杭州)信息技术有限公司 编译和执行智能合约的方法及装置
CN111158645B (zh) * 2019-12-10 2022-09-20 杭州中天微系统有限公司 提供集成开发环境的系统和方法
TWI804728B (zh) * 2020-05-15 2023-06-11 天宿智能科技股份有限公司 基於區塊鏈之資產動態價值管理系統及其方法
US11948010B2 (en) 2020-10-12 2024-04-02 International Business Machines Corporation Tag-driven scheduling of computing resources for function execution
CN112804359B (zh) * 2021-03-30 2021-07-06 支付宝(杭州)信息技术有限公司 提供跨链消息的方法和装置
CN113472512A (zh) * 2021-06-10 2021-10-01 东软集团股份有限公司 智能合约执行方法、装置、存储介质及电子设备
CN113542435B (zh) * 2021-09-15 2021-12-14 支付宝(杭州)信息技术有限公司 一种用户服务使用方法及装置

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6918110B2 (en) * 2001-04-11 2005-07-12 Hewlett-Packard Development Company, L.P. Dynamic instrumentation of an executable program by means of causing a breakpoint at the entry point of a function and providing instrumentation code
US7844574B2 (en) * 2008-04-16 2010-11-30 International Business Machines Corporation Systems, methods and computer program products for automatic network-based persistent XML storage and management
JP6374666B2 (ja) 2014-02-19 2018-08-15 キヤノン株式会社 通信装置およびその制御方法、ならびにプログラム
JP6037460B2 (ja) * 2014-04-14 2016-12-07 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation サービス提供装置、プログラム、及び、方法
US10033702B2 (en) * 2015-08-05 2018-07-24 Intralinks, Inc. Systems and methods of secure data exchange
JP6775013B2 (ja) 2015-10-23 2020-10-28 オラクル・インターナショナル・コーポレイション データテーブルを共有するためのサポートを有する構成の自己記述
US20170140408A1 (en) * 2015-11-16 2017-05-18 Bank Of America Corporation Transparent self-managing rewards program using blockchain and smart contracts
US9992028B2 (en) * 2015-11-26 2018-06-05 International Business Machines Corporation System, method, and computer program product for privacy-preserving transaction validation mechanisms for smart contracts that are included in a ledger
JP6923946B2 (ja) * 2015-12-21 2021-08-25 コチャバ インコーポレイテッドKochava Inc. 自己規制取引システム、その方法、プログラム、データ処理デバイスシステム、コンピュータ読み取り可能な記憶媒体システム、コンピュータプログラム製品およびコンピュータプログラム製品
US9898260B2 (en) 2015-12-28 2018-02-20 Samsung Electronics Co., Ltd. Adaptive function-based dynamic application extension framework
EP3193299A1 (en) * 2016-01-15 2017-07-19 Accenture Global Services Limited Device, method and system for autonomous selection of a commodity supplier through a blockchain distributed database
JP7019697B2 (ja) 2016-08-30 2022-02-15 コモンウェルス サイエンティフィック アンド インダストリアル リサーチ オーガナイゼーション ブロックチェーン上の動的アクセス制御
WO2018051305A1 (en) * 2016-09-19 2018-03-22 Thomson Reuters Global Resources Unlimited Company Systems and methods for interception of smart contracts
WO2018078584A1 (en) * 2016-10-28 2018-05-03 nChain Holdings Limited Systems and methods for implementing deterministic finite automata (dfas) via a blockchain
CN106603698A (zh) * 2016-12-28 2017-04-26 北京果仁宝科技有限公司 基于dpos的区块链共识方法和节点
RU2658784C1 (ru) * 2017-03-23 2018-06-22 Общество с ограниченной ответственностью "БУБУКА" Способ и система контроля за воспроизведением медиа-контента, включающего объекты интеллектуальных прав
CN107038242B (zh) * 2017-04-24 2020-02-07 杭州趣链科技有限公司 一种面向区块链全局智能合约业务数据解析方法
US11165589B2 (en) 2017-05-11 2021-11-02 Shapeshift Ag Trusted agent blockchain oracle
CN107220767A (zh) * 2017-05-26 2017-09-29 中山市博林树投资管理有限公司 一种虚拟化资源池环境下的资源共享系统
US10135607B1 (en) * 2017-08-11 2018-11-20 Dragonchain, Inc. Distributed ledger interaction systems and methods
JP6987594B2 (ja) * 2017-10-16 2022-01-05 株式会社日立製作所 アクセス権管理方法、アクセス権管理システム、および、アクセス権管理装置
US10095888B1 (en) * 2018-06-04 2018-10-09 Capital One Services, Llc Secure decentralized system utilizing smart contracts, a blockchain, and/or a distributed file system
CN108717466A (zh) * 2018-06-05 2018-10-30 中国平安人寿保险股份有限公司 征信数据存储方法、装置、计算机设备及存储介质
US10915366B2 (en) * 2018-09-28 2021-02-09 Intel Corporation Secure edge-cloud function as a service
CN110622192B (zh) 2018-11-27 2023-07-14 创新先进技术有限公司 区块链网络中的功能即服务(faas)平台

Also Published As

Publication number Publication date
AU2018348323C1 (en) 2021-04-29
CN110622192B (zh) 2023-07-14
EP3552166A2 (en) 2019-10-16
US20200225937A1 (en) 2020-07-16
RU2744322C2 (ru) 2021-03-05
SG11201903493YA (en) 2019-05-30
MX2019004667A (es) 2019-08-21
CA3041223A1 (en) 2019-04-18
AU2018348323A1 (en) 2020-06-11
US10824419B2 (en) 2020-11-03
BR112019007939A2 (pt) 2019-11-12
EP3552166B1 (en) 2021-05-05
JP6756914B2 (ja) 2020-09-16
CN110622192A (zh) 2019-12-27
KR20200066255A (ko) 2020-06-09
AU2018348323B2 (en) 2020-11-05
PH12019500872B1 (en) 2019-12-02
TWI706647B (zh) 2020-10-01
CA3041223C (en) 2021-07-13
WO2019072282A3 (en) 2019-10-03
RU2019111902A (ru) 2020-10-19
EP3552166A4 (en) 2020-01-22
KR102193533B1 (ko) 2020-12-23
RU2019111902A3 (es) 2020-10-19
US20190244294A1 (en) 2019-08-08
PH12019500872A1 (en) 2019-12-02
WO2019072282A2 (en) 2019-04-18
US10671380B2 (en) 2020-06-02
JP2020507140A (ja) 2020-03-05
BR112019007939B1 (pt) 2021-09-21
TW202021311A (zh) 2020-06-01
PL3552166T3 (pl) 2021-10-25

Similar Documents

Publication Publication Date Title
ES2880455T3 (es) Plataforma de función como servicio (FAAS) en redes de cadena
KR102206940B1 (ko) 스마트 계약을 사용하여 다자간 트랜잭션을 실행하는 방법
JP6727435B2 (ja) ブロックチェーンネットワーク用テストプラットフォーム
KR102151893B1 (ko) 탈중앙화 결정을 사용하는 블록체인 스마트 계약 업데이트
ES2932500T3 (es) Seleccionar y asegurar delegados de prueba para funciones criptográficas
Wöhrer et al. Design patterns for smart contracts in the ethereum ecosystem
US11770238B2 (en) Decentralized computation system architecture based on node specialization
JP2020512716A (ja) ブロックチェーンネットワーク内でのデータ分離
ES2880453T3 (es) Utilizar tabla de números de un solo uso para resolver fallas de transacciones concurrentes de cadena de bloques
US20210182849A1 (en) Limited scope blockchain system
CN110737723B (zh) 卡券领取方法、装置、设备及存储介质
Vallejo Seade Asset tokenization in real estate through the means of token standards available on the ethereum blockchain