Nothing Special   »   [go: up one dir, main page]

KR102193533B1 - Faas platform in blockchain network - Google Patents

Faas platform in blockchain network Download PDF

Info

Publication number
KR102193533B1
KR102193533B1 KR1020197011389A KR20197011389A KR102193533B1 KR 102193533 B1 KR102193533 B1 KR 102193533B1 KR 1020197011389 A KR1020197011389 A KR 1020197011389A KR 20197011389 A KR20197011389 A KR 20197011389A KR 102193533 B1 KR102193533 B1 KR 102193533B1
Authority
KR
South Korea
Prior art keywords
function
transaction
call
smart contract
controller
Prior art date
Application number
KR1020197011389A
Other languages
Korean (ko)
Other versions
KR20200066255A (en
Inventor
카일라이 샤오
슈밍 루
Original Assignee
어드밴스드 뉴 테크놀로지스 씨오., 엘티디.
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 어드밴스드 뉴 테크놀로지스 씨오., 엘티디. filed Critical 어드밴스드 뉴 테크놀로지스 씨오., 엘티디.
Publication of KR20200066255A publication Critical patent/KR20200066255A/en
Application granted granted Critical
Publication of KR102193533B1 publication Critical patent/KR102193533B1/en

Links

Images

Classifications

    • 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
    • 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
    • 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)
  • Physics & Mathematics (AREA)
  • General 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)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Technology Law (AREA)

Abstract

본 출원의 구현은, 스마트 계약으로부터, 그리고 블록체인 네트워크 내에서 실행되는 함수 컨트롤러에 의해, 함수를 실행하도록 제1 실행을 위한 데이터를 포함하는 함수 호출을 수신하는 단계, 함수 컨트롤러에 의해, 함수 호출의 데이터에 기초하여 함수를 실행하는 함수 컴포넌트에, 함수 호출의 데이터를 전송하는 단계, 함수 컨트롤러에 의해, 함수 컴포넌트로부터 함수 결과를 수신하는 단계, 및 함수 컨트롤러에 의해, 스마트 계약에 함수 결과를 제공하는 단계를 포함한다. The implementation of the present application includes the steps of receiving a function call containing data for a first execution to execute the function, from a smart contract and by a function controller executing within a blockchain network, by a function controller, a function call Sending the data of the function call to the function component that executes the function based on the data of the function, receiving the function result from the function component, by the function controller, and providing the function result to the smart contract by the function controller. It includes the step of.

Description

블록체인 네트워크에서의 FaaS 플랫폼Faas platform in blockchain network

본 발명은 블록체인 네트워크에서의 FaaS 플랫폼에 관한 것이다. The present invention relates to a FaaS platform in a blockchain network.

컨센서스(consensus) 네트워크 및/또는 블록체인(blockchain) 네트워크로도 지칭될 수 있는 분산 원장 시스템(DLS; Distributed ledger system)은 참여 엔티티들이 데이터를 안전하고 불변하게(immutably) 저장할 수 있게 한다. DLS는 일반적으로 어떠한 특정 유즈 케이스(예컨대, 암호 통화)도 참조하지 않는 블록체인 네트워크으로서 지칭된다. 블록체인 네트워크의 예시적인 유형은 퍼블릭(public) 블록체인 네트워크, 프라이빗(private) 블록체인 네트워크, 및 컨소시엄(consortium) 블록체인 네트워크를 포함할 수 있다. 퍼블릭 블록체인 네트워크는 모든 엔티티들이 DLS를 사용하며 컨센서스 프로세스에 참여할 수 있도록 공개형이다. 프라이빗 블록체인 네트워크는, 읽기 및 쓰기 권한(permission)을 중앙집중적으로 제어하는 특정 엔티티에 대하여 제공된다. 컨소시엄 블록체인 네트워크는, 컨센서스 프로세스를 제어하는, 엔티티들의 선택 그룹에 대하여 제공되며, 액세스 제어 층을 포함한다. Distributed ledger system (DLS), which may also be referred to as a consensus network and/or a blockchain network, allows participating entities to store data securely and immutably. DLS is generally referred to as a blockchain network that does not refer to any specific use case (e.g., cryptocurrency). Exemplary types of blockchain networks may include public blockchain networks, private blockchain networks, and consortium blockchain networks. The public blockchain network is open so that all entities can use DLS and participate in the consensus process. Private blockchain networks are provided for specific entities with centralized control of read and write permissions. The consortium blockchain network is provided for a select group of entities, controlling the consensus process, and includes an access control layer.

스마트 계약(Smart contract)은 하나 이상의 함수를 수행하도록 블록체인 네트워크 내에서 실행될 수 있다. 스마트 계약은 코딩된 함수를 포함하는 모놀리식(monolithic) 애플리케이션이라고 할 수 있다. 모놀리식 애플리케이션으로서, 스마트 계약을 지원하기 위해 비교적 견고한 개발 동작이 요구될 수 있다(예컨대, 각각의 함수의 코딩, 전체 스마트 계약의 업데이트를 일으키는 함수에 대한 업데이트).Smart contracts can be executed within a blockchain network to perform one or more functions. Smart contracts can be thought of as monolithic applications containing coded functions. As a monolithic application, relatively robust development behavior may be required to support smart contracts (e.g., coding of each function, updating to the function causing an update of the entire smart contract).

본 명세서의 구현은 블록체인 네트워크에서의 애플리케이션을 제공하기 위한 컴퓨터 구현 방법을 포함한다. 보다 구체적으로, 블록체인 네트워크에서 실행되는 애플리케이션에 대한 함수를 제공하기 위한 FaaS(function-as-a-service) 플랫픔에 관한 것이다. Implementation of the present specification includes a computer-implemented method for providing an application in a blockchain network. More specifically, it relates to a function-as-a-service (FaaS) platform for providing functions for applications running on a blockchain network.

일부 구현에서, 동작들은, 스마트 계약으로부터, 그리고 블록체인 네트워크 내에서 실행되는 제1 함수 컨트롤러에 의해, 제1 함수를 실행하도록 상기 제1 함수의 실행을 위한 데이터를 포함하는 제1 함수 호출(function call)을 수신하고, 상기 제1 함수 컨트롤러에 의해, 상기 제1 함수 호출의 데이터에 기초하여 상기 제1 함수를 실행하는 제1 함수 컴포넌트에, 상기 제1 함수 호출의 데이터를 전송하고, 상기 제1 함수 컨트롤러에 의해, 상기 제1 함수 컴포넌트로부터 제1 함수 결과를 수신하고, 상기 제1 함수 컨트롤러에 의해, 상기 스마트 계약에 상기 제1 함수 결과를 제공하는 것을 포함한다. 다른 구현은, 방법의 동작들을 수행하도록 구성된 대응하는 시스템, 장치, 및 컴퓨터 저장 디바이스 상에 인코딩된 컴퓨터 프로그램을 포함한다. In some implementations, actions are, from a smart contract, and by a first function controller running within a blockchain network, a first function call containing data for execution of the first function to execute the first function. call), and transmits the data of the first function call to a first function component that executes the first function based on the data of the first function call, by the first function controller, and Receiving, by a function controller, a first function result from the first function component, and providing, by the first function controller, the first function result to the smart contract. Another implementation includes a corresponding system, apparatus, and computer program encoded on a computer storage device configured to perform the operations of the method.

이들 및 기타 구현은 다음 특징들 중의 하나 이상을 각각 선택적으로 포함할 수 있다: 상기 제1 함수 호출은 상기 제1 함수의 어드레스 및 상기 제1 함수의 버전 식별자를 더 포함한다; 상기 버전 식별자는, 상기 제1 함수의 최신 버전이 실행될 것임을 나타내는 null이다; 상기 동작들은, 상기 제1 함수 컨트롤러에 의해, 상기 제1 함수 호출에 응답하여 실행된 상기 제1 함수의 버전과 연관된 통계를 업데이트하는 것을 더 포함한다; 상기 통계는, 제1 함수의 각각의 버전이 실행된 횟수를 나타낸다; 상기 동작들은, 스마트 계약으로부터, 그리고 상기 블록체인 네트워크 내에서 실행되는 제2 함수 컨트롤러에 의해, 제2 함수를 실행하도록 제2 함수의 실행을 위한 데이터를 포함하는 제2 함수 호출을 수신하되, 상기 제2 함수는 상기 제1 함수와 상이한 것이고, 상기 제2 함수 컨트롤러는 상기 제1 함수 컨트롤러와 상이한 것이고, 상기 제2 함수 컨트롤러에 의해, 상기 제2 함수 호출의 데이터에 기초하여 상기 제2 함수를 실행하는 제2 함수 컴포넌트에, 상기 제2 함수 호출의 데이터를 전송하되, 상기 제2 함수 컴포넌트는 상기 제1 함수 컴포넌트와 상이한 것이고, 상기 제2 함수 컨트롤러에 의해, 상기 제2 함수 컴포넌트로부터 제2 함수 결과를 수신하고, 상기 제2 함수 컨트롤러에 의해, 상기 스마트 계약에 상기 제2 함수 결과를 제공하는 것을 더 포함한다; 상기 제1 함수 및 상기 제2 함수는 상이한 프로바이더에 의해 제공된다; 상기 스마트 계약은 상기 함수 결과에 적어도 부분적으로 기초하여 트랜잭션을 실행하며, 상기 트랜잭션은 상기 블록체인 네트워크의 블록체인 내에 기록된다. These and other implementations may each optionally include one or more of the following features: the first function call further comprises an address of the first function and a version identifier of the first function; The version identifier is null indicating that the latest version of the first function is to be executed; The operations further include updating, by the first function controller, a statistic associated with a version of the first function executed in response to the first function call; The statistic represents the number of times each version of the first function has been executed; The operations receive, from a smart contract and by a second function controller running within the blockchain network, a second function call containing data for execution of a second function to execute a second function, wherein The second function is different from the first function, and the second function controller is different from the first function controller, and the second function is executed by the second function controller based on the data of the second function call. Transmitting the data of the second function call to a second function component to be executed, wherein the second function component is different from the first function component, and by the second function controller, a second function component from the second function component Receiving a function result and providing, by the second function controller, the second function result to the smart contract; The first function and the second function are provided by different providers; The smart contract executes a transaction based at least in part on the result of the function, and the transaction is recorded in the blockchain of the blockchain network.

본 명세서는 또한, 하나 이상의 프로세서에 연결되며, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금 여기에 제공된 방법의 구현에 따른 동작들을 수행하게 하는 명령어들이 저장되어 있는 하나 이상의 비일시적인 컴퓨터 판독가능한 저장 매체를 제공한다. The present specification also includes one or more non-transitory computers that are connected to one or more processors and store instructions that, when executed by the one or more processors, cause the one or more processors to perform operations according to an implementation of the methods provided herein. It provides a readable storage medium.

본 명세서는 여기에 제공된 방법을 구현하기 위한 시스템을 더 제공한다. 시스템은, 하나 이상의 프로세서, 및 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금 여기에 제공된 방법의 구현에 따른 동작들을 수행하게 하는 명령어들이 저장되어 있는, 상기 하나 이상의 프로세서에 연결된 컴퓨터 판독가능한 저장 매체를 포함한다. The present specification further provides a system for implementing the methods provided herein. A system includes one or more processors and, when executed by the one or more processors, a computer readable computer coupled to the one or more processors having stored therein instructions that cause the one or more processors to perform operations according to an implementation of the methods provided herein. Includes possible storage media.

본 명세서에 따른 방법은 여기에 기재된 양상 및 특징의 임의의 조합을 포함할 수 있다는 것을 알아야 한다. 즉, 본 명세서에 따른 방법은 여기에 구체적으로 기재된 양상 및 특징의 조합에 한정되지 않으며, 제공된 양상 및 특징의 임의의 조합도 포함한다. It should be appreciated that the method according to the present specification may include any combination of the aspects and features described herein. That is, the method according to the present specification is not limited to the combinations of aspects and features specifically described herein, but includes any combination of aspects and features provided.

본 명세서의 하나 이상의 구현의 세부사항은 첨부 도면 및 아래의 상세한 설명에 서술되어 있다. 본 명세서의 다른 특징 및 이점은 상세한 설명 및 도면으로부터 그리고 청구항으로부터 명백해질 것이다. Details of one or more implementations of the present specification are set forth in the accompanying drawings and the detailed description below. Other features and advantages of the present specification will become apparent from the detailed description and drawings and from the claims.

도 1은 본 명세서의 구현을 실행하는데 사용될 수 있는 예시적인 환경을 도시한다.
도 2는 본 명세서의 구현에 따른 예시적인 개념 아키텍처를 도시한다.
도 3은 본 명세서의 구현에 따른 FaaS(function-as-a-service) 플랫폼에 대한 예시적인 개념 아키텍처를 도시한다.
도 4는 본 명세서의 구현에 따른 컴포넌트들 간의 통신을 도시한 순서도를 도시한다.
도 5는 본 명세서의 구현에 따라 실행될 수 있는 예시적인 프로세스를 도시한다.
다양한 도면에서의 유사한 참조 부호는 유사한 요소를 나타낸다.
1 depicts an exemplary environment that may be used to implement implementations of the present specification.
2 shows an exemplary conceptual architecture according to an implementation of the present specification.
3 shows an exemplary conceptual architecture for a function-as-a-service (FaaS) platform according to an implementation of the present specification.
4 shows a flow diagram illustrating communication between components according to an implementation of the present specification.
5 shows an exemplary process that may be executed according to an implementation of the present specification.
Like reference numerals in the various drawings indicate like elements.

본 명세서의 구현은 블록체인 네트워크에서의 애플리케이션을 제공하기 위한 컴퓨터 구현 방법을 포함한다. 보다 구체적으로, 본 명세서의 구현은 블록체인 네트워크에서 실행되는 애플리케이션에 대한 함수를 제공하기 위한 FaaS 플랫픔에 관한 것이다. 일부 구현에서, 동작들은, 스마트 계약으로부터, 그리고 블록체인 네트워크 내에서 실행되는 제1 함수 컨트롤러에 의해, 제1 함수를 실행하도록 제1 함수의 실행을 위한 데이터를 포함하는 제1 함수 호출을 수신하고, 제1 함수 컨트롤러에 의해, 제1 함수 호출의 데이터에 기초하여 제1 함수를 실행하는 제1 함수 컴포넌트에, 제1 함수 호출의 데이터를 전송하고, 제1 함수 컨트롤러에 의해, 제1 함수 컴포넌트로부터 제1 함수 결과를 수신하고, 제1 함수 컨트롤러에 의해, 스마트 계약에 상기 제1 함수 결과를 제공하는 것을 포함한다. Implementation of the present specification includes a computer-implemented method for providing an application in a blockchain network. More specifically, the implementation of this specification relates to a FaaS platform for providing functions for applications running on a blockchain network. In some implementations, the actions receive, from a smart contract, and by a first function controller running within the blockchain network, a first function call containing data for execution of the first function to execute the first function, and , By the first function controller, to a first function component that executes the first function based on the data of the first function call, transmits the data of the first function call, and by the first function controller, the first function component Receiving a first function result from and, by a first function controller, providing the first function result to a smart contract.

본 명세서의 구현을 위한 부가의 콘텍스트를 제공하기 위해, 그리고 상기에 소개한 바와 같이, 컨센서스 네트워크(예컨대, 피어-투-피어 노드로 구성됨) 및 블록체인 네트워크로도 지칭될 수 있는 분산 원장 시스템(DLS; distributed ledger system)은 참여 엔티티들이 안전하게 그리고 불변하게 트랜잭션을 행하고 데이터를 저장할 수 있게 한다. 용어 블록체인은 일반적으로 비트코인(Bitcoin) 암호통화 네트워크와 연관되지만, 블록체인은 여기에서 어떠한 특정 유즈 케이스도 참조하지 않고 일반적으로 DLS를 지칭하는데 사용된다. 상기에 소개한 바와 같이, 블록체인 네트워크는 퍼블릭 블록체인 네트워크, 프라이빗 블록체인 네트워크, 또는 컨소시엄 블록체인 네트워크로서 제공될 수 있다. In order to provide additional context for the implementation of this specification, and as introduced above, a distributed ledger system, which may also be referred to as a consensus network (e.g., consisting of peer-to-peer nodes) and a blockchain network ( DLS (distributed ledger system) allows participating entities to securely and immutably conduct transactions and store data. The term blockchain is generally associated with the Bitcoin cryptocurrency network, but blockchain is used here to refer to DLS in general without referring to any specific use case. As introduced above, the blockchain network can be provided as a public blockchain network, a private blockchain network, or a consortium blockchain network.

퍼블릭 블록체인 네트워크에서, 컨센서스 프로세스는 컨센서스 네트워크의 노드들에 의해 제어된다. 예를 들어, 수백, 수천, 심지어는 수백만의 엔티티들이 퍼블릭 블록체인 네트워크에서 협력할 수 있으며, 이들의 각각은 퍼블릭 블록체인 네트워크에서 적어도 하나의 노드를 동작시킨다. 따라서, 퍼블릭 블록체인 네트워크는 참여 엔티티들에 관련하여 퍼블릭 네트워크로 간주될 수 있다. 일부 예에서, 대부분의 엔티티(노드)는 블록이 유효하고 블록체인 네트워크의 블록체인(분산 원장)에 추가되게 하기 위하여 모든 블록마다 서명하여야 한다. 예시적인 퍼블릭 블록체인 네트워크는 비트코인 네트워크를 포함하며, 이는 피어-투-피어 결제 네트워크이다. 비트코인 네트워크는 블록체인으로 지칭되는 분산 원장을 활용한다(leverage). 그러나, 상기에 언급한 바와 같이, 용어 블록체인은 특별히 비트코인 네트워크를 참조하지 않고 일반적으로 분산 원장을 지칭하는데 사용된다. In a public blockchain network, the consensus process is controlled by nodes in the consensus network. For example, hundreds, thousands, or even millions of entities can cooperate on a public blockchain network, each of which operates at least one node in the public blockchain network. Thus, the public blockchain network can be regarded as a public network with respect to participating entities. In some examples, most entities (nodes) must sign every block in order for the block to be valid and added to the blockchain (distributed ledger) of the blockchain network. An exemplary public blockchain network includes the Bitcoin network, which is a peer-to-peer payment network. The Bitcoin network utilizes a distributed ledger called a blockchain (leverage). However, as mentioned above, the term blockchain does not specifically refer to the Bitcoin network and is generally used to refer to a distributed ledger.

일반적으로, 퍼블릭 블록체인 네트워크는 공개 트랜잭션(public transaction)을 지원한다. 공개 트랜잭션은 퍼블릭 블록체인 네트워크 내의 모든 노드들과 공유되며, 글로벌 블록체인에 저장된다. 글로벌 블록체인은 모든 노드들에 걸쳐 복제되는 블록체인이다. 즉, 모든 노드들은 글로벌 블록체인에 관련하여 완벽한 상태로 합의한다. 합의를 달성하기 위해(예컨대, 블록체인에의 블록의 추가에 대한 동의), 컨센서스 프로토콜이 퍼블릭 블록체인 네트워크 내에서 구현된다. 예시적인 컨센서스 프로토콜은, 비한정적으로, 비트코인 네트워크에서 구현되는 POW(proof-of-work)를 포함한다. In general, public blockchain networks support public transactions. Public transactions are shared with all nodes in the public blockchain network and stored in the global blockchain. Global blockchain is a blockchain that is replicated across all nodes. In other words, all nodes agree in perfect state regarding the global blockchain. In order to achieve consensus (e.g., consent to the addition of blocks to the blockchain), a consensus protocol is implemented within the public blockchain network. Exemplary consensus protocols include, but are not limited to, proof-of-work (POW) implemented in the Bitcoin network.

일반적으로, 프라이빗 블록체인 네트워크는, 읽기 및 쓰기 권한을 중앙집중적으로 제어하는 특정 엔티티에 대하여 제공된다. 엔티티는 어느 노드가 블록체인 네트워크에 참여할 수 있는지 제어한다. 그 결과, 프라이빗 블록체인 네트워크는 일반적으로, 네트워크에 참여하는 것이 허용되는 자 및 그의 참여 레벨(예컨대, 특정 트랜잭션에서만)에 대해 제한을 두는 허가된 네트워크로 지칭된다. 다양한 유형의 액세스 제어 메커니즘이 사용될 수 있다(예컨대, 기존의 참여자들이 새로운 엔티티를 추가하는 것에 대해 투표함, 규제 기관이 승인을 제어할 수 있음). In general, private blockchain networks are provided for specific entities with centralized control of read and write permissions. Entities control which nodes can participate in the blockchain network. As a result, private blockchain networks are generally referred to as licensed networks that impose restrictions on who is allowed to participate in the network and their level of participation (e.g., only in certain transactions). Various types of access control mechanisms can be used (eg, existing participants voting for adding new entities, regulators can control authorization).

일반적으로, 컨소시엄 블록체인 네트워크는 참여 엔티티들 사이에 비공개적이다(private). 컨소시엄 블록체인 네트워크에서, 컨센서스 프로세스는 인가된 노드 세트에 의해 제어되며, 하나 이상의 노드는 각자의 엔티티(예컨대, 금융 기관, 보험 회사)에 의해 동작된다. 예를 들어, 열 개(10)의 엔티티들(예컨대, 금융 기관, 보험 회사)의 컨소시엄은 컨소시엄 블록체인 네트워크를 동작시킬 수 있으며, 이들의 각각은 컨소시엄 블록체인 네트워크에서 적어도 하나의 노드를 동작시킨다. 따라서, 컨소시엄 블록체인 네트워크는 참여 엔티티들에 관련하여 프라이빗 네트워크로 간주될 수 있다. 일부 예에서, 각각의 엔티티(노드)는 블록이 유효하고 블록체인에 추가되게 하기 위하여 모든 블록마다 서명하여야 한다. 일부 예에서, 적어도 엔티티들(노드들)의 서브세트(예컨대, 적어도 7 개의 엔티티)는 블록이 유효하고 블록체인에 추가되게 하기 위하여 모든 블록마다 서명하여야 한다. In general, the consortium blockchain network is private among participating entities. In a consortium blockchain network, the consensus process is controlled by a set of authorized nodes, with one or more nodes being operated by their respective entities (eg, financial institutions, insurance companies). For example, a consortium of ten (10) entities (e.g., financial institutions, insurance companies) can operate a consortium blockchain network, each of which operates at least one node in the consortium blockchain network. . Thus, the consortium blockchain network can be considered a private network with respect to participating entities. In some examples, each entity (node) must sign every block in order for the block to be valid and added to the blockchain. In some examples, at least a subset of entities (nodes) (eg, at least 7 entities) must be signed for every block in order for the block to be valid and added to the blockchain.

본 명세서의 구현은 참여 엔티티들 사이에 공개적인 퍼블릭 블록체인 네트워크를 참조하여 여기에 더 상세하게 기재된다. 그러나, 본 명세서의 구현은 임의의 적합한 유형의 블록체인 네트워크에서 실현될 수 있는 것으로 고려된다. 본 명세서에 기재된 기술은 퍼블릭 블록체인 네트워크에 관련된 것으로서 나타나 있지만, 기술은 또한, 프라이빗 블록체인 네트워크 및 컨소시엄 블록체인 네트워크를 포함하는 다른 유형의 블록체인 네트워크에도, 변경하거나 아니면 변경없이, 사용될 수 있다. The implementation of this specification is described in more detail herein with reference to a public blockchain network among participating entities. However, it is contemplated that the implementation of this specification may be realized in any suitable type of blockchain network. Although the techniques described herein appear to be related to public blockchain networks, the techniques can also be used, with or without modification, to other types of blockchain networks, including private blockchain networks and consortium blockchain networks.

본 명세서의 구현은 상기 내용을 고려하여 여기에 더 상세하게 기재된다. 보다 구체적으로, 그리고 상기에 소개한 대로, 본 명세서의 구현은 블록체인 네트워크에서 실행되는 애플리케이션에 대한 함수를 제공하기 위한 FaaS 플랫픔에 관한 것이다. 이 방식으로, 개발자들은 비교적 가벼운(예컨대, 코딩에 관련하여) 애플리케이션(예컨대, 스마트 계약)을 개발할 수 있고, 본 명세서의 FaaS 플랫폼을 통해 하나 이상의 함수를 호출할 수 있다. Implementation of the present specification is described in more detail herein in view of the above. More specifically, and as introduced above, the implementation of this specification relates to a FaaS platform for providing functions for applications running on a blockchain network. In this way, developers can develop relatively light (eg, with respect to coding) applications (eg, smart contracts) and call one or more functions through the FaaS platform herein.

본 명세서의 구현을 위한 부가의 콘텍스트를 제공하기 위해, 블록체인 네트워크에서, 애플리케이션이 블록체인 네트워크 내의 실행을 위해 개발, 테스트, 및 배치될 수 있다. 예시적인 애플리케이션은 비한정적으로 스마트 계약을 포함할 수 있다. 스마트 계약은, 다양한 당사자들에 영향을 미치는 계약 조건을 갖는 실세계 법적 계약의 디지털 표현이라고 할 수 있다. 스마트 계약은, 예시적인 맥락에서, 컨소시엄 블록체인 네트워크 내에서 구현되고 저장되며 업데이트되고(필요에 따라) 실행된다. 스마트 계약과 연관된 계약 당사자(예컨대, 구매자 및 판매자)는 컨소시엄 블록체인 네트워크에서 노드로 표현된다. In order to provide additional context for implementation of the present specification, in a blockchain network, applications can be developed, tested, and deployed for execution within the blockchain network. Example applications may include, but are not limited to, smart contracts. Smart contracts can be considered as digital representations of real-world legal contracts with contract terms that affect various parties. Smart contracts are implemented, stored, updated (as needed) and executed within the consortium blockchain network, in an exemplary context. Contracting parties (e.g., buyers and sellers) associated with smart contracts are represented as nodes in the consortium blockchain network.

일부 예에서, 스마트 계약은, 정보, 사실, 연관성, 밸런스 및 계약 실행을 위한 로직을 구현하는데 필요한 임의의 다른 정보를 기록하는데 사용될 수 있는 데이터를 저장할 수 있다. 스마트 계약은, 스마트 계약의 인스턴스(instance)가 생성될 수 있는 함수 및 그 안에서의 로직의 실행을 위해 호출된 함수로 구성된 컴퓨터 실행가능 프로그램이라 할 수 있다. In some examples, smart contracts may store data that can be used to record information, facts, associations, balances, and any other information needed to implement the logic for contract execution. A smart contract may be referred to as a computer executable program consisting of a function in which an instance of a smart contract can be created and a function called for execution of logic therein.

기술 용어로, 스마트 계약은 객체 및 객체 지향 클래스에 기초하여 구현될 수 있다. 예를 들어, 스마트 계약의 용어 및 컴포넌트는 스마트 계약을 구현하는 애플리케이션에 의해 취급되는 객체로서 표현될 수 있다. 스마트 계약(또는 스마트 계약에서의 객체)은 다른 객체 지향 객체와 같은 또다른 스마트 계약(또는 동일 스마트 계약에서의 객체)을 호출할 수 있다. 객체에 의해 이루어지는 호출은, 예를 들어 또다른 클랙스의 객체를 생성, 업데이트, 삭제, 전파 또는 통신하라는 호출일 수 있다. 객체들 간의 호출은, 함수, 방법, API(application programming interface), 또는 다른 호출 메커니즘으로서 구현될 수 있다. 예를 들어, 제1 객체는 제2 객체를 생성하라는 함수를 호출할 수 있다. In technical terms, smart contracts can be implemented based on objects and object-oriented classes. For example, the terms and components of a smart contract can be expressed as an object handled by an application implementing the smart contract. A smart contract (or an object in a smart contract) can call another smart contract (or an object in the same smart contract), such as another object-oriented object. A call made by an object may be, for example, a call to create, update, delete, propagate or communicate an object of another class. Calls between objects may be implemented as functions, methods, application programming interfaces (APIs), or other calling mechanisms. For example, the first object may call a function to create a second object.

블록체인 네트워크에 대한 스마트 계약과 같은 애플리케이션을 개발, 테스트 및 배치하는데 통합 개발 환경(IDE; integrated development environment)이 사용될 수 있다. 예시적인 IDE는, Solidity에서 스마트 계약을 생성하기 위해, Ethereum Foundation of Zug, Switzerland에 의해 제공되는, Remix IDE를 포함한다. An integrated development environment (IDE) can be used to develop, test, and deploy applications such as smart contracts for blockchain networks. An exemplary IDE includes the Remix IDE, provided by the Ethereum Foundation of Zug, Switzerland, to create smart contracts in Solidity.

도 1은 본 명세서의 구현을 실행하는데 사용될 수 있는 예시적인 환경(100)을 도시한다. 일부 예에서, 예시적인 환경(100)은 엔티티들이 프라이빗 블록체인 네트워크(102)에 참여할 수 있게 한다. 예시적인 환경(100)은 컴퓨팅 시스템(106, 108) 및 네트워크(110)를 포함한다. 일부 예에서, 네트워크(110)는 LAN(local area network), WAN(wide area network), 인터넷, 또는, 이들의 조합을 포함하고, 웹 사이트, 사용자 디바이스(예컨대, 컴퓨팅 디바이스), 및 백엔드 시스템을 접속시킨다. 일부 예에서, 네트워크(110)는 유선 및/또는 무선 통신 링크를 통해 액세스될 수 있다. 1 shows an exemplary environment 100 that may be used to implement implementations of the present disclosure. In some examples, the example environment 100 allows entities to participate in the private blockchain network 102. The exemplary environment 100 includes computing systems 106 and 108 and a network 110. In some examples, network 110 includes a local area network (LAN), a wide area network (WAN), the Internet, or a combination thereof, and includes a website, a user device (eg, a computing device), and a backend system. Connect. In some examples, network 110 may be accessed via wired and/or wireless communication links.

도시된 예에서, 컴퓨팅 시스템(106, 108)은, 프라이빗 블록체인 네트워크(102)에서 노드로서의 참여를 가능하게 하는 임의의 적합한 컴퓨팅 시스템을 각각 포함할 수 있다. 예시적인 컴퓨팅 디바이스는, 비한정적으로, 서버, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨팅 디바이스, 및 스마트폰을 포함한다. 일부 예에서, 컴퓨팅 시스템(106, 108)은 프라이빗 블록체인 네트워크(102)와 상호작용하기 위한 하나 이상의 컴퓨터 구현 서비스를 호스팅한다. 예를 들어, 컴퓨팅 시스템(106)은, 제1 엔티티(예컨대, 사용자 A)가 하나 이상의 다른 엔티티(예컨대, 다른 사용자)와의 자신의 트랜잭션을 관리하기 위해 사용하는 트랜잭션 관리 시스템과 같은, 제1 엔티티의 컴퓨터 구현 서비스를 호스팅할 수 있다. 컴퓨팅 시스템(108)은, 제2 엔티티(예컨대, 사용자 B)가 하나 이상의 다른 엔티티(예컨대, 다른 사용자)와의 자신의 트랜잭션을 관리하기 위해 사용하는 트랜잭션 관리 시스템과 같은, 제2 엔티티의 컴퓨터 구현 서비스를 호스팅할 수 있다. 도 1의 예에서, 프라이빗 블록체인 네트워크(102)는 노드들의 피어-투-피어 네트워크로서 나타나 있고, 컴퓨팅 시스템(106, 108)은 프라이빗 블록체인 네트워크(102)에 참여하는 제1 엔티티 및 제2 엔티티의 노드를 각각 제공한다. In the illustrated example, computing systems 106 and 108 may each include any suitable computing system that enables participation as a node in the private blockchain network 102. Exemplary computing devices include, but are not limited to, servers, desktop computers, laptop computers, tablet computing devices, and smartphones. In some examples, computing systems 106 and 108 host one or more computer-implemented services for interacting with private blockchain network 102. For example, computing system 106 may be a first entity, such as a transaction management system that a first entity (eg, user A) uses to manage its transactions with one or more other entities (eg, other users). Can host computer-implemented services. Computing system 108 is a computer-implemented service of a second entity, such as a transaction management system that the second entity (eg, user B) uses to manage its transactions with one or more other entities (eg, other users). Can be hosted. In the example of FIG. 1, the private blockchain network 102 is shown as a peer-to-peer network of nodes, and the computing systems 106 and 108 are a first entity and a second entity participating in the private blockchain network 102. Each of the entity's nodes is provided.

도 2는 본 명세서의 구현에 따른 예시적인 개념 아키텍처(200)를 도시한다. 예시적인 개념 아키텍처(200)는 엔티티 층(202), 호스팅된 서비스 층(204), 및 블록체인 네트워크 층(206)을 포함한다. 도시된 예에서, 엔티티 층(202)은 3개의 엔티티, 즉 Entity_1(E1), Entity_2(E2), 및 Entity_3(E3)를 포함하며, 각각의 엔티티는 각자의 트랜잭션 관리 시스템(208)을 갖는다. 2 shows an exemplary conceptual architecture 200 in accordance with an implementation of the present specification. An exemplary conceptual architecture 200 includes an entity layer 202, a hosted service layer 204, and a blockchain network layer 206. In the illustrated example, the entity layer 202 includes three entities, namely Entity_1 (E1), Entity_2 (E2), and Entity_3 (E3), each entity having its own transaction management system 208.

도시된 예에서, 호스팅된 서비스 층(204)은 각각의 트랜잭션 관리 시스템(208)에 대한 인터페이스(210)를 포함한다. 일부 예에서, 각자의 트랜잭션 관리 시스템(208)은 프로토콜(예컨대, HTTP(hypertext transfer protocol secure))을 사용하여 네트워크(예컨대, 도 1의 네트워크(110))를 통해 각자의 인터페이스(210)와 통신한다. 일부 예에서, 각각의 인터페이스(210)는 각자의 트랜잭션 관리 시스템(208)과 블록체인 네트워크 층(206) 사이의 통신 접속을 제공한다. 보다 구체적으로, 인터페이스(210)는 블록체인 네트워크 층(206)의 블록체인 네트워크(212)와 통신한다. 일부 예에서, 인터페이스(210)와 블록체인 네트워크 층(206) 사이의 통신은 원격 프로시저 호출(RPC; remote procedure call)을 사용하여 행해진다. 일부 예에서, 인터페이스(210)는 각자의 트랜잭션 관리 시스템(208)에 대하여 블록체인 네트워크 노드를 "호스팅"한다. 예를 들어, 인터페이스(210)는 블록체인 네트워크(212)에의 액세스를 위한 애플리케이션 프로그래밍 인터페이스(API; application programming interface)를 제공한다. In the illustrated example, the hosted service layer 204 includes an interface 210 to each transaction management system 208. In some examples, each transaction management system 208 communicates with its respective interface 210 via a network (e.g., network 110 in FIG. 1) using a protocol (e.g., hypertext transfer protocol secure (HTTP)). do. In some examples, each interface 210 provides a communication connection between a respective transaction management system 208 and a blockchain network layer 206. More specifically, the interface 210 communicates with the blockchain network 212 of the blockchain network layer 206. In some examples, communication between the interface 210 and the blockchain network layer 206 is done using a remote procedure call (RPC). In some examples, interface 210 "hosts" blockchain network nodes for respective transaction management systems 208. For example, the interface 210 provides an application programming interface (API) for accessing the blockchain network 212.

여기에 기재된 바와 같이, 블록체인 네트워크(212)는 블록체인(216)에 정보를 불변하게 기록하는 복수의 노드들(214)을 포함하는 피어-투-피어 네트워크로서 제공된다. 단일 블록체인(216)이 개략적으로 도시되어 있지만, 블록체인(216)의 복수의 카피들(copies)이 제공되며 블록체인 네트워크(212)에 걸쳐 유지된다. 예를 들어, 각각의 노드(214)는 블록체인의 카피를 저장한다. 일부 구현에서, 블록체인(216)은 프라이빗 블록체인 네트워크에 참여하는 둘 이상의 엔티티들 사이에 수행되는 트랜잭션과 연관된 정보를 저장한다. As described herein, the blockchain network 212 is provided as a peer-to-peer network comprising a plurality of nodes 214 that immutably write information to the blockchain 216. Although a single blockchain 216 is schematically shown, multiple copies of the blockchain 216 are provided and maintained across the blockchain network 212. For example, each node 214 stores a copy of the blockchain. In some implementations, the blockchain 216 stores information associated with transactions performed between two or more entities participating in the private blockchain network.

도 3은 본 명세서의 구현에 따른 FaaS 플랫폼(300)에 대한 예시적인 개념 아키텍처(300)를 도시한다. 여기에 더 상세하게 기재되는 바와 같이, FaaS 플랫폼(300)은 도 3의 스마트 계약(302)과 같은 스마트 계약의 실행을 지원하는 함수를 제공하도록 사용된다. 일부 예에서, 스마트 계약(302)은 블록체인의 블록(304)에 기록되는 트랜잭션을 실행할 수 있다. 3 shows an exemplary conceptual architecture 300 for a FaaS platform 300 in accordance with an implementation of the present specification. As described in more detail herein, FaaS platform 300 is used to provide functions that support execution of smart contracts, such as smart contract 302 of FIG. 3. In some examples, the smart contract 302 may execute a transaction that is recorded in block 304 of the blockchain.

도 3의 예에서, FaaS 플랫폼(300)은, 예를 들어 스마트 계약(302)의 실행을 프롬프트하는 동작을 개시하는 노드일 수 있는 트랜잭션 개시자(transaction initiator)(306)를 포함한다. 예를 들어, 트랜잭션 개시자(306)는 스마트 계약(302)의 실행을 실시하라는 요청(308)을 보낼 수 있다. 일부 예에서, 스마트 계약(302)은 요청을 수신하고, 스마트 계약(302)으로 프로그램된 로직을 실행한다. 본 명세서의 구현에 따르면, 로직은 FaaS 플랫폼(300)의 하나 이상의 함수 애플리케이션(312)에의 호출을 포함할 수 있다. In the example of FIG. 3, the FaaS platform 300 includes a transaction initiator 306, which may be a node that initiates an action prompting execution of the smart contract 302, for example. For example, the transaction initiator 306 may send a request 308 to perform execution of the smart contract 302. In some examples, smart contract 302 receives the request and executes the logic programmed with smart contract 302. According to implementations herein, the logic may include calls to one or more functional applications 312 of the FaaS platform 300.

일부 예에서, 함수 애플리케이션(312)의 각각은 각자의 함수 프로바이더(function provider)(310)에 의해 제공된다. 예를 들어, 함수 프로바이더(310)는, 입력을 수신하고 함수를 실행하며 출력을 제공하도록 함수 애플리케이션을 개발하는 엔티티(예컨대, 개발자)를 포함할 수 있다. 일부 예에서, 각각의 함수 애플리케이션(312)은 함수 컨트롤러(314) 및 하나 이상의 함수(316, 318, 320)(함수 코드)를 포함한다. 함수 프로바이더(310)는 함수의 최초 버전(예컨대, 함수(316))을 제공할 수 있고, 후속 버전(예컨대, 함수(318, 320))을 제공하도록 함수를 업데이트할 수 있다. In some examples, each of the function applications 312 is provided by a respective function provider 310. For example, the function provider 310 may include an entity (eg, a developer) that develops a function application to receive inputs, execute functions, and provide outputs. In some examples, each functional application 312 includes a function controller 314 and one or more functions 316, 318, 320 (function code). The function provider 310 may provide an initial version of the function (eg, function 316) and may update the function to provide a subsequent version (eg, functions 318, 320).

일부 구현에서, 스마트 계약(302)은 함수를 호출하는 포인트로 실행된다. 스마트 계약(302)은, 함수 애플리케이션(312)에 의해 처리될 입력을 포함하는 함수 호출을 각자의 함수 애플리케이션(312)에 보낸다. 함수 호출은 각자의 함수 컨트롤러(314)에 의해 수신된다. 함수 컨트롤러(314)는 함수(316, 318, 320)의 적합한 버전에 입력을 라우팅한다. 입력을 수신하는 함수(316, 318, 320)는 입력을 처리하여 출력을 제공하며, 출력은 다시 스마트 계약(302)에 보내진다. In some implementations, the smart contract 302 is executed to the point of calling the function. The smart contract 302 sends a function call to the respective function application 312 containing inputs to be processed by the function application 312. Function calls are received by respective function controllers 314. Function controller 314 routes the input to the appropriate version of functions 316, 318, and 320. Functions 316, 318, and 320 that receive input process the input to provide an output, which is sent back to the smart contract 302.

일부 구현에서, FaaS 플랫폼(300)에 의해 제공되는 함수 애플리케이션은 블록체인에 저장되고, FaaS 플랫폼(300)에 등록(register)된다. 일부 예에서, 등록은 사용자(예컨대, 스마트 계약의 개발자)에게 함수의 정보를 노출한다. 예시적인 정보는, 비한정적으로, 프로바이더(310)의 식별자, 함수의 설명, 함수의 버전, 및 함수의 통계(예컨대, 각각의 버전이 호출된 횟수)를 포함할 수 있다. 사용자는 정보를, 예를 들어 각각의 함수와 연관된 신뢰(confidence) 레벨의 표시로서 사용할 수 있다. 예를 들어, 스마트 계약을 개발하는 사용자는 필요로 하는 함수를 식별하도록 레지스트리를 검토할 수 있고, 함수를 호출하도록 스마트 계약을 프로그램할 수 있다. In some implementations, the functional application provided by the FaaS platform 300 is stored in the blockchain and registered with the FaaS platform 300. In some examples, registration exposes information of the function to the user (eg, the developer of the smart contract). Exemplary information may include, without limitation, an identifier of the provider 310, a description of the function, a version of the function, and statistics of the function (eg, the number of times each version has been called). The user can use the information, for example, as an indication of the level of confidence associated with each function. For example, a user developing a smart contract can review the registry to identify the function it needs, and program the smart contract to call the function.

다음은 본 명세서의 구현에 따른 Faas 플랫폼의 설계 및 사용을 예시하고자 하는 비한정적인 예이다. FaaS 프로바이더로도 지칭되는 하나 이상의 함수 프로바이더(예컨대, 도 3의 함수 프로바이더(310))는 하나 이상의 컴퓨터 실행가능한 함수를 제공한다. 예를 들어, 함수 프로바이더는 함수를 실행하기 위한 컴퓨터 실행가능 코드를 개발할 수 있으며, 함수는 입력을 수신하고 입력을 처리하며 출력을 제공한다. 예시적인 함수는, 비한정적으로, 입력으로서 임의 길이의 메시지를 수신하고 출력으로서 체크섬(checksum)을 생성하는(예컨대, 128 비트(16 옥텟) 체크섬) RSA(Rivest-Shamir-Adleman) 체크섬 함수를 포함할 수 있다. 일부 예에서, 함수는 순수 함수이다. 즉, 함수는 상태 정보 없이, 반복가능한 호출 및/또는 중첩 호출이다. The following is a non-limiting example to illustrate the design and use of the Faas platform according to the implementation of the present specification. One or more function providers, also referred to as FaaS providers (eg, function provider 310 in FIG. 3), provide one or more computer-executable functions. For example, a function provider can develop computer-executable code to execute a function, which receives input, processes input, and provides output. Exemplary functions include, but are not limited to, a Rivest-Shamir-Adleman (RSA) checksum function that receives a message of any length as input and generates a checksum as output (e.g., a 128-bit (16 octet) checksum). can do. In some examples, the function is a pure function. That is, the function is a repeatable call and/or nested call, without state information.

일부 구현에서, 함수 컨트롤러(FaaS 컨트롤러로도 지칭됨)는 함수에 대하여 제공된다(예컨대, 도 3의 함수 컨트롤러(314)). 일부 예에서, 함수 컨트롤러 및 함수는 함께 함수 애플리케이션을 형성하며, FaaS 애플리케이션으로도 지칭된다(예컨대, 도 3의 함수 애플리케이션(312)). 일부 예에서, 함수 컨트롤러는 함수의 버전에 대한 통계 및 저장 뿐만 아니라 호출 정보를 다룬다. 아래의 표 1은 함수 컨트롤러에 의해 저장된 예시적인 정보를 나타낸다: In some implementations, a function controller (also referred to as a FaaS controller) is provided for the function (eg, function controller 314 in FIG. 3 ). In some examples, the function controller and the function together form a function application, which is also referred to as a FaaS application (eg, function application 312 in FIG. 3 ). In some examples, the function controller handles call information as well as statistics and storage of the version of the function. Table 1 below shows exemplary information stored by the function controller:

명칭designation 변수 타입Variable type 의미meaning Latest VersionLatest Version String latestVersionString latestVersion 최신 버전의 함수 코드 버전 및 어드레스(예컨대, 23d61f4a88f90be1290c0eeab344992e1a2e8f6d,1.0.0), 여기서 1.0.0이 버전임The latest version of the function code version and address (e.g. 23d61f4a88f90be1290c0eeab344992e1a2e8f6d,1.0.0), where 1.0.0 is the version Version MappingVersion Mapping Map<String, String> versionMapMap<String, String> versionMap Key는 스마트 계약 어드레스이고, Value는 함수 코드 어드레스의 버전임. key-to-value key-value 쌍이 있을 때, key로부터의 스마트 계약 호출은 함수 코드의 표시된 버전을 사용하며, 그렇지 않으면 디폴트 버전은 최신 버전을 호출함. Key is the smart contract address, and Value is the version of the function code address. When there is a key-to-value key-value pair, smart contract calls from key use the indicated version of the function code, otherwise the default version calls the latest version. Calling a Statistical MapCalling a Statistical Map Map<String, Integer> statisticsMap<String, Integer> statistics Key는 버전이고, Value는 호출 수이고, 각각의 호출이 하나씩 트리거됨Key is the version, Value is the number of calls, and each call is triggered one by one

표 1: 예시적인 정보Table 1: Example information

일부 구현에서, 함수가 생산용으로 준비가 되었을 때, 함수 프로바이더는 함수를 (컴퓨터 실행가능 함수 코드로서) 블록체인 네트워크에 제출하고, 함수 코드에 블록체인 네트워크 내의 고유의 어드레스가 할당된다(예컨대, 23d61f4a88f90be1290c0eeab344992e1a2e8f6d). 일부 예에서, 함수 컨트롤러도 또한 블록체인 네트워크에 제출되고, 블록체인 네트워크 내의 그 자신의 고유의 어드레스가 할당된다. 일부 예에서, 함수가 블록체인 네트워크에 처음 제출될 때, 최근 버전 값(예컨대, latestVersion)이 디폴트(예컨대, 1.0.0)로 설정된다. 일부 예에서, 함수는 어드레스 및 버전 값(예컨대, 23d61f4a88f90be1290c0eeab344992e1a2e8f6d, 1.0.0)에 기초하여 버전 맵에 기록되고, 함수에 대한 통계는 비어있다. In some implementations, when a function is ready for production, the function provider submits the function (as computer-executable function code) to the blockchain network, and the function code is assigned a unique address within the blockchain network (e.g. , 23d61f4a88f90be1290c0eeab344992e1a2e8f6d). In some examples, the function controller is also submitted to the blockchain network and assigned its own unique address within the blockchain network. In some examples, when the function is first submitted to the blockchain network, the latest version value (e.g., latestVersion) is set to the default (e.g., 1.0.0). In some examples, the function is written to the version map based on the address and version value (eg, 23d61f4a88f90be1290c0eeab344992e1a2e8f6d, 1.0.0), and the statistics for the function are empty.

일부 구현에서, FaaS 플랫폼의 하나 이상의 함수를 호출하는 하나 이상의 스마트 계약(예컨대, 스마트 계약(302))이 생성될 수 있다. 일부 예에서, 스마트 계약을 생성하는 사용자는 관련 함수 정보(예컨대, 설명, 어드레스, 버전, 통계)를 갖는 이용가능한 함수의 라이브러리를 볼 수 있고, 하나 이상의 함수를 호출하도록 스마트 계약을 프로그램할 수 있다. 예를 들어, 스마트 계약은 상기에 소개한 예시적인 RSA 체크섬 함수를 호출하는 로직을 포함할 수 있다. 일부 예에서, 스마트 계약은 호출되어야 할 함수의 버전(예컨대, 1.0.0)을 나타내는 버전 식별자를 포함할 수 있다. 일부 예에서, 버전 식별자는 비어있을 수 있으며(또는 null), 이는 함수의 최신 버전이 호출되어야 함을 나타낸다. 일부 구현에서, 스마트 계약이 완성되고 사용할 준비가 된 후에, 스마트 계약은 블록체인 네트워크에 제출되고, 스마트 계약에는 블록체인 네트워크 내의 고유의 어드레스가 할당된다(예컨대, 39a1509440f8c549dfd6e995def14b1ce3c98e5d).In some implementations, one or more smart contracts (eg, smart contracts 302) may be created that call one or more functions of the FaaS platform. In some examples, a user creating a smart contract can view a library of available functions with relevant function information (e.g., description, address, version, statistics), and can program the smart contract to call one or more functions. . For example, a smart contract may contain logic to call the exemplary RSA checksum function introduced above. In some examples, the smart contract may include a version identifier indicating the version (eg, 1.0.0) of the function to be called. In some examples, the version identifier can be empty (or null), indicating that the latest version of the function should be called. In some implementations, after the smart contract is complete and ready to use, the smart contract is submitted to the blockchain network, and the smart contract is assigned a unique address within the blockchain network (e.g., 39a1509440f8c549dfd6e995def14b1ce3c98e5d).

일부 구현에서, 함수 코드에의 최종적인 업그레이드(업데이트)의 영향이 스마트 계약의 실행 로직에 영향을 미치는 것으로부터 막기 위하여, 함수 컨트롤러의 버전 맵(versionMap)이 업데이트된다. 상기의 비한정적인 예에서 계속하면, RSA 체크섬 함수에 대한 함수 애플리케이션의 버전 맵은 다음으로 업데이트된다:In some implementations, the versionMap of the function controller is updated to prevent the effect of the final upgrade (update) on the function code from affecting the execution logic of the smart contract. Continuing with the non-limiting example above, the version map of the function application for the RSA checksum function is updated to:

{{

"39a1509440f8c549dfd6e995def14b1ce3c98e5d" "39a1509440f8c549dfd6e995def14b1ce3c98e5d"

: "23d61f4a88f90be1290c0eeab344992e1a2e8f6d,1.0.0": "23d61f4a88f90be1290c0eeab344992e1a2e8f6d,1.0.0"

}}

이는, 예시적인 스마트 계약이 예시적인 RSA 체크섬 함수의 제1 버전을 사용함을 나타낸다. 즉, 특정 스마트 계약이 함수를 호출할 때 함수의 제1 버전이 항상 사용될 것이다. This indicates that the example smart contract uses a first version of the example RSA checksum function. That is, when a particular smart contract calls a function, the first version of the function will always be used.

도 4는 본 명세서의 구현에 따른 컴포넌트들 간의 통신을 도시한 순서도(400)를 도시한다. 본 명세서의 구현에 따르면, 스마트 계약을 사용하는 트랜잭션이 개시된다(402). 예를 들어, 블록체인 네트워크에서의 노드는(예컨대, 자동으로, 또는 트랜잭션 개시자(404)로서의 역할을 하는 사용자에 의해 프롬프트됨) 스마트 계약(예컨대, 스마트 계약(406))을 사용하여 트랜잭션을 개시할 수 있다. 스마트 계약은 트랜잭션을 완료하기 위해 필요한 함수를 식별할 수 있다(408). 일부 예에서, 스마트 계약의 로직의 실행 동안, 하나 이상의 FaaS 애플리케이션(412)에 하나 이상의 함수 호출이 행해질 수 있다(410). 각각의 FaaS 애플리케이션(412)은 Faas 컨트롤러(414) 및 FaaS 코드(416)를 포함한다. FaaS 애플리케이션(412)은 각각의 프로바이더에 대하여 존재할 수 있다. 4 shows a flowchart 400 illustrating communication between components in accordance with an implementation of the present specification. According to an implementation of the present specification, a transaction using a smart contract is initiated (402). For example, a node in a blockchain network (e.g., automatically, or prompted by a user acting as the transaction initiator 404) uses a smart contract (e.g., smart contract 406) to initiate a transaction. Can initiate. The smart contract can identify the function required to complete the transaction (408). In some examples, during execution of the logic of the smart contract, one or more function calls may be made to one or more FaaS applications 412 (410). Each FaaS application 412 includes a Faas controller 414 and FaaS code 416. FaaS applications 412 may exist for each provider.

상기의 예를 계속해서 참조하면, 스마트 계약은 RSA 체크섬 값에 대하여 함수 호출(410)을 전송할 수 있다. 일부 예에서, 함수 호출은 FaaS 코드(416)에 의한 실행을 위해 함수 컨트롤러(414)에 의해 수신된다. 일부 예에서, 함수 호출은 함수에의 입력 및 실행되어야 할 함수의 버전을 나타내는 버전 변수를 포함한다. 일부 예에서, 함수 호출은 실행되어야 할 버전을 지정하지 않으며(예컨대, 버전 값이 null임), 이 경우에 함수의 최신 버전이 사용된다. With continuing reference to the above example, the smart contract may send a function call 410 for the RSA checksum value. In some examples, function calls are received by function controller 414 for execution by FaaS code 416. In some examples, the function call includes a version variable indicating an input to the function and the version of the function to be executed. In some examples, the function call does not specify the version to be executed (eg, the version value is null), in which case the latest version of the function is used.

함수 컨트롤러는 입력(예컨대, 메시지)을 처리하여 출력(예컨대, 체크섬 값)을 제공한다. 함수 요청(418)은 FaaS 코드(416)로 이루어진다. 상기에 언급된 바와 같이, 함수 응답(420)에서, 함수의 지정된 버전이나 함수의 최신 버전이 실행된다. 또한, 함수의 실행된 버전에 대응하는 호출 통계 맵 카운트 값이 업데이트된다(422)(예컨대, 증분됨). 상기의 예에서 계속하면, 처음 호출된 후에, 예시적인 RSA 체크섬 함수에 대한 통계 콘텐츠는 다음과 같이 제공될 수 있다: The function controller processes inputs (eg, messages) and provides outputs (eg, checksum values). The function request 418 consists of a FaaS code 416. As mentioned above, in function response 420, the specified version of the function or the latest version of the function is executed. In addition, the call statistics map count value corresponding to the executed version of the function is updated (422) (eg, incremented). Continuing from the example above, after the first call, the statistical content for the exemplary RSA checksum function can be provided as follows:

{{

"23d61f4a88f90be1290c0eeab344992e1a2e8f6d,1.0.0": 1 "23d61f4a88f90be1290c0eeab344992e1a2e8f6d,1.0.0": 1

}}

함수 결과(424)가 스마트 계약에 제공되며, 스마트 계약은 그 다음 트랜잭션을 완료할 수 있다(426). 트랜잭션은 블록체인(예컨대, 블록체인(430))에 의해 기록될 수 있다(428). 확정(confirmation)(432)이 트랜잭션 개시자(404)에게 보내질 수 있다. The function result 424 is provided to the smart contract, and the smart contract can then complete the transaction (426). The transaction may be recorded 428 by a blockchain (e.g., blockchain 430). A confirmation 432 may be sent to the transaction initiator 404.

일련의 단계들(410-424)은 스마트 계약(406)에 의해 호출된 각각의 함수에 대하여 반복될 수 있다. 예를 들어, 스마트 계약(406)은 2개의 상이한 FaaS 프로바이더로부터 2개의 함수를 호출할 수 있으며, 각각으로부터 스마트 계약(406)이 트랜잭션을 완료하도록 사용하는 함수 결과를 수신할 수 있다. A series of steps 410-424 may be repeated for each function called by the smart contract 406. For example, the smart contract 406 may call two functions from two different FaaS providers, and from each receive the function result that the smart contract 406 uses to complete the transaction.

일부 구현에서, 함수 프로바이더는 이전에 제공된 함수를 업데이트할 수 있다. 예를 들어, 함수 프로바이더는 실행 효율을 개선하도록(예컨대, 더 빠른, 더 적은 계산 리소스) 함수의 적어도 일부를 다시 코딩할 수 있다. 그 결과, 함수의 후속 버전이 제공될 수 있다. 상기의 예에서 계속하면, RSA 체크섬 함수의 제2 버전이 제공되어 블록체인 네트워크에 제출될 수 있다. 함수의 제2 버전에 블록체인 네트워크 내의 고유의 어드레스가 할당된다(예컨대, 2aae6a1150787a834382d0202ef1e89e3bc89d4d). 함수 컨트롤러 내의 최신 버전 값(latestVersion)은 업데이트된 함수의 어드레스 및 버전 식별자를 포함하도록 업데이트된다(예컨대, 2aae6a1150787a834382d0202ef1e89e3bc89d4d.2.0.0). In some implementations, the function provider can update previously provided functions. For example, the function provider may recode at least some of the functions to improve execution efficiency (eg, faster, less computational resources). As a result, subsequent versions of the function can be provided. Continuing from the example above, a second version of the RSA checksum function is provided and can be submitted to the blockchain network. The second version of the function is assigned a unique address within the blockchain network (e.g. 2aae6a1150787a834382d0202ef1e89e3bc89d4d). The latest version value (latestVersion) in the function controller is updated to include the address and version identifier of the updated function (eg, 2aae6a1150787a834382d0202ef1e89e3bc89d4d.2.0.0).

스마트 계약을 사용하는 또다른 트랜잭션(제2 트랜잭션)이 개시된다. 예를 들어, 그리고 상기의 예를 계속 참조하면, 스마트 계약은 RSA 체크섬 값에 대한 함수 호출을 전송할 수 있다. 일부 예에서, 함수 호출은 함수 컨트롤러에 의해 수신된다. 일부 예에서, 함수 호출은 함수에의 입력 및 실행되어야 할 함수의 버전을 나타내는 버전 변수를 포함한다.Another transaction (second transaction) using the smart contract is initiated. For example, and with continuing reference to the example above, the smart contract may send a function call for the RSA checksum value. In some examples, the function call is received by the function controller. In some examples, the function call includes a version variable indicating an input to the function and the version of the function to be executed.

일부 구현에서, 함수 컨트롤러는 동일 스마트 계약(예컨대, 39a1509440f8c549dfd6e995def14b1ce3c98e5d)이 함수 호출을 발행하였음을 인식한다. 그 결과, 함수의 또다른 버전(예컨대, 2.0.0)이 이용가능하지만, 함수의 마지막 사용된 버전(예컨대, 1.0.0)이 사용된다. 함수는 입력(예컨대, 메시지)을 처리하여 출력(예컨대, 체크섬 값)을 제공하고, 함수의 실행된 버전에 대응하는 호출 통계 맵 카운트 값이 증분된다. 상기의 예에서 계속하면, 두 번째 호출된 후에, 예시적인 RSA 체크섬 함수에 대한 통계 콘텐츠는 다음과 같이 제공될 수 있다:In some implementations, the function controller recognizes that the same smart contract (eg, 39a1509440f8c549dfd6e995def14b1ce3c98e5d) issued the function call. As a result, another version of the function (eg, 2.0.0) is available, but the last used version of the function (eg, 1.0.0) is used. The function processes the input (eg, message) to provide an output (eg, checksum value), and the call statistics map count value corresponding to the executed version of the function is incremented. Continuing with the example above, after the second call, the statistical content for the exemplary RSA checksum function may be provided as follows:

{{

"23d61f4a88f90be1290c0eeab344992e1a2e8f6d,1.0.0": 2 "23d61f4a88f90be1290c0eeab344992e1a2e8f6d,1.0.0": 2

}}

일부 구현에서, 스마트 계약이 함수의 다른 버전을 사용할 수 있다고 결정될 수 있다. 예를 들어, 스마트 계약을 발생시키고 특정 버전(예컨대, 1.0.0)이 사용되었음을 나타낸 사용자가, 스마트 계약의 후속 버전(예컨대, 2.0.0)이 만족스럽다고 결정할 수 있다. 그 결과, 사용자는 버전 맵 내의 버전 식별자를 업데이트할 수 있다(예컨대, 다른 버전을 지정하거나, 버전 식별자를 null로 설정함). 비한정적인 예에서, 버전 식별자는 null로 설정된다. 이 방식으로, 다음 번에 스마트 계약이 함수 호출을 행할 때에, 함수의 최신 버전이 사용될 것이다. In some implementations, it may be determined that the smart contract may use different versions of the function. For example, a user generating a smart contract and indicating that a particular version (eg, 1.0.0) has been used may determine that a subsequent version of the smart contract (eg, 2.0.0) is satisfactory. As a result, the user can update the version identifier in the version map (eg, specify a different version, or set the version identifier to null). In a non-limiting example, the version identifier is set to null. In this way, the next time the smart contract makes a function call, the latest version of the function will be used.

스마트 계약을 사용하는 또다른 트랜잭션(제3 트랜잭션)이 개시된다. 예를 들어, 그리고 상기의 예를 계속 참조하면, 스마트 계약은 RSA 체크섬 값에 대한 함수 호출을 전송할 수 있다. 일부 예에서, 함수 호출은 함수 컨트롤러에 의해 수신된다. 일부 예에서, 함수 호출은 함수에의 입력 및 실행되어야 할 함수의 버전을 나타내는 버전 변수를 포함한다.Another transaction (third transaction) using the smart contract is initiated. For example, and with continuing reference to the example above, the smart contract may send a function call for the RSA checksum value. In some examples, the function call is received by the function controller. In some examples, the function call includes a version variable indicating an input to the function and the version of the function to be executed.

일부 구현에서, 함수 컨트롤러는 동일 스마트 계약(예컨대, 39a1509440f8c549dfd6e995def14b1ce3c98e5d)이 함수 호출을 발행했지만 버전 식별자가 null인 것을 인식한다. 그 결과, 전에는 함수의 제1 버전(예컨대, 1.0.0)이 사용되었지만, 함수의 마지막 사용된 버전(예컨대, 2.0.0)이 사용된다. 함수는 입력(예컨대, 메시지)을 처리하여 출력(예컨대, 체크섬 값)을 제공하고, 함수의 실행된 버전에 대응하는 호출 통계 맵 카운트 값이 증분된다. 상기의 예에서 계속하면, 예시적인 RSA 체크섬 함수에 대한 통계 콘텐츠는 다음과 같이 제공될 수 있다:In some implementations, the function controller recognizes that the same smart contract (eg, 39a1509440f8c549dfd6e995def14b1ce3c98e5d) issued the function call but the version identifier is null. As a result, the first version of the function (eg, 1.0.0) was used before, but the last used version of the function (eg, 2.0.0) is used. The function processes the input (eg, message) to provide an output (eg, checksum value), and the call statistics map count value corresponding to the executed version of the function is incremented. Continuing with the example above, the statistical content for the exemplary RSA checksum function may be provided as follows:

{{

"23d61f4a88f90be1290c0eeab344992e1a2e8f6d,1.0.0": 2 "23d61f4a88f90be1290c0eeab344992e1a2e8f6d,1.0.0": 2

"2aae6a1150787a834382d0202ef1e89e3bc89d4d.2.0.0":1 "2aae6a1150787a834382d0202ef1e89e3bc89d4d.2.0.0":1

}}

도 5는 본 명세서의 구현에 따라 실행될 수 있는 예시적인 프로세스(500)를 도시한다. 일부 구현에서, 예시적인 프로세스(500)는 하나 이상의 컴퓨팅 디바이스를 사용하여 실행되는 하나 이상의 컴퓨터 실행가능한 프로그램을 사용하여 수행될 수 있다. 5 shows an exemplary process 500 that may be executed in accordance with an implementation of the present specification. In some implementations, exemplary process 500 may be performed using one or more computer executable programs executed using one or more computing devices.

502에서, 트랜잭션이 개시된다. 예를 들어, 트랜잭션은 블록체인 네트워크의 일부인 스마트 계약을 사용할 수 있다. 트랜잭션은 자동으로 개시될 수 있거나, 또는 트랜잭션은 사용자에 의해 프롬프트될 수 있다. 트랜잭션은 예를 들어, 사용자가 스마트 계약에서 사용하기 위한 난수(random number)를 생성하도록 사용하고 있는 트랜잭션일 수 있다. At 502, a transaction is initiated. For example, transactions can use smart contracts that are part of a blockchain network. The transaction can be initiated automatically, or the transaction can be prompted by the user. The transaction may be, for example, the transaction the user is using to generate a random number for use in a smart contract.

504에서, 스마트 계약에 의해 함수가 호출된다. 예로서, 함수 호출(410)은, 예컨대 FaaS 플랫폼에 의해 제공되는 난수 발생기 함수를 호출하도록 이루어질 수 있다. 일부 구현에서, 함수 호출은 함수의 어드레스 및 함수의 버전 식별자를 더 포함할 수 있다. 예를 들어, 스마트 계약(406)은, 함수 호출(410)에서, 함수와 연관되어 있는 블록체인 내의 어드레스 및 호출될 함수의 특정 버전을 식별하는 버전 번호를 포함할 수 있다. At 504, the function is called by the smart contract. As an example, function call 410 may be made to call a random number generator function provided by, for example, the FaaS platform. In some implementations, the function call may further include an address of the function and a version identifier of the function. For example, smart contract 406 may include, in function call 410, an address in the blockchain associated with the function and a version number that identifies a specific version of the function to be called.

506에서, 스마트 계약은 결과(들)를 수신한다. 예를 들어, 412는 난수 함수에 의해 결정된 난수와 같은 함수 결과(424)를 제공할 수 있다. 508에서, 스마트 계약은 결과(들)에 기초하여 트랜잭션을 완료한다. 예로서, 난수가 수신된 후에, 스마트 계약(406)은 사용자가 요청하였던 난수 연산을 완료할 수 있다. 510에서, 트랜잭션이 블록체인에 기입된다. 예를 들어, 트랜잭션(428)이 기록될 수 있으며, 난수 함수가 또다른 때에 사용되었다는 것을 나타내는 통계를 업데이트한다. At 506, the smart contract receives the result(s). For example, 412 may provide a function result 424 such as a random number determined by the random number function. At 508, the smart contract completes the transaction based on the result(s). As an example, after the random number is received, the smart contract 406 may complete the random number operation requested by the user. At 510, the transaction is written to the blockchain. For example, transaction 428 may be recorded, updating statistics indicating that the random number function was used at another time.

기재된 특징들은 디지털 전자 회로에서, 또는 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수 있다. 장치는 프로그램가능 프로세서에 의한 실행을 위해 정보 캐리어에(예컨대, 기계 판독가능한 저장 디바이스에) 유형으로(tangibly) 구현된 컴퓨터 프로그램 제품으로 구현될 수 있고, 방법 단계들은 입력 데이터에 대해 연산하고 출력을 생성함으로써 기재된 구현들의 기능을 수행하도록 명령어들의 프로그램을 실행하는 프로그램가능 프로세서에 의해 수행될 수 있다. 기재된 특징들은 유리하게, 데이터 저장 시스템, 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스로부터 데이터 및 명령어를 수신하고 이에 데이터 및 명령어를 전송하도록 결합된 적어도 하나의 프로그램가능 프로세서를 포함하는 프로그램가능 시스템 상에서 실행가능한 하나 이상의 컴퓨터 프로그램에서 구현될 수 있다. 컴퓨터 프로그램은 특정 활동을 수행하거나 특정 결과를 가져오도록 컴퓨터에서 직접 또는 간접적으로 사용될 수 있는 명령어 세트이다. 컴퓨터 프로그램은 컴파일 또는 해석 언어를 포함하는 임의의 형태의 프로그래밍 언어로 쓰여질 수 있고, 단독형 프로그램으로서 또는 컴퓨팅 환경에서 사용하기에 적합한 모듈, 컴포넌트, 서브루틴, 또는 다른 단위로서를 포함하는 임의의 형태로 배치될 수 있다.The described features may be implemented in a digital electronic circuit or in computer hardware, firmware, software, or a combination thereof. The apparatus may be implemented as a computer program product tangibly embodied in an information carrier (e.g., in a machine-readable storage device) for execution by a programmable processor, wherein the method steps operate on input data and produce output. It may be performed by a programmable processor that executes a program of instructions to perform the functions of the implementations described by generating. The described features advantageously comprise a data storage system, at least one input device, and at least one programmable processor coupled to receive and transmit data and instructions from at least one output device. It may be implemented in one or more computer programs executable on the computer. A computer program is a set of instructions that can be used directly or indirectly by a computer to perform a specific activity or produce a specific result. Computer programs can be written in any type of programming language, including compiled or interpreted languages, and in any form including as a standalone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. Can be placed into

명령어들의 프로그램의 실행을 위한 적합한 프로세서는 예로써, 범용 및 특수 용도 마이크로프로세서 둘 다를 그리고 임의의 종류의 컴퓨터의 단독 프로세서 또는 복수의 프로세서 중의 하나를 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다로부터 명령어 및 데이터를 수신할 것이다. 컴퓨터의 요소들은 명령어를 실행하기 위한 프로세서 및 명령어와 데이터를 저장하기 위한 하나 이상의 메모리를 포함할 수 있다. 일반적으로, 컴퓨터는 또한, 데이터 파일을 저장하기 위한 하나 이상의 대용량 저장 디바이스를 포함하거나 이에 동작가능하게 연결될 수 있고, 이러한 디바이스는 내부 하드 디스크 및 이동식 디스크와 같은 자기 디스크, 자기-광학 디스크, 및 광 디스크를 포함한다. 컴퓨터 프로그램 명령어 및 데이터를 유형으로 구현하기에 적합한 저장 디바이스는, 예로써, EPROM, EEPROM, 및 플래시 메모리 디바이스와 같은 반도체 메모리 디바이스; 내부 하드 디스크 및 이동식 디스크와 같은 자기 디스크; 자기-광학 디스크; 및 CD-ROM 및 DVD-ROM 디스크를 포함하는 모든 형태의 비휘발성 메모리를 포함한다. 프로세서 및 메모리는 ASIC(application-specific integrated circuit)에 의해 보완되거나 ASIC에 통합될 수 있다.Suitable processors for execution of a program of instructions include, by way of example, both general and special purpose microprocessors and one of a single processor or a plurality of processors of any kind of computer. In general, the processor will receive instructions and data from read-only memory or random access memory or both. Components of a computer may include a processor for executing instructions and one or more memories for storing instructions and data. In general, a computer may also include or be operably connected to one or more mass storage devices for storing data files, such devices being magnetic disks such as internal hard disks and removable disks, magnetic-optical disks, and optical disks. Includes a disk. Storage devices suitable for tangible implementation of computer program instructions and data include, for example, semiconductor memory devices such as EPROM, EEPROM, and flash memory devices; Magnetic disks such as internal hard disks and removable disks; Magneto-optical disk; And all types of nonvolatile memory including CD-ROM and DVD-ROM disks. The processor and memory may be supplemented by an application-specific integrated circuit (ASIC) or may be integrated into the ASIC.

사용자와의 상호작용을 제공하기 위해, 사용자에게 정보를 디스플레이하기 위한 CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터와 같은 디스플레이 디바이스 및 사용자가 컴퓨터에 입력을 제공할 수 있는 마우스나 트랙볼과 같은 포인팅 디바이스 및 키보드를 갖는 컴퓨터 상에서 특징들이 구현될 수 있다. To provide interaction with the user, a display device such as a cathode ray tube (CRT) or liquid crystal display (LCD) monitor to display information to the user, and a mouse or trackball through which the user can provide input to the computer. Features can be implemented on a computer with the same pointing device and keyboard.

특징들은, 데이터 서버와 같은 백엔드 컴포넌트를 포함하거나, 애플리케이션 서버 또는 인터넷 서버와 같은 미들웨어 컴포넌트를 포함하거나, 또는 그래픽 사용자 인터페이스 또는 인터넷 브라우저, 또는 이들의 임의의 조합을 갖는 클라이언트 컴퓨터와 같은 프론트엔드 컴포넌트를 포함하는 컴퓨터 시스템에서 구현될 수 있다. 시스템의 컴포넌트들은 통신 네트워크와 같은 임의의 형태 또는 매체의 디지털 데이터 통신에 의해 접속될 수 있다. 통신 네트워크의 예는 예컨대 LAN, WAN, 및 인터넷을 형성하는 컴퓨터와 네트워크를 포함한다. Features include a backend component such as a data server, a middleware component such as an application server or an internet server, or a frontend component such as a client computer having a graphical user interface or internet browser, or any combination thereof. It can be implemented in a containing computer system. The components of the system may be connected by digital data communication in any form or medium, such as a communication network. Examples of communication networks include, for example, LANs, WANs, and computers and networks forming the Internet.

컴퓨터 시스템은 클라이언트 및 서버를 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 원격이며 통상적으로 기재된 바와 같은 네트워크를 통해 상호작용한다. 클라이언트와 서버의 관계는, 각자의 컴퓨터 상에서 실행되며 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램에 의해 발생한다. Computer systems may include clients and servers. The client and server are generally remote from each other and typically interact over a network as described. The relationship between the client and the server arises by computer programs that run on their respective computers and have a client-server relationship with each other.

또한, 도면에 도시된 논리 흐름은 바람직한 결과를 달성하도록 도시된 특정 순서 또는 순차적 순서를 요구하지 않는다. 또한, 기재된 흐름으로부터 다른 단계가 제공될 수 있거나 단계가 제거될 수 있고, 기재된 시스템에 다른 컴포넌트가 추가되거나 삭제될 수 있다. 따라서, 다른 구현들은 다음의 청구항의 범위 내에 있다. Further, the logic flows shown in the figures do not require the specific order or sequential order shown to achieve the desired results. In addition, other steps may be provided or steps may be removed from the described flow, and other components may be added or deleted from the described system. Accordingly, other implementations are within the scope of the following claims.

본 명세서의 다수의 구현이 기재되었다. 그러나, 본 명세서의 진정한 의미 및 범위에서 벗어나지 않고서 다양한 수정이 행해질 수 있음을 이해할 것이다. 따라서, 다른 구현들은 다음의 청구항의 범위 내에 있다.A number of implementations of this specification have been described. However, it will be understood that various modifications may be made without departing from the true meaning and scope of this specification. Accordingly, other implementations are within the scope of the following claims.

Claims (24)

블록체인 네트워크(blockchain network) 내에서 FaaS(function-as-a-service) 플랫폼을 제공하기 위한 컴퓨터 구현 방법에 있어서, 상기 컴퓨터 구현 방법은 비일시적 컴퓨터 판독가능한 저장 매체에 저장된 명령어가 컴퓨터에 포함되는 하나 이상의 프로세서에 의해 실행됨으로써 수행되고, 상기 컴퓨터 구현 방법은,
상기 블록체인 네트워크 내의 제1 블록체인 노드에 의해, 상기 블록체인 네트워크 내의 상기 제1 블록체인 노드 또는 제2 블록체인 노드와 연관된 스마트 계약(smart contract)을 사용하여 트랜잭션을 실행하라는 요청을 개시하는 단계;
상기 스마트 계약에 의해, 상기 트랜잭션을 실행하라는 요청을 수신하는 단계;
상기 스마트 계약에 의해, 실행할 상기 트랜잭션의 제1 함수를 결정하는 단계;
상기 스마트 계약으로부터, 그리고 상기 블록체인 네트워크 내에서 실행되는 제1 함수 컨트롤러에 의해, 상기 트랜잭션의 제1 함수를 실행하기 위한 제1 함수 호출(function call) - 상기 제1 함수 호출은 실행을 위한 상기 제1 함수 호출의 데이터를 포함함 - 을 수신하는 단계;
상기 제1 함수 컨트롤러에 의해, 제1 함수 컴포넌트에, 실행을 위한 상기 제1 함수 호출의 데이터를 전송하는 단계;
상기 제1 함수 컴포넌트에 의해, 실행을 위한 상기 제1 함수 호출의 데이터에 기초하여, 상기 트랜잭션의 상기 제1 함수를 실행하는 단계;
상기 제1 함수 컨트롤러에 의해, 상기 제1 함수 컴포넌트로부터 제1 함수 실행 결과를 수신하는 단계; 및
상기 제1 함수 실행 결과에 적어도 부분적으로 기초한 상기 스마트 계약에 의한 상기 트랜잭션의 실행 전에, 상기 제1 함수 컨트롤러에 의해, 상기 스마트 계약에 상기 제1 함수 실행 결과를 제공하는 단계
를 포함하는 컴퓨터 구현 방법.
In a computer-implemented method for providing a FaaS (function-as-a-service) platform within a blockchain network, the computer-implemented method includes instructions stored in a non-transitory computer-readable storage medium in the computer. Performed by being executed by one or more processors, the computer-implemented method,
Initiating a request by a first blockchain node in the blockchain network to execute a transaction using a smart contract associated with the first blockchain node or a second blockchain node in the blockchain network ;
Receiving, by the smart contract, a request to execute the transaction;
Determining, by the smart contract, a first function of the transaction to be executed;
A first function call to execute a first function of the transaction from the smart contract and by a first function controller running within the blockchain network-the first function call is the first function call for execution Receiving-containing data of the first function call;
Transmitting, by the first function controller, data of the first function call for execution to a first function component;
Executing, by the first function component, the first function of the transaction based on data of the first function call for execution;
Receiving, by the first function controller, a result of executing a first function from the first function component; And
Prior to execution of the transaction by the smart contract based at least in part on a result of executing the first function, providing, by the first function controller, a result of executing the first function to the smart contract
Computer-implemented method comprising a.
청구항 1에 있어서, 상기 제1 함수 호출은 상기 트랜잭션의 상기 제1 함수의 어드레스 및 상기 트랜잭션의 상기 제1 함수의 버전 식별자를 더 포함하는 것인 컴퓨터 구현 방법. The computer-implemented method of claim 1, wherein the first function call further comprises an address of the first function of the transaction and a version identifier of the first function of the transaction. 청구항 2에 있어서, 상기 트랜잭션의 상기 제1 함수의 상기 버전 식별자는, 상기 트랜잭션의 상기 제1 함수의 최신 버전이 실행될 것임을 나타내는 null인 것인 컴퓨터 구현 방법. The computer-implemented method of claim 2, wherein the version identifier of the first function of the transaction is null indicating that the latest version of the first function of the transaction is to be executed. 청구항 1에 있어서, 상기 제1 함수 컨트롤러에 의해, 상기 제1 함수 호출에 응답하여 실행된 상기 트랜잭션의 상기 제1 함수의 버전과 연관된 통계를 업데이트하는 단계를 더 포함하는 컴퓨터 구현 방법. The computer-implemented method of claim 1, further comprising updating, by the first function controller, statistics associated with a version of the first function of the transaction executed in response to the first function call. 청구항 4에 있어서, 상기 통계는, 상기 트랜잭션의 상기 제1 함수의 각각의 버전이 실행된 횟수를 나타내는 것인 컴퓨터 구현 방법. 5. The method of claim 4, wherein the statistics indicate a number of times each version of the first function of the transaction has been executed. 청구항 1에 있어서,
상기 스마트 계약으로부터, 그리고 상기 블록체인 네트워크 내에서 실행되는 제2 함수 컨트롤러에 의해, 상기 트랜잭션의 제2 함수를 실행하기 위한 제2 함수 호출 - 상기 제2 함수 호출은 실행을 위한 상기 제2 함수 호출의 데이터를 포함함 - 을 수신하는 단계로서, 상기 트랜잭션의 상기 제2 함수는 상기 트랜잭션의 상기 제1 함수와 상이한 것이고, 상기 제2 함수 컨트롤러는 상기 제1 함수 컨트롤러와 상이한 것인, 상기 제2 함수 호출을 수신하는 단계;
상기 제2 함수 컨트롤러에 의해, 제2 함수 컴포넌트에, 실행을 위한 상기 제2 함수 호출의 데이터를 전송하는 단계로서, 상기 제2 함수 컴포넌트는 상기 제1 함수 컴포넌트와 상이한 것인, 실행을 위한 상기 제2 함수 호출의 데이터를 전송하는 단계;
상기 제2 함수 컴포넌트에 의해, 실행을 위한 상기 제2 함수 호출의 데이터에 기초하여, 상기 트랜잭션의 상기 제2 함수를 실행하는 단계;
상기 제2 함수 컨트롤러에 의해, 상기 제2 함수 컴포넌트로부터 제2 함수 실행 결과를 수신하는 단계; 및
상기 제2 함수 실행 결과에 적어도 부분적으로 기초한 상기 스마트 계약에 의한 상기 트랜잭션의 실행 전에, 상기 제2 함수 컨트롤러에 의해, 상기 스마트 계약에 상기 제2 함수 실행 결과를 제공하는 단계
를 더 포함하는 컴퓨터 구현 방법.
The method according to claim 1,
A second function call to execute a second function of the transaction, from the smart contract and by a second function controller running within the blockchain network-the second function call is the second function call for execution Containing data of -, wherein the second function of the transaction is different from the first function of the transaction, and the second function controller is different from the first function controller. Receiving a function call;
Transmitting, by the second function controller, to a second function component, data of the second function call for execution, wherein the second function component is different from the first function component. Transmitting data of the second function call;
Executing, by the second function component, the second function of the transaction based on data of the second function call for execution;
Receiving, by the second function controller, a result of executing a second function from the second function component; And
Prior to execution of the transaction by the smart contract based at least in part on a result of executing the second function, providing, by the second function controller, a result of executing the second function to the smart contract
Computer-implemented method further comprising.
청구항 6에 있어서, 상기 트랜잭션의 상기 제1 함수와 상기 트랜잭션의 상기 제2 함수는 상이한 프로바이더에 의해 제공되는 것인 컴퓨터 구현 방법. The method of claim 6, wherein the first function of the transaction and the second function of the transaction are provided by different providers. 하나 이상의 컴퓨터에 의해 실행되는, 상기 하나 이상의 컴퓨터로 하여금 블록체인 네트워크 내에서 FaaS(function-as-a-service) 플랫폼을 제공하기 위한 동작들을 수행하게 하는 명령어들로 인코딩된 하나 이상의 비일시적 컴퓨터 판독가능한 저장 매체에 있어서, 상기 동작들은,
상기 블록체인 네트워크 내의 제1 블록체인 노드에 의해, 상기 블록체인 네트워크 내의 상기 제1 블록체인 노드 또는 제2 블록체인 노드와 연관된 스마트 계약(smart contract)을 사용하여 트랜잭션을 실행하라는 요청을 개시하는 동작;
상기 스마트 계약에 의해, 상기 트랜잭션을 실행하라는 요청을 수신하는 동작;
상기 스마트 계약에 의해, 실행할 상기 트랜잭션의 제1 함수를 결정하는 동작;
상기 스마트 계약으로부터, 그리고 상기 블록체인 네트워크 내에서 실행되는 제1 함수 컨트롤러에 의해, 상기 트랜잭션의 제1 함수를 실행하기 위한 제1 함수 호출(function call) - 상기 제1 함수 호출은 실행을 위한 상기 제1 함수 호출의 데이터를 포함함 - 을 수신하는 동작;
상기 제1 함수 컨트롤러에 의해, 제1 함수 컴포넌트에, 실행을 위한 상기 제1 함수 호출의 데이터를 전송하는 동작;
상기 제1 함수 컴포넌트에 의해, 실행을 위한 상기 제1 함수 호출의 데이터에 기초하여, 상기 트랜잭션의 상기 제1 함수를 실행하는 동작;
상기 제1 함수 컨트롤러에 의해, 상기 제1 함수 컴포넌트로부터 제1 함수 실행 결과를 수신하는 동작; 및
상기 제1 함수 실행 결과에 적어도 부분적으로 기초한 상기 스마트 계약에 의한 상기 트랜잭션의 실행 전에, 상기 제1 함수 컨트롤러에 의해, 상기 스마트 계약에 상기 제1 함수 실행 결과를 제공하는 동작
을 포함하는 것인, 컴퓨터 판독가능한 저장 매체.
One or more non-transitory computer reads, executed by one or more computers, encoded with instructions that cause the one or more computers to perform operations to provide a function-as-a-service (FaaS) platform within a blockchain network In a possible storage medium, the operations are:
Initiating a request to execute a transaction by using a smart contract associated with the first blockchain node or the second blockchain node in the blockchain network by a first blockchain node in the blockchain network ;
Receiving, by the smart contract, a request to execute the transaction;
Determining, by the smart contract, a first function of the transaction to be executed;
A first function call to execute a first function of the transaction from the smart contract and by a first function controller running within the blockchain network-the first function call is the first function call for execution Receiving-including data of the first function call;
Transmitting, by the first function controller, data of the first function call for execution to a first function component;
Executing, by the first function component, the first function of the transaction based on data of the first function call for execution;
Receiving, by the first function controller, a result of executing a first function from the first function component; And
Before execution of the transaction by the smart contract based at least in part on a result of executing the first function, providing, by the first function controller, a result of executing the first function to the smart contract
Including a computer-readable storage medium.
청구항 8에 있어서, 상기 제1 함수 호출은 상기 트랜잭션의 상기 제1 함수의 어드레스 및 상기 트랜잭션의 상기 제1 함수의 버전 식별자를 더 포함하는 것인 컴퓨터 판독가능한 저장 매체. 9. The computer readable storage medium of claim 8, wherein the first function call further comprises an address of the first function of the transaction and a version identifier of the first function of the transaction. 청구항 9에 있어서, 상기 트랜잭션의 상기 제1 함수의 상기 버전 식별자는, 상기 트랜잭션의 상기 제1 함수의 최신 버전이 실행될 것임을 나타내는 null인 것인 컴퓨터 판독가능한 저장 매체. The computer-readable storage medium of claim 9, wherein the version identifier of the first function of the transaction is null indicating that the latest version of the first function of the transaction is to be executed. 청구항 8에 있어서, 상기 동작들은, 상기 제1 함수 컨트롤러에 의해, 상기 제1 함수 호출에 응답하여 실행된 상기 트랜잭션의 상기 제1 함수의 버전과 연관된 통계를 업데이트하는 동작을 더 포함하는 것인 컴퓨터 판독가능한 저장 매체. The computer of claim 8, wherein the operations further include updating, by the first function controller, a statistic associated with a version of the first function of the transaction executed in response to the first function call. Readable storage medium. 청구항 11에 있어서, 상기 통계는, 상기 트랜잭션의 상기 제1 함수의 각각의 버전이 실행된 횟수를 나타내는 것인 컴퓨터 판독가능한 저장 매체. 12. The computer readable storage medium of claim 11, wherein the statistics indicate a number of times each version of the first function of the transaction has been executed. 청구항 8에 있어서, 상기 동작들은,
상기 스마트 계약으로부터, 그리고 상기 블록체인 네트워크 내에서 실행되는 제2 함수 컨트롤러에 의해, 상기 트랜잭션의 제2 함수를 실행하기 위한 제2 함수 호출 - 상기 제2 함수 호출은 실행을 위한 상기 제2 함수 호출의 데이터를 포함함 - 을 수신하는 동작으로서, 상기 트랜잭션의 상기 제2 함수는 상기 트랜잭션의 상기 제1 함수와 상이한 것이고, 상기 제2 함수 컨트롤러는 상기 제1 함수 컨트롤러와 상이한 것인, 상기 제2 함수 호출을 수신하는 동작;
상기 제2 함수 컨트롤러에 의해, 제2 함수 컴포넌트에, 실행을 위한 상기 제2 함수 호출의 데이터를 전송하는 동작으로서, 상기 제2 함수 컴포넌트는 상기 제1 함수 컴포넌트와 상이한 것인, 실행을 위한 상기 제2 함수 호출의 데이터를 전송하는 동작;
상기 제2 함수 컴포넌트에 의해, 실행을 위한 상기 제2 함수 호출의 데이터에 기초하여, 상기 트랜잭션의 상기 제2 함수를 실행하는 동작;
상기 제2 함수 컨트롤러에 의해, 상기 제2 함수 컴포넌트로부터 제2 함수 실행 결과를 수신하는 동작; 및
상기 제2 함수 실행 결과에 적어도 부분적으로 기초한 상기 스마트 계약에 의한 상기 트랜잭션의 실행 전에, 상기 제2 함수 컨트롤러에 의해, 상기 스마트 계약에 상기 제2 함수 실행 결과를 제공하는 동작
을 포함하는 것인 컴퓨터 판독가능한 저장 매체.
The method of claim 8, wherein the operations,
A second function call to execute a second function of the transaction, from the smart contract and by a second function controller running within the blockchain network-the second function call is the second function call for execution Containing data of -, wherein the second function of the transaction is different from the first function of the transaction, and the second function controller is different from the first function controller. Receiving a function call;
Transmitting data of the second function call for execution, by the second function controller, to a second function component, wherein the second function component is different from the first function component. Transmitting data of a second function call;
Executing, by the second function component, the second function of the transaction based on data of the second function call for execution;
Receiving, by the second function controller, a result of executing a second function from the second function component; And
Prior to execution of the transaction by the smart contract based at least in part on the execution result of the second function, providing, by the second function controller, the execution result of the second function to the smart contract
Computer-readable storage medium comprising a.
청구항 13에 있어서, 상기 트랜잭션의 상기 제1 함수와 상기 트랜잭션의 상기 제2 함수는 상이한 프로바이더에 의해 제공되는 것인 컴퓨터 판독가능한 저장 매체. 14. The computer readable storage medium of claim 13, wherein the first function of the transaction and the second function of the transaction are provided by different providers. 시스템에 있어서,
하나 이상의 컴퓨터; 및
상기 하나 이상의 컴퓨터에 연결되며, 블록체인 네트워크 내에서 FaaS(function-as-a-service) 플랫폼을 제공하는 동작들을 수행하도록 상기 하나 이상의 컴퓨터에 의해 실행되는 명령어들을 저장한 하나 이상의 메모리를 포함하고, 상기 동작들은,
상기 블록체인 네트워크 내의 제1 블록체인 노드에 의해, 상기 블록체인 네트워크 내의 상기 제1 블록체인 노드 또는 제2 블록체인 노드와 연관된 스마트 계약(smart contract)을 사용하여 트랜잭션을 실행하라는 요청을 개시하는 동작;
상기 스마트 계약에 의해, 상기 트랜잭션을 실행하라는 요청을 수신하는 동작;
상기 스마트 계약에 의해, 실행할 상기 트랜잭션의 제1 함수를 결정하는 동작;
상기 스마트 계약으로부터, 그리고 상기 블록체인 네트워크 내에서 실행되는 제1 함수 컨트롤러에 의해, 상기 트랜잭션의 제1 함수를 실행하기 위한 제1 함수 호출(function call) - 상기 제1 함수 호출은 실행을 위한 상기 제1 함수 호출의 데이터를 포함함 - 을 수신하는 동작;
상기 제1 함수 컨트롤러에 의해, 제1 함수 컴포넌트에, 실행을 위한 상기 제1 함수 호출의 데이터를 전송하는 동작;
상기 제1 함수 컴포넌트에 의해, 실행을 위한 상기 제1 함수 호출의 데이터에 기초하여, 상기 트랜잭션의 상기 제1 함수를 실행하는 동작;
상기 제1 함수 컨트롤러에 의해, 상기 제1 함수 컴포넌트로부터 제1 함수 실행 결과를 수신하는 동작; 및
상기 제1 함수 실행 결과에 적어도 부분적으로 기초한 상기 스마트 계약에 의한 상기 트랜잭션의 실행 전에, 상기 제1 함수 컨트롤러에 의해, 상기 스마트 계약에 상기 제1 함수 실행 결과를 제공하는 동작
을 포함하는 것인, 시스템
In the system,
One or more computers; And
It is connected to the one or more computers and includes one or more memories storing instructions executed by the one or more computers to perform operations that provide a function-as-a-service (FaaS) platform within a blockchain network, The above operations are:
Initiating a request to execute a transaction by using a smart contract associated with the first blockchain node or the second blockchain node in the blockchain network by a first blockchain node in the blockchain network ;
Receiving, by the smart contract, a request to execute the transaction;
Determining, by the smart contract, a first function of the transaction to be executed;
A first function call to execute a first function of the transaction from the smart contract and by a first function controller running within the blockchain network-the first function call is the first function call for execution Receiving-including data of the first function call;
Transmitting, by the first function controller, data of the first function call for execution to a first function component;
Executing, by the first function component, the first function of the transaction based on data of the first function call for execution;
Receiving, by the first function controller, a result of executing a first function from the first function component; And
Prior to execution of the transaction by the smart contract based at least in part on the result of executing the first function, providing, by the first function controller, a result of executing the first function to the smart contract
Including, the system
청구항 15에 있어서, 상기 제1 함수 호출은 상기 트랜잭션의 상기 제1 함수의 어드레스 및 상기 트랜잭션의 상기 제1 함수의 버전 식별자를 더 포함하는 것인 시스템. The system of claim 15, wherein the first function call further comprises an address of the first function of the transaction and a version identifier of the first function of the transaction. 청구항 16에 있어서, 상기 트랜잭션의 상기 제1 함수의 상기 버전 식별자는, 상기 트랜잭션의 상기 제1 함수의 최신 버전이 실행될 것임을 나타내는 null인 것인 시스템. The system of claim 16, wherein the version identifier of the first function of the transaction is null indicating that the latest version of the first function of the transaction is to be executed. 청구항 15에 있어서, 상기 동작들은, 상기 제1 함수 컨트롤러에 의해, 상기 제1 함수 호출에 응답하여 실행된 상기 트랜잭션의 상기 제1 함수의 버전과 연관된 통계를 업데이트하는 동작을 더 포함하는 것인 시스템. The system of claim 15, wherein the operations further include updating, by the first function controller, a statistic associated with a version of the first function of the transaction executed in response to the first function call. . 청구항 18에 있어서, 상기 통계는, 상기 트랜잭션의 상기 제1 함수의 각각의 버전이 실행된 횟수를 나타내는 것인 시스템. 19. The system of claim 18, wherein the statistic represents a number of times each version of the first function of the transaction has been executed. 청구항 15에 있어서, 상기 동작들은,
상기 스마트 계약으로부터, 그리고 상기 블록체인 네트워크 내에서 실행되는 제2 함수 컨트롤러에 의해, 상기 트랜잭션의 제2 함수를 실행하기 위한 제2 함수 호출 - 상기 제2 함수 호출은 실행을 위한 상기 제2 함수 호출의 데이터를 포함함 - 을 수신하는 동작으로서, 상기 트랜잭션의 상기 제2 함수는 상기 트랜잭션의 상기 제1 함수와 상이한 것이고, 상기 제2 함수 컨트롤러는 상기 제1 함수 컨트롤러와 상이한 것인, 상기 제2 함수 호출을 수신하는 동작;
상기 제2 함수 컨트롤러에 의해, 제2 함수 컴포넌트에, 실행을 위한 상기 제2 함수 호출의 데이터를 전송하는 동작으로서, 상기 제2 함수 컴포넌트는 상기 제1 함수 컴포넌트와 상이한 것인, 실행을 위한 상기 제2 함수 호출의 데이터를 전송하는 동작;
상기 제2 함수 컴포넌트에 의해, 실행을 위한 상기 제2 함수 호출의 데이터에 기초하여, 상기 트랜잭션의 상기 제2 함수를 실행하는 동작;
상기 제2 함수 컨트롤러에 의해, 상기 제2 함수 컴포넌트로부터 제2 함수 실행 결과를 수신하는 동작; 및
상기 제2 함수 실행 결과에 적어도 부분적으로 기초한 상기 스마트 계약에 의한 상기 트랜잭션의 실행 전에, 상기 제2 함수 컨트롤러에 의해, 상기 스마트 계약에 상기 제2 함수 실행 결과를 제공하는 동작
을 더 포함하는 것인 시스템.
The method of claim 15, wherein the operations,
A second function call to execute a second function of the transaction, from the smart contract and by a second function controller running within the blockchain network-the second function call is the second function call for execution Containing data of -, wherein the second function of the transaction is different from the first function of the transaction, and the second function controller is different from the first function controller. Receiving a function call;
Transmitting data of the second function call for execution, by the second function controller, to a second function component, wherein the second function component is different from the first function component. Transmitting data of a second function call;
Executing, by the second function component, the second function of the transaction based on data of the second function call for execution;
Receiving, by the second function controller, a result of executing a second function from the second function component; And
Prior to execution of the transaction by the smart contract based at least in part on the execution result of the second function, providing, by the second function controller, the execution result of the second function to the smart contract
The system further comprising.
청구항 20에 있어서, 상기 트랜잭션의 상기 제1 함수와 상기 트랜잭션의 상기 제2 함수는 상이한 프로바이더에 의해 제공되는 것인 시스템. 21. The system of claim 20, wherein the first function of the transaction and the second function of the transaction are provided by different providers. 삭제delete 삭제delete 삭제delete
KR1020197011389A 2018-11-27 2018-11-27 Faas platform in blockchain network KR102193533B1 (en)

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 (faas) platform in blockchain networks

Publications (2)

Publication Number Publication Date
KR20200066255A KR20200066255A (en) 2020-06-09
KR102193533B1 true KR102193533B1 (en) 2020-12-23

Family

ID=66100148

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197011389A KR102193533B1 (en) 2018-11-27 2018-11-27 Faas platform in blockchain network

Country Status (17)

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

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
PL3552166T3 (en) 2018-11-27 2021-10-25 Advanced New Technologies Co., Ltd. Function-as-a-service (faas) platform in blockchain networks
US11405182B2 (en) 2018-12-03 2022-08-02 Ebay Inc. Adaptive security for smart contracts using high granularity metrics
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
US10841153B2 (en) * 2018-12-04 2020-11-17 Bank Of America Corporation Distributed ledger technology network provisioner
FR3094521A1 (en) * 2019-03-29 2020-10-02 Orange Methods and devices for proving knowledge of data by a user of a blockchain
CN110704063B (en) * 2019-09-30 2021-09-07 支付宝(杭州)信息技术有限公司 Method and device for compiling and executing intelligent contract
CN111158645B (en) * 2019-12-10 2022-09-20 杭州中天微系统有限公司 System and method for providing an integrated development environment
US12099997B1 (en) 2020-01-31 2024-09-24 Steven Mark Hoffberg Tokenized fungible liabilities
FR3107417A1 (en) * 2020-02-19 2021-08-20 Orange Method and device for controlling access to a function of an application registered in a blockchain.
TWI804728B (en) * 2020-05-15 2023-06-11 天宿智能科技股份有限公司 Managing system for asset dynamic value based on blockchain and method thereof
US11948010B2 (en) 2020-10-12 2024-04-02 International Business Machines Corporation Tag-driven scheduling of computing resources for function execution
CN112804359B (en) * 2021-03-30 2021-07-06 支付宝(杭州)信息技术有限公司 Method and apparatus for providing cross-chain messages
CN113542435B (en) * 2021-09-15 2021-12-14 支付宝(杭州)信息技术有限公司 User service using method and device

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170187838A1 (en) 2015-12-28 2017-06-29 Quixey, Inc. Adaptive Function-Based Dynamic Application Extension Framework

Family Cites Families (24)

* 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 (en) 2014-02-19 2018-08-15 キヤノン株式会社 COMMUNICATION DEVICE, ITS CONTROL METHOD, AND PROGRAM
JP6037460B2 (en) * 2014-04-14 2016-12-07 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation Service providing apparatus, program, and method
US10033702B2 (en) * 2015-08-05 2018-07-24 Intralinks, Inc. Systems and methods of secure data exchange
WO2017070575A1 (en) 2015-10-23 2017-04-27 Oracle International Corporation Self describing configuration with support for sharing data tables
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
EP3394818A4 (en) * 2015-12-21 2019-08-14 Kochava Inc. Self regulating transaction system and methods therefor
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 (en) 2016-08-30 2022-02-15 コモンウェルス サイエンティフィック アンド インダストリアル リサーチ オーガナイゼーション Dynamic access control on the blockchain
CA3037106A1 (en) * 2016-09-19 2018-03-22 Financial & Risk Organisation Limited Systems and methods for interception of smart contracts
CN109923521A (en) * 2016-10-28 2019-06-21 区块链控股有限公司 Systems and methods for implementing Deterministic Finite Automata (DFAs) via blockchains
CN106603698A (en) * 2016-12-28 2017-04-26 北京果仁宝科技有限公司 Block chain consensus method based on DPOS and nodes
RU2658784C1 (en) * 2017-03-23 2018-06-22 Общество с ограниченной ответственностью "БУБУКА" Method and control system for playing a media content including objects of intellectual rights
CN107038242B (en) * 2017-04-24 2020-02-07 杭州趣链科技有限公司 Block chain-oriented global intelligent contract service data analysis method
US11165589B2 (en) * 2017-05-11 2021-11-02 Shapeshift Ag Trusted agent blockchain oracle
CN107220767A (en) * 2017-05-26 2017-09-29 中山市博林树投资管理有限公司 A kind of resource sharing system under virtual resources pool environment
US10135607B1 (en) * 2017-08-11 2018-11-20 Dragonchain, Inc. Distributed ledger interaction systems and methods
JP6987594B2 (en) * 2017-10-16 2022-01-05 株式会社日立製作所 Access right management method, access right management system, and access right management device
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 (en) * 2018-06-05 2018-10-30 中国平安人寿保险股份有限公司 Collage-credit data storage method, device, computer equipment and storage medium
US10915366B2 (en) * 2018-09-28 2021-02-09 Intel Corporation Secure edge-cloud function as a service
PL3552166T3 (en) 2018-11-27 2021-10-25 Advanced New Technologies Co., Ltd. Function-as-a-service (faas) platform in blockchain networks

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170187838A1 (en) 2015-12-28 2017-06-29 Quixey, Inc. Adaptive Function-Based Dynamic Application Extension Framework

Also Published As

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

Similar Documents

Publication Publication Date Title
KR102193533B1 (en) Faas platform in blockchain network
KR102206940B1 (en) How to execute multiparty transactions using smart contracts
KR102225973B1 (en) Test platform for blockchain networks
KR102151893B1 (en) Blockchain smart contract update using decentralized decision
US11663197B2 (en) Convolutional and ephemeral datachains with conditional period
TW202023224A (en) Event-driven blockchain workflow processing
KR20200067117A (en) Platform for atomic transmission of smart assets within the blockchain network
CA3041211C (en) Utilizing nonce table to resolve concurrent blockchain transaction failure

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
N231 Notification of change of applicant
GRNT Written decision to grant