KR20200053013A - 하이브리드 작업증명/지분증명 분산 합의 알고리즘의 구현 방법 - Google Patents

하이브리드 작업증명/지분증명 분산 합의 알고리즘의 구현 방법 Download PDF

Info

Publication number
KR20200053013A
KR20200053013A KR1020180135565A KR20180135565A KR20200053013A KR 20200053013 A KR20200053013 A KR 20200053013A KR 1020180135565 A KR1020180135565 A KR 1020180135565A KR 20180135565 A KR20180135565 A KR 20180135565A KR 20200053013 A KR20200053013 A KR 20200053013A
Authority
KR
South Korea
Prior art keywords
block
pow
proof
hash
blank
Prior art date
Application number
KR1020180135565A
Other languages
English (en)
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 KR1020180135565A priority Critical patent/KR20200053013A/ko
Publication of KR20200053013A publication Critical patent/KR20200053013A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Finance (AREA)
  • Accounting & Taxation (AREA)
  • Development Economics (AREA)
  • Strategic Management (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Power Engineering (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Signal Processing (AREA)
  • Technology Law (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 P2P(peer to peer) 네트워크와 같은 분산 네트워크로 연결되어 있는 피어들간의 합의 알고리즘을 구현하는 방법에 관한 것이다. 본 발명에 따르면, 작업증명으로 생성된 공백 블록은 곧바로 네트워크로 전파되지 않고 블록 메모리 풀(blocks memory pool)에 저장된 후 지분증명을 거친 합의 과정을 통과해야 네트워크로 전파되고 블록체인에 추가될 수 있다. 본 발명의 일구현예에 따른 합의 알고리즘을 구현하는 방법은 공백 블록을 작업증명(PoW) 과정으로 생성하는 단계와, 생성된 공백 블록을 블록 메모리 풀에 저장하는 단계와, 블록 메모리 풀에 저정된 공백 블록에 대한 지분 증명을 검증 노드를 통해 수행하는 단계를 포함하며, 작업증명 채굴자에 대한 보상과 개인키로 서명한 검증 노드에 대한 보상이 함께 이루어지는 것을 특징으로 한다.

Description

하이브리드 작업증명/지분증명 분산 합의 알고리즘의 구현 방법{Method for implementing hybrid PoW/PoS distribute consensus algorithm}
본 발명은 블록체인 기술에 관한 것으로, 좀 더 구체적으로 해시 파워(hash power)가 높은 채굴자에 의한 악의적 공격의 위험으로부터 벗어날 수 있는 새로운 합의 알고리즘에 관한 것이다.
대부분의 암호화 화폐들은 사토시 나카모토(Satoshi Nakamoto)가 자신의 논문 "비트코인: P2P 전자 화폐 체제(Bitcoin: A Peer-toPeer Electronic Cash System)"에서 제안했던 작업증명(PoW: Proof of Work)을 기반으로 한 여러 변종을 사용한다. 이러한 작업증명들은 장점이 많지만, 탈중앙화된 네트워크를 위험에 빠뜨릴 수 있는 여러 단점을 갖기도 한다. 대표적인 예로 이중 지불(double spending)이나 이기적 마이닝(selfish mining)에 사용되는 51% 공격을 들 수 있다.
이런 단점을 극복하기 위해 써니 킹(Sunny King)과 스콧 나달(Scott Nadal)은 자신들의 논문 "피피코인: 지분증명된 P2P 암호화폐(PPCoin: Peer-to-Peer crypto-currency with Proof-of-Stake)"에서 지분증명(PoS: Proof of Stake)이란 개념을 제안했다. 하지만 지분증명과 같은 대안적인 합의 알고리즘도 작업증명과 마찬가지로 여러 문제점을 드러내 결국 원래 프로토콜의 변형판 이상으로 보기 어렵다. 지분증명의 단점은 앤드류 포엘스트라(Andrew Poelstra)의 논문 "지분과 합의에 관하여(On stake and consensus)"에 잘 설명되어 있다.
본 발명은 암호화폐와 같은 지분증명의 단점을 극복한 합의 알고리즘을 제공하는 것을 목적으로 한다.
본 발명의 다른 목적은 해시 파워를 일부가 독점하는 것을 방지하고 탈중앙화 네트워크의 장점을 유지하는 것을 목적으로 한다.
이러한 과제를 해결하기 위하여 본 발명은 네트워크에 대한 통제권을 작업증명 채굴자와 지분증명 검증자 사이에 분산되도록 하는 합의 알고리즘을 제안한다. 이에 따르면, 작업증명으로 생성된 공백 블록은 곧바로 네트워크로 전파되지 않고 블록 메모리 풀(blocks memory pool)에 저장된 후 지분증명을 거친 합의 과정을 통과해야 네트워크로 전파되고 블록체인에 추가된다.
본 발명의 일구현예에 따르면, 본 발명은 분산 네트워크로 연결된 피어(peer)들간의 거래가 체인으로 연결된 블록체인에서 특정 거래에 관한 합의 알고리즘을 구현하는 방법으로, 공백 블록(blank block)을 작업증명(PoW: Proof of Work) 과정으로 생성하는 단계와, 생성된 공백 블록을 블록 메모리 풀에 저장하는 단계와, 블록 메모리 풀에 저정된 공백 블록에 대한 지분 증명을 검증 노드를 통해 수행하는 단계를 포함하며, 작업증명 채굴자에 대한 보상과 개인키로 서명한 검증 노드에 대한 보상이 함께 이루어지는 것을 특징으로 한다.
본 발명에 따르면, 작업증명 능력 즉, 해시 파워(hash power)가 높은 특정 개인 또는 집단이 네트워크를 지배하거나 높은 지분을 가진 특정 개인 또는 집단이 네트워크를 지배함으로써 발생하는 중앙화 문제(가령 51% 공격)를 해결할 수 있다.
따라서 서로 신뢰할 수 없는 피어들간의 안전한 거래가 가능하고, 분산 네트워크의 보안성과 신뢰성을 보장할 수 있다.
도 1은 그로스틀 해시 알고리즘을 이용하여 통합 해시를 생성하는 과정을 파이썬 3로 구현한 예.
도 2는 본 발명에 따른 작업증명(PoW) 과정을 파이썬 3로 구현한 예.
도 3은 본 발명에 따른 지분증명(PoS) 과정을 파이썬 3로 구현한 예.
도 4a는 본 발명이 구현된 블록들의 블록체인 구조도.
도 4b는 본 발명이 구현된 블록의 헤더를 포함한 구조를 나타낸 구조도.
도면을 참조로 본 발명의 구체적인 실시예를 설명한다.
통합 거래 해시
그로스톨 해시(Groestl hash) 알고리즘을 이용하여 생성한 모든 거래에 대한 통합 해시를 구한다. 이 해시는 블록에 포함된 거래가 변경되었거나 조작되지 않았다는 것을 입증하는 수단으로 이용된다. '파이썬 3' 프로그램 언어로 구현한 예는 도 1에 나타낸 것과 같다.
도 1은 4건의 거래가 있는 경우를 상정한 것이며, 입력 x 및 x의 길이 len(x)일 때 해시를 헥사값으로 출력한다.
작업증명 단계
작업증명 단계에서 PoW 채굴자(miner)는 비용과 시간이 많이 드는 문제를 해결해야 하고 "공백"(blank) 블록을 생성해야 한다. 여기서 공백 블록이란 거래 기록이 없는 블록을 말한다.
작업증명은 논스(nonce)라고 불리는 어떤 값을 찾아내는 과정을 포함하는데, 이 값은 그로스틀 해시와 같은 해시 함수로 해시값을 구했을 때 일련의 "0" 비트로 시작해야 한다. 채굴에 드는 평균 작업량은 "0" 비트의 개수에 지수적으로(exponentailly) 비례하며, 단일 해시를 실행하여 검증할 수 있다. 하드웨어 속도 증가와 시간에 따라 바뀌는 러닝 노드(running node)의 이해를 보상하기 위해, 작업증명의 난이도는 시간당 블록 평균 개수를 겨냥하는 무빙 평균(moving average)에 의해 결정된다. 이들이 너무 빨리 생성되면 난이도는 증가한다.
본 발명에 따른 PoW 공백 블록의 헤더는 다음과 같은 구조를 가져야 한다. 이 구조는 도 4b에 나타나 있기도 하다.
■버전(블록의 버전)
■이전 블록의 해시
■채굴자의 공개키
■현재 타임스탬프
■비트(채굴 난이도 값)
■논스
본 발명의 PoW 헤더가 기존과 다른 점은 채굴자의 공개키가 추가되고, 기존의 머클 루트(Merkle root)가 제외된다는 점이다. 채굴자의 공개키는 채굴한 자를 알아내 이들에게 보상을 하기 위한 것이다. 머클 루트를 헤더에서 제외하더라도 앞에서 설명한 통합 거래 해시가 블록에 포함되어 있기 때문에(이는 도 4a와 도 4b에 나타낸 바와 같다), 문제가 없다.
본 발명에 따른 작업증명 과정을 파이썬 3으로 구현한 예는 도 2와 같다.
도 2에서 앞부분은 PoW 헤더이며("blockVer = 1"에서 "bits = 0x1effffff"까지의 코드), 그 다음 작업 타겟 생성을 위한 코드("exp = bits >> 24"부터 "targetStr = bytes.fromhex(targetHexStr)"까지의 코드), 채굴 과정을 나타내는 부분("nonce = 0"에서 "nonce += 1"), 그리고 채굴 결과물("Result:" 아래 상자 부분)을 보여준다.
도 2의 채굴 과정으로 생성된 "공백" 블록은 바로 네트워크에 제출되지 않고 블록 메모리 풀(block memory pool)에 저장된다.
지분증명 단계
지분증명은 특수한 검증 노드 즉, 거래 블록 하나를 검증하기 위하여 자신의 지분을 올리는 자 또는 자신의 코인을 거는 자에 의해 수행된다. 지분증명에서의 암호화 계산은 컴퓨터로 풀기가 훨씬 더 간단해서, 주어진 통화(currency)로 통용되는 모든 코인의 일정 부분에 대한 지분을 갖고 있다는 점을 증명하기만 하면 된다.
PoS 블록을 처리하기 위해 검증 노드는 다음 5가지 작업을 수행해야 한다.
-코인 기반 거래와 스테이킹 거래(staking transaction)의 추가
-메모리 풀로부터 거래 준비
-PoS 커널 계산
-스테이킹 난이도 계산
-커널의 해시값과 스테이킹 난이도 비교
PoS 커널은 "지분 수정자(stake modifier)", 현재 블록의 타임스탬프 및 "txPrev"로부터 받은 데이터로 구성된다. 여기서 txPrev는 스테이킹 거래에 의해 지불된 출력의 거래를 말한다. txPrev에서 추출된 데이터는 블록 시간, 거래 시간, 해시 및 출력 번호(개수?)(vout "n")으로 구성된다.
txPrev 데이터는 이미 블록체인에서 검증된 것이기 때문에 변경불가능하다. 변경이 가능한 부분이 있다면 그것은 블록 시간이다. PoS 코인에서 현재 블록 시간은 가려져 있기 때문에 사소한 수정으로 유지될 수 있는 엔트로피(entropy)가 거의 없다. 그리고 블록 시간은 네트워크의 드리프트 한계(drift limit)를 넘어설 수 없거나, 모든 노드가 그 블록을 승인하지 않을 것이다.
지분 수정자는 이전 64 블록의 엔트로피 비트를 취한 후 이들의 해시값을 구한 다음 상대적인 난수를 생성하여 얻은 값이다. 이것의 주된 목적은 미래 블록(다음 블록 이상의 미래 블록)의 커널을 계산하기 어렵도록 하려는 것이다.
커널에 대한 모든 데이터에 대한 해시값을 구하고 스테이킹 난이도륵 계산한다. 네트워크 상의 표준 난이도를 취하지만 이 난이도가 하나의 코인에 대한 것이 되도록 한다. 만약 2개의 코인에 대해 지분을 걸면 난이도는 절반으로 줄어들고, 4개의 코인의 경우 난이도가 1/4이 되는 식이다. 하지만 여기에는 제한이 붙는다. 다수의 코인을 갖는 블록들의 체인에 대한 네트워크를 누군가 지배하지 못하도록 하기 위해 지분을 걸 수 있는 코인의 양에 제한이 있고, 따라서 기본 난이도(base difficulty)를 낮출 수 있는 한도에도 제한이 있다.
마지막으로 서명을 하면 해당 블록을 생성한 사람에게 스테이팅 거래가 귀속된다는 점이 입증된다. 이 서명은 블록헤더에 포함되어 블록해시의 일부가 되도록 한다. 새로운 블록을 네트워크로 중계(relay)하기 위해, PoS 검증자는 PoW 채굴자가 수행한 작업을 포함해야 하며, PoS 노드가 자신의 개인키로 블록을 서명해야 한다.
본 발명에 따른 최종 블록으로서 블록 체인에 연결될 블록은 다음과 같은 구조를 가져야 한다(이 구조는 도 4a와 도 4b에 나타낸 바와 같다).
- "공백" 블록 메모리 풀에서 가져온 PoW 헤더
- 통합 거래 해시
- 거래
이 블록의 해시값은 다음의 공식으로 구한다.
hash(pow_hash + pow_nonce + united_transactions_hash)
앞에서 설명한 것을 파이썬 3로 구현한 예는 도 3에 나타낸 바와 같다. 여기서 구한 PoW 블록 해시값은 도 2에 나타낸 PoW 공백 블록 해시의 이전 해시값(prevBlockHash)으로 사용된다.
지금까지 설명한 것처럼 본 발명에 따른 하이브리드 합의 알고리즘은 기존에 작업증명과 지분증명이 단독으로 움직였던 것과 달리 작업증명에서 검증한 것으로 끝난지 않고 지분증명을 추가함으로써 분산 네트워크의 중앙화라는 문제점을 해결한다. 이러한 해결 방식은 PoW 채굴자와 PoS 검증자 간의 보상을 상호호혜적으로 배분함으로써 네트워크에 대한 통제권한을 분산시키는 것이다.

Claims (3)

  1. 분산 네트워크로 연결된 피어(peer)들간의 거래가 체인으로 연결된 블록체인에서 특정 거래에 관한 합의 알고리즘을 구현하는 방법으로,
    공백 블록(blank block)을 작업증명(PoW: Proof of Work) 과정으로 생성하는 단계와,
    생성된 공백 블록을 블록 메모리 풀에 저장하는 단계와,
    블록 메모리 풀에 저정된 공백 블록에 대한 지분 증명을 검증 노드를 통해 수행하는 단계를 포함하며,
    작업증명 채굴자에 대한 보상과 개인키로 서명한 검증 노드에 대한 보상이 함께 이루어지는 것을 특징으로 하는 합의 알고리즘 구현 방법.
  2. 제1항에서,
    상기 공백 블록의 헤더는 블록의 버전, 이전 블록의 해시, 채굴자의 공개키, 현재 타임스탬프, 채굴 난이도 값, 논스(nonce)로 구성되어 있으며, 채굴자의 공개키는 PoW 채굴자의 보상을 위해 사용되는 것을 특징으로 하는 합의 알고리즘 구현 방법.
  3. 제1항에서,
    상기 블록체인의 각 블록은 PoW 헤더, 통합 거래 해시, 거래 정보로 구성되어 있으며, 상기 지분 증명에서 생성된 PoW 해시는 다음 공백 블록의 헤더에서 이전 블록의 해시인 것을 특징으로 하는 합의 알고리즘 구현 방법.
KR1020180135565A 2018-11-07 2018-11-07 하이브리드 작업증명/지분증명 분산 합의 알고리즘의 구현 방법 KR20200053013A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180135565A KR20200053013A (ko) 2018-11-07 2018-11-07 하이브리드 작업증명/지분증명 분산 합의 알고리즘의 구현 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180135565A KR20200053013A (ko) 2018-11-07 2018-11-07 하이브리드 작업증명/지분증명 분산 합의 알고리즘의 구현 방법

Publications (1)

Publication Number Publication Date
KR20200053013A true KR20200053013A (ko) 2020-05-18

Family

ID=70912850

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180135565A KR20200053013A (ko) 2018-11-07 2018-11-07 하이브리드 작업증명/지분증명 분산 합의 알고리즘의 구현 방법

Country Status (1)

Country Link
KR (1) KR20200053013A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220020572A (ko) * 2020-08-12 2022-02-21 두나무 주식회사 비정상 트랜잭션 요청의 발생 위치 제공 방법 및 그 장치
WO2022231072A3 (ko) * 2021-04-29 2022-12-15 주식회사 리드포인트시스템 비-랜덤 합의체 증명 기반 블록 체인 네트워크를 이용한 랜덤 합의체 증명을 수행하는 뉴럴 합의체 기반의 블록체인 네트워크 시스템

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220020572A (ko) * 2020-08-12 2022-02-21 두나무 주식회사 비정상 트랜잭션 요청의 발생 위치 제공 방법 및 그 장치
KR20230023683A (ko) * 2020-08-12 2023-02-17 두나무 주식회사 비정상 트랜잭션 요청의 발생 위치 제공 방법 및 그 장치
WO2022231072A3 (ko) * 2021-04-29 2022-12-15 주식회사 리드포인트시스템 비-랜덤 합의체 증명 기반 블록 체인 네트워크를 이용한 랜덤 합의체 증명을 수행하는 뉴럴 합의체 기반의 블록체인 네트워크 시스템

Similar Documents

Publication Publication Date Title
Puthal et al. Proof of authentication: IoT-friendly blockchains
US11522706B2 (en) Method and system for publicly verifiable proofs of retrievability in blockchains
CN110941673B (zh) 区块链数据结构及任务处理方法和装置
WO2017082238A1 (ja) ブロックチェーン生成装置、ブロックチェーン生成方法、ブロックチェーン検証装置、ブロックチェーン検証方法およびプログラム
KR20200116011A (ko) 병렬-처리 블록체인 트랜잭션을 위한 시스템 및 방법
Miraz et al. Application of blockchain in booking and registration systems of securities exchanges
KR20190093012A (ko) 블록 체인 시스템에서의 블록 생성 및 검증 방법
Dhumwad et al. A peer to peer money transfer using SHA256 and Merkle tree
KR20190070163A (ko) 네트워크를 통해 서로 통신하는 노드들 각각의 자원 운영 방법, 그리고 그러한 노드들 중 어느 하나로 동작하는 컴퓨터 장치
US11651335B2 (en) Methods and devices for controlling a mining pool for multiple blockchain networks
Wijaya Extending asset management system functionality in bitcoin platform
KR20190010515A (ko) 블록체인 관리시스템
Zhu et al. A blockchain-based decentralized cloud resource scheduling architecture
KR20200053013A (ko) 하이브리드 작업증명/지분증명 분산 합의 알고리즘의 구현 방법
Müller et al. The bitcoin universe: An architectural overview of the bitcoin blockchain
KR20190093011A (ko) 보안성이 강화된 블록 체인 시스템 및 이중 블록 체인 구조를 이용한 데이터 블록 생성방법
Zhang et al. Deconstructing Blockchains: Concepts, Systems, and Insights.
JP2022514919A (ja) ブロックチェーンでノード間のブロック及び電子文書を共有及び検証する方法
Iyer et al. Crypto-economics and game theory
Gaikwad Overview of blockchain
Zhao On nxt proof of stake algorithm: a simulation study
Kadam et al. Blockchain integration with low-power internet of things devices
Dutta et al. Blockchain implementation using python
CN110837659B (zh) 带标签的私钥可更新数字签名方法及其在PoS区块链协议中的应用
Chan et al. Proof of bid as alternative to proof of work