KR102234128B1 - 블록체인 네트워크에서의 트랜잭션의 병렬 실행 - Google Patents

블록체인 네트워크에서의 트랜잭션의 병렬 실행 Download PDF

Info

Publication number
KR102234128B1
KR102234128B1 KR1020197023010A KR20197023010A KR102234128B1 KR 102234128 B1 KR102234128 B1 KR 102234128B1 KR 1020197023010 A KR1020197023010 A KR 1020197023010A KR 20197023010 A KR20197023010 A KR 20197023010A KR 102234128 B1 KR102234128 B1 KR 102234128B1
Authority
KR
South Korea
Prior art keywords
transactions
nodes
blockchain network
groups
blockchain
Prior art date
Application number
KR1020197023010A
Other languages
English (en)
Other versions
KR20200083936A (ko
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 KR20200083936A publication Critical patent/KR20200083936A/ko
Application granted granted Critical
Publication of KR102234128B1 publication Critical patent/KR102234128B1/ko

Links

Images

Classifications

    • 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/389Keeping log of transactions for guaranteeing non-repudiation of a transaction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • 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/466Transaction processing
    • 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/22Payment schemes or models
    • G06Q20/223Payment schemes or models based on the use of peer-to-peer networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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/3226Cryptographic 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 a predetermined code, e.g. password, passphrase or PIN
    • 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/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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
    • 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
    • H04L2209/38

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Finance (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 명세서의 구현들은, 블록체인에서 실행될 복수의 트랜잭션들을 식별하는 것 ― 트랜잭션들은 실행 순서로 배열되고, 실행 순서는 복수의 트랜잭션들 이후에 배열된 계약 호출(contract call)을 포함함 ― ; 복수의 트랜잭션들 내에서 트랜잭션들의 그룹들을 식별하는 것 ― 각각의 그룹 내의 각각의 트랜잭션은 블록체인 네트워크에서 그룹 내의 다른 트랜잭션들과 동일한 계정과 연관됨 ― ; 트랜잭션들의 그룹들 각각을 병렬로 실행하도록 블록체인 네트워크의 노드들에 지시하는 것 ― 트랜잭션들의 각각의 그룹을 실행하는 것은 실행 순서에 따라 직렬로 그룹 내의 트랜잭션들을 실행하는 것을 포함함 ― ; 블록체인 네트워크의 노드들이 트랜잭션들의 그룹들 전부의 실행을 완료했다고 결정하는 것; 이에 응답하여, 계약 호출의 실행을 완료하도록 블록체인 네트워크의 노드들에 지시하는 것을 포함한다.

Description

블록체인 네트워크에서의 트랜잭션의 병렬 실행
컨센서스(consensus) 네트워크들 및/또는 블록체인 네트워크들로서 또한 지칭되는 DLS(distributed ledger system)은 참여하는 엔티티들이 데이터를 안전하게 그리고 불변적으로 저장하는 것을 가능하게 한다. DLS들은 일반적으로 어떠한 특정 사용자 경우도 참조하지 않고 블록체인 네트워크로서 지칭된다. 블록체인 네트워크들의 유형들의 예들은 공개 블록체인 네트워크들, 개인 블록체인 네트워크들 및 컨소시엄 블록체인 네트워크들을 포함할 수 있다. 컨센서스 블록체인 네트워크에는 컨소시엄 프로세스를 제어하는 엔티티들의 선택된 그룹이 제공되며, 액세스 제어 층을 포함한다.
블록체인 네트워크들에서 직면하는 한 가지 이슈는 트랜잭션들이 프로세싱되는 속도이다. 일반적으로 블록체인 네트워크의 노드들은 트랜잭션이 제출된 순서로 트랜잭션들을 직렬로(serially) 프로세싱한다. 이는, 낮은 트랜잭션 처리량 및 트랜잭션이 제출될 때와 그것이 처리될 때 간의 지연들로 이어질 수 있다.
블록체인 네트워크에서 이러한 트랜잭션 성능 이슈들을 해결하는 기술들이 유리할 것이다.
본 명세서의 구현들은 블록체인 네트워크에서 트랜잭션의 병렬 실행을 위한 컴퓨터-구현 방법을 포함한다. 보다 구체적으로, 본 명세서의 구현들은 다른 그룹들과 병렬로 공유 의존성을 갖는 트랜잭션들의 그룹들을 실행하는 것에 관한 것이다.
일부 구현들에서, 동작들은, 블록체인에서 실행될 복수의 트랜잭션들을 식별하는 단계 ― 트랜잭션들은 실행 순서로 배열되고, 실행 순서는 복수의 트랜잭션들 이후에 배열된 계약 호출(contract call)을 포함함 ― ; 복수의 트랜잭션들 내에서 트랜잭션들의 그룹들을 식별하는 단계 ― 각각의 그룹 내의 각각의 트랜잭션은 블록체인 네트워크에서 그룹 내의 다른 트랜잭션들과 동일한 계정(account)과 연관됨 ― ; 트랜잭션들의 그룹들 각각을 병렬로 실행하도록 블록체인 네트워크의 노드들에 지시하는 단계 ― 트랜잭션들의 각각의 그룹을 실행하는 것은 실행 순서에 따라 직렬로 그룹 내의 트랜잭션들을 실행하는 것을 포함함 ― ; 블록체인 네트워크의 노드들이 트랜잭션들의 그룹들 전부의 실행을 완료했다고 결정하는 단계; 및 블록체인 네트워크의 노드들이 트랜잭션들의 그룹들 전부의 실행을 완료했다고 결정하는 것에 대한 응답으로, 계약 호출을 실행하도록 블록체인 네트워크의 노드들에 지시하는 단계를 포함한다. 다른 구현들은 컴퓨터 저장 디바이스들 상에 인코딩된 방법들의 액션들을 수행하도록 구성되는, 대응하는 시스템들, 장치 및 컴퓨터 프로그램들을 포함한다.
이들 및 다른 구현들은 선택적으로 다음의 특징들 중 하나 이상을 각각 포함할 수 있다.
일부 경우들에서, 트랜잭션들의 그룹들 각각을 병렬로 실행하도록 블록체인 네트워크의 노드들에 지시하는 단계는, 트랜잭션들의 제 1 그룹을 실행하도록 노드들의 제 1 세트에 지시하고 트랜잭션들의 제 2 그룹을 실행하도록 노드들의 제 1 세트에 지시하는 단계를 포함한다.
일부 구현들에서, 블록체인 네트워크의 노드들이 트랜잭션들의 그룹들 전부의 실행을 완료했다고 결정하는 단계는, 복수의 트랜잭션들의 모든 트랜잭션들이 블록체인 네트워크에 의해 유지되는 블록체인에 저장된 하나 이상의 블록에 포함된 것으로 결정하는 단계를 포함한다.
일부 구현들에서, 방법은, 블록체인 네트워크의 노드들이 계약 호출의 실행을 완료했다고 결정하는 단계; 블록체인에서 실행될 제 2 복수의 트랜잭션들을 식별하는 단계 - 제 2 복수의 트랜잭션들은 실행 순서에서 계약 호출 이후에 배열됨 ― ; 제 2 복수의 트랜잭션들 내에서 트랜잭션들의 제 2 그룹들을 식별하는 단계; 및 트랜잭션들의 제 2 그룹들 각각을 병렬로 실행하도록 블록체인 네트워크의 노드들에 지시하는 단계를 포함하고, 트랜잭션들의 각각의 제 2 그룹을 실행하는 것은 실행 순서에 따라 직렬로 제 2 그룹 내의 트랜잭션들을 실행하는 것을 포함한다.
일부 경우들에서, 트랜잭션들의 그룹들 각각을 병렬로 실행하도록 블록체인 네트워크의 노드들에 지시하는 단계는, 네트워크를 통해 노드들에 메시지를 전송하는 단계를 포함한다.
일부 경우들에서, 블록체인에서 실행될 복수의 트랜잭션들을 식별하는 단계는 블록체인 네트워크에 브로드캐스트된 트랜잭션들을 수신하는 단계를 포함한다.
일부 구현들에서, 계약 호출은 블록체인 네트워크에 의해 유지되는 블록체인에 저장된 스마트 계약을 실행하기 위한 요청이다.
본 명세서는 또한, 하나 이상의 프로세서들에 커플링되고 명령어들이 저장되어 있는 하나 이상의 비-일시적인 컴퓨터-판독 가능 저장 매체들을 제공하며, 이 명령어들은 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금, 본원에서 제공된 방법들의 구현들에 따른 동작들을 수행하게 한다.
본 명세서는 추가로, 본원에서 제공된 방법들을 구현하기 위한 시스템을 제공한다. 시스템은, 하나 이상의 프로세서들, 및 하나 이상의 프로세서들에 커플링되고 명령어들이 저장되어 있는 컴퓨터-판독 가능 저장 매체를 포함하며, 이 명령어들은 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금, 본원에서 제공된 방법들의 구현들에 따라 동작들을 수행하게 한다.
본 명세서에 따른 방법들은 본원에서 설명된 양상들 및 특징들의 임의의 조합을 포함할 수 있다는 것이 인지된다. 즉, 본 명세서에 따른 방법들은 본원에서 구체적으로 설명된 양상들 및 특징들의 조합들로 제한되는 것이 아니라, 제공되는 양상들 및 특징들의 임의의 조합을 또한 포함한다.
본 명세서의 하나 이상의 구현들의 세부사항들은 첨부한 도면들 및 아래의 설명에서 기술된다. 본 명세서의 다른 특징들 및 이점들은, 설명 및 도면들로부터, 그리고 청구항들로부터 명백해질 것이다.
도 1은 본 명세서의 구현들을 실행하는데 사용될 수 있는 환경의 예를 도시한다.
도 2는 본 명세서의 구현들에 따른 개념적 아키텍처의 예를 도시한다
도 3a는 본 명세서의 구현에 따른 블록체인 네트워크에서의 트랜잭션들에 대한 실행 순서의 예를 도시한다.
도 3b는 본 명세서의 구현에 따른 블록체인 네트워크에서의 트랜잭션들에 대한 병렬 실행 순서의 예를 도시한다.
도 4는 본 명세서의 구현들에 따라 실행될 수 있는 프로세스의 예를 도시한다.
도 5는 본 명세서의 구현들에 따른 장치의 모듈들의 예들을 도시한다.
다양한 도면들 내의 유사한 참조 기호들은 유사한 엘리먼트들을 표시한다.
본 명세서의 구현들은 블록체인 네트워크에서 트랜잭션의 병렬 실행을 위한 컴퓨터-구현 방법을 포함한다. 보다 구체적으로, 본 명세서의 구현들은 다른 그룹들과 병렬로 공유 의존성을 갖는 트랜잭션들의 그룹들을 실행하는 것에 관한 것이다. 일부 구현들에서, 동작들은, 블록체인에서 실행될 복수의 트랜잭션들을 식별하는 단계 ― 트랜잭션들은 실행 순서로 배열되고, 실행 순서는 복수의 트랜잭션들 이후에 배열된 계약 호출을 포함함 ― ; 복수의 트랜잭션들 내에서 트랜잭션들의 그룹들을 식별하는 단계 ― 각각의 그룹 내의 각각의 트랜잭션은 블록체인 네트워크에서 그룹 내의 다른 트랜잭션들과 동일한 계정과 연관됨 ― ; 트랜잭션들의 그룹들 각각을 병렬로 실행하도록 블록체인 네트워크의 노드들에 지시하는 단계 ― 트랜잭션들의 각각의 그룹을 실행하는 것은 실행 순서에 따라 직렬로 그룹 내의 트랜잭션들을 실행하는 것을 포함함 ― ; 블록체인 네트워크의 노드들이 트랜잭션들의 그룹들 전부의 실행을 완료했다고 결정하는 단계; 및 블록체인 네트워크의 노드들이 트랜잭션들의 그룹들 전부의 실행을 완료했다고 결정하는 것에 대한 응답으로, 계약 호출을 실행하도록 블록체인 네트워크의 노드들에 지시하는 단계를 포함한다.
본 명세서의 구현들에 대한 추가의 맥락을 제공하기 위해 그리고 위에서 소개된 바와 같이, 컨센서스 네트워크들(예를 들어, 피어-투-피어 노드들로 구성됨), 및 블록체인 네트워크로서 또한 지칭될 수 있는 DSL(distributed ledger system)들은, 참여 엔티티들이 안전하고 불변적으로 트랜잭션들을 수행하고 데이터를 저장하는 것을 가능하게 한다. 블록체인이라는 용어는 본원에서 어떠한 특정 사용 경우와 관계없이 DLS를 일반적으로 지칭하기 위해 사용된다.
블록체인은 트랜잭션들이 불변적인(immutable) 방식으로 트랜잭션들을 저장하고 후속적으로 검증될 수 있는 데이터 구조이다. 블록체인은 하나 이상의 블록을 포함한다. 체인 내의 각각의 블록은 이전 블록의 암호화 해시(cryptographic hash)를 포함함으로써 체인 내에 자신 바로 앞의 이전 블록에 링크된다. 각각의 블록은 또한 타임스탬프, 자체 암호화 해시 및 하나 이상의 트랜잭션들을 포함한다. 블록체인 네트워크의 노드들에 의해 이미 검증된 트랜잭션들은 해시되고 머클 트리(Merkle tree)로 인코딩된다. 머클 트리는 트리의 리프 노드들의 데이터가 해시되고 트리의 각각의 분기(branch)의 모든 해시들이 분기의 루트에서 연접되는 데이터 구조이다. 이 프로세스는 전체 트리의 루트까지 트리에서 계속되며, 트리의 모든 데이터를 나타내는 해시를 저장한다. 트리에 저장된 트랜잭션인 것으로 간주되는 해시는 그것이 트리의 구조와 일치하는지 여부를 결정함으로써 신속하게 검증될 수 있다.
블록체인은 트랜잭션들을 저장하기 위한 데이터 구조인 반면, 블록체인 네트워크는 하나 이상의 블록체인들을 관리, 업데이트 및 유지(maintain)하는 컴퓨팅 노드들의 네트워크이다. 위에서 소개된 바와 같이, 블록체인 네트워크는 공개 블록체인 네트워크, 개인 블록체인 네트워크 또는 컨소시엄 블록체인 네트워크로서 제공될 수 있다. 공개 블록체인 네트워크에서 컨센서스 프로세스는 컨센서스 네트워크의 노드들에 의해 제어된다. 예를 들어, 수백, 수천, 심지어 수백만개의 엔티티들이 공개 블록체인 네트워크에서 협력할 수 있으며, 이들 각각은 공개 블록체인 네트워크에서 하나 이상의 노드를 동작시킨다. 따라서, 공개 블록체인 네트워크는 참여 엔티티들과 관련하여 공개 네트워크로 간주될 수 있다. 일부 예들에서, 대부분의 엔티티들(노드들)은, 블록이 유효하며 블록체인 네트워크의 블록체인(분산 원장)에 추가되기 위해 각각의 모든 블록에 서명해야 한다. 예시적인 공개 블록체인 네트워크들은 블록체인으로서 지칭된 분산 원장을 활용하는 특정 피어-투-피어 지불 네트워크들을 포함한다. 그러나 위에서 언급된 바와 같이, 블록체인이라는 용어는 일반적으로 어떠한 특정 블록체인 네트워크와 특별히 관계없이 분산 원장들을 지칭하는 데 사용된다.
일반적으로 컨소시엄 블록체인 네트워크는 참여 엔티티들 사이에서 비공개(private)이다. 컨소시엄 블록체인 네트워크에서, 컨센서스 프로세스는 노드들의 인가된 세트에 의해 제어되며, 하나 이상의 노드들은 각각의 엔티티(예를 들어, 금융 기관, 보험 회사)에 의해 동작된다. 예를 들어, 10개의 엔티티들(예를 들어, 금융 기관들, 보험 회사들)의 컨소시엄은 컨소시엄 블록체인 네트워크를 동작시킬 수 있으며, 이들 각각은 컨소시엄 블록체인 네트워크에서 적어도 하나의 노드를 동작시킨다. 따라서, 컨소시엄 블록체인 네트워크는 참여 엔티티들과 관련하여 개인 네트워크로 간주될 수 있다. 일부 예들에서, 각각의 엔티티(노드)는, 블록이 유효하며 블록체인에 추가되기 위해 각각의 모든 블록에 서명해야 한다. 일부 예들에서, 블록이 유효하며 블록체인에 추가되기 위해 적어도 엔티티들(노드들)의 서브세트(예를 들어, 적어도 7개의 엔티티들)가 각각의 모든 블록에 서명해야 한다.
그러나, 본 명세서의 구현들은 임의의 적절한 유형의 블록체인 네트워크에서 실현될 수 있다.
본 명세서의 구현들은 위의 맥락을 고려하여 본원에서 추가로 상세히 설명된다. 보다 구체적으로 그리고 위에서 소개된 바와 같이, 본 명세서의 구현들은 다른 그룹들과 병렬로 공유 의존성을 갖는 트랜잭션들의 그룹들을 실행하는 것에 관한 것이다. 상이한 그룹들 내의 트랜잭션들은 서로에 대한 의존성을 갖지 않기 때문에(예를 들어, 블록체인 네트워크의 동일한 계정에 영향을 미치지 않음) 상이한 그룹들 내의 트랜잭션들이 서로에 대해 실행되는 순서는 블록체인 네트워크의 전반적인 상태에 영향을 미치지 않는다. 따라서, 이러한 트랜잭션들은 병렬로 실행될 수 있으며, 이는 블록체인 네트워크에서 트랜잭션 처리량의 증가로 이어질 수 있다.
도 1은 본 명세서의 구현들을 실행하는데 사용될 수 있는 환경(100)의 예를 도시한다. 일부 예들에서, 환경(100)은 엔티티들이 공개 블록체인 네트워크(102)에 참여하는 것을 가능하게 한다. 환경(100)은 컴퓨팅 디바이스들(106, 108) 및 네트워크(110)를 포함한다. 일부 예에서, 네트워크(110)는 근거리 네트워크(LAN), 광역 네트워크(WAN), 인터넷 또는 이들의 조합을 포함하고, 웹 사이트, 사용자 디바이스들(예를 들어, 컴퓨팅 디바이스들) 및 백-엔드 시스템들을 연결한다. 일부 예들에서, 네트워크(110)는 유선 및/또는 무선 통신 링크를 통해 액세스될 수 있다. 일부 예들에서, 네트워크(110)는 공개 블록체인 네트워크(102)와 그리고 그 내부의 통신을 가능하게 한다. 일반적으로, 네트워크(110)는 하나 이상의 통신 네트워크들을 나타낸다. 일부 경우들에서, 컴퓨팅 디바이스(106, 108)는 클라우드 컴퓨팅 시스템(도시되지 않음)의 노드들일 수 있거나, 또는 각각의 컴퓨팅 디바이스(106, 108)는 분산된 프로세싱 시스템으로서 기능하고 네트워크에 의해 상호연결된 복수의 컴퓨터들을 포함하는 별개의 클라우드 컴퓨팅 시스템일 수 있다.
도시된 예에서, 컴퓨팅 시스템들(106, 108)은 각각 공개 블록체인 네트워크(102)에서 노드로서 참여할 수 있는 임의의 적절한 컴퓨팅 시스템을 포함할 수 있다. 컴퓨팅 디바이스들의 예들은 제한 없이, 서버, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨팅 디바이스 및 스마트 폰을 포함한다. 일부 예들에서, 컴퓨팅 시스템들(106, 108)은 공개 블록체인 네트워크(102)와 상호작용하기 위한 하나 이상의 컴퓨터-구현 서비스들을 호스팅한다. 예를 들어, 컴퓨팅 시스템(106)은 제 1 엔티티(예를 들어, 참가자 A)가 하나 이상의 다른 엔티티들(예를 들어, 다른 참가자들)과의 그의 트랜잭션들을 관리하기 위해 사용하는 트랜잭션 관리 시스템과 같은 제 1 엔티티의 컴퓨터-구현 서비스들을 호스팅할 수 있다. 컴퓨팅 시스템(108)은 제 2 엔티티(예를 들어, 참가자 B)가 하나 이상의 다른 엔티티들(예를 들어, 다른 참가자들)과의 그의 트랜잭션들을 관리하기 위해 사용하는 트랜잭션 관리 시스템과 같은 제 2 엔티티의 컴퓨터-구현 서비스들을 호스팅할 수 있다. 도 1의 예에서, 공개 블록체인 네트워크(102)는 노드의 피어-투-피어 네트워크로서 표현되고, 컴퓨팅 시스템들(106, 108)은 공개 블록체인 네트워크(102)에 참여하는 제 1 엔티티 및 제 2 엔티티의 노드들을 각각 제공한다.
도 2는 본 명세서의 구현들에 따른 개념적 아키텍처(200)의 예를 도시한다. 개념적 아키텍처(200)의 예들은 참가자 A, 참가자 B 및 참가자 C에 각각 대응하는 참가자 시스템들(202, 204, 206)을 포함한다. 각각의 참가자(예를 들어, 사용자, 기업)는 복수의 노드들(214)(이들 중 적어도 일부는 블록체인(216)에 정보를 불변적으로 레코드함)을 포함하는 피어-투-피어 네트워크로서 제공된 블록체인 네트워크(212)에 참여한다. 단일 블록체인(216)이 블록체인 네트워크(212) 내에서 개략적으로 도시되어 있지만, 본원에서 더 상세히 설명되는 바와 같이, 블록체인(216)의 다수의 사본들이 제공되고 블록체인 네트워크(212)를 통해 유지된다.
도시된 예에서, 각각의 참가자 시스템(202, 204, 206)은 각각 참가자 A, 참가자 B 및 참가자 C에 의해 제공되거나 이를 대신하며, 블록체인 네트워크 내에서 각각의 노드(214)로서 기능한다. 본원에서 사용되는 바와 같은 노드는 일반적으로 블록체인 네트워크(212)에 연결되고 각각의 참가자가 블록체인 네트워크에 참여하는 것을 가능하게 하는 개별 시스템(예를 들어, 컴퓨터, 서버)을 지칭한다. 도 2의 예에서, 참가자는 각각의 노드(214)에 대응한다. 그러나 참가자는 블록체인 네트워크(212) 내에서 다수의 노드들(214)을 동작시킬 수 있고 그리고/또는 다수의 참가자들은 노드(214)를 공유할 수 있는 것으로 고려된다. 일부 예들에서, 참가자 시스템들(202, 204, 206)은 프로토콜(예를 들어, HTTPS(hypertext transfer protocol secure))을 사용하여 그리고/또는 RPC(remote procedure call)들을 사용하여 블록체인 네트워크(212)와 통신하거나 블록체인 네트워크(212)를 통해 통신한다.
노드들(214)은 블록체인 네트워크(212) 내에서 다양한 참여도들을 가질 수 있다. 예를 들어, 일부 노드들(214)은 (예를 들어, 블록체인(216)에 블록을 추가하는 마이너(miner) 노드로서) 컨센서스 프로세스에 참여할 수 있는 반면, 다른 노드들(214)은 컨센서스 프로세스에 참여하지 않는다. 다른 예로서, 일부 노드들(214)은 블록체인(216)의 완전한 사본을 저장하는 반면, 다른 노드들(214)은 블록체인(216)의 단지 일부의 사본만을 저장한다. 예를 들어, 데이터 액세스 특권들은 각각의 참가자가 자신의 각각의 시스템 내에 저장하는 블록체인 데이터를 제한할 수 있다. 도 2의 예에서, 참가자 시스템들(202, 204, 206)은 블록체인(216)의 각각의 완전한 사본들(216', 216'', 216''')을 저장한다.
블록체인(예를 들어, 도 2의 블록체인(216))은 블록들의 체인으로 구성되며, 각각의 블록은 데이터를 저장한다. 데이터의 예들은 둘 이상의 참가자들 간의 트랜잭션을 나타내는 트랜잭션 데이터를 포함한다. 트랜잭션들이 비-제한적인 예로서 본원에서 사용되지만, 임의의 적절한 데이터가 블록체인(예를 들어, 문서들, 이미지들, 비디오들, 오디오)에 저장될 수 있는 것으로 고려된다. 트랜잭션들의 예들은 제한 없이, 가치있는 것(예를 들어, 자산들, 제품들, 서비스들)의 교환들을 포함한다. 트랜잭션 데이터는 블록체인 내에 불변적으로 저장된다. 즉, 트랜잭션 데이터를 변경할 수 없다.
블록에 저장하기 전에, 트랜잭션 데이터가 해시된다. 해싱은 트랜잭션 데이터(문자열 데이터로서 제공됨)를 고정-길이 해시 값(문자열 데이터로서 또한 제공됨)으로 변환하는 프로세스이다. 트랜잭션 데이터를 획득하기 위해 해시 값을 언-해시(un-hash)하는 것을 가능하지 않다. 해싱은, 트랜잭션 데이터의 아주 약간의 변화가 완전히 상이한 해시 값을 발생시키는 것을 보장한다. 또한 그리고 위에서 언급된 바와 같이, 해시 값은 고정 길이이다. 즉, 트랜잭션 데이터의 크기에 관계없이, 해시 값의 길이는 고정된다. 해싱은, 해시 값을 생성하기 위해 해시 함수를 통해 트랜잭션 데이터를 프로세싱하는 것을 포함한다. 해시 함수의 예들은 제한 없이, 256-비트 해시 값들을 출력하는 SHA(secure hash algorithm)-256을 포함한다.
다수의 트랜잭션들의 트랜잭션 데이터가 해시되고 블록에 저장된다. 예를 들어, 두 트랜잭션들의 해시 값들이 제공되며 자체로 해시되어 다른 해시를 제공한다. 블록에 저장될 모든 트랜잭션들에 대해, 단일 해시 값이 제공될 때까지 이 프로세스가 반복된다. 이 해시 값은 머클(Merkle) 루트 해시로서 지칭되며, 블록의 헤더에 저장된다. 트랜잭션들 중 임의의 것에서의 변화는 그의 해시 값의 변화, 및 궁극적으로 머클 루트 해시의 변화를 초래할 것이다.
블록들은 컨센서스 프로토콜을 통해 블록체인에 추가된다. 블록체인 네트워크 내의 다수의 노드들은 컨센서스 프로토콜에 참여하고 블록체인에 블록을 추가하기 위해 경쟁한다. 이러한 노드들은 마이너들(또는 마인더(minder) 노드)로서 지칭된다. 위에서 소개된 POW가 비-제한적인 예로서 사용된다.
마이너 노드들은 컨센서스 프로세스를 실행하여 블록체인에 트랜잭션들을 추가한다. 다수의 마이너 노드들이 컨센서스 프로세스에 참여하지만, 단 하나의 마이너 노드만이 블록을 블록체인에 기록할 수 있다. 즉, 마이너 노드는 컨센서스 프로세스에서 경쟁하여 자신의 블록이 블록체인에 추가되게 한다. 더 상세하게, 마이너 노드는 트랜잭션 풀로부터 (예를 들어, 만약 있다면, 블록에 포함될 수 있는 트랜잭션들의 수에 관한 미리 정의된 한계까지) 보류중인 트랜잭션들을 주기적으로 수집한다. 트랜잭션 풀은 블록체인 네트워크의 참가자로부터의 트랜잭션 메시지들을 포함한다. 마이너 노드는 블록을 구성하고 트랜잭션들을 블록에 추가한다. 트랜잭션들을 블록에 추가하기 전에, 마이너 노드는 트랜잭션들 중 임의의 것이 블록체인의 블록에 이미 포함되어 있는지를 검사한다. 트랜잭션이 다른 블록에 이미 포함된 경우, 트랜잭션이 폐기된다.
마이너 노드는 블록 헤더를 생성하고, 블록의 모든 트랜잭션들을 해시하고, 블록의 모든 트랜잭션들에 대해 단일 해시 값이 제공될 때까지(머클 루트 해시) 추가의 해시 값을 생성하도록 쌍들의 해시 값을 결합한다. 이 해시는 블록 헤더에 추가된다. 마이너는 또한 블록체인에서 가장 최근 블록(즉, 블록체인에 추가된 마지막 블록)의 해시 값을 결정한다. 마이너 노드는 또한 넌스(nonce) 값 및 타임스탬프를 블록 헤더에 추가한다. 마이닝 프로세스에서, 마이너 노드는 필요한 파라미터들을 충족하는 해시 값을 발견하도록 시도한다. 마이너 노드는 필요한 파라미터들을 충족하는 해시 값을 발견할 때까지 넌스 값을 계속 변경한다.
블록체인 네트워크의 각각의 모든 마이너는 필요한 파라미터들을 충족하는 해시 값을 발견하도록 시도하며, 이러한 방식으로 서로 경쟁한다. 결국, 마이너 노드들 중 하나는 필요한 파라미터들을 충족하는 해시 값을 발견하고 이를 블록체인 네트워크 내의 다른 모든 마이너 노드에 공고한다. 다른 마이너 노드들은 해시 값을 검증하고 올바른 것으로 결정되는 경우, 블록의 각각의 트랜잭션을 검증하고 블록을 수락하고, 블록을 블록체인의 자신의 사본에 덧붙인다. 이러한 방식으로, 블록체인의 글로벌 상태는 블록체인 네트워크 내의 모든 마이너 노드들에 걸쳐 일관된다. 위에서 설명된 프로세스는 POW 컨센서스 프로토콜이다.
비-제한적인 예가 도 2를 참조하여 제공된다. 이 예에서, 참가자 A는 참가자 B에게 금액을 송금하고자 한다. 참가자 A는 트랜잭션 메시지(예를 들어, 발신자, 수취자 및 값(value) 필드들을 포함함)를 생성하고 트랜잭션 메시지를 블록체인 네트워크에 전송하며, 이는 트랜잭션 메시지를 트랜잭션 풀에 추가한다. 블록체인 네트워크 내의 각각의 마이너 노드는 블록을 생성하고, 트랜잭션 풀로부터 (예를 들어, 만약 있다면, 블록에 추가될 수 있는 트랜잭션들의 수에 관한 미리 정의된 한계까지) 모든 트랜잭션들을 취하고, 트랜잭션들을 블록에 추가한다. 이러한 방식으로, 참가자 A에 의해 게시된 트랜잭션은 마이너 노드들의 블록들에 추가된다.
일부 블록체인 네트워크들에서, 암호화가 구현되어 트랜잭션의 프라이버시를 유지한다. 예를 들어, 두 노드들이 트랜잭션을 비공개로 유지하고자 하여서, 블록체인 네트워크 내의 다른 노드들이 트랜잭션의 세부사항을 구별할 수 없게 하는 경우, 노드들은 트랜잭션 데이터를 암호화할 수 있다. 암호화 방법들의 예들은 제한 없이, 대칭 암호화 및 비대칭 암호화를 포함한다. 대칭 암호화는 암호화(평문으로부터 암호문을 생성함) 및 복호화(암호문으로부터 평문을 생성함) 둘 모두에 단일 키를 사용하는 암호화 프로세스를 지칭한다. 대칭 암호화에서, 동일한 키를 다수의 노드들이 이용 가능하여서, 각각의 노드는 트랜잭션 데이터를 암호화/복호화할 수 있다.
비대칭 암호화는 개인 키와 공개 키를 각각 포함하는 키 쌍들을 사용하며, 개인 키는 각각의 노드에만 알려지고 공개 키는 블록체인 네트워크 내의 임의의 또는 모든 다른 노드들에 알려진다. 노드는 다른 노드의 공개 키를 사용하여 데이터를 암호화할 수 있으며 암호화된 데이터는 다른 노드의 개인 키를 사용하여 복호화될 수 있다. 예를 들어, 그리고 도 2를 다시 참조하면, 참가자 A는 참가자 B의 공개 키를 사용하여 데이터를 암호화하고, 암호화된 데이터를 참가자 B에게 전송할 수 있다. 참가자 B는 자신의 개인 키를 이용하여 암호화된 데이터(암호문)를 복호화하고 오리지널 데이터(평문)를 추출한다. 노드의 공개 키로 암호화된 메시지는 노드의 개인 키를 이용해서만 복호화될 수 있다.
비대칭 암호화는 트랜잭션의 유효성뿐만 아니라, 트랜잭션의 참가자들이 트랜잭션의 다른 참가자들을 확인하는 것을 가능하게 하는 디지털 서명들을 제공하는 데 사용된다. 예를 들어, 노드는 메시지에 디지털로 서명할 수 있고 다른 노드는 참가자 A의 디지털 서명에 기초하여 메시지가 노드에 의해 전송되었음을 확인할 수 있다. 디지털 서명들은 또한, 메시지들이 전송 도중에 변조(tamper)되지 않았음을 보장하는 데 사용될 수 있다. 예를 들어, 그리고 도 2를 재차 참조하면, 참가자 A는 참가자 B에 메시지를 전송할 것이다. 참가자 A는 메시지의 해시를 생성하고, 그 후 자신의 개인 키를 이용하여, 해시를 암호화하여 암호화된 해시로서 디지털 서명을 제공한다. 참가자 A는 메시지에 디지털 서명을 덧붙이고 디지털 서명을 한 메시지를 참가자 B에 전송한다. 참가자 B는 참가자 A의 공개 키를 사용하여 디지털 서명을 복호화하고 해시를 추출한다. 참가자 B는 메시지를 해시하고 해시들을 비교한다. 해시들이 동일한 경우, 참가자 B는 메시지가 실제로 참가자 A로부터 왔으며 변조되지 않았음을 확인할 수 있다.
본 명세서의 구현들에 대한 추가의 맥락을 제공하기 위해, 도 3a는 본 명세서의 구현에 따른 블록체인 네트워크에서의 트랜잭션들에 대한 실행 순서(300)의 예를 도시한다. 도시된 바와 같이, 실행 순서(300)는, 복수의 트랜잭션들(305, 310, 315, 320)이 블록체인 네트워크의 노드들에 의해 실행되는 순서에 따라 순서화된 복수의 트랜잭션들(305, 310, 315, 320)을 포함한다. 트랜잭션(305a, 305b 및 305c)은 스마트 계약들에 대한 호출(call)들이다. 또한, 스마트 계약 호출들 외에도, 실행 순서(300)는 예를 들어, 동일한 계정에 영향을 미치는 것과 같은 공통의 의존성을 공유하는 (크로스 선영으로 표시되는) 다수의 트랜잭션들의 그룹들을 포함한다. 트랜잭션들(310a, 310b)은 제 1 그룹을 나타내고, 트랜잭션들(315a-e)은 제 2 그룹을 나타내고, 320a-c는 제 3 그룹을 나타낸다. 아래에서 설명되는 바와 같이, 트랜잭션들의 각각의 그룹은 본 명세서의 구현들에 따라 블록체인 네트워크의 노드들에 의해 병렬로 실행될 수 있다.
도 3b는 본 명세서의 구현에 따른 블록체인 네트워크에서의 트랜잭션들에 대한 병렬 실행 순서(350)의 예를 도시한다. 도시된 바와 같이, 병렬 실행 순서(350)에서, 트랜잭션들의 그룹들(355, 360, 365, 370 및 375)이 식별되었다. 블록체인 네트워크의 노드들은 도 3b에 도시되고 논의된 바와 같이 트랜잭션들의 그룹들을 병렬로 실행할 수 있다. 일부 경우들에서, 그룹 내의 모든 트랜잭션들은 공통 의존성을 공유하고, 이에 따라 오리지널 실행 순서에 따라 직렬로 실행된다. 이는, 블록체인 네트워크의 상태(예를 들어, 계정 잔액들)는, 도 3a의 실행 순서(300)에 따라 트랜잭션들이 수행된 후에 나타날 결과와, 병렬 실행 순서(350)에 따라 트랜잭션들을 실행한 결과가 동일할 것임을 보장한다.
도 3b에서 트랜잭션들 중 임의의 것을 실행하기 전에 계정 A가 $0의 잔액을 갖는 예를 고려하며, 여기서 트랜잭션(310a)은 계정 B로부터 계정 A로 $300의 금액의 지불을 나타내고, 트랜잭션(310b)은 계정 A로부터 계정 C로의 $50의 지불을 나타낸다. 트랜잭션들(310a 및 310b)이 (실행 순서(300)에 원래 설명된 바와 같이) 직렬로 실행되는 경우, 계정 A에는 먼저 $300의 자금이 조달되고, 그 후 $50가 인출되어 $250의 잔액을 남길 것이다. 그러나, 트랜잭션들(310a 및 310b)이 직렬로 실행되지 않고, 트랜잭션(310b)이 310a 이전에 실행되는 경우, 계정 A는 트랜잭션(310b)의 지불이 실행될 때 $0의 잔액을 가질 것이다. 계정 A는 이 시나리오에서 지불 자금을 조달하기에 불충분한 잔액을 가질 것이며, 이는 트랜잭션(310b)이 블록체인 네트워크에 의해 거부되게 할 수 있다.
이 예에 기반하여, 트랜잭션(320a)이 계정 D로부터 계정 E로 $100의 지불을 나타내는 경우를 고려한다. 트랜잭션(320a)에 의해 영향을 받는 계정들(계정들(D 및 E))은 트랜잭션들(310a 및 310b)에 의해 영향을 받는 계정들(계정(A, B 및 C)) 중 어느 것도 포함하지 않기 때문에, 트랜잭션(320a)은 트랜잭션들(310a 및 310b)과 공통 의존성을 갖지 않는다. 따라서, 트랜잭션(320a)은 트랜잭션들(310a 및 310b)과 병렬로 실행될 수 있다.
일부 구현들에서, 직렬로 실행될 트랜잭션들은 함께 그룹핑될 수 있다. 예를 들어, 도 3b에 도시된 바와 같이, 트랜잭션들(310a-b)은 355으로 그룹핑되고, 트랜잭션들(315a, 315b 및 315c)은 360으로 그룹핑되고, 트랜잭션(320a)은 365으로 그룹핑된다. 그룹들(355, 360 및 365) 각각은 블록체인 네트워크의 노드들에 의해 병렬로 실행될 수 있다. 트랜잭션 그룹들(355, 360 및 365)을 병렬로 실행하는 것은 블록체인 네트워크 전반에 걸친 트랜잭션 처리량의 증가로 이어질 수 있는데, 그 이유는 네트워크는 이제, 모든 트랜잭션들이 직렬로 실행되었던 경우 단 하나 보다는, 임의의 한 시간에 3개의 트랜잭션들을 병렬로 실행하기 때문이다.
도 3b는 또한 계약 호출들(305a-c)을 포함한다. 계약 호출들은 병렬 실행이 수렴하는 동기화 지점을 나타낸다. 계약 호출들은 스마트 계약을 구성하는 명령어들의 실행을 야기하기 때문에, 특정 계약 호출이 영향을 미치는 계정들의 범위를 결정하는 것이 가능하지 않을 수 있다. 예를 들어, 특정 계정 및 지불 금액을 파라미터로 취하고 일부 조건이 참인 경우 특정 계정에 지불 금액을 적용하는 단순 스마트 계약을 고려한다. 이 스마트 계약의 호출자는 스마트 계약이 호출될 때 특정 계정을 지정하기 때문에, 특정 스마트 계약 자체의 정의(즉, 그의 소스 코드)로부터, 스마트 계약에 대한 특정 호출이 어느 계정에 영향을 미칠지를 결정하는 것이 가능하지 않다. 이러한 이유로, 일부 구현들에서, 계약 호출은 블록체인 네트워크 내의 모든 계정들에 영향을 미칠 가능성이 있는 트랜잭션으로서 간주될 수 있으며, 이는 따라서 다른 트랜잭션들과 병렬로 실행될 수 없다. 따라서, 병렬 실행 순서(350)는 그것이 계약 호출에 도달할 때 수렴한다. 예를 들어, 도시된 바와 같이, 그룹들(355, 360 및 365)은 계약 호출(305b)에 도달할 때까지 병렬로 실행된다. 이 지점에서, 블록체인 네트워크는 그룹들(355, 360 및 365)의 모든 트랜잭션들이 실행을 완료할 때까지 대기하고 그 후, 스마트 계약 호출(305b)의 실행을 진행한다.
계약 호출(305b)가 완료된 후, 다른 스마트 계약 호출(예를 들어, 305c)에 직면할 때까지 트랜잭션들의 그룹들(예를 들어, 370 및 375)이 블록체인 네트워크에 의해 다시 병렬로 실행될 수 있으며, 이 지점에서 병렬 실행은 스마트 계약 호출의 실행 이전에 재차 수렴한다.
도 4는 본 명세서의 구현들에 따라 실행될 수 있는 프로세스(400)의 예를 도시한다. 일부 구현들에서, 프로세스(400)는 하나 이상의 컴퓨팅 디바이스들을 사용하여 실행되는 하나 이상의 컴퓨터-실행 가능 프로그램들을 사용하여 수행될 수 있다.
402에서, 블록체인에서 실행될 복수의 트랜잭션들이 식별된다. 트랜잭션들은 실행 순서로 배열되고, 실행 순서는 복수의 트랜잭션들 이후에 배열된 계약 호출을 포함한다. 일부 경우들에서, 블록체인에서 실행될 복수의 트랜잭션들을 식별하는 것은 블록체인 네트워크에 브로드캐스트된 트랜잭션들을 수신하는 것을 포함한다. 일부 구현들에서, 계약 호출은 블록체인 네트워크에 의해 유지되는 블록체인에 저장된 스마트 계약을 실행하기 위한 요청이다.
404에서, 트랜잭션들의 그룹들이 복수의 트랜잭션들 내에서 식별되며, 여기서 각각의 그룹 내의 각각의 트랜잭션은 블록체인 네트워크에서 그룹 내의 다른 트랜잭션들과 동일한 계정과 연관된다.
406에서, 블록체인 네트워크의 노드들은 트랜잭션들의 그룹들 각각을 병렬로 실행하도록 지시받고 트랜잭션들의 각각의 그룹을 실행하는 것은 실행 순서에 따라 직렬로 그룹 내의 트랜잭션들을 실행하는 것을 포함한다. 일부 경우들에서, 트랜잭션들의 그룹들 각각을 병렬로 실행하도록 블록체인 네트워크의 노드들에 지시하는 것은, 트랜잭션들의 제 1 그룹을 실행하도록 노드들의 제 1 세트에 지시하고 트랜잭션들의 제 2 그룹을 실행하도록 노드들의 제 1 세트에 지시하는 것을 포함한다. 일부 구현들에서, 트랜잭션들의 그룹들 각각을 병렬로 실행하도록 블록체인 네트워크의 노드들에 지시하는 것은, 네트워크를 통해 노드들에 메시지를 전송하는 것을 포함한다.
408에서, 블록체인 네트워크의 노드들이 트랜잭션들의 그룹들 전부의 실행을 완료했다는 결정이 내려진다. 일부 구현들에서, 블록체인 네트워크의 노드들이 트랜잭션들의 그룹들 전부의 실행을 완료했다고 결정하는 것은, 복수의 트랜잭션들의 모든 트랜잭션들이 블록체인 네트워크에 의해 유지되는 블록체인에 저장된 하나 이상의 블록에 포함된 것으로 결정하는 것을 포함한다.
410에서, 블록체인 네트워크의 노드들이 트랜잭션들의 그룹들 전부의 실행을 완료했다고 결정하는 것에 대한 응답으로, 블록체인 네트워크의 노드들은 계약 호출을 실행하도록 지시를 받는다.
일부 구현들에서, 프로세스(400)는, 블록체인 네트워크의 노드들이 계약 호출의 실행을 완료했다고 결정하는 것; 블록체인에서 실행될 제 2 복수의 트랜잭션들이 식별하는 것 ― 복수의 제 2 트랜잭션들은 실행 순서로 계약 호출 이후에 배열됨 ― ; 제 2 복수의 트랜잭션들 내에서 트랜잭션들의 제 2 그룹들을 식별하는 것; 및 트랜잭션들의 제 2 그룹들 각각을 병렬로 실행하도록 블록체인 네트워크의 노드들에 지시하는 것을 포함하고, 트랜잭션들의 각각의 제 2 그룹을 실행하는 것은 실행 순서에 따라 직렬로 제 2 그룹 내의 트랜잭션들을 실행하는 것을 포함한다.
도 5는 본 명세서의 구현들에 따른 장치(500)의 모듈들의 예들을 도시한다. 장치(500)는 컨소시엄 블록체인 네트워크와 같은 블록체인 네트워크에서 트랜잭션들의 병렬 실행을 가능하게 하도록 구성된 장치의 예시적인 구현일 수 있다. 장치(500)는 위에서 설명된 구현들에 대응할 수 있고, 장치(500)는 다음, 즉, 블록체인에서 실행될 복수의 트랜잭션들을 식별하기 위한 제 1 식별자 또는 제 1 식별 유닛(502) ― 트랜잭션들은 실행 순서로 배열되고, 실행 순서는 복수의 트랜잭션들 이후에 배열된 계약 호출을 포함함 ― ; 복수의 트랜잭션들 내에서 트랜잭션들의 그룹들을 식별하기 위한 제 2 식별자 또는 제 2 식별 유닛(504) ― 각각의 그룹 내의 각각의 트랜잭션은 블록체인 네트워크에서 그룹 내의 다른 트랜잭션들과 동일한 계정과 연관됨 ― ; 트랜잭션들의 그룹들 각각을 병렬로 실행하도록 블록체인 네트워크의 노드들에 지시하기 위한 제 1 지시자 또는 제 1 지시 유닛(506) ― 트랜잭션들의 각각의 그룹을 실행하는 것은 실행 순서에 따라 직렬로 그룹 내의 트랜잭션들을 실행하는 것을 포함함 ― ; 블록체인 네트워크의 노드들이 트랜잭션들의 그룹들 전부의 실행을 완료했다고 결정하기 위한 결정자 또는 결정 유닛(508); 및 블록체인 네트워크의 노드들이 트랜잭션들의 그룹들 전부의 실행을 완료했다고 결정한 것에 대한 응답으로, 계약 호출을 실행하도록 블록체인 네트워크의 노드들에 지시하기 위한 제 2 지시자 또는 제 2 지시 유닛(510)을 포함한다.
이전의 구현들에서 예시된 시스템, 장치, 모듈 또는 유닛은 컴퓨터 칩 또는 엔티티를 사용함으로써 구현될 수 있거나, 또는 소정의 기능을 갖는 제품을 사용함으로써 구현될 수 있다. 통상적인 구현 디바이스는 컴퓨터이고, 컴퓨터는 개인용 컴퓨터, 랩톱 컴퓨터, 셀룰러 폰, 카메라 폰, 스마트폰, 개인용 디지털 보조기기, 미디어 플레이어, 내비게이션 디바이스, 이메일 수신 및 전송 디바이스, 게임 콘솔, 태블릿 컴퓨터, 웨어러블 디바이스 또는 이들 디바이스들의 임의의 조합일 수 있다.
장치 내의 각각의 유닛의 기능들 및 역할들의 구현 프로세스에 대해, 이전 방법에서 대응하는 단계들의 구현 프로세스가 참조될 수 있다. 세부사항들은 여기서 간략화를 위해 생략된다.
장치 구현은 기본적으로 방법 구현에 대응하기 때문에, 관련된 부분들에 대해, 방법 구현에서의 관련된 설명이 참조할 수 있다. 전술한 장치 구현은 단지 예일 뿐이다. 별개의 부분으로서 설명된 유닛은 물리적으로 별개일 수 있거나 또는 그렇지 않을 수 있고, 유닛으로서 디스플레이되는 부분은 물리적 유닛일 수 있거나 또는 그렇지 않을 수 있거나, 또는 하나의 포지션에 위치되거나 또는 다수의 네트워크 유닛 상에 분포될 수 있다. 본 명세서의 솔루션들의 목적들을 달성하기 위해 실제 요구들에 기초하여 모듈들 중 일부 또는 전부가 선택될 수 있다. 당업자는 창조적 노력들 없이 본 출원의 구현들을 이해하고 구현할 수 있다.
다시 도 5를 참조하면, 그것은 블록체인 네트워크에서 트랜잭션들의 병렬 실행을 가능하게 하기 위한 장치의 내부 기능 모듈 및 구조를 예시하는 것으로서 해석될 수 있다. 병렬 실행 장치는 블록체인 네트워크에서 트랜잭션들의 병렬 실행을 가능하게 하도록 구성된 장치의 예일 수 있다.
본 명세서에서 설명된 청구대상 액션들 및 동작들의 구현들은, 본 명세서에서 개시된 구조들 및 그들의 구조적 등가물들을 포함하는 디지털 전자 회로로, 유형으로 구체화되는 컴퓨터 소프트웨어로 또는 펌웨어로, 컴퓨터 하드웨어로, 또는 그들 중 하나 이상의 조합들로 구현될 수 있다. 본 명세서에 설명된 청구대상의 구현들은, 데이터 프로세싱 장치에 의한 실행을 위해, 또는 데이터 프로세싱 장치의 동작을 제어하기 위해 컴퓨터 프로그램 캐리어들 상에 인코딩된 하나 이상의 컴퓨터 프로그램들, 예를 들어, 컴퓨터 프로그램 명령어들의 하나 이상의 모듈들로서 구현될 수 있다. 캐리어는 유형의 비-일시적인 컴퓨터 저장 매체일 수 있다. 대안적으로 또는 부가적으로, 캐리어는 데이터 프로세싱 장치에 의한 실행을 위해 적합한 수신기 장치로의 송신을 위한 정보를 인코딩하기 위해 생성되는, 인위적으로 생성된 전파된 신호, 예를 들어, 머신-생성 전기, 광학 또는 전자기 신호일 수 있다. 컴퓨터-저장 매체는 머신-판독 가능 저장 디바이스, 머신-판독 가능 저장 기재, 랜덤 또는 직렬 액세스 메모리 디바이스, 또는 이들의 하나 이상의 조합이거나 그의 부분일 수 있다. 컴퓨터 저장 매체는 전파된 신호는 아니다.
"데이터 프로세싱 장치"라는 용어는 예로서, 프로그래밍 가능 프로세서, 컴퓨터, 또는 다수의 프로세서들 또는 컴퓨터들을 포함해서, 데이터를 프로세싱하기 위한 모든 종류의 장치, 디바이스들 및 머신들을 포함한다. 데이터 프로세싱 장치는 특수-목적 로직 회로, 예를 들어 FPGA(field programmable gate array), ASIC(application-specific integrated circuit), 또는 GPU(graphics processing unit)를 포함할 수 있다. 장치는 또한, 하드웨어 외에도, 컴퓨터 프로그램들에 대한 실행 환경을 생성하는 코드, 예를 들어, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다.
프로그램, 소프트웨어, 소프트웨어 애플리케이션, 앱, 모듈, 소프트웨어 모듈, 엔진, 스크립트, 또는 코드로서 또한 지칭되거나 설명될 수 있는 컴퓨터 프로그램은 컴파일되거나 인터프리팅된 언어들, 선언형 또는 절차형 언어들을 포함한 모든 형태의 프로그래밍 언어로 작성될 수 있으며; 그것은 자립형 프로그램 또는 모듈, 컴포넌트, 엔진, 서브루틴 또는 컴퓨팅 환경에서 실행하기에 적합한 다른 유닛을 포함한 임의의 형태로 배포될 수 있으며, 이 환경은 하나 이상의 위치들에 있는 데이터 통신 네트워크에 의해 상호연결되는 하나 이상의 컴퓨터를 포함할 수 있다.
컴퓨터 프로그램은 파일 시스템의 파일에 대응할 수 있지만 대응할 필요는 없을 수 있다. 컴퓨터 프로그램은, 다른 프로그램들 또는 데이터(예를 들어, 마크업 언어 문서에 저장되는 하나 이상의 스크립트들)를 보유하는 파일의 부분에, 문제의 프로그램에 전용된 단일 파일에, 또는 다수의 통합된 파일들(예를 들어, 하나 이상의 모듈들, 서브-프로그램 또는 코드의 부분들을 저장하는 파일들)에 저장될 수 있다.
본 명세서에서 설명된 프로세스들 및 로직 흐름들은 입력 데이터를 조작하고 출력을 생성함으로써 동작들을 수행하도록 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 컴퓨터에 의해 수행될 수 있다. 프로세스 및 로직 흐름들은 또한 특수-목적 로직 회로, 예를 들어 FPGA, ASIC 또는 GPU, 또는 특수-목적 로직 회로 및 하나 이상의 프로그래밍된 컴퓨터들의 조합에 의해 수행될 수 있다.
컴퓨터 프로그램의 실행에 적합한 컴퓨터들은 범용 또는 특수 목적 마이크로프로세서들, 또는 둘 모두 또는 임의의 다른 종류의 중앙 처리 장치에 기초할 수 있다. 일반적으로, 중앙 처리 장치는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령어들 및/또는 데이터를 수신할 것이다. 컴퓨터의 엘리먼트들은 명령어들을 실행하기 위한 중앙 처리 장치 및 명령어들 및/또는 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들을 포함할 수 있다. 중앙 처리 장치 및 메모리는 특수-목적 로직 회로에 의해 보완되거나 또는 거기에 통합될 수 있다.
일반적으로, 컴퓨터는 적어도 하나의 비-일시적인 컴퓨터-판독 가능 저장 매체(컴퓨터-판독 가능 메모리로서 또한 지칭됨)에 커플링될 것이다. 컴퓨터에 커플링된 저장 매체는 컴퓨터의 내부 컴포넌트(예를 들어, 통합된 하드 드라이브) 또는 외부 컴포넌트(예를 들어, 범용 직렬 버스(USB) 하드 드라이브 또는 네트워크를 통해 액세스되는 저장 시스템)일 수 있다. 저장 매체의 예들은 예를 들어, 자기, 자기 광학 또는 광학 디스크들, 솔리드 스테이트 드라이브들, 클라우드 저장 시스템들과 같은 네트워크 저장 자원들, 또는 다른 유형들의 저장 매체를 포함할 수 있다. 그러나 컴퓨터는 이러한 디바이스들을 가질 필요가 없다. 또한, 컴퓨터는 다른 디바이스, 예를 들어, 몇 개만 언급하면, 모바일 전화, 개인용 디지털 보조기기(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, 글로벌 포지셔닝 시스템(GPS) 수신기 또는 휴대용 저장 디바이스, 예를 들어 범용 직렬 버스 (USB) 플래시 드라이브에 임베딩될 수 있다.
사용자와의 상호작용을 제공하기 위해, 본 명세서에 설명된 청구 대상의 구현들은 정보를 사용자에게 디스플레이하기 위한 디스플레이 디바이스 예를 들어, LCD(liquid crystal display) 모니터, 및 사용자가 입력을 컴퓨터에 제공할 수 있게 하는 입력 디바이스, 예를 들어 키보드 및 포인팅 디바이스, 예를 들어 마우스, 트랙볼 또는 터치패드를 갖는 컴퓨터 상에 구현되거나, 이 컴퓨터와 통신하도록 구성될 수 있다. 다른 종류들의 디바이스들은 또한, 사용자와의 상호작용을 제공하기 위해 사용될 수 있으며, 예를 들어, 사용자에게 제공된 피드백은 임의의 형태의 감각 피드백 예를 들어, 시각 피드백, 청각 피드백, 또는 촉각 피드백일 수 있고; 사용자로부터의 입력은 음향, 스피치, 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 게다가, 컴퓨터는 사용자에 의해 사용되는 디바이스에 문서들을 전송하고 이 디바이스로부터 문서들을 수신함으로써, 예를 들어, 웹 브라우저로부터 수신된 요청들에 대한 응답으로 사용자의 디바이스 상의 웹 브라우저에 웹 페이지들을 전송함으로써, 또는 사용자 디바이스 예를 들어, 스마트폰 또는 전자 태블릿 상에서 실행되는 앱과 상호작용함으로써 사용자와 상호작용할 수 있다. 또한, 컴퓨터는 텍스트 메시지 또는 다른 형태들의 메시지를 개인용 디바이스, 예를 들어 메시징 애플리케이션을 실행하는 스마트 폰에 전송하고 답신으로 사용자로부터 응답 메시지를 수신함으로써 사용자와 상호작용할 수 있다.
본 명세서는 시스템들, 장치 및 컴퓨터 프로그램 컴포넌트들과 관련하여 "~ 하도록 구성된"이라는 용어를 사용한다. 하나 이상의 컴퓨터의 시스템이 특정 동작들 또는 액션들을 수행하도록 구성된다는 것은, 시스템에는, 동작 시에 시스템이 동작들 또는 액션들을 수행하게 하는 소프트웨어, 펌웨어, 하드웨어 또는 이들의 조합이 설치되어 있음을 의미한다. 하나 이상의 컴퓨터 프로그램들이 특정 동작들 또는 액션들을 수행하도록 구성된다는 것은, 하나 이상의 프로그램들이, 데이터 프로세싱 장치에 의해 실행될 때, 장치로 하여금 동작들 또는 액션들을 수행하게 하는 명령어들을 포함한다는 것을 의미한다. 특수-목적 로직 회로가 특정 동작들 또는 액션들을 수행하도록 구성된다는 것은, 회로가 동작들 또는 액션들을 수행하는 전자 로직을 갖는다는 것을 의미한다.
본 명세서가 다수의 특정 구현 세부사항들을 포함하지만, 이들은 청구항들 그 자체들에 의해 정의되는 청구되는 대상의 범위에 관한 제한들로서 해석되어서는 안 되며, 오히려, 특정 구현들에 특유할 수 있는 특징들의 설명들로서 해석되어야 한다. 별개의 구현들의 맥락에서 본 명세서에 설명된 소정의 특징들은 또한, 단일 구현으로 조합하여 실현될 수 있다. 대조적으로, 단일 구현의 맥락에서 설명된 다양한 특징들은 또한, 다수의 구현들에서 개별적으로 또는 임의의 적합한 서브조합으로 실현될 수 있다. 더욱이, 특징들이 소정의 조합들로 작용하는 것으로 위에서 설명되고 심지어 초기에 이와 같이 청구될 수 있지만, 일부 경우들에서, 청구된 조합으로부터의 하나 이상의 특징들은 그 조합으로부터 제거될 수 있고, 청구항은 서브조합 또는 서브조합의 변동과 관련될 수 있다.
유사하게, 동작들이 특정한 순서로 도면들에 도시되고 청구항들에서 나열되지만, 이것은, 바람직한 결과들을 달성하기 위해, 그러한 동작들이 도시된 특정 순서 또는 순차적인 순서로 수행되거나, 모든 예시된 동작들이 수행될 것을 요구하는 것으로서 이해되지는 않아야 한다. 소정의 환경들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다. 또한, 위에서 설명된 구현에서의 다양한 시스템 모듈들 및 컴포넌트들의 분리는 모든 구현들에서 그러한 분리를 요구하는 것으로서 이해되지는 않아야 하고, 그리고 설명된 프로그램 컴포넌트들 및 시스템들이 일반적으로, 단일 소프트웨어 제품으로 함께 통합되거나 다수의 소프트웨어 제품들로 패키징될 수 있다는 것이 이해되어야 한다.
청구대상의 특정 구현들이 설명되었다. 다른 구현들은 다음의 청구항들의 범위 내에 존재한다. 예를 들어, 청구항들에서 열거된 액션들은, 상이한 순서로 수행될 수 있으며, 그럼에도 불구하고 원하는 결과들을 달성할 수 있다. 일 예로서, 첨부한 도면들에 도시된 프로세스들은 바람직한 결과들을 달성하기 위해, 도시된 특정한 순서 또는 순차적인 순서를 반드시 요구하지는 않는다. 일부 경우들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다.

Claims (20)

  1. 블록체인 네트워크에서 트랜잭션들의 병렬 실행을 위한 컴퓨터-구현(computer-implemented) 방법으로서,
    상기 블록체인에서 실행될 복수의 트랜잭션들을 식별하는 단계 ― 상기 트랜잭션들은 실행 순서로 배열되고, 상기 실행 순서는 상기 복수의 트랜잭션들 이후에 배열된 계약 호출(contract call)을 포함함 ― ;
    복수의 트랜잭션들 내에서 트랜잭션들의 그룹들을 식별하는 단계 ― 각각의 그룹 내의 각각의 트랜잭션은 상기 블록체인 네트워크에서 상기 그룹 내의 다른 트랜잭션들과 동일한 계정과 연관됨 ― ;
    상기 트랜잭션들의 그룹들 각각을 병렬로 실행하도록 상기 블록체인 네트워크의 노드들에 지시하는 단계 ― 상기 트랜잭션들의 각각의 그룹을 실행하는 것은 상기 실행 순서에 따라 직렬로(serially) 상기 그룹 내의 트랜잭션들을 실행하는 것을 포함함 ― ;
    상기 블록체인 네트워크의 노드들이 상기 트랜잭션들의 그룹들 전부의 실행을 완료했다고 결정하는 단계; 및
    상기 블록체인 네트워크의 노드들이 상기 트랜잭션들의 그룹들 전부의 실행을 완료했다고 결정하는 것에 대한 응답으로, 상기 계약 호출을 실행하도록 상기 블록체인 네트워크의 노드들에 지시하는 단계
    를 포함하는, 컴퓨터-구현 방법.
  2. 제 1 항에 있어서,
    상기 트랜잭션들의 그룹들 각각을 병렬로 실행하도록 상기 블록체인 네트워크의 노드들에 지시하는 단계는, 트랜잭션들의 제 1 그룹을 실행하도록 노드들의 제 1 세트에 지시하고 트랜잭션들의 제 2 그룹을 실행하도록 노드들의 제 1 세트에 지시하는 단계를 포함하는 것인, 컴퓨터-구현 방법.
  3. 제 1 항에 있어서,
    상기 블록체인 네트워크의 노드들이 상기 트랜잭션들의 그룹들 전부의 실행을 완료했다고 결정하는 단계는, 상기 복수의 트랜잭션들의 모든 트랜잭션들이 상기 블록체인 네트워크에 의해 유지되는 블록체인에 저장된 하나 이상의 블록에 포함된 것으로 결정하는 단계를 포함하는 것인, 컴퓨터-구현 방법.
  4. 제 1 항에 있어서,
    상기 블록체인 네트워크의 노드들이 상기 계약 호출의 실행을 완료했다고 결정하는 단계;
    상기 블록체인에서 실행될 제 2 복수의 트랜잭션들을 식별하는 단계 - 상기 제 2 복수의 트랜잭션들은 상기 실행 순서에서 상기 계약 호출 이후에 배열됨 ― ;
    상기 제 2 복수의 트랜잭션들 내에서 트랜잭션들의 제 2 그룹들을 식별하는 단계; 및
    상기 트랜잭션들의 제 2 그룹들 각각을 병렬로 실행하도록 상기 블록체인 네트워크의 노드들에 지시하는 단계
    를 더 포함하고,
    상기 트랜잭션들의 각각의 제 2 그룹을 실행하는 것은 상기 실행 순서에 따라 직렬로 상기 제 2 그룹 내의 트랜잭션들을 실행하는 것을 포함하는 것인, 컴퓨터-구현 방법.
  5. 제 1 항에 있어서,
    상기 트랜잭션들의 그룹들 각각을 병렬로 실행하도록 상기 블록체인 네트워크의 노드들에 지시하는 단계는, 네트워크를 통해 상기 노드들에 메시지를 전송하는 단계를 포함하는 것인, 컴퓨터-구현 방법.
  6. 제 1 항에 있어서,
    상기 블록체인에서 실행될 상기 복수의 트랜잭션들을 식별하는 단계는, 상기 블록체인 네트워크에 브로드캐스트된 트랜잭션들을 수신하는 단계를 포함하는 것인, 컴퓨터-구현 방법.
  7. 제 1 항에 있어서,
    상기 계약 호출은 상기 블록체인 네트워크에 의해 유지되는 블록체인에 저장된 스마트 계약을 실행하기 위한 요청인 것인, 컴퓨터-구현 방법.
  8. 하나 이상의 컴퓨터에 커플링되고 명령어들이 저장되어 있는 비-일시적인 컴퓨터-판독 가능 저장 매체로서,
    상기 명령어들은 하나 이상의 컴퓨터에 의해,
    블록체인에서 실행될 복수의 트랜잭션들을 식별하고 ― 상기 트랜잭션들은 실행 순서로 배열되고, 상기 실행 순서는 상기 복수의 트랜잭션들 이후에 배열된 계약 호출을 포함함 ― ;
    복수의 트랜잭션들 내에서 트랜잭션들의 그룹들을 식별하고 ― 각각의 그룹 내의 각각의 트랜잭션은 상기 블록체인 네트워크에서 상기 그룹 내의 다른 트랜잭션들과 동일한 계정과 연관됨 ― ;
    상기 트랜잭션들의 그룹들 각각을 병렬로 실행하도록 상기 블록체인 네트워크의 노드들에 지시하고 ― 상기 트랜잭션들의 각각의 그룹을 실행하는 것은 상기 실행 순서에 따라 직렬로 상기 그룹 내의 트랜잭션들을 실행하는 것을 포함함 ― ;
    상기 블록체인 네트워크의 노드들이 상기 트랜잭션들의 그룹들 전부의 실행을 완료했다고 결정하고;
    상기 블록체인 네트워크의 노드들이 상기 트랜잭션들의 그룹들 전부의 실행을 완료했다고 결정하는 것에 대한 응답으로, 상기 계약 호출을 실행하도록 상기 블록체인 네트워크의 노드들에 지시하도록
    실행 가능한 것인, 비-일시적인 컴퓨터-판독 가능 저장 매체.
  9. 제 8 항에 있어서,
    상기 트랜잭션들의 그룹들 각각을 병렬로 실행하도록 상기 블록체인 네트워크의 노드들에 지시하는 것은, 트랜잭션들의 제 1 그룹을 실행하도록 노드들의 제 1 세트에 지시하고 트랜잭션들의 제 2 그룹을 실행하도록 노드들의 제 1 세트에 지시하는 것을 포함하는 것인, 비-일시적인 컴퓨터-판독 가능 저장 매체.
  10. 제 8 항에 있어서,
    상기 블록체인 네트워크의 노드들이 상기 트랜잭션들의 그룹들 전부의 실행을 완료했다고 결정하는 것은, 상기 복수의 트랜잭션들의 모든 트랜잭션들이 상기 블록체인 네트워크에 의해 유지되는 블록체인에 저장된 하나 이상의 블록에 포함된 것으로 결정하는 것을 포함하는 것인, 비-일시적인 컴퓨터-판독 가능 저장 매체.
  11. 제 8 항에 있어서,
    상기 비-일시적인 컴퓨터-판독 가능 저장 매체는, 상기 하나 이상의 컴퓨터에 의해,
    상기 블록체인 네트워크의 노드들이 상기 계약 호출의 실행을 완료했다고 결정하고;
    상기 블록체인에서 실행될 제 2 복수의 트랜잭션들을 식별하고 - 상기 제 2 복수의 트랜잭션들은 상기 실행 순서에서 상기 계약 호출 이후에 배열됨 ― ;
    상기 제 2 복수의 트랜잭션들 내에서 트랜잭션들의 제 2 그룹들을 식별하고;
    상기 트랜잭션들의 제 2 그룹들 각각을 병렬로 실행하도록 상기 블록체인 네트워크의 노드들에 지시하도록
    실행 가능한 명령어들이 더 저장되어 있고,
    상기 트랜잭션들의 각각의 제 2 그룹을 실행하는 것은 상기 실행 순서에 따라 직렬로 상기 제 2 그룹 내의 트랜잭션들을 실행하는 것을 포함하는 것인, 비-일시적인 컴퓨터-판독 가능 저장 매체.
  12. 제 8 항에 있어서,
    상기 트랜잭션들의 그룹들 각각을 병렬로 실행하도록 상기 블록체인 네트워크의 노드들에 지시하는 것은, 네트워크를 통해 상기 노드들에 메시지를 전송하는 것을 포함하는 것인, 비-일시적인 컴퓨터-판독 가능 저장 매체.
  13. 제 8 항에 있어서,
    상기 블록체인에서 실행될 상기 복수의 트랜잭션들을 식별하는 것은, 상기 블록체인 네트워크에 브로드캐스트된 트랜잭션들을 수신하는 것을 포함하는 것인, 비-일시적인 컴퓨터-판독 가능 저장 매체.
  14. 제 8 항에 있어서,
    상기 계약 호출은 상기 블록체인 네트워크에 의해 유지되는 블록체인에 저장된 스마트 계약을 실행하기 위한 요청인 것인, 비-일시적인 컴퓨터-판독 가능 저장 매체.
  15. 시스템으로서,
    하나 이상의 컴퓨터; 및
    상기 하나 이상의 컴퓨터에 커플링되고, 명령어들이 저장되어 있는 하나 이상의 컴퓨터-판독 가능 메모리
    를 포함하고,
    상기 명령어들은 상기 하나 이상의 컴퓨터에 의해,
    블록체인에서 실행될 복수의 트랜잭션들을 식별하고 ― 상기 트랜잭션들은 실행 순서로 배열되고, 상기 실행 순서는 상기 복수의 트랜잭션들 이후에 배열된 계약 호출을 포함함 ― ;
    복수의 트랜잭션들 내에서 트랜잭션들의 그룹들을 식별하고 ― 각각의 그룹 내의 각각의 트랜잭션은 상기 블록체인 네트워크에서 상기 그룹 내의 다른 트랜잭션들과 동일한 계정과 연관됨 ― ;
    상기 트랜잭션들의 그룹들 각각을 병렬로 실행하도록 상기 블록체인 네트워크의 노드들에 지시하고 ― 상기 트랜잭션들의 각각의 그룹을 실행하는 것은 상기 실행 순서에 따라 직렬로 상기 그룹 내의 트랜잭션들을 실행하는 것을 포함함 ― ;
    상기 블록체인 네트워크의 노드들이 상기 트랜잭션들의 그룹들 전부의 실행을 완료했다고 결정하고;
    상기 블록체인 네트워크의 노드들이 상기 트랜잭션들의 그룹들 전부의 실행을 완료했다고 결정하는 것에 대한 응답으로, 상기 계약 호출을 실행하도록 상기 블록체인 네트워크의 노드들에 지시하도록
    실행 가능한 것인, 시스템.
  16. 제 15 항에 있어서,
    상기 트랜잭션들의 그룹들 각각을 병렬로 실행하도록 상기 블록체인 네트워크의 노드들에 지시하는 것은, 트랜잭션들의 제 1 그룹을 실행하도록 노드들의 제 1 세트에 지시하고 트랜잭션들의 제 2 그룹을 실행하도록 노드들의 제 1 세트에 지시하는 것을 포함하는 것인, 시스템.
  17. 제 15 항에 있어서,
    상기 블록체인 네트워크의 노드들이 상기 트랜잭션들의 그룹들 전부의 실행을 완료했다고 결정하는 것은, 상기 복수의 트랜잭션들의 모든 트랜잭션들이 상기 블록체인 네트워크에 의해 유지되는 블록체인에 저장된 하나 이상의 블록에 포함된 것으로 결정하는 것을 포함하는 것인, 시스템.
  18. 제 15 항에 있어서,
    상기 컴퓨터-판독 가능 메모리에는, 상기 하나 이상의 컴퓨터에 의해,
    상기 블록체인 네트워크의 노드들이 상기 계약 호출의 실행을 완료했다고 결정하고;
    상기 블록체인에서 실행될 제 2 복수의 트랜잭션들을 식별하고 - 상기 제 2 복수의 트랜잭션들은 상기 실행 순서에서 상기 계약 호출 이후에 배열됨 ― ;
    상기 제 2 복수의 트랜잭션들 내에서 트랜잭션들의 제 2 그룹들을 식별하고;
    상기 트랜잭션들의 제 2 그룹들 각각을 병렬로 실행하도록 상기 블록체인 네트워크의 노드들에 지시하도록
    실행 가능한 명령어들이 더 저장되어 있고,
    상기 트랜잭션들의 각각의 제 2 그룹을 실행하는 것은, 상기 실행 순서에 따라 직렬로 상기 제 2 그룹 내의 트랜잭션들을 실행하는 것을 포함하는 것인, 시스템.
  19. 제 15 항에 있어서,
    상기 트랜잭션들의 그룹들 각각을 병렬로 실행하도록 상기 블록체인 네트워크의 노드들에 지시하는 것은, 네트워크를 통해 상기 노드들에 메시지를 전송하는 것을 포함하는 것인, 시스템.
  20. 제 15 항에 있어서,
    상기 블록체인에서 실행될 상기 복수의 트랜잭션들을 식별하는 것은, 상기 블록체인 네트워크에 브로드캐스트된 트랜잭션들을 수신하는 것을 포함하는 것인, 시스템.
KR1020197023010A 2018-12-28 2018-12-28 블록체인 네트워크에서의 트랜잭션의 병렬 실행 KR102234128B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/124814 WO2019072303A2 (en) 2018-12-28 2018-12-28 EXECUTING PARALLEL TRANSACTIONS IN A BLOCK CHAINS NETWORK

Publications (2)

Publication Number Publication Date
KR20200083936A KR20200083936A (ko) 2020-07-09
KR102234128B1 true KR102234128B1 (ko) 2021-04-02

Family

ID=66100036

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197023010A KR102234128B1 (ko) 2018-12-28 2018-12-28 블록체인 네트워크에서의 트랜잭션의 병렬 실행

Country Status (13)

Country Link
US (1) US11132676B2 (ko)
EP (1) EP3571653A4 (ko)
JP (1) JP6816300B2 (ko)
KR (1) KR102234128B1 (ko)
CN (1) CN110520882B (ko)
AU (1) AU2018347203B2 (ko)
BR (1) BR112019016064A2 (ko)
CA (1) CA3052348A1 (ko)
MX (1) MX2019009286A (ko)
PH (1) PH12019501791A1 (ko)
RU (1) RU2738826C1 (ko)
SG (1) SG11201907157XA (ko)
WO (1) WO2019072303A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230068800A (ko) 2021-11-11 2023-05-18 서강대학교산학협력단 트랜잭션 충돌 방지 가능한 블록체인 네트워크 및 트랜잭션 충돌 방지 방법

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118196938A (zh) * 2018-12-06 2024-06-14 开利公司 由区块链支持的智能锁系统
KR102234128B1 (ko) 2018-12-28 2021-04-02 어드밴스드 뉴 테크놀로지스 씨오., 엘티디. 블록체인 네트워크에서의 트랜잭션의 병렬 실행
WO2019072305A2 (en) 2018-12-28 2019-04-18 Alibaba Group Holding Limited PARALLEL EXECUTION OF TRANSACTIONS IN A BLOCK CHAIN NETWORK BASED ON WHITE LISTS OF INTELLIGENT CONTRACTS
SG11201910057QA (en) * 2019-04-12 2019-11-28 Alibaba Group Holding Ltd Performing parallel execution of transactions in a distributed ledger system
WO2019120334A2 (en) 2019-04-12 2019-06-27 Alibaba Group Holding Limited Performing parallel execution of transactions in a distributed ledger system
CN110998633B (zh) 2019-04-30 2023-11-21 创新先进技术有限公司 在区块链技术中避免双花问题的方法和设备
EP3983923A1 (en) * 2019-06-15 2022-04-20 Facebook, Inc. Scalable, secure, efficient, and adaptable distributed digital ledger transaction network
US11126593B2 (en) 2019-06-15 2021-09-21 Facebook, Inc. Scalable, secure, efficient, and adaptable distributed digital ledger transaction network
CN110611702B (zh) * 2019-08-29 2022-04-01 魏松杰 区块链的文件快速传输方法、设备、系统及存储介质
CN113570460A (zh) * 2019-08-30 2021-10-29 创新先进技术有限公司 在区块链中并发执行交易的方法和装置
WO2021064852A1 (ja) * 2019-10-01 2021-04-08 富士通株式会社 トランザクション管理装置、トランザクション管理プログラム、及びトランザクション管理方法
KR102342788B1 (ko) * 2019-11-19 2021-12-24 한양대학교 산학협력단 트랜잭션의 병렬적 실행을 지원하는 방법, 이를 이용하는 블록체인 노드 및 프로그램
KR102335058B1 (ko) * 2019-11-19 2021-12-06 한양대학교 산학협력단 상호 의존성을 가지는 병렬 트랜잭션들을 선형화하는 방법, 이를 이용하는 블록체인 노드 및 프로그램
CN111181731B (zh) * 2019-12-31 2022-07-12 南京可信区块链与算法经济研究院有限公司 联盟链中智能合约的执行优化方法、系统及存储介质
CN111240831A (zh) * 2019-12-31 2020-06-05 陕西医链区块链集团有限公司 区块链中交易并行执行方法、装置、电子设备、存储介质
CN111339108A (zh) * 2020-02-18 2020-06-26 杭州复杂美科技有限公司 一种交易并行执行方法、设备及存储介质
CN111292192A (zh) * 2020-02-18 2020-06-16 杭州复杂美科技有限公司 一种交易并行执行方法、设备及存储介质
CN111405037A (zh) * 2020-03-13 2020-07-10 杭州复杂美科技有限公司 区块同步方法、设备和存储介质
CN111414374B (zh) * 2020-03-20 2023-04-28 深圳市迅雷网络技术有限公司 一种区块链交易并发处理方法、装置及设备
CN111640020B (zh) 2020-05-22 2023-09-19 百度在线网络技术(北京)有限公司 区块链中事务请求处理方法、装置、设备和介质
CN112104606B (zh) * 2020-08-12 2022-06-17 北京智融云河科技有限公司 一种基于随机多节点的可信执行方法和系统
CN112037061A (zh) * 2020-08-31 2020-12-04 深圳前海微众银行股份有限公司 区块链中交易的处理方法、装置、电子设备及存储介质
WO2022093256A1 (en) * 2020-10-30 2022-05-05 Hewlett-Packard Development Company, L.P. Provisioning of computational resources
US11743327B2 (en) 2021-02-05 2023-08-29 International Business Machines Corporation Topological ordering of blockchain associated proposals
CN112884586B (zh) * 2021-04-28 2021-08-03 支付宝(杭州)信息技术有限公司 交易执行方法和区块链节点
CN113064730A (zh) * 2021-04-30 2021-07-02 支付宝(杭州)信息技术有限公司 区块链交易执行方法、区块链节点及控制装置
CN113658003B (zh) * 2021-08-17 2024-03-29 工银科技有限公司 基于区块链网络的交易方法、装置、设备及存储介质
CN113656507B (zh) * 2021-08-26 2024-03-08 支付宝(杭州)信息技术有限公司 区块链系统中执行交易的方法及装置
CN113537991B (zh) * 2021-09-16 2022-03-01 中国信息通信研究院 一种跨链交易有序执行方法和跨链系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170212781A1 (en) 2016-01-26 2017-07-27 International Business Machines Corporation Parallel execution of blockchain transactions
CN107688999A (zh) * 2017-08-11 2018-02-13 杭州秘猿科技有限公司 一种基于区块链的并行交易执行方法
US20180158034A1 (en) 2016-12-07 2018-06-07 International Business Machines Corporation Dynamic reordering of blockchain transactions to optimize performance and scalability

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7401235B2 (en) * 2002-05-10 2008-07-15 Microsoft Corporation Persistent authorization context based on external authentication
US9870310B1 (en) 2013-11-11 2018-01-16 Amazon Technologies, Inc. Data providers for annotations-based generic load generator
US20180285879A1 (en) 2015-10-17 2018-10-04 Banqu, Inc. Blockchain-based identity and transaction platform
US20170132615A1 (en) 2015-11-11 2017-05-11 Bank Of America Corporation Block chain alias for person-to-person payments
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
US10720232B2 (en) * 2016-04-13 2020-07-21 Accenture Global Solutions Limited Distributed healthcare records management
US10046228B2 (en) * 2016-05-02 2018-08-14 Bao Tran Smart device
WO2018006056A1 (en) 2016-07-01 2018-01-04 Wells Fargo Bank, N.A. International trade finance blockchain system
US10425399B2 (en) * 2016-07-12 2019-09-24 International Business Machines Corporation Template-based distributed certificate issuance in a multi-tenant environment
US10417217B2 (en) 2016-08-05 2019-09-17 Chicago Mercantile Exchange Inc. Systems and methods for blockchain rule synchronization
EP3497581A4 (en) 2016-08-08 2020-03-11 The Dun and Bradstreet Corporation SECURED PLATFORM AND INTEGRATED BOP APPLICATIONS FOR NETWORKING BOP COMPONENTS
US11200966B2 (en) * 2016-12-27 2021-12-14 Cerner Innovation, Inc. Healthcare system based on devices and wearables
CN106603698A (zh) * 2016-12-28 2017-04-26 北京果仁宝科技有限公司 基于dpos的区块链共识方法和节点
WO2018126059A1 (en) 2016-12-30 2018-07-05 Slock.it, Inc. Block-chain enabled service provider system
CN108269072A (zh) * 2016-12-30 2018-07-10 深圳瀚德创客金融投资有限公司 用于区块链的交易处理方法和网络节点
CN106980649B (zh) 2017-02-28 2020-07-10 创新先进技术有限公司 写入区块链业务数据的方法和装置及业务子集合确定方法
CN106934710A (zh) 2017-03-06 2017-07-07 钱德君 一种基于智能合约内容的量子合约账本
CN106878000B (zh) 2017-03-06 2020-02-21 中钞信用卡产业发展有限公司杭州区块链技术研究院 一种联盟链共识方法及系统
US10489597B2 (en) * 2017-03-28 2019-11-26 General Electric Company Blockchain verification of network security service
GB201707296D0 (en) * 2017-05-08 2017-06-21 Nchain Holdings Ltd Computer-implemented system and method
CA3067427A1 (en) * 2017-06-22 2018-12-27 Jpmorgan Chase Bank, N.A. System and method for implementing an interbank information network
US10679210B2 (en) 2017-06-26 2020-06-09 International Business Machines Corporation Blockchain transaction commitment ordering
US10616324B1 (en) 2017-07-20 2020-04-07 Architecture Technology Corporation Decentralized ledger system and method for enterprises
US11196552B2 (en) * 2017-08-04 2021-12-07 Truss Financial, LLC Secure data distribution protocol using blockchains
US11132451B2 (en) * 2017-08-31 2021-09-28 Parity Technologies Ltd. Secret data access control systems and methods
US20190087793A1 (en) * 2017-08-31 2019-03-21 Brown University Adding concurrency to smart contracts
RU2673399C1 (ru) 2017-09-07 2018-11-26 Олег Александрович Серебренников Способ сохранения покупательной способности сбережений
CN107678865A (zh) * 2017-09-20 2018-02-09 中国银行股份有限公司 基于交易分组的区块链的验证方法以及系统
WO2019067603A1 (en) * 2017-09-27 2019-04-04 Securrency, Inc. METHOD, APPARATUS, AND COMPUTER-READABLE MEDIUM FOR CONFORMITY-SENSITIVE TOKENIZATION AND ASSET VALUE CONTROL
US11100483B2 (en) * 2017-09-29 2021-08-24 Intel Corporation Hierarchical data information
CN107704269A (zh) * 2017-10-16 2018-02-16 中国银行股份有限公司 一种基于区块链生成区块的方法以及系统
CN107833060B (zh) * 2017-11-13 2020-12-25 中国银行股份有限公司 一种区块链中智能合约交易的验证方法以及系统
JP2019125914A (ja) 2018-01-16 2019-07-25 アラクサラネットワークス株式会社 通信装置及びプログラム
CN108848119B (zh) 2018-04-03 2020-04-28 阿里巴巴集团控股有限公司 跨区块链的交互方法及装置、系统、电子设备
RU181439U1 (ru) 2018-04-06 2018-07-13 Оксана Валерьевна Кириченко Децентрализованная технологическая платформа хранения и обмена данными транзакций в распределенной вычислительной сети
CN108681565B (zh) * 2018-04-28 2020-11-10 百度在线网络技术(北京)有限公司 区块链数据并行处理方法、装置、设备和存储介质
CN108683646B (zh) * 2018-04-28 2021-03-16 厦门美图之家科技有限公司 一种认证方法及计算设备
CN108769173B (zh) * 2018-05-21 2021-11-09 阿里体育有限公司 运行智能合约的区块链实现方法及设备
CN108846659B (zh) * 2018-06-13 2021-09-14 深圳前海微众银行股份有限公司 基于区块链的转账方法、装置及存储介质
CN109064171A (zh) * 2018-07-26 2018-12-21 杭州秘猿科技有限公司 一种区块链并行交易的方法、装置及电子系统
KR102234128B1 (ko) 2018-12-28 2021-04-02 어드밴스드 뉴 테크놀로지스 씨오., 엘티디. 블록체인 네트워크에서의 트랜잭션의 병렬 실행
WO2019072305A2 (en) 2018-12-28 2019-04-18 Alibaba Group Holding Limited PARALLEL EXECUTION OF TRANSACTIONS IN A BLOCK CHAIN NETWORK BASED ON WHITE LISTS OF INTELLIGENT CONTRACTS

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170212781A1 (en) 2016-01-26 2017-07-27 International Business Machines Corporation Parallel execution of blockchain transactions
US20180158034A1 (en) 2016-12-07 2018-06-07 International Business Machines Corporation Dynamic reordering of blockchain transactions to optimize performance and scalability
CN107688999A (zh) * 2017-08-11 2018-02-13 杭州秘猿科技有限公司 一种基于区块链的并行交易执行方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Aelf, "A Multi-Chain Parallel Computing Blockchain Framework(V. 1.6), 07-June-2018 1부.*

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230068800A (ko) 2021-11-11 2023-05-18 서강대학교산학협력단 트랜잭션 충돌 방지 가능한 블록체인 네트워크 및 트랜잭션 충돌 방지 방법

Also Published As

Publication number Publication date
US11132676B2 (en) 2021-09-28
RU2738826C1 (ru) 2020-12-17
EP3571653A4 (en) 2020-04-08
MX2019009286A (es) 2019-10-30
WO2019072303A3 (en) 2019-11-14
KR20200083936A (ko) 2020-07-09
BR112019016064A2 (pt) 2020-03-31
PH12019501791A1 (en) 2020-03-09
JP6816300B2 (ja) 2021-01-20
EP3571653A2 (en) 2019-11-27
WO2019072303A2 (en) 2019-04-18
US20190287101A1 (en) 2019-09-19
AU2018347203A1 (en) 2020-07-16
AU2018347203B2 (en) 2021-01-21
CA3052348A1 (en) 2019-04-18
CN110520882A (zh) 2019-11-29
CN110520882B (zh) 2023-07-14
JP2020515942A (ja) 2020-05-28
SG11201907157XA (en) 2019-09-27

Similar Documents

Publication Publication Date Title
KR102234128B1 (ko) 블록체인 네트워크에서의 트랜잭션의 병렬 실행
US11381573B2 (en) Parallel execution of transactions in a blockchain network based on smart contract whitelists
US10691835B1 (en) Verifying integrity of data stored in a consortium blockchain using a public sidechain
JP6892513B2 (ja) 信頼できる実行環境に基づいたオフチェーンスマートコントラクトサービス
US11354656B2 (en) Smart contract whitelists
CN111095325A (zh) 在分布式账本系统中进行交易的并行执行

Legal Events

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