KR20210055734A - 블록 처리 방법들, 노드 및 시스템 - Google Patents

블록 처리 방법들, 노드 및 시스템 Download PDF

Info

Publication number
KR20210055734A
KR20210055734A KR1020217009871A KR20217009871A KR20210055734A KR 20210055734 A KR20210055734 A KR 20210055734A KR 1020217009871 A KR1020217009871 A KR 1020217009871A KR 20217009871 A KR20217009871 A KR 20217009871A KR 20210055734 A KR20210055734 A KR 20210055734A
Authority
KR
South Korea
Prior art keywords
node
transaction
candidate block
block
result
Prior art date
Application number
KR1020217009871A
Other languages
English (en)
Other versions
KR102562558B1 (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 KR20210055734A publication Critical patent/KR20210055734A/ko
Application granted granted Critical
Publication of KR102562558B1 publication Critical patent/KR102562558B1/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/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3825Use of electronic signatures
    • 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/461Saving or restoring of program or task context
    • G06F9/463Program control block organisation
    • 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/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3827Use of message hashing
    • 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/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/401Transaction verification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1854Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with non-centralised forwarding system, e.g. chaincast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1087Peer-to-peer [P2P] networks using cross-functional networking aspects
    • H04L67/1089Hierarchical topologies
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Power Engineering (AREA)
  • Multimedia (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Hardware Redundancy (AREA)
  • Computer And Data Communications (AREA)

Abstract

블록 생성 속도 및 트랜잭션 처리 성능을 향상시키기 위한 블록 처리 방법들, 노드 및 시스템이 개시된다. 이 방법들 중 하나는 다음을 포함한다: 제1 노드가 리더 노드이고 제2 노드가 슬레이브 노드일 때, 제1 노드는 제1 노드의 트랜잭션 큐에 있는 제1 트랜잭션 정보를 후보 블록으로 패킹하고, 후보 블록을 브로드캐스트하며; 제1 노드는 후보 블록 내의 제1 트랜잭션 정보를 검증하여 제1 검증 결과를 생성하고, 후보 블록 내의 제1 트랜잭션 정보를 실행하여 제1 트랜잭션 실행 결과를 생성하며; 제1 노드는 제1 노드 처리 결과를 브로드캐스트하고; 제1 노드는 블록체인을 통해 제2 노드에 의해 브로드캐스트된 제2 노드 처리 결과를 수신하고; 제1 노드는 제1 노드 처리 결과 및 제2 노드 처리 결과에 따라 후보 블록에 대한 합의를 하고 그 후 후보 블록에 대한 합의가 성공적이면 후보 블록을 세이브하고, 제1 트랜잭션 정보가 성공적으로 실행되면 제1 트랜잭션 실행 결과를 세이브한다.

Description

블록 처리 방법들, 노드 및 시스템
본 출원은 2019년 4월 26일자로 출원된 "BLOCK PROCESSING METHOD, NODE AND SYSTEM"이라는 명칭의 중국 특허 출원 제201910345985.4호에 대한 우선권을 주장하며, 그 전체가 참고로 포함된다.
본 개시내용은 컴퓨터 기술 분야에 관한 것으로, 특히, 블록 처리 방법, 노드, 및 시스템에 관한 것이다.
사용자는 클라이언트를 통해 트랜잭션을 개시할 수 있고, 트랜잭션 동안 기록된 모든 트랜잭션 정보는 저장을 위해 블록으로 패키징된다. 연속적인 트랜잭션들로, 블록들은 서로 링크되어 블록체인(blockchain)을 형성하며, 블록체인은 원장(ledger)으로도 지칭된다. 블록체인은 오픈 네트워크 원장(open network ledger)이고, 복수의 블록을 포함할 수 있다. 블록체인은 퍼블릭 체인(public chain), 프라이빗 체인(private chain), 및 얼라이언스 체인(alliance chain)과 같은 복수의 형태로 형성될 수 있다. 퍼블릭 체인은 비트코인 시리즈(Bitcoin series), 이더리움 시리즈(Ethereum series) 등을 포함할 수 있다.
현재, 퍼블릭 체인을 위한 블록 생성 방법은 구체적으로 다음의 절차를 포함할 수 있다.
새로운 트랜잭션이 블록체인 내의 노드(예를 들어, 노드 1)에 도달한 후에, 노드 1은 트랜잭션이 유효한지를 먼저 검증하고, 그 후 유효한 트랜잭션을 로컬 트랜잭션 풀(local transaction pool)에 넣고, 트랜잭션 정보를 블록체인 내의 다른 노드들에 브로드캐스트한다.
새로운 블록 생성 주기가 도래하면, 노드 1은 트랜잭션 풀로부터 트랜잭션 리스트를 획득하고, 이어서 트랜잭션 리스트를 후보 블록으로서 패키징하고, 후보 블록에 서명을 추가한 후에, 블록체인을 통해 후보 블록을 브로드캐스트한다.
블록체인 내의 모든 노드는 수신된 후보 블록에 대한 합의를 수행하고, 합의에 성공적으로 도달한 후에 후보 블록을 세이브(save)한다. 그 후, 후보 블록에서의 트랜잭션은 노드 1에 의해 실행된다.
전술한 블록 생성 방법이 퍼블릭 체인에 적용되는 경우, 블록체인의 기본 데이터의 보안이 보장될 수 있다. 그러나, 얼라이언스 체인 및 프라이빗 체인에서, 보안 인자들의 검증은 복수의 계층에서 이루어질 수 있으며, 블록체인의 기본 데이터로 제한되지 않는다. 전술한 블록 생성 방법이 얼라이언스 체인 또는 프라이빗 체인에 적용되는 경우, 블록 생성에 요구되는 시간이 너무 길어서, 트랜잭션들이 제시간에 처리될 수 없기 때문에 누적(accumulation)을 초래한다. 결과적으로, 블록체인의 혼잡이 야기된다.
본 개시내용의 실시예들은 블록 생성 속도 및 트랜잭션 처리 성능을 향상시키기 위한 블록 처리 방법, 노드, 및 시스템을 제공한다.
본 개시내용의 실시예들은 다음의 해결책들을 제공한다:
일 양태에 따르면, 본 개시내용의 실시예들은 블록 처리 방법을 제공하며, 이 방법은 블록체인 내의 제1 노드에 의해 실행되고, 이 블록체인은 제2 노드를 추가로 포함하고, 제1 노드는 리더 노드(leader node)이고, 제2 노드는 팔로워 노드(follower node)이고, 이 방법은:
제1 노드에 의해, 제1 노드의 트랜잭션 큐(transaction queue)에 있는 제1 트랜잭션 정보를 후보 블록으로 패키징하고, 블록체인을 통해 후보 블록을 브로드캐스트하는 단계;
제1 노드에 의해, 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제1 검증 결과를 생성하고, 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제1 트랜잭션 실행 결과를 생성하는 단계;
제1 노드에 의해, 블록체인을 통해 제1 노드 처리 결과를 브로드캐스트하는 단계 - 제1 노드 처리 결과는 제1 검증 결과 및 제1 트랜잭션 실행 결과를 포함함 - ;
제1 노드에 의해, 블록체인을 통해 제2 노드에 의해 브로드캐스트된 제2 노드 처리 결과를 수신하는 단계 - 제2 노드 처리 결과는 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제2 노드에 의해 생성된 제2 검증 결과, 및 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제2 노드에 의해 생성된 제2 트랜잭션 실행 결과를 포함함 - ; 및
제1 노드에 의해, 제1 노드 처리 결과 및 제2 노드 처리 결과에 따라 후보 블록에 대한 합의를 수행하고, 제1 노드에 의해, 후보 블록에 대한 합의에 성공적으로 도달한 경우에 후보 블록을 세이브하고, 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제1 트랜잭션 실행 결과를 세이브하는 단계를 포함한다.
일 양태에 따르면, 본 개시내용의 실시예는 블록 처리 방법을 제공하며, 이 방법은 블록체인 내의 제2 노드에 의해 실행되고, 이 블록체인은 제1 노드를 추가로 포함하고, 제1 노드는 리더 노드이고, 제2 노드는 팔로워 노드이고, 이 방법은:
제2 노드에 의해, 블록체인을 통해 제1 노드에 의해 브로드캐스트된 후보 블록을 수신하고, 후보 블록으로부터 제1 트랜잭션 정보를 획득하는 단계;
제2 노드에 의해, 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제2 검증 결과를 생성하고, 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제2 트랜잭션 실행 결과를 생성하는 단계;
제2 노드에 의해, 블록체인을 통해 제2 노드 처리 결과를 브로드캐스트하는 단계 - 제2 노드 처리 결과는 제2 검증 결과 및 제2 트랜잭션 실행 결과를 포함함 - ; 및
제2 노드에 의해, 제1 트랜잭션 정보가 성공적으로 검증된 경우에 후보 블록을 세이브하고, 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제2 트랜잭션 실행 결과를 세이브하는 단계를 포함한다.
일 양태에 따르면, 본 개시내용의 실시예들은 블록 처리 방법을 제공하며, 이 방법은 블록체인 내의 제1 노드에 의해 실행되고, 이 블록체인은 제2 노드를 추가로 포함하고, 제1 노드는 리더 노드이고, 제2 노드는 팔로워 노드이고, 이 방법은:
적어도 하나의 클라이언트가 트랜잭션 정보를 블록체인에 송신하는 것에 응답하여, 제1 노드에 의해, 클라이언트가 송신한 트랜잭션 정보를 제1 노드의 트랜잭션 큐에 넣는 단계;
제1 노드에 의해, 트랜잭션 큐가 미리 설정된 블록 생성 조건을 충족하는지를 체크하는 단계;
트랜잭션 큐가 블록 생성 조건을 충족하는 것에 응답하여, 제1 노드에 의해, 제1 노드의 트랜잭션 큐에 있는 제1 트랜잭션 정보를 후보 블록으로 패키징하고, 후보 블록에 서명을 추가하고, 블록체인을 통해 후보 블록을 브로드캐스트하는 단계;
제1 노드에 의해, 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제1 검증 결과를 생성하고, 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제1 트랜잭션 실행 결과를 생성하는 단계;
제1 노드에 의해, 제1 노드 처리 결과에 서명을 추가하고, 그 후 블록체인을 통해 제1 노드 처리 결과를 브로드캐스트하는 단계 - 제1 노드 처리 결과는 제1 검증 결과 및 제1 트랜잭션 실행 결과를 포함함 - ;
제1 노드에 의해, 블록체인을 통해 제2 노드에 의해 브로드캐스트된 제2 노드 처리 결과를 수신하는 단계 - 제2 노드 처리 결과는 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제2 노드에 의해 생성된 제2 검증 결과, 및 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제2 노드에 의해 생성된 제2 트랜잭션 실행 결과를 포함함 - ; 및
제1 노드에 의해, 제1 노드 처리 결과 및 제2 노드 처리 결과에 따라, 분산형 합의 알고리즘(distributed consensus algorithm)을 사용하여 후보 블록에 대한 합의를 수행하고, 그 후 제1 노드에 의해, 후보 블록에 대한 합의에 성공적으로 도달한 경우에 후보 블록을 세이브하고, 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제1 트랜잭션 실행 결과를 세이브하는 단계를 포함한다.
일 양태에 따르면, 본 개시내용의 실시예는 블록 처리 방법을 제공하며, 이 방법은 블록체인 내의 제2 노드에 의해 실행되고, 이 블록체인은 제1 노드를 추가로 포함하고, 제1 노드는 리더 노드이고, 제2 노드는 팔로워 노드이고, 이 방법은:
제2 노드에 의해, 블록체인을 통해 제1 노드에 의해 브로드캐스트된 후보 블록을 수신하고, 후보 블록으로부터 제1 트랜잭션 정보를 획득하는 단계;
제2 노드에 의해, 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제2 검증 결과를 생성하고, 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제2 트랜잭션 실행 결과를 생성하는 단계;
제2 노드에 의해, 제2 노드 처리 결과에 서명을 추가하고, 블록체인을 통해 제2 노드 처리 결과를 브로드캐스트하는 단계 - 제2 노드 처리 결과는 제2 검증 결과 및 제2 트랜잭션 실행 결과를 포함함 - ; 및
제2 노드에 의해, 제1 트랜잭션 정보가 성공적으로 검증된 경우에 후보 블록을 세이브하고, 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제2 트랜잭션 실행 결과를 세이브하는 단계를 포함한다.
일 양태에 따르면, 본 개시내용의 실시예는 블록체인 노드를 추가로 제공하며, 이 블록체인 노드는 블록체인 내의 제1 노드이고, 이 블록체인은 제2 노드를 추가로 포함하고, 제1 노드는 리더 노드이고, 제2 노드는 팔로워 노드이고, 제1 노드는 처리 모듈 및 송수신기 모듈을 포함하고,
처리 모듈은 제1 노드의 트랜잭션 큐에 있는 제1 트랜잭션 정보를 후보 블록으로 패키징하도록 구성되고;
송수신기 모듈은 블록체인을 통해 후보 블록을 브로드캐스트하도록 구성되고;
처리 모듈은 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제1 검증 결과를 생성하고, 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제1 트랜잭션 실행 결과를 생성하도록 추가로 구성되고;
송수신기 모듈은 블록체인을 통해 제1 노드 처리 결과를 브로드캐스트하도록 추가로 구성되고, 제1 노드 처리 결과는 제1 검증 결과 및 제1 트랜잭션 실행 결과를 포함하고;
송수신기 모듈은 블록체인을 통해 제2 노드에 의해 브로드캐스트된 제2 노드 처리 결과를 수신하도록 추가로 구성되고, 제2 노드 처리 결과는 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제2 노드에 의해 생성된 제2 검증 결과, 및 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제2 노드에 의해 생성된 제2 트랜잭션 실행 결과를 포함하고;
처리 모듈은 제1 노드 처리 결과 및 제2 노드 처리 결과에 따라 후보 블록에 대한 합의를 수행하고, 제1 노드에 의해, 후보 블록에 대한 합의에 성공적으로 도달한 경우에 후보 블록을 세이브하고, 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제1 트랜잭션 실행 결과를 세이브하도록 추가로 구성된다.
일 양태에 따르면, 본 개시내용의 이 실시예는 블록체인 노드를 추가로 제공하며, 이 블록체인 노드는 블록체인 내의 제2 노드이고, 이 블록체인은 제1 노드를 추가로 포함하고, 제1 노드는 리더 노드이고, 제2 노드는 팔로워 노드이고, 제2 노드는 처리 모듈 및 송수신기 모듈을 포함하고,
송수신기 모듈은 블록체인을 통해 제1 노드에 의해 브로드캐스트된 후보 블록을 수신하도록 구성되고;
처리 모듈은 후보 블록으로부터 제1 트랜잭션 정보를 획득하도록 구성되고;
처리 모듈은 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제2 검증 결과를 생성하고, 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제2 트랜잭션 실행 결과를 생성하도록 추가로 구성되고;
송수신기 모듈은 블록체인을 통해 제2 노드 처리 결과를 브로드캐스트하도록 추가로 구성되고, 제2 노드 처리 결과는 제2 검증 결과 및 제2 트랜잭션 실행 결과를 포함하고;
처리 모듈은 제1 트랜잭션 정보가 성공적으로 검증된 경우에 후보 블록을 세이브하고, 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제2 트랜잭션 실행 결과를 세이브하도록 추가로 구성된다.
일 양태에 따르면, 본 개시내용의 실시예는 블록체인 노드를 추가로 제공하며, 이 블록체인 노드는 블록체인 내의 제1 노드이고, 이 블록체인은 제2 노드를 추가로 포함하고, 제1 노드는 리더 노드이고, 제2 노드는 팔로워 노드이고, 제1 노드는 처리 모듈 및 송수신기 모듈을 포함하고,
처리 모듈은, 적어도 하나의 클라이언트가 트랜잭션 정보를 블록체인에 송신하는 것에 응답하여, 클라이언트가 송신한 트랜잭션 정보를 제1 노드의 트랜잭션 큐에 넣도록 구성되고;
처리 모듈은 트랜잭션 큐가 미리 설정된 블록 생성 조건을 충족하는지를 체크하도록 구성되고;
송수신기 모듈은, 트랜잭션 큐가 블록 생성 조건을 충족하는 것에 응답하여, 제1 노드의 트랜잭션 큐에 있는 제1 트랜잭션 정보를 후보 블록으로 패키징하고, 후보 블록에 서명을 추가하고, 블록체인을 통해 후보 블록을 브로드캐스트하도록 구성되고;
처리 모듈은 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제1 검증 결과를 생성하고, 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제1 트랜잭션 실행 결과를 생성하도록 구성되고;
송수신기 모듈은 제1 노드 처리 결과에 서명을 추가하고, 그 후 블록체인을 통해 제1 노드 처리 결과를 브로드캐스트하도록 구성되고, 제1 노드 처리 결과는 제1 검증 결과 및 제1 트랜잭션 실행 결과를 포함하고;
송수신기 모듈은 블록체인을 통해 제2 노드에 의해 브로드캐스트된 제2 노드 처리 결과를 수신하도록 구성되고, 제2 노드 처리 결과는 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제2 노드에 의해 생성된 제2 검증 결과, 및 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제2 노드에 의해 생성된 제2 트랜잭션 실행 결과를 포함하고;
처리 모듈은 제1 노드 처리 결과 및 제2 노드 처리 결과에 따라, 분산형 합의 알고리즘을 사용하여 후보 블록에 대한 합의를 수행하고, 그 후 후보 블록에 대한 합의에 성공적으로 도달한 경우에 후보 블록을 세이브하고, 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제1 트랜잭션 실행 결과를 세이브하도록 구성된다.
일 양태에 따르면, 본 개시내용의 이 실시예는 블록체인 노드를 추가로 제공하며, 이 블록체인 노드는 블록체인 내의 제2 노드이고, 이 블록체인은 제1 노드를 추가로 포함하고, 제1 노드는 리더 노드이고, 제2 노드는 팔로워 노드이고, 제2 노드는 처리 모듈 및 송수신기 모듈을 포함하고,
송수신기 모듈은 블록체인을 통해 제1 노드에 의해 브로드캐스트된 후보 블록을 수신하고, 후보 블록으로부터 제1 트랜잭션 정보를 획득하도록 구성되고;
처리 모듈은 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제2 검증 결과를 생성하고, 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제2 트랜잭션 실행 결과를 생성하도록 구성되고;
송수신기 모듈은 제2 노드 처리 결과에 서명을 추가하고, 그 후 블록체인을 통해 제2 노드 처리 결과를 브로드캐스트하도록 구성되고, 제2 노드 처리 결과는 제2 검증 결과 및 제2 트랜잭션 실행 결과를 포함하고;
처리 모듈은 제1 트랜잭션 정보가 성공적으로 검증된 경우에 후보 블록을 세이브하고, 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제2 트랜잭션 실행 결과를 세이브하도록 구성된다.
일 양태에 따르면, 본 개시내용의 실시예는 블록체인 노드를 제공하며, 이 블록체인 노드는 블록체인 내의 제1 노드이고, 제1 노드는 프로세서 및 메모리를 포함하고, 메모리는 명령어들을 저장하도록 구성되고; 프로세서는 메모리 내의 명령어들을 실행하여, 제1 노드로 하여금 제1 노드 측에서 블록 처리 방법을 수행하게 하도록 구성된다.
일 양태에 따르면, 본 개시내용의 이 실시예는 블록체인 노드를 제공하며, 이 블록체인 노드는 블록체인 내의 제2 노드이고, 제2 노드는 프로세서 및 메모리를 포함하고, 메모리는 명령어들을 저장하도록 구성되고; 프로세서는 메모리 내의 명령어들을 실행하여, 제2 노드로 하여금 제2 노드 측에서 블록 처리 방법을 수행하게 하도록 구성된다.
일 양태에 따르면, 본 개시내용의 실시예는 블록 처리 시스템을 제공하고, 이 블록 처리 시스템은 제1 노드 및 제2 노드를 포함하고,
제1 노드는 제1 노드 측에서 위의 블록 처리 방법을 수행하도록 구성되고;
제2 노드는 제2 노드 측에서 위의 블록 처리 방법을 수행하도록 구성된다.
일 양태에 따르면, 본 개시내용의 실시예는 컴퓨터 판독가능 저장 매체를 제공하며, 이 컴퓨터 판독가능 저장 매체는, 컴퓨터 상에서 실행될 때, 컴퓨터로 하여금 전술한 양태들에 따른 방법을 수행하게 하는 명령어들을 저장한다.
일 양태에 따르면, 본 개시내용의 실시예는, 컴퓨터 상에서 실행될 때, 컴퓨터로 하여금 전술한 방법을 수행하게 하는 컴퓨터 프로그램 제품을 제공한다.
본 개시내용의 실시예들에서, 제1 노드가 리더 노드이고, 제2 노드가 팔로워 노드인 경우, 제1 노드는 제1 노드의 트랜잭션 큐에 있는 제1 트랜잭션 정보를 후보 블록으로 패키징하고, 블록체인을 통해 후보 블록을 브로드캐스트한다. 그 후 제1 노드는 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제1 검증 결과를 생성하고, 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제1 트랜잭션 실행 결과를 생성한다. 제1 노드는 블록체인을 통해 제1 노드 처리 결과를 브로드캐스트하고, 제1 노드 처리 결과는 제1 검증 결과 및 제1 트랜잭션 실행 결과를 포함한다. 제1 노드는 블록체인을 통해 제2 노드에 의해 브로드캐스트된 제2 노드 처리 결과를 수신한다. 제1 노드는 제1 노드 처리 결과 및 제2 노드 처리 결과에 따라 후보 블록에 대한 합의를 수행한다. 그 다음, 제1 노드는 후보 블록에 대한 합의에 성공적으로 도달한 경우에 후보 블록을 세이브하고, 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제1 트랜잭션 실행 결과를 세이브한다. 본 개시내용의 실시예들에서, 제1 노드는 리더 노드의 역할을 한다. 제1 노드는 트랜잭션 큐를 사용하여 처리될 트랜잭션 정보를 캐싱하고, 트랜잭션 큐에 있는 트랜잭션 정보를 후보 블록으로 패키징하므로, 후보 블록이 브로드캐스트될 수 있고, 블록체인 내의 팔로워 노드가 트랜잭션 검증 및 트랜잭션 실행을 수행할 수 있다. 후보 블록을 브로드캐스트한 후, 제1 노드는 트랜잭션 검증 및 트랜잭션 실행을 수행할 수 있다. 그 후, 제1 노드는 제1 노드 처리 결과를 브로드캐스트할 수 있다. 제1 노드는 블록체인 내의 각각의 노드의 처리 결과에 따라 후보 블록에 대한 합의를 수행하고, 합의에 성공적으로 도달하면 블록을 세이브한다. 본 개시내용의 실시예들에서, 블록 생성 단계들의 순서가 변경되어, 블록체인 내의 모든 노드가 트랜잭션 검증 및 트랜잭션 실행을 수행할 수 있고, 따라서 블록 생성 속도 및 트랜잭션 처리 성능이 향상될 수 있다.
본 개시내용의 실시예들의 기술적 해결책들을 더 명확하게 설명하기 위해, 이하에서는 실시예들을 설명하는데 요구되는 첨부 도면들을 간략하게 설명한다. 명백히, 다음의 설명에서의 첨부 도면들은 본 개시내용의 일부 실시예들만을 도시하고, 본 기술분야의 통상의 기술자는 창조적인 노력들 없이 이 첨부 도면들로부터 다른 첨부 도면들을 여전히 도출할 수 있다.
도 1은 본 개시내용의 실시예에 따른 블록체인 시스템의 개략도이다.
도 2는 본 개시내용의 실시예에 따른 블록의 개략적인 구조도이다.
도 3은 본 개시내용의 실시예에 따른 블록 처리 시스템의 구성의 개략적인 구조도이다.
도 4는 본 개시내용의 실시예에 따른 리더 노드와 팔로워 노드 사이의 상호작용의 개략적인 흐름도이다.
도 5는 본 개시내용의 실시예에 따른 리더 노드에 의해 수행되는 블록 처리 방법의 개략적인 블록 흐름도이다.
도 6은 본 개시내용의 실시예에 따른 팔로워 노드에 의해 수행되는 블록 처리 방법의 개략적인 블록 흐름도이다.
도 7은 본 개시내용의 실시예에 따른 블록 생성 절차의 응용 시나리오의 개략도이다.
도 8은 본 개시내용의 실시예에 따른 Raft 데이터 제출 절차의 개략도이다.
도 9는 본 개시내용의 실시예에 따른 BFT-Raft 데이터 제출 절차의 개략도이다.
도 10은 본 개시내용의 실시예에 따른 제1 노드의 구성의 개략적인 구조도이다.
도 11은 본 개시내용의 실시예에 따른 제2 노드의 구성의 개략적인 구조도이다.
도 12는 본 개시내용의 실시예에 따른 블록 처리 방법을 적용하는 서버의 구성의 개략적인 구조도이다.
본 개시내용의 실시예들은 블록 생성 속도 및 트랜잭션 처리 성능을 향상시키기 위한 블록 처리 방법, 노드, 및 시스템을 제공한다.
본 개시내용의 실시예들의 목적들, 특징들, 및 이점들을 더욱 명확하게 하고 더욱 이해하기 쉽게 하기 위해, 이하에서는 본 개시내용의 실시예들에서의 첨부 도면들을 참조하여 본 개시내용의 실시예들에서의 기술적 해결책들을 명확하고 완전하게 설명한다. 명백하게, 설명된 실시예들은 본 개시내용의 실시예들 전부가 아니라 일부일 뿐이다. 본 개시내용의 실시예들에 기초하여 본 기술분야의 통상의 기술자에 의해 획득되는 모든 다른 실시예들은 본 개시내용의 보호 범위 내에 속할 것이다.
본 개시내용의 실시예들의 명세서, 청구항들, 및 첨부 도면들에서, 용어들 "포함하다(include)", "함유하다(contain)", 및 임의의 다른 변형들은 비-배타적인 포함(non-exclusive inclusion)을 커버하도록 의도된다. 따라서, 일련의 유닛들을 포함하는 프로세스, 방법, 시스템, 제품, 또는 디바이스는 반드시 그러한 유닛들로 제한되는 것은 아니고, 프로세스, 방법, 제품, 또는 디바이스의 그러한 유닛들에 고유하거나, 명시적으로 특정되지 않은 다른 유닛들을 포함할 수 있다.
먼저, 본 개시내용의 실시예들에서 사용되는 블록체인 시스템이 간략하게 소개된다.
블록체인 시스템은 데이터 공유 시스템, 즉, 노드들 사이에 데이터를 공유하기 위해 사용되는 시스템이다. 도 1은 본 개시내용의 실시예에 따른 블록체인 시스템(100)의 개략도이다. 블록체인 시스템(100)은 복수의 노드(110)("블록체인 노드"로도 지칭됨)를 포함할 수 있다. 정상 동작에서, 각각의 노드(110)는 입력 정보를 수신하고, 수신된 입력 정보에 기초하여 블록체인 시스템(100)에서 공유된 데이터를 유지할 수 있다. 블록체인 시스템(100)에서 정보 교환을 보장하기 위해, 블록체인 시스템(100) 내의 노드들(110)은 직접 또는 간접 정보 연결들을 가질 수 있고, 노드들(110)은 정보 연결들을 통해 정보 송신을 수행할 수 있다. 예를 들어, 블록체인 시스템(100) 내의 임의의 노드가 입력 정보를 수신하면, 블록체인 시스템(100) 내의 다른 노드들은 합의 알고리즘에 따라 입력 정보를 획득하고, 입력 정보를 공유된 데이터에 데이터로서 저장하여, 블록체인 시스템(100) 내의 모든 노드들에 저장된 데이터를 일관되게 만든다.
블록체인 시스템(100) 내의 노드들(110)은 모두 대응하는 노드 식별자들을 가지며, 블록체인 시스템(100) 내의 노드들(110)은 모두 블록체인 시스템(100) 내의 다른 노드들의 노드 식별자들을 저장할 수 있어, 생성된 블록을 다른 노드들의 노드 식별자들에 따라 블록체인 시스템 내의 다른 노드들에 후속하여 브로드캐스트할 수 있다. 각각의 노드는 다음 표에 도시된 바와 같이 노드 식별자 리스트를 유지할 수 있으며, 이 표는 노드 식별자 리스트에 대응하여 노드 이름들 및 노드 식별자들을 저장한다. 노드 식별자는 인터넷 프로토콜(IP) 어드레스 및 노드를 식별할 수 있는 임의의 다른 타입의 정보일 수 있다. 표 1의 IP 어드레스들은 단지 설명을 위한 예로서 사용된다.
Figure pct00001
블록체인 시스템(100) 내의 노드들(101)은 동일한 블록체인을 저장한다. 블록체인은 복수의 블록을 포함한다. 도 2를 참조하면, 블록체인(200)은 복수의 블록(201)을 포함한다. 초기 블록은 블록 헤더 및 블록 바디를 포함한다. 블록 헤더는 입력 정보 고유값, 버전 번호, 타임스탬프, 및 난이도 값을 저장하고, 블록 바디는 입력 정보를 저장한다. 초기 블록의 다음 블록은 초기 블록을 부모 블록으로서 사용하고, 또한 블록 헤더 및 블록 바디를 포함한다. 블록 헤더는 현재 블록의 입력 정보 고유값, 부모 블록의 블록 헤더 고유값, 버전 번호, 타임스탬프, 및 난이도 값을 저장한다. 이러한 방식으로, 블록체인 내의 각각의 블록에 저장된 블록 데이터는 부모 블록에 저장된 블록 데이터와 연관되어, 블록들의 입력 정보의 보안을 보장한다.
도 2는 본 개시내용의 실시예에 따른 블록 구조의 선택적인 개략도이다. 도 2를 참조하면, 블록체인(200)의 블록들(201)을 생성할 때, 입력 정보를 수신하면, 블록체인이 위치하는 노드는 입력 정보에 대한 검증을 수행하고, 그 후 입력 정보를 메모리 풀에 저장하고, 입력 정보를 기록하기 위해 사용되는 해시 트리(hash tree)를 업데이트한다. 후속하여, 업데이트 타임스탬프를 입력 정보를 수신한 시간으로 업데이트하고, 상이한 논스(nonce)들을 시도하여 고유값을 복수회 계산함으로써, 계산된 고유값이 다음 공식을 충족할 수 있다:
Figure pct00002
여기서 SHA256은 고유값을 계산하기 위해 사용되는 고유값 알고리즘이고; version(버전 번호)은 블록체인에서의 관련 블록 프로토콜의 버전 정보이고; prev_hash는 현재 블록의 부모 블록의 블록 헤더 고유값이고; merkle_root는 입력 정보의 고유값이고; ntime은 타임스탬프가 업데이트되는 업데이트 시간이고; nbits는 현재 난이도이고, 이는 일정 기간 내에 고정된 값을 갖고, 고정된 기간이 만료된 후에 다시 결정되고; x는 논스(nonce)이고; TARGET은 nbits에 따라 결정될 수 있는 고유값 임계값이다.
이러한 방식으로, 전술한 공식을 충족하는 논스가 계산되면, 대응하여 정보가 저장될 수 있어, 블록 헤더 및 블록 바디가 생성되어 현재 블록을 획득한다. 후속하여, 블록체인이 위치하는 노드는, 블록체인 시스템 내의 다른 노드들의 노드 식별자들에 따라, 새로 생성된 블록을 노드가 위치하는 블록체인 시스템 내의 다른 노드들에 개별적으로 송신한다. 다른 노드들은 새롭게 생성된 블록에 대한 검증을 수행하고, 검증을 완료한 후에, 새롭게 생성된 블록을 다른 노드들이 저장하는 블록체인에 추가한다.
본 개시내용의 실시예들에서 제공되는 블록 처리 방법은 블록 처리 시스템에 적용될 수 있고, 블록 처리 시스템은 블록체인의 일부이다. 도 3에 도시된 바와 같이, 블록 처리 시스템은 적어도 2개의 블록체인 노드를 포함할 수 있다. 예를 들어, 제1 노드 및 제2 노드가 포함될 수 있다. 제1 노드는 리더 노드이고, 제2 노드는 팔로워 노드이다. 제1 노드 및 제2 노드는, 예를 들어, 무선 네트워크 또는 유선 네트워크를 통해 서로 통신할 수 있다. 구체적으로, 블록 처리 시스템에서, 리더 노드 및 팔로워 노드는 노드 역할 선택을 통해 결정될 수 있다. 예를 들어, 블록체인의 모든 노드들 사이에 Raft 알고리즘을 실행하여 리더 노드 및 팔로워 노드를 선택한다. 블록체인에 하나의 리더 노드만이 존재하지만, 블록체인에 하나 이상의 팔로워 노드가 존재할 수 있다. Raft 알고리즘은 복수의 노드가 상태의 합의를 달성하는 것을 보장하는 분산형 합의 알고리즘이다. 정상 동작에서, 노드는 리더 역할을 하거나 팔로워 역할을 하며, 팔로워 역할은 리더 역할의 상태를 따른다. 본 개시내용의 실시예들에서 노드 역할 선택에 사용되는 알고리즘은 Raft 알고리즘에 제한되지 않는다. 예를 들어, 실용적 비잔틴 장애 허용(practical byzantine fault tolerance, PBFT) 알고리즘과 같은 비잔틴 장애 허용(byzantine fault tolerance, BFT) 유사 알고리즘이 대안적으로 노드 역할 선택에 사용될 수 있으며, 이는 본 명세서에서 제한되지 않는다.
먼저, 본 개시내용의 실시예들에서의 블록 처리 시스템의 리더 노드와 팔로워 노드 사이의 상호작용 절차가 예를 사용하여 설명된다. 도 4를 참조하면, 본 개시내용의 실시예들 중 하나에서 제공되는 블록 처리 방법은 다음의 단계들을 포함할 수 있다.
201. 제1 노드가 리더 노드이고, 제2 노드가 팔로워 노드인 경우, 제1 노드는 제1 노드의 트랜잭션 큐에 있는 제1 트랜잭션 정보를 후보 블록으로 패키징하고, 블록체인을 통해 후보 블록을 브로드캐스트한다.
본 개시내용의 이 실시예에서, 하나의 리더 노드 및 적어도 하나의 팔로워 노드는 블록체인에서의 노드 역할 선택을 통해 결정될 수 있다. 예를 들어, 제1 노드는 리더 노드이고, 제2 노드는 팔로워 노드이다. 제1 노드가 리더 노드로서 선택되면, 제1 노드는 트랜잭션 큐를 관리할 수 있고, 여기서 트랜잭션 큐는 클라이언트에 의해 송신된 트랜잭션 정보를 저장하기 위해 사용된다. 트랜잭션 큐에 저장된 하나 이상의 트랜잭션 정보가 있을 수 있고, 트랜잭션 정보는 트랜잭션으로도 지칭될 수 있다.
예를 들어, 제1 노드는 제1 노드의 트랜잭션 큐에 있는 제1 트랜잭션 정보를 후보 블록으로 패키징하고, 여기서 후보 블록은 블록체인 원장(blockchain ledger)에 기입될 블록이다. 제1 트랜잭션 정보가 후보 블록으로 패키징될 때, 제1 노드는 블록체인을 통해 후보 블록을 브로드캐스트할 수 있다. 제1 노드가 후보 블록을 브로드캐스트할 때, 블록체인 내의 모든 노드들(팔로워 노드 및 리더 노드를 포함함)은 후보 블록을 수신할 수 있다. 본 개시내용의 이 실시예에서, 브로드캐스트하기 전에, 제1 노드는 브로드캐스트되는 정보가 변조(tamper)되는 것을 방지하기 위해 후보 블록 또는 제1 트랜잭션 정보에 서명을 추가할 수 있다는 점이 제한되지 않는다.
211. 제2 노드는 블록체인을 통해 제1 노드에 의해 브로드캐스트된 후보 블록을 수신하고, 후보 블록으로부터 제1 트랜잭션 정보를 획득한다.
본 개시내용의 이 실시예에서, 제1 노드가 블록체인을 통해 후보 블록을 브로드캐스트하면, 블록체인 내의 제2 노드는 블록체인을 통해 제1 노드에 의해 브로드캐스트된 후보 블록을 수신할 수 있다. 블록체인 내의 다른 팔로워 노드가 또한 후보 블록을 수신할 수 있다는 점이 제한되지 않는다. 예를 들어, 블록체인 내의 제3 노드가 또한 제1 노드에 의해 송신된 후보 블록을 수신할 수 있다. 다음의 실시예들에서는, 제2 노드가 후보 블록 및 트랜잭션 정보를 처리하는 예가 설명된다. 블록체인에서의 다른 팔로워 노드의 절차들에 대해서는, 제2 노드의 실행 절차를 참조할 수 있으며, 이는 본 명세서에서 제한되지 않는다.
제2 노드가 제1 노드로부터 후보 블록을 획득한 후, 제2 노드는, 후보 블록으로부터, 제1 노드에 의해 후보 블록으로 패키징되는 제1 트랜잭션 정보를 획득할 수 있다.
212. 제2 노드는 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제2 검증 결과를 생성하고, 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제2 트랜잭션 실행 결과를 생성한다.
본 개시내용의 이 실시예에서, 제2 노드가 후보 블록으로부터 제1 트랜잭션 정보를 획득한 후에, 제2 노드는 제1 트랜잭션 정보에 대한 검증을 수행할 수 있고, 또한 제1 트랜잭션 정보에 대한 트랜잭션 실행 동작을 수행할 수 있다. 제1 트랜잭션 정보에 대해 제2 노드에 의해 수행되는 검증은 유효성 검증(validity verification)으로도 지칭될 수 있다. 유효성 검증은 트랜잭션 데이터 포맷 및 파라미터들에 대한 검증을 수행하고, 트랜잭션 리스트에 중복 트랜잭션들이 있는지를 검증하고, 트랜잭션의 입력이 유효한지 및 이중 지불(double-spending)이 발생하는지를 검증하고, 트랜잭션의 서명이 정확한지를 검증하고, 트랜잭션의 입력 금액이 출력 금액 이상인지를 검증하는 검증 프로세스들 중 적어도 하나를 포함할 수 있다. 제2 노드에 의한 제1 트랜잭션 정보에 의해 지시된 트랜잭션의 실행은 제2 트랜잭션 실행 결과를 생성할 수 있다. 트랜잭션을 실행하기 위한 복수의 시나리오가 있을 수 있으며, 이는 본 명세서에서 제한되지 않는다.
202. 제1 노드는 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제1 검증 결과를 생성하고, 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제1 트랜잭션 실행 결과를 생성한다.
본 개시내용의 이 실시예에서, 제1 노드가 후보 블록으로부터 제1 트랜잭션 정보를 획득한 후에, 제1 노드는 제1 트랜잭션 정보에 대한 검증을 수행할 수 있고, 또한 제1 트랜잭션 정보에 대한 트랜잭션 실행 동작을 수행할 수 있다. 제1 트랜잭션 정보에 대해 제1 노드에 의해 수행되는 검증은 유효성 검증으로도 지칭될 수 있다. 유효성 검증은 트랜잭션 데이터 포맷 및 파라미터들에 대한 검증을 수행하고, 트랜잭션 리스트에 중복 트랜잭션들이 있는지를 검증하고, 트랜잭션의 입력이 유효한지 및 이중 지불이 발생하는지를 검증하고, 트랜잭션의 서명이 정확한지를 검증하고, 트랜잭션의 입력 금액이 출력 금액 이상인지를 검증하는 검증 프로세스들 중 적어도 하나를 포함할 수 있다. 제1 노드에 의한 제1 트랜잭션 정보에 의해 지시된 트랜잭션의 실행은 제1 트랜잭션 실행 결과를 생성할 수 있다. 트랜잭션을 실행하기 위한 복수의 시나리오가 있을 수 있으며, 이는 본 명세서에서 제한되지 않는다.
203. 제1 노드는 블록체인을 통해 제1 노드 처리 결과를 브로드캐스트하고, 제1 노드 처리 결과는 제1 검증 결과 및 제1 트랜잭션 실행 결과를 포함한다.
본 개시내용의 이 실시예에서, 제1 노드가 트랜잭션 검증 및 트랜잭션 실행을 완료한 후에, 제1 노드는 제1 검증 결과 및 제1 트랜잭션 실행 결과를 포함하는 제1 노드 처리 결과를 생성할 수 있다. 제1 노드는 블록체인을 통해 제1 노드 처리 결과를 브로드캐스트하고, 블록체인 내의 모든 노드들(팔로워 노드 및 리더 노드를 포함함)은 제1 노드 처리 결과를 수신할 수 있다.
213. 제2 노드는 블록체인을 통해 제2 노드 처리 결과를 브로드캐스트하고, 이 제2 노드 처리 결과는 제2 검증 결과 및 제2 트랜잭션 실행 결과를 포함한다.
본 개시내용의 이 실시예에서, 제2 노드가 트랜잭션 검증 및 트랜잭션 실행을 완료한 후에, 제2 노드는 제2 검증 결과 및 제2 트랜잭션 실행 결과를 포함하는 제2 노드 처리 결과를 생성할 수 있다. 제2 노드는 블록체인을 통해 제2 노드 처리 결과를 브로드캐스트하고, 블록체인 내의 모든 노드들(팔로워 노드 및 리더 노드를 포함함)은 제2 노드 처리 결과를 수신할 수 있다.
전술한 실시예들에서, 단계 202 내지 단계 203 및 단계 211 내지 단계 213은 상이한 순서로 수행될 수 있다. 도 2는 실현가능한 구현을 도시하는 것일 뿐이고, 본 개시내용의 실시예들을 제한하려는 것은 아니다.
204. 제1 노드는 블록체인을 통해 제2 노드에 의해 브로드캐스트된 제2 노드 처리 결과를 수신하고, 제2 노드 처리 결과는 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제2 노드에 의해 생성된 제2 검증 결과, 및 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제2 노드에 의해 생성된 제2 트랜잭션 실행 결과를 포함한다.
본 개시내용의 이 실시예에서, 제2 노드는 블록체인을 통해 제2 노드 처리 결과를 브로드캐스트하고, 블록체인 내의 제1 노드는 블록체인을 통해 제2 노드에 의해 브로드캐스트된 제2 노드 처리 결과를 수신할 수 있다.
205. 제1 노드는 제1 노드 처리 결과 및 제2 노드 처리 결과에 따라 후보 블록에 대한 합의를 수행하고, 그 후 제1 노드는 후보 블록에 대한 합의에 성공적으로 도달한 경우에 후보 블록을 세이브하고, 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제1 트랜잭션 실행 결과를 세이브한다.
본 개시내용의 이 실시예에서, 제1 노드는, 단계 204를 통해, 제2 노드에 의해 브로드캐스트된 제2 노드 처리 결과를 수신하고, 제1 노드는 제1 노드 처리 결과 및 제2 노드 처리 결과에 따라 후보 블록에 대한 합의를 수행할 수 있다. 예를 들어, 제1 노드는 분산형 합의 알고리즘을 사용하여 합의를 수행할 수 있다. 분산형 합의 알고리즘은 Raft 알고리즘일 수 있다. 또한, 본 개시내용의 이 실시예에서의 분산형 합의 알고리즘은 대안적으로 BFT-Raft 알고리즘일 수 있는데, 이는 BFT와 호환가능한 Raft 알고리즘이다. BFT는 하드웨어 에러, 네트워크 고장, 및 네트워크 노드로부터의 악의적인 공격에 의해 야기되는 노드의 예상치 못한 고장을 처리하는데 사용된다.
본 개시내용의 이 실시예에서, 제1 노드는 후보 블록에 대한 합의를 수행하고, 그 후 제1 노드는 후보 블록에 대한 합의에 성공적으로 도달한 경우에 후보 블록을 세이브하고, 그에 의해 후보 블록의 블록 생성을 완료한다. 제1 노드는 또한 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제1 트랜잭션 실행 결과를 세이브할 수 있어, 제1 트랜잭션 정보에 대응하는 제1 트랜잭션 실행 결과는 후속 처리 절차에서의 쿼리를 통해 발견될 수 있다.
본 개시내용의 일부 실시예들에서, 단계 205에서 후보 블록에 대한 합의에 성공적으로 도달한 경우에 제1 노드가 후보 블록을 세이브하는 프로세스는 후보 블록에 대한 합의에 성공적으로 도달한 경우에 제1 노드가 후보 블록의 헤더 정보 및 성공적으로 검증된 제1 트랜잭션 정보를 세이브하는 것을 포함한다.
제1 트랜잭션 정보는 후보 블록에 패키징된다. 제1 노드가 후보 블록에 대한 합의를 수행한 후에, 제1 노드는, 후보 블록에 대한 합의에 성공적으로 도달한 경우, 구체적으로 후보 블록의 헤더 정보를 세이브하고 성공적으로 검증된 제1 트랜잭션 정보를 세이브할 수 있다. 후보 블록의 헤더 정보는, 후보 블록의 데이터 포맷과 관련하여, 예를 들어, 이전 블록의 해시 값, 머클 트리(Merkle tree)의 루트, 상태의 루트, 수신 루트, 노드의 서명, 논스(nonce) 등을 포함할 수 있다. 후보 블록의 헤더 정보는 구체적으로 응용 시나리오에 따라 결정될 수 있고, 이는 본 명세서에서 제한되지 않는다.
214. 제2 노드는 제1 트랜잭션 정보가 성공적으로 검증된 경우에 후보 블록을 세이브하고, 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제2 트랜잭션 실행 결과를 세이브한다.
본 개시내용의 이 실시예에서, 제2 노드는 블록체인을 통해 제2 노드 처리 결과를 브로드캐스트한 후에, 제2 노드는 제1 트랜잭션 정보가 성공적으로 검증되는지에 따라 후보 블록을 세이브할지를 결정할 수 있다. 제1 트랜잭션 정보가 성공적으로 검증되면, 제2 노드는 후보 블록을 세이브하고, 그에 의해 후보 블록의 블록 생성을 완료한다. 제2 노드는 추가로 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제2 트랜잭션 실행 결과를 세이브할 수 있어, 제1 트랜잭션 정보에 대응하는 제2 트랜잭션 실행 결과는 후속 처리 절차에서의 쿼리를 통해 발견될 수 있다.
전술한 실시예들에서의 본 개시내용의 실시예들의 설명들로부터, 제1 노드가 리더 노드이고, 제2 노드가 팔로워 노드인 경우, 제1 노드는 제1 노드의 트랜잭션 큐에 있는 제1 트랜잭션 정보를 후보 블록으로 패키징하고, 블록체인을 통해 후보 블록을 브로드캐스트한다는 것을 알 수 있다. 그 후 제1 노드는 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제1 검증 결과를 생성하고, 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제1 트랜잭션 실행 결과를 생성한다. 제1 노드는 블록체인을 통해 제1 노드 처리 결과를 브로드캐스트하고, 제1 노드 처리 결과는 제1 검증 결과 및 제1 트랜잭션 실행 결과를 포함한다. 제1 노드는 블록체인을 통해 제2 노드에 의해 브로드캐스트된 제2 노드 처리 결과를 수신한다. 제1 노드는 제1 노드 처리 결과 및 제2 노드 처리 결과에 따라 후보 블록에 대한 합의를 수행하고, 그 후 제1 노드는 후보 블록에 대한 합의에 성공적으로 도달한 경우에 후보 블록을 세이브하고, 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제1 트랜잭션 실행 결과를 세이브한다. 본 개시내용의 실시예들에서, 제1 노드는 리더 노드의 역할을 한다. 제1 노드는 트랜잭션 큐를 사용하여 처리될 트랜잭션 정보를 캐싱하고, 트랜잭션 큐에 있는 트랜잭션 정보를 후보 블록으로 패키징하므로, 후보 블록이 브로드캐스트될 수 있고, 블록체인 내의 팔로워 노드가 트랜잭션 검증 및 트랜잭션 실행을 수행할 수 있다. 후보 블록을 브로드캐스트한 후, 제1 노드는 다음의 처리: 트랜잭션 검증 및 트랜잭션 실행을 수행할 수 있다. 그 후, 제1 노드는 제1 노드 처리 결과를 브로드캐스트할 수 있다. 제1 노드는 블록체인 내의 각각의 노드의 처리 결과에 따라 후보 블록에 대한 합의를 수행하고, 합의에 성공적으로 도달하면 블록을 세이브한다. 본 개시내용의 실시예들에서, 블록 생성 단계들의 순서가 변경되어, 블록체인 내의 모든 노드가 트랜잭션 검증 및 트랜잭션 실행을 수행할 수 있고, 따라서 블록 생성 속도 및 트랜잭션 처리 성능이 향상될 수 있다.
본 개시내용의 이 실시예에서 제공되는 블록 처리 방법은 제1 노드의 관점에서 설명된다. 도 5를 참조하면, 본 개시내용의 이 실시예에서 제공되는 블록 처리 방법은 주로 다음의 단계들을 포함한다.
301. 제1 노드가 리더 노드이고, 제2 노드가 팔로워 노드인 경우, 제1 노드는 적어도 하나의 클라이언트에 의해 블록체인에 송신된 트랜잭션 정보를 수신한다.
본 개시내용의 일부 실시예들에서, 단계 301은 대안적으로 다음의 단계: 제1 노드에 의해, 적어도 하나의 클라이언트로부터 제2 노드에 의해 획득된 트랜잭션 정보를 수신하는 단계로 대체될 수 있다.
본 개시내용의 이 실시예에서, 사용자의 트랜잭션 정보를 획득한 후에, 적어도 하나의 클라이언트는 트랜잭션 정보를 블록체인에 송신할 수 있다. 예를 들어, 트랜잭션 정보는 블록체인 내의 제1 노드 또는 제2 노드에 송신될 수 있고, 이는 응용 시나리오에 따라 구체적으로 결정될 수 있다. 클라이언트가 제1 노드에 직접 트랜잭션 정보를 송신하면, 제1 노드는 적어도 하나의 클라이언트에 의해 블록체인에 송신된 트랜잭션 정보를 수신한다. 클라이언트가 제2 노드에 직접 트랜잭션 정보를 송신하면, 팔로워 노드의 역할을 하는 제2 노드가 클라이언트의 트랜잭션 정보를 수신한 후에, 제2 노드는 제1 노드에 트랜잭션 정보를 송신하고, 제1 노드는 적어도 하나의 클라이언트로부터 제2 노드에 의해 획득된 트랜잭션 정보를 수신할 수 있다.
302. 제1 노드는 적어도 하나의 클라이언트의 트랜잭션 정보를 트랜잭션 큐에 넣는다.
본 개시내용의 이 실시예에서, 제1 노드는 트랜잭션 큐를 유지한다. 제1 노드가 적어도 하나의 클라이언트의 트랜잭션 정보를 획득한 후에, 제1 노드는 적어도 하나의 클라이언트의 트랜잭션 정보를 트랜잭션 큐에 넣는다.
303. 제1 노드는 트랜잭션 큐가 미리 설정된 블록 생성 조건을 충족하는지를 체크한다.
본 개시내용의 이 실시예에서, 제1 노드는 트랜잭션 큐에 대한 블록 생성 조건을 미리 구성하여, 새로운 트랜잭션 정보가 트랜잭션 큐에 저장될 때 트랜잭션 큐가 미리 설정된 블록 생성 조건을 충족하는지를 체크할 수 있다. 블록 생성 조건은 블록 생성 프로세스를 수행할지를 결정하기 위한 실행 조건이다. 트랜잭션 큐가 블록 생성 조건을 충족하는 경우, 제1 노드는 블록 생성 프로세스를 실행하고, 트랜잭션 큐가 블록 생성 조건을 충족하지 않는 경우, 제1 노드는 블록 생성 프로세스를 실행하지 않고, 블록 생성 조건이 충족되는지를 계속 결정한다. 블록 생성 절차는 블록 생성 조건이 충족될 때 실행된다.
본 개시내용의 일부 실시예들에서, 제1 노드가 트랜잭션 큐가 미리 설정된 블록 생성 조건을 충족하는지를 체크하는 단계 303은: 제1 노드에 의해, 트랜잭션 큐에 저장된 트랜잭션 정보의 수량(quantity)이 제1 임계값을 초과하는지를 체크하고, 트랜잭션 정보의 수량이 제1 임계값을 초과하는 경우, 트랜잭션 큐가 블록 생성 조건을 충족한다고 결정하고, 트랜잭션 정보의 수량이 제1 임계값을 초과하지 않는 경우, 트랜잭션 큐가 블록 생성 조건을 충족하지 않는다고 결정하는 단계를 포함한다.
제1 노드는 트랜잭션 큐에 저장된 트랜잭션 정보의 수량을 카운트한다. 트랜잭션 정보의 수량은 트랜잭션 큐의 크기를 지시한다. 제1 노드는 트랜잭션 정보의 수량이 미리 설정된 제1 임계값을 충족하는지를 체크한다. 제1 임계값은 블록 생성 임계값이다. 예를 들어, 제1 임계값은 1000일 수 있다. 제1 노드는 트랜잭션 큐에 포함된 트랜잭션 정보의 수량이 1000에 도달하는 경우에 트랜잭션 큐가 블록 생성 조건을 충족한다고 결정하고, 트랜잭션 큐에 포함된 트랜잭션 정보의 수량이 1000에 도달하지 않는 경우에 트랜잭션 큐가 블록 생성 조건을 충족하지 않는다고 결정한다.
본 개시내용의 일부 실시예들에서, 제1 노드가 트랜잭션 큐가 미리 설정된 블록 생성 조건을 충족하는지를 체크하는 단계 303은: 제1 노드에 의해, 트랜잭션 큐에 저장된 데이터의 볼륨(volume of data)이 제2 임계값을 초과하는지를 체크하고, 데이터의 볼륨이 제2 임계값을 초과하는 경우, 트랜잭션 큐가 블록 생성 조건을 충족한다고 결정하고, 데이터의 볼륨이 제2 임계값을 초과하지 않는 경우, 트랜잭션 큐가 블록 생성 조건을 충족하지 않는다고 결정하는 단계를 포함한다.
제1 노드는 트랜잭션 큐에 저장된 데이터의 볼륨을 카운트한다. 데이터의 볼륨은 트랜잭션 큐에 의해 점유되는 저장 공간 용량을 지시한다. 제1 노드는 데이터의 볼륨이 미리 설정된 제2 임계값을 충족하는지를 체크한다. 제2 임계값은 블록 생성 임계값이다. 예를 들어, 제2 임계값은 1M일 수 있다. 제1 노드는 트랜잭션 큐에 저장된 데이터의 볼륨이 1M에 도달하는 경우에 트랜잭션 큐가 블록 생성 조건을 충족한다고 결정하고, 트랜잭션 큐에 저장된 데이터의 볼륨이 1M에 도달하지 않는 경우에 트랜잭션 큐가 블록 생성 조건을 충족하지 않는다고 결정한다.
본 개시내용의 일부 실시예들에서, 제1 노드가 트랜잭션 큐가 미리 설정된 블록 생성 조건을 충족하는지를 체크하는 단계 303은: 제1 노드에 의해, 트랜잭션 큐에 대한 블록을 생성하는 이전 시간과 현재 시간 사이의 시간 차이가 블록 생성 시간 임계값을 초과하는지를 체크하고, 시간 차이가 블록 생성 시간 임계값을 초과하는 경우, 트랜잭션 큐가 블록 생성 조건을 충족한다고 결정하고, 시간 차이가 블록 생성 시간 임계값을 초과하지 않는 경우, 트랜잭션 큐가 블록 생성 조건을 충족하지 않는다고 결정하는 단계를 포함한다.
제1 노드는 트랜잭션 큐의 블록 생성 횟수(a quantity of times of block generation)를 카운트하고, 트랜잭션 큐의 블록이 생성될 때마다 블록 생성 시간을 기록하고, 이전 블록 생성 시간과 현재 시간 사이의 시간 차이를 실시간으로 계산하고, 시간 차이가 블록 생성 시간 임계값을 초과하는지를 체크하고, 시간 차이가 블록 생성 시간 임계값을 초과하는 경우 트랜잭션 큐가 블록 생성 조건을 충족한다고 결정하고, 시간 차이가 블록 생성 시간 임계값을 초과하지 않는 경우 트랜잭션 큐가 블록 생성 조건을 충족하지 않는다고 결정할 수 있다. 예를 들어, 블록 생성 시간 임계값은 5초일 수 있다.
304. 트랜잭션 큐가 블록 생성 조건을 충족하는 경우, 제1 노드는 제1 노드의 트랜잭션 큐에 있는 제1 트랜잭션 정보를 후보 블록으로 패키징하고, 블록체인을 통해 후보 블록을 브로드캐스트한다.
본 개시내용의 이 실시예에서, 제1 노드는 트랜잭션 큐가 블록 생성 조건을 충족하는 것을 검출하는 것에 응답하여 제1 노드의 트랜잭션 큐에 있는 제1 트랜잭션 정보를 후보 블록으로 패키징하고, 후보 블록을 브로드캐스트하므로, 블록체인 내의 모든 노드가 후보 블록을 수신할 수 있다.
305. 제1 노드는 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제1 검증 결과를 생성하고, 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제1 트랜잭션 실행 결과를 생성한다.
306. 제1 노드는 블록체인을 통해 제1 노드 처리 결과를 브로드캐스트하고, 제1 노드 처리 결과는 제1 검증 결과 및 제1 트랜잭션 실행 결과를 포함한다.
307. 제1 노드는 블록체인을 통해 제2 노드에 의해 브로드캐스트된 제2 노드 처리 결과를 수신하고, 제2 노드 처리 결과는 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제2 노드에 의해 생성된 제2 검증 결과, 및 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제2 노드에 의해 생성된 제2 트랜잭션 실행 결과를 포함한다.
308. 제1 노드는 제1 노드 처리 결과 및 제2 노드 처리 결과에 따라 후보 블록에 대한 합의를 수행하고, 그 후 제1 노드는 후보 블록에 대한 합의에 성공적으로 도달한 경우에 후보 블록을 세이브하고, 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제1 트랜잭션 실행 결과를 세이브한다.
본 개시내용의 이 실시예에서, 단계 304 내지 단계 308의 절차는 단계 202 내지 단계 205의 절차와 유사하고, 상세사항들은 여기서 다시 설명되지 않는다.
본 개시내용의 일부 실시예들에서, 제1 노드가 단계 304 내지 단계 308 중 어느 하나를 수행할 때, 본 개시내용의 이 실시예들에서 제공되는 블록 생성 처리 방법은 다음의 단계들을 추가로 포함할 수 있다:
제1 노드에 의해, 제1 트랜잭션 정보를 후보 블록으로 패키징하는 동안 트랜잭션 큐에 있는 제2 트랜잭션 정보를 후보 블록으로 패키징하고, 블록체인을 통해 후보 블록을 브로드캐스트하는 단계;
제1 노드에 의해, 후보 블록 내의 제2 트랜잭션 정보에 대한 검증을 수행하여 제3 검증 결과를 생성하고, 후보 블록 내의 제2 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제3 트랜잭션 실행 결과를 생성하는 단계;
제1 노드에 의해, 블록체인을 통해 제3 노드 처리 결과를 브로드캐스트하는 단계 - 제3 노드 처리 결과는 제3 검증 결과 및 제3 트랜잭션 실행 결과를 포함함 - ;
제1 노드에 의해, 블록체인을 통해 제2 노드에 의해 브로드캐스트된 제4 노드 처리 결과를 수신하는 단계 - 제4 노드 처리 결과는 후보 블록 내의 제2 트랜잭션 정보에 대한 검증을 수행하여 제2 노드에 의해 생성된 제4 검증 결과, 및 후보 블록 내의 제2 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제2 노드에 의해 생성된 제4 트랜잭션 실행 결과를 포함함 - ; 및
제1 노드에 의해, 제3 노드 처리 결과 및 제4 노드 처리 결과에 따라 후보 블록에 대한 합의를 수행하고, 그 후 제1 노드에 의해, 후보 블록에 대한 합의에 성공적으로 도달한 경우에 후보 블록을 세이브하고, 제2 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제3 트랜잭션 실행 결과를 세이브하는 단계.
제1 노드의 트랜잭션 큐는 제1 트랜잭션 정보 및 제2 트랜잭션 정보를 저장한다. 제1 트랜잭션 정보에 대한 패키징, 검증, 실행, 합의, 및 세이브의 임의의 절차를 수행할 때, 제1 노드는 동시에 제2 트랜잭션 정보에 대한 패키징, 검증, 실행, 합의 또는 세이브의 절차를 추가로 수행할 수 있다. 따라서, 본 개시내용의 이 실시예에서의 블록 생성 절차 동안, 서로 독립적인 블록들에 대한 검증을 동시에 수행하기 위해 블록 동시성 검증 알고리즘이(block concurrency verification algorithm) 사용되고, 그에 의해 블록 생성의 효율을 추가로 향상시킨다.
본 개시내용의 실시예들의 설명들로부터, 제1 노드가 리더 노드의 역할을 한다는 것을 알 수 있다. 제1 노드는 트랜잭션 큐를 사용하여 처리될 트랜잭션 정보를 캐싱하고, 트랜잭션 큐에 있는 트랜잭션 정보를 후보 블록으로 패키징하므로, 후보 블록이 브로드캐스트될 수 있고, 블록체인 내의 팔로워 노드가 트랜잭션 검증 및 트랜잭션 실행을 수행할 수 있다. 후보 블록을 브로드캐스트한 후, 제1 노드는 트랜잭션 검증 및 트랜잭션 실행을 수행할 수 있다. 그 후, 제1 노드는 제1 노드 처리 결과를 브로드캐스트할 수 있다. 제1 노드는 블록체인 내의 각각의 노드의 처리 결과에 따라 후보 블록에 대한 합의를 수행하고, 합의에 성공적으로 도달하면 블록을 세이브한다. 본 개시내용의 실시예들에서, 블록 생성 단계들의 순서가 변경되어, 블록체인 내의 모든 노드가 트랜잭션 검증 및 트랜잭션 실행을 수행할 수 있고, 따라서 블록 생성 속도 및 트랜잭션 처리 성능이 향상될 수 있다.
본 개시내용의 실시예들에서 제공되는 블록 처리 방법은 제2 노드의 관점에서 설명된다. 도 6을 참조하면, 본 개시내용의 이 실시예에서 제공되는 블록 처리 방법은 주로 다음의 단계들을 포함한다.
401. 제1 노드가 리더 노드이고, 제2 노드가 팔로워 노드인 경우, 제2 노드는 블록체인을 통해 제1 노드에 의해 브로드캐스트된 후보 블록을 수신하고, 후보 블록으로부터 제1 트랜잭션 정보를 획득한다.
402. 제2 노드는 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제2 검증 결과를 생성하고, 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제2 트랜잭션 실행 결과를 생성한다.
403. 제2 노드는 블록체인을 통해 제2 노드 처리 결과를 브로드캐스트하고, 이 제2 노드 처리 결과는 제2 검증 결과 및 제2 트랜잭션 실행 결과를 포함한다.
본 개시내용의 이 실시예에서, 단계 401 내지 단계 403의 절차는 도 4의 실시예에서의 단계 211 내지 단계 213의 절차와 유사하고, 상세사항들은 여기서 다시 설명되지 않는다.
404. 제2 노드는 블록체인을 통해 제1 노드에 의해 브로드캐스트된 제1 노드 처리 결과를 수신하고, 이 제1 노드 처리 결과는 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제1 노드에 의해 생성된 제1 검증 결과, 및 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제1 노드에 의해 생성된 제1 트랜잭션 실행 결과를 포함한다.
본 개시내용의 일부 실시예들에서, 블록체인 내의 리더 노드(즉, 제1 노드)에 더하여, 블록체인 내의 팔로워 노드는 또한 합의를 수행할 수 있다. 예를 들어, 제2 노드는, 단계 404를 통해, 제1 노드에 의해 브로드캐스트된 제1 노드 처리 결과를 수신하고, 제2 노드는 제1 노드 처리 결과 및 제2 노드 처리 결과에 따라 후보 블록에 대한 합의를 수행할 수 있다. 예를 들어, 제2 노드는 분산형 합의 알고리즘을 사용하여 합의를 수행할 수 있다. 분산형 합의 알고리즘은 Raft 알고리즘일 수 있다. 또한, 본 개시내용의 이 실시예에서의 분산형 합의 알고리즘은 대안적으로 BFT-Raft 알고리즘일 수 있다.
405. 제2 노드는 제1 노드 처리 결과 및 제2 노드 처리 결과에 따라 후보 블록에 대한 합의를 수행하고, 후보 블록에 대한 합의에 성공적으로 도달한 경우, 다음의 단계: 제2 노드에 의해, 제1 트랜잭션 정보가 성공적으로 검증된 경우에 후보 블록을 세이브하고, 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제2 트랜잭션 실행 결과를 세이브하는 단계를 수행하도록 트리거한다.
본 개시내용의 이 실시예에서, 제2 노드는 후보 블록에 대한 합의를 수행할 수 있다. 후보 블록에 대한 합의에 성공적으로 도달한 경우, 제2 노드는 제1 트랜잭션 정보가 성공적으로 검증된 경우에 후보 블록을 세이브하고, 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제2 트랜잭션 실행 결과를 세이브한다. 블록체인에서, 제1 노드가 악의적일 수 있는 경우, 제2 노드는 제2 노드 처리 결과를 브로드캐스트하므로, 블록체인 내의 모든 노드가 다른 노드들의 처리 결과들을 수신한다. 각각의 노드는, 제1 노드로부터의 통지에 의존하는 대신에, 다른 노드들로부터의 수신된 처리 결과들에 따라 데이터를 저장할지를 결정하고, 그에 의해 제1 트랜잭션 정보에 의해 지시된 트랜잭션의 정확한 실행을 보장한다.
본 개시내용의 일부 실시예들에서, 제2 노드가 단계 403에서 블록체인을 통해 제2 노드 처리 결과를 브로드캐스트한 후에, 단계 404 내지 단계 405 대신에 다음의 단계들이 수행될 수 있다:
제2 노드에 의해, 제1 노드 상에서 후보 블록에 대한 합의에 성공적으로 도달한 경우에 제1 노드에 의해 송신된 통지 메시지를 수신하는 단계; 및
제2 노드에 의해, 통지 메시지에 따라, 다음의 단계: 제2 노드에 의해, 제1 트랜잭션 정보가 성공적으로 검증된 경우에 후보 블록을 세이브하고, 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제2 트랜잭션 실행 결과를 세이브하는 단계를 수행하도록 트리거하는 단계.
제1 노드는 후보 블록에 대한 합의를 수행할 수 있다. 후보 블록에 대한 합의에 성공적으로 도달한 경우, 제1 노드는 통지 메시지를 브로드캐스트하고, 블록체인 내의 제2 노드는 통지 메시지를 수신하고, 통지 메시지에 따라, 합의에 성공적으로 도달한 것을 결정할 수 있다. 다음으로, 제2 노드는 제1 트랜잭션 정보가 성공적으로 검증된 경우에 후보 블록을 세이브하고, 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제2 트랜잭션 실행 결과를 세이브한다.
본 개시내용의 일부 실시예들에서, 제1 노드가 단계 304 내지 단계 308 중 어느 하나를 수행할 때, 본 개시내용의 이 실시예들에서 제공되는 블록 생성 처리 방법은 다음의 단계들을 추가로 포함할 수 있다:
제2 노드에 의해, 블록체인을 통해 제1 노드에 의해 브로드캐스트된 후보 블록을 수신하고, 후보 블록으로부터 제2 트랜잭션 정보를 획득하는 단계;
제2 노드에 의해, 후보 블록 내의 제2 트랜잭션 정보에 대한 검증을 수행하여 제4 검증 결과를 생성하고, 후보 블록 내의 제2 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제4 트랜잭션 실행 결과를 생성하는 단계;
제2 노드에 의해, 블록체인을 통해 제4 노드 처리 결과를 브로드캐스트하는 단계 - 제4 노드 처리 결과는 제4 검증 결과 및 제4 트랜잭션 실행 결과를 포함함 - ; 및
제2 노드에 의해, 제2 트랜잭션 정보가 성공적으로 검증된 경우에 후보 블록을 세이브하고, 제2 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제4 트랜잭션 실행 결과를 세이브하는 단계.
제1 노드의 트랜잭션 큐는 제1 트랜잭션 정보 및 제2 트랜잭션 정보를 저장한다. 제1 트랜잭션 정보에 대한 패키징, 검증, 실행, 합의, 및 세이브의 임의의 절차를 수행할 때, 제1 노드는 동시에 제2 트랜잭션 정보에 대한 패키징, 검증, 실행, 합의, 또는 세이브와 같은 절차를 추가로 수행할 수 있다. 제2 노드가 제1 노드의 브로드캐스트를 수신하는 경우, 제2 노드는 또한 제2 트랜잭션 정보에 의해 지시된 트랜잭션을 검증 및 실행할 수 있다. 따라서, 본 개시내용의 이 실시예에서의 블록 생성 절차 동안, 서로 의존하지 않는 블록들에 대한 검증을 동시에 수행하기 위해 블록 동시성 검증 알고리즘이 사용되고, 그에 의해 블록 생성의 효율을 추가로 향상시킨다.
본 개시내용의 실시예들의 설명들로부터, 본 개시내용의 실시예들에서, 제1 노드가 리더 노드의 역할을 한다는 것을 알 수 있다. 제1 노드는 트랜잭션 큐를 사용하여 처리될 트랜잭션 정보를 캐싱하고, 트랜잭션 큐에 있는 트랜잭션 정보를 후보 블록으로 패키징하므로, 후보 블록이 브로드캐스트될 수 있고, 제2 노드가 트랜잭션 검증 및 트랜잭션 실행을 수행할 수 있다. 그 후, 제2 노드는 제2 노드 처리 결과를 브로드캐스트할 수 있으므로, 제1 노드는 블록체인 내의 각각의 노드의 처리 결과에 따라 후보 블록에 대한 합의를 수행하고, 합의에 성공적으로 도달하면 블록을 세이브한다. 본 개시내용의 실시예들에서, 블록 생성 단계들의 순서가 변경되어, 블록체인 내의 모든 노드가 트랜잭션 검증 및 트랜잭션 실행을 수행할 수 있고, 따라서 블록 생성 속도 및 트랜잭션 처리 성능이 향상될 수 있다.
본 개시내용의 이 실시예의 전술한 해결책들의 더 나은 이해 및 구현을 위해, 이하에서는 특정 응용 시나리오를 예로서 사용하여 상세한 설명을 행한다.
본 개시내용의 이 실시예는 새로운 블록 생성 해결책을 제공한다. 제1 노드가 리더 노드이고 제2 노드가 팔로워 노드인 예가 사용된다. 본 개시내용의 이 실시예에서, 검증되지 않은 일련의 트랜잭션들이 후보 블록으로 패키징되고, BFT-Raft 알고리즘을 사용하여 리더 노드에 의해 팔로워 노드로 브로드캐스트될 수 있다. 합의 노드들의 역할을 하는 리더 노드와 팔로워 노드는 후보 블록에 대한 검증 프로세스에서 트랜잭션들을 검증 및 실행하고, 검증 또는 실행 결과를 갖는 트랜잭션을 성공 또는 실패로서 마킹할 수 있다. 마지막으로, 모든 합의 노드들이 후보 블록의 검증 결과들에 대한 합의를 수행한다. 합의에 성공적으로 도달한 후, 모든 노드들은 후보 블록을 세이브하고, 성공으로 마킹된 트랜잭션을 후보 블록에 세이브하며, 실패한 트랜잭션을 제거한다.
도 7은 본 개시내용의 실시예에 따른 블록 생성 절차의 응용 시나리오의 개략도이다. 다음의 절차가 주로 포함된다.
S101. Raft 알고리즘에 기초하여 블록체인 네트워크로부터 리더 노드 및 팔로워 노드가 선택된다.
노드 역할 선택이 먼저 수행된다. 블록체인 네트워크의 모든 노드들에 대해 Raft 알고리즘을 실행하여 리더 노드 및 팔로워 노드를 선택하고, 블록체인에 하나의 리더 노드만 있다.
S102. 사용자는 트랜잭션을 블록체인에 송신하고, 리더 노드는 트랜잭션을 수신하여 트랜잭션을 트랜잭션 큐에 직접 넣는다.
사용자는 단말기를 사용하여 블록체인 네트워크에 트랜잭션을 송신할 수 있다. 리더 노드에 송신되는 트랜잭션의 경우, 리더 노드는 트랜잭션을 트랜잭션 큐에 직접 넣는다. 대안적으로, 팔로워 노드에 송신되는 트랜잭션의 경우, 팔로워 노드는 트랜잭션을 리더 노드에 포워딩하고, 이어서 리더 노드는 팔로워 노드로부터 수신되는 트랜잭션을 트랜잭션 큐에 넣는다.
S103. 리더 노드는 트랜잭션 큐에 있는 트랜잭션들이 블록 생성 요건을 충족하는지를 체크한다.
S104. 블록 생성 요건이 충족되는 경우, 리더 노드는 트랜잭션 큐에 있는 트랜잭션들을 후보 블록으로 패키징하고, 후보 블록에 서명을 추가하고, 후보 블록을 팔로워 노드에 브로드캐스트한다.
리더 노드는 트랜잭션 큐가 블록 생성 요건을 충족하는지를 체크한다. 예를 들어, 리더 노드는 트랜잭션 큐에 저장된 트랜잭션들의 수량 또는 트랜잭션들의 데이터의 볼륨이 블록 생성 요건을 충족하는지를 검출한다. 블록 생성 요건이 충족되면, 트랜잭션 큐에 있는 트랜잭션들은 후보 블록으로 패키징되고, 서명이 후보 블록에 추가되고, 후보 블록이 브로드캐스트된다. 블록 생성 요건이 충족되지 않으면, 리더 노드는 블록 생성 시간에 도달하는지를 체크한다. 블록 생성 시간에 도달하는 경우, 리더 노드는 트랜잭션 큐에 있는 트랜잭션들을 후보 블록으로 패키징하고, 후보 블록에 서명을 추가하고, 후보 블록을 브로드캐스트한다.
S105. 블록체인 네트워크 내의 합의 노드는, 후보 블록의 트랜잭션 리스트에 대한 검증을 수행하는 것을 포함하여, 후보 블록에 대한 검증을 수행한다.
S106. 합의 노드는 후보 블록 검증 결과에 서명을 추가하고 후보 블록 검증 결과를 브로드캐스트한다.
합의 노드들의 역할을 하는 리더 노드와 팔로워 노드는 후보 블록에 대한 검증을 수행한다. 검증 절차 동안, 리더 노드와 팔로워 노드는 후보 블록 내의 트랜잭션 리스트에 대해 유효성 검증을 수행하고, 트랜잭션을 유효 트랜잭션 또는 무효 트랜잭션으로서 마킹하고, 트랜잭션을 실행하고, 트랜잭션 실행 결과를 생성하고, 유효 트랜잭션 실행 결과를 캐싱한다.
S107. 블록체인 네트워크 내의 합의 노드는 결과들에 대한 BFT 결정을 수행하고, 합의에 도달한 후에 후보 블록 및 유효 트랜잭션을 세이브한다.
리더 노드와 팔로워 노드는 각각 전술한 단계 S106에서 각자의 검증 결과들 및 실행 결과들에 서명을 추가하고, 서명된 결과들을 브로드캐스트한다. 그 후 BFT 알고리즘을 사용하여 수신된 노드-서명된 결과에 대한 합의가 수행된다. 노드-서명된 결과는: 검증 결과 및 트랜잭션 실행 결과를 포함한다.
리더 노드와 팔로워 노드에 의해 노드-서명된 결과에 대한 합의에 성공적으로 도달한 후에, 노드들은 후보 블록의 헤더 정보를 세이브하고, 유효 트랜잭션을 후보 블록에 세이브하고, 후보 블록에 캐싱된 트랜잭션 실행 결과를 세이브한다. 유효 트랜잭션을 후보 블록에 세이브하는 것은 사용자에 의해 송신된 원래의 트랜잭션 데이터를 세이브하는 것을 지칭하고(즉, 트랜잭션 실행 결과는 여기에 포함되지 않음), 트랜잭션 실행 결과들을 세이브하는 것은 트랜잭션 실행 결과의 상태를 세이브하는 것을 지칭한다.
후보 블록의 헤더 정보는, 블록의 데이터 포맷과 관련하여, 이전 블록의 해시 값, 머클 트리의 루트, 상태의 루트, 수신 루트, 노드의 서명, 및 논스(nonce)를 포함한다.
도 8은 본 개시내용의 실시예에 따른 Raft 데이터 제출 절차의 개략도이다. 도 8에서, L은 리더 노드를 나타내고, F는 팔로워 노드를 나타낸다. 다음의 절차가 주로 포함된다.
단계 1. 클라이언트는 데이터 v=3을 리더 노드에 제출한다.
단계 2.1. 리더 노드는 데이터 v=3을 복사하고 데이터 v=3을 팔로워 노드들에 송신한다.
단계 3.1. 팔로워 노드는 데이터 v=3이 수신된 것을 리더 노드에 확인한다.
단계 3.2. 팔로워 노드는 데이터 v=3이 수신된 것을 리더 노드에 확인한다.
단계 4.1. 리더 노드는 데이터 v=3이 수신된 것을 클라이언트에 확인한다.
단계 4.2. 리더 노드는 데이터 v=3을 팔로워 노드들에 제출한다.
전술한 절차에서, Raft 알고리즘의 장애 허용 기술은 리더 노드에 기초한다. 리더 노드의 데이터를 수신한 후에, 팔로워 노드들은 데이터를 캐싱하고, 결과들을 리더 노드에 반환한다. 리더 노드는 장애 허용 결정을 위해 팔로워 노드들로부터 결과들을 수신한다. 동일한 결과가 수신되는 노드들의 비율이 50%보다 큰 경우에, 데이터는 성공적인 것으로 간주되고, 그 후 리더 노드는 팔로워 노드들에 데이터의 상태를 세이브하도록 지시한다.
도 9는 본 개시내용의 실시예에 따른 BFT-Raft 데이터 제출 절차의 개략도이다. 다음의 절차가 주로 포함된다.
클라이언트 1은 트랜잭션 1을 생성하고, 트랜잭션 1을 리더 노드에 송신한다. 클라이언트 2는 트랜잭션 2를 생성하고, 트랜잭션 2를 팔로워 노드 1에 송신한다. 팔로워 노드 1은 트랜잭션 2를 리더 노드에 추가로 송신한다. 리더 노드가 블록을 생성한 후, 블록은 3개의 팔로워 노드에 브로드캐스트된다. 3개의 팔로워 노드는 브로드캐스트 응답을 블록체인에 송신한다. 리더 노드와 3개의 팔로워 노드는 블록을 제출하고 합의를 수행한다. 합의에 성공적으로 도달한 후, 리더 노드와 3개의 팔로워 노드는 제출 성공 메시지들을 클라이언트 1 및 클라이언트 2에 송신한다.
블록체인에서, 도 8의 실시예에 도시된 장애 허용 기술은 리더 노드가 악의적인 상황을 다룰 수 없고, 따라서 BFT 기술이 본 개시내용에서 추가된다. 전술한 팔로워 노드들은 결과를 브로드캐스트하므로, 블록체인 네트워크 내의 모든 노드들은 다른 노드들의 서명된 결과들을 수신한다. 각각의 노드는, 리더 노드로부터의 통지에 의존하는 대신에, 수신된 노드-서명된 결과들에 따라, 데이터가 제출되고 세이브될 수 있는지를 결정한다.
본 개시내용의 이 실시예에서는, 단계 S101 내지 단계 S107에서, 블록 동시성 검증 기술이 추가로 사용될 수 있다. 즉, 블록 내에 복수의 트랜잭션이 있고, 블록 생성 절차에서, 서로 의존하지 않는 블록들에 대한 검증을 동시에 수행하기 위해 블록 동시성 검증 알고리즘이 사용된다.
본 개시내용의 이 실시예에서 제공되는 전술한 해결책들은 얼라이언스 체인 또는 프라이빗 체인에서의 블록 생성 속도 및 트랜잭션 처리 성능을 향상시킬 수 있다.
전술한 방법 실시예들은 간단한 설명의 목적을 위해 일련의 액션 조합들로서 표현되지만, 본 기술분야의 통상의 기술자는 일부 단계들이 본 개시내용의 실시예들에 따라 다른 시퀀스들로 또는 동시에 수행될 수 있기 때문에, 본 개시내용의 실시예들이 설명된 액션 시퀀스로 제한되지 않는다는 것을 알아야 한다. 또한, 본 기술분야의 통상의 기술자는 본 명세서에 설명된 실시예들이 모두 바람직한 실시예들이고; 따라서, 수반되는 액션 및 모듈이 본 개시내용의 실시예들에서 반드시 필요하지는 않을 수 있다는 것을 또한 알아야 한다.
본 개시내용의 실시예들의 전술한 해결책들의 더 나은 구현의 편의를 위해, 이하에서는 전술한 해결책들을 구현하도록 구성되는 관련 장치들을 추가로 제공한다.
도 10을 참조하면, 본 개시내용의 이 실시예는 블록체인 내의 제1 노드(800)를 제공한다. 블록체인은 제2 노드를 추가로 포함한다. 제1 노드는 리더 노드이고, 제2 노드는 팔로워 노드이다. 제1 노드(800)는 처리 모듈(801) 및 송수신기 모듈(802)을 포함한다.
처리 모듈은 제1 노드의 트랜잭션 큐에 있는 제1 트랜잭션 정보를 후보 블록으로 패키징하도록 구성된다.
송수신기 모듈은 블록체인을 통해 후보 블록을 브로드캐스트하도록 구성된다.
처리 모듈은 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제1 검증 결과를 생성하고, 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제1 트랜잭션 실행 결과를 생성하도록 추가로 구성된다.
송수신기 모듈은 블록체인을 통해 제1 노드 처리 결과를 브로드캐스트하도록 추가로 구성되고, 제1 노드 처리 결과는 제1 검증 결과 및 제1 트랜잭션 실행 결과를 포함한다.
송수신기 모듈은 블록체인을 통해 제2 노드에 의해 브로드캐스트된 제2 노드 처리 결과를 수신하도록 추가로 구성되고, 제2 노드 처리 결과는 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제2 노드에 의해 생성된 제2 검증 결과, 및 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제2 노드에 의해 생성된 제2 트랜잭션 실행 결과를 포함한다.
처리 모듈은 제1 노드 처리 결과 및 제2 노드 처리 결과에 따라 후보 블록에 대한 합의를 수행하고, 그 후 제1 노드에 의해, 후보 블록에 대한 합의에 성공적으로 도달한 경우에 후보 블록을 세이브하고, 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제1 트랜잭션 실행 결과를 세이브하도록 추가로 구성된다.
본 개시내용의 일부 실시예들에서, 송수신기 모듈이 제1 노드의 트랜잭션 큐에 있는 제1 트랜잭션 정보를 후보 블록으로 패키징하기 전에, 처리 모듈은 트랜잭션 큐가 미리 설정된 블록 생성 조건을 충족하는지를 체크하고; 트랜잭션 큐가 블록 생성 조건을 충족하는 경우, 제1 노드의 트랜잭션 큐에 있는 제1 트랜잭션 정보를 후보 블록으로 패키징하는 단계를 수행하도록 트리거하도록 추가로 구성된다.
본 개시내용의 일부 실시예들에서, 처리 모듈은 트랜잭션 큐에 저장된 트랜잭션 정보의 수량이 제1 임계값을 초과하는지를 체크하고, 트랜잭션 정보의 수량이 제1 임계값을 초과하는 경우, 트랜잭션 큐가 블록 생성 조건을 충족한다고 결정하고, 트랜잭션 정보의 수량이 제1 임계값을 초과하지 않는 경우, 트랜잭션 큐가 블록 생성 조건을 충족하지 않는다고 결정하도록 추가로 구성된다.
본 개시내용의 일부 실시예들에서, 처리 모듈은 트랜잭션 큐에 저장된 데이터의 볼륨이 제2 임계값을 초과하는지를 체크하고, 데이터의 볼륨이 제2 임계값을 초과하는 경우, 트랜잭션 큐가 블록 생성 조건을 충족한다고 결정하고, 데이터의 볼륨이 제2 임계값을 초과하지 않는 경우, 트랜잭션 큐가 블록 생성 조건을 충족하지 않는다고 결정하도록 추가로 구성된다.
본 개시내용의 일부 실시예들에서, 처리 모듈은 트랜잭션 큐에 대한 블록을 생성하는 이전 시간과 현재 시간 사이의 시간 차이가 블록 생성 시간 임계값을 초과하는지를 체크하고, 시간 차이가 블록 생성 시간 임계값을 초과하는 경우, 트랜잭션 큐가 블록 생성 조건을 충족한다고 결정하고, 시간 차이가 블록 생성 시간 임계값을 초과하지 않는 경우, 트랜잭션 큐가 블록 생성 조건을 충족하지 않는다고 결정하도록 추가로 구성된다.
본 개시내용의 일부 실시예들에서, 송수신기 모듈은 적어도 하나의 클라이언트에 의해 블록체인에 송신되는 트랜잭션 정보를 수신하도록 추가로 구성된다. 대안적으로, 제1 노드는 적어도 하나의 클라이언트로부터 제2 노드에 의해 획득된 트랜잭션 정보를 수신한다.
처리 모듈은 적어도 하나의 클라이언트의 트랜잭션 정보를 트랜잭션 큐에 넣도록 추가로 구성된다.
본 개시내용의 일부 실시예들에서, 처리 모듈은 제1 트랜잭션 정보를 후보 블록으로 패키징하는 동안 트랜잭션 큐에 있는 제2 트랜잭션 정보를 후보 블록으로 패키징하도록 추가로 구성된다.
송수신기 모듈은 블록체인을 통해 후보 블록을 브로드캐스트하도록 추가로 구성된다.
처리 모듈은 후보 블록 내의 제2 트랜잭션 정보에 대한 검증을 수행하여 제3 검증 결과를 생성하고, 후보 블록 내의 제2 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제3 트랜잭션 실행 결과를 생성하도록 추가로 구성된다.
송수신기 모듈은 블록체인을 통해 제3 노드 처리 결과를 브로드캐스트하도록 추가로 구성되고, 제3 노드 처리 결과는 제3 검증 결과 및 제3 트랜잭션 실행 결과를 포함한다.
송수신기 모듈은 블록체인을 통해 제2 노드에 의해 브로드캐스트된 제4 노드 처리 결과를 수신하도록 추가로 구성되고, 제4 노드 처리 결과는 후보 블록 내의 제2 트랜잭션 정보에 대한 검증을 수행하여 제2 노드에 의해 생성된 제4 검증 결과, 및 후보 블록 내의 제2 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제2 노드에 의해 생성된 제4 트랜잭션 실행 결과를 포함한다.
처리 모듈은 제3 노드 처리 결과 및 제4 노드 처리 결과에 따라 후보 블록에 대한 합의를 수행하고, 그 후 제1 노드에 의해, 후보 블록에 대한 합의에 성공적으로 도달한 경우에 후보 블록을 세이브하고, 제2 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제3 트랜잭션 실행 결과를 세이브하도록 추가로 구성된다.
본 개시내용의 일부 실시예들에서, 처리 모듈은, 후보 블록에 대한 합의에 성공적으로 도달한 경우, 후보 블록의 헤더 정보 및 성공적으로 검증된 제1 트랜잭션 정보를 세이브하도록 추가로 구성된다.
본 개시내용의 실시예들의 설명들로부터, 제1 노드가 리더 노드이고, 제2 노드가 팔로워 노드인 경우, 제1 노드는 제1 노드의 트랜잭션 큐에 있는 제1 트랜잭션 정보를 후보 블록으로 패키징하고, 블록체인을 통해 후보 블록을 브로드캐스트한다는 것을 알 수 있다. 그 후 제1 노드는 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제1 검증 결과를 생성하고, 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제1 트랜잭션 실행 결과를 생성한다. 제1 노드는 블록체인을 통해 제1 노드 처리 결과를 브로드캐스트하고, 제1 노드 처리 결과는 제1 검증 결과 및 제1 트랜잭션 실행 결과를 포함한다. 제1 노드는 블록체인을 통해 제2 노드에 의해 브로드캐스트된 제2 노드 처리 결과를 수신한다. 제1 노드는 제1 노드 처리 결과 및 제2 노드 처리 결과에 따라 후보 블록에 대한 합의를 수행하고, 그 후 제1 노드는 후보 블록에 대한 합의에 성공적으로 도달한 경우에 후보 블록을 세이브하고, 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제1 트랜잭션 실행 결과를 세이브한다. 본 개시내용의 실시예들에서, 제1 노드는 리더 노드의 역할을 한다. 제1 노드는 트랜잭션 큐를 사용하여 처리될 트랜잭션 정보를 캐싱하고, 트랜잭션 큐에 있는 트랜잭션 정보를 후보 블록으로 패키징하므로, 후보 블록이 브로드캐스트될 수 있고, 블록체인 내의 팔로워 노드가 트랜잭션 검증 및 트랜잭션 실행을 수행할 수 있다. 후보 블록을 브로드캐스트한 후, 제1 노드는 트랜잭션 검증 및 트랜잭션 실행을 수행할 수 있다. 그 후, 제1 노드는 제1 노드 처리 결과를 브로드캐스트할 수 있다. 제1 노드는 블록체인 내의 각각의 노드의 처리 결과에 따라 후보 블록에 대한 합의를 수행하고, 합의에 성공적으로 도달하면 블록을 세이브한다. 본 개시내용의 실시예들에서, 블록 생성 단계들의 순서가 변경되어, 블록체인 내의 모든 노드가 트랜잭션 검증 및 트랜잭션 실행을 수행할 수 있고, 따라서 블록 생성 속도 및 트랜잭션 처리 성능이 향상될 수 있다.
도 11을 참조하면, 본 개시내용의 이 실시예는 블록체인 내의 제2 노드(900)를 제공한다. 블록체인은 제1 노드를 추가로 포함한다. 제1 노드는 리더 노드이고, 제2 노드는 팔로워 노드이다. 제2 노드(900)는 처리 모듈(901) 및 송수신기 모듈(902)을 포함한다.
송수신기 모듈은 블록체인을 통해 제1 노드에 의해 브로드캐스트된 후보 블록을 수신하도록 구성된다.
처리 모듈은 후보 블록으로부터 제1 트랜잭션 정보를 획득하도록 구성된다.
처리 모듈은 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제2 검증 결과를 생성하고, 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제2 트랜잭션 실행 결과를 생성하도록 추가로 구성된다.
송수신기 모듈은 블록체인을 통해 제2 노드 처리 결과를 브로드캐스트하도록 추가로 구성되고, 제2 노드 처리 결과는 제2 검증 결과 및 제2 트랜잭션 실행 결과를 포함한다.
처리 모듈은 제1 트랜잭션 정보가 성공적으로 검증된 경우에 후보 블록을 세이브하고, 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제2 트랜잭션 실행 결과를 세이브하도록 추가로 구성된다.
본 개시내용의 일부 실시예들에서, 블록체인을 통해 제2 노드 처리 결과를 브로드캐스트한 후에, 송수신기 모듈은 블록체인을 통해 제1 노드에 의해 브로드캐스트된 제1 노드 처리 결과를 수신하고, 이 제1 노드 처리 결과는 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제1 노드에 의해 생성된 제1 검증 결과, 및 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제1 노드에 의해 생성된 제1 트랜잭션 실행 결과를 포함한다.
처리 모듈은 제1 노드 처리 결과 및 제2 노드 처리 결과에 따라 후보 블록에 대한 합의를 수행하고, 후보 블록에 대한 합의에 성공적으로 도달한 경우, 제1 트랜잭션 정보가 성공적으로 검증된 경우에 후보 블록을 세이브하고, 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제2 트랜잭션 실행 결과를 세이브하는 단계를 수행하도록 트리거하도록 추가로 구성된다.
본 개시내용의 일부 실시예들에서, 블록체인을 통해 제2 노드 처리 결과를 브로드캐스트한 후에, 송수신기 모듈은 제1 노드 상에서 후보 블록에 대한 합의에 성공적으로 도달한 경우에 제1 노드에 의해 송신된 통지 메시지를 수신한다.
처리 모듈은, 통지 메시지에 따라, 제1 트랜잭션 정보가 성공적으로 검증된 경우에 후보 블록을 세이브하고, 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제2 트랜잭션 실행 결과를 세이브하는 단계를 수행하도록 트리거하도록 추가로 구성된다.
본 개시내용의 일부 실시예들에서, 송수신기 모듈은 블록체인을 통해 제1 노드에 의해 브로드캐스트된 후보 블록을 수신하고, 후보 블록으로부터 획득된 제2 트랜잭션 정보를 획득하도록 추가로 구성된다.
처리 모듈은 후보 블록 내의 제2 트랜잭션 정보에 대한 검증을 수행하여 제4 검증 결과를 생성하고, 후보 블록 내의 제2 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제4 트랜잭션 실행 결과를 생성하도록 추가로 구성된다.
송수신기 모듈은 블록체인을 통해 제4 노드 처리 결과를 브로드캐스트하도록 추가로 구성되고, 제4 노드 처리 결과는 제4 검증 결과 및 제4 트랜잭션 실행 결과를 포함한다.
처리 모듈은 제2 트랜잭션 정보가 성공적으로 검증된 경우에 후보 블록을 세이브하고, 제2 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제4 트랜잭션 실행 결과를 세이브하도록 추가로 구성된다.
본 개시내용의 실시예들의 설명들로부터, 본 개시내용의 실시예들에서, 제1 노드가 리더 노드의 역할을 한다는 것을 알 수 있다. 제1 노드는 트랜잭션 큐를 사용하여 처리될 트랜잭션 정보를 캐싱하고, 트랜잭션 큐에 있는 트랜잭션 정보를 후보 블록으로 패키징하므로, 후보 블록이 브로드캐스트될 수 있고, 제2 노드가 트랜잭션 검증 및 트랜잭션 실행을 수행할 수 있다. 그 후, 제2 노드는 제2 노드 처리 결과를 브로드캐스트할 수 있으므로, 제1 노드는 블록체인 내의 각각의 노드의 처리 결과에 따라 후보 블록에 대한 합의를 수행하고, 합의에 성공적으로 도달하면 블록을 세이브한다. 본 개시내용의 실시예들에서, 블록 생성 단계들의 순서가 변경되어, 블록체인 내의 모든 노드가 트랜잭션 검증 및 트랜잭션 실행을 수행할 수 있고, 따라서 블록 생성 속도 및 트랜잭션 처리 성능이 향상될 수 있다.
예시적인 실시예에서, 도 10을 참조하면, 본 개시내용의 이 실시예는 다른 블록체인 내의 제1 노드(800)를 제공한다. 블록체인은 제2 노드를 추가로 포함한다. 제1 노드는 리더 노드이고, 제2 노드는 팔로워 노드이다. 제1 노드(800)는 처리 모듈(801) 및 송수신기 모듈(802)을 포함한다.
처리 모듈은, 적어도 하나의 클라이언트가 트랜잭션 정보를 블록체인에 송신하는 것에 응답하여, 클라이언트가 송신한 트랜잭션 정보를 제1 노드의 트랜잭션 큐에 넣도록 구성된다.
처리 모듈은 트랜잭션 큐가 미리 설정된 블록 생성 조건을 충족하는지를 체크하도록 추가로 구성된다.
송수신기 모듈은, 트랜잭션 큐가 블록 생성 조건을 충족하는 것에 응답하여, 제1 노드의 트랜잭션 큐에 있는 제1 트랜잭션 정보를 후보 블록으로 패키징하고, 후보 블록에 서명을 추가하고, 블록체인을 통해 후보 블록을 브로드캐스트하도록 구성된다.
처리 모듈은 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제1 검증 결과를 생성하고, 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제1 트랜잭션 실행 결과를 생성하도록 추가로 구성된다.
송수신기 모듈은 제1 노드 처리 결과에 서명을 추가하고, 그 후 블록체인을 통해 제1 노드 처리 결과를 브로드캐스트하도록 추가로 구성되고, 제1 노드 처리 결과는 제1 검증 결과 및 제1 트랜잭션 실행 결과를 포함한다.
송수신기 모듈은 블록체인을 통해 제2 노드에 의해 브로드캐스트된 제2 노드 처리 결과를 수신하도록 추가로 구성되고, 제2 노드 처리 결과는 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제2 노드에 의해 생성된 제2 검증 결과, 및 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제2 노드에 의해 생성된 제2 트랜잭션 실행 결과를 포함한다.
처리 모듈은 제1 노드 처리 결과 및 제2 노드 처리 결과에 따라, 분산형 합의 알고리즘을 사용하여 후보 블록에 대한 합의를 수행하고, 그 후 후보 블록에 대한 합의에 성공적으로 도달한 경우에 후보 블록을 세이브하고, 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제1 트랜잭션 실행 결과를 세이브하도록 추가로 구성된다.
본 개시내용의 일부 실시예들에서, 송수신기 모듈은 제1 트랜잭션 정보를 후보 블록으로 패키징하는 동안 트랜잭션 큐에 있는 제2 트랜잭션 정보를 후보 블록으로 패키징하고, 후보 블록에 서명을 추가하고, 그 후 블록체인을 통해 후보 블록을 브로드캐스트하도록 추가로 구성된다.
처리 모듈은 후보 블록 내의 제2 트랜잭션 정보에 대한 검증을 수행하여 제3 검증 결과를 생성하고, 후보 블록 내의 제2 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제3 트랜잭션 실행 결과를 생성하도록 추가로 구성된다.
송수신기 모듈은 제3 노드 처리 결과에 서명을 추가하고, 그 후 블록체인을 통해 제3 노드 처리 결과를 브로드캐스트하도록 추가로 구성되고, 제3 노드 처리 결과는 제3 검증 결과 및 제3 트랜잭션 실행 결과를 포함한다.
처리 모듈은 블록체인을 통해 제2 노드에 의해 브로드캐스트된 제4 노드 처리 결과를 수신하도록 추가로 구성되고, 제4 노드 처리 결과는 후보 블록 내의 제2 트랜잭션 정보에 대한 검증을 수행하여 제2 노드에 의해 생성된 제4 검증 결과, 및 후보 블록 내의 제2 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제2 노드에 의해 생성된 제4 트랜잭션 실행 결과를 포함한다.
처리 모듈은, 제1 노드에 의해, 제3 노드 처리 결과 및 제4 노드 처리 결과에 따라 후보 블록에 대한 합의를 수행하고, 그 후 후보 블록에 대한 합의에 성공적으로 도달한 경우에 후보 블록을 세이브하고, 제2 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제3 트랜잭션 실행 결과를 세이브하도록 추가로 구성된다.
본 개시내용의 일부 실시예들에서, 처리 모듈은, 후보 블록에 대한 합의에 성공적으로 도달한 경우, 후보 블록의 헤더 정보를 세이브하고 성공적으로 검증된 제1 트랜잭션 정보를 세이브하도록 추가로 구성되고, 후보 블록의 헤더 정보는: 후보 블록의 이전 블록의 해시 값, 머클 트리의 루트, 상태의 루트, 수신 루트, 노드의 서명, 및 논스(nonce)를 포함한다.
전술한 실시예들에서의 본 개시내용의 실시예들의 설명들로부터, 본 개시내용의 실시예들에서, 제1 노드가 리더 노드의 역할을 한다는 것을 알 수 있다. 제1 노드는 트랜잭션 큐를 사용하여 처리될 트랜잭션 정보를 캐싱하고, 트랜잭션 큐에 있는 트랜잭션 정보를 후보 블록으로 패키징하므로, 후보 블록이 브로드캐스트될 수 있고, 블록체인 내의 팔로워 노드가 트랜잭션 검증 및 트랜잭션 실행을 수행할 수 있다. 후보 블록을 브로드캐스트한 후, 제1 노드는 트랜잭션 검증 및 트랜잭션 실행을 수행할 수 있다. 그 후, 제1 노드는 제1 노드 처리 결과를 브로드캐스트할 수 있다. 제1 노드는 블록체인 내의 각각의 노드의 처리 결과에 따라 후보 블록에 대한 합의를 수행하고, 합의에 성공적으로 도달하면 블록을 세이브한다. 본 개시내용의 실시예들에서, 블록 생성 단계들의 순서가 변경되어, 블록체인 내의 모든 노드가 트랜잭션 검증 및 트랜잭션 실행을 수행할 수 있고, 따라서 블록 생성 속도 및 트랜잭션 처리 성능이 향상될 수 있다.
예시적인 실시예에서, 도 11을 참조하면, 본 개시내용의 이 실시예는 다른 블록체인 내의 제2 노드(900)를 제공한다. 블록체인은 제1 노드를 추가로 포함한다. 제1 노드는 리더 노드이고, 제2 노드는 팔로워 노드이다. 제2 노드(900)는 처리 모듈(901) 및 송수신기 모듈(902)을 포함한다.
송수신기 모듈은 블록체인을 통해 제1 노드에 의해 브로드캐스트된 후보 블록을 수신하고, 후보 블록으로부터 제1 트랜잭션 정보를 획득하도록 구성된다.
처리 모듈은 후보 블록 내의 제1 트랜잭션 정보에 대한 검증을 수행하여 제2 검증 결과를 생성하고, 후보 블록 내의 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제2 트랜잭션 실행 결과를 생성하도록 구성된다.
송수신기 모듈은 제2 노드 처리 결과에 서명을 추가하고, 그 후 블록체인을 통해 제2 노드 처리 결과를 브로드캐스트하도록 구성되고, 제2 노드 처리 결과는 제2 검증 결과 및 제2 트랜잭션 실행 결과를 포함한다.
처리 모듈은 제1 트랜잭션 정보가 성공적으로 검증된 경우에 후보 블록을 세이브하고, 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 제2 트랜잭션 실행 결과를 세이브하도록 구성된다.
본 개시내용의 실시예들의 설명들로부터, 본 개시내용의 실시예들에서, 제1 노드가 리더 노드의 역할을 한다는 것을 알 수 있다. 제1 노드는 트랜잭션 큐를 사용하여 처리될 트랜잭션 정보를 캐싱하고, 트랜잭션 큐에 있는 트랜잭션 정보를 후보 블록으로 패키징하므로, 후보 블록이 브로드캐스트될 수 있고, 제2 노드가 트랜잭션 검증 및 트랜잭션 실행을 수행할 수 있다. 그 후, 제2 노드는 제2 노드 처리 결과를 브로드캐스트할 수 있으므로, 제1 노드는 블록체인 내의 각각의 노드의 처리 결과에 따라 후보 블록에 대한 합의를 수행하고, 합의에 성공적으로 도달하면 블록을 세이브한다. 본 개시내용의 실시예들에서, 블록 생성 단계들의 순서가 변경되어, 블록체인 내의 모든 노드가 트랜잭션 검증 및 트랜잭션 실행을 수행할 수 있고, 따라서 블록 생성 속도 및 트랜잭션 처리 성능이 향상될 수 있다.
도 12는 본 개시내용의 실시예에 따른 서버의 개략적인 구조도이다. 서버는 구체적으로 제1 노드 측에서 블록 처리 방법을 구현하기 위한 전술한 블록체인 내의 제1 노드일 수 있거나, 제2 노드 측에서 블록 처리 방법을 구현하기 위한 블록체인 내의 제2 노드일 수 있다. 서버(1100)는 구성들 또는 성능들이 크게 달라질 수 있고, 하나 이상의 중앙 처리 유닛(CPU)(1122)(예를 들어, 하나 이상의 프로세서), 메모리(1132), 및 애플리케이션 프로그램들(1142) 또는 데이터(1144)를 저장하기 위한 하나 이상의 저장 매체(1130)(예를 들어, 하나 이상의 대용량 저장 디바이스)를 포함할 수 있다. 메모리(1132) 및 저장 매체(1130)는 일시적 또는 영구적 스토리지들일 수 있다. 저장 매체(1130)에 저장된 프로그램은 하나 이상의 모듈(도시되지 않음)을 포함할 수 있고, 각각의 모듈은 서버에 대한 일련의 명령어들 및 동작들을 포함할 수 있다. 또한, CPU(1122)는 저장 매체(1130)와 통신하고, 서버(1100) 상에서, 저장 매체(1130)의 일련의 명령어들 및 동작들을 수행할 수 있다.
서버(1100)는 하나 이상의 전원(1126), 하나 이상의 유선 또는 무선 네트워크 인터페이스(1150), 하나 이상의 입력/출력 인터페이스(1158), 및/또는, Windows Server™, Mac OS X™, Unix™, Linux™, 또는 FreeBSD™와 같은 하나 이상의 운영 체제(1141)를 추가로 포함할 수 있다.
전술한 실시예의 제1 노드에 의해 수행되는 블록 처리 방법의 단계들은 도 12에 도시된 서버 구조에 기초할 수 있다. 유사하게, 전술한 실시예의 제2 노드에 의해 수행되는 블록 처리 방법의 단계들은 도 12에 도시된 서버 구조에 기초할 수 있다.
또한, 설명된 장치 실시예는 예시일 뿐이다. 별개의 부분들로서 설명된 유닛들은 물리적으로 분리될 수 있거나 분리되지 않을 수 있고, 유닛들로서 표시된 부분들은 물리적 유닛들일 수 있거나 아닐 수 있고, 한 위치에 위치할 수 있거나 다수의 네트워크 유닛들에 분산될 수 있다. 모듈들 중 일부 또는 전부는 실시예들의 해결책들의 목적들을 달성하기 위해 실제 필요성에 따라 선택될 수 있다. 또한, 본 개시내용의 실시예들에 의해 제공되는 장치 실시예들의 첨부 도면들에서, 모듈들 사이의 접속 관계들은 모듈들이 서로 통신 접속들을 갖는다는 것을 지시하고, 이는 하나 이상의 통신 버스 또는 신호 케이블로서 구체적으로 구현될 수 있다. 본 기술분야의 통상의 기술자는 창조적인 노력들 없이 실시예들을 이해하고 구현할 수 있다.
전술한 구현들의 설명에 기초하여, 본 기술분야의 통상의 기술자는 본 개시내용의 실시예들이 필요한 범용 하드웨어를 갖는 소프트웨어에 의해, 또는 전용 집적 회로, 전용 CPU, 전용 메모리, 전용 컴포넌트 등을 포함하는 전용 하드웨어에 의해 구현될 수 있다는 것을 명확하게 이해할 수 있다. 일반적으로, 컴퓨터 프로그램에 의해 수행될 수 있는 임의의 기능들은 대응하는 하드웨어를 사용하여 쉽게 구현될 수 있다. 또한, 동일한 기능을 달성하기 위해 사용되는 특정 하드웨어 구조는 다양한 형태들, 예를 들어, 아날로그 회로, 디지털 회로, 또는 전용 회로의 형태로 될 수 있다. 그러나, 본 개시내용의 실시예들에 대해, 소프트웨어 프로그램 구현이 대부분의 경우들에서 더 나은 구현이다. 이러한 이해에 기초하여, 본 개시내용의 실시예들의 본질적인 기술적 해결책들 또는 기존의 기술에 기여하는 부분은 소프트웨어 제품의 형태로 구현될 수 있다. 소프트웨어 제품은 플로피 디스크, USB 플래시 드라이브, 이동식 하드 디스크, 판독 전용 메모리(read-only memory, ROM), 랜덤 액세스 메모리(random access memory, RAM), 자기 디스크, 또는 컴퓨터의 광 디스크와 같은 판독가능한 저장 매체에 저장되고, 컴퓨터 디바이스(이는 개인용 컴퓨터, 서버, 네트워크 디바이스 등일 수 있음)에 본 개시내용의 실시예들에서 설명된 방법들을 수행하도록 지시하기 위한 수 개의 명령어를 포함한다.
예시적인 실시예에서, 컴퓨터 프로그램 제품이 추가로 제공되며, 제1 노드 상에서 실행될 때, 컴퓨터 프로그램 제품은 제1 노드 측에서 블록 처리 방법을 구현하도록 구성되고; 제2 노드 상에서 실행될 때, 컴퓨터 프로그램 제품은 제2 노드 측에서 블록 처리 방법을 구현하도록 구성된다.
요약하면, 전술한 실시예들은 본 개시내용을 제한하기 위한 것이 아니라 본 개시내용의 실시예들의 기술적 해결책들을 설명하기 위한 것일 뿐이다. 본 개시내용의 실시예들이 전술한 실시예들을 참조하여 상세히 설명되지만, 본 개시내용의 실시예들의 기술적 해결책들의 사상 및 범위로부터 벗어나지 않고, 전술한 실시예들에서 설명된 기술적 해결책들에 대해 수정들이 여전히 이루어질 수 있거나 그의 일부 기술적 특징들에 대해 등가의 대체들이 이루어질 수 있다는 점이 본 기술분야의 통상의 기술자에 의해 이해될 것이다.

Claims (20)

  1. 블록 처리 방법으로서, 상기 방법은 블록체인(blockchain) 내의 제1 노드에 의해 실행되고, 상기 블록체인은 제2 노드를 추가로 포함하고, 상기 제1 노드는 리더 노드(leader node)이고, 상기 제2 노드는 팔로워 노드(follower node)이며, 상기 방법은:
    상기 제1 노드에 의해, 상기 제1 노드의 트랜잭션 큐(transaction queue)에 있는 제1 트랜잭션 정보를 후보 블록으로 패키징하고, 상기 블록체인을 통해 상기 후보 블록을 브로드캐스트(broadcast)하는 단계;
    상기 제1 노드에 의해, 상기 후보 블록 내의 상기 제1 트랜잭션 정보에 대한 검증을 수행하여 제1 검증 결과를 생성하고, 상기 후보 블록 내의 상기 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제1 트랜잭션 실행 결과를 생성하는 단계;
    상기 제1 노드에 의해, 상기 블록체인을 통해 제1 노드 처리 결과를 브로드캐스트하는 단계 - 상기 제1 노드 처리 결과는 상기 제1 검증 결과 및 상기 제1 트랜잭션 실행 결과를 포함함 - ;
    상기 제1 노드에 의해, 상기 블록체인을 통해 상기 제2 노드에 의해 브로드캐스트된 제2 노드 처리 결과를 수신하는 단계 - 상기 제2 노드 처리 결과는 상기 후보 블록 내의 상기 제1 트랜잭션 정보에 대한 검증을 수행하여 상기 제2 노드에 의해 생성된 제2 검증 결과, 및 상기 후보 블록 내의 상기 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 상기 제2 노드에 의해 생성된 제2 트랜잭션 실행 결과를 포함함 - ; 및
    상기 제1 노드에 의해, 상기 제1 노드 처리 결과 및 상기 제2 노드 처리 결과에 따라 상기 후보 블록에 대한 합의(consensus)를 수행하고, 상기 제1 노드에 의해, 상기 후보 블록에 대한 합의에 성공적으로 도달한 경우에 상기 후보 블록을 세이브(save)하고, 상기 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 상기 제1 트랜잭션 실행 결과를 세이브하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서, 상기 제1 노드에 의해, 상기 제1 노드의 트랜잭션 큐에 있는 제1 트랜잭션 정보를 후보 블록으로 패키징하기 전에, 상기 방법은:
    상기 제1 노드에 의해, 상기 트랜잭션 큐가 미리 설정된 블록 생성 조건을 충족하는지를 체크하는 단계; 및
    상기 트랜잭션 큐가 상기 블록 생성 조건을 충족하는 경우, 상기 제1 노드에 의해, 상기 제1 노드의 트랜잭션 큐에 있는 상기 제1 트랜잭션 정보를 상기 후보 블록으로 패키징하는 동작을 트리거하는 단계
    를 추가로 포함하는, 방법.
  3. 제2항에 있어서, 상기 제1 노드에 의해, 상기 트랜잭션 큐가 미리 설정된 블록 생성 조건을 충족하는지를 체크하는 단계는:
    상기 제1 노드에 의해, 상기 트랜잭션 큐에 저장된 트랜잭션 정보의 수량이 제1 임계값을 초과하는지를 체크하고, 상기 트랜잭션 정보의 수량이 상기 제1 임계값을 초과하는 경우, 상기 트랜잭션 큐가 상기 블록 생성 조건을 충족한다고 결정하고, 상기 트랜잭션 정보의 수량이 상기 제1 임계값을 초과하지 않는 경우, 상기 트랜잭션 큐가 상기 블록 생성 조건을 충족하지 않는다고 결정하는 단계를 포함하는, 방법.
  4. 제2항에 있어서, 상기 제1 노드에 의해, 상기 트랜잭션 큐가 미리 설정된 블록 생성 조건을 충족하는지를 체크하는 단계는:
    상기 제1 노드에 의해, 상기 트랜잭션 큐에 저장된 데이터의 볼륨(volume of data)이 제2 임계값을 초과하는지를 체크하고, 상기 데이터의 볼륨이 상기 제2 임계값을 초과하는 경우, 상기 트랜잭션 큐가 상기 블록 생성 조건을 충족한다고 결정하고, 상기 데이터의 볼륨이 상기 제2 임계값을 초과하지 않는 경우, 상기 트랜잭션 큐가 상기 블록 생성 조건을 충족하지 않는다고 결정하는 단계를 포함하는, 방법.
  5. 제2항에 있어서, 상기 제1 노드에 의해, 상기 트랜잭션 큐가 미리 설정된 블록 생성 조건을 충족하는지를 체크하는 단계는:
    상기 제1 노드에 의해, 상기 트랜잭션 큐에 대한 블록을 생성하는 이전 시간과 현재 시간 사이의 시간 차이가 블록 생성 시간 임계값을 초과하는지를 체크하고, 상기 시간 차이가 상기 블록 생성 시간 임계값을 초과하는 경우, 상기 트랜잭션 큐가 상기 블록 생성 조건을 충족한다고 결정하고, 상기 시간 차이가 상기 블록 생성 시간 임계값을 초과하지 않는 경우, 상기 트랜잭션 큐가 상기 블록 생성 조건을 충족하지 않는다고 결정하는 단계를 포함하는, 방법.
  6. 제1항에 있어서,
    상기 제1 노드에 의해, 적어도 하나의 클라이언트에 의해 상기 블록체인에 송신된 트랜잭션 정보를 수신하는 단계; 또는 상기 제1 노드에 의해, 적어도 하나의 클라이언트로부터 상기 제2 노드에 의해 획득된 트랜잭션 정보를 수신하는 단계; 및
    상기 제1 노드에 의해, 상기 적어도 하나의 클라이언트의 트랜잭션 정보를 상기 트랜잭션 큐에 넣는 단계
    를 추가로 포함하는, 방법.
  7. 제1항에 있어서,
    상기 제1 노드에 의해, 상기 제1 트랜잭션 정보를 상기 후보 블록으로 패키징하는 동안 상기 트랜잭션 큐에 있는 제2 트랜잭션 정보를 상기 후보 블록으로 패키징하고, 상기 블록체인을 통해 상기 후보 블록을 브로드캐스트하는 단계;
    상기 제1 노드에 의해, 상기 후보 블록 내의 상기 제2 트랜잭션 정보에 대한 검증을 수행하여 제3 검증 결과를 생성하고, 상기 후보 블록 내의 상기 제2 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제3 트랜잭션 실행 결과를 생성하는 단계;
    상기 제1 노드에 의해, 상기 블록체인을 통해 제3 노드 처리 결과를 브로드캐스트하는 단계 - 상기 제3 노드 처리 결과는 상기 제3 검증 결과 및 상기 제3 트랜잭션 실행 결과를 포함함 - ;
    상기 제1 노드에 의해, 상기 블록체인을 통해 상기 제2 노드에 의해 브로드캐스트된 제4 노드 처리 결과를 수신하는 단계 - 상기 제4 노드 처리 결과는 상기 후보 블록 내의 상기 제2 트랜잭션 정보에 대한 검증을 수행하여 상기 제2 노드에 의해 생성된 제4 검증 결과, 및 상기 후보 블록 내의 상기 제2 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 상기 제2 노드에 의해 생성된 제4 트랜잭션 실행 결과를 포함함 - ; 및
    상기 제1 노드에 의해, 상기 제3 노드 처리 결과 및 상기 제4 노드 처리 결과에 따라 상기 후보 블록에 대한 합의를 수행하고, 상기 제1 노드에 의해, 상기 후보 블록에 대한 합의에 성공적으로 도달한 경우에 상기 후보 블록을 세이브하고, 상기 제2 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 상기 제3 트랜잭션 실행 결과를 세이브하는 단계
    를 추가로 포함하는, 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 제1 노드에 의해, 상기 후보 블록에 대한 합의에 성공적으로 도달한 경우에 상기 후보 블록을 세이브하는 것은:
    상기 제1 노드에 의해, 상기 후보 블록에 대한 합의에 성공적으로 도달한 경우에 상기 후보 블록의 헤더 정보 및 성공적으로 검증된 상기 제1 트랜잭션 정보를 세이브하는 것을 포함하는, 방법.
  9. 블록 처리 방법으로서, 상기 방법은 블록체인 내의 제2 노드에 의해 실행되고, 상기 블록체인은 제1 노드를 추가로 포함하고, 상기 제1 노드는 리더 노드이고, 상기 제2 노드는 팔로워 노드이며, 상기 방법은:
    상기 제2 노드에 의해, 상기 블록체인을 통해 상기 제1 노드에 의해 브로드캐스트된 후보 블록을 수신하고, 상기 후보 블록으로부터 제1 트랜잭션 정보를 획득하는 단계;
    상기 제2 노드에 의해, 상기 후보 블록 내의 상기 제1 트랜잭션 정보에 대한 검증을 수행하여 제2 검증 결과를 생성하고, 상기 후보 블록 내의 상기 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제2 트랜잭션 실행 결과를 생성하는 단계;
    상기 제2 노드에 의해, 상기 블록체인을 통해 제2 노드 처리 결과를 브로드캐스트하는 단계 - 상기 제2 노드 처리 결과는 상기 제2 검증 결과 및 상기 제2 트랜잭션 실행 결과를 포함함 - ; 및
    상기 제2 노드에 의해, 상기 제1 트랜잭션 정보가 성공적으로 검증된 경우에 상기 후보 블록을 세이브하고, 상기 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 상기 제2 트랜잭션 실행 결과를 세이브하는 단계
    를 포함하는, 방법.
  10. 제9항에 있어서, 상기 제2 노드에 의해, 상기 블록체인을 통해 제2 노드 처리 결과를 브로드캐스트한 후에, 상기 방법은:
    상기 제2 노드에 의해, 상기 블록체인을 통해 상기 제1 노드에 의해 브로드캐스트된 제1 노드 처리 결과를 수신하는 단계 - 상기 제1 노드 처리 결과는 상기 후보 블록 내의 상기 제1 트랜잭션 정보에 대한 검증을 수행하여 상기 제1 노드에 의해 생성된 제1 검증 결과, 및 상기 후보 블록 내의 상기 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 상기 제1 노드에 의해 생성된 제1 트랜잭션 실행 결과를 포함함 - ; 및
    상기 제2 노드에 의해, 상기 제1 노드 처리 결과 및 상기 제2 노드 처리 결과에 따라 상기 후보 블록에 대한 합의를 수행하고, 상기 후보 블록에 대한 합의에 성공적으로 도달한 경우, 상기 제2 노드에 의해, 상기 제1 트랜잭션 정보가 성공적으로 검증된 경우에 상기 후보 블록을 세이브하는 동작, 및 상기 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 상기 제2 트랜잭션 실행 결과를 세이브하는 동작을 트리거하는 단계
    를 추가로 포함하는, 방법.
  11. 제9항에 있어서, 상기 제2 노드에 의해, 상기 블록체인을 통해 제2 노드 처리 결과를 브로드캐스트한 후에, 상기 방법은:
    상기 제2 노드에 의해, 상기 제1 노드 상에서 상기 후보 블록에 대한 합의에 성공적으로 도달한 경우에 상기 제1 노드에 의해 송신된 통지 메시지를 수신하는 단계; 및
    상기 제2 노드에 의해, 상기 통지 메시지에 따라, 상기 제2 노드에 의해, 상기 제1 트랜잭션 정보가 성공적으로 검증된 경우에 상기 후보 블록을 세이브하는 동작, 및 상기 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 상기 제2 트랜잭션 실행 결과를 세이브하는 동작을 트리거하는 단계
    를 추가로 포함하는, 방법.
  12. 제9항 내지 제11항 중 어느 한 항에 있어서,
    상기 제2 노드에 의해, 상기 블록체인을 통해 상기 제1 노드에 의해 브로드캐스트된 후보 블록을 수신하고, 상기 후보 블록으로부터 제2 트랜잭션 정보를 획득하는 단계;
    상기 제2 노드에 의해, 상기 후보 블록 내의 상기 제2 트랜잭션 정보에 대한 검증을 수행하여 제4 검증 결과를 생성하고, 상기 후보 블록 내의 상기 제2 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제4 트랜잭션 실행 결과를 생성하는 단계;
    상기 제2 노드에 의해, 상기 블록체인을 통해 제4 노드 처리 결과를 브로드캐스트하는 단계 - 상기 제4 노드 처리 결과는 상기 제4 검증 결과 및 상기 제4 트랜잭션 실행 결과를 포함함 - ; 및
    상기 제2 노드에 의해, 상기 제2 트랜잭션 정보가 성공적으로 검증된 경우에 상기 후보 블록을 세이브하고, 상기 제2 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 상기 제4 트랜잭션 실행 결과를 세이브하는 단계
    를 추가로 포함하는, 방법.
  13. 블록 처리 방법으로서, 상기 방법은 블록체인 내의 제1 노드에 의해 실행되고, 상기 블록체인은 제2 노드를 추가로 포함하고, 상기 제1 노드는 리더 노드이고, 상기 제2 노드는 팔로워 노드이며, 상기 방법은:
    적어도 하나의 클라이언트가 트랜잭션 정보를 상기 블록체인에 송신하는 것에 응답하여, 상기 제1 노드에 의해, 상기 클라이언트가 송신한 상기 트랜잭션 정보를 상기 제1 노드의 트랜잭션 큐에 넣는 단계;
    상기 제1 노드에 의해, 상기 트랜잭션 큐가 미리 설정된 블록 생성 조건을 충족하는지를 체크하는 단계;
    상기 트랜잭션 큐가 상기 블록 생성 조건을 충족하는 것에 응답하여, 상기 제1 노드에 의해, 상기 제1 노드의 상기 트랜잭션 큐에 있는 제1 트랜잭션 정보를 후보 블록으로 패키징하고, 상기 후보 블록에 서명을 추가하고, 상기 블록체인을 통해 상기 후보 블록을 브로드캐스트하는 단계;
    상기 제1 노드에 의해, 상기 후보 블록 내의 상기 제1 트랜잭션 정보에 대한 검증을 수행하여 제1 검증 결과를 생성하고, 상기 후보 블록 내의 상기 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제1 트랜잭션 실행 결과를 생성하는 단계;
    상기 제1 노드에 의해, 제1 노드 처리 결과에 서명을 추가하고, 그 후 상기 블록체인을 통해 상기 제1 노드 처리 결과를 브로드캐스트하는 단계 - 상기 제1 노드 처리 결과는 상기 제1 검증 결과 및 상기 제1 트랜잭션 실행 결과를 포함함 - ;
    상기 제1 노드에 의해, 상기 블록체인을 통해 상기 제2 노드에 의해 브로드캐스트된 제2 노드 처리 결과를 수신하는 단계 - 상기 제2 노드 처리 결과는 상기 후보 블록 내의 상기 제1 트랜잭션 정보에 대한 검증을 수행하여 상기 제2 노드에 의해 생성된 제2 검증 결과, 및 상기 후보 블록 내의 상기 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 상기 제2 노드에 의해 생성된 제2 트랜잭션 실행 결과를 포함함 - ; 및
    상기 제1 노드에 의해, 상기 제1 노드 처리 결과 및 상기 제2 노드 처리 결과에 따라, 분산형 합의 알고리즘(distributed consensus algorithm)을 사용하여 상기 후보 블록에 대한 합의를 수행하고, 상기 제1 노드에 의해, 상기 후보 블록에 대한 합의에 성공적으로 도달한 경우에 상기 후보 블록을 세이브하고, 상기 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 상기 제1 트랜잭션 실행 결과를 세이브하는 단계
    를 포함하는, 방법.
  14. 제13항에 있어서,
    상기 제1 노드에 의해, 상기 제1 트랜잭션 정보를 상기 후보 블록으로 패키징하는 동안 상기 트랜잭션 큐에 있는 제2 트랜잭션 정보를 상기 후보 블록으로 패키징하고, 상기 후보 블록에 서명을 추가하고, 그 후 상기 블록체인을 통해 상기 후보 블록을 브로드캐스트하는 단계;
    상기 제1 노드에 의해, 상기 후보 블록 내의 상기 제2 트랜잭션 정보에 대한 검증을 수행하여 제3 검증 결과를 생성하고, 상기 후보 블록 내의 상기 제2 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제3 트랜잭션 실행 결과를 생성하는 단계;
    상기 제1 노드에 의해, 제3 노드 처리 결과에 서명을 추가하고, 그 후 상기 블록체인을 통해 상기 제3 노드 처리 결과를 브로드캐스트하는 단계 - 상기 제3 노드 처리 결과는 상기 제3 검증 결과 및 상기 제3 트랜잭션 실행 결과를 포함함 - ;
    상기 제1 노드에 의해, 상기 블록체인을 통해 상기 제2 노드에 의해 브로드캐스트된 제4 노드 처리 결과를 수신하는 단계 - 상기 제4 노드 처리 결과는 상기 후보 블록 내의 상기 제2 트랜잭션 정보에 대한 검증을 수행하여 상기 제2 노드에 의해 생성된 제4 검증 결과, 및 상기 후보 블록 내의 상기 제2 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 상기 제2 노드에 의해 생성된 제4 트랜잭션 실행 결과를 포함함 - ; 및
    상기 제1 노드에 의해, 상기 제3 노드 처리 결과 및 상기 제4 노드 처리 결과에 따라 상기 후보 블록에 대한 합의를 수행하고, 상기 제1 노드에 의해, 상기 후보 블록에 대한 합의에 성공적으로 도달한 경우에 상기 후보 블록을 세이브하고, 상기 제2 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 상기 제3 트랜잭션 실행 결과를 세이브하는 단계
    를 추가로 포함하는, 방법.
  15. 제13항 또는 제14항에 있어서, 상기 제1 노드에 의해, 상기 후보 블록에 대한 합의에 성공적으로 도달한 경우에 상기 후보 블록을 세이브하는 것은:
    상기 제1 노드에 의해, 상기 후보 블록에 대한 합의에 성공적으로 도달한 경우에 상기 후보 블록의 헤더 정보 및 성공적으로 검증된 상기 제1 트랜잭션 정보를 세이브하는 것을 포함하고, 상기 후보 블록의 헤더 정보는: 상기 후보 블록의 이전 블록의 해시 값, 머클 트리(Merkle tree)의 루트, 상태의 루트, 수신 루트, 노드의 서명, 및 논스(nonce)를 포함하는, 방법.
  16. 블록 처리 방법으로서, 상기 방법은 블록체인 내의 제2 노드에 의해 실행되고, 상기 블록체인은 제1 노드를 추가로 포함하고, 상기 제1 노드는 리더 노드이고, 상기 제2 노드는 팔로워 노드이며, 상기 방법은:
    상기 제2 노드에 의해, 상기 블록체인을 통해 상기 제1 노드에 의해 브로드캐스트된 후보 블록을 수신하고, 상기 후보 블록으로부터 제1 트랜잭션 정보를 획득하는 단계;
    상기 제2 노드에 의해, 상기 후보 블록 내의 상기 제1 트랜잭션 정보에 대한 검증을 수행하여 제2 검증 결과를 생성하고, 상기 후보 블록 내의 상기 제1 트랜잭션 정보에 의해 지시된 트랜잭션을 실행하여 제2 트랜잭션 실행 결과를 생성하는 단계;
    상기 제2 노드에 의해, 제2 노드 처리 결과에 서명을 추가하고, 상기 블록체인을 통해 상기 제2 노드 처리 결과를 브로드캐스트하는 단계 - 상기 제2 노드 처리 결과는 상기 제2 검증 결과 및 상기 제2 트랜잭션 실행 결과를 포함함 - ; 및
    상기 제2 노드에 의해, 상기 제1 트랜잭션 정보가 성공적으로 검증된 경우에 상기 후보 블록을 세이브하고, 상기 제1 트랜잭션 정보에 의해 지시된 트랜잭션이 성공적으로 실행된 경우에 상기 제2 트랜잭션 실행 결과를 세이브하는 단계
    를 포함하는, 방법.
  17. 블록체인 노드로서, 상기 블록체인 노드는 블록체인 내의 제1 노드이고, 상기 제1 노드는 프로세서 및 메모리를 포함하고,
    상기 메모리는 명령어들을 저장하도록 구성되고;
    상기 프로세서는 상기 메모리 내의 명령어들을 실행하여, 제1항 내지 제8항 중 어느 한 항에 따른 방법을 수행하거나, 또는 제13항 내지 제15항 중 어느 한 항에 따른 방법을 수행하도록 구성되는, 블록체인 노드.
  18. 블록체인 노드로서, 상기 블록체인 노드는 블록체인 내의 제2 노드이고, 상기 제2 노드는 프로세서 및 메모리를 포함하고,
    상기 메모리는 명령어들을 저장하도록 구성되고;
    상기 프로세서는 상기 메모리 내의 명령어들을 실행하여, 제9항 내지 제12항 중 어느 한 항에 따른 방법을 수행하거나, 또는 제16항에 따른 방법을 수행하도록 구성되는, 블록체인 노드.
  19. 블록 처리 시스템으로서,
    상기 블록 처리 시스템은 제1 노드 및 제2 노드를 포함하고,
    상기 제1 노드는 제1항 내지 제8항 중 어느 한 항에 따른 방법을 수행하도록 구성되고, 상기 제2 노드는 제9항 내지 제12항 중 어느 한 항에 따른 방법을 수행하도록 구성되거나;
    또는
    상기 제1 노드는 제13항 내지 제15항 중 어느 한 항에 따른 방법을 수행하도록 구성되고, 상기 제2 노드는 제16항에 따른 방법을 수행하도록 구성되는, 블록 처리 시스템.
  20. 컴퓨터 상에서 실행될 때, 상기 컴퓨터로 하여금 제1항 내지 제8항 중 어느 한 항에 따른 방법을 수행하게 하거나, 제9항 내지 제12항 중 어느 한 항에 따른 방법을 수행하게 하거나, 제13항 내지 제15항 중 어느 한 항에 따른 방법을 수행하게 하거나, 제16항에 따른 방법을 수행하게 하는 명령어들을 포함하는, 컴퓨터 판독가능 저장 매체.
KR1020217009871A 2019-04-26 2020-04-23 블록 처리 방법들, 노드 및 시스템 KR102562558B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201910345985.4A CN110046896B (zh) 2019-04-26 2019-04-26 一种区块处理方法和节点以及系统
CN201910345985.4 2019-04-26
PCT/CN2020/086351 WO2020216280A1 (zh) 2019-04-26 2020-04-23 一种区块处理方法和节点以及系统

Publications (2)

Publication Number Publication Date
KR20210055734A true KR20210055734A (ko) 2021-05-17
KR102562558B1 KR102562558B1 (ko) 2023-08-03

Family

ID=67279655

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217009871A KR102562558B1 (ko) 2019-04-26 2020-04-23 블록 처리 방법들, 노드 및 시스템

Country Status (6)

Country Link
US (1) US20210263765A1 (ko)
JP (1) JP7186862B2 (ko)
KR (1) KR102562558B1 (ko)
CN (2) CN110648137B (ko)
SG (1) SG11202101131QA (ko)
WO (1) WO2020216280A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110648137B (zh) * 2019-04-26 2021-08-20 腾讯科技(深圳)有限公司 一种区块处理方法和节点以及系统
CN110519287B (zh) * 2019-08-30 2022-08-12 腾讯科技(深圳)有限公司 一种信息管理方法及相关设备
CN110570196A (zh) * 2019-09-05 2019-12-13 腾讯科技(深圳)有限公司 交易数据处理方法、装置、终端设备以及存储介质
CN110648234B (zh) * 2019-09-12 2022-08-19 广州蚁比特区块链科技有限公司 一种区块生成方法及装置
CN111078696A (zh) * 2019-12-04 2020-04-28 杭州复杂美科技有限公司 区块生成方法、设备和存储介质
CN111199485A (zh) * 2020-01-02 2020-05-26 支付宝(杭州)信息技术有限公司 用于在区块链节点处进行交易数据处理的方法及装置
CN111262918A (zh) * 2020-01-13 2020-06-09 中孚安全技术有限公司 一种跨平台分布式一致性框架系统及其实现方法
CN111431696B (zh) * 2020-03-26 2023-10-17 深圳市欧欣泰科技有限公司 一种基于身份的区块链封印机制
CN111724260B (zh) * 2020-06-18 2022-08-05 清华大学 基于配置区块的多场景配置数据存储方法及系统
KR102473672B1 (ko) * 2020-10-20 2022-12-02 주식회사 커먼컴퓨터 트리 구조의 상태 데이터베이스를 포함하는 블록체인에 대한 상태 관리 방법 및 시스템
CN112347193A (zh) * 2020-11-27 2021-02-09 网易(杭州)网络有限公司 基于区块链的交易打包方法及装置、电子设备
CN113269637A (zh) * 2020-12-28 2021-08-17 上海能链众合科技有限公司 一种基于区块链的智能设备数据的存证与验证方法
CN112804233B (zh) * 2021-01-15 2023-05-02 欧冶云商股份有限公司 一种面向区块链多通道的区块打包方法、装置及存储介质
CN113543073B (zh) * 2021-06-07 2023-05-09 中国联合网络通信集团有限公司 区块校验方法和区块链系统
CN113922965B (zh) * 2021-10-09 2024-04-16 筹远(上海)信息科技有限公司 一种拜占庭场景下的区块链数据共识方法及装置
CN113961349B (zh) * 2021-10-28 2022-09-06 中国西安卫星测控中心 一种qpid集群控制方法及系统
CN117579633B (zh) * 2024-01-17 2024-04-09 腾讯科技(深圳)有限公司 区块竞选方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108876384A (zh) * 2018-09-19 2018-11-23 联动优势科技有限公司 一种交易数据的处理方法及装置
KR101924026B1 (ko) * 2017-11-10 2018-11-30 부산대학교 산학협력단 해시 기반 서명 기법을 적용한 블록체인 시스템 및 방법

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10204341B2 (en) * 2016-05-24 2019-02-12 Mastercard International Incorporated Method and system for an efficient consensus mechanism for permissioned blockchains using bloom filters and audit guarantees
JP6775086B2 (ja) 2016-12-16 2020-10-28 株式会社日立製作所 ブロックチェーン監視及び管理
CN107077674B (zh) * 2016-12-29 2021-06-11 达闼机器人有限公司 交易验证处理方法、装置及节点设备
US10657225B2 (en) * 2016-12-29 2020-05-19 Red Hat, Inc. Providing blockchain-based subscription-as-a-service management
CN111917864B (zh) * 2017-02-22 2023-08-22 创新先进技术有限公司 一种业务校验的方法及装置
CN107196900B (zh) * 2017-03-24 2020-04-24 创新先进技术有限公司 一种共识校验的方法及装置
EP3553735A4 (en) 2017-05-02 2019-11-06 Sustainable Medicine, Inc. SAFETY SYSTEM AND NODE DEVICE USED THEREIN
US10740733B2 (en) * 2017-05-25 2020-08-11 Oracle International Corporaton Sharded permissioned distributed ledgers
CN107402824B (zh) 2017-05-31 2020-06-02 创新先进技术有限公司 一种数据处理的方法及装置
US11055703B2 (en) * 2017-06-19 2021-07-06 Hitachi, Ltd. Smart contract lifecycle management
CN109118214B (zh) * 2017-06-26 2020-11-17 华为技术有限公司 运行智能合约的方法和装置
JP7064950B2 (ja) 2017-09-15 2022-05-11 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 電子投票システム、及び、制御方法
CN108182635A (zh) * 2017-12-18 2018-06-19 深圳前海微众银行股份有限公司 区块链共识方法、系统和计算机可读存储介质
CN112767158A (zh) * 2018-02-27 2021-05-07 创新先进技术有限公司 基于区块链的交易执行方法及装置、电子设备
CN109327459B (zh) * 2018-11-12 2020-12-01 崔晓晖 一种联盟区块链网络的共识方法
CN109636389B (zh) * 2018-12-13 2020-09-22 东软集团股份有限公司 区块链出块时间的确定方法、装置、设备及存储介质
CN110648137B (zh) * 2019-04-26 2021-08-20 腾讯科技(深圳)有限公司 一种区块处理方法和节点以及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101924026B1 (ko) * 2017-11-10 2018-11-30 부산대학교 산학협력단 해시 기반 서명 기법을 적용한 블록체인 시스템 및 방법
CN108876384A (zh) * 2018-09-19 2018-11-23 联动优势科技有限公司 一种交易数据的处理方法及装置

Also Published As

Publication number Publication date
SG11202101131QA (en) 2021-03-30
CN110648137A (zh) 2020-01-03
KR102562558B1 (ko) 2023-08-03
JP2022500742A (ja) 2022-01-04
WO2020216280A1 (zh) 2020-10-29
CN110648137B (zh) 2021-08-20
US20210263765A1 (en) 2021-08-26
CN110046896B (zh) 2022-03-01
CN110046896A (zh) 2019-07-23
JP7186862B2 (ja) 2022-12-09

Similar Documents

Publication Publication Date Title
KR102562558B1 (ko) 블록 처리 방법들, 노드 및 시스템
CN109189751B (zh) 基于区块链的数据同步方法及终端设备
Amir et al. Prime: Byzantine replication under attack
JP2019536108A (ja) データをビザンチン障害耐性複製する方法及びシステム
WO2017186317A1 (en) Method and system for byzantine fault-tolerance replicating of data on a plurality of servers
Rodrigues et al. Automatic reconfiguration for large-scale reliable storage systems
US9729560B2 (en) Method and device for synchronizing network data flow detection status
US11165766B2 (en) Implementing authentication protocol for merging multiple server nodes with trusted platform modules utilizing provisioned node certificates to support concurrent node add and remove
CN111259072B (zh) 数据同步方法、装置、电子设备和计算机可读存储介质
CN111698315B (zh) 针对区块的数据处理方法、数据处理装置及计算机设备
CN110602108B (zh) 基于区块链网络的数据通信方法、装置、设备及存储介质
JP2024505692A (ja) ブロックチェーンネットワークに基づくデータ処理方法、装置及びコンピュータ機器
JP5801482B2 (ja) キーバリューストレージに対するデータの保存および読み出しを行う方法およびシステム
Chondros et al. On the practicality of practical byzantine fault tolerance
CN113409047B (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
CN110502581A (zh) 分布式数据库系统监测方法及装置
CN111597537A (zh) 基于区块链网络的证书签发方法、相关设备及介质
CN113765671A (zh) 一种区块链节点热重启的方法及装置
CN113626139A (zh) 一种高可用的虚拟机存储方法及装置
Friedman et al. Hardening cassandra against byzantine failures
Inayat et al. A performance study on the signal-on-fail approach to imposing total order in the streets of byzantium
CN110597918B (zh) 一种账户管理方法、装置及计算机可读存储介质
Nikolaou et al. Moving participants turtle consensus
WO2024066974A1 (zh) 基于区块链的数据处理方法、设备以及可读存储介质
CN111740833B (zh) 一种区块链网络的签名方法、节点、系统及存储介质

Legal Events

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