KR102151899B1 - 트랜잭션 정보 전송 및 합의 검증을 위한 방법 및 디바이스 - Google Patents

트랜잭션 정보 전송 및 합의 검증을 위한 방법 및 디바이스 Download PDF

Info

Publication number
KR102151899B1
KR102151899B1 KR1020197018216A KR20197018216A KR102151899B1 KR 102151899 B1 KR102151899 B1 KR 102151899B1 KR 1020197018216 A KR1020197018216 A KR 1020197018216A KR 20197018216 A KR20197018216 A KR 20197018216A KR 102151899 B1 KR102151899 B1 KR 102151899B1
Authority
KR
South Korea
Prior art keywords
transaction information
consensus node
consensus
transaction
node
Prior art date
Application number
KR1020197018216A
Other languages
English (en)
Other versions
KR20190086747A (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 KR20190086747A publication Critical patent/KR20190086747A/ko
Application granted granted Critical
Publication of KR102151899B1 publication Critical patent/KR102151899B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • 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/3821Electronic credentials
    • 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
    • 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
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • 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
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Business, Economics & Management (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Accounting & Taxation (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Finance (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)
  • Retry When Errors Occur (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

본원의 구현예는 트랜잭션 정보를 전송하고 합의 검증을 수행하기 위한 방법 및 디바이스를 제공한다. 또 다른 합의 노드가 트랜잭션 핸들링 페이즈에서 핸들링 노드에 의해 전송된 트랜잭션 정보의 수신에 실패하면, 또 다른 합의 노드는 합의 검증 페이즈에서, 전처리된 블록 내에 포함된 트랜잭션 정보가 자신의 트랜잭션 풀에 존재하지 않는다고 결정할 경우에, 트랜잭션 정보의 정보 식별자를 포함하는 합의 검증 실패 통지를 핸들링 노드에 전송할 수 있으므로, 핸들링 노드는 트랜잭션 정보를 또 다른 합의 노드에 재전송한다. 본원의 구현예에 따르면, 합의 노드의 트랜잭션 풀에 저장된 트랜잭션 정보가 일관성 있게 유지될 수 있고, 따라서 합의 노드의 합의 검증 결과의 정확성이 저하되지 않는 것을 최대한 보장할 수 있다.

Description

트랜잭션 정보 전송 및 합의 검증을 위한 방법 및 디바이스
본 출원은 블록체인 기술 분야에 관한 것이며, 구체적으로는 트랜잭션 정보 전송 및 합의 검증을 위한 방법 및 장치에 관한 것이다.
블록체인 기술 분야에서 트랜잭션에 대한 합의 검증을 수행하는 책임이 있는 블록체인 노드를 합의 노드(consensus node)라고 한다.
합의 검증 페이즈에서, 합의 검증을 개시하는 합의 노드는 일정 기간 내에 생성된 트랜잭션의 트랜잭션 정보를 전처리된 블록으로 팩킹하고, 전처리된 블록을 합의 검증을 위해 또 다른 합의 노드에 전송해야 하며, 또 다른 합의 노드는 자신의 트랜잭션 풀이 전처리된 블록 내의 모든 트랜잭션 정보를 포함하고 있는지를 검증한다. 검증 결과는, 트랜잭션 풀이 전처리된 블록 내의 모든 트랜잭션 정보를 포함하는 경우에 합의 검증이 성공한 것이다. 검증 결과는, 트랜잭션 풀이 전처리된 블록 내의 모든 트랜잭션 정보를 포함하고 있지 않는 경우에 합의 검증이 실패한 것이다. 이어서, 합의 노드는 전처리된 블록에 대한 합의 노드의 검증 결과에 기초하여 전처리된 블록 내의 트랜잭션 정보가 유효하다 또는 무효하다는 합의에 도달하고, 전처링된 노드에 대해 합의 노드가 수행한 합의 검증의 결과에 따라서 그 합의를 사용한다. 그러므로, 합의 노드의 합의 검증 결과를 최대한 정확하게 하기 위해서는, 합의 노드의 트랜잭션 풀에 저장된 트랜잭션 정보의 일관성을 보장해야 한다.
트랜잭션 핸들링 페이즈에서, 상이한 트랜잭션마다, 각 합의 노드는 트랜잭션의 트랜잭션 정보를 얻기 위해 트랜잭션 핸들링 노드(핸들링 노드 블로우(handling node blow)라고 함)로서 기능할 수 있다. 트랜잭션에 있어서, 트랜잭션에 대응하는 핸들링 노드는 트랜잭션 정보를 각각의 다른 합의 노드에 전송해야 하고, 트랜잭션 정보를 수신하는 또 다른 합의 노드는 그 트랜잭션 정보를 자신의 트랜잭션 풀에 저장한다. 합의 노드는 이러한 방법을 사용하여 합의 노드의 트랜잭션 풀에 저장된 트랜잭션 정보의 일관성을 유지한다.
그러나 언제가 네트워크 장애는 불가피하기 때문에 네트워크 불안정성은 종종 합의 노드 간의 정보 전송의 불안정성을 초래하고, 일부 합의 노드는 전송된 정보를 수신하지 못할 수도 있다. 예를 들어, 핸들링 노드가 트랜잭션 정보를 다른 합의 노드에 전송한다. 네트워크 장애가 발생하면, 핸들링 노드가 다른 합의 노드에 전송한 트랜잭션 정보를 다른 모든 합의 노드가 수신하지 못할 수도 있다. 결과적으로, 합의 노드의 트랜잭션 풀에 저장된 트랜잭션 정보는 일관성을 유지할 수 없게 되고, 그에 따라 합의 노드의 합의 검증 결과의 정확성이 저하된다.
본원의 구현예는 트랜잭션 정보를 전송하고 합의 검증을 수행하는 기존의 방법에 의해서는 합의 노드의 합의 검증 결과의 정확성이 저하된다는 문제를 해결할 수 있는 트랜잭션 전송 및 합의 검증을 위한 방법 및 디바이스를 제공한다.
이전의 기술 문제를 해결하기 위해, 본원의 구현예는 다음과 같이 구현된다.
본원의 구현예는 트랜잭션 정보를 전송하는 방법을 제공하며, 이 방법은, 합의 노드가, 트랜잭션 정보를 취득하는 단계와, 또 다른 합의 노드에 트랜잭션 정보를 전송하는 단계와, 또 다른 합의 노드에 의해 전송되며 트랜잭션 정보의 정보 식별자를 포함하는 합의 검증 실패 통지를 수신할 경우 합의 검증 실패 통지에 기초하여 트랜잭션 정보를 재전송하는 단계를 포함한다.
본원의 구현예는 합의 검증 방법을 제공하며, 이 방법은, 합의 노드가, 또 다른 합의 노드가 전송한 전처리된 블록을 수신하는 단계와, 트랜잭션 풀에 저장된 트랜잭션 정보와 전처리된 블록 내에 포함된 트랜잭션 정보에 기초하여 전처리된 블록에 대해 합의 검증을 수행하는 단계와, 합의 검증 프로세스에서, 전처리된 블록 내에 포함된 트랜잭션 정보의 적어도 일부가 트랜잭션 풀에 존재하지 않는다고 결정되면, 전처리된 블록 내에 포함된 트랜잭션 정보에 있어서 트랜잭션 풀에서 누락된 트랜잭션 정보의 정보 식별자를 결정하는 단계와, 정보 식별자를 포함하는 합의 검증 실패 통지를 다른 합의 노드에 전송하는 단계를 포함한다.
본원의 구현예는 트랜잭션 정보를 전송하는 디바이스를 제공하며, 이 디바이스는, 트랜잭션 정보를 취득하도록 구성된 취득 모듈과, 또 다른 합의 노드에 트랜잭션 정보를 전송하도록 구성된 제1 전송 모듈과, 또 다른 합의 노드에 의해 전송되며 트랜잭션 정보의 정보 식별자를 포함하는 합의 검증 실패 통지가 수신될 때에 합의 검증 실패 통지에 기초하여 트랜잭션 정보를 재전송하도록 구성된 제2 전송 모듈을 포함한다.
본원의 구현예는 합의 검증 디바이스를 제공하며, 이 디바이스는, 또 다른 합의 노드가 전송한 전처리된 블록을 수신하도록 구성된 수신 모듈과, 트랜잭션 풀에 저장된 트랜잭션 정보와 전처리된 블록 내에 포함된 트랜잭션 정보에 기초하여 전처리된 블록에 대해 합의 검증을 수행하도록 구성된 합의 검증 모듈과, 합의 검증 프로세스에서, 전처리된 블록 내에 포함된 트랜잭션 정보의 적어도 일부가 트랜잭션 풀에 존재하지 않는다고 결정되면, 전처리된 블록 내에 포함된 트랜잭션 정보에 있어서 트랜잭션 풀에서 누락된 트랜잭션 정보의 정보 식별자를 결정하고, 정보 식별자를 포함하는 합의 검증 실패 통지를 다른 합의 노드에 전송하도록 구성된 전송 모듈을 포함한다.
본원의 이전 구현예에서 제공되는 기술적 해법으로부터, 본원의 구현예에 있어서, 또 다른 합의 노드가, 트랜잭션 핸들링 페이즈에서 핸들링 노드에 의해 전송된 트랜잭션 정보의 수신에 실패하면, 또 다른 합의 노드는 합의 검증 페이즈에서, 전처리된 블록 내에 포함된 트랜잭션 정보가 자신의 트랜잭션 풀에 존재하지 않는다고 결정할 경우에, 트랜잭션 정보의 정보 식별자를 포함하는 합의 검증 실패 통지를 핸들링 노드에 전송할 수 있고, 그래서, 핸들링 노드가 트랜잭션 정보를 또 다른 합의 노드에 재전송하는 것을 볼 수 있다. 본원의 구현예에 따르면, 합의 노드의 트랜잭션 풀에 저장된 트랜잭션 정보가 일관성 있게 유지될 수 있고, 따라서 합의 노드의 합의 검증 결과의 정확성이 저하되지 않는 것을 최대한 보장할 수 있다.
본원의 구현예의 또는 종래 기술의 기술적 해법을 보다 명확하게 설명하기 위해, 구현예 또는 종래 기술을 설명하는데 필요한 첨부 도면을 간단히 이하에 설명한다. 명백하게, 이하에서 설명하는 첨부 도면은 본원의 일부 구현예를 보여주는 것일 뿐이며, 당업자라면 창조적인 노력 없이 이들 첨부 도면으로부터 다른 도면들도 도출할 수 있다.
도 1은 본원의 구현예에 따른 트랜잭션 정보를 전송하기 위한 방법을 예시하는 흐름도이다.
도 2는 본원의 구현예에 따른 트랜잭션 핸들링 페이즈에서의 신뢰할 수 있는 메커니즘을 예시하는 개략도이다.
도 3은 본원의 구현예에 따른 합의 검증 방법을 예시하는 흐름도이다.
도 4는 본원의 구현예에 따른 트랜잭션 정보를 전송하기 위한 디바이스를 예시하는 개략도이다.
도 5는 본원의 구현예에 따른 합의 검증 디바이스를 예시하는 흐름도이다.
본원의 구현예는 트랜잭션 정보 전송 및 합의 검증을 위한 방법 및 디바이스를 제공한다.
당업자가 본원의 기술적 해법을 이해하게 하기 위해, 이하에서는 본원의 구현예의 첨부 도면을 참조하여 본원의 구현예의 기술적 해결법을 명확하고 이해하기 쉽게 설명한다. 명백한 것은, 설명하는 구현예들이 본원의 구현예의 단지 일부일 뿐이며 전부가 아니라는 점이다. 창의적인 노력 없이 본원의 구현예에 기초하여 당업자들이 획득하는 다른 모든 구현예들은 본원의 보호 범위 내에 있는 것이다.
이하, 본원의 구현예에서 제공하는 기술적 해법에 대해 첨부 도면을 참조하면서 상세하게 설명한다.
도 1은 본원의 구현예에 따른 트랜잭션 정보를 전송하기 위한 방법을 예시하는 흐름도이다. 이 방법은 다음의 단계를 포함한다.
S101. 합의 노드가 트랜잭션 정보를 취득한다.
본원의 본 구현예에서, 트랜잭션 정보는, 계정 어드레스, 트랜잭션 양(amount), 및 트랜잭션 타입 등의 트랜잭션에 수반된 모든 상세일 수 있다.
트랜잭션 핸들링 페이즈에서, 합의 노드는 핸들링 노드로서 역할하며, 클라이언트 디바이스가 전송한 트랜잭션 정보를 수신할 수 있다. 클라이언트 디바이스는 트랜잭션에 참여하는 블록체인 노드의 클라이언트 디바이스일 수 있다. 사실상, 합의 노드는 자체적으로 트랜잭션을 개시할 수 있고, 트랜잭션의 트랜잭션 정보를 생성할 수 있다.
설명의 편의상, 후술하는 핸들링 노드는 핸들링 페이즈에서 트랜잭션을 처리하는 합의 노드이며, 본원의 본 구현예의 실행 본체(body)이다.
S102. 트랜잭션 정보를 또 다른 합의 노드에 전송한다.
트랜잭션 정보를 취득한 후에, 핸들링 노드는 자신의 트랜잭션 풀에 트랜잭션 정보를 저장하고, 트랜잭션 정보를 또 다른 합의 노드에 전송하여, 또 다른 합의 노드는 트랜잭션 정보를 수신한 후에 트랜잭션 정보를 자신의 트랜잭션 풀에 저장한다. 그런 다음, 합의 검증 페이즈에서, 각각의 합의 노드는 해당 합의 노드의 트랜잭션 풀에 저장된 트랙잭션 정보가 전처리된 블록 내의 모든 트랜잭션 정보를 포함하는지를 결정함으로써 전처리된 블록을 검증할 수 있다.
또 다른 합의 노드는 핸들링 노드 이외의 합의 노드이다. 트랜잭션 풀은 트랜잭션 정보를 저장하는데 사용되는 데이터베이스이다. 각각의 합의 노드는 자신의 트랜잭션 풀을 가지고 있다. 트랜잭션 풀은 합의 노드의 메모리 또는 합의 노드의 외부 메모리에 구축될 수 있다.
각 합의 노드가 다중 프로세스 작업을 수행할 수 있다는 것, 즉 트랜잭션 A를 동시에 처리하고 트랜잭션 정보 배치(batch)를 포함하는 전처리된 블록(트랜잭션 A를 포함하지 않음)에 대한 합의 검증에 참여한다는 것을 강조한다. 컴퓨팅 능력이 충분하다면, 합의 노드는 복수의 프로세스를 통해 상이한 트랜잭션들을 동시에 처리하거나 합의 검증을 수행할 수 있다.
본원의 본 구현예에 있어서, 각각의 다른 합의 노드가 트랜잭션의 트랜잭션 정보를 수신하는 것을 최대한 보장하는 방법을 상세히 설명하기 위해, 동일한 트랜잭션의 트랜잭션 정보와 관련하여 트랜잭션 핸들링 페이즈 및 합의 검증 페이즈를 설명할 것이다.
본원의 본 구현예에 있어서, 합의 노드는 각각의 다른 합의 노드마다 스레드(thread)를 생성하고 그 스레드를 통해 트랜잭션 정보를 또 다른 합의 노드에 전송할 수 있다. 합의 노드는 비동기 호출 기술(asynchronous invocation technology)을 사용하여 스레드를 통해 트랜잭션 정보를 전송할 수 있다. 스레드는, 트랜잭션 정보가 전송된 후에는, 또 다른 합의 노드가 트랜잭션 정보를 수신할 수 있는지 여부에 관계없이 취소(revoke)된다. 대안으로, 합의 노드는 동기 호출 기술(synchronous invocation technology)을 사용하여 트랜잭션 정보를 전송할 수 있다. 트랜잭션 정보를 전송한 다음에, 합의 노드는 또 다른 합의 노드가 트랜잭션 정보를 수신한 후에 또 다른 합의 노드가 반환한 응답 신호의 수신을 대기하기 위해 스레드를 계속해서 사용한다.
S103. 또 다른 합의 노드에 의해 전송되며 트랜잭션 정보의 정보 식별자를 포함하는 합의 검증 실패 통지를 수신할 때에 합의 검증 실패 통지에 기초하여 트랜잭션 정보를 재전송한다.
본원의 본 구현예에 있어서, 합의 검증 실패 통지는 후속되는 합의 검증 페이즈에서 또 다른 합의 노드에 의해 전송된다. 합의 검증 페이즈에서, 합의를 개시하는 합의 노드(리더 노드 블로우(leader node blow)라고 함)는 자신의 트랜잭션 풀에 트랜잭션 배치(batch)의 트랜잭션 정보를 팩킹하고, 전처리된 블록을 리더 노드를 제외한 합의 노드(레플리카 노드(replica node)라고 함)에 전송하여, 합의 노드(리더 노드와 레플리카 노드)는 전처리된 블록에 대해 합의 검증을 수행한다. 리더 노드는 합의 노드들에 의해 선출될 수도 있고 또는 랜덤으로 지정될 수도 있다.
본원의 본 구현예가 트랜잭션 핸들링 페이즈에서 핸들링 노드에 의해 수행된다는 것을 강조한다. 합의 검증 페이즈에서, 핸들링 노드는 리더 노드이거나 레플리카 노드일 수 있다. 본원에서는 구현예가 제한되지 않는다. 또한, 핸들링 페이즈에서 또 다른 합의 노드는 핸들링 노드를 제외한 합의 노드이며, 보통 또 다른 합의 노드는 레플리카 노드이거나 리더 노드일 수 있다.
정리하면, 각 합의 노드의 아이덴티티는 트랜잭션 핸들링 페이즈에서 합의 검증 페이즈로 전환된 후에 적절하게 변경될 수 있다. 이전 핸들링 노드가 레플리카 노드가 될 수도 있고, 또 다른 이전 합의 노드가 리더 노드가 될 수도 있다.
본원의 본 구현예에서, 전처리된 블록을 검증할 때, 레플리카 노드는 전처리된 블록 내의 트랜잭션 정보를 자신의 트랜잭션 풀에 저장된 트랜잭션 정보와 비교한다. 레플리카 노드의 트랜잭션 풀에 저장된 트랜잭션 정보가 전처리된 블록 내의 모든 트랜잭션 정보를 포함한다는 것은, 레플리카 노드가 이전 트랜잭션 핸들링 페이즈에서 트랜잭션 정보를 성공적으로 수신했음을 나타낸다.
레플리카 노드의 트랜잭션 풀에 저장된 트랜잭션 정보가 전처리된 블록 내의 모든 트랜잭션 정보를 포함하고 있지 않는다 것은, 다시 말해 전처리된 블록 내의 일부 트랜잭션 정보가 레플리카 노드의 트랜잭션 풀에 저장된 트랜잭션 정보에서 누락되었다는 것은, 이전의 트랜잭션 핸들링 페이즈에서 레플리카 노드가 트랜잭션 정보를 성공적으로 수신하지 못했음을 나타낸다. 이 경우에, 전처리된 블록에 대해 레플리카 노드가 수행한 검증은 실패하였고, 레플리카 노드는 누락된 트랜잭션 정보의 정보 식별자를 포함하는 합의 검증 실패 통지를 다른 레플리카 노드 및 리더 노드에 브로드캐스팅한다. 합의 검증 실패 통지를 수신한 각 합의 노드는 자신의 트랜잭션 풀을 점검(check)하고, 합의 노드의 트랜잭션 풀이, 합의 검증 실패 통지에 포함된 정보 식별자에 대응하는 트랜잭션 정보를 저장하고 있다면(합의 노드가 트랜잭션 핸들링 페이즈에서 트랜잭션 정보를 성공적으로 수신하거나 합의 노드가 핸들링 노드라면), 정보 식별자에 대응하는 트랜잭션 정보를, 합의 검증 실패 통지를 전송한 레플리카 노드에 전송한다.
일반적으로 전처리된 블록 내에 포함된 트랜잭션 정보량이 매우 많다는 것과 트랜잭션 정보는 보통 상이한 핸들링 노드들에 의해 브로드캐스팅된다는 점을 강조한다. 그러므로, 합의 검증 페이즈에서, 각 합의 노드는 전처리된 블록 내에 포함된 트랜잭션 정보가 소실(lack)될 수 있다. 각 합의 노드가 소실한 트랜잭션 정보는 원래 트랜잭션 정보를 브로드캐스팅한 핸들링 노드의 트랜잭션 풀에 틀림없이 저장되어 있다. 또한, 각 합의 노드가 소실한 트랙잭션 정보는 복수의 다른 합의 노드의 트랜잭션 풀에 저장되어 있을 수 있다. 다시 말해서, 합의 검증 페이즈에서, 각 합의 노드가 소실한 트랜잭션 정보는 다른 합의 노드들의 공동 지원(joint assistance)을 통해 보충될 수 있다.
예를 들어, 블록체인 네트워크 내에 5개의 합의 노드 A, B, C, D 및 E가 있는 경우를 상정한다. 합의 검증 페이즈에서, 리더 노드로서 기능하는 A가 전처리된 블록을 생성하고, 전처리된 블록 내에 포함된 트랜잭션 정보는 L, M, N이다. E가 핸들링 노드로서 기능할 때 E가 L을 브로드캐스팅하고, A가 핸들링 노드로서 기능할 때 A가 M을 브로드캐스팅하며, D가 핸들링 노드로서 기능할 때 D가 N을 브로드캐스팅한다. B와 C가 L의 핸들링 페이즈에서 L을 수신하는데 실패하고, E가 M의 핸들링 페이즈에서 M을 수신하는데 실패한다고 하면, B는 N의 핸들링 페이즈에서 N을 수신하는데 실패한다. 이 경우, 합의 검증 페이즈에서, A가 전처리된 블록을 B, C, D 및 E에 전송한 후에, B는 L, M 및 N의 정보 식별자를 포함하는 합의 검증 실패 통지를 A, C, D 및 E에 전송하는데, L, M 및 N이 B의 트랜잭션 풀에서 누락되었기 때문이다. 이와 같이, B는 A가 전송한 L, M 및 N; C가 전송한 M과 N; D가 전송한 L, M, 및 N; 그리고 E가 전송한 L과 N을 별도로 수신한다. 다시 말해, B의 트랜잭션 풀에서 누락된 트랜잭션 정보는 A, C, D 및 E의 합의 지원을 통해 보충될 수 있다.
또한, 네트워크 장애로 인해 합의 검증 실패 통지를 수신하는 모든 합의 노드는 보충을 통해 트랜잭션 정보를 레플리카 노드에 전송한다. 사실상, 레플리카 노드가 트랜잭션 정보를 높은 확률로 수신하게 함으로써 네트워크 장애를 완화하고 합의 노드의 트랜잭션 풀에서 일관성을 보장할 수 있다.
결론적으로, 본원의 본 구현예에 있어서, 트랜잭션 정보를 또 다른 합의 노드에 전송한 후에, 각각의 다른 합의 노드가 트랜잭션 정보를 수신하는지 여부에 상관없이, 합의 노드는 합의 검증 페이즈때까지 수신된 합의 검증 실패 통지에 기초하여 합의 검증 실패 통지를 전송한 또 다른 합의 노드에 트랜잭션 정보를 재전송하는 것을 대기할 수 있다.
도 1에 도시하는 정보를 전송하기 위한 방법에 따르면, 또 다른 합의 노드가, 트랜잭션 핸들링 페이즈에서 핸들링 노드에 의해 전송된 트랜잭션 정보의 수신에 실패하면, 또 다른 합의 노드는 합의 검증 페이즈에서, 전처리된 블록 내에 포함된 트랜잭션 정보가 자신의 트랜잭션 풀에 존재하지 않는다고 결정할 경우에, 트랜잭션 정보의 정보 식별자를 포함하는 합의 검증 실패 통지를 핸들링 노드에 전송할 수 있기에, 핸들링 노드가 트랜잭션 정보를 또 다른 합의 노드에 재전송하는 것을 볼 수 있다. 본원의 본 구현예에 따르면, 합의 노드의 트랜잭션 풀에 저장된 트랜잭션 정보가 일관성 있게 유지될 수 있고, 따라서 합의 노드의 합의 검증 결과의 정확성이 저하되지 않는 것을 최대한 보장할 수 있다.
또한, 본원의 본 구현예에 따르면, 합의 노드가 또 다른 합의 노드에 트랜잭션 정보를 전송하는 신뢰성을 높이기 위해 몇몇 신뢰할 수 있는 메커니즘을 트랜잭션 핸들링 페이즈에 사용할 수 있다.
단계 S102에서, 합의 노드는 각각의 다른 합의 노드마다 스레드를 생성하고, 스레드를 통해 트랜잭션 정보를 또 다른 합의 노드에 전송하며, 또 다른 합의 노드가 트랜잭션 정보를 수신하였다고 결정되거나 미리 결정된 전송 중지 조건이 충족될 때까지, 또 다른 합의 노드가 트랜잭션 정보를 수신하는데 실패하였다고 결정되면, 스레드를 통해 트랜잭션 정보를 또 다른 합의 노드에 재전송한다.
또 다른 합의 노드가 반환한 응답 신호를 지정된 기간 내에 스레드를 통해 수신할 경우, 합의 노드가 트랜잭션 정보를 수신하는 것으로 결정된다. 또 다른 합의 노드가 반환한 응답 신호를 지정된 기간 내에 스레드를 통해 수신하지 못할 경우, 합의 노드가 트랜잭션 정보를 수신하는데 실패한 것으로 결정된다.
미리 결정된 전송 중지 조건은 다음과 같을 수 있다. 트랜잭션 정보를 또 다른 합의 노드에 전송한 횟수가 미리 결정된 횟수에 도달한 것이나, 맨 처음 트랜잭션 정보가 다른 합의 노드에 전송된 이후의 경과 시간이 미리 결정된 듀레이션을 초과한다. 미리 결정된 횟수 및 미리 결정된 듀레이션은 본원에서 제한되지 않는다.
합의 노드는 다음과 같은 방법을 사용하여 매번 스레드를 통해 트랜잭션 정보를 또 다른 합의 노드에 재전송할 수 있는 것을 주목해야 한다. 합의 노드는 이전 전송이 실패했다고 결정되면 트랜잭션 정보를 재전송하거나 특정 시간 간격 대기하여 전송을 지연할 수 있다. 특정 시간 간격은 구성될 수 있고, 매 재전송시 대기하는 특정 시간 간격은 동일할 수도 상이할 수도 있다. 예를 들어, 특정 시간 간격은 점차적으로 증가하거나 감소한다.
예를 들어, 합의 노드는 각각의 다른 합의 노드마다 스레드를 생성하고, 먼저 그 스레드를 통해 트랜잭션 정보를 또 다른 합의 노드에 전송할 수 있다. 합의 노드는 또 다른 합의 노드가 응답 신호를 반환하지 않으면 5초(S)의 지연 후에 트랜잭션 정보를 재전송할 수 있고, 응답 신호가 아직 수신되지 않으면 15초의 지연 후에 트랜잭션 정보를 재전송할 수 있으며, 여전히 해당 신호가 수신되지 않는다면 더 긴 지연 시간 후에 트랜잭션 정보를 재전송할 수 있다. 트랜잭션 정보의 재전송은, 전송 횟수가 미리 결정된 횟수에 도달할 때까지 또는 맨 처음 트랜잭션 정보가 또 다른 합의 노드에 전송된 이후의 경과 시간이 미리 결정된 듀레이션을 초과할 때까지, 이런 식으로 계속된다.
특히, 이전 예에서, 합의 노드가 트랜잭션 정보를 전송한 횟수가 미리 결정된 횟수에 도달하면, 합의 노드는 트랜잭션 정보를 백 큐(back queue)에도 추가하고, 특별히 백 큐를 스캐닝하는데 사용되는 스레드 Recovery를 생성할 수 있다. Recovery가 매 특정 시간 간격마다 백 큐를 스캔하여 트랜잭션 정보를 식별하고, 맨 처음 트랜잭션 정보가 또 다른 합의 노드에 전송된 이후의 경과 시간이 미리 결정된 듀레이션을 초과할 때까지 Recovery를 통해 트랜잭션 정보가 전송된다. 물론 Recovery가 백 큐를 스캔하는 특정 시간 간격도 구성될 수 있다. 즉, 트랜잭션 정보를 전송한 횟수가 미리 결정된 횟수에 도달한 스레드는 합의 노드의 리소스를 절약하기 위해 취소되고, 트랜잭션 정보는 백 큐에 추가되며, 대기중인 Recovery 스레드는 매 특정 시간 간격마다 백 큐를 스캔하고 트랜잭션 정보를 전송하는 것을 책임진다. 이렇게 함으로써, 합의 노드에 의해 비교적 많은 수의 스레드를 유지하는 것으로 인한 리소스 낭비가 완화될 수 있다.
이전 예에서, 합의 노드는 사실상 약한 동기화 호출 기술을 사용하여 트랜잭션 정보를 또 다른 합의 노드에 전송한다. 합의 노드는 각각의 다른 합의 노드마다 스레드를 비동기적으로 호출한 후, 동기화 호출을 사용하여 스레드를 통해 또 다른 합의 노드로 트랜잭션 정보를 전송한다. 스레드는 합의 노드의 컴퓨팅 리소스를 차지하고, 합의 노드는 스레드를 통해 또 다른 합의 노드가 응답 신호를 반환하기를 대기한다. 또한, 또 다른 합의 노드가 지정된 기간 내에 응답 신호를 반환하는데 실패했다는 것은 또 다른 합의 노드가 트랜잭션 정보를 수신하지 못했음을 나타내며, 합의 노드는 스레드를 통해 트랜잭션 정보를 또 다른 합의 노드에 재전송한다. 이와 같이, 트랜잭션 핸들링 페이즈에서 약한 동기화 호출 기술을 사용하면 합의 노드가 또 다른 합의 노드에 의해 반환되는 응답 신호를 특별히 대기하기 위해 더 중요한 작업 프로세스를 따로 둘 필요가 없으며, 합의 노드는 또한 각각의 다른 합의 노드에 대응하는 스레드를 사용하여 응답 신호를 대기하고 트랜잭션 정보를 반복적으로 전송함으로써, 또 다른 합의 노드가 트랜잭션 정보를 성공적으로 수신하는 것을 보장할 수 있다.
또한, 본원의 본 구현예에서, 미리 결정된 전송 중지 조건이 충족될 때에, 또 다른 합의 노드가 여전히 응답 신호를 반환하지 못하면 미리 결정된 큐에 트랜잭션 정보가 추가될 수 있다. 합의 검증 실패 통지를 수신하면, 합의 검증 실패 통지에 포함된 정보 식별자에 기초하여 정보 식별자에 대응하는 트랜잭션 정보를 큐에서 검색한 다음, 그 트랜잭션 정보가 전송된다.
큐는 합의 노드의 메모리 내의 저장 공간으로서, 합의 노드가 핸들링 페이즈에서 반복적으로 전송하기를 시도하지만 여전히 각각의 다른 합의 노드에 의해 수신되지 못한 트랜잭션 정보를 저장하도록 구성된다. 합의 노드가 반복적으로 전송하기를 시도하지만 여전히 수신에 실패한 트랜잭션 정보는, 합의 노드의 트랜잭션 풀이 메모리 내에 구성되지 않은 경우에는 큐에 저장되어, 합의 노드는 합의 검증 페이즈에서 트랜잭션 정보를 소실한 또 다른 합의 노드에 트랜잭션 정보를 보다 신속하게 전송할 수 있다.
특히, 합의 검증 페이즈에서, 메모리 내에 트랜잭션 풀이 구성되지 않을 때, 레플리카 노드가 전송한 합의 검증 실패 통지를 수신할 경우, 합의 노드는, 합의 노드의 트랜잭션 풀을 점검하는 것 대신에, 레플리카 노드가 소실한 트랜잭션 정보가 합의 노드의 큐 내에 있는지 여부를 점검하고, 레플리카 노드가 소실한 트랜잭션 정보가 합의 노드의 큐에 있다면, 트랜잭션 정보를 레플리카 노드에 전송할 수 있거나, 레플리카 노드가 소실한 트랜잭션 정보가 합의 노드의 큐에 없다면(합의 노드의 트랜잭션 풀이 레플리카 노드가 소실한 트랜잭션 정보를 포함하더라도), 트랜잭션 정보를 레플리카 노드에 전송할 필요가 없다. 이와 같이, 레플리카 노드가 트랜잭션 정보 X를 소실하였다면, 트랜잭션 정보 X를 브로드캐스팅하는 핸들링 노드가 핸들링 노드의 큐로부터 트랜잭션 정보 X를 취득하여 트랜잭션 정보 X를 전송하는 것이 항상 보장될 수 있다. 따라서, 트랜잭션 정보가 언제나 신속하게 보충될 수 있다.
도 2는 본원의 구현예에 따른 트랜잭션 핸들링 페이즈에서의 신뢰할 수 있는 메커니즘을 예시하는 개략도이다. 도 2에 도시하는 바와 같이, 트랜잭션 핸들링 페이즈에서, 핸들링 노드는 5초의 지연 또는 10분(min)의 지연과 같은 방법을 사용하여 또 다른 합의 노드로의 트랜잭션 정보 전송을 시도하고, 트랜잭션 정보를 전송하기를 시도하는 방법은 억제된다. 즉, 트랜잭션 정보는 전송 횟수가 3보다 큰 경우보다 긴 지연을 사용하여 전송된다. 트랜잭션 정보는, 트랜잭션 정보의 활성 기간(맨 처음 트랜잭션 정보가 또 다른 합의 노드에 전송된 이후의 경과 시간)이 미리 결정된 듀레이션(예컨대, 1 시간)을 초과하면, 미리 결정된 큐에 전송되고, 전송이 중지된다. 합의 검증 페이즈에서, 합의 노드는 합의 검증 실패 통지를 수신할 때에만 큐 내의 트랜잭션 정보를 활성화한다.
미리 결정된 듀레이션은 각 합의 노드가 합의 검증을 수행하는 기간에 기초하여 결정될 수도 있고 또는 네트워크 장애의 문제 해결 기간에 기초하여 결정될 수도 있음을 강조한다.
도 2에 도시하는 신뢰할 수 있는 메커니즘에 따르면, 합의 노드는 트랜잭션 정보의 전송 시도를 지연하고, 합의 노드가 5초의 지연 후에 트랜잭션 정보를 전송하기를 2회 반복한 후에, 일시적으로 해결할 수 없는 전송 문제(트랜잭션 정보를 성공적으로 수신하지 못한 또 다른 합의 노드가 다운되거나 네트워크에 큰 장애가 발생한 것일 수 있음)가 있음을 나타내고 있다. 따라서, 합의 노드는 트랜잭션 정보를 또 다른 합의 노드에 전송하는 것을 일시적으로 중지한다. 상대적으로 긴 시간(예컨대, 10분) 대기한 후에, 전송 문제가 완화되었을 수 있고, 그러면 합의 노드가 트랜잭션 정보를 계속 전송할 수 있다. 트랜잭션 정보의 활성 기간이 너무 긴 경우, 트랜잭션 정보는 미리 결정된 큐에 추가되어, 보충을 통해, 트랜잭션 정보를 소실한 또 다른 합의 노드에 트랜잭션 정보를 후속해서 재전송하는 것을 대기할 수 있다.
본원의 본 구현예에서, 합의 검증 페이즈에서, 합의 노드는 트랜잭션 정보를 소실한 각 합의 노드를 공동으로 보충하므로, 네트워크 장애에 의해 야기되는 합의 노드의 트랜잭션 풀의 비일관성 문제가 잘 완화될 수 있다. 이것을 기초로 하여, 도 2에 도시하는 신뢰할 수 있는 메커니즘에 따르면, 트랜잭션 핸들링 페이즈에서 또 다른 합의 노드에 의한 트랜잭션 정보의 수신 성공률을 상승시킬 수 있는 수단이 사용될 수 있다.
도 3은 본원의 구현예에 따른 합의 검증 방법이다. 이 방법은 다음의 단계를 포함한다.
S301. 합의 노드가 또 다른 합의 노드에 의해 전송된 전처리된 블록을 수신한다.
S302. 트랜잭션 풀에 저장된 트랜잭션 정보와 전처리된 블록 내에 포함된 트랜잭션 정보에 기초하여 전처리된 블록에 대해 합의 검증을 수행한다.
S303. 합의 검증 프로세스에서, 전처리된 블록 내에 포함된 트랜잭션 정보의 적어도 일부가 트랜잭션 풀 내에 존재하지 않는다고 결정되면, 전처리된 블록 내에 포함된 트랜잭션 정보에 있어서 트랜잭션 풀에서 누락된 트랜잭션 정보의 정보 식별자를 결정한다.
S304. 정보 식별자를 포함하는 합의 검증 실패 통지를 다른 합의 노드에 전송한다.
본원의 본 구현예에서, 합의 노드는 합의 검증 페이즈에서 전처리된 블록을 검증하는 합의 노드, 즉 레플리카 노드이다. 또 다른 합의 노드는 합의를 개시하는 노드, 즉 리더 노드이다.
도 3에 도시하는 합의 검증 방법의 상세한 설명은 도 1에 도시하는 트랜잭션 정보를 전송하기 위한 방법의 설명에 기재되어 있다. 상세한 내용은 간략함을 위해 여기에서 생략된다.
도 1에 도시하는 트랜잭션 정보를 전송하기 위한 방법에 기초하며, 본원의 구현예는 대응하여 트랜잭션 정보를 전송하는 디바이스도 제공한다. 도 4에 도시하는 바와 같이, 본 디바이스는 트랜잭션 정보를 취득하도록 구성된 취득 모듈(401)과, 트랜잭션 정보를 또 다른 합의 노드에 전송하도록 구성된 제1 전송 모듈(402)과, 또 다른 합의 노드에 의해 전송되며 트랜잭션 정보의 정보 식별자를 포함하는 합의 검증 실패 통지가 수신될 때에 합의 검증 실패 통지에 기초하여 트랜잭션 정보를 재전송하도록 구성된 제2 전송 모듈(403)을 포함한다.
취득 모듈(401)은 클라이언트가 전송한 트랜잭션 정보를 수신하도록 구성된다.
제1 전송 모듈(402)은 각각의 다른 합의 노드마다 스레드를 생성하고 그 스레드를 통해 트랜잭션 정보를 또 다른 합의 노드에 전송하도록 구성된다.
제1 전송 모듈(402)은, 또 다른 합의 노드가 트랜잭션 정보를 수신하였다고 결정되거나 미리 결정된 전송 중지 조건이 충족될 때까지, 또 다른 합의 노드가 트랜잭션 정보를 수신하는데 실패하였다고 결정되면, 스레드를 통해 트랜잭션 정보를 또 다른 합의 노드에 재전송하도록 구성된다.
제1 전송 모듈(402)은, 또 다른 합의 노드가 반환한 응답 신호가 지정된 기간 내에 스레드를 통해 수신되면 또 다른 합의 노드가 트랜잭션 정보를 수신하였다고 결정하거나, 또 다른 합의 노드가 반환한 응답 신호가 지정된 기간 내에 스레드를 통해 수신되지 않으면 또 다른 합의 노드가 트랜잭션 정보를 수신하는데 실패하였다고 결정하도록 구성된다.
미리 결정된 전송 중지 조건은 다음과 같을 수 있다. 또 다른 합의 노드에 트랜잭션 정보를 전송하는 횟수가 미리 결정된 횟수에 도달하는 것이나, 맨 처음 트랜잭션 정보가 다른 합의 노드에 전송된 이후의 경과 시간이 미리 결정된 듀레이션을 초과한 것이다.
디바이스는, 미리 결정된 전송 중지 조건이 충족될 때에 트랜잭션 정보를 미리 결정된 큐에 추가하도록 구성되는 추가 모듈(404)을 더 포함한다.
제2 전송 모듈(403)은, 합의 검증 실패 통지에 포함된 정보 식별자에 기초하여 정보 식별자에 대응하는 트랜잭션 정보를 큐에서 검색(searching)한 다음, 그 트랜잭션 정보를 전송하도록 구성된다.
도 3에 도시하는 합의 검증 방법에 기초하면, 본원의 구현예는 대응하여 합의 검증 디바이스도 제공한다. 도 5에 도시하는 바와 같이, 본 디바이스는, 또 다른 합의 노드가 전송한 전처리된 블록을 수신하도록 구성된 수신 모듈(501)과, 트랜잭션 풀에 저장된 트랜잭션 정보와 전처리된 블록 내에 포함된 트랜잭션 정보에 기초하여 전처리된 블록에 대해 합의 검증을 수행하도록 구성된 합의 검증 모듈(502)과, 합의 검증 프로세스에서, 전처리된 블록 내에 포함된 트랜잭션 정보의 적어도 일부가 트랜잭션 풀에 존재하지 않는다고 결정되면, 전처리된 블록 내에 포함된 트랜잭션 정보에 있어서 트랜잭션 풀에서 누락된 트랜잭션 정보의 정보 식별자를 결정하고, 정보 식별자를 포함하는 합의 검증 실패 통지를 다른 합의 노드에 전송하도록 구성된 전송 모듈(503)을 포함한다.
1990년대에는 기술 향상이 하드웨어 향상(예컨대, 다이오드, 트랜지스터, 또는 스위치 등의 회로 구조에의 향상)인지 소프트웨어 향상(예컨대, 방법 프로시저에의 향상)인지가 명백하게 구별될 수 있었다. 그러나, 기술이 발전함에 따라, 수많은 방법 프로시저에의 향상이 하드웨어 회로 구조에 대한 직접적인 향상으로서 간주될 수도 있다. 설계자는 대개 향상된 방법 프로시저를 하드웨어 회로에 프로그래밍하여 대응하는 하드웨어 회로 구조를 얻는다. 그러므로, 방법 프로시저가 하드웨어 엔티티 모듈을 사용해서 향상될 수 있다. 예를 들어, PLD(Programmable Logic Device)(예컨대, FPGA(Field Programmable Gate Array))가 그러한 집적 회로이고, 그 PLD의 논리적 기능은 디바이스 프로그래밍을 통해 사용자가 결정한다. 설계자는 특정 용도의 집적 회로 칩을 설계하고 생산할 것을 칩 제조업자에 요청하지 않고도 디지털 시스템을 PLD에 "통합"하기 위한 프로그래밍을 수행한다. 뿐만 아니라, 현재, 이러한 프로그래밍은, 집적 회로 칩을 수동으로 제작하는 것보다는, 주로 "로직 컴파일러" 소프트웨어를 사용하여 구현된다. 로직 컴파일러 소프트웨어는 프로그램을 개발하고 작성하는데 사용되는 소프트웨어 컴파일러와 유사하다. 오리지널 코드는 컴파일을 위해 특정 프로그래밍 언어로 작성되어야 한다. 이 언어를 하드웨어 디스크립션 언어(HDL, hardware description language)라고 한다. ABEL(Advanced Boolean Expression Language), AHDL(Altera Hardware Description Language), 컨플루언스(Confluence), CURL(Cornell University Programming Language), HDCal, JHDL(Java Hardware Description Language), Lava, Lola, MyHDL, PALASM, 및 RHDL(Ruby Hardware Description Language) 등의 수많은 HDL이 있다. VHDL(very-high-speed integrated circuit hardware description language) 및 Verilog가 가장 일반적으로 사용된다. 또한, 당업자라면, 설명한 몇몇 하드웨어 디스크립션 언어를 이용하여 방법 프로시저가 논리적으로 프로그래밍되고 집적 회로에 프로그래밍되면, 논리적 방법 프로시저를 구현하는 하드웨어 회로가 쉽게 취득될 수 있음을 이해해야 한다.
임의의 적절한 방법을 이용하여 컨트롤러가 구현될 수 있다. 예를 들어, 컨트롤러는 마이크로프로세서 또는 프로세서와, 마이크로프로세서 또는 프로세서, 로직 게이트, 스위치, ASIC(Application Specific Integrated Circuit), 프로그래머블 로직 컨트롤러, 또는 빌트인 마이크로컨트롤러에 의해 실행될 수 있는 컴퓨터 판독 가능 프로그램 코드(예컨대, 소프트웨어 또는 펌웨어)를 저장한 컴퓨터 판독 가능 매체일 수 있다. 컨트롤러의 예는 다음과 같은 마이크로컨트롤러를 포함하지만, 이들에 한정되지는 않는다: ARC 625D, 아트멜(Atmel) AT91SAM, 마이크로칩(Microchip) PIC18F26K20 및 실리콘 랩스(Silicone Labs) C8051F320. 메모리 컨트롤러는 메모리의 제어 로직의 일부로서도 구현될 수 있다. 당업자라면, 컴퓨터 판독 가능 프로그램 코드를 사용하여 컨트롤러를 구현하는 것뿐만 아니라, 컨트롤러로 하여금 동일한 기능을 로직 게이트, 스위치, ASIC, 프로그래머블 로직 컨트롤러, 및 빌트인 마이크로컨트롤러의 형태로 구현하게 할 수 있도록 방법의 단계에서 로직 프로그래밍이 수행될 수 있다는 것도 알 것이다. 이에, 컨트롤러는 하드웨어 컴포넌트로서 간주될 수 있고, 컨트롤러 내에 포함되어 다양한 기능을 구현하도록 구성된 디바이스도 하드웨어 컴포넌트 내의 구조로서도 간주될 수 있다. 또는, 다양한 기능을 구현하도록 구성되는 디비이스도 방법을 구현하기 위한 소프트웨어 모듈 및 하드웨어 컴포넌트 내의 구조 둘 다로서 간주될 수 있다.
앞의 구현예에서 예시한 시스템, 디바이스, 모듈, 또는 유닛은 컴퓨터 칩 또는 엔티티를 사용하여 구현될 수도, 또는 특정 기능을 갖는 제품을 사용함으로써 구현될 수도 있다. 통상의 구현예의 디바이스는 컴퓨터이다. 컴퓨터는 예컨대 퍼스널 컴퓨터, 랩톱 컴퓨터, 셀룰러 폰, 카메라 폰, 스마트 폰, 퍼스널 디지털 어시스턴트, 미디어 플레이어, 내비게이션 디바이스, 이메일 디바이스, 게임 콘솔, 태블릿 컴퓨터, 웨어러블 디바이스, 또는 이들 디바이스 중 임의의 조합을 포함할 수 있다.
설명의 편의상, 전술한 디바이스는 기능들을 다양한 유닛들로 분할함으로써 설명된다. 사실상, 본원이 구현될 때, 유닛들의 기능이 소프트웨어 및/또는 하드웨어의 하나 이상의 부분(piece)으로 구현될 수 있다.
당업자라면 본 개시내용의 구현예가 방법, 시스템, 또는 컴퓨터 프로그램 제품으로서 제공될 수 있음을 이해해야 한다. 따라서, 본 개시내용은 하드웨어 전용 구현, 소프트웨어 전용 구현, 또는 소프트웨어와 하드웨어가 조합된 구현의 형태를 사용할 수 있다. 또한, 본원은 하나 이상의 컴퓨터 사용 가능한 저장 매체(디스크 메모리, CD-ROM, 광학 메모리 등을 포함하지만 이에 한정되지는 않음) 상에서 구현되는 컴퓨터 프로그램 제품의 형태를 사용할 수 있다.
본 개시내용은 본 개시내용의 실시형태에 따른 방법, 디바이스(시스템), 및 컴퓨터 프로그램 제품의 흐름도 및/또는 블록도를 참조하여 설명되었다. 흐름도 및/또는 블록도 내의 각각의 프로세스 및/또는 각각의 블록, 및 흐름도 및/또는 블록도 내의 프로세스 및/또는 블록의 조합을 구현하는 데에 컴퓨터 프로그램 명령어가 사용될 수 있음을 이해해야 한다. 이들 컴퓨터 프로그램 명령어는 머신을 생성하기 위해 범용 컴퓨터, 전용 컴퓨터, 빌트인 프로세서, 또는 다른 프로그래머블 데이터 프로세싱 디바이스의 프로세서에 제공되어, 컴퓨터 또는 또 다른 프로그래머블 데이터 프로세싱 디바이스의 프로세서에 의해 실행되는 명령어가 흐름도 내의 하나 이상의 프로세스 및/또는 블록도 내의 하나 이상의 블록 내의 지정된 기능을 구현하는 디바이스를 생성한다.
이들 컴퓨터 프로그램 명령어는 또한 컴퓨터 판독 가능한 메모리에 저장되어, 컴퓨터 또는 다른 프로그래머블 데이터 프로세싱 디바이스로 하여금, 그 컴퓨터 판독 가능 메모리에 저장된 명령어가 지시 디바이스(instruction device)를 포함하는 아티팩트를 생성하게 하는, 특정 방식으로 동작하도록 지시할 수 있다. 지시 디바이스는 흐름도의 하나 이상의 프로세스 및/또는 블록도의 하나 이상의 블록 내의 특정 기능을 구현한다.
이들 컴퓨터 프로그램 명령어는 컴퓨터 또는 다른 프로그래머블 데이터 프로세싱 디바이스 상에 로딩되어, 일련의 동작 및 단계가 컴퓨터 또는 다른 프로그래머블 디바이스 상에서 수행되는 것에 의해 컴퓨터 구현 프로세싱을 생성하게 할 수 있다. 이에, 컴퓨터 또는 또 다른 프로그래머블 디바이스 상에서 실행되는 명령어는 흐름도의 하나 이상의 프로세스 및/또는 블록도의 하나 이상의 블록 내의 지정된 기능을 구현하기 위한 단계를 제공한다.
통상의 구성에 있어서, 컴퓨팅 디바이스는 하나 이상의 프로세서(CPU), 하나 이상의 입출력 인터페이스, 하나 이상의 네트워크 인터페이스, 및 하나 이상의 메모리를 포함한다.
메모리는 비지속성 메모리, 랜덤 액세스 메모리(RAM), 비휘발성 메모리, 및/또는 컴퓨터 판독 가능한 매체로 되어 있는 또 다른 형태, 예컨대 리드 온리 메모리(ROM) 또는 플래시 메모리(플래시 RAM)를 포함할 수 있다. 메모리는 컴퓨터 판독 가능 매체의 일례이다.
컴퓨터 판독 가능 매체는 임의의 방법 또는 기술을 사용하여 메시지를 저장할 수 있는, 지속성, 비지속성, 가반성, 및 비가반성 매체를 포함할 수 있다. 메시지는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터일 수 있다. 컴퓨터 저장 매체의 예로는 파라미터 랜덤 액세스 메모리(PRAM), 정적 랜덤 액세스 메모리(SRAM), 동적 랜덤 액세스 메모리(DRAM), 다른 유형의 랜덤 액세스 메모리(RAM), 리드 온리 메모리(ROM), 전기적 소거 가능 프로그램 가능 판독 전용 메모리(EEPROM), 플래시 메모리 또는 다른 메모리 기술, CD-ROM(compact disk read-only memory), DVD(digital versatile disc) 또는 다른 광학 스토리지, 자기 카세트, 자기 테이프, 자기 테이프/자기 디스크 메모리 또는 다른 자기 저장 디바이스, 또는 컴퓨팅 디바이스에 의해 액세스될 수 있는 메시지를 저장하는데 사용될 수 있는 기타 비전송 매체를 포함할 수 있다. 본 명세서 내의 정의에 기초하여, 컴퓨터 판독 가능 매체는 변조된 데이터 신호 및 캐리어와 같은 일시적 컴퓨터 판독 가능 매체(일시적 매체)를 포함하지 않는다.
또한, "포함(include, comprise)" 및 이것의 기타 변형형에 해당하는 표현은 비배타적인 포함(inclusion)을 망라하는 것이 의도되어, 일련의 요소를 포함하는 프로세스, 방법, 제품, 또는 디바이스는 이들 요소를 포함할 뿐만 아니라, 명시적으로 열거되지 않은 다른 요소도 포함하거나 그러한 프로세스, 방법, 제품 또는 디바이스의 고유한 요소를 더 포함하는 것을 알아야 한다. 제약이 더 없다면, "...를 포함한다"가 붙은 요소는 그 요소를 포함하는 프로세스, 방법, 제품 또는 디바이스에서의 추가적인 동일한 요소의 존재를 배제하지 않는다.
당업자라면 본원의 구현예가 방법, 시스템, 또는 컴퓨터 프로그램 제품으로서 제공될 수 있음을 이해해야 한다. 따라서, 본원은 하드웨어 전용 구현, 소프트웨어 전용 구현, 또는 소프트웨어와 하드웨어가 조합된 구현의 형태를 사용할 수 있다. 또한, 본원은 하나 이상의 컴퓨터 사용 가능한 저장 매체(디스크 메모리, CD-ROM, 광학 메모리 등을 포함하지만 이에 한정되지는 않음) 상에서 구현되는 컴퓨터 프로그램 제품의 형태를 사용할 수 있다.
본원은 컴퓨터에 의해 실행되는 컴퓨터 실행 가능 명령어, 예를 들어 프로그램 모듈의 일반적 콘텍스트에서 설명될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 실행하거나 특정 추상 데이터 타입을 구현하는, 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 본원은 분산형 컴퓨팅 환경에서 실시될 수도 있다. 분산형 컴퓨팅 환경에서는, 통신 네트워크를 통해 접속된 원격 프로세싱 디바이스들에 의해 태스크가 수행된다. 분산형 컴퓨팅 환경에서, 프로그램 모듈은 저장 디바이스를 포함하는 로컬 및 원격 컴퓨터 저장 매체 둘 다에 위치할 수 있다.
본 명세서의 구현예는 점진적인 방식으로 설명되었다. 구현예들에서의 동일하거나 유사한 부분에 대해서는 그 구현예들을 참조하면 된다. 각 구현예는 다른 구현예와의 차이점에 중점을 둔다. 특히, 시스템 구현예는 기본적으로 방법 구현예와 유사하므로 간략하게 설명되었다. 관련 부분에 대해서는, 방법 구현예의 관련 설명을 참조하면 된다.
앞의 구현예들은 본원의 구현예일 뿐이며, 본원을 제한하려고 하는 것은 아니다. 당업자라면 본원에 다양한 변형 및 변화를 가할 수 있다. 본원의 사상 및 원리에서 벗어나는 않고서 이루어지는 임의의 변형, 등가의 대체, 또는 개선 등은 모두 본원의 청구범위 내에 속하는 것이다.

Claims (20)

  1. 트랜잭션 정보를 전송하기 위한 컴퓨터 구현 방법(computer-implemented method)에 있어서,
    제1 합의 노드에 의해, 트랜잭션 정보를 수신하는 단계와,
    상기 트랜잭션 정보를 제2 합의 노드에 전송하는 단계와,
    상기 제2 합의 노드로부터 합의 검증 실패 통지를 수신하는 단계로서, 상기 합의 검증 실패 통지는 상기 트랜잭션 정보의 정보 식별자를 포함하고, 상기 합의 검증 실패 통지는 상기 트랜잭션 정보의 적어도 일부가 상기 제2 합의 노드의 트랜잭션 풀에서 누락된 것과 상기 트랜잭션 정보에 대한 검증이 실패한 것을 표시하는 것인, 상기 합의 검증 실패 통지를 수신하는 단계와,
    상기 합의 검증 실패 통지의 수신에 응답하여, 상기 합의 검증 실패 통지에 포함된 정보 식별자에 대응하는 트랜잭션 정보를 상기 제1 합의 노드의 트랜잭션 풀이 저장하고 있는지를 결정하는 단계와,
    상기 합의 검증 실패 통지에 포함된 정보 식별자에 대응하는 트랜잭션 정보를 상기 제1 합의 노드의 트랜잭션 풀이 저장하고 있다는 결정에 응답하여, 상기 제1 합의 노드에 의해, 상기 정보 식별자에 대응하는 트랜잭션 정보를 상기 제2 합의 노드에 재전송하는 단계
    를 포함하는 컴퓨터 구현 방법.
  2. 제1항에 있어서, 상기 제1 합의 노드에 의해, 트랜잭션 정보를 수신하는 단계는,
    상기 제1 합의 노드에 의해, 클라이언트 디바이스로부터 상기 트랜잭션 정보를 수신하는 단계를 포함하는, 컴퓨터 구현 방법.
  3. 제1항에 있어서, 상기 트랜잭션 정보를 제2 합의 노드에 전송하는 단계는,
    각각의 다른 합의 노드에 대해 스레드를 생성하는 단계와,
    상기 스레드를 통해 상기 트랜잭션 정보를 상기 제2 합의 노드에 전송하는 단계를 포함하는, 컴퓨터 구현 방법.
  4. 제3항에 있어서, 상기 스레드를 통해 상기 트랜잭션 정보를 상기 제2 합의 노드에 전송하는 단계는,
    상기 제2 합의 노드가 상기 트랜잭션 정보를 수신하였다고 결정되거나 미리 결정된 전송 중지 조건이 충족될 때까지, 상기 제2 합의 노드가 상기 트랜잭션 정보를 수신하는데 실패하였다는 결정에 응답하여 상기 스레드를 통해 상기 트랜잭션 정보를 상기 제2 합의 노드에 재전송하는 단계를 포함하는, 컴퓨터 구현 방법.
  5. 제4항에 있어서, 상기 제2 합의 노드가 상기 트랜잭션 정보를 수신하였다고 결정하는 것은,
    상기 제2 합의 노드가 반환한 응답 신호가 지정된 기간 내에 상기 스레드를 통해 수신되었다는 결정에 응답하여 상기 제2 합의 노드가 상기 트랜잭션 정보를 수신하였다고 결정하는 것을 포함하고,
    상기 제2 합의 노드가 상기 트랜잭션 정보를 수신하는데 실패하였다고 결정하는 것은,
    상기 제2 합의 노드가 반환한 응답 신호가 상기 지정된 기간 내에 상기 스레드를 통해 수신되지 않았다는 결정에 응답하여 상기 제2 합의 노드가 상기 트랜잭션 정보를 수신하는데 실패하였다고 결정하는 것을 포함하는, 컴퓨터 구현 방법.
  6. 제4항에 있어서, 상기 미리 결정된 전송 중지 조건은,
    상기 트랜잭션 정보를 상기 제2 합의 노드에 전송한 횟수가 미리 결정된 횟수에 도달하는 것, 또는
    맨 처음 상기 트랜잭션 정보를 상기 제2 합의 노드에 전송한 이후의 경과된 지속 시간이 미리 결정된 듀레이션을 초과하는 것을 포함하는, 컴퓨터 구현 방법.
  7. 제4항에 있어서, 상기 미리 결정된 전송 중지 조건이 충족되었다는 결정에 응답하여, 상기 방법은,
    상기 트랜잭션 정보를 미리 결정된 큐에 추가하는 단계를 더 포함하고,
    상기 합의 검증 실패 통지에 기초해서 상기 트랜잭션 정보를 상기 제2 합의 노드에 재전송하는 단계는,
    상기 합의 검증 실패 통지 내의 트랜잭션 정보의 정보 식별자에 대응하는 트랜잭션 정보를 상기 미리 결정된 큐에서 검색(searching)하는 단계와,
    상기 트랜잭션 정보를 상기 제2 합의 노드에 전송하는 단계를 포함하는, 컴퓨터 구현 방법.
  8. 제1항에 있어서,
    상기 제2 합의 노드에 의해, 상기 제1 합의 노드로부터 전처리된 블록을 수신하는 단계와,
    상기 제2 합의 노드의 트랜잭션 풀에 저장된 트랜잭션 정보와 상기 전처리된 블록에 포함된 트랜?Ъ? 정보에 기초하여 상기 전처리된 블록에 대해 합의 검증을 수행하는 단계와,
    상기 전처리된 블록에 포함된 트랜잭션 정보의 적어도 일부가 상기 제2 합의 노드의 트랜잭션 풀에 존재하지 않는다는 결정에 응답하여, 상기 제2 합의 노드에 의해, 상기 전처리된 블록에 포함된 트랜잭션 정보의 정보 식별자를 결정하는 단계와,
    상기 제2 합의 노드에 의해, 상기 트랜잭션 정보의 정보 식별자를 포함하는 합의 검증 실패 통지를 상기 제1 합의 노드에 전송하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  9. 동작들을 수행하기 위해 컴퓨터 시스템에 의해 실행 가능한 하나 이상의 명령어를 저장한 비일시적(non-transitory) 컴퓨터 판독 가능한 저장 매체에 있어서, 상기 동작들은,
    제1 합의 노드에 의해, 트랜잭션 정보를 수신하는 것과,
    상기 트랜잭션 정보를 제2 합의 노드에 전송하는 것과,
    상기 제2 합의 노드로부터 합의 검증 실패 통지를 수신하는 것으로서, 상기 합의 검증 실패 통지는 상기 트랜잭션 정보의 정보 식별자를 포함하고, 상기 합의 검증 실패 통지는 상기 트랜잭션 정보의 적어도 일부가 상기 제2 합의 노드의 트랜잭션 풀에서 누락된 것과 상기 트랜잭션 정보에 대한 검증이 실패한 것을 표시하는 것인, 상기 합의 검증 실패 통지를 수신하는 것과,
    상기 합의 검증 실패 통지의 수신에 응답하여, 상기 합의 검증 실패 통지에 포함된 정보 식별자에 대응하는 트랜잭션 정보를 상기 제1 합의 노드의 트랜잭션 풀이 저장하고 있는지를 결정하는 것과,
    상기 합의 검증 실패 통지에 포함된 정보 식별자에 대응하는 트랜잭션 정보를 상기 제1 합의 노드의 트랜잭션 풀이 저장하고 있다는 결정에 응답하여, 상기 제1 합의 노드에 의해, 상기 정보 식별자에 대응하는 트랜잭션 정보를 상기 제2 합의 노드에 재전송하는 것
    을 포함하는, 비일시적 컴퓨터 판독 가능한 저장 매체.
  10. 제9항에 있어서, 상기 트랜잭션 정보를 제2 합의 노드에 전송하는 것은,
    각각의 다른 합의 노드에 대해 스레드를 생성하는 것과,
    상기 스레드를 통해 상기 트랜잭션 정보를 상기 제2 합의 노드에 전송하는 것을 포함하는, 비일시적 컴퓨터 판독 가능한 저장 매체.
  11. 제10항에 있어서, 상기 스레드를 통해 상기 트랜잭션 정보를 상기 제2 합의 노드에 전송하는 것은,
    상기 제2 합의 노드가 상기 트랜잭션 정보를 수신하였다고 결정되거나 미리 결정된 전송 중지 조건이 충족될 때까지, 상기 제2 합의 노드가 상기 트랜잭션 정보를 수신하는데 실패하였다는 결정에 응답하여 상기 스레드를 통해 상기 트랜잭션 정보를 상기 제2 합의 노드에 재전송하는 것을 포함하는, 비일시적 컴퓨터 판독 가능한 저장 매체.
  12. 제11항에 있어서, 상기 제2 합의 노드가 상기 트랜잭션 정보를 수신하였다고 결정하는 것은,
    상기 제2 합의 노드가 반환한 응답 신호가 지정된 기간 내에 상기 스레드를 통해 수신되었다는 결정에 응답하여 상기 제2 합의 노드가 상기 트랜잭션 정보를 수신하였다고 결정하는 것을 포함하고,
    상기 제2 합의 노드가 상기 트랜잭션 정보를 수신하는데 실패하였다고 결정하는 것은,
    상기 제2 합의 노드가 반환한 응답 신호가 상기 지정된 기간 내에 상기 스레드를 통해 수신되지 않았다는 결정에 응답하여 상기 제2 합의 노드가 상기 트랜잭션 정보를 수신하는데 실패하였다고 결정하는 것을 포함하는, 비일시적 컴퓨터 판독 가능한 저장 매체.
  13. 제11항에 있어서, 상기 미리 결정된 전송 중지 조건은,
    상기 트랜잭션 정보를 상기 제2 합의 노드에 전송한 횟수가 미리 결정된 횟수에 도달하는 것, 또는
    맨 처음 상기 트랜잭션 정보를 상기 제2 합의 노드에 전송한 이후의 경과된 지속 시간이 미리 결정된 듀레이션을 초과하는 것을 포함하는, 비일시적 컴퓨터 판독 가능한 저장 매체.
  14. 제11항에 있어서, 상기 미리 결정된 전송 중지 조건이 충족되었다는 결정에 응답하여, 상기 동작들은,
    상기 트랜잭션 정보를 미리 결정된 큐에 추가하는 것을 더 포함하고,
    상기 합의 검증 실패 통지에 기초해서 상기 트랜잭션 정보를 상기 제2 합의 노드에 재전송하는 것은,
    상기 합의 검증 실패 통지 내의 트랜잭션 정보의 정보 식별자에 대응하는 트랜잭션 정보를 상기 미리 결정된 큐에서 검색(searching)하는 것과,
    상기 트랜잭션 정보를 상기 제2 합의 노드에 전송하는 것을 포함하는, 비일시적 컴퓨터 판독 가능한 저장 매체.
  15. 제9항에 있어서, 상기 동작들은,
    상기 제2 합의 노드에 의해, 상기 제1 합의 노드로부터 전처리된 블록을 수신하는 것과,
    상기 제2 합의 노드의 트랜잭션 풀에 저장된 트랜잭션 정보와 상기 전처리된 블록에 포함된 트랜?Ъ? 정보에 기초하여 상기 전처리된 블록에 대해 합의 검증을 수행하는 것과,
    상기 전처리된 블록에 포함된 트랜잭션 정보의 적어도 일부가 상기 제2 합의 노드의 트랜잭션 풀에 존재하지 않는다는 결정에 응답하여, 상기 제2 합의 노드에 의해, 상기 전처리된 블록에 포함된 트랜잭션 정보의 정보 식별자를 결정하는 것과,
    상기 제2 합의 노드에 의해, 상기 트랜잭션 정보의 정보 식별자를 포함하는 합의 검증 실패 통지를 상기 제1 합의 노드에 전송하는 것
    를 더 포함하는, 비일시적 컴퓨터 판독 가능한 저장 매체.
  16. 컴퓨터 구현 시스템(computer-implemented system)에 있어서,
    하나 이상의 컴퓨터; 및
    상기 하나 이상의 컴퓨터와 상호 동작 가능하게 연결되며, 상기 하나 이상의 컴퓨터에 의해 실행될 때에 하나 이상의 동작을 수행하는 하나 이상의 명령어를 저장한 유형의(tangible) 비일시적 머신 판독 가능한 매체를 구비한 하나 이상의 컴퓨터 메모리 디바이스
    를 포함하고, 상기 하나 이상의 동작은,
    제1 합의 노드에 의해, 트랜잭션 정보를 수신하는 것과,
    상기 트랜잭션 정보를 제2 합의 노드에 전송하는 것과,
    상기 제2 합의 노드로부터 합의 검증 실패 통지를 수신하는 것으로서, 상기 합의 검증 실패 통지는 상기 트랜잭션 정보의 정보 식별자를 포함하고, 상기 합의 검증 실패 통지는 상기 트랜잭션 정보의 적어도 일부가 상기 제2 합의 노드의 트랜잭션 풀에서 누락된 것과 상기 트랜잭션 정보에 대한 검증이 실패한 것을 표시하는 것인, 상기 합의 검증 실패 통지를 수신하는 것과,
    상기 합의 검증 실패 통지의 수신에 응답하여, 상기 합의 검증 실패 통지에 포함된 정보 식별자에 대응하는 트랜잭션 정보를 상기 제1 합의 노드의 트랜잭션 풀이 저장하고 있는지를 결정하는 것과,
    상기 합의 검증 실패 통지에 포함된 정보 식별자에 대응하는 트랜잭션 정보를 상기 제1 합의 노드의 트랜잭션 풀이 저장하고 있다는 결정에 응답하여, 상기 제1 합의 노드에 의해, 상기 정보 식별자에 대응하는 트랜잭션 정보를 상기 제2 합의 노드에 재전송하는 것
    을 포함하는, 컴퓨터 구현 시스템.
  17. 제16항에 있어서, 상기 트랜잭션 정보를 제2 합의 노드에 전송하는 것은,
    각각의 다른 합의 노드에 대해 스레드를 생성하는 것과,
    상기 스레드를 통해 상기 트랜잭션 정보를 상기 제2 합의 노드에 전송하는 것을 포함하는, 컴퓨터 구현 시스템.
  18. 제17항에 있어서, 상기 스레드를 통해 상기 트랜잭션 정보를 상기 제2 합의 노드에 전송하는 것은,
    상기 제2 합의 노드가 상기 트랜잭션 정보를 수신하였다고 결정되거나 미리 결정된 전송 중지 조건이 충족될 때까지, 상기 제2 합의 노드가 상기 트랜잭션 정보를 수신하는데 실패하였다는 결정에 응답하여 상기 스레드를 통해 상기 트랜잭션 정보를 상기 제2 합의 노드에 재전송하는 것을 포함하는, 컴퓨터 구현 시스템.
  19. 제18항에 있어서, 상기 제2 합의 노드가 상기 트랜잭션 정보를 수신하였다고 결정하는 것은,
    상기 제2 합의 노드가 반환한 응답 신호가 지정된 기간 내에 상기 스레드를 통해 수신되었다는 결정에 응답하여 상기 제2 합의 노드가 상기 트랜잭션 정보를 수신하였다고 결정하는 것을 포함하고,
    상기 제2 합의 노드가 상기 트랜잭션 정보를 수신하는데 실패하였다고 결정하는 것은,
    상기 제2 합의 노드가 반환한 응답 신호가 상기 지정된 기간 내에 상기 스레드를 통해 수신되지 않았다는 결정에 응답하여 상기 제2 합의 노드가 상기 트랜잭션 정보를 수신하는데 실패하였다고 결정하는 것을 포함하는, 컴퓨터 구현 시스템.
  20. 제18항에 있어서, 상기 미리 결정된 전송 중지 조건은,
    상기 트랜잭션 정보를 상기 제2 합의 노드에 전송한 횟수가 미리 결정된 횟수에 도달하는 것, 또는
    맨 처음 상기 트랜잭션 정보를 상기 제2 합의 노드에 전송한 이후의 경과된 지속 시간이 미리 결정된 듀레이션을 초과하는 것을 포함하는, 컴퓨터 구현 시스템.
KR1020197018216A 2017-03-24 2018-03-19 트랜잭션 정보 전송 및 합의 검증을 위한 방법 및 디바이스 KR102151899B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201710181241.4 2017-03-24
CN201710181241.4A CN107392611B (zh) 2017-03-24 2017-03-24 一种发送交易信息和共识验证的方法及装置
PCT/CN2018/079439 WO2018171545A1 (zh) 2017-03-24 2018-03-19 一种发送交易信息和共识验证的方法及装置

Publications (2)

Publication Number Publication Date
KR20190086747A KR20190086747A (ko) 2019-07-23
KR102151899B1 true KR102151899B1 (ko) 2020-09-03

Family

ID=60338903

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197018216A KR102151899B1 (ko) 2017-03-24 2018-03-19 트랜잭션 정보 전송 및 합의 검증을 위한 방법 및 디바이스

Country Status (15)

Country Link
US (1) US10679217B2 (ko)
EP (1) EP3543937A4 (ko)
JP (1) JP6794551B2 (ko)
KR (1) KR102151899B1 (ko)
CN (2) CN111612468B (ko)
AU (1) AU2018240159B2 (ko)
BR (1) BR112019012905A2 (ko)
CA (1) CA3047884C (ko)
MX (1) MX2019007557A (ko)
PH (1) PH12019501470A1 (ko)
RU (1) RU2735156C1 (ko)
SG (1) SG10202107139RA (ko)
TW (1) TWI727120B (ko)
WO (1) WO2018171545A1 (ko)
ZA (1) ZA201904053B (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111612468B (zh) * 2017-03-24 2024-03-19 创新先进技术有限公司 一种发送交易信息和共识验证的方法及装置
CN108009824A (zh) * 2017-11-28 2018-05-08 北京博晨技术有限公司 数据共识方法、装置及电子设备
CN108537525B (zh) 2018-03-09 2020-06-09 阿里巴巴集团控股有限公司 一种共识验证方法、装置及设备
CN108600163B (zh) * 2018-03-13 2020-12-15 南京邮电大学 一种云环境分布式哈希链架构及云数据完整性验证方法
GB2572340A (en) * 2018-03-26 2019-10-02 Fetch Ai Ltd Data processing system using directed acyclic graph and method of use thereof
CN108765150A (zh) * 2018-05-11 2018-11-06 中国联合网络通信集团有限公司 交易信息处理方法及存储节点
CN108665365B (zh) * 2018-05-16 2021-07-13 四川大学 一种混合区块链架构系统、处理方法及处理系统
CN108960604B (zh) * 2018-06-25 2021-06-29 山东大海集团有限公司 一种信息处理的方法、系统及装置
CN109191135A (zh) * 2018-08-27 2019-01-11 北京京东金融科技控股有限公司 基于区块链的交易重试方法、装置、设备及可读存储介质
CN109461079B (zh) * 2018-10-29 2022-04-05 众安信息技术服务有限公司 基于区块链的交易处理方法和装置
CN111182009B (zh) * 2018-11-09 2023-06-20 北京天德科技有限公司 一种区块链交易消息多汇点分发的方法
CN109639656B (zh) * 2018-12-03 2020-12-25 北京瑞卓喜投科技发展有限公司 一种区块链隐私数据传输方法及隐私数据传输系统
CN111353884B (zh) * 2018-12-20 2024-05-03 上海智知盾科技有限公司 区块链交易处理方法及系统
CN109831425B (zh) * 2019-01-25 2022-02-15 中国联合网络通信集团有限公司 区块链共识方法、装置、设备及计算机可读存储介质
CN110033271B (zh) * 2019-03-22 2023-12-22 湖南天河国云科技有限公司 一种跨链交易方法、系统及计算机可读存储介质
CN110570171B (zh) * 2019-09-11 2022-03-11 杭州秘猿科技有限公司 交易池节点同步方法、电子设备和计算机可读存储介质
CN110782255B (zh) * 2019-11-06 2022-11-15 杭州复杂美科技有限公司 延时交易取消方法、设备和存储介质
CN111064813B (zh) * 2020-03-16 2020-06-30 支付宝(杭州)信息技术有限公司 在区块链共识处理时进行处理消息同步的方法及装置
US11321149B1 (en) 2021-02-08 2022-05-03 Visa International Service Association Synchronization consensus token system and method
CN112883068A (zh) * 2021-04-30 2021-06-01 支付宝(杭州)信息技术有限公司 区块链交易执行方法、区块链节点及控制装置
CN113379542B (zh) * 2021-05-28 2024-01-09 中邮信息科技(北京)有限公司 一种区块链交易的查询方法、装置、介质及电子设备
CN113269645B (zh) * 2021-05-28 2024-05-17 中邮信息科技(北京)有限公司 一种区块链的交易信息调度方法、装置、介质及电子设备
CN113378240B (zh) * 2021-06-23 2023-03-28 浪潮云信息技术股份公司 一种基于区块链的同步调用用户身份认证方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009534741A (ja) 2006-04-18 2009-09-24 マイクロソフト コーポレーション セキュア・ネットワークの商取引
CN105630609A (zh) 2016-02-24 2016-06-01 杭州复杂美科技有限公司 区块链的打包存储方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5819020A (en) * 1995-10-16 1998-10-06 Network Specialists, Inc. Real time backup system
US5931917A (en) * 1996-09-26 1999-08-03 Verifone, Inc. System, method and article of manufacture for a gateway system architecture with system administration information accessible from a browser
US7620680B1 (en) * 2002-08-15 2009-11-17 Microsoft Corporation Fast byzantine paxos
CN102792325B (zh) * 2010-04-09 2017-09-01 维萨国际服务协会 用于安全地证实交易的系统和方法
US11270298B2 (en) * 2014-04-14 2022-03-08 21, Inc. Digital currency mining circuitry
US11232415B2 (en) * 2015-05-28 2022-01-25 OX Labs Inc. Method for cryptographically managing title transactions
CN105488665A (zh) * 2015-11-25 2016-04-13 布比(北京)网络技术有限公司 一种去中心化的交易方法
CN106060036B (zh) * 2016-05-26 2019-07-16 布比(北京)网络技术有限公司 去中心化共识方法及装置
RU2016123959A (ru) 2016-06-16 2017-12-21 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для обработки запроса на транзакцию в распределенных системах обработки данных
CN106445711B (zh) * 2016-08-28 2019-04-30 杭州云象网络技术有限公司 一种应用于区块链的拜占庭容错共识方法
CN106372868B (zh) * 2016-09-06 2020-02-18 联动优势科技有限公司 一种对写入区块链的交易数据的验证方法和装置
CN106503589A (zh) * 2016-10-26 2017-03-15 北京瑞卓喜投科技发展有限公司 区块链交易信息正确性的校验方法、装置及系统
CN106506146A (zh) * 2016-10-26 2017-03-15 北京瑞卓喜投科技发展有限公司 基于区块链技术的交易信息校验方法、装置及系统
US10862959B2 (en) * 2016-11-28 2020-12-08 Keir Finlow-Bates Consensus system and method for adding data to a blockchain
CN111612468B (zh) * 2017-03-24 2024-03-19 创新先进技术有限公司 一种发送交易信息和共识验证的方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009534741A (ja) 2006-04-18 2009-09-24 マイクロソフト コーポレーション セキュア・ネットワークの商取引
CN105630609A (zh) 2016-02-24 2016-06-01 杭州复杂美科技有限公司 区块链的打包存储方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Compact Block FAQ - Bitcoin Core

Also Published As

Publication number Publication date
JP6794551B2 (ja) 2020-12-02
MX2019007557A (es) 2019-09-06
CN107392611A (zh) 2017-11-24
BR112019012905A2 (pt) 2019-12-03
CN111612468B (zh) 2024-03-19
JP2020516973A (ja) 2020-06-11
AU2018240159B2 (en) 2021-02-04
WO2018171545A1 (zh) 2018-09-27
TW201835831A (zh) 2018-10-01
CA3047884C (en) 2021-01-19
PH12019501470A1 (en) 2020-02-24
CA3047884A1 (en) 2018-09-27
ZA201904053B (en) 2021-01-27
RU2735156C1 (ru) 2020-10-28
EP3543937A1 (en) 2019-09-25
EP3543937A4 (en) 2019-12-04
SG10202107139RA (en) 2021-08-30
KR20190086747A (ko) 2019-07-23
TWI727120B (zh) 2021-05-11
CN111612468A (zh) 2020-09-01
CN107392611B (zh) 2020-04-24
US20190347663A1 (en) 2019-11-14
US10679217B2 (en) 2020-06-09
AU2018240159A1 (en) 2019-07-11

Similar Documents

Publication Publication Date Title
KR102151899B1 (ko) 트랜잭션 정보 전송 및 합의 검증을 위한 방법 및 디바이스
KR102255724B1 (ko) 블록체인 기반 합의 방법 및 디바이스
KR102208186B1 (ko) 블록체인 합의 방법 및 디바이스
WO2018161901A1 (zh) 一种共识方法及装置
KR102152556B1 (ko) 서비스 프로세싱 및 합의 방법 및 디바이스
KR102205750B1 (ko) 메시지 브로드캐스트를 위한 방법 및 디바이스
KR20190067195A (ko) 블록체인 데이터 처리 방법 및 장치
KR101664108B1 (ko) 멀티 코어의 동기화를 효율적으로 처리하기 위한 하드웨어 가속 장치 및 방법
CN109064327B (zh) 一种智能合约处理方法、装置及设备
US20140149994A1 (en) Parallel computer and control method thereof
WO2017091963A1 (zh) 一种信息处理方法及装置
US8260927B2 (en) Management of a reserve forever device
KR20200118453A (ko) 동기화 신호의 송신 방법, 기기 및 컴퓨터 저장 매체
CN111801955B (zh) 一种数据传输的方法、低功耗蓝牙装置和低功耗蓝牙芯片
US9766821B2 (en) Access controlling method of dual port memory system
US20210006957A1 (en) Near field communication device and method of operating the same
CN116225757A (zh) 批处理作业中的数据异常处理方法、其装置以及电子设备
KR20160050877A (ko) 데이터 전송 시스템 및 방법, 라우터 및 데이터 중계 방법

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right