KR102250810B1 - 트랜잭션 증명 방식의 합의 알고리즘이 적용된 블록체인 시스템 및 그 방법 - Google Patents
트랜잭션 증명 방식의 합의 알고리즘이 적용된 블록체인 시스템 및 그 방법 Download PDFInfo
- Publication number
- KR102250810B1 KR102250810B1 KR1020180064925A KR20180064925A KR102250810B1 KR 102250810 B1 KR102250810 B1 KR 102250810B1 KR 1020180064925 A KR1020180064925 A KR 1020180064925A KR 20180064925 A KR20180064925 A KR 20180064925A KR 102250810 B1 KR102250810 B1 KR 102250810B1
- Authority
- KR
- South Korea
- Prior art keywords
- block
- transaction
- nodes
- voting
- blockchain system
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/08—Payment architectures
- G06Q20/085—Payment architectures involving remote charge determination or related payment systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3821—Electronic credentials
- G06Q20/38215—Use of certificates or encrypted proofs of transaction rights
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q30/00—Commerce
- G06Q30/018—Certifying business or products
- G06Q30/0185—Product, service or business identity fraud
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1087—Peer-to-peer [P2P] networks using cross-functional networking aspects
- H04L67/1093—Some peer nodes performing special functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q2220/00—Business processing using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q2230/00—Voting or election arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Development Economics (AREA)
- Marketing (AREA)
- Economics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Technology Law (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Entrepreneurship & Innovation (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
블록체인 시스템이 개시된다. 일 실시 예에 따른 블록체인 시스템은 분산 네트워크를 통하여 상호간에 통신을 수행하고, 상기 블록체인 시스템 외부의 블록체인 클라이언트 장치와 통신을 수행하는 복수의 노드들을 포함하고, 상기 복수의 노드들 각각은, 상기 블록체인 시스템 상에서 발생되는 트랜잭션을 처리하고, 상기 트랜잭션에 포함되고 상기 복수의 노드들 중 어느 하나의 노드에 대응되는 계정 주소를 포함하는 투표 항목을 수집하고, 및 상기 수집된 투표 항목에 기초하여 상기 복수의 노드들 중 적어도 하나의 노드를 블록 생성자로 선출하도록 설정될 수 있다. 이 외에도 명세서를 통해 파악되는 다양한 실시 예가 가능하다.
Description
본 문서에서 개시되는 실시 예들은, 블록체인 네트워크 시스템에 적용되는 합의 알고리즘과 관련된다.
분산 네트워크 시스템과 같이 다수의 노드들로 구성되는 네트워크 시스템에서는, 그 네트워크에 포함되는 다수의 노드들 사이에서 정보가 도달되는 시간에 차이가 발생하게 된다. 합의 알고리즘이란 네트워크에 참여하는 노드들이 하나의 결과에 대한 합의를 얻기 위한 알고리즘으로 이해될 수 있다.
블록체인 네트워크 시스템(이하, 블록체인 시스템)은 분산 네트워크(P2P 네트워크) 시스템이다. 블록체인 시스템의 신뢰성을 위하여 네트워크에 포함된 모든 노드들이 같은 결과 값을 결정해야 하므로 합의 알고리즘이 요구된다. 예를 들어 현재는 작업 증명(proof of work) 방식, 지분 증명(proof of stake) 방식, 위임된 지분 증명(delegated proof of stake) 방식의 합의 알고리즘이 사용되고 있다.
또한 블록체인 시스템에 포함되는 복수의 노드들 중 일부가 악의적인 노드인 경우에도 네트워크의 신뢰성이 문제될 수 있다. 비잔틴 장군 문제(byzantine general problem)란 분산 네트워크 시스템에 악의적인 노드가 참여한 상황을 모델링한 문제이다. 비잔틴 장애 허용(Byzantine Fault Tolerance, BFT) 알고리즘은 이러한 비잔틴 장군 문제를 해결하고, 분산 네트워크 시스템에서 악의적인 노드가 있더라도 신뢰성을 보장하는 알고리즘으로 이해될 수 있다. BFT 알고리즘에서 전체 블록 생성자의 수가 N = 3f+1인 경우 최대 f개까지의 비잔틴 노드들 만이 허용될 수 있다.
기존의 합의 알고리즘은 다양한 문제점을 내포하고 있다. 본 문서에서 기존의 합의 알고리즘의 문제점을 해결한 새로운 방식의 합의 알고리즘을 적용한 블록체인 시스템이 개시된다. 새로운 방식의 합의 알고리즘은 블록체인 시스템에서 발생하는 트랜잭션에 기초하여 블록체인 시스템의 노드들 사이에 합의를 도출할 수 있다.
본 문서에 개시되는 일 실시 예에 따른 블록체인 시스템은 분산 네트워크를 통하여 상호간에 통신을 수행하고, 상기 블록체인 시스템 외부의 블록체인 클라이언트 장치와 통신을 수행하는 복수의 노드들을 포함하고, 상기 복수의 노드들 각각은, 상기 블록체인 시스템 상에서 발생되는 트랜잭션을 처리하고, 상기 트랜잭션에 포함되고 상기 복수의 노드들 중 어느 하나의 노드의 계정 주소를 포함하는 투표 항목을 수집하고, 및 상기 수집된 투표 항목에 기초하여 상기 복수의 노드들 중 적어도 하나의 노드를 블록 생성자로 선출하도록 설정될 수 있다.
또한, 본 문서에 개시되는 일 실시 예에 따라 블록체인 시스템에 포함되고, 상기 블록체인 시스템의 분산 네트워크를 통하여 상호간에 통신을 수행하는 복수의 노드들 중 적어도 어느 하나의 노드에 의하여 수행되는 방법은 상기 블록체인 시스템 상에서 발생되는 복수의 트랜잭션들에 포함된 투표 항목들을 수집하는 동작을 포함하고, 상기 투표 항목들 각각은 상기 복수의 노드들 중 어느 하나의 노드에 대응되는 계정 주소를 포함하고 및 상기 수집된 투표 항목들을 기초로, 미리 지정된 수의 블록 생성자를 선출하는 동작을 포함할 수 있다.
본 문서에 개시되는 실시 예들에 따르면, 트랜잭션 투표에 의하여 블록체인 시스템의 경제적 이익에 직접 기여하는 노드가 블록 생성자로 선출될 수 있다. 또한 트랜잭션이 처리될 때 투표 절차가 수행되므로 별도의 투표 절차가 요구되지 않아, 투표율이 증가될 수 있고 사용자의 편의가 도모될 수 있다.
또한 본 문서에 개시되는 실시 예들에 따른 블록체인 시스템은 기존의 블록체인 시스템들에 비하여 짧은 블록 타임과 빠른 블록 확정성을 가질 수 있다.
이 외에, 본 문서를 통해 직접적 또는 간접적으로 파악되는 다양한 효과들이 제공될 수 있다.
도 1은 일 실시 예에 따른 블록체인 네트워크 시스템의 동작 환경을 나타낸다.
도 2a는 일 실시 예에 따른 블록체인 시스템에 포함되는 노드의 장치 블록도이다.
도 2b는 일 실시 예에 따라 블록 생성자를 선출하는 방법의 순서도이다.
도 3a은 일 실시 예에 따라 블록체인 시스템에서 발생되는 트랜잭션의 예시를 나타낸다.
도 3b는 일 실시 예에 따라 트랜잭션에 기초하여 투표를 집계하고 블록 생성자를 선출하는 방법의 순서도이다.
도 4는 일 실시 예에 따라 블록체인 기반의 서비스 제공자들에 대한 인센티브를 제공할 수 있는 블록체인 시스템을 나타낸다.
도 5는 일 실시 예에 따라서 블록 생성자 후보들에 대한 노드 풀을 운영하는 예시를 설명하기 위한 도면이다.
도 6은 일 실시 예에 따라 블록체인 시스템에서 트랜잭션 수수료 수익을 배분하는 예시를 설명하기 위한 도면이다.
도 7은 일 실시 예에 따른 블록체인 시스템에 적용된 BFT 합의 알고리즘을 설명하기 위한 도면이다.
도면의 설명과 관련하여, 동일 또는 유사한 구성요소에 대해서는 동일 또는 유사한 참조 부호가 사용될 수 있다.
도 2a는 일 실시 예에 따른 블록체인 시스템에 포함되는 노드의 장치 블록도이다.
도 2b는 일 실시 예에 따라 블록 생성자를 선출하는 방법의 순서도이다.
도 3a은 일 실시 예에 따라 블록체인 시스템에서 발생되는 트랜잭션의 예시를 나타낸다.
도 3b는 일 실시 예에 따라 트랜잭션에 기초하여 투표를 집계하고 블록 생성자를 선출하는 방법의 순서도이다.
도 4는 일 실시 예에 따라 블록체인 기반의 서비스 제공자들에 대한 인센티브를 제공할 수 있는 블록체인 시스템을 나타낸다.
도 5는 일 실시 예에 따라서 블록 생성자 후보들에 대한 노드 풀을 운영하는 예시를 설명하기 위한 도면이다.
도 6은 일 실시 예에 따라 블록체인 시스템에서 트랜잭션 수수료 수익을 배분하는 예시를 설명하기 위한 도면이다.
도 7은 일 실시 예에 따른 블록체인 시스템에 적용된 BFT 합의 알고리즘을 설명하기 위한 도면이다.
도면의 설명과 관련하여, 동일 또는 유사한 구성요소에 대해서는 동일 또는 유사한 참조 부호가 사용될 수 있다.
이하, 본 발명의 다양한 실시 예가 첨부된 도면을 참조하여 기재된다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 실시 예의 다양한 변경(modification), 균등물(equivalent), 및/또는 대체물(alternative)을 포함하는 것으로 이해되어야 한다.
도 1은 일 실시 예에 따른 블록체인 네트워크 시스템의 동작 환경을 나타낸다.
도 1을 참조하면, 블록체인 네트워크 시스템(10)(이하, 블록체인 시스템)은 네트워크를 통하여 서로 연결된 복수 개의 노드(100)를 포함하는 분산 네트워크 또는 피투피 네트워크로 이해될 수 있다. 각각의 노드(100)는 컴퓨팅 장치로 참조될 수 있다. 각각의 노드(100)들은 트랜잭션이 발생하면 트랜잭션을 처리하고, 하나의 데이터베이스(이하, 트랜잭션 데이터베이스)에 처리된 트랜잭션과 연관된 정보를 저장할 수 있다. 블록체인 시스템(10)은 트랜잭션이 발생되면, 블록체인 시스템(10)에 구현된 합의 알고리즘에 기초하여 트랜잭션에 관하여 합의 과정을 거친 후 트랜잭션을 실행할 수 있다.
실행된 트랜잭션은 트랜잭션 데이터베이스에 기록될 수 있다. 트랜잭션 데이터베이스는 블록체인 구조를 가질 수 있다. 트랜잭션 데이터베이스는 복수 개의 노드들의 공공 원장(public ledger)으로 이해될 수 있다.
블록체인 시스템(10)의 복수 개의 노드들(100) 중 블록 생성자(block producer)로 선출된 특정 노드는 새로운 블록을 생성할 수 있다. 블록 생성자는 새로운 블록을 생성할 때 주어지는 보상(블록 보상)을 얻을 수 있다. 블록 생성자에 의하여 새로이 생성된 블록은 다른 노드들(100)에게 전파될 수 있다.
블록체인 시스템(10)은 다양한 서비스 제공자들에 의하여 제공되는 다양한 응용 서비스들을 실행할 수 있다. 응용 서비스 제공을 위하여 구현된 소프트웨어는 서비스 제공자들에 의하여 블록체인 시스템(10)에 배포될 수 있다. 블록체인 시스템(10)은 배포된 소프트웨어를 구동시키고, 그 소프트웨어의 구동에 따라 발생되는 트랜잭션을 처리할 수 있다. 트랜잭션은 해당 응용 서비스를 이용하는 클라이언트(50)에 의하여 발생될 수 있다. 클라이언트(50)는 트랜잭션의 처리 결과를 블록체인을 통하여 확인할 수 있다.
예를 들어, 클라이언트(50)는 다양한 형태의 장치가 될 수 있다. 클라이언트(50), 예를 들면, 휴대용 통신 장치 (예: 스마트 폰), 컴퓨터 장치, 휴대용 멀티미디어 장치, 휴대용 의료 기기, 카메라, 웨어러블 장치, 또는 가전 장치를 포함할 수 있다.
일 실시 예에서, 블록체인 시스템(10)에서 발생되는 트랜잭션은 블록 생성자를 선출하기 위한 투표 항목을 포함할 수 있다. 투표 항목에는 계정 주소(account address)가 포함될 수 있다. 트랜잭션의 투표 항목에 계정 주소가 포함된 경우, 해당 트랜잭션은 해당 계정 주소에 대한 투표로서 인정될 수 있다. 이하 트랜잭션에 의하여 이루어진 투표는 '트랜잭션 투표(transaction vote)'로 서술될 수 있다. 블록체인 시스템(10)에서 실행되는 트랜잭션들에 의하여 많은 투표를 얻은 노드는 블록 생성자로 선출될 수 있다.
도 2a는 일 실시 예에 따른 블록체인 시스템에 포함되는 노드의 장치 블록도이다. 도 2b는 일 실시 예에 따라 블록 생성자를 선출하는 방법의 순서도이다.
도 2a에 도시된 블록도는 블록체인 시스템(10)에 포함되는 복수 개의 노드(100)들 중 어느 하나의 노드의 블록도로 이해될 수 있다. 블록체인 시스템(10)에 포함되는 노드(100) 각각은 컴퓨팅 장치로 참조될 수 있다. 노드(100)는 프로세서(110), 메모리(120), 통신 인터페이스(130), 및 트랜잭션 데이터베이스(140)를 포함할 수 있다.
프로세서(110)는 노드(100)의 전반적인 동작을 제어할 수 있다. 프로세서(110)는 트랜잭션 처리 모듈(115)을 포함할 수 있다. 예를 들어, 프로세서(110)는 메모리(120)에 저장된 명령어들을 실행하여 트랜잭션 처리 모듈(115)을 구동시킬 수 있다. 트랜잭션 처리 모듈(115)에 의하여 수행되는 동작은 프로세서(110)에 의하여 수행되는 동작으로 이해될 수 있다.
노드(100)는 통신 인터페이스(130)를 통하여 블록체인 시스템(10)에 포함되는 복수의 노드(100)들과 통신을 수행할 수 있다. 노드(100)의 프로세서(110)는 발생된 트랜잭션을 처리하고, 상기 트랜잭션 또는 상기 트랜잭션의 처리 결과를 통신 인터페이스(230)를 통하여 블록체인 시스템(10)에 포함된 복수의 다른 노드(100)들에게 전파할 수 있다. 복수의 노드(100)들은 처리된 트랜잭션에 대한 정보를 각각의 트랜잭션 데이터베이스(140)에 저장할 수 있다.
도 2b를 참조하면, 일 실시 예에 따라 블록 생성자를 선출하는 방법은 동작 210 및 동작 220을 포함할 수 있다. 상기 동작 210 내지 220은 예를 들어, 블록체인 시스템(10)에 포함된 적어도 하나의 노드(100)에 의하여 수행 또는 실행될 수 있다. 상기 동작 210 및 동작 220은, 예를 들어, 상기 노드(100)의 프로세서(110)에 의해 수행(혹은, 실행)될 수 있는 인스트럭션(명령어)들로 구현될 수 있다. 상기 인스트럭션들은, 예를 들어, 컴퓨터 기록 매체 또는 도 2a에 도시된 노드(100)의 메모리(120)에 저장될 수 있다.
동작 210에서, 노드(100)는 블록체인 시스템(10) 상에서 발생되는 복수의 트랜잭션들에 포함된 투표 항목들을 수집할 수 있다. 블록체인 시스템(10) 상에서 발생되는 트랜잭션은 선택적으로 투표 항목을 포함할 수 있다. 상기 투표 항목에는 상기 트랜잭션을 발생시킨 클라이언트(50)측이 블록 생성자로 선출되기를 희망하는 노드(100)의 계정 주소가 포함될 수 있다. 노드(100)는 트랜잭션을 처리할 때, 투표 항목을 포함하는 트랜잭션에 대하여 그 투표 항목을 수집할 수 있다.
예를 들어 노드(100)는 투표 항목에 특정 계정 주소가 포함된 경우, 해당 투표 항목을 그 특정 계정 주소에 대한 1개의 투표로 인정할 수 있다. 복수의 트랜잭션들이 발생되고 처리됨에 따라 수집된 투표 항목들이 누적될 수 있다.
동작 220에서, 노드(100)는 수집된 투표 항목들을 기초로 미리 지정된 수의 블록 생성자를 선출할 수 있다. 노드(100)는 수집되어 누적된 투표 항목들을 기초로, 많은 투표를 얻은 적어도 하나의 노드를 블록 생성자로 선출할 수 있다. 블록 생성자의 숫자는 제한될 수 있다. 예를 들어, 선출될 블록 생성자의 수는 블록체인 시스템(10) 상에서 미리 지정될 수 있다.
이하 서술될 블록체인 시스템(10)에 의하여 수행되는 동작들은 블록체인 시스템(10)에 포함된 적어도 하나의 노드(100)에 의하여 수행 또는 실행될 수 있다. 블록체인 시스템(10)에 포함된 적어도 하나의 노드(100)는 블록 생성자로 선출될 수 있고, 블록 생성자로 선출된 적어도 하나의 노드(100)는 블록을 생성하고, 그에 대한 인센티브를 지급 받을 수 있다.
도 3a는 일 실시 예에 따라 블록체인 시스템에서 발생되는 트랜잭션의 예시를 나타낸다. 도 3b는 일 실시 예에 따라 트랜잭션에 기초하여 투표를 집계하고 블록 생성자를 선출하는 방법의 순서도이다.
도 3a를 참조하면, 트랜잭션에는 투표 항목(tx-투표)이 포함될 수 있다. 트랜잭션에 투표 항목이 포함되는 것은, 트랜잭션을 생성하는 주체가 트랜잭션 투표 항목에 기재된 노드가 블록 생성자로 선출되기를 원한다는 의미로 이해될 수 있다. 예를 들어, 트랜잭션에 의한 투표는 투표 항목에 기재된 블록체인 계정 주소를 소유하고 있는 블록체인 코어 노드가 블록 생성자로 뽑히는 것을 원한다는 의미의 투표일 수 있다. 블록 생성자에 대한 투표를 포함하고 있는 블록체인 트랜잭션들은 해당 트랜잭션들을 생성한 주체의 블록체인 계정의 비밀 키(private key)에 의하여 암호화 서명되므로, 블록 생성자 선출에 대한 모든 투표에 대하여 블록체인 시스템(10) 상에 위변조가 불가능한 암호학적 증명 데이터가 기록될 수 있다.
도 3a를 참조하면 트랜잭션들(201, 203)은 투표 항목(Tx-투표)을 포함하고 있다. 이체 트랜잭션(201)은 Tx-투표 항목에 노드 T의 주소를 포함하므로, 노드 T로 투표가 된 트랜잭션으로 이해될 수 있다. 거래 주문 트랜잭션(203)은 Tx-투표 항목에 노드 Q의 주소를 포함하므로, 노드 Q로 투표가 된 트랜잭션으로 이해될 수 있다. 도시되지 않았으나, 각각의 트랜잭션들(201, 203)은 트랜잭션 생성자(예: 클라이언트(50))의 계정에 의하여 암호화 서명될 수 있다.
블록체인 시스템(10)에 제출되고 정상적으로 처리된 트랜잭션들(201, 203)로부터 수집되는 트랜잭션 투표를 많이 얻는 블록체인 노드들이 블록체인 시스템(10)의 블록 생성자로 선출될 수 있다. 선출된 블록 생성자는 새로운 블록을 생성하는 블록체인 합의 프로토콜에 다른 블록 생성자들과 협력하게 되고, 새로운 블록을 생성할 때 주어지는 보상을 얻게 된다.
일 실시 예에서, 투표 항목은 트랜잭션 수수료를 발생시키는 트랜잭션들에만 선택적으로 포함될 수 있다. 또는 트랜잭션 수수료를 발생시키는 트랜잭션들에 포함된 투표 항목만 유효한 투표로서 수집될 수 있다. 트랜잭션 수수료를 통하여 블록체인 시스템(10)에 경제적 이익을 제공하는 트랜잭션의 투표만이 유효한 투표로서 집계될 수 있다.
예를 들어 이체 트랜잭션(201), 거래 주문 트랜잭션(203)은 트랜잭션 수수료 항목(Tx-fee)을 포함하고 있다. 수수료 항목을 포함하지 않거나, 수수료 항목에 수수료가 없는 것으로 기재된 트랜잭션은 트랜잭션 투표로서 집계되지 않을 수 있다.
일 실시 예에서, 트랜잭션의 투표 항목에는 트랜잭션 수수료에 비례하는 가중치(weight)가 부여될 수 있다. 블록체인 시스템(10)의 경제적 이익에 기여하는 정도에 따라 트랜잭션 투표에 가중치가 부여될 수 있다.
전송 트랜잭션(201)은 300 dKPW의 트랜잭션 수수료를 발생시키는 트랜잭션이므로, 전송 트랜잭션(201)의 투표 항목에는 300의 가중치가 부여될 수 있다. 따라서 전송 트랜잭션(201)의 투표 항목은 노드 T에 대한 300만큼의 가중치가 부여된 트랜잭션 투표로 이해될 수 있다. 거래 주문 트랜잭션(203)은 450 dKPW의 트랜잭션 수수료를 발생시키는 트랜잭션이므로, 거래 주문 트랜잭션(203)의 투표 항목에는 450의 가중치가 부여될 수 있다. 따라서 거래 주문 트랜잭션(203)의 투표 항목은 노드 Q에 대한 450만큼의 가중치가 부여된 트랜잭션 투표로 이해될 수 있다.
일 실시 예에서, 트랜잭션에 포함된 투표는 트랜잭션 수수료가 징수되는 시점에 유효한 투표로서 수집될 수 있다. 트랜잭션의 종류, 기능 별로 트랜잭션 수수료가 징수되는 시점이 상이할 수 있다. 블록체인 시스템(10)은 트랜잭션 수수료가 징수되는 시점을 기준으로 그 트랜잭션에 포함된 투표를 유효한 투표로서 집계할 수 있다.
예를 들어 거래 주문 트랜잭션(203)이 토큰 거래를 위한 판매(sell)주문인 경우, 거래 주문 트랜잭션(203)에 포함된 투표는 판매 주문과 가격이 맞는 구매(buy) 주문과 거래가 체결될 때 노드 Q에 대한 유효한 투표로 집계될 수 있다. 만약 거래 주문 트랜잭션(203)에 의한 거래가 체결되지 않고 사용자에 의해 취소되었다면, 거래 주문 트랜잭션(203)에 포함된 투표는 무효가 될 수 있다. 블록체인 시스템(10)은 트랜잭션 수수료를 발생시킴으로써 블록체인 시스템(10)에 수익을 제공하는 트랜잭션들에 포함된 투표를 유효한 투표로서 수집할 수 있다. 한편 징수된 트랜잭션 수수료는 블록 생성자와 같은 블록체인 운영자들에게 제공되는 인센티브로 사용될 수 있다.
일반적으로 다른 블록체인 시스템들에서 구현된 블록체인 거버넌스(governance), 암호 화폐 수익의 배분등을 위한 투표 프로세스들은 블록체인 시스템의 사용자들이 투표에 참여하기 위해 별도의 블록체인 트랜잭션을 생성해야 하는 방식을 사용으로 설계되어 있다. 그러나 블록체인 사용자들이 추가적으로 시간과 비용을 들여 별도의 트랜잭션을 생성하고 투표에 적극적으로 참여하기를 기대하기는 매우 어렵다. 특히 투표를 하기 위한 트랜잭션 생성 시 트랜잭션 수수료가 발생한다면 사용자들의 참여를 기대하기는 더욱 어렵다. 따라서 별도의 투표과정을 통해 블록체인 거버넌스가 운용되도록 한 블록체인 시스템들의 투표율은 일반적으로 상당히 낮다.
예를 들어, EOS 블록체인 시스템에서는 블록 생성자들을 선출하기 위하여 EOS 암호화폐 소유자들은 일반적인 EOS 기반 블록체인 서비스를 사용하는 것과는 별도로, 투표 프로세스에 참여해야 한다(Dpos 방식).
다른 예로, 스텔라(Stellar) 블록체인 시스템에서는 블록체인 자체적으로 매 블럭마다 생성되는(인플레이션으로 새롭게 발행되는) 루멘(Lumens) 암호화폐를 어떠한 블록체인 계정이 가져갈 것인가에 대하여 별도의 투표가 진행된다. 인플레이션으로 발행되는 루멘 암호화폐는 곧바로 블록 생성자에게 지급되지 않는다. Lumens 암호화폐 소유자들은 상기 별도의 투표 과정에 참여해야 한다.
반면에, 본 발명에 따른 블록체인 시스템(10)에서는 블록체인 상에서 발생하는 트랜잭션에 투표 기능이 통합되어 있기 때문에 블록체인 사용자들이 별도의 투표 과정에 참여하지 않아도 되고, 블록체인 시스템(10)이 사용될 때 투표가 자동으로 이루어 지게 된다. 따라서 투표율은 매우 높아지게 된다.
도 3b를 참조하면, 동작 310에서 블록체인 시스템(10)의 적어도 하나의 노드(100)는 트랜잭션이 발생하면, 동작 320에서 그 트랜잭션을 처리할 수 있다. 블록체인 시스템(10)은 트랜잭션을 처리할 때, 그 트랜잭션에 포함된 투표 항목을 수집할 수 있다. 트랜잭션을 수집하는 과정은 예를 들어, 동작 330 내지 동작 370과 같이 이루어질 수 있다. 동작 330 내지 동작 370의 순서는 일 예시로서 기재된 것이고, 각각의 동작은 실질적으로 동시에 수행될 수 있고, 구현된 특성에 따라 몇몇 동작은 생략될 수 있다.
동작 330에서, 블록체인 시스템(10)은 처리했거나 처리해야 할 트랜잭션으로부터 수수료를 획득할 수 있는지 여부를 확인할 수 있다. 예를 들어 블록체인 시스템(10)은 수수료를 지불하고 블록체인 시스템(10)의 경제에 기여할 수 있는 트랜잭션의 투표 항목만을 수집하도록 설계될 수 있다. 만약 수수료를 지불하는 트랜잭션이 아니라면, 블록체인 시스템(10)은 발생된 트랜잭션을 처리하고, 해당 트랜잭션과 관련된 프로세스를 종료할 수 있다.
수수료를 지불하는 트랜잭션이라면, 동작 340에서 블록체인 시스템(10)은 트랜잭션 수수료를 기초로 트랜잭션에 포함된 투표 항목에 가중치를 부여할 수 있다. 상술한 바와 같이 트랜잭션 투표 항목에 트랜잭션 수수료에 비례하는 수치의 가중치를 부여할 수 있다. 그리고 동작 350에서 블록체인 시스템(10)은 투표 항목에 포함된 계정 주소에 대한 투표를 집계할 수 있다. 예를 들어, 블록체인 시스템(10)은 트랜잭션 투표에 포함된 계정 주소에 대하여 투표 수를 셀 수 있다(count).
예를 들어, 블록체인 시스템(10)이 트랜잭션 수수료를 고려하지 않는 경우, 하나의 트랜잭션에 포함된 투표 항목은 1표로 인정될 수 있다. 블록체인 시스템(10)이 트랜잭션 수수료를 고려하는 경우 하나의 트랜잭션에 포함된 투표 항목이더라도, 그 투표 항목은 트랜잭션 수수료에 대응되는 가중치가 부여된 투표 수로 인정될 수 있다. 예를 들어, 도 3a에서 이체 트랜잭션(201)에 의한 트랜잭션 투표는 T에 대한 300표로 인정될 수 있고, 거래 주문 트랜잭션(203)에 의한 트랜잭션 투표는 Q에 대한 450표로 인정될 수 있다.
동작 310 내지 동작 350은 블록 생성자 선출 시기가 될 때까지 반복하여 수행될 수 있다. 블록 생성자는 예를 들어, 일정한 주기마다 선출될 수 있다. 한 번의 주기 동안 발생되는 트랜잭션 투표들을 기초로 블록 생성자가 선출될 수 있다. 블록체인 시스템(10)은 동작 360에서 블록 생성자의 선출 시기가 되었는지 확인하고, 블록 생성자의 선출 시기가 도래하지 않은 경우 계속하여 발생된 트랜잭션들로부터 트랜잭션 투표들을 수집할 수 있다(동작 310 내지 동작 350).
블록체인 시스템(10)은 블록 생성자의 선출 시기가 되면, 동작 370에서 집계된 트랜잭션 투표들을 기초로 미리 지정된 수의 블록 생성자들을 선출할 수 있다. 예를 들어, 블록체인 시스템(10)은 많은 투표를 획득한 순서로 계좌 주소를 정렬하고, 그 중에서 상위에 랭크된 지정된 수의 블록 생성자를 선출할 수 있다.
도 4는 일 실시 예에 따라 블록체인 기반의 서비스 제공자들에 대한 인센티브를 제공할 수 있는 블록체인 시스템을 나타낸다.
상술한 바와 같이, 블록체인 시스템(10) 상에서 트랜잭션들이 생성되고 처리됨에 따라 각 블록체인 노드들에 대한 트랜잭션 투표가 누적될 수 있다. 블록체인 시스템(10)은 누적된 트랜잭션 투표 양을 기준으로 블록 생성자들을 선출할 수 있다.
누적된 트랜잭션 투표의 양은 해당 블록체인 계정을 소유한 주체가 얼마나 많은 트랜잭션들을 발생시키고, 블록체인 시스템(10)의 경제를 활성화 시켰는 지에 대한 매우 정확하고 의미 있는 척도가 될 수 있다.
예를 들어, 작업 증명 방식(PoW) 기반 블록체인 시스템은 거대한 양의 컴퓨터 연산으로부터 얻을 수 있는 해시 파워를 가진 주체들에게 인센티브를 제공한다. 그러나 이러한 해시파워는 블록을 생성하는 계정을 선정하는 경쟁에 사용되는 것 외에 블록체인 시스템에 자체에 특별한 공헌을 하지는 않는다. PoW의 블록체인 시스템에서는 해시파워를 만들어 내기 위해 천문학적인 규모의 전기가 소모되고 있다.
한편, 지분 증명 방식(PoS) 기반의 블록체인 시스템은 해당 블록체인 시스템의 네이티브 암호화폐를 많이 소유하고 있는 주체들에게 인센티브를 준다. 많은 양의 암호화폐를 이미 소유하고 있는 밸리데이터(validator) 또는 블록 생성자들은 블록체인 시스템의 합의 과정에서 새로운 블록을 생성하는 노드로 선출될 가능성이 높아진다. 그리고 블록을 생성한 노드는 새로운 블록 생성 시 보상으로 주어지는 신규 발행된 암호화폐를 얻게 된다. 결국 PoS 방식은 기존에 암호화폐를 많이 가진 노드들이 더 많은 보상(암호화폐)을 얻게 되는 부익부 시스템으로 볼 수 있다.
PoW 방식 및 PoS 방식 기반의 블록체인 합의 방식들은 블록체인 시스템 상에서 발생하는 경제 활동인 트랜잭션 생성에 직접적인 공헌을 하지 않더라도, 기득 권력(하드웨어 설비를 통한 해시파워 생성, 암호화폐)을 가진 노드 들은 인센티브를 얻을 수 있다. 반면, 본 발명에 따른 블록체인 시스템(10)의 트랜잭션 증명 방식의 합의 방법은 블록체인 시스템(10) 상에서 트랜잭션 수수료에 의한 수익을 발생시키고, 블록체인 시스템(10)의 경제에 직접적인 공헌을 하는 노드들에게 인센티브를 제공할 수 있다.
일 실시 예에서, 트랜잭션은 블록체인 시스템(10)상에 배포된 소프트웨어에 의하여 생성될 수 있다. 트랜잭션에 포함되는 투표 항목은 상기 소프트웨어에 의하여 인코딩될 수 있다. 트랜잭션은 사용자 계정의 비밀 키로 항상 암호화 서명이 되어야 하지만, 직접 사용자에 의하여 생성되어야 하는 것은 아니다. 예를 들어, 블록체인 시스템(10)에 기반한 제1 서비스를 제공하기 위해 개발된 소프트웨어는 그 제1 서비스에 의하여 생성되는 트랜잭션의 투표 항목에 제1 서비스의 서비스 제공자가 운영하는 노드(블록체인 시스템의 코어 노드)의 계정 주소를 인코딩하도록 개발될 수 있다. 이처럼 블록체인 시스템(10)의 사용자에게 서비스되는 특정 응용 서비스를 위하여 개발된 소프트웨어가 사용자를 대신하여 투표 항목을 자신의 계정 주소로 인코딩하게 된다. 결과적으로 유의미한 트랜잭션들을 많이 발생시키는 서비스 제공자들이 블록 생성자로 선출될 수 있고, 블록체인 시스템(10)의 인센티브를 획득하게 된다.
예를 들어 도 4를 참조하면, 블록체인 시스템(10)에 기반하여 거래소 서비스를 제공하고 있는 암호화폐 거래소 회사 A의 트레이딩 소프트웨어는 사용자들의 토큰 거래 구매/판매 주문을 위한 트랜잭션을 생성할 수 있다. 거래소 회사 A의 소프트웨어에 의하여 인코딩되는 모든 트랜잭션은 투표 항목(Tx-투표)에 거래소 회사 A가 운영하는 코어 노드의 블록체인 계정 주소를 포함할 수 있다. 그리고 사용자가 제공한 블록체인 암호 키로 암호화 서명된 트랜잭션이 블록체인 시스템(10)에 제출될 수 있다. 거래소 회사 A의 거래소 서비스의 거래량이 증가함에 따라, 거래소 회사 A의 블록체인 노드는 많은 양의 트랜잭션 투표를 얻을 수 있고, 블록체인 시스템(10)의 블록 생성자로 선출되고, 보상을 받을 수 있다. 블록체인 시스템(10)에 기반하여 핀테크 서비스를 제공하는 핀테크 회사 B도 마찬가지로 핀테크 서비스를 제공하기 위한 소프트웨어를 구현하고 배포할 수 있다.
블록체인 시스템(10)의 서비스 제공자들은 더 많은 양의 트랜잭션 투표를 얻기 위하여 블록체인 사용자들에게 양질의 서비스를 제공하려는 노력을 하게 되고, 상호간에 투명하고 공정한 방식으로 경쟁하게 될 것이다.
도 5는 일 실시 예에 따라서 블록 생성자 후보들에 대한 노드 풀을 운영하는 예시를 설명하기 위한 도면이다.
일 실시 예에서, 블록체인 시스템(10)은 퍼블릭 블록체인으로 구현될 수 있다. 이 경우 블록체인 사용자들에게 유용한 서비스를 제공하고 트랜잭션 투표를 얻을 수 있다면, 어떤 노드도 블록 생성자로 선출될 수 있다.
트랜잭션 증명 노드 풀(Proof-of-Transaction node pool)
많은 양의 트랜잭션 투표를 얻은 노드는 블록 생성자로 선출될 가능성이 있는 블록 생성자 후보가 될 수 있다. 일 예시에서 블록 생성자 후보는 트랜잭션 증명 기반의 노드 풀(PoT 노드 풀)(211)에 등록될 수 있다. 예를 들어, 서비스 제공자들이 운영하는 블록체인 코어 노드들이 소유하는 블록체인 계정 주소들이 많은 양의 트랜잭션 투표를 얻게 되면, 투표 량의 순서에 따라 PoT 노드 풀(211)에 등록될 수 있다.
각 블록체인 계정들이 얻게 되는 트랜잭션 투표량은 예를 들어, BFT(Byzantine Fault Tolerant)기반 블록체인 합의 프로토콜을 통하여 블록체인 시스템(10)에서 선출된 블록 생성자들에 의하여 계산될 수 있다. 따라서 트랜잭션 투표량은 높은 보안성을 가지고, 투명한 방식으로 계산될 수 있다.
일 실시 예에서, PoT 노드 풀(211)에 포함될 수 있는 블록체인 계정의 수는 제한될 수 있다. 예를 들어, 아주 작은 양의 트랜잭션 투표 획득한 계정은 PoT 노드 풀(211)에 등록될 수 없고, 일정 양 이상의 트랜잭션 투표를 획득한 계정들만 PoT 노드 풀(211)에 등록될 수 있다.
예를 들어, 트랜잭션 투표량은 매 블록마다 계산될 수 있다. 블록체인 시스템(10)의 계정들은 획득한 트랜잭션 투표량에 따라 매 블록마다 정렬되어 PoT 노드 풀(211)의 목록에 등록될 수 있다.
일 실시 예에서, PoT 노드 풀(211)에 등록된 블록체인 계정들은 블록체인 시스템(10)에서 발생하는 트랜잭션 수수료 수익의 일부를 보상으로 받을 것을 보장받을 수 있다. 블록 생성자로 선출되지 않더라도, 블록체인 시스템(10)의 경제에 기여한 시스템 제공자는 보상을 얻을 수 있다. 이에 따라 블록체인 시스템(10)의 생태계가 더욱 활성화될 수 있다.
예를 들어, 블록체인 시스템(10)에서 징수되는 총 트랜잭션 수수료 수익의 P%가 PoT 노드 풀(211)에 할당될 수 있다. PoT 노드 풀(211)에 등록된 각 계정들은 각 계정이 획득한 트랜잭션 투표량에 비례하여 자신에게 할당된 수익 지분을 블록체인 상에서 청구할 수 있다.
도 5를 참조하면, PoT 노드 풀(211)의 최상위에 등록된 노드 C의 계정은 1200B의 트랜잭션 투표를 얻었고 그에 비례하여 최근에 블록체인 상에서 징수된 트랜잭션 수수료 수익의 5%를 블록체인 상에서 청구할 수 있다.
PoT 노드 풀(211)에서 상위에 랭크된 계정의 블록체인 노드들은 블록 생성자로 선출될 수 있고, 블록 생성자로 선출되어 블록을 생성하면 추가적인 보상(블록 보상)을 더 얻을 수 있다.
시드 신뢰 노드 풀(seed trust node pool)
다양한 실시 예에서, 블록체인 시스템(10)은 시드 신뢰 노드 풀(215)를 운영할 수 있다. PoT 노드 풀(211)에서 선출된 노드들 만으로 합의를 이루도록 할 수도 있지만, 블록체인 시스템(10)상에서 발생하는 트랜잭션이 전혀 없거나 그 수가 매우 작은 상황에서는 블록체인 시스템(10)의 보안이 상대적으로 취약해 질 수 있다. 블록체인 시스템(10)상에서 트랜잭션들이 많이 발생하고, PoT 노드 풀에 등록된 노드(이하, PoT 노드)들의 수익이 많이 발생하는 상황에서는 PoT 노드들이 정상적인 블록 생성자로 활동하고 수익을 얻어가기 위해 노력할 가능성이 높다. 그러나 트랜잭션이 거의 발생하지 않는 상황에서는 PoT 노드들이 악의적으로 블록체인 시스템(10)을 공격하거나 노드 서버를 운영하지 않는 등, 비잔틴 노드로 동작하게 될 가능성이 높아질 수 있다.
시드 신뢰 노드 풀(215)은 트랜잭션이 전혀 발생하지 않는 상황에서도 안정적으로 운영될 것을 신뢰할 수 있는 노드들을 포함할 수 있다. 블록체인 시스템(10)에 신뢰할 수 있는 노드들이 존재한다면 블록체인 시스템(10)의 안정성과 신뢰성에 큰 도움이 될 수 있다.
시드 신뢰 노드 풀(215)에 포함되는 노드들은 예를 들어, 블록체인 시스템(10)을 통하여 다양한 토큰들 발행하는 신뢰기관에 의하여 운영될 수 있다. 신뢰기관은 블록체인 시스템(10)에서 토큰을 발행하고, 발행된 토큰의 가치에 대응되는 실물 자산(예: 화폐, 부동산, 예술 작품 등)을 블록체인 시스템(10) 밖에서 안전하게 보유함으로써, 발행된 토큰의 가치를 뒷받침하는 기능을 하는 기관으로 이해될 수 있다. 예를 들어, 신뢰기관은 토큰을 보유한 사용자가 토큰에 대응되는 실물 자산으로의 교환을 요청하면, 언제든지 사용자에게 실물 자산을 지급해줄 수 있고, 지급한 실물 자산에 대응되는 토큰을 블록체인 시스템(10)상에서 소각시킬 수 있다.
다양한 실시 예에서, 신뢰기관은 법정 화폐에 대응하는 토큰을 발행하는 은행일 수 있고, 외부의 퍼블릭 블록체인들의 암호화폐에 대응하는 토큰을 발행하는 거래소일 수 있고, 기타 실물 자산을 기반으로 한 토큰을 발행하는 다양한 기관이 될 수 있다.
신뢰기관은 자신들이 발행한 토큰들이 유통되는 블록체인 시스템(10)을 안정적으로 유지하기 위하여 안정적으로 동작하는 블록체인 코어 노드를 운영할 수 있다. 이러한 노드들은 시드 신뢰 노드 풀(215)에 등록될 수 있다.
신뢰기관들이 토큰 발행을 관리하고 신뢰할 수 있는 노드를 운영하는 것에 대한 인센티브로서, 시드 신뢰 노드 풀(215)의 노드들에게 트랜잭션 수수료 수익의 일부가 제공될 수 있다. 또한 이러한 보상은 신뢰기관들이 발행한 토큰의 가치를 보전하기 위한 지급준비금 관리 등의 역할을 하는 것에 대한 보상으로 볼 수도 있다.
신뢰기관들이 운영하는 블록체인 코어 노드들이 블록 생성자들의 일부로 선출되어 블록체인 시스템(10)의 합의 프로토콜에 참여하게 되면, 블록체인 시스템(10)의 안정성과 보안성이 더욱 강화될 수 있다. 이에 따라 블록체인 사용자들은 블록체인 시스템(10)을 더욱 신뢰하고 블록체인 시스템(10)기반의 서비스들을 이용할 수 있다.
최고 신뢰 계정(top trust account)
다양한 실시 예에서, 블록체인 시스템(10)은 최고 신뢰 계정(top trust account)을 포함할 수 있다. 최고 신뢰 계정은 시드 신뢰 노드 풀(215)에 등록되는 계정 목록을 관리하고, 시드 신뢰 노드 풀(215)내의 포함되는 계정들에게 지급되는 트랜잭션 수수료의 배당 비율을 지정하는 권한을 가질 수 있다.
예를 들어, 최고 신뢰 계정은 금융 기관이나 정부기관과 같은 블록체인 생태계에서 매우 높은 레벨의 신뢰를 받는 주체에 의해 소유될 수 있다. 최고 신뢰 계정은 앞서 서술된 권한에 따른 동작을 수행하는 것 외에 사용자들의 블록체인 트랜잭션 처리에 영향을 주는 동작을 수행할 수는 없도록 설정될 수 있다. 최고 신뢰 계정의 모든 활동은 블록체인 시스템(10) 상에서 이루어지므로 투명하고 위변조가 불가능한 방식으로 이루어지고 블록체인 생태계의 모든 구성원들에 의해 감시를 받을 수 있다. 예를 들어 최고 신뢰 계정은 신뢰기관을 시드 신뢰 노드로 지정할 수 있다.
블록 생성자의 선출
일 실시 예에서, 본 발명에 따른 블록체인 시스템(10)의 블록 생성자들은 PoT 노드 풀(211)과 시드 신뢰 노드 풀(215)로부터 선출될 수 있다. 따라서 PoT 노드 풀(211) 과 시드 신뢰 노드 풀(215) 에 등록된 노드들은 블록 생성자 후보로 이해될 수 있다. 선출된 블록 생성자들의 총 수는 N이라고 가정할 수 있다. 블록체인 시스템(10)의 블록 생성자의 숫자는 블록체인의 확장성(scalability)을 위하여 제한될 수 있다. 블록체인 확장성의 문제는 초당 처리 가능한 트랜잭션 용량(TPS)을 늘리는 문제를 다룬다. 블록체인 확장성을 개선시키기 위하여, 블록 생성자 또는 밸리데이터와 같은 합의과정에 참여하는 참여 노드의 수를 제한할 수 있다.
다른 블록체인 시스템을 예로 들면, 비트코인, 이더리움과 같은 PoW 기반 블록체인 합의 방식에는 미리 정해진 수의 채굴자 노드들이 있는 것이 아니라, 어떤 노드라도 해시 퍼즐을 빨리 찾을 수 있는 컴퓨팅 파워가 있으면 언제든지 채굴 노드가 되어 새로운 블록을 생성할 수 있다. 매 블록 생성시마다 모든 노드들에게 블록 생성자가 될 가능성이 주어지므로 모든 노드들이 경쟁적으로 합의를 이루어야 한다. 그에 따라 새로운 블록에 대한 합의가 느려지게 된다.
예를 들어, ‘quorum-slice’ 개념이 적용된 스텔라(stellar) 컨센서스 프로토콜의 FBA(Federated Byzantine Agreement) 합의 방식에서도 합의 참여 노드들의 집합의 크기가 미리 정해져 있지 않다. 각 블록체인 노드들이 신뢰하는 다른 노드들을 지정하는 ‘quorum-slice’의 교집합들이 점점 커져감에 따라 합의 참여 노드 집합(quorum set)의 크기는 임의적으로 커질 수 있다. 합의 참여 노드 집합의 많은 수의 노드들이 메시지들을 주고 받고 새로운 블록에 대한 합의를 이루어야 하므로 스텔라 블록체인의 높은 TPS를 보장하기는 어렵게 된다.
블록체인 시스템(10)의 트랜잭션 투표량에 기초하여 정해진 블록 생성자인 노드들은 서로 경쟁하지 않고 협력하여 새로운 블록을 생성해 나갈 수 있으므로 블록체인 시스템(10)은 높은 TPS 성능을 가질 수 있게 된다.
예를 들어, PoT 노드 풀(211)에 등록된 노드들 중 상위 N개의 노드들이 모두 블록 생성자로 선출될 수 있다. 이 경우는 PoT 노드 풀(211)에 등록된 노드들 만으로 블록체인 시스템(10)이 안정적으로 운영될 수 있는 경우로 이해될 수 있다.
다른 예를 들어, PoT 노드 풀(211)에 있는 노드들 중 트랜잭션 투표를 많이 얻은 상위 p개의 노드들이 블록 생성자로 선출될 수 있다. 나머지 N-p개의 노드는 시드 신뢰 노드 풀(215)로부터 선출될 수 있다. 단, N과 p의 값은 0보다 큰 실수일 수 있고, N와 p의 값은 블록체인 시스템(10)의 상황에 따라 변동될 수 있다.
일 실시 예에서 시드 신뢰 노드 풀(215)에서 선출될 N-p개의 노드는 시드 신뢰 노드 풀(215)로부터 의사랜덤한(pseudo-randomly) 방식으로 선택될 수 있다. 의사 랜덤 방식이란, 예측하기는 어렵지만 프로토콜에 의해 결정되고 노든 노드에 의해 재현이 가능한 방식으로 이해될 수 있다. 예를 들면 의사 랜덤 방식은 블록의 해시를 랜덤 넘버를 만드는데 사용된다. 시드 신뢰 노드 풀(215)에 등록된 노드들은 모두 신뢰할 수 있으므로, 그에 포함되는 임의의 노드들이 블록 생성자로 생성될 수 있다.
다양한 실시 예에서, 숫자 N과 p는 블록체인 시스템(10)상에서 고정될 수 있다. PoT 노드들에 가중치를 주기 위하여 p값은 일반적으로 N의 과반수 이상으로 설정될 수 있다. 블록 생성자들 중 PoT 노드들이 신뢰 시드 노드들보다 많도록 함으로써, 탈 중앙화된 거버넌스를 유도할 수 있다. 신뢰 시드 노드들은 공개적으로 참여하는 PoT 노드들이 적은 경우 백업(back up) 역할을 해줄 수 있다. 주기적으로 두 개의 노드 풀로부터 재 선출되는 N개의 노드들은 이하 도 7을 통하여 서술될 BFT 기반 합의 프로토콜을 통하여 새로운 블록들을 생성하게 된다.
본 발명의 블록체인 시스템에서, 새로 생성되는 매 블록마다 해당 블록에서 징수된 총 트랜잭션 수수료 수익 중 일부가 해당 블록을 생성한 블록 생성자에게 블록 보상으로 지급될 수 있다. 트랜잭션 수수료 수익을 배분하는 예시는 도 6을 참조하여 후술된다. 트랜잭션 투표를 많이 받은 PoT 노드들이 반드시 블록체인 코어 노드를 운영하도록 (실제 물리적인 서버를 운영) 블록체인 시스템(10)상에서 강제될 수 는 없지만, 블록 생성자들에게 주어지는 블록 보상은 PoT 노드들이 실제 물리적인 코어 노드 서버들을 블록체인 네트워크 상에 운영하여 블록체인 합의 프로세스에 참여하도록 하는 강한 인센티브가 될 수 있다. 만약 상당한 양의 트랜잭션 투표를 받아 블록 생성자로 선출된 PoT 노드가 실제 물리적인 블록체인 코어 노드 서버를 네트워크 상에 운영하지 않거나 또는 서버 장애등 오동작을 일으키거나 악의적으로 블록체인을 공격하는 노드로 동작하는 것이 발견되어 비잔틴 노드로 판명이 되면, 해당 블록 생성자 계정에 대해, 이미 얻은 트랜잭션 투표량을 삭감, 트랜잭션 수수료 수익 풀에 쌓여 있는 수익 지분을 몰수, 블록 생성자 지위 박탈 등의 처벌이 블록체인 시스템(10) 상에서 이루어 질 수 있다.
한편 선출된 블록 생성자의 총 수가 N = 3f + 1 일 때, BFT 기반의 합의 프로토콜에서 최대 f개까지의 비잔틴 노드만 허용되므로, 선출된 블록 생성자들 중에 f개를 넘는 비잔틴 노드들이 존재하지 않는 것이 기본적으로 가정될 수 있다.
본 발명에 따른 블록체인 시스템(10)에서 선출된 블록 생성자들은 블록체인에 기반하여 서비스를 구현하여 많은 양의 트랜잭션들을 일으켜 수익을 내는 비즈니스를 하고 있는 PoT 노드이거나 블록체인 생태계의 신뢰를 받는 신뢰기관들이 운영하는 시드 신뢰 노드 이기 때문에, 다른 BFT 기반 합의 알고리즘로 구현된 퍼블릭 블록체인들과 비교하여 본 발명에 따른 블록체인 시스템(10)의 블록 생성자 노드들이 비잔틴 노드일 확률은 매우 낮다고 볼 수 있다.
도 6은 일 실시 예에 따라 블록체인 시스템에서 트랜잭션 수수료 수익을 배분하는 예시를 설명하기 위한 도면이다.
블록체인 시스템(10)의 운영자들에 대한 경제적 보상으로서 트랜잭션 수수료의 적어도 일부가 지급될 수 있다. 일 실시 예에서, 매 새로운 블록 마다 블록 안에 포함된 블록체인 트랜잭션들로부터 징수된 트랜잭션 수수료 총 수익은 해당 블록의 블록 생성자, PoT 노드 풀(211)에 등록된 노드들, 시드 신뢰 노드 풀(215)에 등록된 노드들 에게 분배될 수 있다.
일 예시로서 도 6을 참조하면, 하나의 블록에서 징수된 트랜잭션 수수료 총량의 B%는 해당 블록의 블록 생성자에게 즉시 블록 보상으로 주어질 수 있다. P%는 PoT 노드 풀(211) 에 (100-B-P)%는 시드 신뢰 노드 풀(215)에 할당될 수 있다. 단, B와 P는 0과 같거나, 0보다 큰 실수일 수 있고, B와 P의 값은 블록체인 시스템(10)의 상황에 따라 변동될 수 있다.
예를 들어, B와 P 비율 값은 블록체인 시스템(10) 상에 고정될 수 있고, 이 경우 B와 P의 비율 값은 블록체인 프로토콜 업그레이드(하드포크)시 변경될 수 있다. 비율 P는 일반적으로 PoT 노드들에게 가중치를 부여하기 위해 상대적으로 높은 비율의 값으로 설정될 수 있다.
블록 보상을 제외한 나머지 (100-B)%는 트랜잭션 수수료 풀에 쌓일 수 있다. 청구된 수수료 수익은 트랜잭션 수수료 풀로부터 지급될 수 있다. 예를 들어, PoT 노드 풀(211)에 등록된 각 블록체인 계정들은 트랜잭션 수수료들이 수집되는 시점에 각 계정들의 트랜잭션 투표 수집 양에 비례하여 주기적으로 각 계정 자신의 수익 지분을 블록체인 시스템(10)에 청구할 수 있다. 같은 방식으로 시드 신뢰 노드 풀(215) 에 등록되어 있는 각 블록체인 계정들도 각 계정의 수익 지분 비율만큼 주기적으로 각 계정 자신의 수수료 수익을 블록체인 시스템(10)에 청구할 수 있다. 수익 지분 비율은 최고 신뢰 계정에 의하여 지정될 수 있다.
도 7은 일 실시 예에 따른 블록체인 시스템에 적용된 BFT 합의 알고리즘을 설명하기 위한 도면이다.
빠른 트랜잭션 처리 속도와 많은 양의 트랜잭션 처리량은 고성능 블록체인 구현의 핵심 요소이다. 짧은 블록 타임(Short Block Time)과 빠른 블록 확정성(Fast Block Finality)은 블록체인 시스템(10)의 성능을 개선시키기 위하여 필요한 요소이다. 블록 타임이란 현재 블록이 생성되고 난 후에 다음 블록이 생성되기 까지 걸리는 시간으로서, 연속되는 블록들 간의 생성 시간의 차이를 의미한다. 블록 확정성은 새로운 블록이 불가역적으로 확정되는 것을 의미한다. 블록이 확정되면, 확정성을 얻은 블록과 그 블록과 연결된 이전의 모든 블록들은 이후에 포크(fork)가 일어나지 않을 것이 보장된다.
다양한 실시 예에서, 블록체인 시스템(10)에는 짧은 블록 타임과 빠른 블록 확정성을 구현하기 위해 기존의 BFT 기반 합의 알고리즘(이오스의 DPos, 텐더민트)으로부터 개선된 BFT 기반 합의 알고리즘이 적용될 수 있다.
블록 타임
블록체인 시스템(10)상에서 짧은 블록 타임은 고정된 수의 블록 생성자들이 경쟁하지 않고 새로운 블록을 생성함으로써 가능해진다. 블록 생성자들은 서로를 신뢰하고 서로 협력하게 된다. 도 7을 참조하면, 4개의 노드들(A, B, C, D)이 블록 생성자로 선출된 상황이 가정될 수 있다.
블록 생성자들(A, B, C, D)은 자신에게 할당된 타임 슬롯에 자신이 수집한 트랜잭션들을 포함하는 새로운 블록을 생성하고, '블록 생성 메시지'를 통해 생성한 블록 정보를 모든 블록 생성자들에게 방송할 수 있다. 예를 들어, A를 위한 타임 슬롯 1에서 A는 블록 K를 생성하고, 블록체인 시스템(10)을 통하여 A의 K 블록에 대한 정보를 포함하는 블록 생성 메시지를 블록 생성자 B, C, D에게 방송할 수 있다.
다음 블록을 생성하도록 스케줄링된 다음 턴의 블록 생성자는 이전 블록 생성자에 의하여 생성된 블록이 확정성을 가지기 전이라도, 자신의 타임슬롯에 즉시 자신이 받은 가장 최근의 블록을 기준으로 다음 새로운 블록 생성 턴을 진행할 수 있다. 예를 들어, 다음 블록을 생성하도록 스케줄링 된 B는 B를 위한 타임 슬롯 2에서 블록 K+1을 생성할 수 있다.
이전 타임 슬롯에 할당된 블록 생성자 A에 의하여 생성되어 B에게 전달된 최신의 블록 K는, 다음 블록 생성자 B가 블록 K의 유효성을 검증했다면, 블록 K는 결국 확정성을 가지게 될 것이라고 가정할 수 있다. 이러한 가정에 따라 아직 전체 블록 생성자의 2/3 이상의 블록 생성자들로부터 유효성 검증 투표가 수집되지 않더라도 다음 블록 생성 단계로 넘어갈 수 있다. (낙관적 블록 생성 방식(optimistic block production)) 그러나 만약 다음 블록 생성자들이 이전 블록의 유효성에 대해 인정하지 않는다면, 다음 블록 생성자들에 의해 새로 생성되는 블록은 잘못된 이전 블록(들)을 건너 뛰고 가장 최신의 유효성이 인정된 블록의 해시 포인터를 포함하게 될 것이다.
예를 들어 텐더민트 합의 알고리즘과 그 변형 알고리즘들은 현재 블록의 유효성에 대한 투표를 합의 참여 노드들 전체의 과반수 이상으로부터 수집하여 블록의 유효성을 확정한 후에서야 다음 블록 생성 단계로 넘어가도록 설계되어 있다(비관적인 블록 생성(pessimistic block production) 방식). 이러한 비관적인 블록 생성 방식은 생성된 블록이 확정성을 얻는 시간을 빠르게 할 수 있지만 블록의 유효성에 대한 투표를 수집하여 블록을 확정한 후에 다음 블록 생성으로 넘어가므로 상대적으로 긴 블록 타임을 가지게 된다.
한편, 비잔틴 노드란 악의적인 공격자 노드이거나, 노드의 네트워크 문제 등으로 비잔틴 노드가 생성한 블록이 다른 블록 생성자들에게 전달되지 않는 등의 경우가 발생할 수 있는 노드일 수 있다. 이 경우 비잔틴 노드 에 의해 만들어진 블록은 다른 블록 생성자들에 의해 건너 뛰어 생략되고 정본(canonical)에 속하는 체인에 포함되지 않게 된다. 따라서 블록체인에 일시적인 포크(fork)들이 발생할 수 있으나 결국 가장 긴 포크가 정본으로 인정된 체인으로 살아 남게 된다. 예를 들어 도 7에서, 블록 생성자 B가 비잔틴 노드인 예시가 도시되었다. 블록 생성자 B에 의하여 생성된 블록 K+1은 다른 블록 생성자 A, C, D에 의하여 건너 뛰어지고 블록 체인에서 제외된다.
또 다른 경우로, 한 블록 생성자는 동시에 두 개 이상의 임시적인 포크에 서명을 해서는 안 된다. 만약 한 블록 생성자의 서명이 여러 개의 임시 포크들에서 발견된다면 비잔틴 노드로 간주되어 그 블록 생성자는 블록체인 상에서 경제적 불이익을 받도록 처벌을 당하게 될 것이다.
블록 확정성
블록 확정성이란 해당 블록과 그와 연결된 이전의 모든 블록들이 향후 블록체인 상에서 변경이 되지 않을 것을 보장하는 것을 의미한다. 한 블록이 2/3이상의 블록 생성자들의 암호화 서명을 얻게 되면 그 블록은 확정된다. 가장 최근에 확정성을 얻은 블록 이후에 연결된 블록들만이 임시적인 블록체인 포크에 속하여 결국 정본 체인에서 제외될 수 있는 가능성을 가지게 된다. 그러나 PoW 기반 합의에서는 언제든지 최근 블록들을 배제하고 새로운 블록체인 포크(fork)가 발생할 수 있어서 블록에 대한 100% 확정성을 보장할 수 없게 된다.
빠른 블록 확정성은 이전 블록 생성자의 블록 생성 메시지의 전파와는 별도로, 선출된 블록생성자들 간에 명시적인 '블록 유효성 검증 투표'를 전파하도록 하는 방식으로 구현할 수 있다. 이러한 별도의 블록 유효성 검증 투표 프로세스를 적용하지 않더라도 블록 생성 메시지 만으로도 각 블록의 블록 확정성이 결국에는 결정되지만 블록 확정성이 결정되는 시간이 다소 오래 걸리게 된다.
블록 생성자는 블록 생성 메시지를 수신하면, 블록 생성 메시지에 포함된 새로운 블록 정보에 대해서 유효성을 검증하고 새로운 블록의 유효성에 대한 자신의 투표 정보를 다른 모든 블록 생성자들에게 다시 방송할 수 있다.
현재 블록은 바로 직전의 블록을 가리키는 블록 해쉬 포인터를 포함한다. 블록 해시 포인터는, 포인터가 가리키는 이전 블록과 그와 연결된 모든 이전 블록들에 대한 유효성 검증 투표로 이해될 수 있다. 유효성 검증 투표는 현재 블록의 블록 생성자에 의하여 암호화 서명되게 된다. 따라서 한 블록 이후에 블록 생성자 전체의 2/3 과반수 이상의 숫자의 새로운 블록이 블록체인 상에서 생성되어 연결되었다면, 그것은 해당 블록이 2/3 과반수 이상의 블록 생성자들로부터 암호화 서명된 블록 유효성 투표를 얻었고 확정성을 가지는 것을 의미한다.
특정 블록의 블록 번호를 k라고 하고 f개까지의 비잔틴 노드를 허용할 수 있는 블록 생성자들의 총 수를 N = 3f + 1 이라고 하자. 블록 번호가 k+(2f+1)-1 인 블록이 블록 생성자들에게 방송되어 전달되었을 때, 블록번호가 k 인 블록은 블록 생성자 전체 2/3 과반수 이상의 지지를 받은 블록 확정성을 가지게 된다.
따라서 도 7의 예시에서, N=4 이므로 허용되는 비잔틴 노드의 개수는 1개 이다. 그리고 블록 생성자 A에 의하여 생성된 블록 K는 K+2인 블록이 블록 생성자들에게 전달되었을 때 확정성을 가지게 된다. 따라서 D의 K+2블록이 방송될 때, 약 타임 슬롯 4의 영역에서 블록 K는 확정성을 가지게 된다.
빠른 블록 확정성은 인터 블록체인 통신(inter-blockchain communication) 구현에 핵심적인 요소이다. 향후 블록체인 포크로 인해 변경될 가능성이 없는 확정성을 가진 블록에 저장된 트랜잭션이 다른 외부의 블록체인 시스템 또는 한 블록체인 시스템 내의 다른 형제 블록체인 시스템으로부터 참조가 될 수 있기 때문이다.
만약 별도의 블록 유효성 검증 투표 과정이 없는 경우, 블록이 확정되는데 걸리는 최소 시간은 2f*t(t: 블록 타임)이다. 예를 들어 N=25, t=3초 라고 하면 블록 확정성을 얻기 위해 걸리는 시간은 48초이다. 48초는 원활한 인터 블록체인 통신을 하기 위해서는 다소 긴 시간이다.
다른 블록 생성자로부터 만들어진 블록 생성 메시지가 네트워크에 방송되어 각 블록 생성자들이 전달받게 되면, 각 블록 생성자들은 전달 받은 블록의 유효성을 각각 검증하고 유효성 검증 투표 메시지를 다른 모든 블록 생성자들에게 방송하여 전달한다.
다양한 실시 예에서, 블록 생성자 A가 자신의 타임 슬롯에서 블록을 생성할 때 아직 블록 확정성을 얻지 못한 이전 블록 K에 대해, 전체 블록 생성자 중 2/3 과반수 이상의 각 블록 생성자들에 의하여 암호화 서명된 블록 유효성 검증 투표를 수집된 것이 확인되면, 새로 생성하는 블록 K+1 안에 새롭게 블록 확정성을 얻게 된 블록 K에 대한 선언과 증거 데이터와 함께 포함하여 다른 블록 생성자들에게 방송할 수 있다. 특정 블록에 대한 확정성의 선언과 블록 확정성에 대한 증거 데이터는 확정성과 연관된 정보로 참조될 수 있다. 확정성과 연관된 정보는 블록 생성 메시지에 포함되어 다른 블록 생성자들에게 방송될 수 있다. 예를 들어, 블록 생성자 A는 블록 K가 확정된 것을 확인하면, 상기 블록 K의 확정성과 연관된 정보들을 블록 K+1에 대한 블록 생성 메시지에 포함시켜 방송할 수 있다.
블록 유효성 검증 투표 메시지 전달을 가속화할 수 있는 추가적인 프로토콜이 설계될 수 있다. 예를 들어, 블록 생성자들이 블록 생성 메시지와 블록 유효성 검증 투표 메시지를 만들 때 자신의 블록 유효성 검증 투표에 대한 암호화 서명뿐만 아니라 아직 블록 확정성 상태가 아닌 블록들에 대해 자신이 수집한 다른 블록 생성자들의 블록 유효성 검증 투표 정보와 암호화 서명들도 같이 포함하여, 네트워크 속도가 가장 빠른 패스를 통해 블록 유효성 검증 투표 메시지들이 빠르게 수집되도록 할 수 있다.
도 7의 예에서 별도의 명시적 블록 유효성 검증 투표를 진행하는 것이 블록 생성 메시지만 전달하는 경우에 비해 블록들이 더욱 빠르게 확정성을 얻게 되는 것을 볼 수 있다. 블록 생성자의 총 수(N)가 더욱 커짐에 따라 블록 유효성 검증 투표를 통한 블록 확정성을 얻는 시간이 상대적으로 훨씬 더 빠르게 진행된다. 이러한 블록 유효성 검증 투표 방식은 대부분의 경우 1~2 블록 타임 내에 블록 확정성을 보장하게 된다.
본 문서의 다양한 실시예들 및 이에 사용된 용어들은 본 문서에 기재된 기술적 특징들을 특정한 실시예들로 한정하려는 것이 아니며, 해당 실시예의 다양한 변경, 균등물, 또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 또는 관련된 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 아이템에 대응하는 명사의 단수 형은 관련된 문맥상 명백하게 다르게 지시하지 않는 한, 상기 아이템 한 개 또는 복수 개를 포함할 수 있다. 본 문서에서, "A 또는 B", "A 및 B 중 적어도 하나", “A 또는 B 중 적어도 하나,”"A, B 또는 C," "A, B 및 C 중 적어도 하나,”및 “A, B, 또는 C 중 적어도 하나"와 같은 문구들 각각은 그 문구들 중 해당하는 문구에 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. "제 1", "제 2", 또는 "첫째" 또는 "둘째"와 같은 용어들은 단순히 해당 구성요소를 다른 해당 구성요소와 구분하기 위해 사용될 수 있으며, 해당 구성요소들을 다른 측면(예: 중요성 또는 순서)에서 한정하지 않는다.
일 실시예에 따르면, 본 문서에 개시된 다양한 실시 예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 또는 두개의 사용자 장치들(예: 스마트폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
다양한 실시예들에 따르면, 상기 기술한 구성요소들의 각각의 구성요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있다. 다양한 실시예들에 따르면, 전술한 해당 구성요소들 중 하나 이상의 구성요소들 또는 동작들이 생략되거나, 또는 하나 이상의 다른 구성요소들 또는 동작들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성요소들(예: 모듈 또는 프로그램)은 하나의 구성요소로 통합될 수 있다. 이런 경우, 통합된 구성요소는 상기 복수의 구성요소들 각각의 구성요소의 하나 이상의 기능들을 상기 통합 이전에 상기 복수의 구성요소들 중 해당 구성요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따르면, 모듈, 프로그램 또는 다른 구성요소에 의해 수행되는 동작들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 상기 동작들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 동작들이 추가될 수 있다.
Claims (16)
- 블록체인 시스템에 있어서,
분산 네트워크를 통하여 상호간에 통신을 수행하고, 상기 블록체인 시스템 외부의 블록체인 클라이언트 장치와 통신을 수행하는 복수의 노드들을 포함하고,
상기 복수의 노드들 각각은, 상기 블록체인 시스템 상에서 발생되는 트랜잭션을 처리하고, 상기 트랜잭션에 포함되고 상기 복수의 노드들 중 어느 하나의 노드에 대응되는 계정 주소를 포함하는 투표 항목을 수집하고, 상기 수집된 투표 항목에 기초하여 상기 복수의 노드들 중 적어도 하나의 노드를 블록 생성자로 선출하도록 설정되고,
상기 복수의 노드들 각각은 컴퓨팅 장치이고,
상기 투표 항목에 대해 상기 투표 항목을 포함하는 상기 트랜잭션에 대응되는 트랜잭션 수수료에 비례하는 가중치가 부여되고,
상기 복수의 노드들 각각은, 상기 복수의 트랜잭션들에 포함되는 투표 항목들 및 상기 투표 항목들 각각에 부여된 가중치에 기초하여, 상기 투표 항목들에 포함된 각 계정 주소에 대하여 누적된 가중치에 해당하는 투표 수를 연산하고, 상기 투표 수가 많은 순서로 정렬된 상기 복수의 계정 주소들 중 미리 지정된 개수의 상위 복수의 계정 주소들에 해당하는 노드들을 상기 블록 생성자들로 선출하도록 설정된, 블록체인 시스템. - 청구항 1에 있어서,
상기 복수의 노드들 각각은,
상기 트랜잭션에 대응되는 상기 트랜잭션 수수료를 획득하도록 설정된, 블록체인 시스템. - 청구항 2에 있어서,
상기 복수의 노드들 각각은,
상기 획득한 트랜잭션 수수료의 적어도 일부를 상기 선출된 블록 생성자에게 지급하도록 설정된, 블록체인 시스템. - 청구항 2에 있어서,
상기 복수의 노드들 각각은,
상기 트랜잭션 수수료에 비례하는 상기 가중치가 부여된 상기 투표 항목을 수집하도록 설정된, 블록체인 시스템. - 청구항 2에 있어서,
상기 복수의 노드들 각각은,
상기 트랜잭션 수수료를 획득하는 때에, 상기 투표 항목을 수집하도록 설정된, 블록체인 시스템. - 삭제
- 삭제
- 청구항 1에 있어서,
상기 블록 생성자들로 선출된 노드들은,
각각의 블록 생성자들에게 할당된 타임 슬롯에 블록을 생성하고,
상기 블록의 생성과 연관된 블록 생성 메시지를 다른 블록 생성자들에게 방송하도록(broadcast) 설정된, 블록체인 시스템. - 청구항 8에 있어서,
상기 블록 생성자들로 선출된 노드들은,
이전 블록 생성자로부터 블록 생성 메시지를 수신하면, 상기 블록 생성 메시지에 포함된 블록 정보에 대한 유효성을 검증하고,
상기 유효성이 검증되면 유효성 검증 투표 메시지를 다른 블록 생성자들에게 방송하도록 설정된, 블록체인 시스템. - 청구항 1에 있어서,
상기 복수의 노드들은,
제1 서비스의 제공을 위하여 상기 블록체인 시스템상에 배포된 제1 소프트웨어를 구동시키고,
상기 제1 소프트웨어의 구동에 따라 발생되는 상기 트랜잭션을 처리하고,
상기 제1 서비스의 제공자에 의하여 운영되는 상기 하나의 노드의 계정 주소를 포함하도록, 상기 제1 소프트웨어에 의하여 인코딩된 상기 투표 항목을 수집하도록 설정된, 블록체인 시스템. - 청구항 1에 있어서,
상기 복수의 노드들은,
상기 적어도 하나의 노드를 제외한 나머지 노드들 중 상기 블록체인 시스템 상에서 블록 생성자 후보로 미리 지정된 적어도 하나의 후보자 노드를 블록 생성자로 선출하도록 설정된, 블록체인 시스템. - 블록체인 시스템에 포함되고, 상기 블록체인 시스템의 분산 네트워크를 통하여 상호간에 통신을 수행하는 복수의 노드들 중 적어도 어느 하나의 노드에 의하여 수행되는 방법에 있어서,
상기 블록체인 시스템 상에서 발생되는 복수의 트랜잭션들에 포함된 투표 항목들을 수집하는 동작, 상기 투표 항목들 각각은 상기 복수의 노드들 중 어느 하나의 노드에 대응되는 계정 주소를 포함하고 상기 투표 항목에 대해 상기 투표 항목을 포함하는 상기 트랜잭션에 대응되는 트랜잭션 수수료에 비례하는 가중치가 부여됨; 및
상기 수집된 투표 항목들을 기초로, 미리 지정된 수의 블록 생성자를 선출하는 동작;을 포함하며,
상기 블록 생성자를 선출하는 동작은,
상기 복수의 트랜잭션들에 포함되는 투표 항목들 및 상기 투표 항목들 각각에 부여된 가중치에 기초하여, 상기 투표 항목들에 포함된 각 계정 주소에 대하여 누적된 가중치에 해당하는 투표 수를 연산하는 동작; 및
상기 투표 수가 많은 순서로 정렬된 상기 복수의 계정 주소들 중 상기 미리 지정된 개수의 상위 복수의 계정 주소들에 해당하는 노드들을 상기 블록 생성자들로 선출하는 동작을 포함하는, 방법. - 청구항 12에 있어서,
상기 투표 항목들을 수집하는 동작은,
상기 복수의 트랜잭션들 중 제1 트랜잭션에 포함된 제1 계정 주소를 포함하는 제1 투표 항목을 확인하고, 상기 제1 투표 항목을 상기 제1 계정 주소에 대한 투표로서 수집하고,
상기 복수의 트랜잭션들 중 제2 트랜잭션에 포함된 제2 계정 주소를 포함하는 제2 투표 항목을 확인하고, 상기 제2 투표 항목을 상기 제2 계정 주소에 대한 투표로서 수집하는 동작;을 포함하는, 방법. - 청구항 12에 있어서,
상기 트랜잭션들을 처리하고, 상기 트랜잭션들 각각에 대응되는 상기 트랜잭션 수수료를 획득하는 동작;을 더 포함하는, 방법. - 청구항 14에 있어서,
상기 투표 항목들을 수집하는 동작은,
상기 트랜잭션 수수료가 획득되면 수행되는 것인, 방법. - 청구항 14에 있어서,
상기 투표 항목들을 수집하는 동작은,
상기 트랜잭션들 각각에 대응되는 트랜잭션 수수료를 기초로 상기 가중치가 부여된(weighted) 상기 투표 항목들을 수집하는 동작을 포함하는, 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/040,724 US11636450B2 (en) | 2018-03-23 | 2018-07-27 | Blockchain system to which proof-of-transaction consensus algorithm is applied, and method therefor |
PCT/KR2018/008504 WO2019182202A1 (ko) | 2018-03-23 | 2018-07-27 | 트랜잭션 증명 방식의 합의 알고리즘이 적용된 블록체인 시스템 및 그 방법 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862646930P | 2018-03-23 | 2018-03-23 | |
US62/646,930 | 2018-03-23 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210000951A Division KR102240939B1 (ko) | 2018-03-23 | 2021-01-05 | 트랜잭션 증명 방식의 합의 알고리즘이 적용된 블록체인 시스템 및 그 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190111707A KR20190111707A (ko) | 2019-10-02 |
KR102250810B1 true KR102250810B1 (ko) | 2021-05-11 |
Family
ID=68422678
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180064925A KR102250810B1 (ko) | 2018-03-23 | 2018-06-05 | 트랜잭션 증명 방식의 합의 알고리즘이 적용된 블록체인 시스템 및 그 방법 |
KR1020210000951A KR102240939B1 (ko) | 2018-03-23 | 2021-01-05 | 트랜잭션 증명 방식의 합의 알고리즘이 적용된 블록체인 시스템 및 그 방법 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210000951A KR102240939B1 (ko) | 2018-03-23 | 2021-01-05 | 트랜잭션 증명 방식의 합의 알고리즘이 적용된 블록체인 시스템 및 그 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11636450B2 (ko) |
KR (2) | KR102250810B1 (ko) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10986169B2 (en) * | 2018-04-19 | 2021-04-20 | Pinx, Inc. | Systems, methods and media for a distributed social media network and system of record |
US20210099312A1 (en) | 2019-09-27 | 2021-04-01 | Cypherium Blockchain Inc. | Systems and methods for selecting and utilizing a committee of validator nodes in a distributed system |
CN111082990B (zh) * | 2019-12-19 | 2023-01-13 | 度小满科技(北京)有限公司 | 一种区块链的共识方法、装置、设备及存储介质 |
US11403281B2 (en) * | 2020-01-09 | 2022-08-02 | Eternal Paradise Limited | Parallel blockchain processing |
CN111352705B (zh) * | 2020-02-25 | 2023-10-31 | 百度在线网络技术(北京)有限公司 | 一种区块链的事务处理方法、装置、设备和介质 |
KR102460432B1 (ko) * | 2020-06-30 | 2022-10-27 | 주식회사 트러스트디비 | Rdbms 기반의 분산원장 관리 시스템 및 방법 |
CN112712366A (zh) * | 2021-01-11 | 2021-04-27 | 杭州复杂美科技有限公司 | 区块执行方法、计算机设备和存储介质 |
CN112788139B (zh) * | 2021-01-12 | 2022-11-18 | 北京工业大学 | 一种区块链存储容量优化方法及系统 |
CN113204796B (zh) * | 2021-04-19 | 2022-07-05 | 中南民族大学 | 一种基于异构环境下委托股份证明协议的安全共识方法 |
CN113034144A (zh) * | 2021-05-20 | 2021-06-25 | 北京百度网讯科技有限公司 | 区块链社区治理的方法、装置、设备和存储介质 |
KR102348072B1 (ko) | 2021-05-31 | 2022-01-06 | 조민규 | 양방향 소셜 블록체인 플랫폼 및 이를 이용한 소셜코인 발행 및 결제방법 |
CN113722545B (zh) * | 2021-06-30 | 2023-04-28 | 电子科技大学 | 一种许可链环境下的数据编校方法 |
CN113206893B (zh) * | 2021-07-05 | 2021-09-14 | 支付宝(杭州)信息技术有限公司 | 区块同步、节点加入区块链网络的方法 |
CN113596174B (zh) * | 2021-08-06 | 2022-02-18 | 环球数科集团有限公司 | 一种区块链节点部署与选举的装置 |
CN115834592B (zh) * | 2021-09-16 | 2024-09-06 | 中移系统集成有限公司 | 基于区块链的交易执行方法、装置、设备及存储介质 |
CN113962808B (zh) * | 2021-10-25 | 2022-09-13 | 杭州世平信息科技有限公司 | 一种数据安全治理方法和系统 |
CN113824737A (zh) * | 2021-11-22 | 2021-12-21 | 中国信息通信研究院 | 基于双通证的数据处理方法、装置、区块链和存储介质 |
CN114936092A (zh) * | 2022-05-30 | 2022-08-23 | 蚂蚁区块链科技(上海)有限公司 | 在区块链中执行交易的方法及区块链的主节点 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2851217A1 (en) | 2011-10-07 | 2013-04-11 | Appgree, S.A. | Method to know the reaction of a group respect to a set of elements and various applications of this model |
KR101628009B1 (ko) | 2015-04-20 | 2016-06-13 | 주식회사 코인플러그 | 당사자간 블록체인을 갖는 디지털 가상화폐의 거래시스템 |
CA3008705C (en) | 2015-12-14 | 2020-03-10 | Coinplug, Inc. | System for issuing public certificate on basis of block chain, and method for issuing public certificate on basis of block chain by using same |
KR101680260B1 (ko) | 2015-12-14 | 2016-11-29 | 주식회사 코인플러그 | 블록체인을 기반으로 하는 공인인증서 발급시스템과 이를 이용한 블록체인을 기반으로 하는 공인인증서 발급방법 |
KR101773074B1 (ko) | 2016-04-19 | 2017-08-31 | 주식회사 코인플러그 | 거래를 지원하기 위한 방법 및 이를 사용한 인증 지원 서버 |
KR101701131B1 (ko) | 2016-04-28 | 2017-02-13 | 주식회사 라피 | 이종간 블록체인 연결을 이용한 데이터 기록/검증 방법 및 시스템 |
KR101837169B1 (ko) | 2016-12-29 | 2018-03-09 | 주식회사 코인플러그 | 영지식 증명 알고리즘을 사용하여 머클 트리 구조의 블록체인 기반 비밀 전자 투표 서비스를 제공하기 위한 방법, 및 이를 이용한 투표 코인 발행 서버, 투표 토큰 분배 서버 및 투표 지원 서버 |
US20200334674A1 (en) * | 2019-04-19 | 2020-10-22 | Coinbase, Inc. | Systems and methods for blockchain administration |
-
2018
- 2018-06-05 KR KR1020180064925A patent/KR102250810B1/ko active IP Right Grant
- 2018-07-27 US US17/040,724 patent/US11636450B2/en active Active
-
2021
- 2021-01-05 KR KR1020210000951A patent/KR102240939B1/ko active IP Right Grant
Non-Patent Citations (1)
Title |
---|
YOSEMITE Public Blockchain. 2018 Yosemite X Inc. Feb. 2018. Bezalel Lim 외 7명.* |
Also Published As
Publication number | Publication date |
---|---|
US20210004777A1 (en) | 2021-01-07 |
KR102240939B1 (ko) | 2021-04-15 |
KR20210008111A (ko) | 2021-01-20 |
KR20190111707A (ko) | 2019-10-02 |
US11636450B2 (en) | 2023-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102240939B1 (ko) | 트랜잭션 증명 방식의 합의 알고리즘이 적용된 블록체인 시스템 및 그 방법 | |
Lashkari et al. | A comprehensive review of blockchain consensus mechanisms | |
US11995549B2 (en) | Architectures, systems and methods having segregated secure and public functions | |
Poon et al. | Plasma: Scalable autonomous smart contracts | |
US20200211011A1 (en) | Scalable Distributed Ledger System | |
US11381589B2 (en) | Systems and methods for distributed extended common vulnerabilities and exposures data management | |
Shibata | Proof-of-search: combining blockchain consensus formation with solving optimization problems | |
CN112534774A (zh) | 分散的防止欺诈的安全措施 | |
US20120317034A1 (en) | Transparent virtual currency using verifiable tokens | |
CN111967860B (zh) | 交易系统、方法以及交易系统中的节点 | |
US20190114707A1 (en) | Distribution of Blockchain Tokens | |
WO2019182202A1 (ko) | 트랜잭션 증명 방식의 합의 알고리즘이 적용된 블록체인 시스템 및 그 방법 | |
KR20200010905A (ko) | PoP 기반 블록체인에서의 동적 시간 지연 기반의 체인 연결 방법 및 시스템 | |
AU2022204696A1 (en) | Scalable distributed ledger system, transaction privacy and combating fraud, theft and loss | |
CN114945928A (zh) | 时间锁定的区块链事务和相关区块链技术 | |
KR102039570B1 (ko) | 암호화폐를 사용하지 않는 법정화폐용 p2p 장부 | |
Masseport et al. | Proof of usage: User-centric consensus for data provision and exchange | |
Leshno et al. | Can open decentralized ledgers be economically secure? | |
GB2599734A (en) | Blockchain | |
KR102582328B1 (ko) | 블록체인 기반의 게임 시스템 및 그 방법 | |
US20230147925A1 (en) | Protection against front-running attacks in a distributed ledger | |
US20230410102A1 (en) | Blockchain | |
Stevenson | Getting started with Bitcoins | |
Khalil et al. | Adaptive layer-two dispute periods in blockchains | |
Machacek | A Quantitative Comparison of Blockchain Algorithms in Peer-To-Peer Energy Auctions in the Smart Grid |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
X091 | Application refused [patent] | ||
AMND | Amendment | ||
N231 | Notification of change of applicant | ||
E90F | Notification of reason for final refusal | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
GRNT | Written decision to grant |