KR20210067981A - 블록체인 블록들의 비동기 처리 - Google Patents

블록체인 블록들의 비동기 처리 Download PDF

Info

Publication number
KR20210067981A
KR20210067981A KR1020207031170A KR20207031170A KR20210067981A KR 20210067981 A KR20210067981 A KR 20210067981A KR 1020207031170 A KR1020207031170 A KR 1020207031170A KR 20207031170 A KR20207031170 A KR 20207031170A KR 20210067981 A KR20210067981 A KR 20210067981A
Authority
KR
South Korea
Prior art keywords
blockchain
bridge device
height value
block
network node
Prior art date
Application number
KR1020207031170A
Other languages
English (en)
Other versions
KR102283744B1 (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 KR20210067981A publication Critical patent/KR20210067981A/ko
Application granted granted Critical
Publication of KR102283744B1 publication Critical patent/KR102283744B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/66Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2071Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
    • G06F11/2074Asynchronous techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/183Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • G06F21/645Protecting data integrity, e.g. using checksums, certificates or signatures using a third party
    • 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
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • 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/321Cryptographic 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 involving a third party or a trusted authority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • 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/20Manipulating the length of blocks of bits, e.g. padding or block truncation
    • 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/24Key scheduling, i.e. generating round keys or sub-keys for block encryption
    • 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/26Testing cryptographic entity, e.g. testing integrity of encryption key or encryption algorithm
    • H04L2209/38
    • 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/3263Cryptographic 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 involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • H04L9/3265Cryptographic 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 involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate chains, trees or paths; Hierarchical trust model

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Business, Economics & Management (AREA)
  • Databases & Information Systems (AREA)
  • Finance (AREA)
  • Accounting & Taxation (AREA)
  • Data Mining & Analysis (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • General Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Development Economics (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)

Abstract

본 명세서에는 블록체인 기반 결함 허용 시스템을 구현하기 위한, 컴퓨터 저장 매체 상에 인코딩된 컴퓨터 프로그램들을 포함하는, 방법들, 시스템들, 및 장치들이 개시되어 있다. 방법들 중 하나는 브리지 디바이스의 제1 스레드 세트를 이용하여 블록체인 네트워크 노드로부터 제1 블록체인 블록 세트를 검색하는 단계를 포함한다. 브리지 디바이스는 제1 블록체인 블록 세트를 브리지 디바이스에 저장한다. 브리지 디바이스는 브리지 디바이스의 제2 스레드 세트를 이용하여 브리지 디바이스에 저장되어 있는 제2 블록체인 블록 세트를 검증한다. 제1 스레드 세트는 제2 스레드 세트와 상이하다. 제1 블록체인 블록 세트를 검색하는 단계 및 제2 블록체인 블록 세트를 검증하는 단계는 제1 스레드 세트 및 제2 스레드 세트를 이용하여 비동기적으로 수행된다.

Description

블록체인 블록들의 비동기 처리
본 명세서는, 예를 들어, 블록체인 기반 결함 허용(fault-tolerant) 시스템들을 구현하기 위해 이용될 수 있는, 블록체인 블록들의 비동기 처리에 관한 것이다.
합의 네트워크(consensus networks) 및/또는 블록체인 네트워크(blockchain networks)라고도 지칭될 수 있는, 분산 원장 시스템(distributed ledger system, DLS)들은, 참여하는 엔티티들이 데이터를 안전하게 그리고 변경할 수 없게 저장하는 것을 가능하게 한다. DLS들은 어떠한 특정 사용자 사례도 참조하지 않고 흔히 블록체인 네트워크들이라고 지칭된다. 블록체인 네트워크들의 유형들의 예들은 퍼블릭 블록체인 네트워크(public blockchain networks), 프라이빗 블록체인 네트워크(private blockchain networks), 및 컨소시엄 블록체인 네트워크(consortium blockchain networks)를 포함할 수 있다. 컨소시엄 블록체인 네트워크는, 합의 프로세스를 제어하는, 선택 엔티티들의 그룹을 위해 제공되고, 액세스 제어 계층을 포함한다.
일부 사용 사례들에서, 블록체인 시스템은 제3자 시스템들과 상호 작용할 필요가 있다. 제3자 시스템과 블록체인 시스템 간의 통신을 가능하게 하는 브리징 또는 브리지 디바이스를 갖는 것이 바람직하다. 그러한 상호 작용 시스템들에서는, 제3자 시스템과 블록체인 시스템 간의 통신을 위해 블록체인 블록들을 핸들링하는 높은 처리량 및 처리 효율성뿐만 아니라, 질서있는 통신을 보장하기 위한 결함 허용을 갖는 것도 바람직하다.
본 주제의 설명된 실시예들은 하나 이상의 특징을 단독으로 또는 조합하여 포함할 수 있다. 예를 들어, 일 실시예에서, 브리지 디바이스에 의해 수행되는 방법으로서, 상기 브리지 디바이스는 블록체인 네트워크의 블록체인 네트워크 노드에 통신적으로 링크되고, 상기 방법은: 상기 브리지 디바이스의 제1 스레드 세트를 이용하여 상기 블록체인 네트워크 노드로부터 제1 블록체인 블록 세트를 검색하는 단계; 상기 제1 블록체인 블록 세트를 상기 브리지 디바이스에 저장하는 단계; 및 상기 브리지 디바이스의 제2 스레드 세트를 이용하여 상기 브리지 디바이스에 저장되어 있는 제2 블록체인 블록 세트를 검증하는 단계를 포함하고; 상기 제1 스레드 세트는 상기 제2 스레드 세트와 상이하고; 상기 제1 블록체인 블록 세트를 검색하는 단계 및 상기 제2 블록체인 블록 세트를 검증하는 단계는 상기 제1 스레드 세트 및 상기 제2 스레드 세트를 이용하여 비동기적으로 수행된다. 일부 실시예들에서, 예를 들어, 상기 검색 동작이 완료되기를 기다리지 않고 상기 검증 동작을 개시하거나 달리 수행함으로써 상기 검증 동작은 상기 검색 동작과 비동기적으로 수행될 수 있다. 일부 실시예들에서, 상기 검증 동작을 상기 검색 동작과 비동기적으로 수행하는 것은 상기 검색 동작을 수행하기 전에, 후에, 또는 그와 병행하여 상기 검증 동작을 수행하는 것을 포함한다.
일부 실시예들에서, 이들 일반적인 그리고 특정한 실시예 중 하나 이상은 디바이스, 시스템, 방법, 또는 컴퓨터 판독가능 매체, 또는 디바이스들, 시스템들, 방법들, 및 컴퓨터 판독가능 매체의 임의의 조합을 이용하여 구현될 수 있다. 전술한 그리고 다른 설명된 실시예들은 각각, 옵션으로, 다음 실시예들의 일부 또는 전부를 포함하거나 아무것도 포함하지 않을 수 있다.
일부 실시예들에서, 상기 제1 블록체인 블록 세트는 제1 블록체인 블록 및 제2 블록체인 블록을 포함하고, 여기서 상기 제1 스레드 세트는 제1 스레드 및 제2 스레드를 포함한다. 상기 브리지 디바이스의 상기 제1 스레드 세트를 이용하여 상기 블록체인 네트워크 노드로부터 상기 제1 블록체인 블록 세트를 검색하는 단계는: 상기 브리지 디바이스의 상기 제2 스레드를 이용하여 상기 블록체인 네트워크 노드로부터 상기 제2 블록체인 블록을 검색하는 것과 병행하여 상기 브리지 디바이스의 상기 제1 스레드를 이용하여 상기 블록체인 네트워크 노드로부터 상기 제1 블록체인 블록을 검색하는 단계를 포함한다.
일부 실시예들에서, 상기 제2 블록체인 블록 세트는 제3 블록체인 블록 및 제4 블록체인 블록을 포함하고, 여기서 상기 제2 스레드 세트는 제3 스레드 및 제4 스레드를 포함한다. 상기 브리지 디바이스의 상기 제2 스레드 세트를 이용하여 상기 브리지 디바이스에 저장되어 있는 상기 제2 블록체인 블록 세트를 검증하는 단계는: 상기 브리지 디바이스의 상기 제4 스레드를 이용하여 상기 제4 블록체인 블록을 검증하는 것과 병행하여 상기 브리지 디바이스의 상기 제3 스레드를 이용하여 상기 제3 블록체인 블록을 검증하는 단계를 포함한다.
일부 실시예들에서, 상기 방법은 상기 브리지 디바이스의 데이터 저장소에 원격 높이 값 및 로컬 높이 값을 유지하는 단계를 더 포함한다. 상기 원격 높이 값은 블록체인 네트워크 노드 상에 저장되어 있는 블록체인 블록의 수를 지시하고, 상기 로컬 높이 값은 상기 브리지 디바이스에 저장되어 있는 그리고 상기 블록체인 네트워크 노드로부터 획득된 블록체인 블록의 수를 지시한다. 상기 브리지 디바이스의 상기 제1 스레드 세트를 이용하여 상기 블록체인 네트워크 노드로부터 상기 제1 블록체인 블록 세트를 검색하는 단계는: 상기 브리지 디바이스에 의해 상기 로컬 높이 값이 상기 원격 높이 값보다 작은지를 결정하는 단계; 및 상기 로컬 높이 값이 상기 원격 높이 값보다 작은 것으로 결정하는 것에 응답하여, 상기 블록체인 네트워크 노드로부터 상기 브리지 디바이스 상에 저장되어 있지 않은 적어도 하나의 블록체인 블록을 획득하는 단계를 포함한다.
일부 실시예들에서, 상기 방법은: 상기 블록체인 네트워크 노드로부터 상기 적어도 하나의 블록체인 블록을 획득하는 것에 응답하여, 상기 적어도 하나의 블록체인 블록을 상기 브리지 디바이스 상에 저장하는 단계; 및 상기 브리지 디바이스에 의해 상기 로컬 높이 값을 업데이트하는 단계를 더 포함한다.
일부 실시예들에서, 상기 방법은: 상기 로컬 높이 값이 상기 원격 높이 값보다 작지 않은 것으로 결정하는 것에 응답하여, 상기 블록체인 네트워크 노드로부터 블록체인 블록들을 획득하는 것을 억제하는 단계를 더 포함한다.
일부 실시예들에서, 상기 방법은: 상기 브리지 디바이스에 의해 상기 블록체인 네트워크 노드로부터 통지를 수신하는 단계 - 상기 통지는 상기 원격 높이 값을 지시함 -; 상기 브리지 디바이스에 의해 클라이언트 디바이스로부터 트랜잭션 요청을 수신하는 단계 - 상기 트랜잭션 요청은 상기 블록체인 네트워크 상에서 실행될 트랜잭션을 요청함 -; 상기 브리지 디바이스에 의해 상기 트랜잭션 요청을 상기 블록체인 네트워크 노드에 전송하는 단계; 및 상기 브리지 디바이스에 의해 상기 블록체인 네트워크 노드로부터 제2 통지를 수신하는 단계를 더 포함하고, 상기 제2 통지는 업데이트된 원격 높이 값을 지시하고, 여기서 상기 업데이트된 원격 높이 값은 상기 트랜잭션에 적어도 부분적으로 기초하여 상기 블록체인 네트워크 노드 상에 저장되어 있는 블록체인 블록의 수의 증가를 지시한다.
일부 실시예들에서, 상기 통지는 상기 블록체인 네트워크의 블록체인에 새로운 블록이 추가된 것을 지시하는 새로운 블록 통지를 포함하고, 상기 새로운 블록 통지는 상기 원격 높이 값이 증가되는 것을 지시한다.
일부 실시예들에서, 상기 브리지 디바이스에 의해 상기 블록체인 네트워크 노드로부터 상기 통지를 수신하는 단계는: 상기 블록체인 네트워크 노드에 의해 상기 브리지 디바이스에 푸싱되는 상기 통지를 수신하는 단계; 또는 상기 브리지 디바이스에 의해 상기 블록체인 네트워크 노드로부터 상기 통지를 풀링하는 단계 중 적어도 하나를 포함한다.
일부 실시예들에서, 상기 방법은 상기 브리지 디바이스의 데이터 저장소에 로컬 높이 값 및 체크 높이 값을 유지하는 단계를 더 포함한다. 상기 로컬 높이 값은 상기 브리지 디바이스 상에 저장되어 있는 그리고 상기 블록체인 네트워크 노드로부터 획득된 블록체인 블록의 수를 지시하고, 상기 체크 높이 값은 상기 브리지 디바이스에 의해 검증된 블록체인 블록의 수를 지시한다. 상기 브리지 디바이스의 제2 스레드 세트를 이용하여 상기 브리지 디바이스에 저장되어 있는 제2 블록체인 블록 세트를 검증하는 단계는: 상기 체크 높이 값이 상기 로컬 높이 값보다 작은지를 결정하는 단계; 및 상기 체크 높이 값이 상기 로컬 높이 값보다 작은 것으로 결정하는 것에 응답하여, 상기 브리지 디바이스에 저장되어 있는 그리고 상기 브리지 디바이스에 의해 검증되지 않은 블록체인 블록을 검증하는 단계를 포함한다.
일부 실시예들에서, 상기 브리지 디바이스에 저장되어 있는 그리고 상기 브리지 디바이스에 의해 검증되지 않은 블록체인 블록을 검증하는 단계는 상기 블록체인 블록 내의 하나 이상의 블록체인 트랜잭션과 트랜잭션 요청 간의 일관성을 결정하는 단계를 포함한다.
일부 실시예들에서, 상기 방법은: 상기 브리지 디바이스 상에 저장되어 있는 그리고 상기 브리지 디바이스에 의해 검증되지 않은 블록체인 블록을 검증하는 것에 응답하여, 상기 블록체인 블록이 신뢰성 있는 것으로 결정하는 단계; 및 상기 브리지 디바이스에 의해 상기 체크 높이 값을 업데이트하는 단계를 더 포함한다.
일부 실시예들에서, 상기 방법은: 상기 체크 높이 값이 상기 로컬 높이 값보다 작지 않은 것으로 결정하는 것에 응답하여, 상기 브리지 디바이스에 저장되어 있는 블록체인 블록들을 검증하는 것을 억제하는 단계를 더 포함한다.
일부 실시예들에서, 상기 방법은: 상기 브리지 디바이스에 의해 상기 브리지 디바이스 및 상기 블록체인 네트워크 노드를 포함하는 시스템에서의 시스템 결함을 검출하는 단계; 및 상기 시스템 결함을 검출하는 것에 응답하여, 상기 체크 높이 값에 기초하여 복구 프로세스를 수행하는 단계를 더 포함한다. 상기 복구 프로세스를 수행하는 단계는: 상기 로컬 높이 값을 상기 체크 높이 값과 동등하게 설정하는 단계; 및 상기 로컬 높이 값이 상기 블록체인 네트워크 노드 상에 저장되어 있는 블록체인 블록의 수를 지시하는 원격 높이 값보다 작은 것으로 결정하는 것에 응답하여, 상기 블록체인 네트워크 노드로부터 상기 브리지 디바이스 상에 저장되어 있지 않은 적어도 하나의 블록체인 블록을 획득하는 단계를 포함한다.
본 명세서에 따른 방법들은 본 명세서에서 설명된 실시예들 및 특징들의 임의의 조합을 포함할 수 있다는 것이 이해된다. 즉, 본 명세서에 따른 방법들은 본 명세서에서 구체적으로 설명된 실시예들 및 특징들의 조합들로 제한되지 않고, 제공된 실시예들 및 특징들의 임의의 조합도 포함한다.
본 명세서의 하나 이상의 실시예의 세부 사항들은 첨부 도면들 및 아래의 설명에서 설명된다. 본 명세서의 다른 특징들 및 이점들은 상세한 설명 및 도면들로부터, 그리고 청구항들로부터 명백할 것이다.
도 1은 본 명세서의 실시예들을 실행하기 위해 이용될 수 있는 환경의 예를 예시하는 다이어그램이다.
도 2는 본 명세서의 실시예들에 따른 아키텍처의 예를 예시하는 다이어그램이다.
도 3은 본 명세서의 실시예들에 따른 블록체인 기반 결함 허용 시스템의 예를 예시하는 다이어그램이다.
도 4는 본 명세서의 실시예들에 따른 도 3의 블록체인 기반 결함 허용 시스템에 저장된 커서 값들의 예들을 예시하는 다이어그램이다.
도 5는 본 명세서의 실시예들에 따라 실행될 수 있는 프로세스의 예를 예시하는 신호 흐름이다.
도 6a는 본 명세서의 실시예들에 따라 실행될 수 있는 블록체인 블록들의 비동기 처리를 위한 프로세스를 예시하는 흐름도이다.
도 6b는, 예를 들어, 본 명세서의 실시예들에 따라 실행될 수 있는 블록체인 기반 결함 허용 시스템을 구현하기 위해 이용될 수 있는, 블록체인 블록들의 비동기 처리를 위한 프로세스를 예시하는 흐름도이다.
도 7은 본 명세서의 실시예들에 따른 장치의 모듈들의 예를 예시하는 다이어그램이다.
다양한 도면들에서 유사한 참조 번호들 및 명칭들은 유사한 요소들을 지시한다.
본 명세서는, 예를 들어, 블록체인 기반 결함 허용 시스템을 구현하기 위한 블록체인 블록들의 비동기 처리를 위한 기술들을 설명한다. 이들 기술은 일반적으로, 예를 들어, 코디네이션된 처리 및 제어 능력들을 달성하기 위해, 브리지 디바이스를 이용하여 블록체인 시스템들과 제3자 시스템들을 연결하는 것을 수반한다.
본 명세서에서 설명된 기법들은 수 개의 기술적 효과들을 생성한다. 일부 실시예들에서, 브리지 디바이스는 블록체인 네트워크의 블록체인 네트워크 노드 및 클라이언트 디바이스에 통신적으로 링크된다(예를 들어, 하나 이상의 유선 또는 무선 통신 채널을 통해). 일부 실시예들에서, 브리지 디바이스는 클라이언트 디바이스가 블록체인 네트워크 노드로부터 블록체인 블록들을 검색하는 데 도움이 될 수 있다. 그에 따라, 클라이언트 디바이스는 검색된 블록체인 블록들을 로컬로 저장, 검증, 및 달리 처리할 수 있고, 블록체인 네트워크 내의 블록체인에 저장된 블록체인 블록들과 동기화될 수 있다.
일부 실시예들에서, 브리지 디바이스는 클라이언트 디바이스, 브리지 디바이스, 및 블록체인 네트워크의 코디네이션된 처리를 달성하면서 개선된 처리량 및 처리 효율성을 제공할 수 있다. 예를 들어, 브리지 디바이스는 클라이언트 디바이스와 블록체인 네트워크 간의 통신을 브리징하는 것, 블록체인 네트워크로부터 블록체인 블록들을 획득하는 것, 및 획득된 블록체인 블록들을 브리지 디바이스에서 검증하는 것 등과 같은 그의 기능들을 수행하기 위한 비동기 처리를 가능하게 하도록 설계될 수 있다. 예를 들어, 브리지 디바이스는 시스템에 의해 처리되는 블록체인 블록들과 연관된 커서 값들을 도입하고 유지함으로써 블록체인 블록들의 검증 동작과 검색 동작 간의 처리 의존성을 감소시키 수 있다. 결과적으로, 브리지 디바이스는 이들 동작을 분리하고 검색 동작이 완료되기를 기다리는 데 진행 지연 없이 이들을 비동기적으로 수행할 수 있다.
일부 실시예들에서, 브리지 디바이스는 멀티-스레드 처리 능력을 활용하여 상이한 스레드들을 이용하여 그의 기능들을 비동기적으로 수행할 수 있다. 브리지 디바이스의 하나 이상의 독립적인 스레드를 이용하여 브리지 디바이스의 기능들을 비동기적으로 수행하는 것은 브리지 디바이스의 처리 속도와 유연성을 개선하고, 클라이언트 디바이스와 블록체인 네트워크 노드 간의 통신의 처리량을 증가시키면서, 블록 관련 처리의 질서있는 실행을 유지하여 브리지 디바이스에 의해 저장된 그리고 클라이언트 디바이스와 블록체인 네트워크 노드 간에 통신되는 데이터의 데이터 보안 및 신뢰성을 향상시킬 수 있다.
일부 실시예들에서, 브리지 디바이스는 시스템 고장 또는 결함으로 인한 블록체인 기반 결함 허용 시스템의 이상들의 영향들을 완화함으로써 전체 시스템에 결함 허용을 제공할 수 있다. 일부 사례들에서, 시스템 고장 또는 결함(예를 들어, 블록체인 시스템의 디바이스들 간에 통신 연결이 손실될 수 있음)으로 인해, 블록체인 시스템(예를 들어, 클라이언트 디바이스와 브리지 디바이스)에 저장되어 있는 블록체인 데이터(예를 들어, 블록체인 블록들)는 오류가 생기거나 손실되기 쉽다. 브리지 디바이스는, 예를 들어, 시스템에 의해 처리되는 블록체인 블록들과 연관된 커서 값들에 따라 그의 기능들을 수행함으로써 블록체인 블록들을 질서있는 방식으로 복원하는 데 도움이 될 수 있다. 따라서, 브리지 디바이스는 브리지 디바이스에 의해 저장된 그리고 클라이언트 디바이스와 블록체인 네트워크 노드 간에 통신되는 블록체인 블록들의 신뢰성을 보장하는 결함 허용을 제공할 수 있다.
본 명세서의 실시예들에 대한 추가 컨텍스트를 제공하기 위해, 그리고 위에서 소개된 바와 같이, 합의 네트워크들(예를 들어, 피어-투-피어 노드들로 구성됨), 및 블록체인 네트워크들이라고도 지칭될 수 있는, 분산 원장 시스템(DLS)들은, 참여하는 엔티티들이 안전하게, 그리고 변경할 수 없게 트랜잭션을 수행하고, 데이터를 저장하는 것을 가능하게 한다. 블록체인이라는 용어는 일반적으로 특정 네트워크들, 및/또는 사용 사례들과 연관되지만, 본 명세서에서 블록체인은 일반적으로 특정 사용 사례에 관계없이 DLS를 지칭하기 위해 이용된다.
블록체인은 트랜잭션들이 변경될 수 없는 방식으로 트랜잭션들을 저장하는 데이터 구조이다. 따라서, 블록체인 상에 기록된 트랜잭션들은 믿을 만하고 신뢰성 있다. 블록체인은 하나 이상의 블록을 포함한다. 체인 내의 각각의 블록은 이전 블록의 암호학적 해시를 포함함으로써 체인에서 바로 앞의 이전 블록에 링크된다. 각각의 블록은 또한 타임스탬프, 그 자체의 암호학적 해시, 및 하나 이상의 트랜잭션을 포함한다. 블록체인 네트워크의 노드들에 의해 이미 검증된 트랜잭션들은 해싱되고 머클 트리(Merkle tree) 내에 인코딩된다. 머클 트리는 트리의 리프 노드들에 있는 데이터가 해싱되고, 트리의 각각의 브랜치 내의 모든 해시들이 브랜치의 루트에서 연결되는 데이터 구조이다. 이 프로세스는, 트리 내의 모든 데이터를 대표하는 해시를 저장하는, 전체 트리의 루트까지 트리를 따라 계속된다. 트리에 저장된 트랜잭션의 것이라고 주장하는 해시는 그것이 트리의 구조와 일치하는지를 결정함으로써 신속하게 검증될 수 있다.
블록체인은 트랜잭션들을 저장하기 위한 분산된 또는 적어도 부분적으로 분산된 데이터 구조인 반면, 블록체인 네트워크는 트랜잭션들을 브로드캐스팅, 검증, 및 유효성 검사하는 것 등에 의해 하나 이상의 블록체인을 관리, 업데이트, 및 유지하는 컴퓨팅 노드들의 네트워크이다. 위에서 소개된 바와 같이, 블록체인 네트워크는 퍼블릭 블록체인 네트워크, 프라이빗 블록체인 네트워크, 또는 컨소시엄 블록체인 네트워크로 제공될 수 있다. 본 명세서의 실시예들은 컨소시엄 블록체인 네트워크를 참조하여 본 명세서에서 더 상세하게 설명된다. 그러나, 본 명세서의 실시예들은 임의의 적절한 유형의 블록체인 네트워크에서 실현될 수 있다는 것이 고려된다.
일반적으로, 컨소시엄 블록체인 네트워크는 참여하는 엔티티들 간에 비공개이다. 컨소시엄 블록체인 네트워크에서, 합의 프로세스는, 합의 노드들이라고도 지칭될 수 있는, 권한 있는 노드들의 세트에 의해 제어되고, 하나 이상의 합의 노드는 각각의 엔티티(예를 들어, 금융 기관, 보험 회사)에 의해 운영된다. 예를 들어, 10개의 엔티티(예를 들어, 금융 기관, 보험 회사)의 컨소시엄이 컨소시엄 블록체인 네트워크를 운영할 수 있고, 그 각각은 컨소시엄 블록체인 네트워크 내의 적어도 하나의 노드를 운영한다.
일부 예들에서, 컨소시엄 블록체인 네트워크 내에는, 모든 노드들에 걸쳐 복제되는 블록체인으로서 글로벌 블록체인이 제공된다. 즉, 모든 합의 노드들은 글로벌 블록체인에 대하여 완벽한 상태 합의에 있다. 합의(예를 들어, 블록체인에 블록을 추가하는 것에 합의)를 달성하기 위해, 합의 프로토콜이 컨소시엄 블록체인 네트워크 내에 구현된다. 예를 들어, 컨소시엄 블록체인 네트워크는, 아래에 더 상세하게 설명되는, 프랙티컬 비잔틴 결함 허용(practical Byzantine fault tolerance, PBFT) 합의를 구현할 수 있다.
도 1은 본 명세서의 실시예들을 실행하기 위해 이용될 수 있는 환경(100)의 예를 예시하는 다이어그램이다. 일부 예들에서, 환경(100)은 엔티티들이 컨소시엄 블록체인 네트워크(102)에 참여하는 것을 가능하게 한다. 환경(100)은 컴퓨팅 디바이스들(106, 108), 및 네트워크(110)를 포함한다. 일부 예들에서, 네트워크(110)는 로컬 영역 네트워크(LAN), 광역 네트워크(WAN), 인터넷, 또는 이들의 조합을 포함하고, 웹 사이트들, 사용자 디바이스들(예를 들어, 컴퓨팅 디바이스들), 및 백엔드 시스템들을 연결한다. 일부 예들에서, 네트워크(110)는 유선 및/또는 무선 통신 링크를 통해 액세스될 수 있다. 일부 예들에서, 네트워크(110)는 컨소시엄 블록체인 네트워크(102)와의 그리고 그 내부에서의 통신을 가능하게 한다. 일반적으로 네트워크(110)는 하나 이상의 통신 네트워크를 나타낸다. 일부 경우들에서, 컴퓨팅 디바이스들(106, 108)은 클라우드 컴퓨팅 시스템(도시되지 않음)의 노드들일 수 있거나, 각각의 컴퓨팅 디바이스(106, 108)는 네트워크에 의해 상호 연결되고 분산 처리 시스템으로서 기능하는 다수의 컴퓨터들을 포함하는 별개의 클라우드 컴퓨팅 시스템일 수 있다.
묘사된 예에서, 컴퓨팅 디바이스들(106, 108)은 각각 컨소시엄 블록체인 네트워크(102) 내의 노드로서의 참여를 가능하게 하는 임의의 적절한 컴퓨팅 시스템을 포함할 수 있다. 컴퓨팅 디바이스들의 예들는 서버, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨팅 디바이스, 및 스마트폰을 포함하지만, 이에 제한되지는 않는다. 일부 예들에서, 컴퓨팅 디바이스들(106, 108)은 컨소시엄 블록체인 네트워크(102)와 상호 작용하기 위한 하나 이상의 컴퓨터 구현 서비스를 호스팅한다. 예를 들어, 컴퓨팅 디바이스(106)는 제1 엔티티(예를 들어, 사용자 A)가 하나 이상의 다른 엔티티(예를 들어, 다른 사용자들)와의 그의 트랜잭션을 관리하기 위해 이용하는 트랜잭션 관리 시스템과 같은, 제1 엔티티의 컴퓨터 구현 서비스들을 호스팅할 수 있다. 컴퓨팅 디바이스(108)는 제2 엔티티(예를 들어, 사용자 B)가 하나 이상의 다른 엔티티(예를 들어, 다른 사용자들)와의 그의 트랜잭션을 관리하기 위해 이용하는 트랜잭션 관리 시스템과 같은, 제2 엔티티의 컴퓨터 구현 서비스들을 호스팅할 수 있다. 도 1의 예에서, 컨소시엄 블록체인 네트워크(102)는 노드의 피어-투-피어 네트워크로서 표현되고, 컴퓨팅 디바이스들(106, 108)은, 컨소시엄 블록체인 네트워크(102)에 참여하는, 제1 엔티티 및 제2 엔티티 각각의 노드들을 제공한다.
도 2는 본 명세서의 실시예들에 따른 아키텍처(200)의 예를 예시하는 다이어그램이다. 예시적인 개념 아키텍처(200)는 참가자 A, 참가자 B, 및 참가자 C에 각각 대응하는 참가자 시스템들(202, 204, 206)을 포함한다. 각각의 참가자(예를 들어, 사용자, 기업)는 복수의 노드(214) - 이들 중 일부는 블록체인(216)에 변경할 수 없게 정보를 기록함 - 를 포함하는 피어-투-피어 네트워크로서 제공되는 블록체인 네트워크(212)에 참여한다. 블록체인 네트워크(212) 내에 단일 블록체인(216)이 개략적으로 묘사되어 있지만, 본 명세서에서 더 상세하게 설명된 바와 같이, 블록체인(216)의 다수의 사본이 제공되고, 블록체인 네트워크(212)에 걸쳐 유지된다.
묘사된 예에서, 각각의 참가자 시스템(202, 204, 206)은 각각 참가자 A, 참가자 B, 및 참가자 C에 의해 또는 그를 대신하여 제공되고, 블록체인 네트워크 내의 각의 노드(214)로서 기능한다. 본 명세서에서 사용된, 노드는 일반적으로 블록체인 네트워크(212)에 연결되는 개별 시스템(예를 들어, 컴퓨터, 서버)을 지칭하고, 각각의 참가자가 블록체인 네트워크에 참여하는 것을 가능하게 한다. 도 2의 예에서는, 참가자가 각각의 노드(214)에 대응한다. 그러나, 참가자가 블록체인 네트워크(212) 내의 다수의 노드(214)를 운영할 수 있고/있거나 다수의 참가자가 노드(214)를 공유할 수 있다는 것이 고려된다. 일부 예들에서, 참가자 시스템들(202, 204, 206)은 프로토콜(예를 들어, HTTPS(hypertext transfer protocol secure))을 이용하여 및/또는 RPC(remote procedure call)들을 이용하여 블록체인 네트워크(212)와 또는 블록체인 네트워크(212)를 통해 통신한다.
노드들(214)은 블록체인 네트워크(212) 내에서 다양한 참여 정도를 가질 수 있다. 예를 들어, 일부 노드들(214)은 합의 프로세스에 참여할 수 있는(예를 들어, 블록체인(216)에 블록들을 추가하는 마이너(miner) 노드들로서) 반면, 다른 노드들(214)은 합의 프로세스에 참여하지 않는다. 다른 예로서, 일부 노드들(214)은 블록체인(216)의 완전한 사본을 저장하는 반면, 다른 노드들(214)은 블록체인(216)의 부분들의 사본들만을 저장한다. 예를 들어, 데이터 액세스 권한들은 각각의 참가자가 그 각각의 시스템 내에 저장하는 블록체인 데이터를 제한할 수 있다. 도 2의 예에서, 참가자 시스템들(202, 204 및 206)은 블록체인(216)의 각각의 완전한 사본들(216', 216'', 및 216''')을 저장한다.
블록체인(예를 들어, 도 2의 블록체인(216))은 블록체인들의 체인으로 구성되고, 각각의 블록은 데이터를 저장한다. 데이터의 예들은 둘 이상의 참가자 간의 트랜잭션을 대표하는 트랜잭션 데이터를 포함한다. 본 명세서에서는 트랜잭션들이 비제한적인 예로서 사용되지만, 임의의 적절한 데이터가 블록체인에 저장될 수 있다는 것이 고려된다(예를 들어, 문서, 이미지, 비디오, 오디오). 트랜잭션의 예들은 가치 있는 어떤 것(예를 들어, 자산, 제품, 서비스, 화폐)의 교환들을 포함할 수 있지만, 이에 제한되지는 않는다. 트랜잭션 데이터는 블록체인 내에 변경할 수 없게 저장된다. 즉, 트랜잭션 데이터는 변경될 수 없다.
트랜잭션 데이터는, 블록에 저장하기 전에, 해싱된다. 해싱은 트랜잭션 데이터(문자열 데이터로서 제공됨)를 고정 길이 해시 값(또한 문자열 데이터로서 제공됨)으로 변환하는 프로세스이다. 트랜잭션 데이터를 획득하기 위해 해시 값을 언해싱(un-hash)하는 것은 불가능하다. 해싱은 트랜잭션 데이터의 약간의 변경조차 완전히 상이한 해시 값을 야기하도록 보장한다. 또한, 그리고 위에 언급된 바와 같이, 해시 값은 고정 길이를 갖는다. 즉, 트랜잭션 데이터의 크기에 관계없이 해시 값의 길이는 고정된다. 해싱은 해시 값을 생성하기 위해 해시 함수를 통해 트랜잭션 데이터를 처리하는 것을 포함한다. 해시 함수의 예는, 256-비트 해시 값들을 출력하는, SHA(secure hash algorithm)-256을 포함하지만, 이에 제한되지는 않는다.
다수의 트랜잭션들의 트랜잭션 데이터가 해싱되어 블록에 저장된다. 예를 들어, 2개의 트랜잭션의 해시 값들이 제공되고, 자체적으로 해싱되어 다른 해시를 제공한다. 이 프로세스는, 모든 트랜잭션들이 블록에 저장되도록, 단일 해시 값이 제공될 때까지 반복된다. 이 해시 값은 머클 루트 해시라고 지칭되고, 블록의 헤더에 저장된다. 트랜잭션들 중 임의의 것의 변경은 그의 해시 값의 변경을 야기하고, 궁극적으로, 머클 루트 해시의 변경을 야기할 것이다.
블록들은 합의 프로토콜을 통해 블록체인에 추가된다. 블록체인 네트워크 내의 다수의 노드들이 합의 프로토콜에 참여하고, 블록체인에 블록이 추가되게 하는 작업을 수행한다. 그러한 노드들은 합의 노드들이라고 지칭된다. 위에서 소개된, PBFT는 합의 프로토콜의 비제한적인 예로서 사용된다. 합의 노드들은 합의 프로토콜을 실행하여 블록체인에 트랜잭션들을 추가하고, 블록체인 네트워크의 전체 상태를 업데이트한다.
더 상세하게는, 합의 노드는 블록 헤더를 생성하고, 블록 내의 모든 트랜잭션들을 해싱하고, 블록 내의 모든 트랜잭션들에 대해 단일 해시 값이 제공될 때까지(머클 루트 해시) 해시 값을 쌍으로 결합하여 추가 해시 값들을 생성한다. 이 해시는 블록 헤더에 추가된다. 합의 노드는 또한 블록체인 내의 가장 최근 블록(즉, 블록체인에 추가된 마지막 블록)의 해시 값을 결정한다. 합의 노드는 또한 논스(nonce) 값, 및 타임스탬프를 블록 헤더에 추가한다.
일반적으로, PBFT는 비잔틴 결함들(예를 들어, 오작동 노드들, 악성 노드들)을 허용하는 프랙티컬 비잔틴 상태 머신 복제를 제공한다. 이는 결함들이 발생할 것이라고 가정(예를 들어, 독립적인 노드 고장들, 및/또는 합의 노드들에 의해 전송된 조작된 메시지들의 존재를 가정)함으로써 PBFT에서 달성된다. PBFT에서, 합의 노드들은 기본 합의 노드, 및 백업 합의 노드들을 포함하는 시퀀스로 제공된다. 기본 합의 노드는 주기적으로 변경되고, 블록체인 네트워크 내의 모든 합의 노드들이 블록체인 네트워크의 월드 스테이트(world state)에 대한 합의에 도달하는 것에 의해 블록체인에 트랜잭션들이 추가된다. 이 프로세스에서, 합의 노드들 간에 메시지들이 송신되고, 각각의 합의 노드들은 지정된 피어 노드로부터 메시지가 수신되는 것을 입증하고, 송신 중에 메시지가 수정되지 않은 것을 검증한다.
PBFT에서, 합의 프로토콜은 모든 합의 노드들이 동일한 상태에서 시작하는 다수의 단계들로 제공된다. 우선, 클라이언트는 서비스 동작을 호출(예를 들어, 블록체인 네트워크 내에서 트랜잭션을 실행)하기 위해 기본 합의 노드에 요청을 전송한다. 기본 합의 노드는, 요청을 수신하는 것에 응답하여, 백업 합의 노드들에 요청을 멀티캐스트한다. 백업 합의 노드들은 요청을 실행하고, 각각은 클라이언트에 응답을 전송한다. 클라이언트는 임계 수의 응답들이 수신될 때까지 기다린다. 일부 예들에서, 클라이언트는 f+1개의 응답이 수신되는 것을 기다리는데, 여기서 f는 블록체인 네트워크 내에서 허용될 수 있는 결함 있는 합의 노드들의 최대 수이다. 최종 결과는 충분한 수의 합의 노드들이 블록체인에 추가될 레코드의 순서에 대한 합의에 도달하고, 레코드가 수락되거나 거부된다는 것이다.
일부 블록체인 네트워크들에서는, 트랜잭션들의 프라이버시를 유지하기 위해 암호학이 구현된다. 예를 들어, 2개의 노드가 트랜잭션을 비공개로 유지하여, 블록체인 네트워크 내의 다른 노드들이 트랜잭션의 세부 사항들을 식별할 수 없도록 하기를 원한다면, 해당 노드들은 트랜잭션 데이터를 암호화할 수 있다. 암호학의 예는 대칭 암호화, 및 비대칭 암호화를 포함하지만, 이에 제한되지는 않는다. 대칭 암호화는 암호화(평문으로부터 암호문을 생성)와 해독(암호문으로부터 평문을 생성) 양쪽 모두에 단일 키를 사용하는 암호화 프로세스를 지칭한다. 대칭 암호화에서는, 다수의 노드들에 동일한 키가 이용 가능하므로, 각각의 노드는 트랜잭션 데이터를 암호화/해독할 수 있다.
비대칭 암호화는 각각이 개인 키, 및 공개 키를 포함하는 키 쌍들을 사용하고, 개인 키는 각각의 노드에만 알려지고, 공개 키는 블록체인 네트워크 내의 임의의 또는 모든 다른 노드들에 알려진다. 노드는 다른 노드의 공개 키를 이용하여 데이터를 암호화할 수 있고, 암호화된 데이터는 다른 노드의 개인 키를 이용하여 해독할 수 있다. 예를 들어, 그리고 다시 도 2를 참조하면, 참가자 A는 참가자 B의 공개 키를 이용하여 데이터를 암호화하고, 암호화된 데이터를 참가자 B에 전송할 수 있다. 참가자 B는 그의 개인 키를 이용하여 암호화된 데이터(암호문)를 해독하고 원본 데이터(평문)를 추출할 수 있다. 노드의 공개 키를 이용하여 암호화된 메시지들은 노드의 개인 키를 사용해서만 해독할 수 있다.
비대칭 암호화는, 트랜잭션의 참가자들이 트랜잭션의 다른 참가자들뿐만 아니라 트랜잭션의 유효성을 확인하는 것을 가능하게 하는, 디지털 서명을 제공하기 위해 이용된다. 예를 들어, 노드는 메시지에 디지털 서명할 수 있고, 다른 노드는 참가자 A의 디지털 서명에 기초하여 메시지가 해당 노드에 의해 전송된 것을 확인할 수 있다. 디지털 서명들은 또한 메시지들이 전송 중에 변경되지 않도록 보장하기 위해 이용될 수 있다. 예를 들어, 그리고 다시 도 2를 참조하면, 참가자 A는 참가자 B에 메시지를 전송하려고 한다. 참가자 A는 메시지의 해시를 생성한 다음, 그의 개인 키를 이용하여, 해시를 암호화하여 암호화된 해시로서 디지털 서명을 제공한다. 참가자 A는 메시지에 디지털 서명을 추가하고, 디지털 서명이 있는 메시지를 참가자 B에 전송한다. 참가자 B는 참가자 A의 공개 키를 이용하여 디지털 서명을 해독하고, 해시를 추출한다. 참가자 B는 메시지를 해싱하고 해시들을 비교한다. 해시들이 동일하면, 참가자 B는 메시지가 실제로 참가자 A로부터의 것이고, 변경되지 않은 것을 확인할 수 있다.
도 3은 본 명세서의 실시예들에 따른 시스템(300)의 예를 예시하는 다이어그램이다. 시스템(300)은 블록체인 기반 결함 허용 시스템을 구현한다. 도시된 바와 같이, 시스템(300)은 클라이언트 디바이스(302), 브리지 디바이스들(304a-b), 및 블록체인 네트워크 노드(306)를 포함한다.
클라이언트 디바이스(302)는, 예를 들어, 본 명세서에서 설명된 방법들을 수행하도록 프로그래밍된 임의의 적합한 컴퓨터, 모듈, 서버, 또는 컴퓨팅 요소를 포함할 수 있다. 일부 실시예들에서, 클라이언트 디바이스(302)는 개인이 컴퓨터 네트워크를 통해 전자 트랜잭션들을 할 수 있게 하는 전자 디바이스 또는 온라인 서비스를 포함하는 디지털 지갑 디바이스 또는 시스템일 수 있다. 예를 들어, 개인의 은행 계좌가 디지털 지갑 디바이스에 링크될 수 있다. 운전 면허증, 의료 카드, 암호학적 키와 같은 다른 신원 정보도 디지털 지갑 디바이스 상에 저장될 수 있다.
일부 실시예들에서, 클라이언트 디바이스(302)는 브리지 디바이스(예를 들어, 브리지 디바이스(304a))가 클라이언트 디바이스(302)와 통신할 수 있게 하는 인터페이스를 포함할 수 있다. 일부 실시예들에서, 클라이언트 디바이스(302)의 인터페이스는 클라이언트 디바이스(302)에 의해 구현 및/또는 확장될 수 있는 그리고 브리지 디바이스(예를 들어, 브리지 디바이스(304a))가 클라이언트 디바이스(302)에 데이터를 전송할 수 있게 하는 서비스 제공자 인터페이스(SPI)일 수 있다. 일부 실시예들에서, SPI는 브리지 디바이스가 정의하는 공용 인터페이스들 및 추상 클래스들의 세트를 포함할 수 있다. 일부 실시예들에서, SPI는 클라이언트 디바이스(302)가 목표를 달성하기 위해 준수할 필요가 있는 표준 또는 프로토콜을 지정할 수 있다. 일부 실시예들에서, 클라이언트 디바이스(302)는 클라이언트 디바이스(302)의 SPI를 통해 트랜잭션 요청(예를 들어, 자금 이체의 요청)을 브리지 디바이스에 전송하고 브리지 디바이스로부터 요청 결과를 수신할 수 있다.
브리지 디바이스들(304a-b)은, 예를 들어, 본 명세서에서 설명된 방법들을 수행하도록 프로그래밍된 임의의 적합한 컴퓨터, 모듈, 서버, 또는 컴퓨팅 요소를 포함할 수 있다. 일반적으로, 브리지 디바이스들(304a-b)은 제3자 시스템들(예를 들어, 클라이언트 디바이스(302))과 블록체인 시스템들(예를 들어, 블록체인 네트워크 노드(306)) 간의 통신을 가능하게 하는 브리징 기능들을 제공한다. 일부 예들에서, 브리지 디바이스들(304a-b)은 블록체인 네트워크 노드(306)로부터 리소스들(예를 들어, 블록체인 데이터)을 찾는 클라이언트 디바이스(302)로부터의 요청들을 핸들링하기 위한 중재자들로서의 역할을 하는 프록시 서버들일 수 있다. 도시된 바와 같이, 브리지 디바이스(304a)는 클라이언트 디바이스(302) 및 블록체인 네트워크 노드(306)에 통신적으로 링크된다(예를 들어, 하나 이상의 유선 또는 무선 통신 채널을 통해). 일부 실시예들에서, 브리지 디바이스는 클라이언트 디바이스(302)의 컴포넌트 또는 모듈로서 구현될 수 있다.
일부 실시예들에서, 브리지 디바이스(예를 들어, 브리지 디바이스(304a))는 클라이언트 디바이스(302)가 브리지 디바이스와 통신하고 블록체인 네트워크에 추가 액세스할 수 있게 하는 인터페이스를 포함할 수 있다. 일부 실시예들에서, 브리지 디바이스(304a)의 인터페이스는 클라이언트 디바이스(302)에 노출되는 그리고 클라이언트 디바이스(302)에 의해 브리지 디바이스(304a)와 통신하고 블록체인 네트워크 노드(306)를 통해 블록체인 네트워크에 추가 액세스하기 위해 이용될 수 있는 애플리케이션 프로그래밍 인터페이스(API)를 포함할 수 있다. 브리지 디바이스의 API는 클라이언트 디바이스(302)가 액세스할 수 있는 서브루틴들, 통신 프로토콜들, 및 방법들의 세트를 포함할 수 있다. 일부 실시예들에서, 브리지 디바이스(예를 들어, 브리지 디바이스(304a))는 브리지 디바이스의 API를 통해 클라이언트 디바이스(302)로부터 트랜잭션 요청을 수신하고, 클라이언트 디바이스(302)의 SPI를 통해 클라이언트 디바이스(302)에 요청 응답을 제공할 수 있다.
일부 실시예들에서, 시스템(300)은 다수의 브리지 디바이스들(304a-b)을 포함하고, 브리지 디바이스들(304a-b)은 미리 정의된 통신 프로토콜을 준수함으로써 서로 통신할 수 있다. 일부 실시예들에서, 브리지 디바이스들(304a-b) 각각은 각각의 블록체인 네트워크 노드에 통신적으로 링크될 수 있다. 도시된 바와 같이, 브리지 디바이스(304a)는 블록체인 네트워크 노드(306)에 통신적으로 링크된다.
일부 실시예들에서, 블록체인 네트워크 노드(306)는 블록체인 네트워크의 합의 노드 또는 비-합의 노드일 수 있다. 일부 실시예들에서, 브리지 디바이스(304b)는 블록체인 네트워크의 다른 블록체인 네트워크 노드(도시되지 않음)에 링크될 수 있다. 일부 실시예들에서, 브리지 디바이스들(304a-b) 각각은 클라이언트 디바이스(302)로부터의 트랜잭션 요청을 블록체인 트랜잭션으로 변환하고 블록체인 트랜잭션을 통신적으로 링크된 블록체인 네트워크 노드에 제출할 수 있다. 예를 들어, 브리지 디바이스(예를 들어, 브리지 디바이스(304a))는 블록체인 네트워크 노드(306) 상에서 실행될 스마트 계약에 대한 계약 호출을 하여 클라이언트 디바이스(302)로부터의 트랜잭션 요청에 기초하여 블록체인 트랜잭션을 생성할 수 있다.
일부 실시예들에서, 브리지 디바이스들(304a-b) 각각은 링크된 블록체인 네트워크 노드로부터 블록체인 블록들을 검색할 수 있다. 일부 실시예들에서, 브리지 디바이스(예를 들어, 브리지 디바이스(304a))는 블록체인 네트워크 노드들(예를 들어, 블록체인 네트워크 노드(306))에 의해 브리지 디바이스에 푸싱되는 블록체인 블록들을 수신할 수 있다. 예를 들어, 블록체인 네트워크 노드(306)는 브리지 디바이스(304a)의 가입에 기초하여 블록체인 블록들을 주기적으로 브리지 디바이스(304a)에 푸싱할 수 있다. 일부 실시예들에서, 브리지 디바이스(예를 들어, 브리지 디바이스(304a))는, 예를 들어, 요구에 따라, 블록체인 네트워크 노드들(예를 들어, 블록체인 네트워크 노드(306))로부터 블록체인 블록들을 풀링할 수 있다. 예를 들어, 브리지 디바이스(304a)는 주기적으로 또는 때때로 블록체인 네트워크 노드(306)에 블록체인 블록들을 요청할 수 있다.
일부 실시예들에서, 브리지 디바이스들(304a-b)은 블록체인 네트워크 노드로부터 검색된 블록체인 블록들을 검증하여 블록체인 블록이 신뢰성 있는지를 결정할 수 있다. 일부 실시예들에서, 브리지 디바이스는 블록체인 블록들에 기록된 트랜잭션 데이터를 클라이언트 디바이스에 의해 브리지 디바이스에 전송되는 트랜잭션 요청에 포함된 데이터와 비교함으로써 블록체인 블록들을 검증할 수 있다. 일부 실시예들에서, 브리지 디바이스는 블록체인 블록 내의 블록체인 트랜잭션들의 해시 값에 기초하여 블록체인 블록을 검증할 수 있다. 예를 들어, 블록체인 블록은 블록체인 트랜잭션 및 블록체인 트랜잭션의 제1 해시 값을 포함할 수 있다. 브리지 디바이스는 블록체인 블록으로부터 블록체인 트랜잭션을 획득하고 블록체인 트랜잭션의 제2 해시 값을 계산할 수 있다. 브리지 디바이스는 제2 해시 값을 제1 해시 값과 비교할 수 있다. 2개의 해시 값이 매칭하는 것으로 결정되면, 브리지 디바이스는 블록체인 블록 내의 블록체인 트랜잭션이 변경되지 않았고 블록체인 블록이 신뢰성 있는 블록인 것으로 결정할 수 있다.
일부 실시예들에서, 브리지 디바이스는 시스템에 의해 처리되는 블록체인 블록들과 연관된 3개의 커서 값을 유지할 수 있다. 일부 실시예들에서, 이들 커서 값은 3개의 카운터로서 구현되고 브리지 디바이스의 데이터 저장소(예를 들어, 메모리)에 저장된다. 일부 실시예들에서, 3개의 커서 값은 블록체인 네트워크 노드(예를 들어, 블록체인 네트워크 노드(306)) 상에 저장되어 있는 블록체인 블록의 수를 지시하는 제1 값, 브리지 디바이스(예를 들어, 브리지 디바이스(304a)) 상에 저장되어 있는 블록체인 블록의 수를 지시하는 제2 값, 및 브리지 디바이스에 의해 검증된 블록체인 블록의 수를 지시하는 제3 값을 포함한다.
도 4는 본 명세서의 실시예들에 따른 도 3의 블록체인 기반 결함 허용 시스템에 저장된 커서 값들의 예들을 예시하는 다이어그램(400)이다. 도시된 바와 같이, 브리지 디바이스(예를 들어, 브리지 디바이스(304a))는 통신적으로 링크된 블록체인 네트워크 노드(예를 들어, 블록체인 블록들(408a-d)) 상에 저장되어 있는 블록체인 블록의 수를 지시하는 원격 높이 값(402), 브리지 디바이스(예를 들어, 블록체인 블록들(408a-c)) 상에 저장되어 있는 블록체인 블록의 수를 지시하는 로컬 높이 값(404), 및 브리지 디바이스(예를 들어, 블록체인 블록(408a))에 의해 검증된 블록체인 블록의 수를 지시하는 체크 높이 값(406)을 유지할 수 있다.
일부 실시예들에서, 브리지 디바이스는 블록체인 네트워크 노드로부터 원격 높이 값(402)을 지시하는 통지를 수신할 수 있다. 일부 실시예들에서, 통지는 블록체인 네트워크 노드 상에 저장되어 있는 블록체인 블록의 총 수를 지시하는 원격 높이 값(402)을 포함할 수 있다. 일부 실시예들에서, 통지는 블록체인 네트워크 노드의 블록체인에 새로운 블록이 추가된 것을 지시하는 새로운 블록 통지를 포함할 수 있다. 예를 들어, 새로운 블록 통지는 원격 높이 값(402)이 1 증가한 것을 지시할 수 있다.
일부 실시예들에서, 브리지 디바이스는 로컬 높이 값(404)이 원격 높이 값(402)보다 작은지를 결정할 수 있다. 일부 실시예들에서, 로컬 높이 값(404)이 원격 높이 값(402)보다 작은 것으로 결정되면, 브리지 디바이스는 블록체인 네트워크 노드로부터 블록체인 블록들을 검색할 수 있다. 일부 실시예들에서, 브리지 디바이스는 브리지 디바이스(304a) 상에 저장되지 않은 하나 이상의 블록체인 블록을 블록체인 네트워크 노드로부터 검색할 수 있다. 예를 들어, 도 4를 참조하면, 브리지 디바이스는 블록체인 블록들(408a-c)이 브리지 디바이스 상에 저장되어 있고 로컬 높이 값(404)이 원격 높이 값(402)보다 1 작은 것으로 결정할 수 있다. 결정에 응답하여, 브리지 디바이스는 블록체인 네트워크 노드로부터 블록체인 블록(408d)을 검색할 수 있다. 일부 실시예들에서, 브리지 디바이스는, 예를 들어, 앞서 설명된 바와 같은 풀 또는 푸시 모드에서, 블록체인 네트워크 노드로부터 블록체인 블록들을 검색할 수 있다. 일부 실시예들에서, 브리지 디바이스는 블록체인 네트워크 노드로부터 블록체인 블록들을 검색한 후에 로컬 높이 값(404)을 업데이트할 수 있다. 예를 들어, 브리지 디바이스가 블록체인 네트워크 노드로부터 하나의 블록체인 블록을 획득하면, 브리지 디바이스는 로컬 높이 값(404)을 1 증가시킴으로써 업데이트할 수 있다. 일부 실시예들에서, 브리지 디바이스는 로컬 높이 값(404)이 원격 높이 값(402)과 동등할 때까지 계속해서 블록체인 네트워크 노드로부터 블록체인 블록들을 검색하고 로컬 높이 값(404)을 업데이트할 수 있다.
일부 실시예들에서, 로컬 높이 값(404)이 원격 높이 값(402)보다 작지 않은 것으로 결정되면, 브리지 디바이스는 블록체인 네트워크 노드로부터 블록체인 블록들을 검색하는 것을 중지하거나 억제할 수 있다. 예를 들어, 로컬 높이 값(404)이 원격 높이 값(402)과 동등하다면, 브리지 디바이스는 블록체인 네트워크 노드로부터 블록체인 블록들을 검색하는 것을 억제할 수 있다.
일부 실시예들에서, 브리지 디바이스는 체크 높이 값(406)이 로컬 높이 값(404)보다 작은지를 결정할 수 있다. 체크 높이 값(406)이 로컬 높이 값(404)보다 작은 것으로 결정되면, 브리지 디바이스는 브리지 디바이스 상에 저장되어 있는 그리고 브리지 디바이스에 의해 검증되지 않은 블록체인 블록을 검증할 수 있다. 예를 들어, 도 4를 참조하면, 브리지 디바이스는 블록체인 블록(408a)이 검증되었고 체크 높이 값(406)이 로컬 높이 값(404)보다 2 작은 것으로 결정할 수 있다. 결정에 응답하여, 브리지 디바이스는 블록체인 블록들(408b-c)을 검증할 수 있다.
일부 실시예들에서, 브리지 디바이스는 블록체인 블록들을 검증하여 블록체인 블록이 신뢰성 있는지를 결정한다. 일부 실시예들에서, 브리지 디바이스는 블록체인 블록에 기록된 트랜잭션 데이터를 클라이언트에 의해 브리지 디바이스에 전송되는 트랜잭션 요청에 포함된 데이터와 비교함으로써 블록체인 블록들을 검증한다. 예를 들어, 클라이언트 디바이스(예를 들어, 도 3의 클라이언트 디바이스(302))는 트랜잭션 요청을 브리지 디바이스(예를 들어, 도 3의 브리지 디바이스(304a))에 전송할 수 있고, 여기서 트랜잭션 요청은 하나의 계좌로부터 다른 계좌로의 특정 금액의 자금 이체를 식별한다. 브리지 디바이스는 브리지 디바이스 상에 저장되어 있는 그리고 자금 이체와 관련된 블록체인 트랜잭션들을 포함하는 블록체인 블록을 식별할 수 있다. 브리지 디바이스는 블록체인 블록 내의 자금 이체와 관련된 블록체인 트랜잭션을 트랜잭션 요청에 포함된 데이터와 비교할 수 있다. 브리지 디바이스는 이체된 자금의 금액과 관련된 데이터 및 블록체인 트랜잭션 내의 계좌 정보가 트랜잭션 요청 내의 데이터와 매칭하는지를 결정할 수 있다. 데이터 매칭이 있는 것으로 결정되면, 브리지 디바이스는 검증된 블록체인 블록이 신뢰성 있는 블록인 것으로 결정할 수 있다.
일부 실시예들에서, 브리지 디바이스는 블록체인 블록 내의 블록체인 트랜잭션들의 해시 값에 기초하여 블록체인 블록을 검증할 수 있다. 예를 들어, 블록체인 블록은 블록체인 트랜잭션 및 블록체인 트랜잭션의 제1 해시 값을 기록할 수 있다. 브리지 디바이스는 블록체인 트랜잭션을 획득하고 블록체인 트랜잭션의 제2 해시 값을 계산할 수 있다. 브리지 디바이스는 제2 해시 값을 제1 해시 값과 비교할 수 있다. 2개의 해시 값이 매칭하는 것으로 결정되면, 브리지 디바이스는 블록체인 블록 내의 블록체인 트랜잭션이 변경되지 않았고 블록체인 블록이 신뢰성 있는 블록인 것으로 결정할 수 있다.
일부 실시예들에서, 블록체인 블록들을 검증한 후에, 브리지 디바이스는 체크 높이 값(406)을 업데이트할 수 있다. 예를 들어, 브리지 디바이스가 블록체인 블록(408b)이 신뢰성 있는 블록인 것을 검증한 후에, 브리지 디바이스는 체크 높이 값(406)을 1 증가시킬 수 있다. 일부 실시예들에서, 브리지 디바이스는 체크 높이 값(406)이 로컬 높이 값(404)과 동등할 때까지 계속해서 브리지 디바이스 상에 저장되어 있는 블록체인 블록들을 검증하고 체크 높이 값(406)을 업데이트할 수 있다.
일부 실시예들에서, 체크 높이 값(406)이 로컬 높이 값(404)보다 작지 않은 것으로 결정되면, 브리지 디바이스는 블록체인 블록들을 검증하는 것을 중지하거나 억제할 수 있다. 예를 들어, 체크 높이 값(406)이 로컬 높이 값(404)과 동등하다면, 브리지 디바이스는 브리지 디바이스 상에 저장되어 있는 블록체인 블록들을 검증하는 것을 억제할 수 있다.
일부 실시예들에서, 시스템 오류, 이상, 고장 또는 결함이 발생할 수 있다. 예를 들어, 브리지 디바이스와 블록체인 네트워크 노드 간의 통신 연결이 손실될 수 있다. 일부 예들에서, 시스템 고장 또는 결함으로 인해 브리지 디바이스 상에 저장되어 있는 블록체인 블록들은 손실될 수 있다. 일부 실시예들에서, 시스템 고장 또는 결함을 검출하는 것에 응답하여, 브리지 디바이스는 복구 프로세스를 수행할 수 있다. 일부 실시예들에서, 브리지 디바이스는 체크 높이 값(406)에 기초하여 복구 프로세스를 수행할 수 있다. 예를 들어, 브리지 디바이스는 로컬 높이 값(404)을 체크 높이 값(406)으로 설정할 수 있다. 체크 높이 값(406)은 브리지 디바이스에 의해 검증된 블록체인 블록의 총 수를 지시하기 때문에, 이들 블록체인 블록은, 손실되더라도, 브리지 디바이스에 의해 반드시 다시 획득될 필요가 있는 것은 아니다. 그러나, 체크 높이 값(406)에 후속하여 그리고 로컬 높이 값(404)에 선행하여 번호가 매겨진 임의의 블록체인 블록들은 획득되었지만 검증되지 않았다. 이들 블록체인 블록은, 예를 들어, 시스템 고장 또는 결함으로 인해, 오류가 생기거나 손실되기 쉽다. 따라서 브리지 디바이스가 검증을 위해 블록체인 네트워크 노드로부터 검증되지 않은 블록체인 블록들을 다시 획득하기 위해 로컬 높이 값(404)이 체크 높이 값(406)으로 설정(또는 감소)된다. 예를 들어, 로컬 높이 값(404)을 체크 높이 값(406)으로 설정한 후에, 브리지 디바이스는 로컬 높이 값(404)을 원격 높이 값(402)과 비교하고 로컬 높이 값(404)이 원격 높이 값(402)보다 작은지를 결정할 수 있다. 로컬 높이 값(404)이 원격 높이 값(402)보다 작은 것으로 결정되면, 브리지 디바이스는 블록체인 네트워크 노드로부터 검증되지 않은 블록체인 블록들을 다시 획득할 수 있다.
일부 실시예들에서, 브리지 디바이스는 비동기 처리를 수행하여 전체 시스템의 효율성 및 처리량을 개선할 수 있다. 비동기 처리는 둘 이상의 동작 간에 처리 의존성 또는 시간적 순서를 부과하지 않고 둘 이상의 동작을 실행하는 방식이다. 비동기 처리에서는, 실행중인 작업이 완료되기 전에 보류중인 작업이 시작되도록 할 수 있다. 다시 말해서, 2개의 동작이 비동기적으로 수행될 때, 하나의 동작의 실행이 다른 동작의 실행을 차단하거나 일시 중단하지 않을 것이다. 다른 동작이 완료되기를 기다리지 않고 하나의 동작이 시작될 수 있고 양쪽 동작이 동시에 실행중일 수 있다. 따라서, 2개의 동작이 비동기적으로 처리될 때, 하나의 동작의 실행을 시작할 때의 결정은 다른 동작 실행의 현재 상태와는 관계없다, 즉, 그에 의존하지 않는다.
일부 실시예들에서, 비동기 처리는 다양한 워크플로우 프로세스들이 동시에 실행되는 것을 가능하게 한다. 예를 들어, 비동기 처리에서는, 요청들 및 응답들과 같은 동작들이 상이한 다른 세션들에서 송신된다. 요청과 응답 간에는 처리 의존성이 없고, 응답의 타이밍에 관한 가정이 이루어지지 않는다. 동작이 완료될 때까지 프로세스를 차단하거나 일시 중단하는 동기 동작과 달리, 비동기 동작은 비차단이고 프로세스를 차단하거나 일시 중단하지 않고 동작을 개시한다. 실행중인 작업이 완료된 후 보류중인 작업이 시작되는 동기 처리에 비해, 비동기 처리에서는, 실행중인 작업이 완료되기 전에 보류중인 작업이 시작되도록 할 수 있다.
일부 실시예들에서, 브리지 디바이스는 블록체인 네트워크 노드로부터 블록체인 블록들을 검색하고 브리지 디바이스에 저장되어 있는 블록체인 블록을 검증할 때 비동기 처리를 수행할 수 있다. 일부 실시예들에서, 처리를 조절하거나 달리 제어하기 위해 3개의 커서 값을 도입하고 모니터링함으로써, 검증 동작은 검색 동작과 비동기적으로 수행될 수 있고, 따라서 브리지가 검색 동작이 완료되기를 기다리는 것을 덜어준다. 예를 들어, 커서 값들의 각각의 조건들이 충족되는 한, 검증 동작은 검색 동작에 대해 상대적으로 독립적으로 수행될 수 있다. 예를 들어, 체크 높이 값이 로컬 높이 값보다 작다면 검증 동작이 수행될 수 있고, 로컬 높이 값이 원격 높이 값보다 작다면 검색 동작이 수행될 수 있다. 2개의 동작 간의 처리 의존성을 줄임으로써, 브리지 디바이스는 2개의 동작을 분리하고 개선된 효율성으로 2개의 동작을 실행하고 시스템 처리량을 개선할 수 있다.
일부 실시예들에서, 브리지 디바이스는 멀티-스레드 처리 능력을 활용하여 하나 이상의 독립적인 스레드를 이용하여 브리지 디바이스의 기능들을 수행할 수 있다. 스레드는 일반적으로 프로세서가 명령어들의 스트림을 실행하기 위해 필요로 하는 정보를 포함하는 실행 컨텍스트이다. 예를 들어, 스레드는 프로그래밍된 명령어들의 시퀀스를 포함할 수 있으며 부모 프로세스와 관계없이 프로세서에 의해 스케줄링되고 실행되도록 설계되어 있다. 하나의 프로세스의 컨텍스트 내에 다수의 스레드가 존재할 수 있게 하는 동시에, 멀티스레딩은 스레드들이 프로세스의 리소스들을 공유하고 독립적으로 실행할 수 있게 할 수 있다. 예를 들어, 하나의 프로세스 내에, 동시에 실행하고 메모리와 같은 리소스들을 공유하는, 다수의 스레드들이 존재할 수 있다. 프로세스의 스레드들은 언제든지 그의 실행 코드와 그의 동적으로 할당된 변수들 및 스레드-로컬이 아닌 전역 변수들(non-thread-local global variables)의 값들을 공유한다. 멀티스레딩은 비동기 처리 및 병렬 실행을 가능하게 하는 예시적인 방식이다.
일부 실시예들에서, 브리지 디바이스는 상이한 스레드 세트들을 이용하여 비동기 동작 및 병렬 실행을 수행하여 블록체인 블록들을 검색하는 것과 검증하는 것을 개별적으로 수행할 수 있고, 이는 전체 시스템의 효율성 및 처리량을 개선할 수 있다. 구현의 예로서, 브리지 디바이스는 브리지 디바이스의 제1 스레드 세트를 이용하여 블록체인 네트워크 노드로부터 제1 블록체인 블록 세트를 검색할 수 있다. 제1 스레드 세트는 각각이 블록체인 네트워크 노드로부터 제1 블록체인 블록 세트 중 하나의 블록체인 블록을 독립적으로 검색하기 위해 이용될 수 있는 다수의 스레드들을 포함할 수 있다. 브리지 디바이스는 브리지 디바이스의 제2 스레드 세트를 이용하여 브리지 디바이스에 저장되어 있는 제2 블록체인 블록 세트를 검증할 수 있다. 제2 스레드 세트는 각각이 브리지 디바이스 상에 저장되어 있는 제2 블록체인 블록 세트 중 하나의 블록체인 블록을 독립적으로 검증하기 위해 이용될 수 있는 다수의 스레드들을 포함할 수 있다.
다른 예로서, 브리지 디바이스는 클라이언트 디바이스와 블록체인 네트워크 간의 통신을 브리징하기 위해 제1 스레드를 이용할 수 있다. 특정 예로서, 브리지 디바이스(예를 들어, 도 3의 브리지 디바이스(304a))는 클라이언트 디바이스(예를 들어, 도 3의 클라이언트 디바이스(302))로부터 트랜잭션 요청을 수신하고, 트랜잭션 요청을 블록체인 네트워크 노드(예를 들어, 도 3의 블록체인 네트워크 노드(306))에 제출하고, 트랜잭션을 실행할 수 있는 블록체인 네트워크 노드로부터 실행 결과의 통지를 수신하기 위해 제1 스레드를 이용할 수 있다. 일부 실시예들에서, 브리지 디바이스는 블록체인 네트워크로부터 하나 이상의 블록체인 블록을 획득하기 위해 제2 스레드를 이용할 수 있다. 일부 실시예들에서, 브리지 디바이스는 획득된 블록체인 블록을 브리지 디바이스에서 검증하기 위해 제3 스레드를 이용할 수 있다. 일부 실시예들에서, 브리지 디바이스는 추가적인 또는 상이한 스레드들을 이용하고 다수의 스레드들에 상이한 작업들을 할당할 수 있다. 일부 실시예들에서, 하나 이상의 독립적인 스레드는 브리지 디바이스의 하나 이상의 프로세서에 의해 독립적으로 또는 병행하여 실행될 수 있다.
일부 실시예들에서, 하나 이상의 독립적인 스레드는 클라이언트 디바이스와 블록체인 네트워크 간의 통신 및 브리지 디바이스의 처리를 조절하거나 달리 제어하기 위해 3개의 커서 값에 액세스하고/하거나 그것들을 업데이트할 수 있다. 일부 실시예들에서, 일부 스레드들은 3개의 커서 값 각각에 액세스할 권한이 있지만 그것들을 업데이트할 권한은 없을 수 있다.
예를 들어, 일부 실시예들에서, 제1 스레드는, 예를 들어, 블록체인 네트워크 노드로부터 수신된 통지(예를 들어, 새로운 블록 통지)에 기초하여 원격 높이 값(402)을 업데이트하기 위해 이용될 수 있다. 다른 스레드들은 원격 높이 값(402)에 액세스할 권한이 있지만 그것을 업데이트할 권한은 없을 수 있다. 예를 들어, 블록체인 네트워크로부터 하나 이상의 블록체인 블록을 획득하기 전에, 제2 스레드는 원격 높이 값(402)을 획득하고, 로컬 높이 값(404)을 원격 높이 값(402)과 비교하고, 로컬 높이 값(404)이 원격 높이 값(402)보다 작은지를 결정할 수 있다. 로컬 높이 값(404)이 원격 높이 값(402)보다 작다면 제2 스레드는 블록체인 네트워크로부터 하나 이상의 블록체인 블록을 획득할 수 있다. 일부 실시예들에서, 제2 스레드는 로컬 높이 값(404)을 업데이트하기 위해 이용될 수 있는 반면, 다른 스레드들은 로컬 높이 값(404)에 액세스할 권한이 있지만 그것을 업데이트할 권한은 없을 수 있다. 예를 들어, 일부 실시예들에서, 획득된 블록체인 블록을 브리지 디바이스에서 검증하기 전에, 브리지 디바이스는 제3 스레드를 이용하여 로컬 높이 값(404)에 액세스하고, 체크 높이 값(406)을 로컬 높이 값(404)과 비교하고, 체크 높이 값(406)이 로컬 높이 값(404)보다 작은 지를 결정할 수 있다. 체크 높이 값(406)이 로컬 높이 값(404)보다 작다면 제3 스레드는 획득된 블록체인 블록을 브리지 디바이스에서 검증하기 위해 진행할 것이다. 일부 실시예들에서, 제3 스레드는 체크 높이 값(406)을 업데이트하기 위해 이용될 수 있는 반면, 다른 스레드들은 체크 높이 값(406)에 액세스할 권한이 있지만 그것을 업데이트할 권한은 없을 수 있다.
도 5는 본 명세서의 실시예들에 따라 실행될 수 있는 프로세스(500)의 예를 예시하는 신호 흐름이다. 신호 흐름은, 예를 들어, 블록체인 기반 결함 허용 시스템들을 구현하기 위해 이용될 수 있는, 블록체인 블록들의 비동기 처리를 위한 프로세스(500)를 나타낸다. 편의상, 프로세스는 하나 이상의 위치에 위치하고, 본 명세서에 따라 적절하게 프로그래밍된, 하나 이상의 컴퓨터의 시스템에 의해 수행되는 것으로 설명될 것이다. 예를 들어, 적절하게 프로그래밍된 블록체인 데이터 처리 시스템(예를 들어, 도 3의 시스템(300))이 프로세스를 수행할 수 있다.
510에서, 브리지 디바이스(504)(예를 들어, 도 3의 브리지 디바이스(304a))는 브리지 디바이스(504)의 데이터 저장소(예를 들어, 메모리)에 3개의 커서 값을 유지한다. 예를 들어, 브리지 디바이스(504)는 3개의 커서 값을 3개의 카운터로서 유지할 수 있다. 일부 실시예들에서, 3개의 커서 값을 유지하는 것은 3개의 커서 값을 저장하고 업데이트하는 것을 포함할 수 있다. 일부 실시예들에서, 3개의 커서 값은 블록체인 네트워크 노드(506)(예를 들어, 블록체인 네트워크 노드(306)) 상에 저장되어 있는 블록체인 블록의 수를 지시하는 원격 높이 값(예를 들어, 도 4의 원격 높이 값(402)), 브리지 디바이스(504) 상에 저장되어 있는 블록체인 블록의 수를 지시하는 로컬 높이 값(예를 들어,도 4의 로컬 높이 값(404)), 및 브리지 디바이스(504)에 의해 검증된 블록체인 블록의 수를 지시하는 체크 높이 값(예를 들어, 도 4의 체크 높이 값(406))을 포함할 수 있다.
512에서, 클라이언트 디바이스(502)(예를 들어, 도 3의 클라이언트 디바이스(302))는 트랜잭션 요청을 브리지 디바이스(504)에 전송한다. 예를 들어, 클라이언트 디바이스(502)는 브리지 디바이스(504)의 API를 이용하여 자금 이체 요청을 브리지 디바이스(504)에 전송할 수 있다. 자금 이체 요청은 제1 계좌(예를 들어, 클라이언트 디바이스(502)와 연관된 블록체인 계좌)로부터 제2 계좌(예를 들어, 다른 클라이언트 디바이스와 연관된 블록체인 계좌)로 이체될 자금의 금액을 식별할 수 있다.
514에서, 브리지 디바이스(504)는 트랜잭션 요청을 블록체인 네트워크 노드(506)로 전달한다. 예를 들어, 브리지 디바이스(504)는 블록체인 네트워크 노드(506) 상에서 실행되는 스마트 계약에 대한 계약 호출을 하여 블록체인 트랜잭션으로서 트랜잭션 요청을 블록체인 네트워크 노드(506)에 제출할 수 있다. 일부 실시예들에서, 브리지 디바이스(504)는 클라이언트 디바이스(502)가 블록체인 네트워크 노드(506)에 액세스할 권한이 있는지를 결정할 수 있다. 예를 들어, 브리지 디바이스(504)는 공개 키를 이용하여 트랜잭션 요청에 포함된 클라이언트 디바이스(502)의 디지털 서명을 검증할 수 있다.
516에서, 블록체인 네트워크 노드(506)는, 브리지 디바이스(504)로부터 블록체인 트랜잭션을 수신한 후에, 블록체인 트랜잭션에 기초하여 새로운 블록체인 블록을 생성할 수 있다. 예를 들어, 블록체인 네트워크 노드(506)는 블록체인 네트워크의 다수의 합의 노드들 간에 블록체인 트랜잭션에 대한 합의 절차(예를 들어, PBFT 합의)를 개시할 수 있다. 일부 실시예들에서, 합의 노드들 간에 합의에 도달하고/하거나 블록체인 트랜잭션이 실행되는 것으로 결정된 후, 새로운 블록체인 블록이 생성되고 블록체인 네트워크 노드(506) 상에 저장된 블록체인에 추가될 수 있다.
518에서, 블록체인 네트워크 노드(506)는 통지를 브리지 디바이스(504)에 전송한다. 일부 실시예들에서, 통지는 블록체인 네트워크 노드(506) 상에 저장된 블록체인 블록의 수를 지시하는 원격 높이 값을 지시할 수 있다. 예를 들어, 통지는 원격 높이 값을 포함할 수 있다. 다른 예로서, 통지는 블록체인 네트워크 노드(506)의 블록체인에 새로운 블록이 추가된 것을 지시하는 새로운 블록 통지를 포함할 수 있다.
일부 실시예들에서, 브리지 디바이스(504)는 푸시 또는 풀 모드에서 블록체인 네트워크 노드(506)로부터 통지를 수신할 수 있다. 예를 들어, 브리지 디바이스(504) 또는 클라이언트 디바이스(502)는 블록체인 네트워크 노드(506)의 블록체인 블록에 가입할 수 있고, 블록체인 네트워크 노드(506)는 블록체인 네트워크 노드(506)의 블록체인에 새로운 블록이 추가된 후에 동적으로, 또는 주기적으로 가입에 기초하여 브리지 디바이스(504)에 통지를 푸싱할 수 있다. 일부 실시예들에서, 브리지 디바이스(504)는, 예를 들어, 통지에 대한 요청을 블록체인 네트워크 노드(506)에 전송함으로써, 블록체인 네트워크 노드(506)로부터 블록체인의 정보를 풀링할 수 있다.
520에서, 브리지 디바이스(504)는, 블록체인 네트워크 노드(506)로부터 통지를 수신한 후에, 로컬 높이 값을 원격 높이 값과 비교한다. 일부 실시예들에서, 통지가 원격 높이 값을 포함한다면, 브리지 디바이스(504)는 브리지 디바이스(504)의 데이터 저장소에 저장된 원격 높이 값을 업데이트할 수 있다. 일부 실시예들에서, 통지가 블록체인 네트워크 노드(506)의 블록체인에 새로운 블록이 추가된 것을 지시하는 새로운 블록 통지를 포함한다면, 브리지 디바이스(504)는, 예를 들어, 원격 높이 값을 1 또는 다른 단위만큼 증가시킴으로써, 저장된 원격 높이 값을 업데이트할 수 있다.
일부 실시예들에서, 브리지 디바이스(504)는 로컬 높이 값이 원격 높이 값보다 작은지를 결정한다. 로컬 높이 값이 원격 높이 값보다 작은 것으로 결정되면, 브리지 디바이스(504)는 블록체인 네트워크 노드(506)로부터 블록체인 블록들을 검색할 수 있다. 로컬 높이 값이 원격 높이 값보다 작지 않은 것으로 결정되면, 브리지 디바이스(504)는 블록체인 네트워크 노드(506)로부터 블록체인 블록들을 검색하는 것을 억제할 수 있다.
522에서, 로컬 높이 값이 원격 높이 값보다 작은 것으로 결정한 후에, 브리지 디바이스(504)는 블록체인 네트워크 노드(506)로부터 하나 이상의 블록체인 블록을 검색한다. 일부 실시예들에서, 브리지 디바이스(504)는 브리지 디바이스(504) 상에 저장되지 않은 하나 이상의 블록체인 블록을 블록체인 네트워크 노드(506)로부터 검색할 수 있다. 예를 들어, 브리지 디바이스(504)는 블록체인 네트워크 노드(506)로부터 하나 이상의 블록체인 블록을 검색할 수 있고, 여기서 하나 이상의 블록체인 블록은 블록체인 네트워크 노드(506) 상에 저장된 그리고 브리지 디바이스(504)에 의해 획득된 최신 블록체인 블록에 후속하는 것들이다. 예를 들어, 하나 이상의 블록체인 블록은 로컬 높이 값에 의해 지시되는 수의 블록체인 블록들에서 최신 블록체인 블록에 후속한다. 일부 실시예들에서, 브리지 디바이스(504)는 푸시 또는 풀 모드에서 블록체인 네트워크 노드로부터 블록체인 블록들을 검색할 수 있다. 일부 실시예들에서, 브리지 디바이스(504)는 블록체인 네트워크 노드(506)로부터 블록체인 블록들을 검색한 후에 로컬 높이 값을 업데이트할 수 있다. 일부 실시예들에서, 브리지 디바이스(504)는 로컬 높이 값이 원격 높이 값과 동등할 때까지 계속해서 블록체인 네트워크 노드(506)로부터 블록체인 블록들을 검색하고 로컬 높이 값을 업데이트할 수 있다. 일부 실시예들에서, 로컬 높이 값이 원격 높이 값과 동등할 때, 브리지 디바이스(504)는 블록체인 네트워크 노드(506)로부터 블록체인 블록들을 검색하는 것을 중지하거나 억제할 수 있다.
524에서, 브리지 디바이스(504)는 체크 높이 값을 로컬 높이 값과 비교한다. 일부 실시예들에서, 브리지 디바이스(504)는 체크 높이 값이 로컬 높이 값보다 작은지를 결정할 수 있다. 체크 높이 값이 로컬 높이 값보다 작은 것으로 결정되면, 브리지 디바이스(504)는 브리지 디바이스 상에 저장되어 있는 그리고 브리지 디바이스(504)에 의해 검증되지 않은 블록체인 블록을 검증할 수 있다. 체크 높이 값이 로컬 높이 값보다 작지 않은 것으로 결정되면, 브리지 디바이스(504)는 브리지 디바이스(504) 상에 저장되어 있는 블록체인 블록들을 검증하는 것을 억제할 수 있다.
526에서, 체크 높이 값이 로컬 높이 값보다 작은 것으로 결정한 후에, 브리지 디바이스(504)는 브리지 디바이스(504) 상에 저장된 블록체인 블록들을 검증하여 블록체인 블록들이 신뢰성 있는지를 결정한다. 일부 실시예들에서, 브리지 디바이스(504)는 브리지 디바이스(504) 상에 저장되어 있는 그리고 브리지 디바이스(504)에 의해 검증되지 않은 블록체인 블록들을 검증한다. 예를 들어, 브리지 디바이스(504)는 브리지 디바이스(504)에 의해 검증된 그리고 체크 높이 값에 의해 지시되는 수의 블록체인들에 후속하는 블록체인 블록을 검증할 수 있다. 일부 실시예들에서, 브리지 디바이스(504)는 블록체인 블록에 기록된 트랜잭션 데이터를 클라이언트 디바이스(502)에 의해 브리지 디바이스(504)에 전송되는 트랜잭션 요청에 포함된 데이터와 비교함으로써 블록체인 블록들을 검증할 수 있다. 예를 들어, 트랜잭션 요청은 하나의 블록체인 계좌로부터 다른 계좌로 이체될 특정 금액의 자금을 식별할 수 있다. 브리지 디바이스(504)는 브리지 디바이스(504) 상에 저장되어 있는 그리고 자금 이체와 관련된 블록체인 트랜잭션들을 포함하는 블록체인 블록을 식별할 수 있다. 브리지 디바이스(504)는 자금 이체와 관련된 블록체인 트랜잭션 데이터를 트랜잭션 요청에 포함된 데이터와 비교할 수 있다. 브리지 디바이스는 이체된 자금의 금액과 관련된 데이터 및 블록체인 블록들 내의 계좌 정보가 트랜잭션 요청 내의 데이터와 매칭하거나 달리 일치하는지를 결정할 수 있다. 그것들이 일치하지 않는 것으로 결정되면, 브리지 디바이스는 검증된 블록체인 블록이 신뢰성 있는 블록체인 블록인지를 결정할 수 있다.
일부 실시예들에서, 브리지 디바이스(504)는 블록체인 블록 내의 블록체인 트랜잭션들의 해시 값에 기초하여 블록체인 블록을 검증할 수 있다. 예를 들어, 블록체인 블록은 블록체인 트랜잭션 및 블록체인 트랜잭션의 제1 해시 값을 포함할 수 있다. 브리지 디바이스(504)는 블록체인 블록으로부터 블록체인 트랜잭션을 획득하고 블록체인 트랜잭션의 제2 해시 값을 계산할 수 있다. 브리지 디바이스(504)는 제2 해시 값을 제1 해시 값과 비교할 수 있다. 2개의 해시 값이 매칭하는 것으로 결정되면, 브리지 디바이스(504)는 블록체인 블록 내의 블록체인 트랜잭션 데이터가 변경되지 않았고 블록체인 블록이 신뢰성 있는 블록체인 블록인 것으로 결정할 수 있다.
일부 실시예들에서, 블록체인 블록들을 검증한 후에, 브리지 디바이스(504)는 체크 높이 값을 업데이트할 수 있다. 예를 들어, 브리지 디바이스(504)가 블록체인 블록이 신뢰성 있는 블록인 것을 검증한 후에, 브리지 디바이스(504)는 체크 높이 값을, 예를 들어, 1 또는 다른 단위만큼 증가시킬 수 있다. 일부 실시예들에서, 브리지 디바이스는 체크 높이 값이 로컬 높이 값과 동등할 때까지 계속해서 브리지 디바이스 상에 저장되어 있는 블록체인 블록들을 검증하고 체크 높이 값을 업데이트할 수 있다. 일부 실시예들에서, 체크 높이 값이 로컬 높이 값과 동등할 때, 브리지 디바이스(504)는 브리지 디바이스(504) 상에 저장된 블록체인 블록을 검증하는 것을 억제할 수 있다.
528에서, 브리지 디바이스(504)는 시스템 결함을 검출한다. 일부 실시예들에서, 시스템 결함은 소프트웨어 버그 및 오류, 하드 디스크 고장, 입력 또는 출력 디바이스 고장, 또는 다른 일시적 또는 영구적 고장을 포함할 수 있다. 일부 실시예들에서, 시스템 결함은 브리지 디바이스(504)와 블록체인 네트워크 노드(506) 간에 통신 연결이 손실되거나 중단되게 한다. 일부 예들에서, 시스템 결함으로 인해 브리지 디바이스(504) 상에 저장되어 있는 블록체인 블록들은 손상되거나 손실될 수 있다. 일부 실시예들에서, 원격 높이 값들, 로컬 높이 값들, 및 체크 높이 값들은, 시스템 결함에도 불구하고 이들 커서 값이 유지될 수 있도록, 브리지 디바이스(504)의 비휘발성 저장 매체에 저장된다.
530에서, 브리지 디바이스(504)는, 시스템 결함을 검출한 후에, 복구 프로세스를 수행한다. 일부 실시예들에서, 브리지 디바이스(504)는 체크 높이 값에 기초하여 복구 프로세스를 수행할 수 있다. 일부 실시예들에서, 브리지 디바이스(504)는 로컬 높이 값을 체크 높이 값으로 설정할 수 있다. 체크 높이 값은 브리지 디바이스(504)에 의해 검증된 블록체인 블록의 수를 지시하기 때문에, 이들 블록체인 블록은, 손실되더라도, 브리지 디바이스(504)에 의해 반드시 다시 획득될 필요가 있는 것은 아니다. 그러나, 체크 높이 값(406)에 의해 지시된 최신 블록체인 블록에 후속하고 로컬 높이 값(404)에 의해 지시된 최신 블록체인 블록에 선행하는 블록체인 블록들은 브리지 디바이스(504)에 의해 획득되었지만 검증되지 않았다. 이들 블록체인 블록은, 예를 들어, 시스템 결함으로 인해, 오류가 생기거나 손실되기 쉽다. 그에 따라, 검증을 위해 블록체인 네트워크 노드(506)로부터 검증되지 않은 블록체인 블록들을 다시 획득하기 위해 로컬 높이 값이 체크 높이 값으로 설정(또는 감소)될 수 있다. 예를 들어, 로컬 높이 값을 체크 높이 값으로 설정한 후에, 브리지 디바이스(504)는 로컬 높이 값을 원격 높이 값과 비교하고 로컬 높이 값이 원격 높이 값보다 작은지를 결정할 수 있다. 로컬 높이 값이 원격 높이 값보다 작은 것으로 결정되면, 브리지 디바이스(504)는 블록체인 네트워크 노드(506)로부터 검증되지 않은 블록체인 블록들을 다시 획득할 수 있다. 브리지 디바이스(504)는 체크 높이 값이 로컬 높이 값에 도달할 때까지 계속해서 다시 획득된 검증되지 않은 블록체인 블록들을 검증할 수 있다.
일부 실시예들에서, 위에 설명된 바와 같이, 3개의 커서 값에 액세스하고/하거나 그것들을 업데이트하고, 블록체인 블록들을 획득하고, 획득된 블록체인 블록들을 검증하는 등의 동작에서 브리지 디바이스(504)에 의해 다수의 독립적인 스레드들이 이용될 수 있다. 일부 실시예들에서, 프로세스(500)의 일부 동작들(예를 들어, 동작들 522, 526 및 528)은 다른 순서로 또는 병행하여 수행될 수 있다. 예를 들어, 526에서의 검증 동작은, 커서 값들의 각각의 조건들이 충족되는 한, 524에서의 검색 동작에 대해 상대적으로 독립적으로 수행될 수 있다. 예를 들어, 특정 시간 인스턴스에서, 체크 높이 값이 로컬 높이 값보다 작은 것으로 결정되면 522에서의 검색 동작 전에 526에서의 검증 동작이 시작될 수 있다. 526에서의 검증 동작은 522에서의 검색 동작이 완료되기를 기다리지 않고 수행될 수 있다. 유사하게, 로컬 높이 값이 원격 높이 값보다 작은 것으로 결정되는 한, 522에서의 검색 동작은 526에서의 검증 동작이 완료되기를 기다리지 않고 시작될 수 있다. 프로세스(500)는 계속될 수 있고 추가적인 또는 상이한 동작들을 더 포함할 수 있다. 예를 들어, 브리지 디바이스(504)는 트랜잭션 요청의 실행 결과를 클라이언트 디바이스(502), 예를 들어, SPI에 반환할 수 있다. 일부 실시예들에서, 프로세스(500)는 위에 설명된 프로세스의 추가적인 또는 상이한 반복들을 포함할 수 있다.
위에 설명된 바와 같이, 브리지 디바이스(504)는 블록체인 네트워크 노드(506)로부터 수신된 새로운 블록 통지를 통해 원격 높이 값을 업데이트하여 블록체인 네트워크와의 원격 높이 값의 동기화를 유지한다. 일부 실시예들에서, 브리지 디바이스(504)는 블록체인 네트워크 노드(506)로부터 블록체인 블록을 검색함으로써 로컬 높이 값을 지속적으로 업데이트한다. 일부 실시예들에서, 브리지 디바이스(504)는 블록체인 블록들을 검증하고 체크 높이 값을 업데이트한다. 일부 실시예들에서, 3개의 커서 값은 다음의 관계를 만족시킨다: 체크 높이 값 ≤ 로컬 높이 값 ≤ 원격 높이 값.
일부 실시예들에서, 원격 높이 값의 업데이트는 브리지 디바이스(504)가 블록체인 네트워크 노드(506)로부터 수신한다는 통지와 관련된다. 일부 실시예들에서, 통지는 블록체인 네트워크 노드(506) 상에 저장된 블록체인에 새로운 블록이 추가된 것을 지시하는 새로운 블록 통지를 포함한다. 원격 높이 값의 업데이트 및 블록체인 네트워크(506)의 동작은 새로운 블록 통지에 기초하여 브리지 디바이스(504)에서 원격 높이 값이 지속적으로 증가되도록 동기로 유지된다. 일부 실시예들에서, 브리지 디바이스(504)는 로컬 높이 값과 원격 높이 값 간의 비교에 기초하여 블록체인 네트워크 노드로부터 블록체인 블록들을 검색함으로써 블록체인 네트워크 노드(506)와 블록체인 블록들을 동기화시킨다. 일부 실시예들에서, 브리지 디바이스(504)에 의해 동기화되고 브리지 디바이스(504) 상에 저장된 블록체인 블록들은 로컬 높이 값에 의해 지시된다. 일부 실시예들에서, 블록 동기화 프로세스 동안 브리지 디바이스(504)에 의해 획득된 블록체인 블록들 내의 블록체인 트랜잭션 데이터는 브리지 디바이스(504)의 검증 프로세스를 트리거한다. 브리지 디바이스(504)가 블록체인 블록들 내의 블록체인 트랜잭션 데이터를 검증한 후에, 블록체인 블록들은 신뢰성 있는 블록들로 간주될 수 있다. 브리지 디바이스(504)에 의해 검증된 블록체인 블록들은 체크 높이 값에 의해 지시된다.
일부 실시예들에서, 체크 높이 값은 지속적으로 증가하고(예를 들어, 매번 1 증가), 이는 체크 높이 값보다 작은(또는 그 아래의) 블록체인 블록들 내의 블록체인 트랜잭션들이 브리지 디바이스(504)에 의해 완전히 처리된 것을 보장한다. 일부 실시예들에서, 브리지 디바이스(504)의 복구 프로세스는 시스템 결함 또는 고장이 발생할 때 체크 높이 값으로부터 시작될 수 있다. 일부 실시예들에서, 브리지 디바이스(504)의 블록 데이터가 손실되거나 손상되더라도, 손실되거나 손상된 블록 데이터는 로컬 높이 값을 체크 높이 값으로 재설정하고 블록체인 네트워크 노드(506)로부터의 블록 통지를 모니터링하여 원격 높이 값을 업데이트함으로써 복구될 수 있다.
도 6a는 본 명세서의 실시예들에 따라 실행될 수 있는 블록체인 기반 결함 허용 시스템의 구현을 위한 프로세스(600)의 예를 예시하는 흐름도이다. 프로세스(600)는 도 5의 프로세스(500)의 컨텍스트에서 블록체인 기반 결함 허용 시스템에 의해 수행되는 프로세스일 수 있다. 편의상, 프로세스(600)는 하나 이상의 위치에 위치하고, 본 명세서에 따라 적절하게 프로그래밍된, 하나 이상의 컴퓨터의 시스템에 의해 수행되는 것으로 설명될 것이다. 예를 들어, 적절하게 프로그래밍된 블록체인 데이터 처리 시스템(예를 들어, 도 3의 시스템(300))이 프로세스(600)를 수행할 수 있다.
602에서, 브리지 디바이스(예를 들어, 도 3의 브리지 디바이스(304a), 또는 도 5의 브리지 디바이스(504))는, 예를 들어, 브리지 디바이스의 제1 스레드 세트를 이용하여, 블록체인 네트워크 노드(예를 들어, 도 3의 블록체인 네트워크 노드(306))로부터 제1 블록체인 블록 세트를 검색한다. 예를 들어, 제1 블록체인 블록 세트는 둘 이상의 블록체인 블록(예를 들어, 제1 블록체인 블록 및 제2 블록체인 블록)을 포함할 수 있고, 제1 스레드 세트는 둘 이상의 스레드(예를 들어, 제1 스레드 및 제2 스레드)를 포함할 수 있다. 브리지 디바이스는 제1 스레드와 제2 스레드를 이용하여 제1 블록체인 블록과 제2 블록체인 블록을 각각 병행하여 검색할 수 있다.
604에서, 브리지 디바이스는 제1 블록체인 블록 세트를 브리지 디바이스에 저장한다. 예를 들어, 브리지 디바이스는 제1 블록체인 블록과 제2 블록체인 블록을 브리지 디바이스의 메모리에 저장할 수 있다. 일부 실시예들에서, 브리지 디바이스는 제1 블록체인 블록 세트에 더하여 제2 블록체인 블록 세트를 저장할 수 있다. 예를 들어, 제2 블록체인 블록 세트는 제1 블록체인 블록 세트보다 더 이른 시간에 블록체인 네트워크 노드로부터 브리지 디바이스에 의해 검색될 수 있다.
606에서, 브리지 디바이스는, 예를 들어, 브리지 디바이스의 제2 스레드 세트를 이용하여, 브리지 디바이스에 저장되어 있는 제2 블록체인 블록 세트를 검증한다. 일부 실시예들에서, 제2 블록체인 블록 세트는 둘 이상의 블록체인 블록(예를 들어, 제3 블록체인 블록 및 제4 블록체인 블록)을 포함할 수 있고, 제2 스레드 세트는 둘 이상의 스레드(예를 들어, 제3 스레드 및 제4 스레드)를 포함할 수 있다. 브리지 디바이스는 제3 스레드와 제4 스레드를 이용하여 제3 및 제4 블록체인 블록들을 각각 병행하여 검증할 수 있다.
일부 실시예들에서, 브리지 디바이스는 제1 스레드 세트 및 제2 스레드 세트를 이용하여 비동기적으로 제1 블록체인 블록 세트를 검색하고 제2 블록체인 블록 세트를 검증하는 것을 수행한다. 앞서 언급된 바와 같이, 2개의 동작이 비동기적으로 수행될 때, 하나의 동작의 실행은 다른 동작의 실행을 차단하거나 일시 중단하지 않을 것이다. 다른 동작이 완료되기를 기다리지 않고 하나의 동작이 시작될 수 있고 양쪽 동작이 동시에 실행중일 수 있다. 예를 들어, 브리지 디바이스는 병행 방식으로 제1 블록체인 블록 세트를 검색하고 제2 블록체인 블록 세트를 검증할 수 있다. 브리지 디바이스는 제1 스레드 세트를 이용하여 제1 블록체인 블록 세트를 검색하는 동안 제2 스레드 세트를 이용하여 제2 블록체인 블록 세트를 검증할 수 있다.
도 6b는, 예를 들어, 본 명세서의 실시예들에 따라 실행될 수 있는 블록체인 기반 결함 허용 시스템을 구현하기 위해 이용될 수 있는, 블록체인 블록들의 비동기 처리를 위한 프로세스(650)를 예시하는 흐름도이다. 프로세스(650)는 프로세스(600)의 구현의 예일 수 있다.
608에서, 브리지 디바이스(예를 들어, 도 3의 브리지 디바이스(304a), 또는 도 5의 브리지 디바이스(504))는 원격 높이 값(예를 들어, 도 4의 원격 높이 값(402)), 로컬 높이 값(예를 들어, 도 4의 로컬 높이 값(404)), 및 체크 높이 값(예를 들어, 체크 높이 값(406))을 브리지 디바이스의 데이터 저장소(예를 들어, 비휘발성 저장 매체)에 유지한다. 일부 실시예들에서, 원격 높이 값은 브리지 디바이스에 통신적으로 링크되는 블록체인 네트워크 노드(예를 들어, 도 3의 블록체인 네트워크 노드(306), 또는 도 5의 블록체인 네트워크 노드(506)) 상에 저장되어 있는 블록체인 블록의 수를 지시한다. 로컬 높이 값은 브리지 디바이스 상에 저장되어 있는 블록체인 블록의 수를 지시한다. 체크 높이 값은 브리지 디바이스에 의해 검증된 블록체인 블록의 수를 지시한다. 일부 실시예들에서, 블록체인 네트워크 노드는 블록체인 네트워크의 합의 노드이다.
610에서, 브리지 디바이스는 블록체인 네트워크 노드로부터 통지를 수신한다. 일부 실시예들에서, 통지는 원격 높이 값을 지시한다. 일부 실시예들에서, 통지는 블록체인 네트워크의 블록체인에 새로운 블록이 추가된 것을 지시하는 새로운 블록 통지를 포함한다. 일부 실시예들에서, 새로운 블록 통지는 원격 높이 값이 특정 값 증가(예를 들어, 1 증가)되는 것을 지시한다.
일부 실시예들에서, 브리지 디바이스는 푸시 또는 풀 모드에서 블록체인 네트워크 노드로부터 통지를 수신할 수 있다. 예를 들어, 블록체인 네트워크 노드는 새로운 블록체인 블록의 생성에 응답하여 주기적으로 또는 동적으로 브리지 디바이스 및/또는 클라이언트 디바이스의 가입에 기초하여 브리지 디바이스에 통지를 푸싱할 수 있다. 다른 예로서, 브리지 디바이스는 통지에 대한 요청 블록체인 네트워크 노드에 전송함으로써 블록체인 네트워크 노드로부터 통지를 풀링할 수 있다.
일부 실시예들에서, 브리지 디바이스는 블록체인 네트워크 상에서 실행될 트랜잭션을 요청하는 트랜잭션 요청을 클라이언트 디바이스(예를 들어, 도 3의 클라이언트 디바이스(302), 또는 도 5의 클라이언트 디바이스(502))로부터 수신할 수 있다. 브리지 디바이스는 트랜잭션 요청을 블록체인 네트워크 노드로 전달할 수 있다. 블록체인 네트워크 노드는 제2 통지를 브리지 디바이스에 전송할 수 있다. 제2 통지는 업데이트된 원격 높이 값을 지시할 수 있으며 업데이트된 원격 높이 값은 트랜잭션에 기초하여 블록체인 네트워크 노드 상에 저장되어 있는 블록체인 블록의 수의 증가를 지시할 수 있다.
612에서, 브리지 디바이스는 로컬 높이 값이 원격 높이 값보다 작은지를 결정한다. 일부 실시예들에서, 로컬 높이 값이 원격 높이 값보다 작은 것으로 결정되면, 브리지 디바이스는 블록체인 네트워크 노드로부터 블록체인 블록들을 검색할 수 있다. 로컬 높이 값이 원격 높이 값보다 작지 않은 것으로 결정되면, 브리지 디바이스(504)는 블록체인 네트워크 노드로부터 블록체인 블록들을 검색하는 것을 억제할 수 있다.
614에서, 로컬 높이 값이 원격 높이 값보다 작은 것으로 결정하는 것에 응답하여, 브리지 디바이스는 블록체인 네트워크 노드로부터 브리지 디바이스 상에 저장되어 있지 않은 적어도 하나의 블록체인 블록을 획득한다. 예를 들어, 브리지 디바이스는 블록체인 네트워크 노드로부터 블록체인 블록을 검색할 수 있고, 여기서 블록체인 블록은 브리지 디바이스 상에 저장되어 있는 그리고 로컬 높이 값에 의해 지시되는 수의 블록체인 블록들에서 최신 블록체인 블록에 후속한다. 일부 실시예들에서, 블록체인 네트워크 노드로부터 적어도 하나의 블록체인 블록을 획득하는 것에 응답하여, 브리지 디바이스는 적어도 하나의 블록체인 블록을 브리지 디바이스 상에 저장하고 로컬 높이 값을 업데이트할 수 있다. 일부 실시예들에서, 브리지 디바이스는 로컬 높이 값이 원격 높이 값과 동등할 때까지 계속해서 블록체인 네트워크 노드로부터 블록체인 블록들을 검색하고 로컬 높이 값을 업데이트할 수 있다.
616에서, 로컬 높이 값이 원격 높이 값보다 작지 않은 것으로 결정하는 것에 응답하여, 브리지 디바이스는 블록체인 네트워크 노드로부터 블록체인 블록들을 획득하는 것을 억제한다. 예를 들어, 로컬 높이 값이 원격 높이 값과 동등하다면, 브리지 디바이스는 블록체인 네트워크 노드로부터 블록체인 블록들을 검색하는 것을 중지하거나 억제할 수 있다.
618에서, 브리지 디바이스는 체크 높이 값이 로컬 높이 값보다 작은지를 결정한다. 일부 실시예들에서, 체크 높이 값이 로컬 높이 값보다 작은 것으로 결정되면, 브리지 디바이스는 브리지 디바이스 상에 저장되어 있는 그리고 브리지 디바이스에 의해 검증되지 않은 블록체인 블록을 검증할 수 있다. 체크 높이 값이 로컬 높이 값보다 작지 않은 것으로 결정되면, 브리지 디바이스는 브리지 디바이스 상에 저장되어 있는 블록체인 블록들을 검증하는 것을 억제할 수 있다.
620에서, 체크 높이 값이 로컬 높이 값보다 작은 것으로 결정하는 것에 응답하여, 브리지 디바이스는 브리지 디바이스 상에 저장되어 있는 그리고 브리지 디바이스에 의해 검증되지 않은 블록체인 블록을 검증한다. 일부 실시예들에서, 검증은 블록체인 블록 내의 하나 이상의 블록체인 트랜잭션과 트랜잭션 요청 간의 일관성을 결정하는 것을 포함할 수 있다. 일부 실시예들에서, 브리지 디바이스는 블록체인 블록에 기록된 트랜잭션 데이터를 클라이언트 디바이스에 의해 브리지 디바이스에 전송되는 트랜잭션 요청에 포함된 데이터와 비교함으로써 블록체인 블록들을 검증할 수 있다.
일부 실시예들에서, 브리지 디바이스는 또한 블록체인 블록 내의 블록체인 트랜잭션들의 해시 값에 기초하여 블록체인 블록을 검증할 수 있다. 예를 들어, 블록체인 블록은 블록체인 트랜잭션 및 블록체인 트랜잭션의 제1 해시 값을 포함할 수 있다. 브리지 디바이스는 블록체인 블록으로부터 블록체인 트랜잭션을 획득하고 블록체인 트랜잭션의 제2 해시 값을 계산할 수 있다. 브리지 디바이스는 제2 해시 값을 제1 해시 값과 비교할 수 있다. 2개의 해시 값이 매칭하는 것으로 결정되면, 브리지 디바이스는 블록체인 블록 내의 블록체인 트랜잭션이 변경되지 않았고 블록체인 블록이 신뢰성 있는 블록인 것으로 결정할 수 있다.
일부 실시예들에서, 블록체인 블록을 검증하는 것에 응답하여, 브리지 디바이스는 블록체인 블록이 신뢰성 있는 것으로 결정하고 체크 높이 값을 업데이트할 수 있다. 일부 실시예들에서, 브리지 디바이스는 체크 높이 값이 로컬 높이 값과 동등할 때까지 계속해서 브리지 디바이스 상에 저장되어 있는 블록체인 블록들을 검증하고 체크 높이 값을 업데이트할 수 있다.
616에서, 체크 높이 값이 로컬 높이 값보다 작지 않은 것으로 결정하는 것에 응답하여, 브리지 디바이스는 브리지 디바이스 상에 저장되어 있는 블록체인 블록들을 검증하는 것을 억제한다. 예를 들어, 체크 높이 값이 로컬 높이 값과 동등하다면, 브리지 디바이스(504)는 브리지 디바이스(504) 상에 저장된 블록체인 블록을 검증하는 것을 억제할 수 있다.
618에서, 시스템 결함이 검출된다. 일부 실시예들에서, 시스템 결함은 소프트웨어 버그 및 오류, 하드 디스크 고장, 입력 또는 출력 디바이스 고장, 또는 다른 일시적 또는 영구적 고장을 포함할 수 있다. 일부 실시예들에서, 시스템 결함은 브리지 디바이스와 블록체인 네트워크 노드 간에 통신 연결이 손실되게 할 수 있다. 일부 예들에서, 시스템 결함으로 인해 브리지 디바이스 상에 저장되어 있는 블록체인 블록들은 손상되거나 손실될 수 있다.
620에서, 브리지 디바이스는 시스템 결함을 검출하는 것에 응답하여 복구 프로세스를 수행한다. 일부 실시예들에서, 브리지 디바이스는 로컬 높이 값을 체크 높이 값으로 설정할 수 있다. 로컬 높이 값이 원격 높이 값보다 작은 것으로 결정하는 것에 응답하여, 브리지 디바이스는 브리지 디바이스에 의해 검증된 그리고 체크 높이 값에 의해 지시되는 수의 블록체인 블록들에서 최신 블록체인 블록에 후속하는 적어도 하나의 블록체인 블록을 획득할 수 있다.
일부 실시예들에서, 복구 프로세스 동안 및/또는 그 후에, 브리지 디바이스는 3개의 커서 값을 유지하기 위해 602로 돌아가서 프로세스(650)를 계속할 수 있다. 일부 실시예들에서, 도 4 내지 도 5에 관하여 설명된 바와 같이, 프로세스(650)는 브리지 디바이스의 하나 이상의 독립적인 스레드에 의해 수행될 수 있고, 이는 브리지 디바이스의 처리 속도와 유연성을 개선하고, 클라이언트 디바이스와 블록체인 네트워크 노드 간의 통신의 처리량을 증가시키면서 결함 허용을 제공하고 블록 관련 처리의 질서있는 실행들을 유지하여 브리지 디바이스에 의해 저장된 그리고 클라이언트 디바이스와 블록체인 네트워크 노드 간에 통신되는 데이터의 데이터 보안 및 신뢰성을 향상시킬 수 있다.
도 7은 본 명세서의 실시예들에 따른 장치(700)의 모듈들의 예의 다이어그램이다. 장치(700)는 브리지 디바이스(예를 들어, 도 3의 브리지 디바이스(304a), 또는 도 5의 브리지 디바이스(504))의 실시예의 예일 수 있다. 장치(700)는 위에 설명된 실시예들에 대응할 수 있고, 장치(700)는: 브리지 디바이스의 제1 스레드 세트를 이용하여 블록체인 네트워크 노드로부터 제1 블록체인 블록 세트를 검색하는 검색 모듈(702); 제1 블록체인 블록 세트를 브리지 디바이스에 저장하는 저장 모듈(704); 및 브리지 디바이스의 제2 스레드 세트를 이용하여 브리지 디바이스에 저장되어 있는 제2 블록체인 블록 세트를 검증하는 검증 모듈(706)을 포함하고, 여기서 제1 스레드 세트는 제2 스레드 세트와 상이하고, 제1 블록체인 블록 세트를 검색하는 것과 제2 블록체인 블록 세트를 검증하는 것은 제1 스레드 세트와 제2 스레드 세트를 이용하여 비동기적으로 수행된다.
일부 실시예들에서, 제1 블록체인 블록 세트는 제1 블록체인 블록 및 제2 블록체인 블록을 포함하고, 여기서 제1 스레드 세트는 제1 스레드 및 제2 스레드를 포함하고, 여기서 브리지 디바이스의 제1 스레드 세트를 이용하여 블록체인 네트워크 노드로부터 제1 블록체인 블록 세트를 검색하는 것은: 브리지 디바이스의 제2 스레드를 이용하여 블록체인 네트워크 노드로부터 제2 블록체인 블록을 검색하는 것과 병행하여 브리지 디바이스의 제1 스레드를 이용하여 블록체인 네트워크 노드로부터 제1 블록체인 블록을 검색하는 것을 포함한다.
일부 실시예들에서, 제2 블록체인 블록 세트는 제3 블록체인 블록 및 제4 블록체인 블록을 포함하고, 여기서 제2 스레드 세트는 제3 스레드 및 제4 스레드를 포함하고, 여기서 브리지 디바이스의 제2 스레드 세트를 이용하여 브리지 디바이스에 저장되어 있는 제2 블록체인 블록 세트를 검증하는 것은: 브리지 디바이스의 제4 스레드를 이용하여 제4 블록체인 블록을 검증하는 것과 병행하여 브리지 디바이스의 제3 스레드를 이용하여 제3 블록체인 블록을 검증하는 것을 포함한다.
일부 실시예들에서, 장치(700)는 원격 높이 값 및 로컬 높이 값을 브리지 디바이스의 데이터 저장소에 유지하는 유지 서브-모듈을 더 포함하고, 여기서: 원격 높이 값은 블록체인 네트워크 노드 상에 저장되어 있는 블록체인 블록의 수를 지시하고; 로컬 높이 값은 브리지 디바이스 상에 저장되어 있는 그리고 블록체인 네트워크 노드로부터 획득된 블록체인 블록의 수를 지시한다. 브리지 디바이스의 제1 스레드 세트를 이용하여 블록체인 네트워크 노드로부터 제1 블록체인 블록 세트를 검색하는 것은: 브리지 디바이스에 의해 로컬 높이 값이 원격 높이 값보다 작은지를 결정하는 것; 및 로컬 높이 값이 원격 높이 값보다 작은 것으로 결정하는 것에 응답하여, 블록체인 네트워크 노드로부터 브리지 디바이스 상에 저장되어 있지 않은 적어도 하나의 블록체인 블록을 획득하는 것을 포함한다.
일부 실시예들에서, 장치(700)는: 블록체인 네트워크 노드로부터 적어도 하나의 블록체인 블록을 획득하는 것에 응답하여 적어도 하나의 블록체인 블록을 브리지 디바이스 상에 저장하는 저장 서브-모듈; 및 브리지 디바이스에 의해 로컬 높이 값을 업데이트하는 업데이트 서브-모듈을 더 포함한다.
일부 실시예들에서, 장치(700)는 로컬 높이 값이 원격 높이 값보다 작지 않은 것으로 결정하는 것에 응답하여 블록체인 네트워크 노드로부터 블록체인 블록들을 획득하는 것을 억제하는 억제 서브-모듈을 더 포함한다.
일부 실시예들에서, 장치(700)는: 브리지 디바이스에 의해 블록체인 네트워크 노드로부터 통지를 수신하는 제1 수신 서브-모듈 - 통지는 원격 높이 값을 지시함 -; 브리지 디바이스에 의해 클라이언트 디바이스로부터 트랜잭션 요청을 수신하는 제2 수신 서브-모듈 - 트랜잭션 요청은 블록체인 네트워크 상에서 실행될 트랜잭션을 요청함 -; 브리지 디바이스에 의해 트랜잭션 요청을 블록체인 네트워크 노드에 전송하는 전송 서브-모듈; 및 브리지 디바이스에 의해 블록체인 네트워크 노드로부터 제2 통지를 수신하는 제3 수신 서브-모듈을 더 포함하고, 제2 통지는 업데이트된 원격 높이 값을 지시하고, 여기서 업데이트된 원격 높이 값은 상기 트랜잭션에 적어도 부분적으로 기초하여 블록체인 네트워크 노드 상에 저장되어 있는 블록체인 블록의 수의 증가를 지시한다.
일부 실시예들에서, 통지는 블록체인 네트워크의 블록체인에 새로운 블록이 추가된 것을 지시하는 새로운 블록 통지를 포함하고, 새로운 블록 통지는 원격 높이 값이, 예를 들어, 1 증가되는 것을 지시한다.
일부 실시예들에서, 브리지 디바이스에 의해 블록체인 네트워크 노드로부터 통지를 수신하는 것은: 블록체인 네트워크 노드에 의해 브리지 디바이스에 푸싱되는 통지를 수신하는 것; 또는 브리지 디바이스에 의해 블록체인 네트워크 노드로부터 통지를 풀링하는 것 중 적어도 하나를 포함한다.
일부 실시예들에서, 장치(700)는 로컬 높이 값 및 체크 높이 값을 브리지 디바이스의 데이터 저장소에 유지하는 유지 서브-모듈을 더 포함하고, 여기서: 로컬 높이 값은 브리지 디바이스 상에 저장되어 있는 그리고 블록체인 네트워크 노드로부터 획득된 블록체인 블록의 수를 지시하고; 체크 높이 값은 브리지 디바이스에 의해 검증된 블록체인 블록의 수를 지시한다. 브리지 디바이스의 제2 스레드 세트를 이용하여 브리지 디바이스에 저장되어 있는 제2 블록체인 블록 세트를 검증하는 것은: 체크 높이 값이 로컬 높이 값보다 작은지를 결정하는 것; 및 체크 높이 값이 로컬 높이 값보다 작은 것으로 결정하는 것에 응답하여, 브리지 디바이스에 저장되어 있는 그리고 브리지 디바이스에 의해 검증되지 않은 블록체인 블록을 검증하는 것을 포함한다.
일부 실시예들에서, 브리지 디바이스에 저장되어 있는 그리고 브리지 디바이스에 의해 검증되지 않은 블록체인 블록을 검증하는 것은 블록체인 블록 내의 하나 이상의 블록체인 트랜잭션과 트랜잭션 요청 간의 일관성을 결정하는 것을 포함한다.
일부 실시예들에서, 장치(700)는: 브리지 디바이스 상에 저장되어 있는 그리고 브리지 디바이스에 의해 검증되지 않은 블록체인 블록을 검증하는 것에 응답하여 블록체인 블록이 신뢰성 있는 것으로 결정하는 결정 서브-모듈; 및 브리지 디바이스에 의해 체크 높이 값을 업데이트하는 업데이트 서브-모듈을 더 포함한다.
일부 실시예들에서, 장치(700)는 체크 높이 값이 로컬 높이 값보다 작지 않은 것으로 결정하는 것에 응답하여 브리지 디바이스에 저장되어 있는 블록체인 블록들을 검증하는 것을 억제하는 억제 서브-모듈을 더 포함한다.
일부 실시예들에서, 장치(700)는: 브리지 디바이스에 의해 브리지 디바이스 및 블록체인 네트워크 노드를 포함하는 시스템에서의 시스템 결함을 검출하는 검출 서브-모듈; 및 체크 높이 값에 기초하여 복구 프로세스를 수행하는 수행 서브-모듈을 더 포함한다. 복구 프로세스를 수행하는 것은: 로컬 높이 값을 체크 높이 값과 동등하게 설정하는 것; 및 로컬 높이 값이 블록체인 네트워크 노드 상에 저장되어 있는 블록체인 블록의 수를 지시하는 원격 높이 값보다 작은 것으로 결정하는 것에 응답하여, 블록체인 네트워크 노드로부터 브리지 디바이스 상에 저장되어 있지 않은 적어도 하나의 블록체인 블록을 획득하는 것을 포함한다.
이전의 실시예들에서 예시된 시스템, 장치, 모듈, 또는 유닛은 컴퓨터 칩 또는 엔티티를 이용하여 구현할 수 있거나, 특정 기능을 가진 제품을 이용하여 구현할 수 있다. 전형적인 실시예 디바이스는 컴퓨터(그리고 컴퓨터는 개인용 컴퓨터일 수 있음), 랩톱 컴퓨터, 휴대폰, 카메라 폰, 스마트폰, 개인 휴대 정보 단말기, 미디어 플레이어, 내비게이션 디바이스, 이메일 수신 및 전송 디바이스, 게임 콘솔, 태블릿 컴퓨터, 웨어러블 디바이스, 또는 이들 디바이스의 임의의 조합이다.
장치 내의 각각의 모듈의 기능들 및 역할들의 실시예 프로세스에 대해서는, 이전의 방법에서의 대응하는 단계들의 실시예 프로세스를 참조할 수 있다. 세부 사항들은 단순함을 위해 여기서 생략된다.
장치 실시예는 방법 실시예에 기본적으로 대응하기 때문에, 관련 부분들에 대해서는, 방법 실시예에서의 관련 설명들을 참조할 수 있다. 앞서 설명된 장치 실시예는 예에 불과하다. 별개의 부분들로서 설명된 모듈들은 물리적으로 분리될 수도 있고 그렇지 않을 수도 있고, 모듈들로서 디스플레이된 부분들은 물리적 모듈들일 수도 있고 아닐 수도 있고, 한 위치에 위치할 수도 있고, 다수의 네트워크 모듈들에 분산될 수도 있다. 본 명세서의 해결책들의 목적들을 달성하기 위해 실제 요구 사항들에 기초하여 모듈들의 일부 또는 전부가 선택될 수 있다. 당업자는 창의적인 노력 없이 본 출원의 실시예들을 이해하고 구현할 수 있다.
다시 도 7을 참조하면, 그것은 결함 허용 블록체인 데이터 처리 장치의 구조 및 내부 기능 모듈을 예시하는 것으로 해석될 수 있다. 결함 허용 블록체인 데이터 처리 장치는 블록체인 네트워크의 블록체인 네트워크 노드와 클라이언트 디바이스를 연결하도록 구성된 브리지 디바이스(예를 들어,도 3의 브리지 디바이스(304a), 또는 도 5의 브리지 디바이스(504))의 예일 수 있다. 본질적으로 실행 본체는 전자 디바이스일 수 있고, 전자 디바이스는: 하나 이상의 프로세서; 및 하나 이상의 프로세서의 실행가능한 명령어를 저장하도록 구성된 하나 이상의 컴퓨터 판독가능 메모리를 포함한다. 일부 실시예들에서, 하나 이상의 컴퓨터 판독가능 메모리는 하나 이상의 프로세서에 결합되고 본 명세서에서 설명된 바와 같은 알고리즘, 방법, 기능, 프로세스, 흐름, 및 절차를 수행하기 위해 하나 이상의 프로세서에 의해 실행가능한 프로그래밍 명령어들이 저장되어 있다. 본 명세서는 또한 하나 이상의 프로세서에 결합되고 명령어들이 저장되어 있는 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체를 제공하고, 상기 명령어들은 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서로 하여금 본 명세서에서 제공된 방법들의 실시예들에 따른 동작들을 수행하게 한다.
본 명세서는 또한 본 명세서에서 제공된 방법들을 구현하기 위한 시스템을 제공한다. 시스템은 하나 이상의 프로세서, 및 하나 이상의 프로세서에 결합되고 명령어들이 저장되어 있는 컴퓨터 판독가능 저장 매체를 포함하고, 상기 명령어들은 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서로 하여금 본 명세서에서 제공된 방법들의 실시예들에 따른 동작들을 수행하게 한다.
본 명세서에서 설명된 주제 및 액션들 및 동작들의 실시예들은 디지털 전자 회로로, 유형적으로 구현된(tangibly-embodied) 컴퓨터 소프트웨어 또는 펌웨어로, 본 명세서에 개시된 구조들 및 그들의 구조적 등가물들을 포함하는 컴퓨터 하드웨어로, 또는 그들 중 하나 이상의 것의 조합으로 구현될 수 있다. 본 명세서에서 설명된 주제의 실시예들은 하나 이상의 컴퓨터 프로그램으로서, 예를 들어, 데이터 처리 장치에 의한 실행을 위해, 또는 그것의 동작을 제어하기 위해 컴퓨터 프로그램 캐리어 상에 인코딩된, 컴퓨터 프로그램 명령어들의 하나 이상의 모듈로서 구현될 수 있다. 예를 들어, 컴퓨터 프로그램 캐리어는 명령어들이 인코딩되거나 저장되어 있는 하나 이상의 컴퓨터 판독가능 저장 매체를 포함할 수 있다. 캐리어는 자기, 광자기, 또는 광 디스크, 솔리드 스테이트 드라이브, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 또는 다른 유형의 매체들과 같은 유형의(tangible) 비일시적 컴퓨터 판독가능 매체일 수 있다. 대안적으로, 또는 추가적으로, 캐리어는 데이터 처리 장치에 의한 실행을 위해 적합한 수신기 장치로의 송신을 위한 정보를 인코딩하도록 생성되는 인공적으로 생성된 전파 신호, 예를 들어, 머신 생성된 전기, 광학, 또는 전자기 신호일 수 있다. 컴퓨터 저장 매체는 머신 판독가능 저장 디바이스, 머신 판독가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 디바이스, 또는 이들 중 하나 이상의 것의 조합이거나 그의 일부일 수 있다. 컴퓨터 저장 매체는 전파 신호는 아니다.
프로그램, 소프트웨어, 소프트웨어 애플리케이션, 앱, 모듈, 소프트웨어 모듈, 엔진, 스크립트, 또는 코드로 지칭되거나 기술될 수도 있는 컴퓨터 프로그램은, 컴파일된 또는 해석된 언어, 또는 선언적 또는 절차 언어를 포함한, 임의의 형태의 프로그래밍 언어로 작성될 수 있고; 그것은 독립형 프로그램으로서 또는 모듈, 컴포넌트, 엔진, 서브루틴, 또는 컴퓨팅 환경에서 실행하기에 적합한 다른 유닛으로서 배포되는 것을 포함하여, 임의의 형태로 배포될 수 있고, 그 환경은 하나 이상의 위치에 있는 데이터 통신 네트워크에 의해 상호 연결된 하나 이상의 컴퓨터를 포함할 수 있다.
컴퓨터 프로그램은 파일 시스템 내의 파일에 대응할 수 있지만, 그럴 필요가 있는 것은 아니다. 컴퓨터 프로그램은 다른 프로그램들 또는 데이터를 유지하는 파일의 일부에, 예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트에, 문제의 프로그램에 전용되는 단일 파일에, 또는 다수의 코디네이션된 파일들에, 예를 들어, 하나 이상의 모듈, 서브 프로그램, 또는 코드의 부분들을 저장하는 파일들에 저장될 수 있다.
컴퓨터 프로그램의 실행을 위한 프로세서들은, 예로서, 범용 및 특수 목적 마이크로프로세서 양쪽 모두, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서는 프로세서에 결합된 비일시적 컴퓨터 판독가능 매체로부터의 데이터뿐만 아니라 실행을 위한 컴퓨터 프로그램의 명령어들을 수신할 것이다.
"데이터 처리 장치"라는 용어는 예로서 프로그램 가능 프로세서, 컴퓨터, 또는 다수의 프로세서 또는 컴퓨터를 포함하여, 데이터를 처리하기 위한 모든 종류의 장치, 디바이스, 및 머신을 포함할 수 있다. 데이터 처리 장치는 특수 목적 로직 회로, 예를 들어, FPGA(field programmable gate array), ASIC(application specific integrated circuit), 또는 GPU(graphics processing unit)를 포함할 수 있다. 장치는 또한, 하드웨어에 더하여, 컴퓨터 프로그램들을 위한 실행 환경을 생성하는 코드, 예를 들어, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 것의 조합을 구성하는 코드를 포함할 수 있다.
본 명세서에서 설명된 프로세스들 및 로직 흐름들은 입력 데이터에 작용하여 출력을 생성함으로써 동작들을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 컴퓨터 또는 프로세서에 의해 수행될 수 있다. 프로세스들 및 로직 흐름들은 특수 목적 로직 회로, 예를 들어, FPGA, ASIC, 또는 GPU에 의해, 또는 특수 목적 로직 회로와 하나 이상의 프로그래밍된 컴퓨터의 조합에 의해 수행될 수도 있다.
컴퓨터 프로그램의 실행에 적합한 컴퓨터들은 범용 또는 특수 목적 마이크로프로세서들 또는 양쪽 모두, 또는 임의의 다른 종류의 중앙 처리 유닛에 기초할 수 있다. 일반적으로, 중앙 처리 유닛은 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 양쪽 모두로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 요소들은 명령어들을 실행하기 위한 중앙 처리 유닛 및 명령어들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스를 포함할 수 있다. 중앙 처리 유닛 및 메모리는 특수 목적 로직 회로에 의해 보완되거나 그에 통합될 수 있다.
일반적으로, 컴퓨터는 또한 하나 이상의 저장 디바이스로부터 데이터를 수신하거나 하나 이상의 저장 디바이스에 데이터를 전송하도록 동작 가능하게 결합되거나 이들을 포함할 것이다. 저장 디바이스들은, 예를 들어, 자기, 광자기, 또는 광 디스크, 솔리드 스테이트 드라이브, 또는 임의의 다른 유형의 비일시적 컴퓨터 판독가능 매체일 수 있다. 그러나, 컴퓨터는 그러한 디바이스들을 가질 필요는 없다. 따라서, 컴퓨터는 로컬 및/또는 원격인 하나 이상의 메모리와 같은 하나 이상의 저장 디바이스에 결합될 수 있다. 예를 들어, 컴퓨터는 컴퓨터의 필수 컴포넌트들인 하나 이상의 로컬 메모리를 포함할 수 있거나, 컴퓨터는 클라우드 네트워크에 있는 하나 이상의 원격 메모리에 결합될 수 있다. 더욱이, 컴퓨터는 다른 디바이스는, 예를 들어, 몇 가지만 말하자면, 모바일 전화, 개인 휴대 정보 단말기(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, 글로벌 포지셔닝 시스템(GPS) 수신기, 또는 휴대용 저장 디바이스, 예를 들어, 범용 직렬 버스(USB) 플래시 드라이브에 임베드될 수 있다.
컴포넌트들은 직접 또는 하나 이상의 중간 컴포넌트를 통해 서로 상호적으로 예컨대 전기적으로 또는 광학적으로 연결됨으로써 서로 "결합"될 수 있다. 컴포넌트들은 또한, 컴포넌트들 중 하나가 다른 컴포넌트에 통합되어 있다면, 서로 "결합"될 수 있다. 예를 들어, 프로세서에 통합되어 있는 저장 컴포넌트(예를 들어, L2 캐시 컴포넌트)는 프로세서에 "결합"된다.
사용자와의 상호 작용을 제공하기 위해, 본 명세서에서 설명된 주제의 실시예들은 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스, 예를 들어, LCD(liquid crystal display) 모니터), 사용자가 컴퓨터에 입력을 제공할 수 있게 하는 입력 디바이스, 예를 들어, 키보드 및 포인팅 디바이스, 예를 들어, 마우스, 트랙볼 또는 터치 패드를 가진 컴퓨터 상에 구현되거나 그와 통신하도록 구성될 수 있다. 다른 종류의 디바이스들도 사용자와의 상호 작용을 제공하기 위해 이용될 수 있다; 예를 들어, 사용자에게 제공되는 피드백은 임의의 형태의 감각 피드백, 예를 들어, 시각 피드백, 청각 피드백, 또는 촉각 피드백일 수 있고; 사용자로부터의 입력은 음향, 음성, 또는 촉각 입력을 포함하여, 임의의 형태로 수신될 수 있다. 또한, 컴퓨터는 사용자에 의해 사용되는 디바이스에 문서를 전송하고 그로부터 문서를 수신함으로써 사용자와 상호 작용할 수 있다; 예를 들어, 웹 브라우저로부터 수신된 요청에 응답하여 사용자의 디바이스 상의 웹 브라우저에 웹 페이지를 전송함으로써, 또는 사용자 디바이스, 예를 들어, 스마트폰 또는 전자 태블릿 상에서 실행되는 앱과 상호 작용함으로써. 또한, 컴퓨터는 문자 메시지 또는 다른 형태의 메시지를 개인 디바이스, 예를 들어, 메시징 애플리케이션을 실행하고 있는 스마트폰에 전송하고, 회신으로 사용자로부터 응답 메시지를 수신함으로써 사용자와 상호 작용할 수 있다.
본 명세서는 시스템들, 장치들, 및 컴퓨터 프로그램 컴포넌트들과 관련하여 "구성된"이라는 용어를 사용한다. 하나 이상의 컴퓨터의 시스템이 특정 동작들 또는 액션들을 수행하도록 구성된다는 것은 시스템이 그것에 동작시에 시스템으로 하여금 동작들 또는 액션들을 수행하게 하는 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 설치했다는 것을 의미한다. 하나 이상의 컴퓨터 프로그램이 동작들 또는 액션들을 수행하도록 구성된다는 것은, 그 하나 이상의 프로그램이, 데이터 처리 장치에 의해 실행될 때, 장치로 하여금 동작들 또는 액션들을 수행하게 하는 명령어들을 포함한다는 것을 의미한다. 특수 목적 로직 회로가 특정 동작들 또는 액션들을 수행하도록 구성된다는 것은 그 회로가 동작들 또는 액션들을 수행하는 전자 로직을 가지고 있다는 것을 의미한다.
본 명세서는 많은 특정 실시예 세부 사항들을 포함하지만, 이들은 청구항들 자체에 의해 정의되는, 청구되는 것의 범위에 대한 제한으로 해석되어서는 안 되고, 그보다는 특정 실시예들에 특정할 수 있는 특징들의 설명으로 해석되어야 한다. 별개의 실시예들의 컨텍스트에서 본 명세서에서 설명되는 특정 특징들이 단일 실시예에서 조합하여 실현될 수도 있다. 반대로, 단일 실시예의 컨텍스트에서 설명되는 다양한 특징들이 다수의 실시예들에서 개별적으로 또는 임의의 적합한 부분 조합(subcombination)으로 실현될 수도 있다. 더욱이, 특징들이 특정 조합들로 작용하는 것으로 위에 설명될 수 있고 심지어 처음에는 그와 같이 청구될 수도 있지만, 청구된 조합으로부터의 하나 이상의 특징이 일부 경우들에서 조합으로부터 삭제될 수 있고, 그 청구는 부분 조합 또는 부분 조합의 변형에 관한 것일 수 있다.
유사하게, 동작들이 도면들에서 묘사되고 청구항들에서 특정 순서로 열거되지만, 이는 바람직한 결과들을 달성하기 위해, 그러한 동작들이 도시된 특정 순서로 또는 순차적인 순서로 수행될 것을 요구하는 것으로 이해되어서는 안 된다. 특정 상황들에서는, 멀티태스킹 및 병렬 처리가 유리할 수 있다. 더욱이, 위에 설명된 실시예들에서의 다양한 시스템 모듈들 및 컴포넌트들의 분리는 모든 실시예들에서 그러한 분리를 요구하는 것으로 이해되어서는 안 되고, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품에 함께 통합되거나 다수의 소프트웨어 제품들로 패키징될 수 있다는 것을 이해해야 한다.
본 주제의 특정 실시예들이 설명되었다. 다른 실시예들이 다음의 청구항들의 범위 내에 있다. 예를 들어, 청구항들에 열거된 액션들은 상이한 순서로 수행될 수 있고 그럼에도 바람직한 결과들을 달성할 수 있다. 일 예로서, 첨부 도면들에서 묘사된 프로세스들은, 바람직한 결과들을 달성하기 위해, 반드시 도시된 특정 순서, 또는 순차적인 순서를 요구하는 것은 아니다. 일부 경우들에서는, 멀티태스킹 및 병렬 처리가 유리할 수 있다.

Claims (16)

  1. 브리지 디바이스(bridge device)에 의해 수행되는 컴퓨터 구현(computer-implemented) 방법에 있어서, 상기 브리지 디바이스는 블록체인 네트워크의 블록체인 네트워크 노드에 통신적으로(communicatively) 링크되고, 상기 방법은:
    상기 브리지 디바이스의 제1 스레드 세트를 이용하여 상기 블록체인 네트워크 노드로부터 제1 블록체인 블록 세트를 검색하는(retrieve) 단계;
    상기 제1 블록체인 블록 세트를 상기 브리지 디바이스에 저장하는 단계; 및
    상기 브리지 디바이스의 제2 스레드 세트를 이용하여 상기 브리지 디바이스에 저장되어 있는 제2 블록체인 블록 세트를 검증하는(verify) 단계
    를 포함하고,
    상기 제1 블록체인 블록 세트를 검색하는 단계 및 상기 제2 블록체인 블록 세트를 검증하는 단계는 상기 제1 스레드 세트 및 상기 제2 스레드 세트를 이용하여 비동기적으로 수행되는 것인, 컴퓨터 구현 방법.
  2. 제1항에 있어서, 상기 제1 블록체인 블록 세트는 제1 블록체인 블록 및 제2 블록체인 블록을 포함하고, 상기 제1 스레드 세트는 제1 스레드 및 제2 스레드를 포함하고, 상기 브리지 디바이스의 상기 제1 스레드 세트를 이용하여 상기 블록체인 네트워크 노드로부터 상기 제1 블록체인 블록 세트를 검색하는 단계는:
    상기 브리지 디바이스의 상기 제2 스레드를 이용하여 상기 블록체인 네트워크 노드로부터 상기 제2 블록체인 블록을 검색하는 것과 병행하여, 상기 브리지 디바이스의 상기 제1 스레드를 이용하여 상기 블록체인 네트워크 노드로부터 상기 제1 블록체인 블록을 검색하는 것을 포함하는 것인, 컴퓨터 구현 방법.
  3. 제1항 또는 제2항에 있어서, 상기 제2 블록체인 블록 세트는 제3 블록체인 블록 및 제4 블록체인 블록을 포함하고, 상기 제2 스레드 세트는 제3 스레드 및 제4 스레드를 포함하고, 상기 브리지 디바이스의 제2 스레드 세트를 이용하여 상기 브리지 디바이스에 저장되어 있는 상기 제2 블록체인 블록 세트를 검증하는 단계는:
    상기 브리지 디바이스의 상기 제4 스레드를 이용하여 상기 제4 블록체인 블록을 검증하는 것과 병행하여, 상기 브리지 디바이스의 상기 제3 스레드를 이용하여 상기 제3 블록체인 블록을 검증하는 것을 포함하는 것인, 컴퓨터 구현 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 브리지 디바이스의 데이터 저장소에 원격 높이 값 및 로컬 높이 값을 유지하는 단계를 더 포함하고,
    상기 원격 높이 값은 상기 블록체인 네트워크 노드 상에 저장되어 있는 블록체인 블록의 수를 지시하고(indicate);
    상기 로컬 높이 값은 상기 브리지 디바이스 상에 저장되어 있는 그리고 상기 블록체인 네트워크 노드로부터 획득된 블록체인 블록의 수를 지시하고,
    상기 브리지 디바이스의 상기 제1 스레드 세트를 이용하여 상기 블록체인 네트워크 노드로부터 상기 제1 블록체인 블록 세트를 검색하는 단계는:
    상기 브리지 디바이스에 의해 상기 로컬 높이 값이 상기 원격 높이 값보다 작은지를 결정하는 단계; 및
    상기 로컬 높이 값이 상기 원격 높이 값보다 작은 것으로 결정하는 것에 응답하여, 상기 블록체인 네트워크 노드로부터 상기 브리지 디바이스 상에 저장되어 있지 않은 적어도 하나의 블록체인 블록을 획득하는 단계
    를 포함하는 것인, 컴퓨터 구현 방법.
  5. 제4항에 있어서,
    상기 블록체인 네트워크 노드로부터 상기 적어도 하나의 블록체인 블록을 획득하는 것에 응답하여, 상기 적어도 하나의 블록체인 블록을 상기 브리지 디바이스 상에 저장하는 단계; 및
    상기 브리지 디바이스에 의해 상기 로컬 높이 값을 업데이트하는 단계
    를 더 포함하는, 컴퓨터 구현 방법.
  6. 제4항 또는 제5항에 있어서,
    상기 로컬 높이 값이 상기 원격 높이 값보다 작지 않은 것으로 결정하는 것에 응답하여, 상기 블록체인 네트워크 노드로부터 블록체인 블록을 획득하는 것을 억제하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  7. 제4항 내지 제6항 중 어느 한 항에 있어서,
    상기 브리지 디바이스에 의해 상기 블록체인 네트워크 노드로부터 통지를 수신하는 단계 - 상기 통지는 상기 원격 높이 값을 지시함 -;
    상기 브리지 디바이스에 의해 클라이언트 디바이스로부터 트랜잭션 요청을 수신하는 단계 - 상기 트랜잭션 요청은 상기 블록체인 네트워크 상에서 실행될 트랜잭션을 요청함 -;
    상기 브리지 디바이스에 의해 상기 트랜잭션 요청을 상기 블록체인 네트워크 노드에 전송하는 단계; 및
    상기 브리지 디바이스에 의해 상기 블록체인 네트워크 노드로부터 제2 통지를 수신하는 단계
    를 더 포함하고,
    상기 제2 통지는 업데이트된 원격 높이 값을 지시하고, 상기 업데이트된 원격 높이 값은 상기 트랜잭션에 적어도 부분적으로 기초하여 상기 블록체인 네트워크 노드 상에 저장되어 있는 블록체인 블록의 수의 증가를 지시하는 것인, 컴퓨터 구현 방법.
  8. 제7항에 있어서, 상기 통지는 상기 블록체인 네트워크의 블록체인에 새로운 블록이 추가된 것을 지시하는 새로운 블록 통지를 포함하고, 상기 새로운 블록 통지는 상기 원격 높이 값이 증가되는 것을 지시하는 것인, 컴퓨터 구현 방법.
  9. 제7항 또는 제8항에 있어서, 상기 브리지 디바이스에 의해 상기 블록체인 네트워크 노드로부터 상기 통지를 수신하는 단계는:
    상기 블록체인 네트워크 노드에 의해 상기 브리지 디바이스에 푸싱되는 상기 통지를 수신하는 단계; 또는
    상기 브리지 디바이스에 의해 상기 블록체인 네트워크 노드로부터 상기 통지를 풀링하는 단계
    중 적어도 하나를 포함하는 것인, 컴퓨터 구현 방법.
  10. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 브리지 디바이스의 데이터 저장소에 로컬 높이 값 및 체크 높이 값을 유지하는 단계를 더 포함하고,
    상기 로컬 높이 값은 상기 브리지 디바이스 상에 저장되어 있는 그리고 상기 블록체인 네트워크 노드로부터 획득된 블록체인 블록의 수를 지시하고;
    상기 체크 높이 값은 상기 브리지 디바이스에 의해 검증된 블록체인 블록의 수를 지시하고,
    상기 브리지 디바이스의 상기 제2 스레드 세트를 이용하여 상기 브리지 디바이스에 저장되어 있는 상기 제2 블록체인 블록 세트를 검증하는 단계는:
    상기 체크 높이 값이 상기 로컬 높이 값보다 작은지를 결정하는 단계; 및
    상기 체크 높이 값이 상기 로컬 높이 값보다 작은 것으로 결정하는 것에 응답하여, 상기 브리지 디바이스에 저장되어 있는 그리고 상기 브리지 디바이스에 의해 검증되지 않은 블록체인 블록을 검증하는 단계
    를 포함하는 것인, 컴퓨터 구현 방법.
  11. 제10항에 있어서, 상기 브리지 디바이스에 저장되어 있는 그리고 상기 브리지 디바이스에 의해 검증되지 않은 상기 블록체인 블록을 검증하는 단계는 상기 블록체인 블록 내의 하나 이상의 블록체인 트랜잭션과 트랜잭션 요청 간의 일관성(consistency)을 결정하는 단계를 포함하는 것인, 컴퓨터 구현 방법.
  12. 제10항 또는 제11항에 있어서,
    상기 브리지 디바이스 상에 저장되어 있는 그리고 상기 브리지 디바이스에 의해 검증되지 않은 블록체인 블록을 검증하는 것에 응답하여, 상기 블록체인 블록이 신뢰성 있는 것으로 결정하는 단계; 및
    상기 브리지 디바이스에 의해 상기 체크 높이 값을 업데이트하는 단계
    를 더 포함하는, 컴퓨터 구현 방법.
  13. 제10항 내지 제12항 중 어느 한 항에 있어서,
    상기 체크 높이 값이 상기 로컬 높이 값보다 작지 않은 것으로 결정하는 것에 응답하여, 상기 브리지 디바이스에 저장되어 있는 블록체인 블록을 검증하는 것을 억제하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  14. 제10항 내지 제13항 중 어느 한 항에 있어서,
    상기 브리지 디바이스에 의해 상기 브리지 디바이스 및 상기 블록체인 네트워크 노드를 포함하는 시스템에서의 시스템 결함을 검출하는 단계; 및
    상기 시스템 결함을 검출하는 것에 응답하여, 상기 체크 높이 값에 기초하여 복구 프로세스를 수행하는 단계
    를 더 포함하고, 상기 복구 프로세스를 수행하는 단계는:
    상기 로컬 높이 값을 상기 체크 높이 값과 동등하게 설정하는 단계; 및
    상기 로컬 높이 값이 상기 블록체인 네트워크 노드 상에 저장되어 있는 블록체인 블록의 수를 지시하는 원격 높이 값보다 작은 것으로 결정하는 것에 응답하여, 상기 블록체인 네트워크 노드로부터 상기 브리지 디바이스 상에 저장되어 있지 않은 적어도 하나의 블록체인 블록을 획득하는 단계
    를 포함하는 것인, 컴퓨터 구현 방법.
  15. 블록체인 기반 결함 허용(fault-tolerant) 시스템을 구현하기 위한 장치에 있어서,
    제1항 내지 제14항 중 어느 한 항의 컴퓨터 구현 방법을 수행하기 위한 복수의 모듈을 포함하는, 장치.
  16. 블록체인 기반 결함 허용 시스템에 있어서,
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 결합되고 제1항 내지 제14항 중 어느 한 항의 컴퓨터 구현 방법을 수행하기 위해 상기 하나 이상의 프로세서에 의해 실행가능한 명령어들이 저장되어 있는 하나 이상의 컴퓨터 판독가능 메모리
    를 포함하는, 블록체인 기반 결함 허용 시스템.
KR1020207031170A 2019-11-27 2019-11-27 블록체인 블록들의 비동기 처리 KR102283744B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/121346 WO2020035095A2 (en) 2019-11-27 2019-11-27 Asynchronous processing of blockchain blocks

Publications (2)

Publication Number Publication Date
KR20210067981A true KR20210067981A (ko) 2021-06-08
KR102283744B1 KR102283744B1 (ko) 2021-08-02

Family

ID=69525960

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207031170A KR102283744B1 (ko) 2019-11-27 2019-11-27 블록체인 블록들의 비동기 처리

Country Status (11)

Country Link
US (2) US11088875B2 (ko)
EP (1) EP3777030B1 (ko)
JP (1) JP6980131B2 (ko)
KR (1) KR102283744B1 (ko)
CN (1) CN111418183B (ko)
AU (1) AU2019321923B2 (ko)
CA (1) CA3098769C (ko)
PH (1) PH12020551810A1 (ko)
SG (1) SG11202010678VA (ko)
TW (1) TWI759793B (ko)
WO (1) WO2020035095A2 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2019321923B2 (en) 2019-11-27 2021-09-02 Alipay (Hangzhou) Information Technology Co., Ltd. Asynchronous processing of blockchain blocks
CN111581214B (zh) * 2020-05-07 2023-07-18 成都汉为科技有限公司 适用于能源区块链的并行merkle树构建与验证方法
CN113168652B (zh) * 2020-08-03 2022-04-15 支付宝(杭州)信息技术有限公司 区块链交易处理系统和方法
CN115398397A (zh) * 2020-08-03 2022-11-25 支付宝(杭州)信息技术有限公司 区块链交易处理系统和方法
CN111935315B (zh) * 2020-09-25 2021-01-12 支付宝(杭州)信息技术有限公司 区块同步方法及装置
EP3997572A1 (en) 2020-09-28 2022-05-18 Alipay (Hangzhou) Information Technology Co., Ltd. Blockchain transaction processing systems and methods
CN113689296B (zh) * 2021-08-30 2023-11-17 北京泛融科技有限公司 一种异步可信计算的合约调度方法、装置和电子设备
CN113505000B (zh) * 2021-09-08 2021-12-21 广东卓启云链科技有限公司 区块链中的多线程处理方法、装置、系统和存储介质
CN114066637A (zh) * 2021-11-15 2022-02-18 深圳前海鸿泰源兴科技发展有限公司 一种基于物联网的金融分析系统与操作方法
CN114363336A (zh) * 2021-12-31 2022-04-15 支付宝(杭州)信息技术有限公司 一种启动/关闭区块链节点服务的方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107301114A (zh) * 2017-06-21 2017-10-27 郑州云海信息技术有限公司 一种云海os监控资源及其信息添加方法和装置
US20180349896A1 (en) * 2017-06-05 2018-12-06 Mastercard International Incorporated Method and system for anonymization of electronic transactions via blockchain
US20180375869A1 (en) * 2017-06-27 2018-12-27 Alibaba Group Holding Limited Multi-blockchain network data processing
US20190034465A1 (en) * 2017-07-28 2019-01-31 Hitachi, Ltd. Blockchain logging of data from multiple systems

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0969053A (ja) * 1995-08-31 1997-03-11 Toshiba Corp メッセージ受信機構に於けるマルチスレッド制御方式及びキューイング方式
CA2260719A1 (en) * 1998-02-04 1999-08-04 Timestep Corporation System and method for ciphering data
US20180324681A1 (en) * 2015-11-09 2018-11-08 Telefonaktiebolaget Lm Ericsson (Publ) First network node, wireless device, and mehthods therein, for handling a request for access in a wireless communications network
US10523526B2 (en) * 2016-12-28 2019-12-31 Acronis International Gmbh System and method for managing services and licenses using a blockchain network
US10158479B2 (en) * 2017-02-06 2018-12-18 Northern Trust Corporation Systems and methods for generating, uploading and executing code blocks within distributed network nodes
CN107103054B (zh) * 2017-04-12 2019-03-26 北京航空航天大学 一种私有区块链的智能合约异步执行存储系统与实现方法
GB201720946D0 (en) * 2017-12-15 2018-01-31 Nchain Holdings Ltd Computer-implemented system and method
CN108259594B (zh) * 2018-01-11 2020-02-18 杭州秘猿科技有限公司 一种基于区块链的数据交互系统以及中继服务器
US20190238316A1 (en) * 2018-01-31 2019-08-01 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing intelligent consensus, smart consensus, and weighted consensus models for distributed ledger technologies in a cloud based computing environment
CA2995214A1 (en) * 2018-02-14 2019-08-14 Beijing Tiande Technologies Limited A method of block building via pipeline parallelization
US10754989B2 (en) * 2018-03-27 2020-08-25 International Business Machines Corporation Runtime self-correction for blockchain ledgers
CN108848119B (zh) 2018-04-03 2020-04-28 阿里巴巴集团控股有限公司 跨区块链的交互方法及装置、系统、电子设备
CN108600353B (zh) * 2018-04-12 2021-01-12 北京天德科技有限公司 一种区块链节点的并行块同步方法
CN108734453B (zh) * 2018-05-21 2023-04-14 腾讯科技(深圳)有限公司 区块链数据处理方法、装置、计算机设备和存储介质
CN108681900A (zh) * 2018-07-18 2018-10-19 众安信息技术服务有限公司 轻节点验证交易的方法
US10671315B2 (en) * 2018-08-17 2020-06-02 Bank Of America Corporation Blockchain architecture for selective data restore and migration
US10901957B2 (en) * 2018-08-29 2021-01-26 International Business Machines Corporation Checkpointing for increasing efficiency of a blockchain
CN109347917A (zh) * 2018-09-14 2019-02-15 北京沃杰知识产权有限公司 区块链数据共识处理方法、系统、存储介质和电子设备
CN109347941A (zh) * 2018-10-10 2019-02-15 南京简诺特智能科技有限公司 一种基于区块链的数据共享平台及其实现方法
AU2019321923B2 (en) 2019-11-27 2021-09-02 Alipay (Hangzhou) Information Technology Co., Ltd. Asynchronous processing of blockchain blocks

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180349896A1 (en) * 2017-06-05 2018-12-06 Mastercard International Incorporated Method and system for anonymization of electronic transactions via blockchain
CN107301114A (zh) * 2017-06-21 2017-10-27 郑州云海信息技术有限公司 一种云海os监控资源及其信息添加方法和装置
US20180375869A1 (en) * 2017-06-27 2018-12-27 Alibaba Group Holding Limited Multi-blockchain network data processing
US20190034465A1 (en) * 2017-07-28 2019-01-31 Hitachi, Ltd. Blockchain logging of data from multiple systems

Also Published As

Publication number Publication date
SG11202010678VA (en) 2020-11-27
CA3098769C (en) 2021-08-17
JP6980131B2 (ja) 2021-12-15
US20210351958A1 (en) 2021-11-11
TW202121226A (zh) 2021-06-01
US11088875B2 (en) 2021-08-10
CN111418183B (zh) 2022-09-16
AU2019321923A1 (en) 2021-06-10
WO2020035095A3 (en) 2020-10-08
PH12020551810A1 (en) 2021-07-26
CA3098769A1 (en) 2020-02-20
US20210160102A1 (en) 2021-05-27
EP3777030B1 (en) 2022-08-24
TWI759793B (zh) 2022-04-01
WO2020035095A2 (en) 2020-02-20
EP3777030A2 (en) 2021-02-17
CN111418183A (zh) 2020-07-14
AU2019321923B2 (en) 2021-09-02
EP3777030A4 (en) 2021-04-14
KR102283744B1 (ko) 2021-08-02
JP2021518962A (ja) 2021-08-05
US11394584B2 (en) 2022-07-19

Similar Documents

Publication Publication Date Title
KR102283744B1 (ko) 블록체인 블록들의 비동기 처리
KR102134549B1 (ko) 분산 시스템에서 프라이머리 노드의 체인지 수행
JP6816300B2 (ja) ブロックチェーンネットワークにおけるトランザクションの並列実行
US11057217B2 (en) Performing parallel execution of transactions in a distributed ledger system
US20200327545A1 (en) Performing parallel execution of transactions in a distributed ledger system
CN111095325B (zh) 在分布式账本系统中进行交易的并行执行
KR20200074908A (ko) 분산 시스템 내의 네트워크 노드들 간의 합의 달성
KR20200074911A (ko) 분산 시스템 내의 네트워크 노드를 위한 복구 프로세스의 수행
US10917249B2 (en) Processing data elements stored in blockchain networks
WO2019170174A2 (en) Implementing a blockchain-based workflow
EP3628093B1 (en) Method and device for avoiding double-spending problem in read-write set-model-based blockchain technology
KR20210058746A (ko) 에러 정정 코드에 기초하는 동적 블록체인 데이터 저장

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant