KR20190077000A - 합의 방법 및 장치 - Google Patents

합의 방법 및 장치 Download PDF

Info

Publication number
KR20190077000A
KR20190077000A KR1020197014424A KR20197014424A KR20190077000A KR 20190077000 A KR20190077000 A KR 20190077000A KR 1020197014424 A KR1020197014424 A KR 1020197014424A KR 20197014424 A KR20197014424 A KR 20197014424A KR 20190077000 A KR20190077000 A KR 20190077000A
Authority
KR
South Korea
Prior art keywords
node
view
block
primary node
successor
Prior art date
Application number
KR1020197014424A
Other languages
English (en)
Other versions
KR102140903B1 (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 KR20190077000A publication Critical patent/KR20190077000A/ko
Application granted granted Critical
Publication of KR102140903B1 publication Critical patent/KR102140903B1/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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • 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/202Error 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 processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2033Failover techniques switching over of hardware resources
    • 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/202Error 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 processing functionality is redundant
    • G06F11/2041Error 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 processing functionality is redundant with more than one idle spare processing component
    • 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/602Providing cryptographic facilities or services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/875Monitoring of systems including the internet

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Retry When Errors Occur (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Electronic Switches (AREA)
  • Logic Circuits (AREA)
  • Read Only Memory (AREA)
  • Hardware Redundancy (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 출원의 구현예들은 합의 방법 및 장치를 개시하며, 상기 방법은, 블록체인 주 노드에 의해, 뷰 스위칭 조건의 트리거링을 모니터링하는 단계; 블록체인 주 노드에 의해, 뷰 스위칭 조건의 트리거링이 모니터링될 때, 후임자(successor) 노드를 선택하는 단계; 및 블록체인 주 노드에 의해, 후임자 노드에 기초하여, 현재 뷰를, 후임 블록체인 주 노드로서 상기 후임자 노드를 사용하는 다음 뷰로 스위칭하여, 후임 블록체인 주 노드가 다음 뷰에서 합의를 개시하도록 하는 단계를 포함한다. 본 출원의 구현예들에 따르면, 임의의 뷰 스위칭은 블록체인 주 노드에 의해 개시되고, 추가적인 합의 프로세스는 필요하지 않다. 이와 같이, 블록체인 네트워크에서 추가적인 계산량 및 처리 시간 소비가 감소될 수 있다.

Description

합의 방법 및 장치
본 출원은 컴퓨터 기술 분야에 관한 것이며, 특히 합의(consensus) 방법 및 장치에 관한 것이다.
현재, 블록체인 기술이 널리 사용되며, 블록체인 기술에서의 탈중앙화(decentralized) 모드는 데이터가 쉽게 위조되지 않도록 하여 보안성을 향상시킨다.
실제 응용에서, 복수의 노드들(노드들은 처리 서비스에 참여하는 블록체인 네트워크 내의 디바이스들로서 간주될 수 있다)을 포함하는 블록체인 네트워크는 클라이언트 디바이스들에게 대응하는 서비스를 제공할 수 있다. 블록체인 네트워크 내의 노드들은 클라이언트 디바이스의 서비스 요청에 대한 처리를 수행하고, 처리 결과를 클라이언트 디바이스에게 피드백한다. 이 프로세스에서, 독립적으로 운용 중인 노드들에 의해 생성된 처리 결과들이 불일치할 수 있다. 클라이언트 디바이스가 올바른 처리 결과를 수신할 수 있는 것을 보장하기 위해, PBFT(Practical Byzantine Fault Tolerance) 알고리즘(즉, 올바른 처리 결과는 노드들에 의해 공동으로 인정받거나 또는 수락받을 수 있다)을 사용하여 노드들 간의 합의가 구현된다.
PBFT 알고리즘을 사용하는 프로세스에서, 일반적으로 합의는 뷰(view)에서 수행된다. 뷰에서, 블록체인 네트워크 내의 하나의 노드는 주 노드(primary)로서 사용되고, 다른 노드들은 백업 노드들(backup)로서 사용된다. 이 경우, 주 노드는 클라이언트 디바이스의 서비스 요청을 수신하고, 모든 백업 노드들에게 서비스 요청을 브로드캐스트하며, 주 노드는 합의를 개시한다. 합의에 도달한 노드들은 서비스 요청에 대한 처리를 수행하고, 처리 결과를 클라이언트 디바이스에게 피드백한다.
기존의 기술에서, 백업 노드는 뷰 스위칭을 개시하고, 백업 노드에 의해 개시된 뷰 스위칭은 일반적으로 뷰 내의 다른 노드들에 의해 인정받거나 수락받을 필요가 있다. 백업 노드는 뷰 내의 다른 노드들(주 노드를 포함함)에 대한 뷰 스위칭 요청을 개시하는데, 즉, 다른 노드들에 대한 뷰 스위칭 요청에 대한 합의를 개시한다(이 합의는 여전히 PBFT를 사용한다). 서비스 요청에 대한 합의의 프로세스와는 달리, 뷰 스위칭 요청에 기초한 합의 프로세스에서는, 각 노드가 서비스 요청에 대한 합의를 일시 정지한다. 따라서, 뷰 스위칭 요청에 대한 합의는 본질적으로 추가적인 합의 프로세스이다. 미리 결정된 수량의 노드들이 합의에 도달한 후, 백업 노드가 새로운 주 노드가 된다고 결정된다. 새로운 주 노드는 새로운 뷰 메시지를 브로드캐스트하여 뷰 스위칭을 완료한다.
그러나, 상기 메커니즘에서는, 백업 노드에 의해 개시된 뷰 스위칭을 위해 추가적인 합의 프로세스가 수행될 필요가 있고, 추가적인 합의 프로세스는 시스템 계산량을 증가시킨다. 또한, 뷰 스위칭의 합의 프로세스에서, 합의는 미리 결정된 수량의 노드들에 의해 확인된 후에 도달될 수 있다. 최종적으로, 새로운 주 노드가 새로운 뷰 메시지를 브로드캐스트하고, 전체 프로세스에는 일정 기간이 소비된다. 분명히, 기존의 뷰 스위칭 방법은 시스템의 계산량을 증가시킬뿐만 아니라, 서비스 요청을 처리하는데 소비되는 시간을 증가시킨다. 결과적으로, 비교적 낮은 처리 효율을 야기시킨다.
본 출원의 구현예들은, 현재의 뷰 스위칭 방법이 블록체인 네트워크의 계산량을 증가시키고 처리 시간 소비를 증가시키는 문제점을 완화하기 위한 합의 방법 및 장치를 제공한다.
본 출원의 구현예는 합의 방법을 제공하며, 상기 방법은, 블록체인 주 노드에 의해, 뷰 스위칭 조건의 트리거링을 모니터링하는 단계; 블록체인 주 노드에 의해, 뷰 스위칭 조건의 트리거링이 모니터링될 때, 후임자(successor) 노드를 선택하는 단계; 및 블록체인 주 노드에 의해, 후임자 노드에 기초하여, 현재 뷰를, 후임 블록체인 주 노드로서 상기 후임자 노드를 사용하는 다음 뷰로 스위칭하여, 후임 블록체인 주 노드가 다음 뷰에서 합의를 개시하도록 하는 단계를 포함한다.
본 출원의 구현예는 합의 장치를 제공하며, 상기 장치는, 뷰 스위칭 조건의 트리거링을 모니터링하도록 구성된 모니터링 모듈; 모니터링 모듈이 뷰 스위칭 조건의 트리거링을 모니터링할 때, 후임자 노드를 선택하도록 구성된 노드 결정 모듈; 및 후임자 노드에 기초하여, 현재 뷰를, 후임 블록체인 주 노드로서 상기 후임자 노드를 사용하는 다음 뷰로 스위칭하여, 후임 블록체인 주 노드가 다음 뷰에서 합의를 개시하게 하도록 구성된 뷰 스위칭 모듈을 포함한다.
본 출원의 구현예들은 합의 방법 및 장치를 제공한다. 어떤 뷰에서든지, 블록체인 주 노드는 뷰 스위칭 조건의 트리거링을 능동적으로(actively) 모니터링한다. 뷰 스위칭 조건이 트리거되면, 블록체인 주 노드는 뷰 스위칭을 수행할 필요가 있다. 또한, 블록체인 주 노드는 다음 뷰에서의 블록체인 주 노드로서의 후임자 노드를 다른 블록체인 노드들로부터 선택한다. 따라서, 블록체인 주 노드는 뷰 스위칭을 수행한다. 스위칭된 뷰에서, 후임자 노드는 서비스를 처리하기 위한 새로운 블록체인 주 노드로서 사용된다. 또한, 뷰 스위칭은 상기 프로세스에 기초하여 계속 수행된다. 분명히, 상기 뷰 스위칭은 블록체인 주 노드에 의해 개시된다. 이러한 방법은 블록체인 백업 노드가 뷰 스위칭 합의를 개시하는 것을 방지한다. 달리 말하면, 추가적인 합의가 방지될 수 있다. 이와 같이, 블록체인 네트워크에서 추가적인 계산량 및 처리 시간 소비가 감소될 수 있다.
여기서 설명되는 첨부 도면은 본 출원의 추가적인 이해를 제공하도록 의도된 것이며, 본 출원의 일부를 구성한다. 본 출원의 예시적인 구현예들 및 그 설명은 본 출원을 설명하도록 의도된 것이며, 본 출원에 대한 제한을 구성하지 않는다. 첨부된 도면들에서:
도 1a는 본 출원의 구현예에 따른, 합의 프로세스에 기초가 되는 아키텍처를 나타낸다.
도 1b는 본 출원의 구현예에 따른 합의 프로세스를 나타낸다.
도 2는 본 출원의 구현예에 따른, 임의의 뷰에서의 3개 단계(three phase) 프로토콜에 기초한 합의 프로세스를 나타내는 개략도이다.
도 3은 본 출원의 구현예에 따른, 뷰 스위칭의 응용 실례(application instance)의 실행 프로세스를 나타내는 개략도이다.
도 4는 본 출원의 구현예에 따른, 합의 장치를 나타내는 개략적인 구조도이다.
본 출원의 목적, 기술적 해결책, 및 장점을 보다 명확하게 하기 위해, 아래에서는 본 출원의 특정 구현예들 및 첨부 도면들을 참조하여 본 출원의 기술적 해결책을 명료하고 완전하게 설명한다. 명백한 바와 같이, 설명된 구현예들은 본 출원의 모든 구현예들이라기 보다는 그 중 일부일 뿐이다. 본 출원의 구현예들에 기초하여 당업자에 의해 창의적인 노력없이 획득되는 다른 모든 구현예들은 본 출원의 보호 범위 내에 속한다.
전술한 바와 같이, 블록체인 네트워크 내의 노드들이 PBFT 알고리즘을 사용하여 합의를 수행하는 프로세스에서, 블록체인 주 노드가 결함이 있게 되면, 블록체인 백업 노드는 뷰 스위칭을 개시한다. 블록체인 백업 노드에 의해 개시된 뷰 스위칭을 위해서는 추가적인 합의가 필요한다. 즉, 뷰 스위칭은 다른 블록체인 노드들에 의해 인정받거나 또는 수락받은 후에만 완료될 수 있다. 분명히, 추가적인 합의 프로세스는 블록체인 네트워크의 계산량을 증가시키고, 또한 처리 시간 소비를 증가시킨다.
따라서, 본 출원의 구현예는 합의 방법을 제공한다. 임의의 뷰 내의 블록체인 주 노드의 경우, 합의가 종료된 후, 블록체인 주 노드는 뷰 스위칭을 개시하여, 블록체인 주 노드를 변경하며, 어떠한 추가적인 합의 프로세스도 필요하지 않다. 설명의 용이화를 위해, 블록체인 주 노드를 주 노드라고 약칭하며, 블록체인 백업 노드를 백업 노드라고 약칭한다. 또한, 아래에 설명되는 "노드들"은 합의에 참여하는 블록체인 네트워크 내의 노드들로서 이해해야 한다.
본 출원의 구현예에서, 합의 방법에서 사용된 아키텍처가 도 1a에서 도시되어 있다는 것을 유의할 가치가 있다. 도 1a로부터는, 블록체인 네트워크가 복수의 노드들을 포함하고, 복수의 클라이언트 디바이스들이 블록체인 네트워크와의 서비스 상호작용을 수행할 수 있다는 것을 살펴볼 수 있다. 블록체인 네트워크의 응용 유형은 컨소시엄(consortium) 블록체인 네트워크 또는 사설(private) 블록체인 네트워크일 수 있으며, 블록체인 네트워크는 사용자를 위한 서비스를 제공할 수 있다. 노드는 서버, 컴퓨터, 모바일 디바이스, 및 계산 처리 기능을 갖는 다른 디바이스들을 포함하지만 이에 한정되지 않는다. 클라이언트 디바이스는 브라우저, 애플리케이션 등을 실행하도록 구성될 수 있으며, 클라이언트 디바이스는 최종 사용자 디바이스, 서버, 또는 데이터베이스일 수 있다. 구현예들은 여기서 제한되지 않는다.
도 1a에서 도시된 관계 아키텍처에 기초하여, 본 출원의 구현예에서 제공되는 합의 프로세스가 도 1b에서 도시된다. 본 프로세스는 다음 단계들을 포함한다.
S101: 주 노드가 뷰 스위칭 조건의 트리거링을 모니터링한다.
본 출원의 이 구현예에서, 뷰 스위칭 조건은 뷰 스위칭을 수행하기 위해 충족될 필요가 있는 조건으로 간주될 수 있다. 예를 들어, 주 노드는 미리 결정된 기간 내에 서비스 요청을 브로드캐스트하지 않거나 또는 합의를 완료하지 않는다.
본 출원의 이러한 구현예에서 가능한 방식으로, 뷰 스위칭 조건의 트리거링을 모니터링하기 위해 주 노드에서 타이머가 설정될 수 있다. 예를 들어, 타이머는, 주 노드에 의해 서비스 요청을 브로드캐스트하는 행동을 시간 재기하고, 주 노드에 의해 서비스 요청을 브로드캐스트하는 행동이 만료되었는지 여부를 검출하는데 사용될 수 있다. 타이머는 주 노드 상에서 실행되는 타이밍 기능 또는 서비스로서 간주될 수 있으며, 물론 본 출원에 대한 제한사항을 구성하지는 않는다.
S102: 주 노드가, 뷰 스위칭 조건의 트리거링이 모니터링될 때, 후임자 노드를 선택한다.
뷰 스위칭 조건이 트리거되면, 주 노드는 뷰 스위칭을 수행할 필요가 있다. 어떠한 뷰에서든, 주 노드는 단하나뿐이고, 다른 노드들은 백업 노드이라는 것을 유의할 가치가 있다. 따라서, 뷰 스위칭은 주 노드의 스위칭을 나타낸다. 따라서, 본 단계에서, 주 노드는 후임자 노드를 다음 주 노드로서 선택한다(본 출원의 이 구현예에서의 후임자 노드는 현재 뷰에서의 주 노드와 동일한 노드가 아니다, 즉 현재 뷰에서의 주 노드는 후임자 노드로서 사용될 수 없다).
S103: 주 노드가, 후임자 노드에 기초하여, 현재 뷰를, 후임 주 노드로서 상기 후임자 노드를 사용하는 다음 뷰로 스위칭하여, 후임 주 노드가 다음 뷰에서 합의를 개시하도록 한다.
후임자 노드가 결정된 후, 주 노드는 뷰 스위칭을 수행한다. 백업 노드가 뷰 스위칭 합의를 개시하는 기존 방식에서, 백업 노드가 뷰 스위칭 합의를 개시하는 프로세스는 뷰 내의 주 노드의 "탄핵" 프로세스로서 간주될 수 있다. 기존 방식과는 달리, 본 출원의 이 구현예에서는, 주 노드가 독립적으로 뷰 스위칭을 수행하는 프로세스는 "능동적 퇴위"의 프로세스로서 간주될 수 있고, 주 노드는 합의를 개시하지 않고 뷰 스위칭을 수행한다. 분명히, 추가적인 합의 프로세스가 또한 방지된다. 뷰 스위칭이 수행된 후, 새롭게 임명된 주 노드는 스위칭된 뷰에서 합의를 개시할 책임이 있고, 새롭게 임명된 주 노드는 또한 상기 뷰 스위칭 프로세스를 수행한다는 것을 알 수 있다. 여기서는 간략화를 위해 상세한 설명을 생략한다.
상기 단계들에 따라, 임의의 뷰에서, 주 노드는 뷰 스위칭 조건의 트리거링을 능동적으로 모니터링한다. 뷰 스위칭 조건이 트리거되면, 주 노드는 뷰 스위칭을 수행할 필요가 있다. 또한, 주 노드는 다음 뷰에서의 주 노드로서의 후임자 노드를 다른 노드들로부터 선택한다. 따라서, 주 노드는 뷰 스위칭을 수행한다. 스위칭된 뷰에서, 후임자 노드는 서비스를 처리하기 위한 새로운 주 노드로서 사용된다. 또한, 뷰 스위칭은 상기 프로세스에 기초하여 계속 수행된다. 분명히, 상기 뷰 스위칭은 주 노드에 의해 개시된다. 이러한 방법은 백업 노드가 뷰 스위칭 합의를 개시하는 것을 방지한다. 달리 말하면, 추가적인 합의가 방지될 수 있다. 이와 같이, 블록체인 네트워크에서 추가적인 계산량 및 처리 시간 소비가 감소될 수 있다.
실제 응용에서는, 상이한 뷰 스위칭 조건들이 있다. 다음은 뷰 스위칭 조건의 트리거링에 대해 자세히 설명한다.
제1 시나리오:
실제 응용에서, 클라이언트 디바이스는 주 노드에게 서비스 요청을 전송한다. 정상적인 상태에서는, 주 노드는, 서비스 요청을 수신한 후, 서비스 요청에 대한 합의를 수행하기 위해, 서비스 요청을 뷰 내의 백업 노드들에게 브로드캐스트한다. 그러나, 주 노드는 비정상적인 노드일 수 있으며, 서비스 요청을 수신한 후 오랜 시간 동안 서비스 요청을 브로드캐스트하지 않는다. 이로써, 백업 노드는 뷰 스위칭 합의를 개시한다. 따라서, 주 노드가 미리 결정된 기간 내에 서비스 요청을 브로드캐스트하지 않음으로 인해 백업 노드에 의해 뷰 스위칭 합의가 개시되는 것을 방지하기 위해, 주 노드는 독립적으로 시간 재기를 수행하고, 주 노드의 만료 현상을 능동적으로 모니터링한다.
다시 말해서, 이 시나리오에서, 뷰 스위칭 조건이, 주 노드가 미리 결정된 기간 내에 서비스 요청을 브로드캐스트하지 않는다는 것이면, 뷰 스위칭 조건을 트리거링하는 것은, 주 노드에 의해, 서비스 요청을 수신하는 것, 그리고 미리 결정된 시간 내에 서비스 요청에 대한 합의를 개시하지 못하는 것을 포함한다.
실제 동작에서, 시간 재기는 주 노드에서 타이밍 기능을 갖는 프로그램 또는 서비스, 예를 들어, 전술한 타이머에 의해 구현될 수 있다. 시간 재기는 주 노드가 서비스 요청을 수신한 순간부터 시작될 수 있다. 미리 결정된 시간은 5초, 10초 등으로 설정될 수 있고, 실제 응용에서는 요건에 기초하여 결정될 수 있으며, 이는 본 출원에 대한 제한을 구성하지 않는다.
제2 시나리오:
상기 시나리오와는 달리, 이 시나리오에서, 주 노드는, 서비스 요청을 수신한 후, 현재 뷰 내의 백업 노드들에게 서비스 요청을 브로드캐스트한다. 달리 말하면, 주 노드는 미리 결정된 시간이 만료되기 전에 서비스 요청에 대한 합의를 개시한다. 이에 대응하여, 뷰 내의 노드들은 서비스 요청에 대한 합의를 수행하고, 합의 결과를 생성한다.
여기서, 기존의 뷰 스위칭 메커니즘에 기초하여, 합의 결과가 합의 실패인 경우, 백업 노드는 뷰 스위칭 합의를 개시한다는 것에 유의할 가치가 있다. 분명히, 합의 실패는 뷰 스위칭 조건으로서 간주될 수 있다. 달리 말하면, 이 시나리오에서, 합의가 실패할 때, 주 노드는 뷰 스위칭을 능동적으로 수행하여, 백업 노드가 추가적인 뷰 스위칭 합의를 개시하지 못하도록 한다.
또한, 기존의 뷰 스위칭 메커니즘에 기초하여, 합의 결과가 합의에 도달함인 경우, 주 노드는 계속해서 다른 서비스 요청에 대한 합의를 개시한다. 그러나, 주 노드는 후임 실행 프로세스에서 결함이 있을 수 있다. 주 노드에 결함이 있게 되면, 백업 노드는 여전히 뷰 스위칭 합의를 개시한다. 그러므로, 이 경우를 방지하기 위해, 본 출원의 이 구현예에서, 합의에 도달한 후, 주 노드는 여전히 뷰 스위칭을 수행한다.
이 시나리오에서, 합의 결과가 합의에 도달함이거나 또는 합의에 실패함인지에 관계없이, 주 노드는 합의 결과를 결정한 후에 뷰 스위칭을 수행한다는 것을 살펴볼 수 있다. 달리 말하면, 뷰 스위칭 조건을 트리거하는 것은, 주 노드에 의해 서비스 요청을 수신하는 단계, 서비스 요청에 대한 합의를 개시하는 단계, 및 합의 결과를 결정하는 단계를 포함한다.
즉, 이 시나리오에서, 주 노드는 합의에 도달했거나 또는 합의에 실패했다고 결정할 필요가 있다. 다음은, 합의에 도달했거나 또는 합의에 실패했다고 주 노드가 결정하는 방법을 자세히 설명한다.
첫번째로, 서비스 요청에 기초한 합의 프로세스는 본질적으로 3개 단계 프로토콜에 기초한 합의 프로세스라는 점에 유의할 가치가 있다. 3개 단계들은, 사전 준비(pre-prepare) 단계, 준비(prepare) 단계, 및 커밋(commit) 단계를 포함하며, 이들은 완전한 합의 프로세스를 형성한다. 각 단계에서, 노드들(주 노드와 백업 노드들 모두를 포함함)은 서로에게 합의 메시지를 전송한다. 즉, 뷰 내의 각 노드마다, 상이한 단계들에 진입하는 것은 다른 노드들에 의해 인정받거나 또는 수락받을 필요가 있다. 따라서, 3개 단계들 각각은 합의 프로세스로서 간주될 수 있다. 일반적으로, 모든 노드들이 커밋 단계에 진입하는 경우, 이것은 합의 프로세스가 완료된 것으로 간주될 수 있다.
도 2는 뷰 내의 3개 단계 프로토콜에 기초한 노드들의 합의 프로세스이다. 도 2에서, 클라이언트 디바이스는 0번 노드(복제본 0, 즉, 주 노드)에 대한 서비스 요청을 개시하고, 주 노드는 백업 노드들(복제본 1, 복제본 2, 및 복제본 3)에게 서비스 요청을 브로드캐스트하며, 3개 단계 합의를 수행하기 시작한다. 합의에 도달한 노드들은 서비스 요청을 처리하고, 처리 결과를 클라이언트 디바이스에게 피드백한다.
따라서, 다음과 같은 동작들이 수행된다.
1. 주 노드는 합의가 실패했다고 결정한다.
본 출원의 이 구현예에서, 합의 실패는 합의 프로세스 만료(이후부터 이를 합의 만료라고 약칭하며, 합의 만료는 합의 프로세스에 의해 소비되는 시간이 미리 결정된 합의 지속기간을 초과한다는 것을 의미하고, 합의 프로세스에 의해 소비되는 시간은 주 노드가 합의를 개시한 순간부터 카운팅될 수 있다)로서 표현된다. 그 이유들은 다음과 같다.
하나의 경우에서, 주 노드는 결함있는 노드이다(노드가 결함이 있는 경우, 이는 노드에서 합의를 수행하기 위해 사용된 데이터가 결함이 있거나 또는 노드에서의 합의 로직이 결함이 있는 것으로 간주될 수 있다). 즉, 주 노드에 의해 백업 노드들에 전송된 서비스 요청들은 잘못된 데이터(예컨대, 잘못된 서비스 요청 시퀀스 번호)를 포함할 수 있다. BPFT 메커니즘의 보장 하에, 백업 노드들은 주 노드에 의해 브로드캐스트된 서비스 요청들을 체크한다. 잘못된 데이터가 서비스 요청에 포함되면, 정상적인 백업 노드는 서비스 요청을 인정하지 않거나 또는 수락하지 않는다. 이 경우, 주 노드는 서비스 요청들을 전송하는 프로세스를 반복할 수 있으며, 결과적으로 합의가 만료된다.
대안적으로, 다른 경우에서, 주 노드는 또한 결함이 있는 노드이다. 이 경우, 주 노드는 합의 단계를 나타내는 잘못된 통지 메시지를 다른 백업 노드들에 전송할 수 있는데, 즉, 주 노드는 특정 단계에 진입한 것으로 "잘못" 간주한다. 이 경우, 백업 노드들은 주 노드의 통지 메시지에 대한 합의를 수행하여, 주 노드의 통지 메시지의 진정성을 확인한다. 마찬가지로, 정상적인 백업 노드는 여전히 주 노드에 의해 전송된 통지 메시지를 인정하지 않거나 또는 수락하지 않는다. 이 경우, 주 노드는 잘못된 통지 메시지를 전송하는 프로세스를 반복할 수 있고, 결과적으로 합의가 만료된다.
물론, 상기 내용은 실제 응용에서 합의 만료를 야기시킬 수 있는 단지 두 개의 가능한 경우들이며, 본 출원에 대한 제한으로서 간주되어서는 안된다. 분명히, 상기 내용으로부터, 합의가 만료되면, 합의가 실패했다는 것을 살펴볼 수 있다.
따라서, 본 출원의 이 구현예에서, 주 노드는 합의 프로세스의 전체 시간 소비 방식을 모니터링함으로써 합의가 실패했는지 여부를 검출할 수 있다. 합의 프로세스가 만료되면, 주 노드는 즉시 뷰 스위칭 동작을 개시하고, 백업 노드에 의해 개시된 뷰 스위칭의 추가적인 합의 프로세스가 방지될 수 있다. 즉, 본 출원의 이 구현예에서, 합의가 실패했다고 주 노드가 결정하는 프로세스는 다음과 같을 수 있다: 주 노드는 서비스 요청에 대한 합의가 뷰 내의 백업 노드들 간에 개시된 순간부터 합의 프로세스에 의해 소비된 시간을 모니터링하고, 합의에 의해 소비된 시간이 미리 결정된 시간을 초과한 것이 검출될 때 합의는 실패했다고 결정한다.
2. 주 노드는 합의에 도달했다고 결정한다.
상기 3개 단계 프로토콜로부터, 노드가 커밋 단계에 진입하면, 노드는 서비스 요청을 처리할 수 있고, 생성된 처리 결과를 클라이언트 디바이스에게 피드백할 수 있다는 것을 살펴볼 수 있다. 또한, 단계에 진입하기 위해, 각각의 노드는 뷰 내의 다른 노드들에 의해 인정받거나 또는 수락받을 필요가 있다. 따라서, 노드가 커밋 단계에 진입하면, 이는 노드가 다른 노드들에 의해 인정받거나 또는 수락받았다는 것을 나타낸다. 주 노드가 커밋 단계에 진입하면, 이는 합의에 도달했음을 나타낸 것이라는 것을 살펴볼 수 있다. 그 이유는, PBFT 메커니즘에서, 노드가 단계에 진입하면, 이는 뷰 내의 대부분 노드들에 의해 노드의 상태가 인정받거나 또는 수락받았다는 것을 나타내기 때문이다. 따라서, 이는 대부분의 노드들이 올바른 노드들이라는 것을 나타낸다.
따라서, 이러한 방식으로, 합의에 도달했다고 주 노드가 결정하는 프로세스는 다음과 같을 수 있다: 주 노드는 주 노드의 대응 단계를 모니터링하고, 주 노드가 커밋 단계에 진입하고 미리 결정된 합의 지속기간이 만료되지 않은 것을 주 노드가 검출하면, 합의가 완료되었다고 결정한다. 즉, 주 노드가 커밋 단계에 진입한 것을 확인하면, 주 노드는 또한, 커밋 단계에 진입하기 위해 주 노드에 의해 소비된 시간이 미리 결정된 시간을 초과하지 않는 것을 보장할 필요가 있다.
본 출원의 이 구현예에서 다른 방식으로, 주 노드는 다른 노드들에게 통지 메시지를 전송하지 않을 수 있다(즉, 주 노드는 결함이 있는 노드일 수 있다). 그러나, 주 노드는 여전히 백업 노드에 의해 전송된 통지 메시지를 수신할 수 있다. 이 경우, 미리 결정된 수량의 노드들이 커밋 단계에 진입하는 경우, 이것은 합의가 완료된 것으로 간주될 수 있다.
실제 응용에서, 노드가 커밋 단계에 진입한 후, 노드는 일반적으로, 통지 메시지를 뷰 내의 다른 노드들에게 전송하는데, 통지 메시지는, 예를 들어, <commit, v, n, D(m)>일 수 있으며, 여기서, "commit"은 노드가 커밋 단계에 진입한 것을 나타내고, "v"는 뷰 번호를 나타내고, "n"은 서비스 요청의 시퀀스 번호를 나타내고, "D(m)"은 통지 메세지를 전송한 노드에 의해 서비스 요청에 대해 수행된 시그너처를 나타낸다.
주 노드는, 주 노드에 의해 수신되고 커밋 단계에 진입한 것을 나타내는 통지 메시지들에 대한 통계를 수집할 수 있다. 수신된 통지 메시지들의 수량이 2f+1보다 큰 경우, 이는 충분한 노드들이 합의에 도달한 것을 나타낸다. 그러면, 이는 합의가 완료된 것을 나타낸다. f는 PBFT 메커니즘에서 허용가능한 잘못된 노드들의 최대 수량이다. 이 경우, 주 노드는 합의가 완료되었다고 결정할 수 있다.
따라서, 합의에 도달했다고 주 노드가 결정하는 프로세스는 또한 다음과 같을 수 있다: 주 노드는, 주 노드에 의해 수신되고 백업 노드가 커밋 단계에 진입한 것을 나타내는 통지 메시지를 모니터링하고, 수신된 통지 메시지들의 수량이 미리 결정된 양을 초과하고 미리 결정된 합의 지속기간이 만료되지 않은 것을 주 노드가 검출할 때, 합의가 완료되었다고 결정한다.
합의가 완료된 후, 주 노드는 뷰 스위칭을 개시하여, 주 노드를 변경하고 새로운 뷰에 진입한다.
이하에서는 본 출원의 이 구현예에서의 뷰 스위칭 프로세스를 설명한다.
PBFT 메커니즘에서, 각각의 뷰는 대응하는 번호를 갖는다. 예를 들어, 상기 예시에서 v는 현재 뷰의 번호를 나타낸다. 이에 따라, 블록체인 네트워크 내의 각 노드는 대응하는 번호를 갖는다. 블록체인 네트워크 내에 총 R개 노드들이 있는 경우, 노드들의 번호는 0~R-1이며, 예컨대, 복제본 0, 복제본 1,…, 및 복제본 R-1이다. 노드 번호와 뷰 번호 사이에는 관계가 있다. 복제본 p가 번호 p를 갖는 노드를 나타내기 위해 사용되는 경우, 노드 번호 및 뷰 번호는 다음 방정식을 만족시킨다:
p=v mod R
여기서, v는 0에서부터 양의 무한대까지의 정수이다.
이 관계는 노드 번호 p가 뷰 번호 v와 블록체인 네트워크 내에 포함된 노드들의 수량 R의 모듈로 연산 후에 획득된다는 것을 나타낸다.
다시 말해서, v는 0에서부터 R-1까지의 범위를 가지기 때문에, 주 노드의 신원이 상이한 노드들로 순차적으로 핸드오버되는 것이 보장된다. 예를 들어, 현재 뷰의 주 노드가 복제본 0(뷰 번호 0에 대응함)인 경우, 다음 뷰(번호가 1임) 내의 주 노드는 복제본 1이다. 이러한 방식으로 모든 노드들을 거친다.
따라서, 본 출원의 이 구현예에서, 뷰 스위칭 프로세스는 다음을 포함하는 것을 알 수 있다: 주 노드에 의해, 주 노드의 번호를 결정하는 단계; 주 노드의 번호에 기초하여, 주 노드의 번호 다음에 배열된 번호를 갖는 노드를 결정하는 단계; 결정된 노드에 기초하여 뷰 스위칭 통지 메시지를 생성하는 단계; 및 뷰 스위칭 메시지를 각각의 백업 노드에 전송하여 뷰 스위칭을 수행함으로써, 결정된 노드가 다음 뷰에서 주 노드가 되도록 하는 단계.
다음은 설명을 위해 특정 응용 실례를 사용한다. 도 3에서 도시된 바와 같이, 본 실례는 다음의 단계들을 포함한다:
S301: 번호가 v인 뷰 내의 주 노드 p가 클라이언트 디바이스에 의해 전송된 서비스 요청을 수신하고, 시간 재기를 수행한다.
S302: 미리 결정된 시간이 만료되면, 뷰 내의 각각의 백업 노드에 대해 서비스 요청에 대한 합의를 개시할 것인지 여부를 결정하고; "예"인 경우, 단계 S303을 수행하고; 그렇지 않은 경우, 단계 S305를 수행한다.
S303: 합의 결과를 획득한다.
S304: 합의에 도달했는지 여부를 결정하고, 단계 S305를 수행한다.
S305: 뷰 v를 뷰 v+1로 스위칭하고, 번호가 p+1인 노드를 뷰 v+1에서 주 노드로서 결정한다.
상기 뷰 스위칭은 주 노드에 의해 개시된다. 이러한 방법은 백업 노드가 뷰 스위칭 합의를 개시하는 것을 방지한다.
이상은 본 출원의 구현예에서 제공된 합의 방법이다. 동일한 사상에 기초하여, 본 출원의 구현예들은 합의 장치를 더 제공한다. 도 4에서 도시된 바와 같이, 임의의 뷰에 대해, 합의 장치는 다음을 포함한다. 뷰 스위칭 조건의 트리거링을 모니터링하도록 구성된 모니터링 모듈(401); 모니터링 모듈이 뷰 스위칭 조건의 트리거링을 모니터링할 때, 후임자 노드를 선택하도록 구성된 노드 결정 모듈(402); 및 후임자 노드에 기초하여, 현재 뷰를, 후임 블록체인 주 노드로서 상기 후임자 노드를 사용하는 다음 뷰로 스위칭하여, 후임 블록체인 주 노드가 다음 뷰에서 합의를 개시하게 하도록 구성된 뷰 스위칭 모듈(403).
서비스 요청이 수신되고 서비스 요청에 대한 합의가 미리 결정된 시간 내에 개시되지 않았다고 결정한 것에 응답하여, 모니터링 모듈(401)은 뷰 스위칭 조건의 트리거링이 모니터링되는 것을 결정한다.
서비스 요청이 수신되고, 서비스 요청에 대한 합의가 개시되었으며, 합의 결과가 결정되었다고 결정한 것에 응답하여, 모니터링 모듈(401)은 뷰 스위칭 조건의 트리거링이 모니터링되는 것을 결정한다.
노드 결정 모듈(402)은 현재 뷰의 다음 뷰를 결정하고, 다음 뷰에 대응하는 후임자 노드를 결정한다.
뷰 스위칭 모듈(403)은 결정된 다음 뷰로 현재 뷰를 스위칭하고, 다음 뷰에서는 후임자 노드가 주 노드로서 사용된다.
임의의 뷰 내의 노드는 컨소시엄 블록체인 네트워크 또는 사설 블록체인 네트워크 내의 노드를 포함한다.
1990년대에는, 기술 개선이 하드웨어 개선(예를 들어, 다이오드, 트랜지스터, 또는 스위치와 같은 회로 구조에 대한 개선)인지 또는 소프트웨어 개선(방법 프로시저에 대한 개선)인지 여부는 명백하게 구별될 수 있다. 그러나, 기술이 발전함에 따라, 많은 방법 프로시저들에 대한 현재 개선들은 하드웨어 회로 구조에 대한 직접적인 개선으로서 간주될 수 있다. 설계자는 일반적으로 대응하는 하드웨어 회로 구조를 획득하기 위해 하드웨어 회로 내에 개선된 방법 프로시저를 프로그래밍한다. 따라서, 하드웨어 엔티티 모듈을 사용하여 방법 프로시저는 개선될 수 있다. 예를 들어, PLD(programmable logic device)(예를 들어, FPGA(field programmable gate array))가 그러한 집적 회로이고, PLD의 논리적 기능은 디바이스 프로그래밍을 통해 사용자에 의해 결정된다. 설계자는 칩 제조업체에게 주문형 집적 회로 칩을 설계하고 생산할 것을 요청하지 않고도 디지털 시스템을 PLD에 "집적"시키는 프로그래밍을 수행한다. 또한, 현재, 집적 회로 칩을 수동적으로 제조하는 대신에, 그러한 프로그래밍은 대부분 "논리 컴파일러(logic compiler)" 소프트웨어를 사용하여 구현된다. 논리 컴파일러 소프트웨어는 프로그램을 개발하고 작성하는데 사용되는 소프트웨어 컴파일러와 유사한다. 컴파일을 위해 원본 코드는 특정 프로그래밍 언어로 작성될 필요가 있다. 이 언어를 하드웨어 기술 언어(hardware description language; HDL)라고 부른다. ABEL(Advanced Boolean Expression Language), AHDL(Altera Hardware Description Language), 컨플루언스(Confluence), CUPL(Cornell University Programming Language), HDCal, JHDL(Java Hardware Description Language), 라바(Lava), 로라(Lola), MyHDL, PALASM, 및 RHDL(Ruby Hardware Description Language)과 같은 다양한 HDL이 존재한다. 초고속 집적 회로 하드웨어 기술 언어(VHDL)와 Verilog가 가장 일반적으로 사용된다. 당업자라면, 논리적 방법 프로시저가 설명된 몇몇의 하드웨어 기술 언어들을 사용함으로써 논리적으로 프로그래밍되고 집적 회로 내에 프로그래밍되면, 그 논리적 방법 프로시저를 구현하는 하드웨어 회로가 쉽게 획득될 수 있다는 것을 이해해야 한다.
제어기는 임의의 적절한 방법을 사용하여 구현될 수 있다. 예를 들어, 제어기는 마이크로프로세서 또는 프로세서, 또는 마이크로프로세서 또는 프로세서에 의해 실행될 수 있는 (소프트웨어 또는 펌웨어와 같은) 컴퓨터 판독가능 프로그램 코드를 저장한 컴퓨터 판독가능 매체, 논리 게이트, 스위치, 주문형 집적 회로(ASIC), 프로그래밍가능 논리 제어기, 또는 내장형 마이크로프로세서일 수 있다. 제어기의 예시로는 비제한적인 예시들로서, 다음과 같은 마이크로프로세서들, ARC 625D, Atmel AT91SAM, Microchip PIC18F26K20, 및 Silicone Labs C8051F320을 포함한다. 메모리 제어기는 또한 메모리의 제어 로직의 일부로서 구현될 수 있다. 또한, 당업자는, 컴퓨터 판독가능 프로그램 코드를 사용하여 제어기를 구현하는 것 이외에, 방법 단계들에 대해 논리 프로그래밍이 수행되어, 제어기가 논리 게이트, 스위치, 주문형 집적 회로, 프로그래밍가능 논리 제어기, 및 내장형 마이크로제어기의 형태로 동일한 기능을 구현할 수 있게 한다는 것을 알 것이다. 따라서, 제어기는 하드웨어 컴포넌트로서 간주될 수 있으며, 제어기 내의 다양한 기능들을 구현하도록 구성된 장치는 또한 하드웨어 컴포넌트 내의 구조로서 간주될 수 있다. 또는, 다양한 기능들을 구현하도록 구성된 장치는 본 방법을 구현하는 소프트웨어 모듈 및 하드웨어 컴포넌트 내 구조물 둘 다로서 간주될 수도 있다.
이전 구현예들에서 예시된 시스템, 장치, 모듈, 또는 유닛은 컴퓨터 칩 또는 엔티티를 사용하여 구현될 수 있거나, 또는 특정 기능을 갖는 제품을 사용하여 구현될 수 있다. 일반적인 구현 디바이스는 컴퓨터이다. 컴퓨터는, 예를 들어, 퍼스널 컴퓨터, 랩톱 컴퓨터, 셀룰러 전화기, 카메라 폰, 스마트폰, 개인 휴대 정보 단말기, 미디어 플레이어, 네비게이션 디바이스, 이메일 디바이스, 게임 콘솔, 태블릿 컴퓨터, 또는 착용가능형 디바이스, 또는 이들 디바이스의 임의의 조합일 수 있다.
설명의 용이화를 위해, 상기 장치는 기능들을 다양한 유닛들로 분할함으로써 설명된다. 물론, 본 출원이 구현될 때, 각 유닛의 기능은 하나 이상의 소프트웨어 및/또는 하드웨어 조각들로 구현될 수 있다.
당업자는 본 발명개시의 구현예가 방법, 시스템, 또는 컴퓨터 프로그램 제품으로서 제공될 수 있음을 이해해야 한다. 따라서, 본 발명개시는 하드웨어 전용 구현예, 소프트웨어 전용 구현예, 또는 소프트웨어와 하드웨어의 조합을 갖는 구현예의 형태를 사용할 수 있다. 또한, 본 발명개시는 컴퓨터로 사용가능한 프로그램 코드가 포함된 하나 이상의 컴퓨터로 사용가능한 저장 매체(비제한적인 예시로서, 디스크 메모리, CD-ROM, 광학 메모리 등을 포함함) 상에 구현되는 컴퓨터 프로그램 제품의 형태를 사용할 수 있다.
본 발명개시는 본 발명개시의 구현예들에 기초한 방법, 디바이스(시스템), 및 컴퓨터 프로그램 제품의 흐름도 및/또는 블록도를 참조하여 설명되었다. 흐름도 및/또는 블록도에서의 각각의 프로세스 및/또는 각각의 블록, 및 흐름도 및/또는 블록도에서의 프로세스 및/또는 블록의 조합을 구현하기 위해 컴퓨터 프로그램 명령어들이 사용될 수 있다는 것에 유의할 가치가 있다. 이들 컴퓨터 프로그램 명령어들은, 컴퓨터 또는 다른 프로그램가능 데이터 처리 디바이스의 프로세서에 의해 실행된 명령어들이 흐름도들 내에서의 하나 이상의 프로세스들 및/또는 블록도들 내에서의 하나 이상의 블록들에서 특정 기능을 구현하기 위한 장치를 생성하도록, 범용 컴퓨터, 전용 컴퓨터, 내장형 프로세서, 또는 머신을 생성하기 위한 다른 프로그램가능 데이터 처리 디바이스의 프로세서를 위해 제공될 수 있다.
이들 컴퓨터 프로그램 명령어들은, 컴퓨터로 판독가능한 메모리에 저장된 명령어들이 명령어 장치를 포함하는 아티펙트를 생성하도록, 컴퓨터 또는 다른 프로그램가능한 데이터 처리 디바이스로 하여금 특정 방식으로 동작할 것을 명령내릴 수 있고 컴퓨터로 판독가능한 메모리에 저장될 수 있다. 명령어 장치는 흐름도들 내의 하나 이상의 프로세스들에서 및/또는 블록도들 내의 하나 이상의 블록들에서 특정 기능을 구현한다.
이들 컴퓨터 프로그램 명령어들은, 일련의 동작들 및 단계들이 컴퓨터 또는 다른 프로그램가능한 디바이스 상에서 수행됨으로써 컴퓨터 구현 처리를 생성할 수 있도록, 컴퓨터 또는 다른 프로그램가능한 데이터 처리 디바이스 상에 로딩될 수 있다. 따라서, 컴퓨터 또는 다른 프로그램가능한 디바이스 상에서 실행되는 명령어들은 흐름도들 내의 하나 이상의 프로세스들에서 및/또는 블록도들 내의 하나 이상의 블록들에서 특정 기능을 구현하기 위한 단계들을 제공한다.
일반적인 구성에서, 컴퓨팅 디바이스는 하나 이상의 프로세서(CPU), 하나 이상의 입력/출력 인터페이스, 하나 이상의 네트워크 인터페이스, 및 하나 이상의 메모리를 포함한다.
메모리는 비영구적 저장장치, RAM(random access memory), 비휘발성 메모리, 및/또는 다른 형태의 컴퓨터 판독가능 매체, 예를 들어, ROM(read-only memory) 또는 플래시 메모리(플래시 RAM)를 포함할 수 있다. 메모리는 컴퓨터 판독가능 매체의 예시이다.
컴퓨터 판독가능 매체는 임의의 방법 또는 기술을 사용함으로써 정보를 저장할 수 있는, 영구적, 비영구적, 탈착형, 및 비탈착형 매체를 포함한다. 정보는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터일 수 있다. 컴퓨터 저장 매체의 예시는, 비제한적인 예시로서, PRAM(parameter random-access machine), SRAM(static random access memory), DRAM(dynamic random access memory), 다른 유형의 RAM(random access memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), 플래시 메모리 또는 다른 메모리 기술, CD-ROM(compact disc read-only memory), DVD(digital versatile disc) 또는 다른 광학 저장디바이스, 카세트 자기 테잎, 자기 테잎/자기 디스크 저장디바이스, 또는 다른 자기 저장 디바이스, 또는 임의의 다른 비전송 매체를 포함한다. 컴퓨터 저장 매체는 컴퓨팅 디바이스에 의해 액세스될 수 있는 정보를 저장하는데 사용될 수 있다. 본 명세서에서의 정의에 기초하여, 컴퓨터 판독가능 매체는 변조 데이터 신호 및 반송파와 같은 임시적 컴퓨터 판독가능 매체(임시 매체)를 포함하지 않는다.
용어 "포함한다", "구비한다" 또는 이들의 임의의 다른 변형체는 비 배타적인 포함을 커버하도록 의도되었으므로, 구성요소들의 리스트를 포함하는 프로세스, 방법, 제품, 또는 디바이스는 이들 구성요소들을 포함할뿐만이 아니라, 명시적으로 나열되지 않은 다른 구성요소들도 포함하거나, 또는 그러한 프로세스, 방법, 제품, 또는 디바이스에 내재된 구성요소들을 더 포함한다는 것에 주목할 가치가 있다. "...을 포함한다" 앞에 오는 구성요소는, 더 많은 제약성이 없는 한, 대응 구성요소를 포함하는 프로세스, 방법, 제품, 또는 디바이스에서의 추가적인 동일한 구성요소들의 존재를 배제하지 않는다.
당업자는 본 출원의 구현예가 방법, 시스템, 또는 컴퓨터 프로그램 제품으로서 제공될 수 있음을 이해해야 한다. 따라서, 본 출원은 하드웨어 전용 구현예, 소프트웨어 전용 구현예, 또는 소프트웨어와 하드웨어의 조합을 갖는 구현예의 형태를 사용할 수 있다. 또한, 본 출원은 컴퓨터로 사용가능한 프로그램 코드가 포함된 하나 이상의 컴퓨터로 사용가능한 저장 매체(비제한적인 예시로서, 디스크 메모리, CD-ROM, 광학 메모리 등을 포함함) 상에 구현되는 컴퓨터 프로그램 제품의 형태를 사용할 수 있다.
본 출원은 컴퓨터, 예컨대 프로그램 모듈에 의해 실행되는 컴퓨터 실행가능 명령어들의 일반적인 정황으로 설명될 수 있다. 일반적으로, 프로그램 모듈은 특정 작업을 실행하거나 또는 특정 추상 데이터 타입을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 본 출원은 분산형 컴퓨팅 환경에서도 실시될 수 있다. 이러한 분산형 컴퓨팅 환경에서, 작업들은 통신 네트워크를 통해 연결된 원격 처리 디바이스들에 의해 수행된다. 분산형 컴퓨팅 환경에서, 프로그램 모듈은 저장 디바이스들을 포함하는 로컬 및 원격 컴퓨터 저장 매체에 위치될 수 있다.
본 명세서에서의 구현예들은 점진적인 방식으로 설명된다. 구현예들의 동일하거나 유사한 부분들에 대해서는, 구현예들을 참조할 수 있다. 각 구현예는 다른 구현예들과의 차이점에 중점을 둔다. 특히, 시스템 구현예는 방법 구현예와 기본적으로 유사하며, 따라서 간략하게 설명된다. 관련 부분들에 대해서는, 방법 구현예에서의 관련 설명을 참조할 수 있다.
상기 구현예들은 본 출원의 구현예이며, 본 출원을 제한하려는 것은 아니다. 당업자는 본 출원에 대해 다양한 변형과 변경을 가할 수 있다. 본 출원의 사상 및 원리로부터 벗어남이 없이 임의의 수정, 등가적 대체, 또는 개선이 본 출원의 청구 범위 내에 속해야 한다.

Claims (10)

  1. 합의(consensus) 방법에 있어서,
    블록체인 주(primary) 노드에 의해, 뷰(view) 스위칭 조건의 트리거링을 모니터링하는 단계;
    상기 블록체인 주 노드에 의해, 상기 뷰 스위칭 조건의 트리거링이 모니터링될 때, 후임자(successor) 노드를 선택하는 단계; 및
    상기 블록체인 주 노드에 의해, 상기 후임자 노드에 기초하여, 현재 뷰를, 후임 블록체인 주 노드로서 상기 후임자 노드를 사용하는 다음 뷰로 스위칭하여, 상기 후임 블록체인 주 노드가 상기 다음 뷰에서 합의를 개시하도록 하는 단계
    를 포함하는 합의 방법.
  2. 제1항에 있어서,
    상기 뷰 스위칭 조건을 트리거링하는 단계는,
    상기 블록체인 주 노드에 의해, 서비스 요청을 수신하는 단계; 및
    상기 서비스 요청에 대한 합의가 미리 결정된 시간으로 개시하는데 실패했다고 결정하는 단계
    를 포함한 것인 합의 방법.
  3. 제1항에 있어서,
    상기 뷰 스위칭 조건을 트리거링하는 단계는,
    상기 블록체인 주 노드에 의해, 서비스 요청을 수신하는 단계;
    상기 서비스 요청에 대한 합의를 개시하는 단계; 및
    합의 결과를 결정하는 단계
    를 포함한 것인 합의 방법.
  4. 제1항에 있어서,
    상기 블록체인 주 노드에 의해, 후임자 노드를 선택하는 단계는,
    상기 블록체인 주 노드에 의해, 상기 현재 뷰의 다음 뷰를 결정하는 단계; 및
    상기 다음 뷰에 대응하는 후임자 노드를 선택하는 단계
    를 포함하고,
    상기 현재 뷰를, 후임 블록체인 주 노드로서 상기 후임자 노드를 사용하는 다음 뷰로 스위칭하는 것은,
    상기 현재 뷰를 상기 결정된 다음 뷰로 스위칭하는 것
    을 포함하며,
    상기 다음 뷰에서는 상기 후임자 노드가 블록체인 주 노드로서 사용되는 것인 합의 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    임의의 뷰 내의 블록체인 노드는 컨소시엄(consortium) 블록체인 네트워크 또는 사설(private) 블록체인 네트워크 내의 노드를 포함한 것인 합의 방법.
  6. 합의 장치에 있어서,
    뷰 스위칭 조건의 트리거링을 모니터링하도록 구성된 모니터링 모듈;
    상기 모니터링 모듈이 상기 뷰 스위칭 조건의 트리거링을 모니터링할 때, 후임자 노드를 선택하도록 구성된 노드 결정 모듈; 및
    상기 후임자 노드에 기초하여, 현재 뷰를, 후임 블록체인 주 노드로서 상기 후임자 노드를 사용하는 다음 뷰로 스위칭하여, 상기 후임 블록체인 주 노드가 상기 다음 뷰에서 합의를 개시하게 하도록 구성된 뷰 스위칭 모듈
    을 포함하는 합의 장치.
  7. 제6항에 있어서,
    서비스 요청이 수신되고, 상기 서비스 요청에 대한 합의가 미리 결정된 시간 내에 개시되지 않았다고 결정한 것에 응답하여, 상기 모니터링 모듈은 상기 뷰 스위칭 조건의 트리거링이 모니터링되는 것을 결정한 것인 합의 장치.
  8. 제6항에 있어서,
    서비스 요청이 수신되고, 상기 서비스 요청에 대한 합의가 개시되고, 합의 결과가 결정되었다고 결정한 것에 응답하여, 상기 모니터링 모듈은 상기 뷰 스위칭 조건의 트리거링이 모니터링되는 것을 결정한 것인 합의 장치.
  9. 제6항에 있어서,
    상기 노드 결정 모듈은 상기 현재 뷰의 다음 뷰를 결정하고, 상기 다음 뷰에 대응하는 후임자 노드를 결정하며,
    상기 뷰 스위칭 모듈은 상기 현재 뷰를 상기 결정된 다음 뷰로 스위칭하고,
    상기 다음 뷰에서는 상기 후임자 노드가 블록체인 주 노드로서 사용되는 것인 합의 장치.
  10. 제6항 내지 제9항 중 어느 한 항에 있어서,
    임의의 뷰 내의 블록체인 노드는 컨소시엄 블록체인 네트워크 또는 사설 블록체인 네트워크 내의 노드를 포함한 것인 합의 장치.
KR1020197014424A 2017-03-10 2018-03-06 합의 방법 및 장치 KR102140903B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201710142252.1 2017-03-10
CN201710142252.1A CN107391320B (zh) 2017-03-10 2017-03-10 一种共识方法及装置
PCT/CN2018/078169 WO2018161901A1 (zh) 2017-03-10 2018-03-06 一种共识方法及装置

Publications (2)

Publication Number Publication Date
KR20190077000A true KR20190077000A (ko) 2019-07-02
KR102140903B1 KR102140903B1 (ko) 2020-08-04

Family

ID=60338823

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197014424A KR102140903B1 (ko) 2017-03-10 2018-03-06 합의 방법 및 장치

Country Status (16)

Country Link
US (1) US10684925B2 (ko)
EP (1) EP3525102B1 (ko)
JP (1) JP6756918B2 (ko)
KR (1) KR102140903B1 (ko)
CN (1) CN107391320B (ko)
AU (1) AU2018230202B2 (ko)
BR (1) BR112019009591B1 (ko)
CA (1) CA3043532C (ko)
ES (1) ES2880448T3 (ko)
MX (1) MX2019005525A (ko)
PH (1) PH12019501053A1 (ko)
PL (1) PL3525102T3 (ko)
RU (1) RU2733221C1 (ko)
TW (1) TW201833855A (ko)
WO (1) WO2018161901A1 (ko)
ZA (1) ZA201902935B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200074912A (ko) * 2018-12-13 2020-06-25 알리바바 그룹 홀딩 리미티드 분산 시스템에서 프라이머리 노드의 체인지 수행
KR102151939B1 (ko) * 2019-11-18 2020-09-04 주식회사 아이콘루프 패치 트랜잭션을 이용한 블록체인 생성 방법

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107391320B (zh) 2017-03-10 2020-07-10 创新先进技术有限公司 一种共识方法及装置
CN110445619B (zh) * 2017-03-30 2020-10-16 腾讯科技(深圳)有限公司 区块链系统、消息处理方法及存储介质
CN107395665B (zh) * 2017-05-22 2020-04-24 创新先进技术有限公司 一种区块链业务受理及业务共识方法及装置
CN108182635A (zh) * 2017-12-18 2018-06-19 深圳前海微众银行股份有限公司 区块链共识方法、系统和计算机可读存储介质
CN108282539A (zh) * 2018-02-06 2018-07-13 北京奇虎科技有限公司 基于双层网络的去中心化存储系统
US10599835B2 (en) 2018-02-06 2020-03-24 Vmware, Inc. 32-bit address space containment to secure processes from speculative rogue cache loads
WO2019173519A1 (en) 2018-03-06 2019-09-12 Jordan Simons Customized view of restricted information recorded into a blockchain
US11700265B2 (en) 2018-03-06 2023-07-11 Americorp Investments Llc Customized view of restricted information recorded into a blockchain
US10951626B2 (en) 2018-03-06 2021-03-16 Americorp Investments Llc Blockchain-based commercial inventory systems and methods
CN108416593B (zh) * 2018-03-20 2021-02-12 杨鉴 一种基于网络分散度证明的区块链共识方法和系统
CN108596622A (zh) * 2018-05-02 2018-09-28 北京链链信息技术有限公司 交易信息的共享系统及方法
WO2019222993A1 (zh) * 2018-05-25 2019-11-28 北京大学深圳研究生院 一种基于信任关系的区块链共识方法
US10747629B2 (en) * 2018-06-11 2020-08-18 Vmware, Inc. Linear view-change BFT with optimistic responsiveness
US10713133B2 (en) * 2018-06-11 2020-07-14 Vmware, Inc. Linear view-change BFT
GB2574828A (en) * 2018-06-19 2019-12-25 Setl Ltd Leader selection for permissioned blockchain
CN109087204B (zh) * 2018-07-27 2023-04-14 杭州复杂美科技有限公司 跨链交易校验方法、设备和存储介质
AU2019316507A1 (en) * 2018-08-02 2021-03-18 Neuralia Technologies Inc. Method and system for proof of election on a blockchain
CN109039750B (zh) * 2018-08-13 2021-06-15 浙商银行股份有限公司 一种提升区块链应用系统多城多园区部署灾备能力的方法
ES2880453T3 (es) * 2018-11-30 2021-11-24 Advanced New Technologies Co Ltd Utilizar tabla de números de un solo uso para resolver fallas de transacciones concurrentes de cadena de bloques
CN111291110A (zh) * 2018-12-06 2020-06-16 中国电信股份有限公司 基于区块链网络的共识方法和系统
CN111327436B (zh) * 2018-12-13 2023-04-07 北京果仁宝软件技术有限责任公司 预测区块链出块节点的方法、装置和系统
CN109660545B (zh) * 2018-12-27 2021-04-09 北京新唐思创教育科技有限公司 一种联盟链共识方法及计算机存储介质
CN109886681B (zh) * 2019-01-31 2021-06-18 北京瑞卓喜投科技发展有限公司 区块链共识方法及共识系统
ES2880108T3 (es) 2019-03-18 2021-11-23 Advanced New Technologies Co Ltd Sistema y método para finalizar el protocolo de cambio de vista
KR102170347B1 (ko) * 2019-03-18 2020-10-28 알리바바 그룹 홀딩 리미티드 뷰 변경 프로토콜을 종료하기 위한 시스템 및 방법
US11269858B2 (en) 2019-03-26 2022-03-08 International Business Machines Corporation Information management in a decentralized database including a fast path service
US11398895B2 (en) 2019-03-26 2022-07-26 International Business Machines Corporation Information management in a decentralized database including a fast path service
US11418322B2 (en) * 2019-03-26 2022-08-16 International Business Machines Corporation Information management in a decentralized database including a fast path service
WO2019170169A2 (en) * 2019-06-05 2019-09-12 Alibaba Group Holding Limited Consensus system and method
US10944624B2 (en) * 2019-06-28 2021-03-09 Advanced New Technologies Co., Ltd. Changing a master node in a blockchain system
CN110351133B (zh) * 2019-06-28 2021-09-17 创新先进技术有限公司 用于区块链系统中的主节点切换处理的方法及装置
CN110727731B (zh) * 2019-09-05 2021-12-21 创新先进技术有限公司 区块链网络中加入节点的方法和区块链系统
CN110673914B (zh) * 2019-09-24 2021-06-29 支付宝(杭州)信息技术有限公司 一种区块链共识的视图切换方法及区块链系统
CN115632933A (zh) * 2019-12-24 2023-01-20 杭州趣链科技有限公司 一种基于pbft算法的集群异常恢复方法
CN111327414A (zh) * 2020-01-20 2020-06-23 布比(北京)网络技术有限公司 一种区块链共识方法、系统及计算机存储介质、电子设备
CN115136178A (zh) * 2020-02-21 2022-09-30 松下电器(美国)知识产权公司 控制方法、控制装置及程序
CN111510317B (zh) * 2020-03-06 2022-08-26 杜晓楠 弱化dbft中连续多个节点故障导致的延迟的方法、计算机可读存储介质和dbft网络
CN112511326B (zh) * 2020-03-16 2024-02-02 中兴通讯股份有限公司 一种切换方法、装置、设备和存储介质
CN111464356B (zh) * 2020-04-01 2021-11-05 腾讯科技(深圳)有限公司 一种区块共识周期切换方法、装置及计算机设备
CN111698315B (zh) * 2020-06-09 2021-10-15 腾讯科技(深圳)有限公司 针对区块的数据处理方法、数据处理装置及计算机设备
CN111522683B (zh) 2020-07-03 2020-10-02 支付宝(杭州)信息技术有限公司 蜜獾拜占庭容错共识机制的共识节点变更方法及相关装置
CN112182113B (zh) * 2020-10-23 2024-06-25 网易(杭州)网络有限公司 区块链共识方法、系统、电子设备及存储介质
CN112507019A (zh) * 2020-11-20 2021-03-16 南京航空航天大学 一种基于智能合约的pbft共识系统及方法
CN112991066A (zh) * 2021-04-27 2021-06-18 支付宝(杭州)信息技术有限公司 联盟链中的共识方法、装置和电子设备
CN113395165B (zh) * 2021-05-28 2022-08-16 网易(杭州)网络有限公司 共识流程处理方法、装置、存储介质及计算机设备
WO2023281690A1 (ja) * 2021-07-08 2023-01-12 富士通株式会社 判定方法、情報処理装置、判定システム、及び判定プログラム
CN114047980B (zh) * 2021-11-29 2024-01-19 珠海格力电器股份有限公司 可编程控制器配置数据的管理系统
JPWO2024009650A1 (ko) * 2022-07-04 2024-01-11

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100174802A1 (en) * 2009-01-07 2010-07-08 Oracle International Corporation Super master
US20150186229A1 (en) * 2014-01-01 2015-07-02 International Business Machines Corporation Efficient fail-over in replicated systems
CN106060036A (zh) * 2016-05-26 2016-10-26 布比(北京)网络技术有限公司 去中心化共识方法及装置
WO2016170538A1 (en) * 2015-04-20 2016-10-27 Ogy Docs, Inc. A method of distributed management of electronic documents of title (edt) and system thereof

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3381526D1 (de) * 1983-02-09 1990-06-07 Ibm Verfahren zum erhalten der einigung mehrfacher rechner zum vermeiden von fehlern.
US6671821B1 (en) * 1999-11-22 2003-12-30 Massachusetts Institute Of Technology Byzantine fault tolerance
US7499865B2 (en) * 2004-12-17 2009-03-03 International Business Machines Corporation Identification of discrepancies in actual and expected inventories in computing environment having multiple provisioning orchestration server pool boundaries
US8639793B2 (en) * 2010-10-29 2014-01-28 Cisco Technology, Inc. Disaster recovery and automatic relocation of cloud services
DE102011088884A1 (de) * 2011-12-16 2013-06-20 Siemens Aktiengesellschaft Verfahren zur Übertragung von Daten in einem Kommunikationsnetz
US9501363B1 (en) * 2013-03-15 2016-11-22 Nuodb, Inc. Distributed database management system with node failure detection
US11394773B2 (en) 2014-06-19 2022-07-19 Jim Austin Joseph Cryptographic currency block chain based voting system
TWI524289B (zh) 2014-11-12 2016-03-01 Jetsream Holding Ltd Data transfer method between bit currency trading devices
CN104679604A (zh) * 2015-02-12 2015-06-03 大唐移动通信设备有限公司 一种主节点和备节点切换的方法和装置
CN106161495A (zh) * 2015-03-25 2016-11-23 中兴通讯股份有限公司 一种主节点选举方法、装置及存储系统
CN105488665A (zh) * 2015-11-25 2016-04-13 布比(北京)网络技术有限公司 一种去中心化的交易方法
CN106157142A (zh) * 2016-06-30 2016-11-23 惠众商务顾问(北京)有限公司 一种区块链共识及同步方法、系统和装置
CN106385319B (zh) * 2016-09-29 2020-11-27 江苏通付盾科技有限公司 区块链网络中信息的验证方法及系统
WO2017186317A1 (en) * 2016-10-04 2017-11-02 Nec Europe Ltd. Method and system for byzantine fault-tolerance replicating of data on a plurality of servers
CN107391320B (zh) * 2017-03-10 2020-07-10 创新先进技术有限公司 一种共识方法及装置
US10601907B2 (en) * 2017-09-22 2020-03-24 Artiste QB Net Inc. System and method for platform to securely distribute compute workload to web capable devices
US10671492B2 (en) * 2017-12-18 2020-06-02 International Business Machines Corporation Forecast recommended backup destination
US11474994B2 (en) * 2018-12-27 2022-10-18 Intel Corporation Distributed blockchain oracle

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100174802A1 (en) * 2009-01-07 2010-07-08 Oracle International Corporation Super master
US20150186229A1 (en) * 2014-01-01 2015-07-02 International Business Machines Corporation Efficient fail-over in replicated systems
WO2016170538A1 (en) * 2015-04-20 2016-10-27 Ogy Docs, Inc. A method of distributed management of electronic documents of title (edt) and system thereof
CN106060036A (zh) * 2016-05-26 2016-10-26 布比(北京)网络技术有限公司 去中心化共识方法及装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200074912A (ko) * 2018-12-13 2020-06-25 알리바바 그룹 홀딩 리미티드 분산 시스템에서 프라이머리 노드의 체인지 수행
US10791107B2 (en) 2018-12-13 2020-09-29 Alibaba Group Holding Limited Performing a change of primary node in a distributed system
KR102151939B1 (ko) * 2019-11-18 2020-09-04 주식회사 아이콘루프 패치 트랜잭션을 이용한 블록체인 생성 방법

Also Published As

Publication number Publication date
MX2019005525A (es) 2019-08-12
EP3525102A1 (en) 2019-08-14
AU2018230202A1 (en) 2019-05-30
JP2020507142A (ja) 2020-03-05
ES2880448T3 (es) 2021-11-24
WO2018161901A1 (zh) 2018-09-13
US20190294514A1 (en) 2019-09-26
CA3043532A1 (en) 2018-09-13
US10684925B2 (en) 2020-06-16
JP6756918B2 (ja) 2020-09-16
CA3043532C (en) 2022-08-30
PH12019501053A1 (en) 2021-02-05
CN107391320A (zh) 2017-11-24
AU2018230202B2 (en) 2020-07-16
ZA201902935B (en) 2020-05-27
BR112019009591A2 (pt) 2019-12-17
BR112019009591B1 (pt) 2021-11-23
TW201833855A (zh) 2018-09-16
EP3525102B1 (en) 2021-05-05
CN107391320B (zh) 2020-07-10
EP3525102A4 (en) 2019-12-25
KR102140903B1 (ko) 2020-08-04
RU2733221C1 (ru) 2020-09-30
PL3525102T3 (pl) 2021-10-25

Similar Documents

Publication Publication Date Title
KR20190077000A (ko) 합의 방법 및 장치
KR102255724B1 (ko) 블록체인 기반 합의 방법 및 디바이스
JP6794551B2 (ja) トランザクション情報を送信するためのおよびコンセンサス検証のための方法およびデバイス
KR102152556B1 (ko) 서비스 프로세싱 및 합의 방법 및 디바이스
CN110659988B (zh) 区块链共识与执行的并行处理方法、装置和电子设备
KR20190083652A (ko) 서비스 요청 처리 방법 및 장치
JP6859510B2 (ja) メッセージをブロードキャストするための方法およびデバイス
WO2024045980A1 (zh) 一种分布式定时消息系统测试方法、装置以及设备
WO2020037607A1 (zh) 一种传输数据的方法和装置

Legal Events

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