KR102315473B1 - 병렬-처리 블록체인 트랜잭션을 위한 시스템 및 방법 - Google Patents

병렬-처리 블록체인 트랜잭션을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR102315473B1
KR102315473B1 KR1020197028449A KR20197028449A KR102315473B1 KR 102315473 B1 KR102315473 B1 KR 102315473B1 KR 1020197028449 A KR1020197028449 A KR 1020197028449A KR 20197028449 A KR20197028449 A KR 20197028449A KR 102315473 B1 KR102315473 B1 KR 102315473B1
Authority
KR
South Korea
Prior art keywords
transaction
blockchain
data structure
candidate
transactions
Prior art date
Application number
KR1020197028449A
Other languages
English (en)
Other versions
KR20200116011A (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 KR20200116011A publication Critical patent/KR20200116011A/ko
Application granted granted Critical
Publication of KR102315473B1 publication Critical patent/KR102315473B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • 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
    • 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
    • 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/08Payment architectures
    • G06Q20/10Payment architectures specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/80Wireless
    • H04L2209/805Lightweight hardware, e.g. radio-frequency identification [RFID] or sensor

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Accounting & Taxation (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Economics (AREA)
  • Development Economics (AREA)
  • Data Mining & Analysis (AREA)
  • Power Engineering (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

병렬-처리 블록체인 트랜잭션을 위해, 컴퓨터 저장 매체에 인코딩된 컴퓨터 프로그램을 가진, 방법, 시스템, 및 장치가 제공된다. 방법 중 하나는, 블록체인에 추가하기 위한 복수의 후보 트랜잭션을 획득하는 단계; 후보 트랜잭션을 하나 이상의 트랜잭션 군으로 분류하는 단계; 블록체인의 마지막 블록의 데이터 구조체의 적어도 일부의 하나 이상의 복사본을 생성하는 단계; 하나 이상의 트랜잭션 군과 데이터 구조체의 하나 이상의 복사본을 각각 연관시키는 단계; 각각의 트랜잭션 군 내 후보 트랜잭션을 실행시키고 그리고 데이터 구조체의 연관된 복사본을 업데이트하는 단계; 및 데이터 구조체의 업데이트된 복사본을 통합하여 새로운 블록의 새로운 데이터 구조체의 적어도 일부를 획득하여 블록체인에 추가하는 단계를 포함한다.

Description

병렬-처리 블록체인 트랜잭션을 위한 시스템 및 방법
본 출원은 일반적으로 병렬-처리 블록체인 트랜잭션을 위한 방법 및 디바이스에 관한 것이다.
블록체인은 인터넷의 개방성과 암호의 보안을 결합하여 더 빠르고 그리고 더 안전한 방식을 제공하여 키 정보를 검증하고 그리고 신뢰를 확립한다. 그러나, 블록체인 트랜잭션의 소프트웨어 성능과 하드웨어 성능은 여전히 다양한 매개변수에 있어서 종래의 분산 시스템보다 뒤떨어진다. 현재의 기술에서, 복수의 트랜잭션을 실행시키기 위해서, 상태 트리(state tree)는 업데이트 동안 록킹(lock)되고 그리고 업데이트 후 언록킹(unlock)되고, 그리고 트랜잭션은 업데이트 동안 직렬로 처리된다. 이 직렬 처리 방식은 블록체인의 초당 트랜잭션(transaction per second: TPS) 성능을 제한한다. 예를 들어, 오직 7개의 비트코인 트랜잭션이 초마다 실행될 수 있다. 따라서, 블록체인 시스템 성능, 예컨대, 더 많은 양의 트랜잭션을 수용하기 위한 실행 효율을 개선시키는 것이 바람직하다.
본 명세서의 다양한 실시형태는 병렬-처리 블록체인 트랜잭션을 위한 시스템, 방법, 및 비일시적 컴퓨터 판독가능 매체를 포함하지만, 이들로 제한되지 않는다.
일부 실시형태에서, 병렬-처리 블록체인 트랜잭션을 위한 컴퓨터-구현 방법은, 블록체인에 추가하기 위한 복수의 후보 트랜잭션을 획득하는 단계; 후보 트랜잭션을 하나 이상의 트랜잭션 군으로 분류하는 단계; 블록체인의 마지막 블록의 데이터 구조체의 적어도 일부의 하나 이상의 복사본을 생성하는 단계; 하나 이상의 트랜잭션 군과 데이터 구조체의 하나 이상의 복사본을 각각 연관시키는 단계; 각각의 트랜잭션 군 내 후보 트랜잭션을 실행시키고 그리고 데이터 구조체의 연관된 복사본을 업데이트하는 단계; 및 데이터 구조체의 업데이트된 복사본을 통합하여 새로운 블록의 새로운 데이터 구조체의 적어도 일부를 획득하여 블록체인에 추가하는 단계를 포함한다.
다른 실시형태에서, 하나 이상의 트랜잭션 군은 독립적인 트랜잭션 군이다.
또 다른 실시형태에서, 후보 트랜잭션을 하나 이상의 트랜잭션 군으로 분류하는 단계는, 하나 이상의 트랜잭션 군 중 동일한 트랜잭션 군 아래에 적어도 하나의 공통 트랜잭션 계정을 각각 수반하는 2개 이상의 후보 트랜잭션을 분류하는 것을 포함한다.
또 다른 실시형태에서, 후보 트랜잭션을 하나 이상의 트랜잭션 군으로 분류하는 단계는, 하나 이상의 트랜잭션 군 중 상이한 트랜잭션 군 아래에 임의의 공통 트랜잭션 계정을 수반하지 않는 2개 이상의 후보 트랜잭션을 분류하는 것을 포함한다.
일부 실시형태에서, 블록체인은 계정/잔액 모델에 기초하고; 그리고 데이터 구조체는 마지막 블록에 저장된 단일의 상태 루트 노드 및 마지막 블록에 저장되지 않은 복수의 중간 노드 및 리프 노드를 포함하는 머클 패트리샤 트리(Merkle Patricia Tree: MPT)를 포함한다.
다른 실시형태에서, 각각의 트랜잭션 군 내 후보 트랜잭션을 실행시키고 그리고 데이터 구조체의 연관된 복사본을 업데이트하는 단계는, 동시에 각각의 트랜잭션 군 내 후보 트랜잭션을 실행시키고 그리고 데이터 구조체의 연관된 복사본을 업데이트하는 것을 포함한다.
또 다른 실시형태에서, 대응하는 트랜잭션 군 내 후보 트랜잭션을 실행시키는 것은, 멀티-코어 프로세서에 의해 대응하는 트랜잭션 군 내 후보 트랜잭션을 실행시키는 것을 포함한다.
또 다른 실시형태에서, 데이터 구조체의 연관된 복사본을 업데이트하는 단계는, 데이터 구조체의 연관된 복사본 중 하나의 트랜잭션 계정의 잔액을 업데이트하는 것; 트랜잭션 계정을 제거하는 것; 또는 새로운 트랜잭션 계정을 추가하는 것 중 적어도 하나를 포함한다.
일부 실시형태에서, 데이터 구조체의 업데이트된 복사본을 통합하는 단계는, 데이터 구조체의 업데이트된 복사본에 이루어진 업데이트를 결합 및 통합함으로써 블록체인의 마지막 블록의 데이터 구조체의 적어도 부분을 업데이트하는 것을 포함한다.
다른 실시형태에서, 방법은 새로운 블록을 블록체인에 추가하는 단계를 더 포함하되, 새로운 데이터 구조체의 부분은 새로운 상태 루트 노드를 포함하고, 그리고 새로운 블록은 새로운 상태 루트 노드를 포함한다.
또 다른 실시형태에서, 병렬-처리 블록체인 트랜잭션을 위한 시스템은, 하나 이상의 프로세서; 및 하나 이상의 프로세서에 결합되고 그리고 임의의 이전의 실시형태의 방법을 수행하도록 하나 이상의 프로세서에 의해 실행 가능한 명령어가 저장되는 하나 이상의 컴퓨터-판독가능 메모리를 포함한다.
또 다른 실시형태에서, 병렬-처리 블록체인 트랜잭션을 위한 장치는 임의의 이전의 실시형태의 방법을 수행하기 위한 복수의 모듈을 포함한다.
일부 실시형태에서, 비일시적 컴퓨터-판독가능 매체는 디바이스의 프로세서에 의해 실행될 때, 디바이스가 임의의 이전의 실시형태의 방법을 수행하게 하는 명령어를 저장한다.
다른 실시형태에서, 병렬-처리 블록체인 트랜잭션을 위한 시스템은 하나 이상의 프로세서, 및 하나 이상의 프로세서에 결합되고 그리고 시스템이 작동을 수행하게 하도록 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성되는 하나 이상의 비일시적 컴퓨터-판독가능 메모리를 포함하되, 작동은, 블록체인에 추가하기 위한 복수의 후보 트랜잭션을 획득하는 작동; 후보 트랜잭션을 하나 이상의 트랜잭션 군으로 분류하는 작동; 블록체인의 마지막 블록의 데이터 구조체의 적어도 일부의 하나 이상의 복사본을 생성하는 작동; 하나 이상의 트랜잭션 군과 데이터 구조체의 하나 이상의 복사본을 각각 연관시키는 작동; 각각의 트랜잭션 군 내 후보 트랜잭션을 실행시키고 그리고 데이터 구조체의 연관된 복사본을 업데이트하는 작동; 및 데이터 구조체의 업데이트된 복사본을 통합하여 새로운 블록의 새로운 데이터 구조체의 적어도 일부를 획득하여 블록체인에 추가하는 작동을 포함한다.
또 다른 실시형태에서, 프로세서는 멀티-코어 프로세서를 포함한다.
또 다른 실시형태에서, 비일시적 컴퓨터-판독가능 저장 매체는 하나 이상의 프로세서가 작동을 수행하게 하도록 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성되고, 작동은, 블록체인에 추가하기 위한 복수의 후보 트랜잭션을 획득하는 작동; 후보 트랜잭션을 하나 이상의 트랜잭션 군으로 분류하는 작동; 블록체인의 마지막 블록의 데이터 구조체의 적어도 일부의 하나 이상의 복사본을 생성하는 작동; 하나 이상의 트랜잭션 군과 데이터 구조체의 하나 이상의 복사본을 각각 연관시키는 작동; 각각의 트랜잭션 군 내 후보 트랜잭션을 실행시키고 그리고 데이터 구조체의 연관된 복사본을 업데이트하는 작동; 및 데이터 구조체의 업데이트된 복사본을 통합하여 새로운 블록의 새로운 데이터 구조체의 적어도 일부를 획득하여 블록체인에 추가하는 작동을 포함한다.
일부 실시형태에 따르면, 병렬-처리 블록체인 트랜잭션을 위한 장치는, 블록체인에 추가하기 위한 복수의 후보 트랜잭션을 획득하기 위한 획득 모듈; 후보 트랜잭션을 하나 이상의 트랜잭션 군으로 분류하기 위한 분류 모듈; 블록체인의 마지막 블록의 데이터 구조체의 적어도 일부의 하나 이상의 복사본을 생성하기 위한 생성 모듈; 하나 이상의 트랜잭션 군을 데이터 구조체의 하나 이상의 복사본과 각각 연관시키기 위한 연관 모듈; 각각의 트랜잭션 군 내 후보 트랜잭션을 실행시키고 그리고 데이터 구조체의 연관된 복사본을 업데이트하기 위한 실행 모듈; 및 데이터 구조체의 업데이트된 복사본을 통합하여 새로운 블록의 새로운 데이터 구조체의 적어도 일부를 획득하여 블록체인에 추가하기 위한 통합 모듈을 포함한다.
본 명세서에 개시된 실시형태는 하나 이상의 기술적 효과를 갖는다. 일부 실시형태에서, 합의 검증(마이닝(mining)) 후, 후보 트랜잭션의 풀 및 실행 전, 후보 트랜잭션은 다양한 독립적인 군으로 분류될 수도 있다. 다른 실시형태에서, 후보 트랜잭션의 군은 상태 트리의 복사본을 업데이트하는 멀티-코어 프로세서(예를 들어, CPU)에 의해 동시에 실행될 수도 있다. 또 다른 실시형태에서, 상태 트리 데이터 구조체의 복사본을 생성함으로써, 후보 트랜잭션의 독립적인 군은 데이터 구조체를 록킹하는 일없이 복사본에서 동시에 처리될 수 있다. 또 다른 실시형태에서, 모든 독립적인 군이 업데이트된 후, 상태 트리 데이터 구조체의 복사본이 통합되어 새로운 블록의 새로운 데이터 구조체를 획득할 수 있고, 따라서 새로운 블록의 효율적인 마이닝을 달성한다. 일부 실시형태에서, 블록체인 성능, 예컨대, TPS 및 다른 처리 효율 측정이 상당히 개선될 수 있다.
제조 부품과 제조 부품의 조합 및 구조의 관련 요소들의 동작과 기능의 방법뿐만 아니라 본 명세서에서 개시하는 시스템, 방법, 및 비일시적 컴퓨터 판독가능 매체의 이러한 기능, 및 기타 기능은, 첨부 도면을 참조하여 다음의 설명과 첨부된 청구항을 고려할 때 더욱 명백해질 것이며, 이들 전부는 본 명세서의 일부를 이루며, 유사한 참조 번호는 다양한 도면에서의 대응 부분을 가리킨다. 그러나, 도면은 예시와 설명을 위한 것일 뿐이며 제한으로서 의도되지 않음을 명확하게 이해해야 한다.
도 1은 다양한 실시형태에 따른, 병렬-처리 블록체인 트랜잭션을 위한 예시적인 시스템을 예시하는 도면.
도 2는 다양한 실시형태에 따른, 블록체인의 2개의 예시적인 블록 및 대응하는 상태 트리를 예시하는 도면.
도 3a는 다양한 실시형태에 따른, 병렬-처리 블록체인 트랜잭션을 위한 예시적인 방법의 흐름도.
도 3b는 다양한 실시형태에 따른, 상태 트리의 2개의 복사본의 예시적인 통합을 예시하는 도면.
도 4는 다양한 실시형태에 따른, 병렬-처리 블록체인 트랜잭션을 위한 예시적인 방법의 흐름도.
도 5는 다양한 실시형태에 따른, 병렬-처리 블록체인 트랜잭션을 위한 예시적인 장치의 흐름도.
도 6은 본 명세서에 설명된 임의의 실시형태가 구현될 수도 있는 예시적인 컴퓨터 시스템의 블록도.
블록체인은, 작동이 네트워크 내 다양한 노드(예를 들어, 연산 디바이스)에 의해 수행되기 때문에, 일반적으로 분산형 원장으로서 지칭되는 비집중형 데이터베이스로 간주될 수도 있다. 모든 정보는 블록체인에 기입될 수도 있고 저장될 수도 있거나 또는 블록체인으로부터 판독될 수도 있다. 누구라도 서버를 설정하고 그리고 블록체인 네트워크에 가입하여 노드가 될 수도 있다. 모든 노드는 블록을 현재의 블록체인에 추가하기 위한 해시 계산과 같은 복잡한 연산을 수행함으로써 블록체인을 유지하기 위한 연산력에 기여할 수도 있고, 그리고 추가된 블록은 다양한 유형의 데이터 또는 정보를 포함할 수도 있다. 추가된 블록에 대한 연산력에 기여하는 노드는 토큰(예를 들어, 디지털 화폐 단위)으로 보상받을 수도 있다. 블록체인에는 중앙 노드가 없으므로, 각각의 노드는 동일하고 그리고 전체 블록체인 데이터베이스를 보유한다.
노드는 예를 들어, 블록체인 네트워크를 지원하고 그리고 원활하게 실행되게 하는 연산 디바이스 또는 대형 컴퓨터 시스템이라는 점에 주목한다. 예시적인 "작업 증명(proof of work)" 시스템에서, 전체 노드와 경량 노드인 두 가지 유형의 노드가 있다. 전체 노드는 블록체인의 전체 복사본을 보관한다. 블록체인 네트워크의 전체 노드는, 자신이 수신하는 블록과 트랜잭션을 유효성 확인(validate)하고 그리고 트랜잭션의 합의 검증을 제공하도록 이들을 접속된 피어에 중계한다. 반면, 경량 노드는 오직 블록체인의 일부를 다운로드한다. 예를 들어, 경량 노드는 디지털 화폐 트랜잭션에 사용된다. 경량 노드는 트랜잭션을 행하고자 할 때 전체 노드와 통신할 것이다.
이러한 비집중화 자산은 제어되는 위치에 관리 센터가 출현하는 것을 방지하는 데 일조할 수 있다. 예를 들어, 비트코인/이더리움 블록체인의 유지관리는 실행 영역에서의 비트코인/이더리움 소프트웨어의 통신 노드의 네트워크에 의해 수행된다. 즉, 종래의 의미에서 은행, 기관 또는 관리자 대신에, 다수의 중재자가 비트코인/이더리움 소프트웨어를 실행시키는 컴퓨터 서버의 형태로 존재한다. 이 컴퓨터 서버는 인터넷을 통해 연결된 네트워크를 형성하고, 누구라도 네트워크에 잠재적으로 가입할 수 있다. 네트워크가 수용하는 트랜잭션은: "사용자 A가 Z 비트코인/이더를 사용자 B에게 전송하길 원한다"의 형태일 수도 있고, 트랜잭션은 쉽게 입수 가능한 소프트웨어 애플리케이션을 사용하는 네트워크에 대한 브로드캐스트이다. 이 금융 트랜잭션을 유효성 확인하고, 이 금융 트랜잭션의 기록을 원장의 이들의 복사본에 추가하고, 그리고 이어서 이 원장의 추가를 네트워크의 다른 서버로 브로드캐스트하도록 작동 가능한 비트코인/이더리움 서버로서 컴퓨터 서버의 기능. 본 명세서는 예로써, 하나 이상의 블록체인 또는 디지털 화폐, 예컨대, 비트코인 및 이더리움을 사용한다. 당업자는 본 명세서에 개시된 기술적 해결책이 다른 유형의 블록체인 및 디지털 화폐를 사용하거나 또는 이에 적용될 수 있다는 것을 이해해야 한다.
도 1은 다양한 실시형태에 따른, 다양한 개시된 단계 및 방법을 수행하기 위한 예시적인 시스템(100)을 도시한다. 도시된 바와 같이, 블록체인 네트워크는 복수의 블록체인 노드(예를 들어, 노드 1, 노드 2, ..., 및 노드 i)를 포함할 수도 있다. 블록체인 노드는 서버, 컴퓨터 등에서 구현될 수도 있다. 각각의 블록체인 노드는 TCP/IP와 같은 다양한 유형의 통신 방법을 통해 함께 결합되는 하나 이상의 물리적 하드웨어 디바이스 또는 가상 디바이스에 대응할 수도 있다. 분류에 따르면, 블록체인 노드는 전체 노드, 게스(Geth) 노드, 합의 노드 등을 포함할 수도 있다. 하나의 실시예에서, "작업 증명" 시스템하에서, 블록체인 노드는 블록체인의 블록을 검증하도록 하드웨어 또는 연산력을 적용하고 그리고 보상을 받는 마이너(miner)의 디바이스를 포함할 수도 있다. 이러한 검증을 수행하지 않는 블록체인 노드는 경량 노드를 포함한다. 또 다른 실시예에서, "스테이크(stake)/서비스 증명" 시스템하에서, 특정한 수준의 투표권을 가진 블록체인 노드는 비-합의 노드와는 대조적으로, 트랜잭션 검증에 책임이 있는, 합의/마스터 노드로서 지칭될 수도 있다. 합의 노드는 새로운 블록체인 블록을 생성할 수도 있고 그리고 블록체인을 위한 결정을 내리고, 예를 들어, 블록체인을 위한 서비스 요금을 설정한다. 합의 노드는 대량의 암호화폐와 연관될 수도 있고 그리고 상호 동의한 특정한 합의 규칙에 기초하여 새로운 트랜잭션을 검증할 수도 있다. 이 명세서에서, 위에서 설명된 또는 또 다른 블록체인 시스템 내 전체 노드, 합의 노드, 또는 다른 등가의 노드는 블록체인 노드로서 트랜잭션을 검증할 수 있다.
또한, 도 1에 도시된 바와 같이, 사용자 A는 사용자 A의 계정의 일부 자산을 사용자 B의 계정으로 이체함으로써 사용자 B와 거래하길 원할 수도 있다. 사용자 A와 사용자 B는 트랜잭션을 위한 적합한 블록체인 소프트웨어(예를 들어, 암호화폐 지갑)가 설치된 대응하는 디바이스를 사용할 수도 있다. 사용자 A의 디바이스는 수신자 노드 B로서 지칭되는 사용자 B의 디바이스와의 트랜잭션을 개시시키는 개시자 노드 A로서 지칭될 수도 있다. 노드 A는 노드 1과의 통신을 통해 블록체인에 액세스할 수도 있고, 그리고 노드 B는 노드 2와의 통신을 통해 블록체인에 액세스할 수도 있다. 예를 들어, 노드 A와 노드 B는 트랜잭션을 노드 1 및 노드 2를 통해 블록체인에 제출하여 트랜잭션의 추가를 블록체인에 요청할 수도 있다. 블록체인 밖에서, 노드 A와 노드 B는 통신(예를 들어, 노드 1 및 노드 2를 통하지 않는 일반 인터넷 통신)의 다른 채널을 가질 수도 있다. 일부 실시형태에서, 노드 A의 블록체인 소프트웨어는 블록체인 노드 1의 프런트-엔드(front-end)로서 간주될 수도 있고, 그리고 블록체인 노드 1은 블록체인 소프트웨어의 백-엔드(back-end)를 실행시킨다.
도 1에서 노드의 각각은 프로세서(예를 들어, 멀티-코어 프로세서), 및 노드(예를 들어, 프로세서)가 본 명세서에 설명된 병렬-처리 블록체인 트랜잭션을 위해 다양한 단계를 수행하게 하도록 프로세서에 의해 실행 가능한 명령어로 구성된 비일시적 컴퓨터-판독가능 저장 매체를 포함할 수도 있다. 각각의 노드에는 다른 노드 및/또는 다른 디바이스와 통신하도록 소프트웨어(예를 들어, 트랜잭션 프로그램) 및/또는 하드웨어(예를 들어, 유선 연결부, 무선 연결부)가 설치될 수도 있다. 예를 들어, 사용자 디바이스, 예컨대, 노드 A 및 노드 B에는 사용자-측 소프트웨어, 예컨대, 암호화폐 지갑이 설치될 수도 있고, 그리고 블록체인 노드에는 블록체인 트랜잭션 처리 소프트웨어가 설치될 수도 있다. 노드 하드웨어 및 소프트웨어의 추가의 상세사항은 나중에 도 6을 참조하여 설명된다.
블록체인 노드 각각은 메모리에 각각 결합될 수도 있다. 일부 실시형태에서, 메모리는 풀 데이터베이스(pool database)를 저장할 수도 있다. 풀 데이터베이스는 분산 방식으로 복수의 블록체인 노드에 액세스 가능할 수도 있다. 예를 들어, 풀 데이터베이스는 블록체인 노드의 메모리에 각각 저장될 수도 있다. 풀 데이터베이스는 사용자가 작동하는 하나 이상의 사용자 디바이스, 예컨대, 노드 A 및 노드 B가 제출하는 복수의 트랜잭션을 저장할 수도 있다.
일부 실시형태에서, 미확인된 트랜잭션의 트랜잭션 요청을 수신한 후, 미확인된 트랜잭션은 풀 데이터베이스에 저장될 수도 있다. 하나 이상의 블록체인 노드는 합의 검증을 수행하여 미확인된 트랜잭션을 검증할 수도 있다. 성공적인 검증 시, 블록체인 노드는 트랜잭션을 패킹(pack)하여 블록체인에 추가할 수도 있다. 검증에 실패했다면, 미확인된 트랜잭션은 거부된다.
트랜잭션을 검증하는 것 및 블록체인에 추가하는 것을 "마이닝"이라고 하고, 그리고 이러한 유지관리를 수행하는 사람은 새롭게 생성된 비트코인/이더 및 트랜잭션 수수료를 보상받는다. 예를 들어, 블록체인 노드는 블록체인 네트워크가 동의한 합의 규칙의 세트에 기초하여 트랜잭션이 유효한지 여부를 결정할 수도 있다. 마이너는 어느 대륙에라도 위치될 수도 있고 그리고 각각의 트랜잭션을 유효한 것으로서 검증하고 이를 블록체인에 추가함으로써 지불을 처리할 수도 있다. 이러한 검증은 복수의 마이너가 제공하는 합의를 통해 달성되고 그리고 조직적인 공모는 없다고 추정한다. 결과적으로, 모든 데이터는, 블록체인이 일관성 있음을 보장하도록 연산이 유효한 특정한 필요조건을 충족시켜야 하고 그리고 모든 블록체인 노드가 동기화되기 때문에, 일관성이 있을 것이다. 따라서, 데이터는 블록체인 노드의 분산 시스템에 일관성 있게 저장될 수 있다.
마이닝 과정을 통해, 네트워크 노드에 의해 자산 이체(asset transfer)와 같은 트랜잭션이 검증되고 그리고 블록체인의 블록의 성장하고 있는 체인에 추가된다. 전체 블록체인을 횡단함으로써, 검증은 예를 들어, 지불 당사자가 이체 자산에 대한 액세스를 갖고 있는지 여부, 자산이 이전에 소비되었는지 여부, 이체 금액이 정확한지 여부 등을 포함할 수도 있다. 예를 들어, 전송자, 예컨대, 개시자 노드가 서명 종료(sign off)하고 그리고 결합된 블록체인 노드로 제출되는 가상의 트랜잭션에서, 결합된 블록체인 노드는 블록체인 노드가 마이닝하도록 제안된 트랜잭션을 블록체인 네트워크로 브로드캐스팅할 수도 있다. 마이너는 트랜잭션이 블록체인 이력에 따라 실행될 자격이 있는지를 체크해야 한다. 전송자의 지갑 잔액에 기존의 블록체인 이력에 따른 충분한 자금이 있다면, 트랜잭션은 유효한 것으로 간주되고 그리고 블록에 추가될 수 있다. 일단 검증된다면, 자산 이체를 블록체인에 추가하도록 다음의 블록에 포함될 수도 있다.
블록은 데이터베이스 기록과 매우 유사하다. 데이터를 기입할 때마다, 블록이 생성된다. 이들 블록은 암호법(cryptography)을 사용하여 링크되고 그리고 보호되어 상호접속된 네트워크로 된다. 각각의 블록은 이전의 블록에 접속되며, 이는 또한 "블록체인"이라는 이름의 근원이기도 하다. 각각의 블록은 일반적으로 이전 블록의 암호법 해시, 생성 시간, 및 실제 데이터를 포함한다. 예를 들어, 각각의 블록은 두 개의 부분, 즉, 현재 블록의 특징값을 기록하기 위한 블록 헤더, 및 실제 데이터(예를 들어, 트랜잭션 데이터)를 기록하기 위한 바디를 포함한다. 블록의 체인은 블록 헤더를 통해 링크된다. 각각의 블록 헤더는 버전, 이전의 블록 해시, 머클 루트, 타임스탬프, 난이도 목표, 및 논스 작업 증명(또는 축약형: 논스(nonce))과 같은 다수의 특징값을 포함할 수도 있다. 이전의 블록 해시는 이전의 블록의 어드레스뿐만 아니라 이전의 블록 내부의 데이터의 해시도 포함하므로, 블록체인을 변경할 수 없게 한다. 논스는 포함된 경우, 특정 개수의 리딩 제로(leading zero) 비트를 갖는 해시를 생성하는 숫자이다.
마이닝을 위해서, 새로운 블록의 콘텐츠의 해시가 블록체인 노드에 의해 취해진다. 논스(예를 들어, 랜덤 스트링)를 해시에 첨부하여 새로운 스트링을 취득한다. 새로운 스트링을 다시 해싱한다. 이어서, 최종 해시를 난이도 목표(예를 들어, 레벨)와 비교하고 그리고 최종 해시가 난이도 목표보다 실제로 작은지 여부를 결정한다. 작지 않다면, 논스가 변경되고 그리고 프로세스가 다시 반복된다. 작다면, 블록을 체인에 추가하고 그리고 공개 원장을 업데이트하고 그리고 추가되었음을 알린다. 성공적으로 추가를 행하는 블록체인 노드는 예를 들어, 보상 트랜잭션을 자신에 추가하여 새로운 블록으로 되게 함으로써 비트코인/이더로 보상받는다. 부가적으로 또는 대안적으로, 트랜잭션 개시자는 트랜잭션 수수료를 포함하여 트랜잭션을 새롭게 추가된 블록으로 성공적으로 마이닝하는 블록체인 노드를 보상할 수도 있다.
즉, 모든 출력 "Y"에 대하여, k가 높은 최소 엔트로피(min-entropy)를 갖는 분포로부터 선택되면, H(k|x) = Y로 되는 입력 x를 찾을 수 없으며, 여기서, k는 논스이고, x는 블록의 해시이고, Y는 난이도 목표이며, "|"는 연결(concatenation)을 나타낸다. 암호 해시가 본질적으로 랜덤이기 때문에, 해당 출력을 해당 입력으로부터 예측할 수 없다는 의미에서, 논스를 찾는 한 가지 방법만이 알려져 있는데, 정수들을 차례로 시도해 보고, 예를 들어, 1, 이어서 2, 이어서 3 등으로 시도해 보는 것이며, 이는 브루트-포스(brute-force)라고 할 수도 있다. 리딩 제로의 수가 클수록, 필요 논스 Y를 찾는 데 걸리는 시간이 평균적으로 더 길어질 것이다. 하나의 실시예에서, 비트코인 시스템은 리딩 제로의 수를 지속적으로 조정하여, 논스를 발견하는 평균 시간은 약 10분이다. 그런 식으로, 수년에 걸쳐, 시간이 지남에 따라 연산 하드웨어의 처리 능력이 증가함에 따라, 비트코인 프로토콜은 마이닝을 구현하는 데 항상 약 10분의 지속시간이 걸리도록 단순히 더 많은 리딩 제로 비트를 필요로 할 것이다.
설명된 바와 같이, 해싱은 블록체인을 위한 중요한 초석이다. 해시 알고리즘은 임의의 길이의 메시지를 고정된 길이의 메시지 다이제스트로 압축하는 함수라고 이해할 수 있다. 더 흔하게 사용되는 것은 MD5 및 SHA이다. 일부 실시형태에서, 블록체인의 해시 길이는 256비트인데, 이는 원래의 콘텐츠에 상관없이, 256비트 이진 수가 최종적으로 계산된다는 점을 의미한다. 그리고 원래의 콘텐츠가 다른 한 대응하는 해시가 고유함을 보장할 수 있다. 예를 들어, 스트링 "123"의 해시는 a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(16진수)이고, 이는 이진수로 변환되는 경우 256비트를 갖고, 그리고 "123"만이 이러한 해시를 갖는다. 블록체인의 해시 알고리즘은 불가역적이며, 즉, ("123"으로부터 a8fdc205a9f19cc1c7507a60c4f01b1c7507a60c4f01b13d11d7fd0으로) 순방향 계산은 쉽고, 그리고 모든 연산 자원을 소진하더라도 역방향 계산은 행해질 수 없다. 따라서, 블록체인의 각각의 블록의 해시는 고유하다.
게다가, 블록의 콘텐츠가 변경된다면, 블록의 해시가 변경될 것이다. 블록과 해시는 일대일 대응 관계를 이루고, 그리고 각각의 블록의 해시는 블록 헤더에 대하여 특정하게 계산된다. 즉, 블록 헤더의 특징값은 긴 스트링을 형성하도록 접속되고, 이어서 그 스트링에 대하여 해시가 계산된다. 예를 들어, "해시=SHA256(블록 헤더)"이 블록 해시 계산식이며, SHA256은 블록 헤더에 적용되는 블록체인 해시 알고리즘이다. 해시는 블록 헤더에 의해 고유하게 결정되고, 블록 바디가 아니다. 위에서 언급된 바와 같이, 블록 헤더는 현재 블록의 해시와 이전의 블록의 해시를 포함하여 많은 콘텐츠를 포함한다. 이는 현재 블록의 콘텐츠가 변경된다면 또는 이전의 블록의 해시가 변경된다면, 현재 블록의 해시가 변경된다는 것을 의미한다. 해커가 블록을 수정하면, 그 블록의 해시가 변경된다. 나중의 블록을 수정된 블록에 접속하기 위해서, 해커가 모든 후속 블록을 차례로 수정해야 하며, 이는 다음의 블록이 이전의 블록의 해시를 포함해야 하기 때문이다. 그렇지 않다면, 수정된 블록이 블록체인으로부터 분리될 것이다. 설계 이유로 인해, 해시 계산은 시간 소모적이고 그리고 해커가 전체 네트워크의 연산력의 51% 초과를 마스터하지 않았다면, 짧은 시간 기간에 다수의 블록을 수정하는 것은 거의 불가능하다. 따라서, 블록체인은 자신의 고유한 신뢰성을 보장하며, 그리고 일단 데이터가 기입되면, 조작될 수 없다.
일단 마이너가 새로운 블록에 대한 해시(즉, 적합한 서명 또는 솔루션)를 찾으면, 마이너는 이 서명을 모든 다른 마이너(블록체인 노드)로 브로드캐스팅한다. 다른 마이너는 이제 자신의 차례에 해당 솔루션이 전송자의 블록의 문제와 대응하는지를 검증한다(즉, 해시 입력이 실제로 해당 서명을 생성하였는지를 결정한다). 솔루션이 유효하면, 다른 마이너는 솔루션을 확인할 것이고 그리고 새로운 블록을 블록체인에 추가할 수 있다는 데 동의할 것이다. 따라서, 새로운 블록의 합의가 이루어진 것이다. 이것을 "작업증명"(proof of work)이라고도 한다. 합의에 도달한 블록을 이제 블록체인에 추가할 수 있고 그리고 해당 블록의 서명과 함께 네트워크 상의 모든 블록체인 노드로 브로드캐스팅한다. 블록체인 노드는 블록을 수용할 것이고 그리고 해당 블록 내의 트랜잭션이 해당 시점에서의 현재 지갑 잔액(트랜잭션 이력)과 정확하게 대응하는 한 그 블록을 자신의 트랜잭션 데이터에 저장한다. 이 블록 위에 새로운 블록이 추가될 때마다, 그 추가도 또한 그 블록 앞의 블록의 또 다른 "확인"으로서 간주된다. 예를 들어, 트랜잭션이 블록(502)에 포함되고 그리고 블록체인의 길이가 507개 블록이면, 이는 트랜잭션이 5개의 확인(블록(507 내지 502)에 대응)을 갖는다는 것을 의미한다. 트랜잭션의 확인이 많을수록, 공격자가 변경하는 것이 더 어렵다.
도시된 바와 같이, 블록체인은 공유 상태를 가진 암호로 안전한 트랜잭션 싱글턴 기계이다. "암호로 안전한"은 디지털 화폐의 생성이 깨기에 터무니없이 어려운 복잡한 수학 알고리즘에 의해 안전하다는 것을 나타낼 수도 있다. 수학 알고리즘은 시스템을 속이는 것(예를 들어, 가짜 트랜잭션을 생성하는 것, 트랜잭션을 소거하는 것 등)을 거의 불가능하게 한다. "트랜잭션 싱글턴 기계"는 모든 트랜잭션이 시스템에서 생성되는데 책임이 있는 기계의 단일의 기본 예가 있다는 것을 나타낼 수도 있다. 즉, 모든 사람들이 믿는 단 하나의 전역적 일치가 있다. "공유 상태를 갖는"은 이 기계에 저장된 상태가 공유되고 그리고 모든 사람들에게 개방된다는 것을 나타낼 수도 있다. 비트코인과 이더리움 둘 다는 블록체인 패러다임을 구현하지만 블록체인 트랜잭션의 맥락에서 아래에 논의되는 상이한 모델에 기초한다. 설명된 모델은 단지 예시적이고, 그리고 개시된 시스템 및 모델은 다른 모델에 기초하여 구현될 수 있다.
일부 실시형태에서, 일부의 자산을 사용자 B에게 이체하기 위해서, 사용자 A는 블록체인 노드를 통해 트랜잭션에 관한 정보를 포함하는 기록을 구성할 수도 있다. 트랜잭션의 대상은, 예를 들어, 돈, 토큰, 디지털 화폐, 계약, 증서, 의료 기록, 고객 상세 정보, 주식, 채권, 지분, 또는 디지털 형식으로 설명될 수 있는 임의의 다른 자산을 포함할 수도 있다. 기록은 사용자 A의 서명 키(개인 키)로 서명될 수도 있고 그리고 사용자 A의 공개 검증 키와 사용자 B의 공개 검증 키를 포함한다. 새로운 블록에서 동일한 시간 창에서 발생한 다른 기록과 함께 번들된 기록은 전체 노드로 브로드캐스팅될 수도 있다. 기록을 수신할 시, 전체 노드는 기록을 블록체인 시스템에서 발생한 모든 트랜잭션의 원장에 통합하고, 새로운 블록을 위에서 설명된 마이닝 과정을 통해 이전에 수용된 블록체인에 추가하고, 그리고 새로운 블록을 네트워크의 합의 규칙에 대하여 유효성 확인하도록 작동할 수도 있다.
비트코인은 미소비 트랜잭션 출력(unspent transaction output: UTXO) 모델에 기초한다. UTXO에서, 자산은 사용되지 않은 블록체인 트랜잭션의 출력에 의해 표현되며, 이는 새로운 트랜잭션의 입력으로서 사용될 수 있다. 출력은 각각의 트랜잭션에 대한 입력보다 적지 않을 수도 있다. 예를 들어, 이체할 사용자 A의 자산은 UTXO 형태일 수도 있다. 자산을 소비(거래)하려면, 사용자 A는 개인 키로 서명종료(sign off)해야 한다. 비트코인은 UTXO 모델을 사용하는 디지털 화폐의 일례이다. 유효한 블록체인 트랜잭션의 경우에, 미소비 출력을 사용하여 추가 트랜잭션을 수행할 수도 있다. 일부 실시형태에서, 이중 지출 및 사기를 방지하도록 추가 트랜잭션에서 미소비 출력만이 사용될 수 있다. 이러한 이유로, 트랜잭션이 발생할 때 블록체인의 입력이 삭제되는 동시에, 출력은 UTXO 형태로 생성된다. 이들 미소비 트랜잭션 출력은 향후 트랜잭션을 위해 (개인 키의 보유자, 예를 들어, 디지털 화폐 지갑을 가진 사람에 의해) 사용될 수도 있다.
이더리움은 글로벌 상태로서 각각의 계정의 잔액을 추적하는, 계정/잔액 모델(또는 계정-기반 트랜잭션 모델로서 지칭됨)에 기초한다. 트랜잭션에서, 계정의 잔액은 계정의 잔액이 지출 트랜잭션 금액 이상임을 확실히 하도록 계정의 잔액을 체크된다. 이더리움에서 계정/잔액 모델이 작용하는 방법의 일례가 제공된다:
1. 앨리스는 마이닝을 통해 5이더를 얻는다. 앨리스가 5이더를 가지고 있음을 시스템에 기록한다.
2. 앨리스는 밥에게 1이더를 주려고 하므로, 시스템은 먼저 앨리스의 계정에서 1이더를 공제하고, 이에 따라 앨리스는 이제 4이더를 갖게 된다.
3. 이어서 시스템은 밥의 계정을 1이더만큼 증가시킨다. 시스템은 밥이 처음에 2이더를 가지고 있음을 알고 있으므로, 밥의 잔액은 3이더로 증가된다.
이더리움 블록체인은 트랜잭션-기반 상태 기계로서 간주될 수도 있다. 컴퓨터 과학에서, 상태 기계는 일련의 입력을 판독하고 그리고, 이 입력에 기초하여, 새로운 상태로 전이하는 어떤 것을 나타낸다. 계정/잔액 모델에서, 블록체인(예를 들어, 이더리움 블록체인)은 블록체인의 맨 처음 블록(기원 블록)에 대응하는, "기원 상태"에서 시작된다. 이 지점(블록 0의 기원 상태)으로부터 나아가서, 행위, 예컨대, 트랜잭션, 계약, 및 마이닝이 블록체인의 "상태"를 계속해서 변경할 것이다. 예를 들어, 트랜잭션이 실행된다면, 이 기원 상태는 더 많은 트랜잭션 실행되는 등할 때 상태 1로 그리고 이어서 상태 2로 전이한다. 이더리움의 상태는 "블록"으로 분류되는 수백만의 트랜잭션을 갖는다. 블록은 일련의 트랜잭션을 포함하고, 그리고 각각의 블록은 앞에서 설명된 바와 같이 이전의 블록과 함께 체인 연결된다. 하나의 상태로부터 다음의 상태로 전이하게 하기 위해서, 트랜잭션은 유효해야 한다. 트랜잭션이 유효하다고 간주되면, 트랜잭션은 앞에서 설명된 바와 같은 마이닝으로서 알려진 유효성 확인 과정을 겪는다. 위에서 언급된 "공유 상태를 가진 트랜잭션 싱글턴 기계"에 대응하여, 정확한 현재의 상태는 단 하나의 전역적 일치이고, 이는 모든 블록체인 노드가 수용해야 한다.
이더리움의 글로벌 상태는 계정 어드레스와 계정 상태 간의 맵핑을 포함한다. 계정은 메시지-전달 프레임워크를 통해 또 다른 계정과 상호작용할 수 있다. 각각의 계정은 계정과 연관된 상태 및 20-바이트의 어드레스를 갖는다. 이더리움의 어드레스는 임의의 계정을 식별하도록 사용되는 160-비트 식별자이다. 개인 키에 의해 제어되고 그리고 이들과 연관된 코드가 없는, 외부 소유의 계정; 및 계약 코드에 의해 제어되고 그리고 이들과 연관된 코드를 갖는 계약 계정인 두 가지 유형의 계정이 있다. 외부 소유의 계정은 개인 키를 사용하여 트랜잭션을 생성 및 서명함으로써 메시지를 다른 외부 소유의 계정으로 또는 다른 계약 계정으로 전송할 수 있다. 2개의 외부 소유의 계정 간의 메시지는 단순히 값 이전이다. 하지만, 외부 소유의 계정으로부터 계약 계정으로의 메시지는 계약 계정의 코드를 활성화시켜서, 계약 계정의 코드가 다양한 행위(예를 들어, 토큰 이체, 내부 저장소로의 기입, 새로운 토큰의 주조, 일부 계산의 수행, 새로운 계약의 생성 등)를 수행하게 한다. 외부 소유의 계정과 달리, 계약 계정은 새로운 트랜잭션을 스스로 개시시킬 수 없다. 대신에, 계약 계정은 오직 (외부 소유의 계정으로부터 또는 또 다른 계약 계정으로부터) 이들이 수용하는 다른 트랜잭션에 응답하여 트랜잭션을 파이어(fire)할 수 있다. 따라서, 이더리움 블록체인에서 발생하는 임의의 행위는 외부에서 제어되는 계정으로부터 파이어된 트랜잭션에 의해 작동되게 설정될 수도 있다.
계정 상태는 계정의 유형에 상관없이 존재하는, 계정 논스, 잔액, 저장루트(storageRoot), 및 코드해시(codeHash)인 4가지 컴포넌트를 포함할 수도 있다. 계정 논스에 대해, 계정이 외부 소유의 계정이라면, 이 번호는 계정의 어드레스로부터 전송되는 트랜잭션의 번호를 나타낸다. 계정이 계약 계정이라면, 논스는 계정이 생성하는 계약의 번호이다. 잔액은 이 어드레스가 소유하는 웨이(Wei)의 수이다. 이더당 1e+18 웨이가 있다. 저장루트는 머클 패트리샤 트리의 상태 루트 노드의 해시이다. 이 트리는 이 계정의 저장 콘텐츠의 해시를 인코딩하고 그리고 디폴트에 의해 비워진다. 코드해시는 이 계정의 이더리움 가상 기계(Ethereum Virtual Machine: EVM) 코드의 해시이다. 계약 계정에 대해, 이것은 코드해시로서 해시 및 저장되는 코드이다. 외부 소유의 계정에 대해, 코드해시 필드는 빈 스트링의 해시이다.
계정 어드레스와 계정 상태 간의 맵핑은 머클 패트리샤 트리(MPT)로서 알려진 데이터 구조체에 저장된다. 머클 패트리샤 트리는 일 유형의 머클 트리(Merkle 트리)(또는 또한 "머클 트리(Merkle trie)"로서 지칭됨)이고, 머클 트리는 일 유형의 상태 트리이고, 그리고 상태 트리는 일 유형의 데이터 구조체이다. 머클 트리는, 기저 데이터를 포함하는 트리의 하단의 다량의 리프 노드(leaf node), 각각 2개의 자식 노드(child node)의 해시인 중간 노드의 세트, 및 트리의 상단부를 나타내는, 또한 2개의 자식 노드의 해시로부터 형성되는, 단일의 상태 루트 노드를 가진 노드의 세트를 포함하는 이진 트리이다. 트리의 하단부의 데이터는 저장될 데이터를 청크(chunk)로 분할하고, 이어서 청크를 버킷으로 분할하고, 그리고 이어서 각각의 버킷의 해시를 취득하고 그리고 남아 있는 해시의 총수가 단 하나일 때까지 동일한 과정을 반복함으로써 생성된다: 루트 해시. 이 트리는 트리 내부에 저장된 모든 값에 대한 키를 갖도록 요구된다. 트리의 상태 루트 노드로부터 시작하여, 키는 어떤 자식 노드가 대응하는 값에 도달하는지를 나타내야 하고, 값은 리프 노드에 저장된다. 이더리움에서, 상태 트리를 위한 키/값 맵핑은 잔액, 논스, 코드해시, 및 각각의 계정에 대한 저장루트(저장루트는 자체가 트리임)를 포함하여, 어드레스와 이들과 연관된 계정 간에 있다. 이 동일한 트리 구조체는 또한 트랜잭션 및 수령증을 저장하도록 사용된다. 예를 들어, 모든 블록은 상태 트리, 트랜잭션 트리, 수령증 트리를 포함하여, 3개의 상이한 머클 트리 구조체의 상태 루트 노드의 해시를 저장하는 "헤더"를 갖는다. 상태 트리가 예로서 사용되지만, 다양한 다른 트리 및 데이터 구조체가 개시된 시스템 및 방법에서 사용될 수 있다.
도 2를 참조하면, 도 2는 다양한 실시형태에 따른, 예시적인 블록체인 내 2개의 블록(블록 N 및 블록 N+1) 및 대응하는 상태 트리를 예시한다. 도 2에 도시된 노드는 블록체인 노드로서 알려진 디바이스인 노드 1, 노드 A 등과 대조적으로, 데이터 구조체 내 노드를 나타낼 수도 있다. 도시된 바와 같이, 각각의 블록은 이전의 블록의 해시를 포함하여, 블록의 체인을 생성한다. 블록 N(그리고 임의의 블록) 내 상태 루트 노드는 전체 블록체인 시스템에서 모든 계정(외부 및 계약)의 상태의 요약을 포함한다. 상태 루트 노드는 루트 해시로 표현될 수도 있다. 각각의 블록은 루트 해시를 저장할 수도 있고 그리고 상태 트리는 루트 해시에 기초하여 데이터베이스에 문의함으로써 획득될 수도 있고, 그리고 블록은 전체 상태 트리를 저장할 필요가 없을 수도 있다.
예를 들어, 계정 A는 트랜잭션에 참여하는 계정들 중 일 계정이고, 그리고 계정 A는 블록 N의 상태 루트 노드 아래의 특정한 위치에서 발견될 수 있다. 새로운 블록 N+1이 추가되기 전에, 블록 N은 블록체인의 마지막 노드이다. 계정 A의 노드는 계정의 정보, 예를 들어, 10이더의 잔액을 저장하는 다양한 노드로 분기된다. 새로운 블록 N+1이 마이닝되고 그리고 블록체인에 부착될 때까지, 5이더가 계정 A에 추가되는, 시스템 내 단 하나의 변경이 발생한다. 블록 N+1의 새로운 상태 루트 노드에 이르는 새롭게 연산된 해시(블록 N+1의 상태 트리 내)에 의한 변경이 도시되고, 반면에 다른 자식 노드는 이전의 블록으로부터 맵핑된다. 트랜잭션 후, 계정 A의 계정 잔액은 상태 루트 노드 아래의 동일한 노드 위치에서 15이더로 업데이트된다. MPT 구조체는 이제 이의 유틸리티를 도시하는데, 이는 MPT 구조체가 전체 트리를 연산할 필요없이 변경 후 상태 트리 루트의 신속한 계산을 허용하기 때문이다.
블록 내 상태 루트 노드를 이 새로운 블록을 수용하는 일부로서 제공하고 그리고 블록 내 트랜잭션을 확인함으로써, 블록체인 시스템을 포함하는 모든 블록체인 노드는 전체 시스템의 상태의 동일한 뷰에 도달해야 한다. 따라서, 마이닝된 블록을 블록체인에 포함하기 전에 마이닝된 블록을 유효성 검증하는 일부로서, 시스템 내 각각의 블록체인 노드는 새로운 트랜잭션 및 연산(이 트랜잭션의 일부가 계약에 관한 것이라면)을 독립적으로 실행시켜야 하고, 모든 계정의 개별적인 상태를 업데이트해야 하고, 그리고 동일한 최종 결과에 도달해야 한다.
머클 패트리샤 트리를 사용하는 또 다른 이점은 이 구조체의 상태 루트 노드가 트리에 저장된 데이터에 암호 의존적이고, 그래서 상태 루트 노드의 해시가 이 데이터를 위한 안전한 아이덴티티(identity)로서 사용될 수 있다는 것이다. 이더리움 내 트리에서 수행되는 모든 기능(입력, 수정, 및 삭제)은 결정론적 암호 해시를 활용한다. 블록 헤더가 상태 트리, 트랜잭션 트리, 및 수령증 트리의 루트 해시를 포함하기 때문에, 임의의 블록체인 노드는 전체 상태를 저장할 필요 없이 이더리움의 상태의 작은 일부를 유효성 확인할 수 있고, 이는 크기에 잠재적으로 제한이 없을 수 있다. 트리의 상태 루트 노드의 고유의 암호 해시는 트리가 조작되지 않았다는 증거로서 사용될 수 있다. 게다가, 트리를 업데이트하는 것은 효율적이다. 예를 들어, 블록체인 노드가 리프를 추가, 수정, 또는 삭제하길 원한다면, 블록체인 노드는 리프를 수정할 수 있고 그리고 이어서 동일한 트리 내 경로의 관련된 부분을 변경하는 일없이 노드로부터 트리의 루트로의 경로의 모든 노드를 업데이트할 수 있다.
트랜잭션 시, 헤더의 상태는 자주 업데이트되어야 한다. 예를 들어, 계정의 잔액 및 논스가 종종 변경되고, 새로운 계정이 자주 삽입되고, 그리고 저장소 내 키가 자주 삽입되고 삭제된다. 트랜잭션 실행은 상태 트리를 업데이트함으로써 달성된다. 실행에 성공했다면, 상태 트리 업데이트가 제출되고, 그리고 추가로 변경되지 않는다. 실행에 실패했다면, 상태 트리는 실행 전의 원래의 상태로 다시 되돌아간다.
도 3a는 다양한 실시형태에 따른, 병렬-처리 블록체인 트랜잭션을 위한 예시적인 단계(300)를 예시한다. 단계(300)는 도 1의 시스템(100)의 하나 이상의 컴포넌트(예를 들어, 노드 A, 노드 1, 노드 A와 노드 1의 조합, 노드 2, 노드 i)에 의해 구현될 수도 있다. 도 3a의 특정한 단계를 예시하기 위해서, 도 3b는 다양한 실시형태에 따른, 상태 트리의 2개의 복사본의 예시적인 통합을 예시한다. 아래에 제시되는 작동은 예시적인 것으로 의도된다. 구현예에 따르면, 예시적인 단계는 다양한 순서로 또는 동시에 수행되는 부가적인, 더 적은 또는 대안적인 단계를 포함할 수도 있다.
단계(301)에서, 다수의 후보 트랜잭션이 마이닝을 위해 제출될 수도 있다. 후보 트랜잭션은 풀 데이터베이스에 저장될 수도 있다.
단계(302)에서, 후보 트랜잭션은 다양한 독립적인 군(예를 들어, 트랜잭션 군(G1, G2, ..., GN))으로 분류될 수도 있다. "독립적인"은 군이 서로 간섭하지 않는 것을 나타낼 수도 있다. 일부 실시형태에서, 적어도 하나의 공통 트랜잭션 계정을 각각 수반하는 임의의 2개 이상의 후보 트랜잭션은 동일한 (트랜잭션) 군 아래에 분류될 수도 있고, 그리고 임의의 공통 트랜잭션 계정을 수반하지 않는 임의의 2개 이상의 후보 트랜잭션은 상이한 (트랜잭션) 군 아래에 분류될 수도 있다. 예를 들어, 후보 트랜잭션의 풀에 대해, A가 어떤 것을 B에게 전송하고, B가 어떤 것을 C에게 전송하고, 그리고 D가 어떤 것을 E에게 전송하고, A와 B 사이 그리고 B와 C 사이의 트랜잭션은 B가 트랜잭션 둘 다에 수반된 공통 트랜잭션 계정이기 때문에 제1 군 아래에 함께 분류될 수 있고, 그리고 D와 E 사이의 트랜잭션은 C와 D가 제1 군 내 2개의 트랜잭션 중 어느 하나에 수반되지 않기 때문에 제2 군에 넣어질 수 있다.
단계(303)에서, 현재의 블록(블록체인의 마지막 블록)의 상태 트리의 적어도 일부의 복사본이 생성될 수도 있다. 현재의 블록의 상태 트리가 T0으로서 표기될 수도 있고, 그리고 복사본이 T1, T2, ..., TN으로서 표기될 수도 있다. 복사본의 수는 독립적인 군의 수에 대응할 수도 있다. 예를 들어, 상태 트리의 루트 해시의 복사본이 생성될 수도 있고, 그리고 루트 해시의 복사본에 기초하여 데이터베이스에 문의하여, 상태 트리의 복사본이 획득될 수도 있다.
단계(304)에서, 독립적인 군은 복사본과 각각 연관될 수도 있다. 예를 들어, G1이 T1과 연관되어 (G1, T1)를 생성한다. 유사하게, (G2, T2) ... (GN, TN)이 획득될 수도 있다.
단계(305))에서, 각각의 독립적인 군 Gi 내 트랜잭션은 연관된 복사본 Ti에 기초하여 실행된다. 실행에 의해, 상태 트리의 연관된 복사본이 군에 대해 업데이트된다. 각각의 트랜잭션이 각각의 군에서 실행될 때, 상태 트리의 대응하는 복사본이 업데이트되거나(성공적인 트랜잭션에 대해) 또는 원래의 상태로 되돌아간다(실패한 트랜잭션에 대해). 트리 구조체에서, 부모 노드(parent node)는 이의 자식 노드에 기초하여 업데이트될 수 있다. 도 3a 및 도 3b에서, 동일한 복사본의 배경은 트랜잭션 실행의 완료를 나타내도록 어둡게 된다.
일부 실시형태에서, 업데이트는 상위 레벨 노드가 아닌 하위 레벨 노드에 적용될 수도 있다(노드의 상이한 레벨에 대해서는 도 2를 참조하라). 하위 레벨 노드는 계정 변경, 예컨대, 계정에 대한 임의의 추가, 삭제, 및 변경, 및 계정 내 변경, 예컨대, 잔액 변경을 캡처할 수도 있다. 상태 루트 노드에 이르는 상위 레벨 노드는 다음의 단계에서 업데이트될 수도 있다. 예를 들어, 도 3b를 참조하면, G1은 복사본 1과 연관되고, 그리고 G2는 복사본 2와 연관된다. 도 3b는 복사본 1 및 복사본 2와 G1 및 G2 각각에 기초하여 업데이트된 상태 트리 복사본을 도시한다. 어두운 셀은 트랜잭션 실행 시 업데이트된 노드를 나타낸다. 복사본 1 및 복사본 2에서, 노드 K1, 노드 K2, 및 상태 루트 노드는 통합 단계까지 업데이트될 필요가 없을 수도 있는 상위 레벨 노드이다. 복사본 1에서, 계정 B는 350으로부터 300으로 업데이트되었고, 그리고 계정 A는 업데이트되지 않았다. 복사본 2에서, 계정 A는 10으로부터 15로 업데이트되었고, 그리고 계정 B는 업데이트되지 않았다. 리프 노드에서의 업데이트는 상향으로 전파되어 위의 노드를 업데이트한다. 다음의 단계(306)에서 복사본 1과 복사본 2가 통합되어 통합된 상태 트리를 획득한다. 통합된 상태 트리에서, 계정 A에 대한 업데이트와 계정 B에 대한 업데이트가 결합된다. 게다가, 상위 레벨 노드에 대한 업데이트는 K1이 K3으로 업데이트되고, K2가 K4로 업데이트될 때 전파될 수 있고, 그리고 상태 루트 노드는 새로운 상태 루트 노드로 업데이트된다.
대안적으로, 일부 실시형태에서, 복사본의 상태 루트 노드를 포함하는 상위 레벨 노드가 업데이트될 수도 있고, 그리고 상위 레벨 노드가 다음의 통합 단계 동안 다시 업데이트될 수도 있다. 예를 들어, 복사본 1 및 복사본 2의 상태 트리 복사본이 상태 루트 노드에 대해 각각 완전히 G1 및 G2에 기초하여 업데이트될 수도 있어서, 복사본 1에 대한 업데이트된 상태 루트 노드 및 복사본 2에 대한 업데이트된 상태 루트 노드 2를 획득한다. 업데이트된 상태 루트 노드 1 및 업데이트된 상태 루트 노드 2(그리고 더 많은 트랜잭션 군이 있을 때 유사한 업데이트된 상태 루트 노드)가 다음의 단계에서 사용될 수 있어서 데이터베이스에 문의함으로써 이들의 각각의 리프 노드를 획득하고 그리고 이어서 리프 노드를 결합하고 그리고 상향으로 전파되어 새로운 상태 루트 노드를 획득한다.
단계(306)에서, 모든 N 군이 실행된 후, 상태 트리의 업데이트된 복사본이 새로운 상태 트리 T0에 통합된다. 하나의 실시예에서, 상태 트리의 업데이트된 복사본을 통합하기 위해서, 단계(305))에서 업데이트되는 노드(예를 들어, 리프 노드 및/또는 중간 노드)는 상태 트리 T0에 통합될 수도 있다(예를 들어, 이전의 노드 값을 업데이트, 새로운 노드/계정을 추가, 이전의 노드/계정을 삭제). 원래의 분류가 군이 독립적인 것을 확실하게 하기 때문에, 통합은 단계(305)에서 수행되는 업데이트를 변경하지 않는다. 통합 후, 리프 노드는 새로운 상태 루트 노드에 도달할 때까지 부모 노드 등을 획득하도록 상향으로 전파될 수도 있다. 예를 들어, 상위 레벨 노드가 업데이트되어 다음의 블록의 상태 루트 노드를 생성하여 블록체인에 추가될 수도 있다. 전체 새로운 상태 트리는 또한 새로운 상태 루트 노드에 기초하여 데이터베이스에 문의함으로써 획득될 수 있다. 상태 트리가 MPT이기 때문에, 상태 루트 노드는 노드 값에 기초하여 그리고 데이터 업데이트의 순서와 관계없이 결정된다. 분류가 정확하기만 하면, 다음의 블록의 상태 루트 노드는 정확하게 그리고 신속하게 획득될 수 있다.
도 4는 다양한 실시형태에 따른, 재전송 공격을 검출하기 위한 예시적인 방법(400)의 흐름도를 예시한다. 방법(400)은 도 1의 시스템(100)의 하나 이상의 컴포넌트(예를 들어, 노드 A, 노드 1, 노드 A와 노드 1의 조합, 노드 2, 노드 i)에 의해 구현될 수도 있다. 방법(400)은 하나 이상의 블록체인 노드에 의해 구현될 수도 있다. 방법(400)은 시스템 또는 디바이스(예를 들어, 컴퓨터, 서버)에 의해 구현될 수도 있다. 시스템 또는 디바이스는 하나 이상의 프로세서, 및 하나 이상의 프로세서에 결합되고 그리고 시스템 또는 디바이스(예를 들어, 프로세서)가 방법(400)을 수행하게 하도록 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성되는 하나 이상의 비일시적 컴퓨터-판독가능 저장 매체(예를 들어, 하나 이상의 메모리)를 포함할 수도 있다. 아래에 제시되는 방법(400)의 작동은 예시적인 것으로 의도된다. 구현예에 따르면, 예시적인 방법(400)은 다양한 순서로 또는 동시에 수행되는 부가적인, 더 적은 또는 대안적인 단계를 포함할 수도 있다.
블록(441)은 블록체인에 추가하기 위한 복수의 후보 트랜잭션을 획득하는 단계를 포함한다. 예를 들어, 다양한 경량 노드가 후보 트랜잭션을 다양한 전체 노드에 제출하여 블록체인에 대한 검증 및 추가를 요청할 수도 있다.
블록(442)은 후보 트랜잭션을 하나 이상의 트랜잭션 군으로 분류하는 단계를 포함한다. 일부 실시형태에서, 하나 이상의 트랜잭션 군은 독립적인 트랜잭션 군이다. 일부 실시형태에서, 후보 트랜잭션을 하나 이상의 트랜잭션 군으로 분류하는 것은, 하나 이상의 트랜잭션 군 중 동일한 트랜잭션 군 아래에 적어도 하나의 공통 트랜잭션 계정을 각각 수반하는 2개 이상의 후보 트랜잭션을 분류하는 것을 포함한다. 예를 들어, 하나 이상의 독립적인 트랜잭션 군의 각각은 또 다른 독립적인 트랜잭션 군 내 또 다른 후보 트랜잭션에 의해 영향을 받는 후보 트랜잭션을 포함하지 않는다. 예를 들어, 동일한 트랜잭션 계정을 각각 수반하는 임의의 2개의 후보 트랜잭션은 동일한 트랜잭션 군 아래에 분류될 수도 있다. 일부 실시형태에서, 후보 트랜잭션을 하나 이상의 트랜잭션 군으로 분류하는 것은, 하나 이상의 트랜잭션 군 중 상이한 트랜잭션 군 아래에 임의의 공통 트랜잭션 계정을 수반하지 않는 2개 이상의 후보 트랜잭션을 분류하는 것을 포함한다. 예를 들어, 하나 이상의 독립적인 트랜잭션 군의 각각은 완전히 상이한 트랜잭션 계정을 수반하는 2개의 후보 트랜잭션을 포함하지 않는다. 예를 들어, 완전히 상이한 트랜잭션 계정을 수반하는 임의의 2개의 후보 트랜잭션은 상이한 트랜잭션 군 아래에 분류될 수도 있다.
블록(443)은 블록체인의 마지막 블록의 데이터 구조체(예를 들어, 상태 트리)의 적어도 일부의 하나 이상의 복사본을 생성하는 단계를 포함한다. 일부 실시형태에서, 데이터 구조체는 상태 트리 또는 또 다른 유사한 데이터 구조체를 포함할 수도 있다. 데이터 구조체의 부분은 상태 트리의 상태 루트 노드를 포함할 수도 있거나 또는 상태 트리의 하위 레벨 노드를 포함할 수도 있다. 상태 트리에 대해, 상태 루트 노드는 상태 트리를 나타내도록 사용될 수도 있다. 상태 트리의 중간 노드 및 리프 노드는 상태 루트 노드에 기초하여 데이터베이스에 문의함으로써 획득될 수 있다. 따라서, 데이터 구조체의 또는 데이터 구조체의 일부의 복사본은 (1) 상태 루트 노드의 복사본, (2) 데이터 구조체의 또 다른 부분 및 상태 루트 노드의 복사본, (3) 데이터 구조체의 전체 복사본 등을 나타낼 수도 있다.
일부 실시형태에서, 블록체인은 계정/잔액 모델에 기초하고; 그리고 데이터 구조체는 마지막 블록에 저장된 단일의 상태 루트 노드 및 마지막 블록에 저장되지 않은 복수의 중간 노드 및 리프 노드를 포함하는 머클 패트리샤 트리를 포함한다.
블록(444)은 하나 이상의 트랜잭션 군과 데이터 구조체(예를 들어, 상태 트리)의 하나 이상의 복사본을 각각 연관시키는 단계를 포함한다. 예를 들어, 트랜잭션 군은 마지막 블록의 상태 루트 노드의 복사본과 각각 연관될 수도 있다. 완전한 복사본 상태 트리는 데이터베이스에 문의함으로써 획득될 수 있다.
블록(445)은 각각의 트랜잭션 군 내 후보 트랜잭션을 실행시키고 그리고 데이터 구조체(예를 들어, 상태 트리)의 연관된 복사본을 업데이트하는 단계를 포함한다. 예를 들어, 데이터 구조체(예를 들어, 상태 트리)의 연관된 복사본은 각각의 트랜잭션 군 내 후보 트랜잭션을 실행시키도록 업데이트될 수도 있다. 일부 실시형태에서, 각각의 트랜잭션 군 내 후보 트랜잭션을 실행시키고 그리고 데이터 구조체의 연관된 복사본을 업데이트하는 것은, 동시에 각각의 트랜잭션 군 내 후보 트랜잭션을 실행시키고 그리고 데이터 구조체의 연관된 복사본을 업데이트하는 것을 포함한다.
일부 실시형태에서, 대응하는 트랜잭션 군 내 후보 트랜잭션을 실행시키는 것은, 멀티-코어 프로세서에 의해 대응하는 트랜잭션 군 내 후보 트랜잭션을 실행시키는 것을 포함한다. 즉, 트랜잭션 군은 동시에, 예를 들어, 멀티-코어 프로세서에 의해 처리될 수도 있다. 각각의 코어는 하나의 트랜잭션 군을 처리하도록 선정될 수도 있다. 각각의 트랜잭션 군을 처리하는 것은 데이터 구조체의 연관된 복사본을 업데이트함으로써 트랜잭션 군 내 후보 트랜잭션을 처리하는 것을 포함할 수도 있다. 따라서, 트랜잭션 군을 동시에 처리하는 것은 전체 처리 속도를 상당히 증가시킬 수 있다.
일부 실시형태에서, 데이터 구조체의 연관된 복사본을 업데이트하는 것은, 데이터 구조체의 연관된 복사본 중 하나의 트랜잭션 계정의 잔액을 업데이트하고, 트랜잭션 계정을 제거하고 그리고/또는 새로운 트랜잭션 계정을 추가하는 것을 포함한다. 업데이트는 본 명세서에 개시된 다양한 데이터 구조체 노드에 대한 다양한 다른 변경을 포함할 수도 있다.
블록(446)은 데이터 구조체의 업데이트된 복사본을 통합하여 새로운 블록의 새로운 데이터 구조체(예를 들어, 새로운 상태 트리)의 적어도 일부를 획득하여 블록체인에 추가하는 단계를 포함한다. 예를 들어, 새로운 데이터 구조체의 부분은 새로운 상태 루트 노드를 포함할 수도 있다. 획득된 새로운 데이터 구조체는 블록체인에 추가되기 위한 새로운 블록에 포함될 새로운 상태 루트 노드를 갖는다. 일부 실시형태에서, 데이터 구조체의 업데이트된 복사본을 통합하는 것은, 데이터 구조체의 업데이트된 복사본에 이루어진 업데이트의 적어도 일부를 결합 및 통합함으로써 블록체인의 마지막 블록의 데이터 구조체의 적어도 부분을 업데이트하는 것을 포함한다. 도 3a 및 도 3b를 참조하여 논의된 바와 같이, 데이터 구조체의 다양한 복사본에 대한 변경이 통합되어 새로운 데이터 구조체의 적어도 일부를 생성할 수도 있다. 리프 노드로부터 중간 노드로 그리고 상향으로 업데이트함으로써, 새로운 상태 루트 노드가 획득될 수 있다.
임의의 블록(447)은 새로운 블록을 블록체인에 추가하는 단계를 포함한다. 새로운 데이터 구조체의 부분은 새로운 상태 루트 노드를 포함하고, 그리고 새로운 블록은 새로운 상태 루트 노드를 포함한다.
도 5는 일부 실시형태에 따른, 블록체인 계약을 실행시키기 위한 시스템(510)의 블록도를 예시한다. 시스템(510)(예를 들어, 컴퓨터 시스템)은 노드 1, 노드 2, 노드 A, 노드 B, 또는 유사한 디바이스, 또는 임의의 노드와 추가의 디바이스(예를 들어, 노드 1과 노드 A)의 조합의 구현예일 수도 있다. 예를 들어, 방법(400)은 시스템(510)에 의해 구현될 수도 있다. 시스템(510)은 하나 이상의 프로세서, 및 하나 이상의 프로세서에 결합되고 그리고 시스템 또는 디바이스(예를 들어, 프로세서)가 위에서 설명된 방법 및 작동, 예를 들어, 방법(400)을 수행하게 하도록 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성되는 하나 이상의 비일시적 컴퓨터-판독가능 저장 매체(예를 들어, 하나 이상의 메모리)를 포함할 수도 있다. 시스템(510)은 명령어(예를 들어, 소프트웨어 명령어)에 대응하는 다양한 기구/모듈을 포함할 수도 있다.
일부 실시형태에서, 시스템(510)은 병렬-처리 블록체인 트랜잭션을 위한 장치로서 지칭될 수도 있다. 장치는 블록체인에 추가하기 위한 복수의 후보 트랜잭션을 획득하기 위한 획득 모듈(511); 후보 트랜잭션을 하나 이상의 트랜잭션 군으로 뷴류하기 위한 분류 모듈(512); 블록체인의 마지막 블록의 데이터 구조체의 적어도 일부의 하나 이상의 복사본을 생성하기 위한 생성 모듈(513); 하나 이상의 트랜잭션 군을 데이터 구조체의 하나 이상의 복사본과 각각 연관시키기 위한 연관 모듈(514); 각각의 트랜잭션 군 내 후보 트랜잭션을 실행시키고 그리고 데이터 구조체의 연관된 복사본을 업데이트하기 위한 실행 모듈(515); 및 데이터 구조체의 업데이트된 복사본을 통합하여 새로운 블록의 새로운 데이터 구조체의 적어도 일부를 획득하여 블록체인에 추가하기 위한 통합 모듈(516)을 포함할 수도 있다. 임의로, 장치는 새로운 블록을 블록체인에 추가하기 위한 추가 모듈(517)을 더 포함할 수도 있고, 새로운 데이터 구조체의 부분은 새로운 상태 루트 노드를 포함하고, 그리고 새로운 블록은 새로운 상태 루트 노드를 포함한다.
본 명세서에서 설명하는 기술은 하나 이상의 전용 연산 디바이스에 의해 구현된다. 전용 연산 디바이스는 기술을 구현하도록 유선 및/또는 프로그램 로직을 통합하는, 데스크톱 컴퓨터 시스템, 서버 컴퓨터 시스템, 휴대용 컴퓨터 시스템, 핸드헬드 디바이스, 네트워킹 디바이스 또는 임의의 다른 디바이스 또는 디바이스의 조합일 수도 있다. 전용 연산 디바이스는 개인용 컴퓨터, 랩탑, 휴대폰, 카메라폰, 스마트폰, 개인용 정보 단말기, 미디어 플레이어, 네비게이션 디바이스, 이메일 디바이스, 게임 콘솔, 태블릿 컴퓨터, 착용형 디바이스 또는 이들의 조합으로서 구현될 수도 있다. 연산 디바이스(들)는 일반적으로 운영 체제 소프트웨어에 의해 제어되고 조정된다. 종래의 운영 체제는 실행할 컴퓨터 과정을 제어 및 스케줄링하고, 메모리 관리를 수행하고, 파일 시스템, 네트워킹, I/O 서비스를 제공하고, 그리고 특히, 그래픽 사용자 인터페이스(graphical user interface: "GUI")와 같은 사용자 인터페이스 기능을 제공한다. 본 명세서에 설명된 다양한 시스템, 장치, 저장 매체, 모듈, 및 기구는 전용 연산 디바이스, 또는 하나 이상의 전용 연산 디바이스의 하나 이상의 연산 칩에서 구현될 수도 있다. 일부 실시형태에서, 본 명세서에 설명된 명령어는 전용 연산 디바이스의 가상 기계에서 구현될 수도 있다. 실행된다면, 명령어는 전용 연산 디바이스가 본 명세서에 설명된 다양한 방법을 수행하게 할 수도 있다. 가상 기계는 소프트웨어, 하드웨어, 또는 이들의 조합을 포함할 수도 있다.
도 6은 본 명세서에 설명된 임의의 실시형태가 구현될 수도 있는 컴퓨터 시스템(600)을 예시하는 블록도이다. 시스템(600)은 본 명세서에 설명된 임의의 방법(예를 들어, 방법(400))을 수행할 수도 있다. 시스템(600)은 본 명세서에 설명된 임의의 시스템(예를 들어, 시스템(100 또는 510))에서 구현될 수도 있다. 시스템(600)은 본 명세서에 설명된 임의의 노드에서 구현될 수도 있고 그리고 병렬-처리 블록체인 트랙잭션을 위한 대응하는 단계를 수행하도록 구성될 수도 있다. 컴퓨터 시스템(600)은 정보를 전달하기 위한 버스(602) 또는 다른 통신 메커니즘, 정보를 처리하도록 버스(602)와 연결된 하나 이상의 하드웨어 프로세서(들)(604)를 포함한다. 하드웨어 프로세서(들)(604)는 예를 들어, 하나 이상의 범용 마이크로프로세서일 수도 있다.
컴퓨터 시스템(600)은 또한 프로세서(들)(604)에 의해 실행 가능한 정보와 명령어를 저장하도록 버스(602)에 연결된, RAM, 캐시, 및/또는 다른 동적 저장 디바이스와 같은 메인 메모리(606)를 포함한다. 메인 메모리(606)는 또한, 프로세서(들)(604)에 의해 실행 가능한 명령어의 실행 동안 임시 변수 또는 다른 중간 정보를 저장하기 위해 사용될 수 있다. 이러한 명령어는, 프로세서(들)(604)가 액세스할 수 있는 저장 매체에 저장되는 경우, 컴퓨터 시스템(600)을 명령어에서 특정된 작동을 수행하도록 맞춤화된 전용 기계로 되게 한다. 컴퓨터 시스템(600)은, 프로세서(들)(604)에 대한 정적 정보와 명령어를 저장하도록 버스(602)에 연결된 ROM(608) 또는 다른 정적 저장 디바이스를 더 포함한다. 정보와 명령어를 저장하도록 자기 디스크, 광 디스크, 또는 USB 섬 드라이브(플래시 드라이브) 등의 저장 디바이스(610)가 제공되어 버스(602)에 연결된다.
컴퓨터 시스템(600)은, 컴퓨터 시스템과 함께 컴퓨터 시스템(600)을 전용 기계로 되게 하거나 전용 기계로 되도록 프로그래밍하는 맞춤형 유선 로직, 하나 이상의 ASIC 또는 FPGA, 펌웨어, 및/또는 프로그램 로직을 사용하여 본 명세서에서 설명하는 기술을 구현할 수 있다. 일 실시형태에 따르면, 본 명세서에서 설명하는 작동, 방법, 및 프로세스는, 메인 메모리(606)에 포함된 하나 이상의 명령어의 하나 이상의 시퀀스를 실행하는 프로세서(들)(604)에 응답하여 컴퓨터 시스템(600)에 의해 수행된다. 이러한 명령어는, 저장 디바이스(610) 등의 다른 저장 매체로부터 메인 메모리(606)로 판독될 수 있다. 메인 메모리(606)에 포함된 명령어의 시퀀스의 실행은, 프로세서(들)(604)가 본 명세서에서 설명하는 프로세스 단계를 수행하게 한다. 대체 실시형태에서는, 소프트웨어 명령어 대신 또는 소프트웨어 명령어와 함께 유선 회로를 사용할 수 있다.
메인 메모리(606), ROM(608), 및/또는 저장 디바이스(610)는 비일시적 저장 매체를 포함할 수 있다. "비일시적 매체"라는 용어 및 이와 유사한 용어는, 본 명세서에서 사용되는 바와 같이, 기계가 특정 방식으로 작동하게 하는 데이터 및/또는 명령어를 저장하는 매체를 가리키며, 매체는 일시적 신호를 배제한다. 이러한 비일시적 매체는 비휘발성 매체 및/또는 휘발성 매체를 포함할 수 있다. 비휘발성 매체는, 예를 들어, 저장 디바이스(610)와 같은 광학 또는 자기 디스크를 포함한다. 휘발성 매체는 메인 메모리(606)와 같은 동적 메모리를 포함한다. 비일시적 매체의 일반적인 형태는, 예를 들어, 플로피 디스크, 플렉시블 디스크, 하드 디스크, 솔리드 스테이트 드라이브, 자기 테이프, 또는 다른 임의의 자기 데이터 저장 매체, CD-ROM, 다른 임의의 광 데이터 저장 매체, 구멍 패턴이 있는 임의의 물리적 매체, RAM, PROM, EPROM, FLASH-EPROM, NVRAM, 다른 임의의 메모리 칩이나 카트리지, 및 이들의 네트워크화된 버전을 포함한다.
컴퓨터 시스템(600)은, 또한, 버스(602)에 연결된 네트워크 인터페이스(618)를 포함한다. 네트워크 인터페이스(618)는, 하나 이상의 로컬 네트워크에 접속된 하나 이상의 네트워크 링크에 양방향 데이터 통신 연결을 제공한다. 예를 들어, 네트워크 인터페이스(618)는, 종합 정보 통신망(ISDN) 카드, 케이블 모뎀, 위성 모뎀 또는 대응하는 유형의 전화선에 데이터 통신 접속을 제공하는 모뎀일 수 있다. 다른 일례로, 네트워크 인터페이스(618)는, 호환성 LAN(또는 WAN과 통신하기 위한 WAN 구성요소)에 데이터 통신 접속을 제공하기 위한 근거리 통신망(LAN) 카드일 수 있다. 무선 링크도 구현될 수 있다. 이러한 임의의 구현예에서, 네트워크 인터페이스(618)는, 다양한 유형의 정보를 나타내는 디지털 데이터 스트림을 반송하는 전기 신호, 전자기 신호, 또는 광 신호를 전송 및 수신한다.
컴퓨터 시스템(600)은, 네트워크(들), 네트워크 링크, 및 네트워크 인터페이스(618)를 통해 메시지를 전송할 수 있고 프로그램 코드를 포함하는 데이터를 수신할 수 있다. 인터넷 예에서, 서버는, 인터넷, ISP, 로컬 네트워크, 및 네트워크 인터페이스(618)를 통해 애플리케이션 프로그램에 대한 요청 코드를 송신할 수 있다.
수신된 코드는, 수신될 때 및/또는 나중에 실행하도록 저장 디바이스(610) 또는 다른 비휘발성 저장 디바이스에 저장될 때 프로세서(들)(604)에 의해 실행될 수 있다.
전술한 섹션들에서 설명한 프로세스, 방법, 및 알고리즘의 각각은, 하나 이상의 컴퓨터 시스템 또는 컴퓨터 하드웨어를 포함하는 컴퓨터 프로세서에 의해 실행되는 코드 모듈로 구체화될 수 있고, 이러한 코드 모듈에 의해 완전히 또는 부분적으로 자동화될 수 있다. 프로세스와 알고리즘은 애플리케이션 특정 회로에서 부분적으로 또는 전체적으로 구현될 수 있다.
전술한 다양한 특징과 프로세스는, 서로 독립적으로 사용될 수 있고, 또는 다양한 방식으로 결합될 수 있다. 모든 가능한 조합과 부조합은 본 명세서의 범위 내에 속한다. 또한, 일부 구현예에서는 소정의 방법 또는 프로세스 블록이 생략될 수 있다. 또한, 본 명세서에서 설명하는 방법과 프로세스는 임의의 특정 시퀀스로 한정되지 않으며, 이에 관련된 블록 또는 상태는 적절한 다른 시퀀스로 수행될 수 있다. 예를 들어, 설명한 블록 또는 상태는 특정하게 개시된 순서와는 다른 순서로 수행될 수 있고, 또는 다수의 블록 또는 상태가 단일 블록 또는 상태로 결합될 수 있다. 블록 또는 상태의 예는 직렬, 병렬, 또는 다른 임의의 방식으로 수행될 수 있다. 블록 또는 상태는, 개시된 실시형태에 추가되거나 이러한 실시형태로부터 제거될 수 있다. 본 명세서에서 설명하는 시스템과 구성요소의 예는 설명과는 다르게 구성될 수 있다. 예를 들어, 개시된 실시형태와 비교하여 요소를 추가, 제거, 또는 재배치할 수 있다.
본 명세서에서 설명하는 방법의 다양한 작동은 관련 작동을 수행하도록 (예를 들어, 소프트웨어에 의해) 일시적으로 구성된 또는 영구적으로 구성된 하나 이상의 프로세서에 의해 적어도 부분적으로 수행될 수 있다. 일시적으로 또는 영구적으로 구성되어 있는지 여부에 관계없이, 이러한 프로세서는, 본 명세서에서 설명하는 하나 이상의 작동 또는 기능을 수행하도록 작동하는 프로세서 구현 엔진을 구성할 수 있다.
유사하게, 본 명세서에서 설명하는 방법은 적어도 부분적으로 프로세서로 구현될 수 있으며, 특정 프로세서 또는 프로세서는 하드웨어의 일례이다. 예를 들어, 방법의 작동 중 적어도 일부는 하나 이상의 프로세서 또는 프로세서 구현 엔진에 의해 수행될 수 있다. 또한, 하나 이상의 프로세서는, "클라우드 연산" 환경 또는 "서비스형 소프트웨어"(software as a service: SaaS)에서의 관련 작동의 성능을 지원하도록 또한 작동할 수 있다. 예를 들어, 적어도 일부 작동은 (프로세서를 포함하는 기계의 예로서) 컴퓨터의 군에 의해 수행될 수 있으며, 이들 작동은, 네트워크(예를 들어, 인터넷)를 통해 및 하나 이상의 적절한 인터페이스(예를 들어, 애플리케이션 프로그램 인터페이스(Application Program Interface: API))를 통해 액세스될 수 있다.
소정의 작동의 성능은, 프로세서 간에 분산될 수 있어서, 단일 시스템 내에 상주할 뿐만 아니라 다수의 기계에 걸쳐 배치될 수도 있다. 일부 실시형태에서, 프로세서 또는 프로세서 구현 엔진은, 단일 지리적 위치에(예를 들어, 가정 환경, 사무실 환경, 또는 서버 팜 내) 위치할 수 있다. 다른 실시형태에서, 프로세서 또는 프로세서 구현 엔진은 다수의 지리적 위치에 걸쳐 분산될 수 있다.
본 명세서 전체에 걸쳐, 복수의 인스턴스는, 단일 인스턴스로 설명된 구성요소, 작동, 또는 구조를 구현할 수 있다. 하나 이상의 방법의 개별적인 작동이 별개의 작동으로서 도시되고 설명되었지만, 하나 이상의 개별적인 작동은, 동시에 수행될 수 있고, 작동이 도시된 순서대로 수행될 필요는 없다. 구성에서 별개의 구성요소로서 제시된 구조와 기능은 결합된 구조 또는 구성요소로서 구현될 수 있다. 유사하게, 단일 구성요소로서 제시된 구조와 기능은 별개의 구성요소로서 구현될 수 있다. 이러한 변형, 수정, 추가, 개선, 및 다른 변형, 수정, 추가, 개선은, 본 명세서의 대상 범위 내에 있다. 게다가, 본 명세서에서 사용되는 관련된 용어(예를 들어, "제1", "제2", "제3" 등)는 임의의 순서, 높이 또는 중요도를 나타내는 것이 아니라 하나의 구성요소를 또 다른 구성요소로부터 구별하도록 사용된다. 게다가, 단수 용어 및 복수 용어는 본 명세서에서 수량의 제한을 나타내는 것이 아니라, 언급된 물품의 적어도 하나의 존재를 나타낸다.
특정한 실시형태를 참조하여 대상의 개요를 설명하였지만, 본 명세서의 실시형태의 더욱 넓은 범위를 벗어나지 않으면서 이들 실시형태에 대한 다양한 수정과 변경을 행할 수 있다. 상세한 설명은 제한적인 의미로 받아들여서는 안 되며, 다양한 실시형태의 범위는, 이러한 청구항에 부여되는 균등물의 전체 범위와 함께 청구범위에 의해서만 정의된다.

Claims (13)

  1. 병렬-처리 블록체인 트랜잭션을 위한 컴퓨터-구현 방법으로서,
    블록체인에 추가하기 위한 복수의 후보 트랜잭션을 획득하는 단계;
    상기 후보 트랜잭션을 복수의 독립적인 트랜잭션 군으로 분류하는 단계;
    상기 블록체인의 마지막 블록의 상태 트리 데이터 구조체의 적어도 일부의 복수의 복사본을 생성하는 단계;
    상기 복수의 독립적인 트랜잭션 군과 상기 블록체인의 상기 마지막 블록의 상기 상태 트리 데이터 구조체의 상기 복수의 복사본을 각각 연관시키는 단계;
    각각의 독립적인 트랜잭션 군 내 상기 후보 트랜잭션을 실행시키고 그리고 상기 블록체인의 상기 마지막 블록의 상기 상태 트리 데이터 구조체의 연관된 복사본을 업데이트하여 상기 복수의 독립적인 트랜잭션 군을 병렬로 처리하는 단계로서, 상기 후보 트랜잭션은 상기 블록체인에 추가되어 있지 않은, 단계; 및
    상기 상태 트리 데이터 구조체의 업데이트되고 연관된 복사본을 통합하여 새로운 블록의 새로운 상태 루트 노드를 생성하고 상기 업데이트를 상기 새로운 상태 루트 노드로 전파하는 단계를 포함하는, 병렬-처리 블록체인 트랜잭션을 위한 컴퓨터-구현 방법.
  2. 삭제
  3. 제1항에 있어서, 상기 후보 트랜잭션을 복수의 독립적인 트랜잭션 군으로 분류하는 단계는,
    상기 복수의 독립적인 트랜잭션 군 중 동일한 트랜잭션 군 아래에 적어도 하나의 공통 트랜잭션 계정을 각각 수반하는 2개 이상의 후보 트랜잭션을 분류하는 것을 포함하는, 병렬-처리 블록체인 트랜잭션을 위한 컴퓨터-구현 방법.
  4. 제1항에 있어서, 상기 후보 트랜잭션을 복수의 독립적인 트랜잭션 군으로 분류하는 단계는,
    상기 복수의 독립적인 트랜잭션 군 중 상이한 트랜잭션 군 아래에 임의의 공통 트랜잭션 계정을 수반하지 않는 2개 이상의 후보 트랜잭션을 분류하는 것을 포함하는, 병렬-처리 블록체인 트랜잭션을 위한 컴퓨터-구현 방법.
  5. 제1항에 있어서,
    상기 블록체인은 계정/잔액 모델에 기초하고; 그리고
    상기 상태 트리 데이터 구조체는 상기 마지막 블록에 저장된 단일의 상태 루트 노드 및 상기 마지막 블록에 저장되지 않은 복수의 중간 노드 및 리프 노드를 포함하는 머클 패트리샤 트리(Merkle Patricia Tree: MPT)를 포함하는, 병렬-처리 블록체인 트랜잭션을 위한 컴퓨터-구현 방법.
  6. 제1항에 있어서, 각각의 트랜잭션 군 내 상기 후보 트랜잭션을 실행시키고 그리고 상기 상태 트리 데이터 구조체의 연관된 복사본을 업데이트하여 상기 복수의 독립적인 트랜잭션 군을 병렬로 처리하는 단계는,
    동시에 복수의 독립적인 트랜잭션 군 각각 내 상기 후보 트랜잭션을 실행시키고 그리고 상기 상태 트리 데이터 구조체의 상기 연관된 복사본을 업데이트하는 것을 포함하는, 병렬-처리 블록체인 트랜잭션을 위한 컴퓨터-구현 방법.
  7. 제1항에 있어서, 대응하는 독립적인 트랜잭션 군 각각 내 상기 후보 트랜잭션을 실행시키는 것은,
    멀티-코어 프로세서에 의해 상기 대응하는 독립적인 트랜잭션 군 내 상기 후보 트랜잭션을 실행시키는 것을 포함하는, 병렬-처리 블록체인 트랜잭션을 위한 컴퓨터-구현 방법.
  8. 제1항에 있어서, 상기 상태 트리 데이터 구조체의 상기 연관된 복사본을 업데이트하는 단계는,
    상기 상태 트리 데이터 구조체의 상기 연관된 복사본 중 하나의 트랜잭션 계정의 잔액을 업데이트하는 것;
    상기 트랜잭션 계정을 제거하는 것; 또는
    새로운 트랜잭션 계정을 추가하는 것 중 적어도 하나를 포함하는, 병렬-처리 블록체인 트랜잭션을 위한 컴퓨터-구현 방법.
  9. 제1항에 있어서, 상기 상태 트리 데이터 구조체의 업데이트되고 연관된 복사본을 통합하여 새로운 블록의 새로운 상태 루트 노드를 생성하는 단계는,
    상기 상태 트리 데이터 구조체의 상기 업데이트된 복사본에 이루어진 업데이트를 결합 및 통합함으로써 상기 블록체인의 상기 마지막 블록의 상기 상태 트리 데이터 구조체의 적어도 부분을 업데이트하는 것을 포함하는, 병렬-처리 블록체인 트랜잭션을 위한 컴퓨터-구현 방법.
  10. 제1항에 있어서,
    상기 새로운 블록을 상기 블록체인에 추가하는 단계를 더 포함하는, 병렬-처리 블록체인 트랜잭션을 위한 컴퓨터-구현 방법.
  11. 병렬-처리 블록체인 트랜잭션을 위한 시스템으로서,
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 결합되고 그리고 제1항에 따른 방법을 수행하도록 상기 하나 이상의 프로세서에 의해 실행 가능한 명령어가 저장되는 하나 이상의 컴퓨터-판독가능 메모리를 포함하는, 병렬-처리 블록체인 트랜잭션을 위한 시스템.
  12. 제1항에 따른 방법을 수행하기 위한 병렬-처리 블록체인 트랜잭션을 위한 장치로서,
    블록체인에 추가하기 위한 복수의 후보 트랜잭션을 획득하는 획득 모듈;
    상기 후보 트랜잭션을 복수의 독립적인 트랜잭션 군으로 분류하는 분류 모듈;
    상기 블록체인의 마지막 블록의 상태 트리 데이터 구조체의 적어도 일부의 복수의 복사본을 생성하는 생성 모듈;
    상기 복수의 독립적인 트랜잭션 군과 상기 블록체인의 상기 마지막 블록의 상기 상태 트리 데이터 구조체의 상기 복수의 복사본을 각각 연관시키는 연관 모듈;
    각각의 독립적인 트랜잭션 군 내 상기 후보 트랜잭션을 실행시키고 그리고 상기 블록체인의 상기 마지막 블록의 상기 상태 트리 데이터 구조체의 연관된 복사본을 업데이트하여 상기 복수의 독립적인 트랜잭션 군을 병렬로 처리하는 실행 모듈로서, 상기 후보 트랜잭션은 상기 블록체인에 추가되어 있지 않은, 실행 모듈; 및
    상기 상태 트리 데이터 구조체의 업데이트되고 연관된 복사본을 통합하여 새로운 블록의 새로운 상태 루트 노드를 생성하고 상기 업데이트를 상기 새로운 상태 루트 노드로 전파하는 통합 모듈을 포함하는, 병렬-처리 블록체인 트랜잭션을 위한 장치.
  13. 디바이스의 프로세서에 의해 실행될 때, 상기 디바이스가 제1항에 따른 방법을 수행하게 하는 명령어가 저장되는, 비일시적 컴퓨터-판독가능 매체.
KR1020197028449A 2019-03-28 2019-03-28 병렬-처리 블록체인 트랜잭션을 위한 시스템 및 방법 KR102315473B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/080036 WO2019120320A2 (en) 2019-03-28 2019-03-28 System and method for parallel-processing blockchain transactions

Publications (2)

Publication Number Publication Date
KR20200116011A KR20200116011A (ko) 2020-10-08
KR102315473B1 true KR102315473B1 (ko) 2021-10-21

Family

ID=66994287

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197028449A KR102315473B1 (ko) 2019-03-28 2019-03-28 병렬-처리 블록체인 트랜잭션을 위한 시스템 및 방법

Country Status (10)

Country Link
US (2) US11310032B2 (ko)
EP (1) EP3610450A4 (ko)
JP (1) JP6955026B2 (ko)
KR (1) KR102315473B1 (ko)
CN (1) CN110869967B (ko)
AU (1) AU2019204722B2 (ko)
CA (1) CA3055108C (ko)
SG (1) SG11201908294TA (ko)
TW (1) TWI721699B (ko)
WO (1) WO2019120320A2 (ko)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111466096B (zh) * 2017-09-08 2021-12-31 尤利杰公司 提供不可变记录的系统和方法
SG11202002848VA (en) * 2017-10-04 2020-06-29 Algorand Inc Declarative smart contracts
US11956346B2 (en) * 2018-08-31 2024-04-09 Simplecredit Micro-Lending Co., Ltd. Blockchain system, information sharing method and related equipment
EP3619667A4 (en) * 2019-04-12 2020-05-06 Alibaba Group Holding Limited IMPLEMENTATION OF TRANSACTIONS IN A DISTRIBUTED ACCOUNT SYSTEM
EP3619668B1 (en) 2019-04-12 2023-12-20 Advanced New Technologies Co., Ltd. Performing parallel execution of transactions in a distributed ledger system
CN111767337B (zh) * 2019-05-24 2024-04-05 北京沃东天骏信息技术有限公司 区块的验证方法、装置及设备
US10764062B2 (en) * 2019-06-03 2020-09-01 Alibaba Group Holding Limited Blockchain ledger compression
SG11202001989WA (en) 2019-07-11 2020-04-29 Alibaba Group Holding Ltd Shared blockchain data storage
WO2019179538A2 (en) * 2019-07-11 2019-09-26 Alibaba Group Holding Limited Shared blockchain data storage
SG11202002017YA (en) 2019-07-11 2020-04-29 Alibaba Group Holding Ltd Shared blockchain data storage
CN110445627B (zh) * 2019-08-12 2021-10-26 腾讯科技(深圳)有限公司 群组更新方法、装置、计算机设备以及计算机存储介质
US10992459B2 (en) * 2019-08-30 2021-04-27 Advanced New Technologies Co., Ltd. Updating a state Merkle tree
US10990879B2 (en) * 2019-09-06 2021-04-27 Digital Asset Capital, Inc. Graph expansion and outcome determination for graph-defined program states
CN110599169B (zh) * 2019-09-16 2021-03-26 腾讯科技(深圳)有限公司 数据处理方法、装置、终端及介质
JP2021057887A (ja) * 2019-09-29 2021-04-08 工藤 健司 データ構造
KR102335058B1 (ko) * 2019-11-19 2021-12-06 한양대학교 산학협력단 상호 의존성을 가지는 병렬 트랜잭션들을 선형화하는 방법, 이를 이용하는 블록체인 노드 및 프로그램
US11520776B1 (en) * 2020-02-11 2022-12-06 Two Six Labs, LLC Consensus protocol for blockchain structure
CN111343177B (zh) * 2020-02-25 2022-11-29 百度在线网络技术(北京)有限公司 轻量级节点的监管方法、装置、设备和介质
WO2021184325A1 (en) * 2020-03-19 2021-09-23 Wang Chau Tyler Kot Ethereum state data storage optimization method, ethereum system and storage medium
CN111432009B (zh) * 2020-03-30 2023-04-07 深圳壹账通智能科技有限公司 一种区块链数据的同步方法、装置及电子设备、存储介质
CN111506783B (zh) * 2020-04-08 2023-12-22 百度在线网络技术(北京)有限公司 区块链中事务请求处理方法、装置、设备和介质
CN111630830B (zh) 2020-04-15 2023-07-04 支付宝(杭州)信息技术有限公司 账户模型下的分布式区块链数据存储
SG11202103246SA (en) 2020-04-20 2021-04-29 Alipay Hangzhou Inf Tech Co Ltd Distributed blockchain data storage under account model
CN111640020B (zh) * 2020-05-22 2023-09-19 百度在线网络技术(北京)有限公司 区块链中事务请求处理方法、装置、设备和介质
CN111651790B (zh) * 2020-06-11 2023-04-11 上海分布信息科技有限公司 一种开放区块链中隐私信息的保护方法及系统
CN111861744A (zh) * 2020-06-30 2020-10-30 上海简苏网络科技有限公司 一种实现区块链交易并行化的方法及区块链节点
US11563559B2 (en) 2020-07-29 2023-01-24 International Business Machines Corporation Parallel processing of blockchain procedures
CN111935315B (zh) * 2020-09-25 2021-01-12 支付宝(杭州)信息技术有限公司 区块同步方法及装置
KR102473672B1 (ko) * 2020-10-20 2022-12-02 주식회사 커먼컴퓨터 트리 구조의 상태 데이터베이스를 포함하는 블록체인에 대한 상태 관리 방법 및 시스템
KR102378377B1 (ko) * 2020-11-13 2022-03-24 고려대학교 산학협력단 스마트 컨트랙트 내의 취약 트랜잭션 시퀀스 획득 장치 및 방법
CN113077344B (zh) * 2021-04-15 2023-06-30 恒生电子股份有限公司 基于区块链的交易方法、装置、电子设备及存储介质
CN113256417B (zh) * 2021-05-14 2022-07-12 杭州链网科技有限公司 一种基于交易共享的共识出块方法及系统
CN113592639B (zh) * 2021-05-21 2023-10-13 上海简苏网络科技有限公司 一种区块链交易删除方法及系统
KR102309503B1 (ko) * 2021-05-28 2021-10-07 주식회사 바스스토어 블록체인을 이용한 트랜잭션 방법, 노드 장치 및 컴퓨터 판독 가능한 기록 매체
US11790353B2 (en) * 2021-06-16 2023-10-17 Song Hwan KIM System and method for online/offline payment with virtual currency for nodes included in mobile-based blockchain distributed network
CN113704917A (zh) * 2021-08-27 2021-11-26 清华大学 基于本体的机械产品数字孪生模型演化管理方法及装置
US11936794B2 (en) * 2021-09-16 2024-03-19 Masterard International Incorporated Method and system for parallel processing of smart contracts in permissioned blockchains
US11854009B2 (en) * 2021-10-07 2023-12-26 Chia Network Inc. Method for pooling in a proof-of-space-based blockchain via singletons
CN114500433B (zh) * 2022-01-21 2024-04-19 北京送好运信息技术有限公司 基于区块链与默克尔树的多邮件数据保全方法
GB2615598A (en) * 2022-02-15 2023-08-16 Nchain Licensing Ag Attesting to a set of unconsumed transaction outputs

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018157778A1 (zh) 2017-02-28 2018-09-07 阿里巴巴集团控股有限公司 写入区块链业务数据的方法和装置及业务子集合确定方法
CN109146677A (zh) * 2017-06-14 2019-01-04 深圳区块链金融服务有限公司 并行构建区块链视图的方法、计算机系统和可读存储介质
US20190081793A1 (en) * 2017-09-12 2019-03-14 Kadena, LLC Parallel-chain architecture for blockchain systems

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9594644B2 (en) * 2014-09-19 2017-03-14 Sybase, Inc. Converting a serial transaction schedule to a parallel transaction schedule
US10121019B2 (en) 2015-06-02 2018-11-06 ALTR Solutions, Inc. Storing differentials of files in a distributed blockchain
US9881176B2 (en) 2015-06-02 2018-01-30 ALTR Solutions, Inc. Fragmenting data for the purposes of persistent storage across multiple immutable data structures
US10193696B2 (en) 2015-06-02 2019-01-29 ALTR Solutions, Inc. Using a tree structure to segment and distribute records across one or more decentralized, acylic graphs of cryptographic hash pointers
US10042782B2 (en) 2015-06-02 2018-08-07 ALTR Solutions, Inc. Immutable datastore for low-latency reading and writing of large data sets
US10114970B2 (en) 2015-06-02 2018-10-30 ALTR Solutions, Inc. Immutable logging of access requests to distributed file systems
US10089489B2 (en) 2015-06-02 2018-10-02 ALTR Solutions, Inc. Transparent client application to arbitrate data storage between mutable and immutable data repositories
US10366247B2 (en) 2015-06-02 2019-07-30 ALTR Solutions, Inc. Replacing distinct data in a relational database with a distinct reference to that data and distinct de-referencing of database data
US10075298B2 (en) 2015-06-02 2018-09-11 ALTR Solutions, Inc. Generation of hash values within a blockchain
CN108701325B (zh) * 2015-12-21 2022-11-22 星茶瓦公司 自调节交易系统以及用于该系统的方法
US10255108B2 (en) * 2016-01-26 2019-04-09 International Business Machines Corporation Parallel execution of blockchain transactions
KR101735708B1 (ko) 2016-02-02 2017-05-15 주식회사 코인플러그 파일에 대한 노터리 서비스를 제공하고 상기 노터리 서비스를 사용하여 기록된 파일에 대한 검증을 수행하는 방법 및 서버
US10417217B2 (en) 2016-08-05 2019-09-17 Chicago Mercantile Exchange Inc. Systems and methods for blockchain rule synchronization
CN106330431A (zh) * 2016-08-29 2017-01-11 北京瑞卓喜投科技发展有限公司 基于区块链技术的数据处理方法、装置及系统
WO2018126076A1 (en) 2016-12-30 2018-07-05 Intel Corporation Data packaging protocols for communications between iot devices
US20190079998A1 (en) * 2017-01-31 2019-03-14 Thomas Jay Rush Blockchain data-processing engine
US20180247191A1 (en) 2017-02-03 2018-08-30 Milestone Entertainment Llc Architectures, systems and methods for program defined entertainment state system, decentralized cryptocurrency system and system with segregated secure functions and public functions
US10762479B2 (en) * 2017-04-05 2020-09-01 Samsung Sds Co., Ltd. Method and system for processing blockchain-based real-time transaction
US11481360B2 (en) 2017-04-07 2022-10-25 Hwa-Shang CHANG Blockchain network and method of operation thereof
EP4184404A1 (en) 2017-05-26 2023-05-24 nChain Licensing AG Script-based blockchain interaction
CN110870254B (zh) * 2017-06-01 2023-03-31 斯凯维公司D/B/A阿索尼 提供分布式私有子空间化数据结构的方法和系统
AU2018277270A1 (en) * 2017-06-01 2019-11-07 Etoro Group Ltd. Smart contract for copy trading
CN107423961A (zh) * 2017-07-11 2017-12-01 北京泛融科技有限公司 一种基于随机相关性分析的优化共识方法
US10761877B2 (en) 2017-07-21 2020-09-01 Intel Corporation Apparatuses, methods, and systems for blockchain transaction acceleration
US20190065593A1 (en) 2017-08-28 2019-02-28 Forward Blockchain, LLC Distributed Ledger Registry System
CN107678865A (zh) * 2017-09-20 2018-02-09 中国银行股份有限公司 基于交易分组的区块链的验证方法以及系统
CN108846659B (zh) * 2018-06-13 2021-09-14 深圳前海微众银行股份有限公司 基于区块链的转账方法、装置及存储介质
US11070360B2 (en) * 2018-08-13 2021-07-20 International Business Machines Corporation Parallel transaction validation and block generation in a blockchain
CN108932348B (zh) 2018-08-16 2020-06-30 北京京东尚科信息技术有限公司 区块链的合并处理方法、装置、区块链节点及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018157778A1 (zh) 2017-02-28 2018-09-07 阿里巴巴集团控股有限公司 写入区块链业务数据的方法和装置及业务子集合确定方法
CN109146677A (zh) * 2017-06-14 2019-01-04 深圳区块链金融服务有限公司 并行构建区块链视图的方法、计算机系统和可读存储介质
US20190081793A1 (en) * 2017-09-12 2019-03-14 Kadena, LLC Parallel-chain architecture for blockchain systems

Also Published As

Publication number Publication date
EP3610450A4 (en) 2020-06-10
WO2019120320A3 (en) 2020-02-06
SG11201908294TA (en) 2019-10-30
CN110869967A (zh) 2020-03-06
AU2019204722B2 (en) 2020-10-29
EP3610450A2 (en) 2020-02-19
JP2020519983A (ja) 2020-07-02
AU2019204722A1 (en) 2019-06-27
CN110869967B (zh) 2024-04-16
US20200145197A1 (en) 2020-05-07
TW202037108A (zh) 2020-10-01
CA3055108C (en) 2021-10-05
CA3055108A1 (en) 2019-06-27
US20200044824A1 (en) 2020-02-06
TWI721699B (zh) 2021-03-11
JP6955026B2 (ja) 2021-10-27
WO2019120320A2 (en) 2019-06-27
US11310032B2 (en) 2022-04-19
US10700852B2 (en) 2020-06-30
KR20200116011A (ko) 2020-10-08

Similar Documents

Publication Publication Date Title
KR102315473B1 (ko) 병렬-처리 블록체인 트랜잭션을 위한 시스템 및 방법
US10885735B2 (en) System and method for information protection
US10700850B2 (en) System and method for information protection
CA3037833C (en) System and method for information protection
KR20210003234A (ko) 분할된 블록체인 네트워크에서 블록체인의 블록을 유지하는 것
AU2019101607A4 (en) System and method for parallel-processing blockchain transactions
AU2019101581A4 (en) System and method for information protection
US11973869B2 (en) Maintaining blocks of a blockchain in a partitioned blockchain network

Legal Events

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