KR20190140826A - 난스 증명 기반 분산합의 노드 선정 방법 및 장치 - Google Patents

난스 증명 기반 분산합의 노드 선정 방법 및 장치 Download PDF

Info

Publication number
KR20190140826A
KR20190140826A KR1020190050365A KR20190050365A KR20190140826A KR 20190140826 A KR20190140826 A KR 20190140826A KR 1020190050365 A KR1020190050365 A KR 1020190050365A KR 20190050365 A KR20190050365 A KR 20190050365A KR 20190140826 A KR20190140826 A KR 20190140826A
Authority
KR
South Korea
Prior art keywords
node
nonce
value
chain
nodes
Prior art date
Application number
KR1020190050365A
Other languages
English (en)
Other versions
KR102342840B1 (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 한국전자통신연구원
Priority to US16/431,333 priority Critical patent/US11646879B2/en
Priority to CN202311764983.1A priority patent/CN117728945A/zh
Priority to CN201910507584.4A priority patent/CN110599160B/zh
Publication of KR20190140826A publication Critical patent/KR20190140826A/ko
Priority to KR1020210182454A priority patent/KR102472874B1/ko
Application granted granted Critical
Publication of KR102342840B1 publication Critical patent/KR102342840B1/ko
Priority to US18/158,928 priority patent/US20230163963A1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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
    • 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
    • H04L2209/38

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Power Engineering (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)

Abstract

본 발명에 따른 블록체인 생성 장치의 합의노드 선정 방법은, 노드의 난스 체인으로부터 난스를 읽어오는 단계, 상기 읽혀진 난스와 이전 height 정보를 연산하는 단계, 및 상기 노드를 합의노드로 선정하기 위하여 상기 연산된 값과 기준값을 비교하는 단계를 포함할 수 있다.

Description

난스 증명 기반 분산합의 노드 선정 방법 및 장치{METHOD AND APPARTAUS FOR SELECTING DISTRIBUTED CONSENSUS NODE BASED ON PROOF-OF-NONCE}
본 발명은 난스 증명 기반 분산합의 노드 선정 방법 및 장치에 관한 것이다.
일반적으로, 블록체인 기술은 P2P 네트워크 기술, 보안 및 암호화 기술, 및 분산 컴퓨팅 플랫폼 기술 등 다양한 기술로 구성된 융합기술이다. 특히, 블록체인 기술은 공인된 제3의 중앙기관 없이 거래에 참여하는 참가자(이하 노드)들이 거래정보를 검증하고, 이를 블록(Block) 단위로 기록/생성하고, 노드마다 동기화된 정보를 공유하도록 합의하여 하나의 분산원장(Distributed Ledger)으로 유지하기 위한 무결성(Integrity) 및 신뢰성(Reliability) 보장 기술로 정의할 수 있다. 기존 중앙 집중형 시스템에서는 제3의 중앙기관이 거래정보가 조작되지 않도록 중앙화된 원장의 독점적인 관리를 통해 간접적이고 수동적으로 신뢰를 보장하였다. 블록체인에서는 제3의 중앙기관에게 일임하였던 간접적이고 수동적인 방식을 대신해서, 노드가 직접 참여하여 합의하는 방식(합의 알고리즘)을 통해 원장을 분산으로 관리한다. 블록체인 구성기술 중 가장 중요한 핵심기술은 신뢰할 수 없는 노드들 간에 하나의 블록체인을 유지하기 위한 합의 알고리즘이다. 합의 알고리즘을 통해 모든 노드가 블록 생성(이하, 채굴이라고 함) 기회를 공평하게 갖는 공평성 및 탈중앙화, 합의 주체 노드에 대한 공격 가능성과 원장훼손 가능성 등으로부터 안전할 수 있는 보안성 등의 블록체인의 중요한 특성을 제공한다.
공개특허: 10-2017-0137388, 공개일: 2017년 12월 13일, 제목: 블록체인 기술을 이용한 무결성 보장 방법. 미국공개특허: US 2017-0344987, 공개일: 2017년 11월 30일, 제목: METHOD AND SYSTEM FOR AN EFFICIENT CONSENSUS MECHANISM FOR PERMSSIONED BLOCKCHAINS USING BLOOM FILTERS AND AUDIT GUARANTEES. 미국공개특허: US 2019/0068380, 공개일: 2019년 1월 28일(최초출원일: 2017년 8월 21일, CN 2017106\736740.5), 제목: BLOCKCHAIN CONSENSUS NODE SELECTION.
본 발명의 목적은 분산합의에 참여하는 노드(분산합의 노드)가 전체 노드의 대표로 미리 예측할 수 없는 분산합의 노드 선정 방법을 제공하는데 있다.
본 발명의 목적은 분산합의에 필요한 주체 개수를 제어 할 수 있는 분산합의 노드 선정 방법을 제공하는 데 있다.
본 발명의 목적은 노드가 소유한 자산(연산 능력 등)이 분산합의 자격 획득에 영향을 주지 않는 분산합의 노드 선정 방법을 제공하는데 있다.
본 발명의 목적은 분산합의에 참여하는 노드의 자격을 검증 할 수 있는 분산합의 노드 선정 방법을 제공하는데 있다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재들로부터 당업자에게 명확하게 이해될 수 있을 것이다
본 발명의 실시 예에 따른 블록체인 생성 장치의 합의노드 선정 방법은, 노드의 난스 체인으로부터 난스를 읽어오는 단계; 상기 읽혀진 난스와 이전 height 정보를 연산하는 단계; 및 상기 노드를 합의노드로 선정하기 위하여 상기 연산된 값과 기준값을 비교하는 단계를 포함할 수 있다.
실시 예에 있어서, 상기 난스 체인은 해쉬 체인(hash chain)인 것을 특징으로 한다.
실시 예에 있어서, 상기 난스 체인을 생성하는 단계를 더 포함할 수 있다.
실시 예에 있어서, 상기 난스 체인을 생성하는 단계는, 상기 노드가 비공개로 유지하는 마스터 키를 이용하여 상기 난스 체인을 생성하는 단계를 포함할 수 있다.
실시 예에 있어서, 상기 마스터 키를 이용하여 상기 난스 체인을 생성하는 단계는, 상기 마스터 키를 이용하여 베이스를 생성하는 단계; 상기 베이스를 복수번 반복 해쉬함으로써 해쉬 체인을 생성하는 단계; 및 상기 해쉬 체인을 사용하기 시작할 start height을 설정하는 단계를 포함할 수 있다.
실시 예에 있어서, 블록이 주기적으로 생성되는 시간에 대응하는 상기 난스 체인의 길이가 결정되는 것으로 특징으로 한다.
실시 예에 있어서, 상기 연산하는 단계는, 상기 읽혀진 난스와 이전 height 정보를 해쉬 연산하는 단계를 포함할 수 있다.
실시 예에 있어서, 상기 이전 height 정보는 이전 블록의 헤더 해쉬 값을 포함할 수 있다.
실시 예에 있어서, 상기 비교 결과로써 상기 연산된 값이 상기 기준값 보다 작을 때, 상기 난스 체인의 마지막 난스 값, 상기 난스 체인을 시작한 start height, 상기 노드의 주소를 다른 노드들에 공개하는 단계를 더 포함할 수 있다.
실시 예에 있어서, elite pool에 상기 다른 노드들의 난스 체인 정보를 등록하는 단계를 더 포함하고, 상기 난스 체인 정보는 대응하는 노드의 주소, 대응하는 난스 체인의 마지막 난스 값, 및 상기 대응하는 난스 체인을 시작한 start height를 포함할 수 있다.
실시 예에 있어서, 상기 노드의 주소는 공개키 혹은 상기 노드를 한정하는 값을 포함하는 것을 특징으로 한다.
실시 예에 있어서, 상기 노드가 포함된 모든 노드들이 이전 블록이 생성되기 전까지 다음 블록의 합의노드 선정 여부를 예측 할 수 없도록 하기 위하여 상기 이전 블록의 정보를 이용하여 합의노드를 선정하는 것을 특징으로 한다.
실시 예에 있어서, 상기 노드를 포함하는 모든 노드가 합의노드로 선택될 수 있는 계산 기회를 height 마다 1회 부여하기 위하여 상기 난스 체인에서 읽어온 난스를 해쉬 함수의 난스로 이용하는 것을 특징으로 한다.
실시 예에 있어서, 분산합의에 참여 가능한 노드의 개수가 n이고, 상기 분산합의에 필요한 최소 노드의 개수가 x이고, 상기 분산합의에 필요한 최소 노드의 개수 이하로 선택될 누적 분포 확률 값이 k 일 때, 상기 분산합의 노드의 개수는 변수(n, x, k)에 의해 제어 되는 것을 특징으로 한다.
실시 예에 있어서, 상기 누적 분포 확률 값 k는 이항분포 특성을 갖는 것을 특징으로 한다.
실시 예에 있어서, 상기 노드의 합의노드에 선정될 확률은 변수(n, x, k)에 의해 결정되는 베르누이 시행에 따른 확률 값 Px,k인 것을 특징으로 한다.
실시 예에 있어서, 상기 노드의 elite pool에 등록된 노드의 개수가 변화할 경우, 상기 기준값을 변경하는 단계를 더 포함할 수 있다.
실시 예에 있어서, 상기 기준값은 상기 확률 값 Px,k와 상기 연산된 값을 곱함으로써 계산되는 것을 특징으로 한다.
실시 예에 있어서, 상기 노드의 합의노드 선정 여부를 판단하는 기회는 height 마다 1회로 제한되는 것을 특징으로 한다.
실시 예에 있어서, 상기 노드의 합의노드 선정 여부에 대한 판단 기회는 1회 이상 m회 이하로 제한되는 것을 특징으로 한다.
본 발명의 실시 예에 따른 블록체인 생성 장치의 합의노드 검증 방법은, 합의노드의 선정된 제 1 노드로부터 난스 값, 새로운 블록의 height, 및 상기 제 1 노드의 주소를 수신하는 단계; 제 2 노드의 elite pool에서 상기 제 1 노드의 주소에 대응하는 공개 난스 값 및 start height를 꺼내는 단계; 상기 새로운 블록의 height에서 상기 start height를 빼는 단계; 상기 빼어진 height 번만큼 상기 공개 난스 값을 해쉬 연산하는 단계; 및 상기 제 1 노드의 합의노드 자격을 검증하기 위하여 상기 해쉬 연산된 값과 상기 제 1 노드로부터 수신된 난스 값을 비교하는 단계를 포함할 수 있다.
실시 예에 있어서, 상기 해쉬 연산된 값과 상기 수신된 난스 값이 동일할 때, 상기 제 1 노드의 블록 생성 권한이 검증되는 것을 특징으로 한다.
실시 예에 있어서, 상기 해쉬 연산된 값과 상기 수신된 난스 값이 동일하지 않을 때, 상기 제 1 노드는 블록체인 생성 혹은 사용에 불이익을 받는 것을 특징으로 한다.
본 발명의 실시 예에 따른 블록체인 생성 장치의 난스 체인 업데이트 방법은, 합의노드 선정에 이상이 없었는 지 추후에 확인 가능하도록 하기 위하여 원장에 난스 체인에 대응하는 베이스 해쉬값을 기록하는 단계; 노드의 마스터 키를 이용하여 새로운 베이스 해쉬 값을 계산하는 단계; 상기 베이스 해쉬 값을 이용하여 새로운 난스 체인을 생성하는 단계; 및 상기 새로운 난스 체인의 마지막 난스 값과 start height를 다른 노드들에게 공개하는 단계를 포함할 수 있다.
실시 예에 있어서, 상기 새로운 난스 체인은 상기 난스 체인의 모든 값이 소진될 때 업데이트 되는 것을 특징으로 한다.
실시 예에 있어서, 상기 새로운 난스 체인은 상기 노드가 블록 생성에 성공할 때 강제로 업데이트 되는 것을 특징으로 한다.
본 발명의 실시 예에 따른 블록체인 생성 장치의 노드 라이브니스 검증 방법은, 분산합의 노드들의 개수를 카운트하는 단계; 및 상기 카운트된 값이 사전에 결정된 값보다 작은 지를 판별하는 단계를 포함하고, 상기 분산합의 노드들의 각각은 난스 체인을 이용하여 선정되는 것을 특징으로 한다.
실시 예에 있어서, 상기 사전에 결정된 값은 노드의 블록 생성 후보 선정될 확률 분포의 평균값에 연관된 값인 것을 특징으로 한다.
실시 예에 있어서, 상기 평균값은 elite pool에 등록된 노드의 개수, 분산합의를 위하여 필요한 최소 노드의 개수, 및 상기 최소 노드 이하의 노드가 선택될 누적 분포 확률 값에 의해 결정되는 것을 특징으로 한다.
실시 예에 있어서, 상기 누적 분포 확률 값은 베르누이 시행에 따른 성공 확률 값인 것을 특징으로 한다.
본 발명의 실시 예에 따른 블록체인을 발생하는 분산 컴퓨팅 시스템은: 난스 체인을 해쉬 체인 기반으로 생성하고, start height, 상기 난스 체인의 난스 값, 및 노드의 주소를 갖는 난스 체인 정보를 다른 노드들에게 공개하는 적어도 하나의 제 1 노드; 및 상기 난스 체인 정보와 상기 적어도 하나의 제 1 노드로부터 수신된 난스 값과 height을 이용하여 상기 적어도 하나의 제 1 노드의 합의노드 선정 자격을 검증하는 적어도 하나의 제 2 노드를 포함할 수 있다.
실시 예에 있어서, 상기 적어도 하나의 제 1 노드가 블록 생성에 성공할 때, 상기 난스 체인을 업데이트 되는 것을 특징으로 한다.
실시 예에 있어서, 상기 적어도 하나의 제 2 노드는 상기 난스 체인 정보를 등록하는 elite pool를 더 포함할 수 있다.
실시 예에 있어서, 상기 elite pool 에서 상기 적어도 하나의 제 1 노드가 탈퇴함으로써 합의 주체에서 빠지는 것을 특징으로 한다.
실시 예에 있어서, 상기 적어도 하나의 제 1 노드를 상기 elite pool에 등록하기 위하여 블록체인의 거래내역이 이용되는 것을 특징으로 한다.
본 발명의 실시 예에 따른 블록체인 생성 장치는: 적어도 하나의 프로세서; 및 상기 적어도 하나의 프로세서에 의해 실행되는 적어도 하나의 인스트럭션을 저장하는 메모리를 포함하고, 상기 적어도 하나의 인스트럭션은, 노드의 난스 체인으로부터 난스를 읽어오고; 상기 읽혀진 난스와 이전 height 정보를 연산하고; 및 상기 노드를 합의노드로 선정하기 위하여 상기 연산된 값과 기준값을 비교하도록 상기 적어도 하나의 프로세서에서 실행되는 것을 특징으로 한다.
본 발명의 실시 예에 따른 난스 증명 기반 분산합의 노드 선정 방법 및 장치는, 분산합의에 참여하는 노드를 예측할 수 없도록 하여 다른 악의적인 노드가 분산합의 노드를 예측하여 공격하는 것이 불가능하다.
본 발명의 실시 예에 따른 난스 증명 기반 분산합의 노드 선정 방법 및 장치는, 전체 노드 중 분산합의에 필요한 최소한의 노드만 분산합의 자격을 얻을 수 있도록 하여 분산합의 참여 노드 간 빠른 합의가 가능하다.
본 발명의 실시 예에 따른 난스 증명 기반 분산합의 노드 선정 방법 및 장치는, 노드의 연산 능력과 무관하게 분산합의 자격을 얻을 수 있도록 하여 강력한 연산 능력을 확보한 일부의 노드가 분산합의 자격을 독점 할 수 없다.
본 발명의 실시 예에 따른 난스 증명 기반 분산합의 노드 선정 방법 및 장치는, 분산합의에 참여하는 노드의 자격을 검증 할 수 있도록 하여 자격 없는 노드의 분산합의 참여를 차단할 수 있다.
이하에 첨부되는 도면들은 본 실시 예에 관한 이해를 돕기 위한 것으로, 상세한 설명과 함께 실시 예들을 제공한다. 다만, 본 실시예의 기술적 특징이 특정 도면에 한정되는 것은 아니며, 각 도면에서 개시하는 특징들은 서로 조합되어 새로운 실시 예로 구성될 수 있다.
도 1은 본 발명의 실시 예에 따른 블록체인을 예시적으로 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 PoN 기반 분산합의 알고리즘을 위한 난스 체인을 예시적으로 보여주는 도면이다.
도 3은 본 발명의 실시 예에 따른 난스 체인 사용 방법을 예시적으로 설명하기 위한 도면이다.
도 4는 본 발명의 실시 예에 따른 PoN 기반 합의노드 알고리즘에서 노드의 elite pool의 구조를 예시적으로 보여주는 도면이다.
도 5는 본 발명의 실시 예에 따른 PoN 기반 분산합의 알고리즘에서 총 노드별 평균 노드 선택에 대한 시뮬레이션 결과를 예시적으로 보여주는 도면이다.
도 6은 본 발명의 실시 예에 따른 노드의 새로운 블록 생성 권한 확인 방법을 예시적으로 보여주는 도면이다.
도 7은 본 발명의 실시 예에 따른 분산합의에 참여하는 노드의 자격 검증하는 방법을 예시적으로 보여주는 도면이다.
도 8은 본 발명의 실시 예에 따른 난스 체인 갱신하는 방법을 예시적으로 보여주는 도면이다.
도 9는 본 발명의 실시 예에 따른 노드의 liveness 확인 방법을 예시적으로 보여주는 도면이다.
도 10은 본 발명의 실시 예에 따른 블록체인 생성 장치(1000)를 예시적으로 보여주는 도면이다.
아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다. 어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 혹은 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위하여 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 혹은 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 혹은 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 혹은 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 혹은 이들을 조합한 것들의 존재 혹은 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다. 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
일반적으로 블록체인은 분산된 환경에서 각각의 노드들이 블록을 생성하고 자신이 생성한 블록의 정보를 전파하거나, 다른 노드가 생성한 블록에 대한 정합성 판별 및 검증을 수행할 수 있다. 이 과정에서, 각각의 노드들 사이에 이루어진 트랜잭션에 대한 기록이나 블록 생성 및 검증을 위한 내용들은 모든 노드에서 동일하게 기록되어야 한다. 이 때, 블록체인에 참여하는 모든 노드가 동일한 정보를 기록하고 있는 상태를 유지하기 위하여 사용되는 프로토콜이 분산합의(Distributed Consensus) 알고리즘이다. 즉, 분산합의 알고리즘이란 분산된 환경에서 복수의 주체가 협업하는 과정 중에 발생할 수 있는 불일치를 해결하여 시스템을 통일된 상태로 유지하기 위한 알고리즘이다. 또한, 분산합의주체는 블록체인에 새로운 블록을 제안하고 연결하는 분산합의 과정에 참여 자격을 얻은 노드이다.
블록체인에서 사용되는 대표적인 합의 알고리즘은 PoW(Proof of Work) 기반 알고리즘이다. PoW는 Nakamoto(Bitcoin), Ethash(Ethereum) 등 주요 블록체인에서 사용하고 있지만, 연산 능력 독점 등으로 인한 중앙화 문제가 발생 가능하여 무의미한 전력 소모를 많이 하고 있다. 이를 극복하기 위한 PoS(Proof of Stake), DPoS(Delegated Proof of Stake), PoW+PBFT(Practical Byzantine Fault Tolerance), DPoS+PBFT 등 많은 방식이 제안되고 있지만, 여전히 중앙화 문제, 과다한 통신비용, 특정 대상 지정 공격에 취약 등의 다양한 문제가 있다.
일반적으로 PoW, PoS 방식에서는 전체 노드가 합의 주체가 되고 있다. PoW 방식의 경우, 블록을 생성하기 위하여 전체 노드가 난스(nonce)를 찾기 위한 무의미한 계산을 하기 때문에 전력 소모로 의한 비용 및 환경문제가 발생되고 있다. 또한 연산능력의 담합으로 인한 중앙화 문제, 및 거래속도를 요구하는 응용에 적용할 수 없는 Scalability 한계가 있다. PoS 방식의 경우, PoW의 전력 소모 문제를 해결하기 위하여 제안되었으나 전체노드가 합의를 위하여 과다한 트래픽 발생 등의 문제가 있다.
DPoS 및 Tendermint는, PoW 및 PoS에서 전체 노드가 합의 주체가 되어 생긴 문제들을 해결하기 위하여 분산합의 주체를 고정된 일부 노드들에 위임한다. DPoS 및 Tendermint는 분산합의 주체의 숫자가 적기 때문에 합의 시간과 비용을 줄이고, 성능을 향상시킬 수 있다. 하지만, DPoS 및 Tendermint의 경우, 합의 주체 위임을 특정 노드에만 고정시킴으로써, 탈중앙화된 블록체인 개념에 위배소지가 있다. 게다가 권한이 소수에게 집중되어 투표에 의해 선출되는 노드의 신뢰도가 상대적으로 중요하고, 오히려 이들끼리 담합할 경우 보안에 취약한 문제가 발생할 수 있다. 이 때문에 공격해야 할 대상의 범위가 줄어들어 DoS(Denial of Service) 공격 등의 위협에 노출 될 수 있다.
종래의 분산합의 알고리즘들은, 전체 노드가 합의에 참여하는 경우, 필요 이상의 자원을 소모하고, 합의를 위하여 긴 시간이 소모되기 때문에 속도를 요하는 응용에 사용하기 어려운 단점을 갖는다. 또한, 종래의 분산합의 알고리즘들은, 위임 방식의 경우 전체 노드가 합의에 참여 할 때 보다 자원 소모가 줄고 합의 시간도 짧지만 위임 받은 노드가 고정되어 DoS등의 공격에 노출되고, 위임 받은 노드의 담합에 의한 보안 문제 등을 갖는다.
본 발명의 실시 예에 따른 난스 증명(Proof of Nonce; PoN) 기반 분산합의 알고리즘은 기존 분산합의 알고리즘들의 상술된 문제점들을 해결하기 위하여 다음과 같은 특징들을 갖는다.
첫째로, PoN 기반 분산합의 알고리즘은 탈중앙화(Decentralization)를 위하여 모든 노드에게 소유 자원 및 소유 지분과 상관없는 공평한 참여(채굴) 기회가 주어지며, 합의 과정에서 투명성, 대표성, 최적화(컴퓨팅 파워 및 통신비용 소모 최소화)를 보장할 수 있다.
둘째로, PoN 기반 분산합의 알고리즘은 블록체인 공격에 대한 감내가 가능하고, 합의 주체에 대한 공격이 불가능하도록 대응하는 노드 및 다른 노드에서 합의 주체 예측이 불가능하기 때문에 보안성(Security)을 제공할 수 있다.
세째로, PoN 기반 분산합의 알고리즘은 최종성(Finalization)을 제공하여 위변조를 방지하며, 다양한 산업 및 응용에서 요구하는 성능 조건(TPS, 블록 크기, 블록 생성 시간)을 만족시킬 수 있다.
상술된 특징들을 충족하기 위하여, PoN 기반 합의 알고리즘은 두 가지의 조건들을 동시에 만족시킨다. 제 1 조건은 블록 생성 권한을 갖는 노드는 미리 예측 할 수 없는 것이고, 제 2 조건은 생성된 블록은 다시 수정 할 수 없는 것이다. 먼저 제 1 조건은 노드들간 담합에 의한 공격을 방지하기 위하여 필요한 부분이다. 특히 아무도 믿을 수 없는 public block chain의 경우 블록을 생성할 노드를 미리 아는 경우 공격의 가능성이 높아지므로 이를 방지할 필요가 있다. 또한 선정된 노드는 그 자격을 확인할 수 있어야 한다. 제 2 조건은 한번 합의된 블록이 수정될 수 없도록 한 것이다.
도 1은 본 발명의 실시 예에 따른 블록체인을 예시적으로 보여주는 도면이다. 도 1을 참조하면, 101번 블록이 생성되었고 102번 블록을 신규로 생성하는 경우, 102번 블록을 생성에 참여하는 노드를 임의로 선택하는 방법은, 101번 블록의 hash 값과 노드마다 발생한 임의의 값을 해쉬(hash)함으로써 하나의 값을 계산하고, 그 계산된 값을 임의의 기준값과 비교하는 것을 이용할 수 있다. 이때 블록 생성 참여 노드가 정당하게 해쉬된 결과를 생성하였는지에 대하여 모든 참여 노드가 확인할 수 있도록 하기 위하여, 모든 노드는 블록 생성 참여 노드가 발생한 임의의 값을 알고 있다.
그런데, 블록 생성 참여 노드가 가지는 임의의 값을 공개하는 경우, 두 가지 문제점들이 발생될 수 있다. 첫째로, 공개된 임의의 값을 기반으로 블록 생성에 참여할 노드를 미리 계산 함으로써 노드간의 담합에 의한 공격이 가능해지는 문제가 발생될 수 있다. 둘째로, 블록 생성 참여 노드가 사용하는 임의의 값을 알고 있을 때 악의적인 노드가 특정 노드의 임의의 값을 사용할 수 있는 문제가 발생될 수 있다. 이러한 문제점을 해결하기 위하여 노드가 사용한 임의의 값이 해당 노드의 것이라는 것을 다른 노드들이 확인할 수 있어야 하고, 동시에 새로운 블록 생성에 참여하는 노드들은 다른 노드들이 미리 예측 할 수 없어야 한다. 이에 PoN(Proof of Nonce) 기반 분산합의 알고리즘을 위한 난스 체인이 다음과 같이 구성될 수 있다.
도 2는 본 발명의 실시 예에 따른 PoN 기반 분산합의 알고리즘을 위한 난스 체인(Nonce Chain)을 예시적으로 보여주는 도면이다. 도 2를 참조하면, master key는 각 노드가 비공개로 유지하는 임의의 난수이고, Base n는 master key를 사용해서 생성하는 비공개 임의의 난수이고, 난스 체인 n은 base n을 m번 반복 해쉬를 수행하여 생성한 nonce chain과 nonce chain을 사용하기 시작할 start height으로 구성될 수 있다.
예를 들어, 10 초에 한번 블록을 생성하는 경우, 3 시간 동안 1080 개의 nonce가 필요하다. 따라서 3 시간 동안 사용할 난스 체인은 1080 번 해시를 반복하여 생성될 수 있다. 한편, 도 2에서 도시된 난스 체인의 길이는 1080 개 이지만, 이는 본 발명의 실시 예에 불과하다고 이해되어야 할 것이다.
도 3은 본 발명의 실시 예에 따른 난스 체인 사용 방법을 예시적으로 설명하기 위한 도면이다. 도 3을 참조하면, master key는 노드가 비공개로 유지하고 임의의 난수를 시작으로 base hash를 생성할 수 있다.
실시 예에 있어서, 난스 체인은 적어도 하나의 base chain를 포함할 수 있다. 실시 예에 있어서, base chain은 다음 base chain을 예측 할 수 없도록 유지 할 수 있다. 이때 10초에 한번 블록을 생성하는 경우 3시간에 1080개의 블록이 생성될 수 있다.
실시 예에 있어서, 난스 체인에 연결된 hash 값들은 각각 하나의 블록 height에만 사용될 수있다. master key로부터 하나의 base hash가 생성되면, 이 값을 해쉬하여 다음 해쉬 값을 계산하고, 계산된 해쉬 값을 다시 해쉬하여 다음 해쉬 값이 계산될 수 있다. 이러한 해쉬 연산을 1080번 반복 수행될 수 있다.
한편, 1080개의 난스 체인 길이는 설명의 편의를 위한 본 발명의 실시 예에 불과하다고 이해되어야 할 것이다.'
이렇게 생성된 하나의 난스 체인은 base hash로부터 이전 값을 해쉬한 값이 chain 으로 연결된 구조를 갖는다. hash의 특징으로 인하여 순방향 계산은 가능하지만, 역방향 계산은 아주 어려운 특징을 가지고 있다. 생성된 1080개의 난스 체인의 마지막 hash 값(hash(0))과, 해당 체인이 사용될 블록의 height(start_height)가 모든 엘리드 노드에게 공개될 수 있다. 이후로 (블록의 현재 height - start height)에 대응하는 값을 난스 체인에서 가져와 height-1 블록의 해쉬 값과 같이 해슁하여 노드의 참여 여부가 결정될 수 있다.
예를 들어 한 노드가 새로운 nonce chain을 생성하여 블록 height 100번부터 사용하다고 공개한 경우를 가정하여 설명하겠다. 만약 현재 102번 height 블록을 새로 생성하기 위하여 블록 생성에 참여할 노드들을 선택하고자 하는 경우, 신규 블록 height는 102가 되고, 대응하는 노드의 start height는 100이 되므로 두 값의 차이(블록의 height - start height)는 2가 될 수 있다. 따라서 노드가 가지고 있는 nonce chain에서 hash(2)를 추출하여, 이 값과 101번 블록의 hash 값을 해쉬하여 난수를 계산하고, 계산된 난수의 일부분을 기준값과 비교한 결과가 참인 경우, 대응하는 노드는 블록 생성에 참여하는 노드가 될 수 있다. 이때 대응하는 노드는 자신이 사용한 hash(2)를 공개하여 정당하게 블록 생성에 참여하였음을 증명할 수 있다.
또한, 대응하는 노드의 정당성을 확인하기 위하여 다른 노드는 블록 생성 참여 노드가 공개한 hash(2)를 (블록의 height - start height)번 해쉬 연산을 반복하고, 그 값이 블록 생성 참여 노드가 미리 공개한 hash(0) 값과 같음을 확인 할 수 있다. 또한 대응하는 height에서 사용할 hash(블록의 height - start height)값은 노드가 이미 공개한 마지막 해쉬값(hash(0))를 반복 계산에 의해 정당성을 할 수 있는 임의의 수이다. 따라서, 각 노드들은 대응하는 height에서 사용 가능한 하나의 hash 값을 찾도록 제한될 수 있다.
자신을 제외한 모든 노드는 서로 난스 체인의 해쉬 값을 예측 할 수 없으므로, 노드들간 담합에 의해 미리 블록 생성에 참여 가능함 노드를 예측하는 것이 불가능하다. 동시에 노드가 계산에 의해 블록 생성에 참여가 결정되는 경우, 대응하는 노드는 대응하는 난스 체인 값을 공개함으로써, 정당한 hash 값을 가졌는지 증명 할 수 있다.
하나의 난스 체인을 모두 소비 하는 경우, base hash 값을 원장에 기록하여 이제까지 노드 선정에 참여한 결과들이 이상 없었는지 추후 확인 가능하게 할 수 있다. 다음에 사용될 base hash(1)에서 생성된 nonce chain의 마지막 값(hash(0))와 start height가 공개될 수 있다.
이때 블록 생성에 성공한 노드는 다음에 사용할 base hash를 변경함으로써 nonce chain을 생성하고, 마지막 hash 값과 start height를 공개 할 수도 있다. 이러한 작업은 모든 노드가 동시에 nonce chain 업데이트를 시도 할 경우, 네트워크 혼잡과 노드 프로세스 과부하의 문제가 발생 할 수 있으므로, 블록 생성에 성공한 노드가 nonce chain을 강제로 업데이트 하여 chain 업데이트 혼잡 문제를 해결 할 수 있다.
한편, 블록체인 합의 알고리즘의 블록 생성 후보 선정 방법은 구체적으로 아래와 같다.
블록 생성 노드를 결정하기 위하여 이전 블록 해쉬 값과 노드의 nonce chain에서 하나의 값을 가져와 해쉬하여 하나의 랜덤 값이 생성될 수 있다. 이 랜덤 값은 그 특성이 균일 분포를 갖고 랜덤 값을 일부를 취하여도 그 특성은 균일 분포를 갖는다. 아래에서는 계산의 편이성을 위하여 렌덤 값의 일부만으로 계산하는 경우를 가정하겠다. 난스 체인을 이용하는 경우, n개의 노드들이 각각 임의의 랜덤 값을 하나씩만 가지게 된다. 각 노드가 가진 값이 특정 기준값 비교에 의한 조건을 만족하는 경우에 각 노드에 블록 생성 후보의 자격을 부여될 수 있다. 반면에 조건을 만족시키지 못하는 경우 각 노드에 블록 생성 부호의 자격을 박탈될 수 있다. 자격 부여의 실패를 0, 자격 부여의 성공을 1로 하는 결과가 나오므로, 성공 확률이 p인 베르누이(Bernoulli) 시행이 될 수 있다.
성공 확률 p인 베르누이 시행을 n번 반복 시행 할 때, 성공 횟수 X의 분포는 이항 분포(Binomial Distribution)일 수 있다. 이때, 이항분포의 평균과 분산은 각각 아래의 수학식과 같다.
Figure pat00001
Figure pat00002
이때 이 확률 분포는 반복 시행 n이 충분히 큰(n이 30 이상) 경우 중심극한정리에 의해 평균이 np이고 분산이 np(1-p)인 정규분포에 수렴된다. 평균이 μ이고 표준편차가 σ인 경우 정규분포의 확률 밀도 함수(Probability Density Function)는 다음과 같다.
Figure pat00003
Figure pat00004
Figure pat00005
여기서 함수 hash(이전 노드의 해쉬 값, nonce chain에서 선택한 하나의 hash 값)의 출력 값 중 일부를 특정 기준값 비교에 의한 조건을 만족하는 경우, 선택되는 경우에 모든 노드가 동일한 기준값을 사용한다면, 수학식 1의 μ는 선택되는 노드의 평균값을 의미한다.
이때 수학식 5에서 x이 0인 경우 노드가 하나도 선택되지 않는 확률 값이 되며, x가 10인 경우 10개 이하의 노드가 선택될 확률이 된다. 수학식 1을 p에 대해 정리하고, 수학식 2를 σ에 대해 정리하여 수학식 5에 대입하면, 다음과 같은 수학식을 얻어진다.
Figure pat00006
따라서 수학식 6에서 노드 x 개 이하가 선택될 확률 F(x)를 상수 k 라고 하는 고정하는 경우 이식은 다음과 같이 된다.
Figure pat00007
수학식 6에서 x는 이미 위에서 노드 x 개 이하가 선택된다는 조건에 의해 상수가 된다. 따라서 수학식 7은 아래와 같은 μ에 대한 2차 방정식이 된다.
Figure pat00008
수학식 8에서 (erf-1(2k-1))2 = a 라 놓고 다시 정리하면 다음과 같이 정리된다.
Figure pat00009
수학식 9에서 이 방정식의 해는 다음과 같다.
Figure pat00010
여기서 k는 다음과 같이 계산된다. 10초에 한번 블록을 생성하는 경우 1년 동안 발생하는 누적 블록의 개수는 6Х60Х24Х365 개이다. 따라서 누적 years 동안 발생할 누적 블록 수의 역수는 years 주기로 x개 이하의 노드가 선정될 확률 k와 동일해야 한다. 따라서 k는 수학식 11과 같다.
Figure pat00011
예를 들어 x 개 이하 노드가 선택될 주기가 백만년으로 설정하는 경우 수학식 11의 years에 106을 대입하여 k 값을 정한다. x와 k를 정하면 수학식 10에 의해 평균값 μ를 결정된다.
수학식 8에 의한 계산해 보면 노드의 총수가 10억개 이하일 때 백만년에 한번만 10개 노드 이하가 선택되도록 하는 μ의 값은 70.32개 이다.
도 4는 본 발명의 실시 예에 따른 PoN 기반 분산합의 알고리즘에서 총 노드별 평균 노드 선택에 대한 시뮬레이션 결과를 예시적으로 보여주는 도면이다. 도 4를 참조하면, <10 의 의미는 10개 이하의 노드가 선택 될 확률을 의미한다. 이 값이 3.17e-13정도 되면, 백만년에 한번 10개 이하 노드들이 선택됨을 알 수 있다. 또한 계산상 7개 이하의 노드가 발생할 확률은 0이다.
n과 μ가 결정되면, 노드가 선택될 확률 p가 수학식 12와 같이 결정된다. 모든 노드가 사용할 특정 기준값은 계산된 hash값의 일부분이 표현 할 수 있는 최대값(예를 들어 32비트를 사용하는 경우 최대값은 232이 됨)에 (μ/n)을 곱한 값이 된다. 따라서 기준값 difficulty 는 수학식 13과 같다.
Figure pat00012
Figure pat00013
또한 누적분포 함수와 도 4로부터 다음과 같은 사실을 알 수 있다. half의 의미는 평균의 1/2 이하의 노드가 선택되는 확률을 의미한다. 이 확률은 알고리즘 동작 중에 선택된 노드 수에 의해 네트워크 분할이나 노드의 비활성 등을 예측하는데 사용 할 수 있다.
도 4에서 <half 값이 1.38e-5은 선택되어야 할 노드가 절반만 선택되는 확률로 매우 드물게 발생함을 알 수 있다. 따라서 선택된 노드의 수가 노드 평균의 절반 등 특정한 기준값을 넘지 못하는 경우나, 이러한 현상이 연속 발생하는 경우에, 노드의 aliveness를 확인하는 시점으로 이용 될 수 있다
한편, PoN 기반 분산합의 알고리즘의 특징을 정리하면, 다음과 같다. 채굴 기회가 소유 자원 및 소유 지분과 무관하게 확률적으로 공평하게 제공될 수 있다. 채굴 기회를 누가 갖게 될지 자신을 포함한 어느 누구도 예측될 수 없다. 채굴이 정당한 노드에서 이루어 졌는지 다른 노드에서 검증 가능하다. 합의된 블록은 수정이 불가능하다. 전체가 참여하지 않아도 대표 속성을 가질 수 있도록 채굴 노드가 최소 N개 이상임을 확률적으로 보장될 수 있다. 합의 주체 예측을 통한 타깃 공격이 불가능하다.
도 5는 본 발명의 실시 예에 따른 PoN 기반 합의노드 알고리즘에서 노드의 elite pool의 구조를 예시적으로 보여주는 도면이다. 도 5을 참조하면, 분산합의에 참여하기 위하여 노드는 다른 노드의 elite pool에 난스 체인 정보를 등록해야 한다. 노드의 난스 체인 정보가 다른 노드의 elite pool에 등록될 때, 노드는 분산합의 주체가 될 수 있다.
실시 예에 있어서, 난스 체인 정보는 노드 주소, 대응하는 chain의 마지막 해쉬 값인 Noncebase(0) 값, 및 Start height 값을 포함할 수 있다. 실시 예에 있어서, 노드가 등록한 난스 체인은 (start height + 1) height에서부터 사용 가능하다. 실시 예에 있어서, 난스 체인 정보에서 노드 주소는 노드의 공개키(public key) 혹은 노드를 한정 할 수 있는 값을 포함할 수 있다. 실시 예에 있어서, 난스 체인 등록은 블록체인의 사용되지 않은 거래 내역을 이용하여 다른 노드에 공개 할 수 있다.
도 6은 본 발명의 실시 예에 따른 노드의 새로운 블록 생성 권한 확인 방법을 예시적으로 보여주는 도면이다. 도 6을 참조하면, 블록체인에 연결할 새로운 블록의 생성 권한 획득 여부를 확인 하기 위하여 각 노드들은 아래와 같은 방법으로 진행될 수 있다.
노드들은 자신이 갖고 있는 난스 체인에서 noncebase(새로운 블록의 height - 노드가 등록한 start height)를 가져온다. 이때 가져온 값이 nonceh 가 될 수 있다(S110). 각 노드들은 이전 블록의 해드 값의 해쉬 결과
Figure pat00014
을 계산할 수 있다(S120).
노드는
Figure pat00015
계산 결과가 참이면, 새로운 블록 생성 권한 획득 한 것으로 결정될 수 있다(S130). 블록체인 height h 마다 확률 p로 분산합의 노드들이 선정되도록 하기 위하여
Figure pat00016
이용될 수 있다. 여기서
Figure pat00017
는 hash 함수로 얻는
Figure pat00018
의 해쉬 값이다.
Figure pat00019
은 height h-1 블록의 헤더 해쉬 값이다. 따라서 모든 노드는 height h-1 블록이 블록체인에 연결 되어야 height h 의 분산합의 노드 여부를 알 수 있다.
Figure pat00020
는 height h 에 대해 각 노드가 다르게 갖는 nonce 값으로 하기의 난스 체인을 통해 얻는 값이다.
난스 체인을 이용하면, 첫째, 노드가 임의대로 nonce 값을 바꿀 수 없게 되어 비트코인처럼 연산 능력을 이용하여 분산합의 노드가 되려는 시도를 할 수 없다. 둘째, 각 노드의 nonce 값을 다른 노드가 예측 할 수 없게 되어 악의적인 노드가 분산합의 노드를 예측하여 공격하는 것이 불가능하다. 셋째, 노드가 공개하는 nonce 값의 정당성을 다른 노드가 검증 할 수 있다.
Figure pat00021
는 분산합의에 필요한 최소한의 노드만 분산합의 자격을 얻을 수 있도록 모든 노드가 height h 에 대해 사용하는 동일한 값이다.
이후에, 새로운 블록 생성 권한을 획득한 노드는 자신이 사용한 nonceh 값, 블록의 height 값, 및 노드의 주소를 공개할 수 있다(S140).
본 발명의 실시 예에 따른 PoN 기반 합의노드 선정 방법은, 다른 노드가 예측 불가능하게 heighth에 대한 분산합의 주체를 선택하기 위하여 이전 heighth-1 정보와 난스 체인에서 정보를 읽고, 읽혀진 두 정보를 연산하고, 연산된 결과를 특정 기준값과 비교를 통해 확률 p로 노드를 선정할 수 있다.
실시 예에 있어서, 자신을 포함한 모든 노드가 이전 블록이 생성되기 전까지 다음 블록의 합의 주체 선정 여부를 예측할 수 없도록 하기 위하여 이전 블록의 정보가 이용될 수 있다.
실시 예에 있어서, 자신을 포함한 모든 노드가 합의 주체로 선택될 수 있는 계산 기회를 매 height마다 1회만 부여하기 위하여 난스 체인에서 가져온 값이 hash 함수의 nonce로 이용될 수 있다.
실시 예에 있어서, 합의에 참여 가능한 노드 개수가 n이고, 합의에 필요한 최소 노드 개수가 x이고, 합의에 필요한 최소 노드 개수 이하가 선택될 확률 값을 k라고 할 때, 이 세개의 변수(n, x, k)를 포함하는 분산합의 주체 개수가 제어될 수 있다.
실시 예에 있어서, 노드가
Figure pat00022
비교에 의해 이항분포를 갖는다. 실시 예에 있어서, 세 개 변수(n, x, k)를 갖는 확률 값 px,k
Figure pat00023
의 최대 값을 곱함으로써 난이도(
Figure pat00024
)가 계산될 수 있다.
도 7은 본 발명의 실시 예에 따른 분산합의에 참여하는 노드의 자격 검증하는 방법을 예시적으로 보여주는 도면이다. 도 7을 참조하면, 다른 노드는 3가지 정보를 공개한 노드가 블록 생성 권한이 있는지를 다음과 같이 검증할 수 있다.
다른 노드들은 블록 생성 노드의 난스값, height 정보 및 주소를 수신할 수 있다(S210). 다른 노드들은 대응하는 노드의 주소로 등록된 noncebase(0)값과 Start height 값을 가져 올 수 있다(S220).
다른 노드는 노드가 공개한 값에서 (새로운 블록의 height - Start height)을 계산할 수 있다(S230). 노드가 공개한 nonceh를 (새로운 블록의 height - Start height)번 연속 해쉬 계산하고, 계산된 마지막 값이 noncebase(0)와 같으면, 공개 노드가 블록 생성 권한이 있는지 검증될 수 있다. 반면에, 그렇지 않으면, 정보 공개 노드는 거짓으로 판별될 것이다. 검증 결과가 거짓인 노드는 블록 생성 및 사용에 불이익을 받을 수 있다.
본 발명의 실시 예에 따른 PoN 기반 분산노드 합의 알고리즘의 합의 주체 자격 획득 방법은, 합의에 참여 가능한 각 노드에게 노드가 가진 자산(예, 연산능력)이 합의 주체 자격 획득 확률에 영향을 주지 않도록 합의 주체 선정 여부를 판단 할 수 있는 기회를 매 height마다 노드당 1회로 제한할 수 있다.
실시 예에 있어서, 합의 주체 선정 여부 판단 기회는 1회 이상 m회 이하로 제한할 수 있다.
실시 예에 있어서, 합의 주체로 선정된 노드가 자신을 식별할 수 있는 주소 정보, 자신의 난스 체인에서 얻은 nonce 정보 및 height 정보를 공개함으로써 다른 노드들은 합의 주체 자격 획들을 검증 가능하다. 실시 예에 있어서, 합의 주체 검증을 통과하지 못한 노드는 불이익을 줄 수 있다.
도 8은 본 발명의 실시 예에 따른 난스 체인 갱신하는 방법을 예시적으로 보여주는 도면이다. 도 8를 참조하면, 하나의 난스 체인을 모두 소진 하는 경우 난스 체인은 다음과 같이 갱신될 수 있다.
난스 체인e이 모두 소진될 경우 base hash 값을 원장에 기록한다(S310). 이는 이제까지 노드 선정에 참여한 결과들이 이상 없었는지 추후 확인 가능할 수 있다. 하나의 난스 체인이 소진되는 경우에 base hash를 다시 계산될 수 있다(S320). 이 base hash에서 생성된 난스 체인의 마지막 값(hash(0))와 start height를 공개함으로써 난스 체인이 갱신될 수 있다(S340).
실시 예에 있어서, 노드가 생성한 난스 체인의 모든 값을 소진하고 동시에 새로운 난스 체인 업데이트를 시도 하는 경우, 블록 생성에 성공한 노드가 새로운 난스 체인을 강제로 업데이트 하여 chain 업데이트 혼잡 문제를 해결 할 수 있다.
실시 예에 있어서, 블록 생성에 성공한 노드가 난스 체인을 업데이트 하므로 과도한 트래픽 발생으로 인한 네트워크 혼잡과 노드의 업데이트 처리 과부하의 문제를 줄일 수 있다.
한편, 본 발명은 분산 컴퓨팅 환경에 적용 가능하다. 예를 들어, 불특정 다수가 참여하는 분산 컴퓨팅 시스템은, 노드가 사용할 난스 체인을 해쉬 체인 기반으로 생성하고, start height와 nonce(0)를 미리 공개하여 노드가 nonce chain 순서대로 해쉬 값을 사용하도록 제한하고, 다른 노드들이 공개된 값을 기반으로 추후에 결과를 검증 할 수 있다.
본 발명의 실시 예에 따른 블록체인을 발생하는 분산 컴퓨팅 시스템은, 난스 체인을 해쉬 체인 기반으로 생성하고, start height, 난스 체인의 난스 값, 및 노드의 주소를 갖는 난스 체인 정보를 다른 노드들에게 공개하는 적어도 하나의 제 1 노드, 및 난스 체인 정보와 적어도 하나의 제 1 노드로부터 수신된 난스 값과 height을 이용하여 적어도 하나의 제 1 노드의 합의노드 선정 자격을 검증하는 적어도 하나의 제 2 노드를 포함할 수 있다.
실시 예에 있어서, 적어도 하나의 제 1 노드가 블록 생성에 성공할 때, 난스 체인이 업데이트 될 수 있다. 실시 예에 있어서, 적어도 하나의 제 2 노드는 난스 체인 정보를 등록하는 elite pool를 더 포함할 수 있다. 실시 예에 있어서, elite pool에서 적어도 하나의 제 1 노드가 탈퇴함으로써 합의 주체에서 빠질 수 있다. 실시 예에 있어서, 적어도 하나의 제 1 노드를 elite pool에 등록하기 위하여 블록체인의 거래내역이 이용될 수 있다.
한편, 아래에서는 난이도(Difficulty)에 대하여 자세하게 설명하겠다. 난이도라는 개념은 단순히 설명하면 노드로 선정될 확률을 일컫는다. 즉, 노드로 선정될 확률이 낮아지는 것과 난이도가 높아졌다는 것은 동일한 의미이다.
참여 노드들은
Figure pat00025
수학식을 이용하여 분산합의 주체 선정 여부를 판단할 수 있다. 이때, Difficulty 값이 너무 큰 경우, 지나치게 많은 노드가 분산합의 주체로 선정되어 네트워크 트래픽이 증가하고 합의를 위하여 긴 시간이 소모 될 수 있다. 반대로 Difficulty 값이 너무 작은 경우, 분산합의 주체로 선정 될 확률이 매우 적어 합의에 필요한 최소 노드 이하가 선정되어 합의가 불가능 해질 수 있다. 따라서 분산합의에 필요한 주체 개수를 제어할 수 있는 적합한 difficulty 값을 정할 수 있는 방법이 필요하다.
따라서, 분산합의에 필요한 주체 개수를 제어하는 확률 p 결정 방법은 다음과 같다. 임의의 난수를 하나 선택하여 그 임의의 수를 특정 기준값과 비교하여 pass 혹은 fail로 선택하는 것을 성공 확률 p인 베르누이 시행이라 한다.
분산합의 주체를 선정하기 위하여 사용한 수학식
Figure pat00026
의 왼쪽은 해쉬 함수의 결과로 하나의 랜덤한 수가 되며, 오른쪽은 특정한 기준값(difficulty, 혹은 난이도)가 된다. 특정 랜덤 수와 기준값을 비교하여 분산합의 주체로 선정 되는 것을 pass, 선정되지 않는 것을 fail로 하면 위 수학식의 결과는 성공 확률 p인 베르누이 시행이 된다. 성공 확률 p인 베르누이 시행을 n번 수행할 때 x번 성공하는 경우에 누적 분포 함수는 아래와 같다.
Figure pat00027
분산 노드들이 성공적으로 합의에 이르기 위하여 확률적으로 최소한의 노드는 반드시 필요하다. 따라서 최소노드수(x)와 최소노드이하가 선택될 확률값 Fx(x)를 선택 할 수 있다. 이때 이 확률 값을 k라 하고 확률 p를 구할 수 있다.
합의에 필요한 최소노드수(x)와 최소 노드이하가 선택될 확률값(K)에 대한 확률 px,k는 아래 수학식과 같다
Figure pat00028
여기서 n 은 elite pool에 등록된 노드의 개수이고, x 는 합의를 위하여 필요한 최소 노드 개수이고, k는 x 노드 이하의 노드가 선택될 누적 분포 확률 값이고, px,k는 (n, x, k) 3개의 변수로 결정될 수 있다.
이때
Figure pat00029
에서 분산합의 주체로 선택되는 노드의 확률이px,k가 되기 위하여는
Figure pat00030
의 최대 값을 px,k 에 곱하여
Figure pat00031
로 사용하면 된다. 이때 이 최대 값을 maxslice로 표기 하면 아래의 수학식과 같이
Figure pat00032
를 결정 할 수 있다. 예를 들어 위 수학식의 연산을 위하여 hash 결과에서 32 비트만 연산에 사용하는 경우 maxslice = 232 이 된다.
Figure pat00033
노드에 공개된 elite pool에 등록된 노드 수에 변화가 있는 경우에
Figure pat00034
를 새로 계산될 수 있다.
한편, 상술된 difficulty 를 만족하는 px,k 확률로 동작하는 시스템에서 누적분포 함수 Fx(x)의 x 가 평균(μ)의 절반 이하(μ/2)의 노드가 선택될 확률이 매우 낮다. 따라서 분산합의 주체로 선택된 노드의 수가 μ/2 등 특정 노드 개수의 이하로 선택되는 경우나 혹은 연속으로 두번 이상 이러한 현상이 발생하는 경우, 네트워크 분할이나 노드 비활성 등의 노드 liveness 확인에 사용 될 수 있다. 한편, difficulty의 기준값이 확률 분포의 평균값의 절반(μ/2)으로 제한될 필요는 없다고 이해되어야 할 것이다. 본 발명의 difficulty의 기준값은 확률 분포의 평균값에 연관된 임의의 값일 수 있다.
도 9는 본 발명의 실시 예에 따른 노드의 liveness 확인 방법을 예시적으로 보여주는 도면이다. 도 9를 참조하면, 노드의 liveness를 확인하는 방법은 다음과 같다. 분산합의 노드로 선정된 노들의 개수가 카운트될 수 있다(S410). 카운트된 값이 특정 노드의 개수(예를 들어, μ/2)보다 작은지 판별될 수 있다(S420). 만일, 카운트된 값이 특정 노드의 개수보다 작을 때 합의 노드 알고리즘의 liveness는 보장되지 않는다. 반면에, 카운트 된 값이 특정 노드의 개수보다 같거나 클 때, 합의 노드 알고리즘의 liveness는 보장될 수 있다.
본 발명의 실시 예에 따른 PoN 기반 합의노드 알고리즘의 노드의 liveness 확인 방법은, 합의 주체로 선택된 노드의 수를 기반으로 네트워크 분할이나 노드 비활성 등의 문제 가능성을 실시간 인지할 수 있다.
도 10은 본 발명의 실시 예에 따른 블록체인 생성 장치(1000)를 예시적으로 보여주는 도면이다. 도 10을 참조하면, 블록체인 생성 장치(1000)는 적어도 하나의 프로세서(1100), 네트워크 인터페이스(1200), 메모리(1300), 디스플레이(1400), 및 입출력 장치(1500)를 포함할 수 있다.
프로세서(1100)는 도 1 내지 도 9를 통하여 적어도 하나의 장치를 포함하거나, 도 1 내지 도 9을 통하여 전술한 적어도 하나의 방법으로 구현될 수 있다. 프로세서(1100)는, 상술된 바와 같이, 난스 체인을 해쉬 체인 기반으로 생성하고, start height, 상기 난스 체인의 난스 값, 및 노드의 주소를 갖는 난스 체인 정보를 다른 노드들에게 공개하거나, 상기 난스 체인 정보와 상기 적어도 하나의 제 1 노드로부터 수신된 난스 값과 height을 이용하여 상기 적어도 하나의 제 1 노드의 합의노드 선정 자격을 검증하도록 인스트럭션들(instructions)을 실행할 수 있다.
프로세서(1100)는 프로그램을 실행하고, 생성 장치(1000)를 제어할 수 있다. 생성 장치(1000)는 입출력 장치(1500)를 통하여 외부 장치(예를 들어, 퍼스널 컴퓨터 혹은 네트워크)에 연결되고, 데이터를 교환할 수 있다. 생성 장치(1000)는 이동 전화, 스마트 폰, PDA, 태블릿 컴퓨터, 랩톱 컴퓨터 등 모바일 장치, 퍼스널 컴퓨터, 태블릿 컴퓨터, 넷북 등 컴퓨팅 장치, 혹은 텔레비전, 스마트 텔레비전, 게이트 제어를 위한 보안 장치 등 전자 제품 등 다양한 전자 시스템을 포함할 수 있다.
네트워크 인터페이스(1200)는 외부의 네트워크와 다양한 유/무선 방식에 의해 통신을 수행하도록 구현될 수 있다.
메모리(1300)는 컴퓨터에서 읽을 수 있는 명령어(instruction)를 포함할 수 있다. 프로세서(1100)는 메모리(1300)에 저장된 명령어가 프로세서(1100)에서 실행됨에 따라 앞서 언급된 동작들을 수행할 수 있다. 메모리(1300)는 휘발성 메모리 혹은 비휘발성 메모리일 수 있다. 메모리(1300)는 사용자의 데이터를 저장하도록 저장 장치를 포함할 수 있다. 저장 장치는 eMMC(embedded multimedia card), SSD(solid state drive), UFS(universal flash storage) 등 일 수 있다. 저장 장치는 적어도 하나의 비휘발성 메모리 장치를 포함할 수 있다. 비휘발성 메모리 장치는, 낸드 플래시 메모리(NAND Flash Memory), 수직형 낸드 플래시 메모리(Vertical NAND; VNAND), 노아 플래시 메모리(NOR Flash Memory), 저항성 램(Resistive Random Access Memory: RRAM), 상변화 메모리(Phase-Change Memory: PRAM), 자기저항 메모리(Magnetoresistive Random Access Memory: MRAM), 강유전체 메모리(Ferroelectric Random Access Memory: FRAM), 스핀주입 자화반전 메모리(Spin Transfer Torque Random Access Memory: STT-RAM) 등이 될 수 있다.
이상에서 설명된 실시 예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/혹은 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(Arithmetic Logic Unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(Field Programmable Gate Array), PLU(Programmable Logic Unit), 마이크로프로세서, 혹은 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 혹은 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(Operating System; OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다.
또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 대응하는 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소 (processing element) 및/혹은 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수의 프로세서 혹은 하나의 프로세서 및 하나의 제어기(controller)를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 혹은 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 혹은 결합적으로 (collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/혹은 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 혹은 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 혹은 장치, 혹은 전송되는 신호파(signal wave)에 영구적으로, 혹은 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
본 발명의 실시 예에 따른 블록체인 생성 장치(1000)는, 적어도 하나의 프로세서(1100) 및 적어도 하나의 프로세서(1100)에 의해 실행되는 적어도 하나의 인스트럭션을 저장하는 메모리(1300)를 포함하고, 상기 적어도 하나의 인스트럭션은, 노드의 난스 체인으로부터 난스를 읽어오고, 읽혀진 난스와 이전 height 정보를 연산하고, 및 상기 노드를 합의노드로 선정하기 위하여 상기 연산된 값과 기준값을 비교하도록 적어도 하나의 프로세서(1100)에서 실행될 수 있다.
실시 예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 혹은 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시 예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체 (magneto-optical media), 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위하여 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
본 발명은, 분산합의에 참여하는 노드를 예측할 수 없도록 하여 다른 악의적인 노드가 분산합의 노드를 예측하여 공격하는 것이 불가능하다.
또한, 본 발명은, 전체 노드 중 분산합의에 필요한 최소한의 노드만 분산합의 자격을 얻을 수 있도록 하여 분산합의 참여 노드 간 빠른 합의가 가능하다.
또한 본 발명은, 노드의 연산 능력과 무관하게 분산합의 자격을 얻을 수 있도록 하여 강력한 연산 능력을 확보한 일부의 노드가 분산합의 자격을 독점 할 수 없다.
또한 본 발명은, 분산합의에 참여하는 노드의 자격을 검증 할 수 있도록 하여 자격 없는 노드의 분산합의 참여를 차단할 수 있다.
한편, 상술된 바와 같이 각 노드의 난스 체인은 합의노드 선정 혹은 검증에 이용하였다. 난스 체인은 임의의 사드(shard)에 노드를 배정하고, 각 샤드에서 최소의 노드가 합의 주체로 선정되도록 이용될 수 있다.
한편, 상술 된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장차 기술로 활용할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함할 것이다.
100, 101, 102: 블록
1000: 블록체인 생성 장치
1100: 프로세서
1300: 메모리

Claims (36)

  1. 블록체인 생성 장치의 합의노드 선정 방법에 있어서,
    노드의 난스 체인으로부터 난스를 읽어오는 단계;
    상기 읽혀진 난스와 이전 height 정보를 연산하는 단계; 및
    상기 노드를 합의노드로 선정하기 위하여 상기 연산된 값과 기준값을 비교하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 난스 체인은 해쉬 체인(hash chain)인 것을 특징으로 하는 방법.
  3. 제 1 항에 있어서,
    상기 난스 체인을 생성하는 단계를 더 포함하는 방법.
  4. 제 3 항에 있어서,
    상기 난스 체인을 생성하는 단계는,
    상기 노드가 비공개로 유지하는 마스터 키를 이용하여 상기 난스 체인을 생성하는 단계를 포함하는 방법.
  5. 제 4 항에 있어서,
    상기 마스터 키를 이용하여 상기 난스 체인을 생성하는 단계는,
    상기 마스터 키를 이용하여 베이스를 생성하는 단계;
    상기 베이스를 복수번 반복 해쉬함으로써 해쉬 체인을 생성하는 단계; 및
    상기 해쉬 체인을 사용하기 시작할 start height을 설정하는 단계를 포함하는 방법.
  6. 제 1 항에 있어서,
    블록이 주기적으로 생성되는 시간에 대응하는 상기 난스 체인의 길이가 결정되는 것으로 특징으로 하는 방법.
  7. 제 1 항에 있어서,
    상기 연산하는 단계는,
    상기 읽혀진 난스와 이전 height 정보를 해쉬 연산하는 단계를 포함하는 방법.
  8. 제 1 항에 있어서,
    상기 이전 height 정보는 이전 블록의 헤더 해쉬 값을 포함하는 방법.
  9. 제 1 항에 있어서,
    상기 비교 결과로써 상기 연산된 값이 상기 기준값 보다 작을 때, 상기 난스 체인의 마지막 난스 값, 상기 난스 체인을 시작한 start height, 상기 노드의 주소를 다른 노드들에 공개하는 단계를 더 포함하는 방법.
  10. 제 9 항에 있어서,
    elite pool에 상기 다른 노드들의 난스 체인 정보를 등록하는 단계를 더 포함하고,
    상기 난스 체인 정보는 대응하는 노드의 주소, 대응하는 난스 체인의 마지막 난스 값, 및 상기 대응하는 난스 체인을 시작한 start height를 포함하는 방법.
  11. 제 9 항에 있어서,
    상기 노드의 주소는 공개키 혹은 상기 노드를 한정하는 값을 포함하는 것을 특징으로 하는 방법.
  12. 제 1 항에 있어서,
    상기 노드가 포함된 모든 노드들이 이전 블록이 생성되기 전까지 다음 블록의 합의노드 선정 여부를 예측 할 수 없도록 하기 위하여 상기 이전 블록의 정보를 이용하여 합의노드를 선정하는 것을 특징으로 하는 방법.
  13. 제 1 항에 있어서,
    상기 노드를 포함하는 모든 노드가 합의노드로 선택될 수 있는 계산 기회를 height 마다 1회 부여하기 위하여 상기 난스 체인에서 읽어온 난스를 해쉬 함수의 난스로 이용하는 것을 특징으로 하는 방법.
  14. 제 1 항에 있어서,
    분산합의에 참여 가능한 노드의 개수가 n이고, 상기 분산합의에 필요한 최소 노드의 개수가 x이고, 상기 분산합의에 필요한 최소 노드의 개수 이하로 선택될 누적 분포 확률 값이 k 일 때, 상기 분산합의 노드의 개수는 변수(n, x, k)에 의해 제어 되는 것을 특징으로 하는 방법.
  15. 제 14 항에 있어서,
    상기 누적 분포 확률 값 k는 이항분포 특성을 갖는 것을 특징으로 하는 방법.
  16. 제 14 항에 있어서,
    상기 노드의 합의노드에 선정될 확률은 변수(n, x, k)에 의해 결정되는 베르누이 시행에 따른 확률 값 Px,k인 것을 특징으로 하는 방법.
  17. 제 16 항에 있어서,
    상기 노드의 elite pool에 등록된 노드의 개수가 변화할 경우, 상기 기준값을 변경하는 단계를 더 포함하는 방법.
  18. 제 17 항에 있어서,
    상기 기준값은 상기 확률 값 Px,k와 상기 연산된 값을 곱함으로써 계산되는 것을 특징으로 하는 방법.
  19. 제 1 항에 있어서,
    상기 노드의 합의노드 선정 여부를 판단하는 기회는 height 마다 1회로 제한되는 것을 특징으로 하는 방법.
  20. 제 19 항에 있어서,
    상기 노드의 합의노드 선정 여부에 대한 판단 기회는 1회 이상 m회 이하로 제한되는 것을 특징으로 하는 방법.
  21. 블록체인 생성 장치의 합의노드 검증 방법에 있어서,
    합의노드의 선정된 제 1 노드로부터 난스 값, 새로운 블록의 height, 및 상기 제 1 노드의 주소를 수신하는 단계;
    제 2 노드의 elite pool에서 상기 제 1 노드의 주소에 대응하는 공개 난스 값 및 start height를 꺼내는 단계;
    상기 새로운 블록의 height에서 상기 start height를 빼는 단계;
    상기 빼어진 height 번만큼 상기 공개 난스 값을 해쉬 연산하는 단계; 및
    상기 제 1 노드의 합의노드 자격을 검증하기 위하여 상기 해쉬 연산된 값과 상기 제 1 노드로부터 수신된 난스 값을 비교하는 단계를 포함하는 방법.
  22. 제 21 항에 있어서,
    상기 해쉬 연산된 값과 상기 수신된 난스 값이 동일할 때, 상기 제 1 노드의 블록 생성 권한이 검증되는 것을 특징으로 하는 방법.
  23. 제 21 항에 있어서,
    상기 해쉬 연산된 값과 상기 수신된 난스 값이 동일하지 않을 때, 상기 제 1 노드는 블록체인 생성 혹은 사용에 불이익을 받는 것을 특징으로 하는 방법.
  24. 블록체인 생성 장치의 난스 체인 업데이트 방법에 있어서,
    합의노드 선정에 이상이 없었는 지 추후에 확인 가능하도록 하기 위하여 원장에 난스 체인에 대응하는 베이스 해쉬값을 기록하는 단계;
    노드의 마스터 키를 이용하여 새로운 베이스 해쉬 값을 계산하는 단계;
    상기 베이스 해쉬 값을 이용하여 새로운 난스 체인을 생성하는 단계; 및
    상기 새로운 난스 체인의 마지막 난스 값과 start height를 다른 노드들에게 공개하는 단계를 포함하는 방법.
  25. 제 24 항에 있어서,
    상기 새로운 난스 체인은 상기 난스 체인의 모든 값이 소진될 때 업데이트 되는 것을 특징으로 하는 방법.
  26. 제 24 항에 있어서,
    상기 새로운 난스 체인은 상기 노드가 블록 생성에 성공할 때 강제로 업데이트 되는 것을 특징으로 하는 방법.
  27. 블록체인 생성 장치의 노드 라이브니스 검증 방법에 있어서,
    분산합의 노드들의 개수를 카운트하는 단계; 및
    상기 카운트된 값이 사전에 결정된 값보다 작은 지를 판별하는 단계를 포함하고,
    상기 분산합의 노드들의 각각은 난스 체인을 이용하여 선정되는 것을 특징으로 하는 방법.
  28. 제 27 항에 있어서,
    상기 사전에 결정된 값은 노드의 블록 생성 후보 선정될 확률 분포의 평균값에 연관된 값인 것을 특징으로 하는 방법.
  29. 제 28 항에 있어서,
    상기 평균값은 elite pool에 등록된 노드의 개수, 분산합의를 위하여 필요한 최소 노드의 개수, 및 상기 최소 노드 이하의 노드가 선택될 누적 분포 확률 값에 의해 결정되는 것을 특징으로 하는 방법.
  30. 제 29 항에 있어서,
    상기 누적 분포 확률 값은 베르누이 시행에 따른 성공 확률 값인 것을 특징으로 하는 방법.
  31. 블록체인을 발생하는 분산 컴퓨팅 시스템에 있어서:
    난스 체인을 해쉬 체인 기반으로 생성하고, start height, 상기 난스 체인의 난스 값, 및 노드의 주소를 갖는 난스 체인 정보를 다른 노드들에게 공개하는 적어도 하나의 제 1 노드; 및
    상기 난스 체인 정보와 상기 적어도 하나의 제 1 노드로부터 수신된 난스 값과 height을 이용하여 상기 적어도 하나의 제 1 노드의 합의노드 선정 자격을 검증하는 적어도 하나의 제 2 노드를 포함하는 분산 컴퓨팅 시스템.
  32. 제 31 항에 있어서,
    상기 적어도 하나의 제 1 노드가 블록 생성에 성공할 때, 상기 난스 체인을 업데이트 되는 것을 특징으로 하는 분산 컴퓨팅 시스템.
  33. 제 31 항에 있어서,
    상기 적어도 하나의 제 2 노드는 상기 난스 체인 정보를 등록하는 elite pool를 더 포함하는 분산 컴퓨팅 시스템.
  34. 제 33 항에 있어서,
    상기 elite pool 에서 상기 적어도 하나의 제 1 노드가 탈퇴함으로서 합의 주체에서 빠지는 것을 특징으로 하는 분산 컴퓨팅 시스템.
  35. 제 33 항에 있어서,
    상기 적어도 하나의 제 1 노드를 상기 elite pool에 등록하기 위하여 블록체인의 거래내역이 이용되는 것을 특징으로 하는 분산 컴퓨팅 시스템.
  36. 블록체인 생성 장치에 있어서:
    적어도 하나의 프로세서; 및
    상기 적어도 하나의 프로세서에 의해 실행되는 적어도 하나의 인스트럭션을 저장하는 메모리를 포함하고,
    상기 적어도 하나의 인스트럭션은, 노드의 난스 체인으로부터 난스를 읽어오고; 상기 읽혀진 난스와 이전 height 정보를 연산하고; 및 상기 노드를 합의노드로 선정하기 위하여 상기 연산된 값과 기준값을 비교하도록 상기 적어도 하나의 프로세서에서 실행되는 것을 특징으로 하는 블록체인 생성 장치.
KR1020190050365A 2018-06-12 2019-04-30 난스 증명 기반 분산합의 노드 선정 방법 및 장치 KR102342840B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
US16/431,333 US11646879B2 (en) 2018-06-12 2019-06-04 Method and apparatus for selecting distributed consensus node based on proof of nonce
CN202311764983.1A CN117728945A (zh) 2018-06-12 2019-06-12 用于基于随机数证明来选择分布式共识节点的方法和装置
CN201910507584.4A CN110599160B (zh) 2018-06-12 2019-06-12 用于基于随机数证明来选择分布式共识节点的方法和装置
KR1020210182454A KR102472874B1 (ko) 2018-06-12 2021-12-20 난스 증명 기반 분산합의 노드 선정 방법 및 장치
US18/158,928 US20230163963A1 (en) 2018-06-12 2023-01-24 Method and apparatus for selecting distributed consensus node based on proof of nonce

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20180067594 2018-06-12
KR1020180067594 2018-06-12

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020210182454A Division KR102472874B1 (ko) 2018-06-12 2021-12-20 난스 증명 기반 분산합의 노드 선정 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20190140826A true KR20190140826A (ko) 2019-12-20
KR102342840B1 KR102342840B1 (ko) 2021-12-24

Family

ID=69062834

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020190050365A KR102342840B1 (ko) 2018-06-12 2019-04-30 난스 증명 기반 분산합의 노드 선정 방법 및 장치
KR1020220160534A KR102559881B1 (ko) 2018-06-12 2022-11-25 난스 증명 기반 분산합의 노드 선정 방법 및 장치

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020220160534A KR102559881B1 (ko) 2018-06-12 2022-11-25 난스 증명 기반 분산합의 노드 선정 방법 및 장치

Country Status (1)

Country Link
KR (2) KR102342840B1 (ko)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111523890A (zh) * 2020-04-23 2020-08-11 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、装置、存储介质及设备
CN111711526A (zh) * 2020-06-16 2020-09-25 深圳前海微众银行股份有限公司 一种区块链节点的共识方法及系统
CN113076375A (zh) * 2021-03-29 2021-07-06 湖北央中巨石信息技术有限公司 基于区块链的多方同步抽样共识方法及系统及装置及介质
US11343073B2 (en) 2019-06-18 2022-05-24 Electronics And Telecommunications Research Institute Apparatus and method for achieving distributed consensus based on decentralized byzantine fault tolerance
CN115334172A (zh) * 2022-07-20 2022-11-11 林郁芳 一种区块链协议处理系统及其处理方法
CN115643043A (zh) * 2022-09-09 2023-01-24 北京航空航天大学 一种基于验证延迟函数的跨链共识选举方法及系统
CN111523890B (zh) * 2020-04-23 2024-06-07 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、装置、存储介质及设备

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11646879B2 (en) * 2018-06-12 2023-05-09 Electronics And Telecommunications Research Institute Method and apparatus for selecting distributed consensus node based on proof of nonce
KR102342840B1 (ko) * 2018-06-12 2021-12-24 한국전자통신연구원 난스 증명 기반 분산합의 노드 선정 방법 및 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106682907A (zh) * 2016-12-10 2017-05-17 江苏恒为信息科技有限公司 区块链数据对比及共识方法
WO2017095920A1 (en) * 2015-12-02 2017-06-08 Pcms Holdings, Inc. System and method for tamper-resistant device usage metering
KR20170137388A (ko) 2016-06-03 2017-12-13 (주) 블록체인오에스 블록체인 기술을 이용한 무결성 보장 방법
US20180089683A1 (en) * 2016-09-29 2018-03-29 Microsoft Technology Licensing, Llc. Heartbeats and consensus in verifiable outsourced ledgers

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102342840B1 (ko) * 2018-06-12 2021-12-24 한국전자통신연구원 난스 증명 기반 분산합의 노드 선정 방법 및 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017095920A1 (en) * 2015-12-02 2017-06-08 Pcms Holdings, Inc. System and method for tamper-resistant device usage metering
KR20170137388A (ko) 2016-06-03 2017-12-13 (주) 블록체인오에스 블록체인 기술을 이용한 무결성 보장 방법
US20180089683A1 (en) * 2016-09-29 2018-03-29 Microsoft Technology Licensing, Llc. Heartbeats and consensus in verifiable outsourced ledgers
CN106682907A (zh) * 2016-12-10 2017-05-17 江苏恒为信息科技有限公司 区块链数据对比及共识方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Emanuel Ferreira Jesus et al. "A Survey of How to Use Blockchain to Secure Internet of Things and the Stalker Attack." Security and Communication Networks 2018 (2018.04.08.) *
Tien Tuan Anh Dinh et al., "Untangling Blockchain: A Data Processing View of Blockchain Systems." IEEE transactions on knowledge and data engineering 30.7 (2018.01.04.) *
미국공개특허: US 2017-0344987, 공개일: 2017년 11월 30일, 제목: METHOD AND SYSTEM FOR AN EFFICIENT CONSENSUS MECHANISM FOR PERMSSIONED BLOCKCHAINS USING BLOOM FILTERS AND AUDIT GUARANTEES.
미국공개특허: US 2019/0068380, 공개일: 2019년 1월 28일(최초출원일: 2017년 8월 21일, CN 2017106\736740.5), 제목: BLOCKCHAIN CONSENSUS NODE SELECTION.

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11343073B2 (en) 2019-06-18 2022-05-24 Electronics And Telecommunications Research Institute Apparatus and method for achieving distributed consensus based on decentralized byzantine fault tolerance
CN111523890A (zh) * 2020-04-23 2020-08-11 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、装置、存储介质及设备
CN111523890B (zh) * 2020-04-23 2024-06-07 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、装置、存储介质及设备
CN111711526A (zh) * 2020-06-16 2020-09-25 深圳前海微众银行股份有限公司 一种区块链节点的共识方法及系统
CN111711526B (zh) * 2020-06-16 2024-03-26 深圳前海微众银行股份有限公司 一种区块链节点的共识方法及系统
CN113076375A (zh) * 2021-03-29 2021-07-06 湖北央中巨石信息技术有限公司 基于区块链的多方同步抽样共识方法及系统及装置及介质
CN113076375B (zh) * 2021-03-29 2023-07-25 湖北央中巨石信息技术有限公司 基于区块链的多方同步抽样共识方法及系统及装置及介质
CN115334172A (zh) * 2022-07-20 2022-11-11 林郁芳 一种区块链协议处理系统及其处理方法
CN115334172B (zh) * 2022-07-20 2024-04-19 新疆丝路智汇信息科技有限公司 一种区块链协议处理系统及其处理方法
CN115643043A (zh) * 2022-09-09 2023-01-24 北京航空航天大学 一种基于验证延迟函数的跨链共识选举方法及系统
CN115643043B (zh) * 2022-09-09 2024-04-19 北京航空航天大学 一种基于验证延迟函数的跨链共识选举方法及系统

Also Published As

Publication number Publication date
KR102559881B1 (ko) 2023-07-27
KR20220164460A (ko) 2022-12-13
KR102342840B1 (ko) 2021-12-24

Similar Documents

Publication Publication Date Title
KR102472874B1 (ko) 난스 증명 기반 분산합의 노드 선정 방법 및 장치
KR102559881B1 (ko) 난스 증명 기반 분산합의 노드 선정 방법 및 장치
US11063746B2 (en) Method for selecting consensus node using nonce and method and apparatus for generating blockchain using the same
US10958418B2 (en) System and method for a blockchain network with heterogeneous privacy
Sanka et al. A systematic review of blockchain scalability: Issues, solutions, analysis and future research
CN108694665B (zh) 区块链管理装置、数据处理系统及即时交易处理方法
Wahab et al. Survey of consensus protocols
JP6689946B2 (ja) ネットワークを介して互いに通信する複数のノードのいずれか1つで資源を運営する方法、および、ネットワークを介して互いに通信する複数のノードのいずれか1つとして動作するコンピュータ装置
US20190303622A1 (en) Bicameral framework for fast and tamper-resistant blockchain validation
Andola et al. PoEWAL: A lightweight consensus mechanism for blockchain in IoT
EP3981104A1 (en) Lightweight blockchain based on split-trust
Ray et al. BLWN: Blockchain-based lightweight simplified payment verification in IoT-assisted e-healthcare
US20200073560A1 (en) Methods for decentralized genome storage, distribution, marketing and analysis
US20220036346A1 (en) Systems and methods for re-organizing blockchains for efficient operations
GB2579635A (en) A node testing method and apparatus for a blockchain system
WO2020112914A1 (en) Systems and methods for distributed resource allocation
Reno et al. Solving blockchain trilemma using off‐chain storage protocol
US20230100485A1 (en) Neural consensus-based blockchain network system for performing random consensus proof using non-random consensus proof-based blockchain network
JP2023510320A (ja) 分散型台帳ネットワークにおけるコンテンツのセキュアなピアツーピア送信のためのシステムおよび方法
KR20210077136A (ko) 블록 체인 네트워크 시스템의 동작 방법
Mahmood et al. Survey of consensus protocols
KR20210066348A (ko) 뉴럴 블록 클러스터 기반의 안전한 블록 체인을 구축하는 장치 및 그 동작 방법
Li et al. Post‐Quantum Privacy‐Preserving Provable Data Possession Scheme Based on Smart Contracts
Chishti et al. Increasing TPS rate of state‐based blockchains by parallel mining
US20230401312A1 (en) Data security in a metaverse environment

Legal Events

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