WEMIX3.0
Search…
Consensus
합의 메커니즘(알고리즘)은 신뢰가 없는 주체들 간 합의에 도달하는 방법입니다. 블록체인 기술에서는 블록이 유효한지 아닌지에 대한 합의에 도달하는 데 사용됩니다. 블록체인 네트워크의 성능은 선택된 합의 메커니즘의 성능에 의존하며, 블록체인 애플리케이션의 사용성에 상당한 영향을 미칩니다. 이 문서에서 우리는 WEMIX가 어떻게 고성능 합의 프로세스를 구현했는지 살펴볼 것입니다.

RAFT는 선출된 리더에 의하여 클러스터의 모든 노드에 있는 데이터 저장소의 일관성을 보장하게 하는 합의 방식입니다. RAFT에 참여하는 노드들은 리더(Leader), 추종자(Follower) 중 하나이며, 리더 선출 중엔 누구나 후보자(Candidate)가 될 수 있습니다. 리더는 추종자들에게 동기화할 데이터를 생성해서 공유 해야 합니다. 리더는 보통 하트비트 메시지를 모든 추종자들에게 주기적으로 전송함으로써 Leader의 존재를 알립니다. 각 추종자들은 리더의 하트비트에 대해 타임아웃 값을 Random하게 선택하고, 타임아웃 기간 동안 하트비트를 수신하면 타임아웃을 다시 리셋합니다. 반면에 타임아웃 동안 하트비트를 받지 못할 경우, 추종자는 후보자로 상태를 바꾸고 리더 선출에 참여하게 됩니다. 여러 노드가 동시에 Leader 선출에 참여하면 충돌이 발생하기 때문에 타임아웃은 Random Backoff Logic에 따라 결정하게 됩니다.

WEMIX 블록체인은 고성능 실시간 서비스를 지향하는 퍼블릭 블록체인으로 블록생성은 사전에 허가받은 Authority Member들에 의해서만 가능합니다. 따라서 기본 합의 알고리즘은 PoA를 따릅니다. 하지만, 선출된 Authority의 오동작에 대한 물리적인 Penalty를 On-Chain 상에서 부여하기 위하여 WEMIX를 특정량 이상 Staking 하도록 강제하였습니다. 이러한 WEMIX 블록체인의 합의 방식을 SPoA라고 정의합니다.

WEMIX 블록체인의 합의알고리즘에 참여하는 Authority는 Bitcoin/Ethereum 등의 합의 알고리즘 PoW의 마이너와 같은 역할을 수행하는 Consortium을 의미합니다. WEMIX 블록체인에서 Authority에 포함되거나 삭제되는 과정은 기존 Authority Member들의 Voting에 의해서 결정됩니다. Authority Member가 되기 위한 조건 및 절차는 아래와 같습니다.
  1. 1.
    명확한 신원 확인
  2. 2.
    Off-line 상에서 법적 효율이 있는 계약을 WEMIX 파운데이션과 체결
  3. 3.
    기본 신상 정보의 공개
  4. 4.
    특정량의 WEMIX를 System Registry Contract에 등록된 Staking Contract에 전송
이후 Staking이 확인되면 기존 Authority Member중 누구라도 Member Add Proposal을 Governance Contract에 제안하고 기존 Authority Member들의 50% 이상의 찬성이 있으면 새로운 Authority Member로 등록되게 됩니다.
Authority는 사용자들이 생성한 거래 내역을 검증하여 검증이 통과된 거래들을 Mempool에 임시로 저장합니다. Authority Member는 Miner로 선출되었을때 이전 블록의 Hash 정보를 포함한 블록헤더를 생성합니다. 이 과정은 소프트웨어적으로 자동적으로 이루어져 Authority Member가 지속적으로 네트워크의 상태를 모니터링할 필요는 없습니다. 하지만 Authority Member는 블록을 생성하는 컴퓨터가 악의적으로 사용되지 않도록 방화벽 및 Account의 Private Key관리에 책임을 져야합니다.
On-Chain Governance Contract에서 처리 가능한 Voting은 현재 dApp으로 구현된 찬반투표로 추후 다양한 Voting을 지원할 예정입니다. Voting Weight은 Staking한 WEMIX의 양에 비례하며, 악의적인 행동이 감지되면 Authority의 Voting에 의해 당사자는 Authority 자격을 강제로 박탈당할 수 있으며 또한 Staking한 WEMIX가 몰수되 자연적으로 블록생성 보상을 받을수 없게 됩니다.
이와 같이 Staking과 Reward 시스템을 구성한 이유는 참여하는 모든 Authority Member들이 합의된 프로토콜에 의해 동작해야만 하는 당위성을 만들고 WEMIX 블록체인 네트워크의 건전성을 자율적으로 유지하게 하도록 하기위함 입니다.

Bitcoin의 PoW를 예로 들자면, 프로토콜에 의해 계산된 Difficulty를 만족하는 Block Header Hash를 생성한 마이너가 블록생성과 블록전파를 할 수 있도록 되어있습니다. 블록생성의 권한이 따로 존재하지 않기 때문에 상호 경쟁에 의해 블록을 생성하게 됩니다. 이러한 이유로 블록생성 경쟁을 위해 Resource가 낭비될 수 밖에 없으며 Difficulty 조건을 만족하는 Work를 증명해야만 하므로 블록생성 시간에 물리적인 제약(평균 비트코인 10분/ 이더리움 15초)을 주게됩니다. 결과적으로 PoW는 Scalability Trilemma를 가지고 있으며 이를 해결하기 위한 현실적인 방안으로 PoS의 도입이라든지 Sharding 등이 제안되어 연구되고 있으나 아직까지는 완전하게 분산화된 방식으로 PoS로 운영되는 퍼블릭 블록체인은 존재하지 않습니다.
WEMIX3.0은 PoW나 PoS같은 방식을 사용해서는 원하는 서비스를 퍼블릭 도메인에서 제공하는 것이 불가능하다고 판단하였습니다. 초기에는 DPoS, PoA, PBFT등의 합의 방식이 고려되었으나 WEMIX 블록체인은 가장 적합한 합의 알고리즘으로 DPoS와 PoA의 장점을 차용한 새로운 Consortium 합의 알고리즘인 SPoA를 고안하였습니다. SPoA는 기본적으로 투명한 신원 정보 및 법률 계약을 통하여 Authority를 구성하고 참여한 Authority Member들의 부적절한 행동을 막기위해 Staking 개념을 도입하고 있습니다.
WEMIX 블록체인은 블록을 생성하는 Miner를 선정하기 위하여 Miner Selection Algorithm으로 RAFT의 구현체인 etcd를 사용하고 있습니다. etcd는 분산 시스템에 필요한 중요한 정보를 보관하고 관리하는데 사용되는 오픈 소스 분산 key-value 저장소입니다. Miner는 lock이 가능한 token을 etcd 분산시스템에 저장하고 블록을 생성합니다. Round Robin같이 효율이 극대화된 Miner Selection을 사용하지 않는 이유는 분산 시스템에 존재하는 합의노드 네트워크의 분기를 막기 위해서입니다. etcd는 책임과 권한이 명확한 다수(40개 이상) 허가받은Authority들의 즉각적인 Finality를 제공해야하는 시스템에 효율적인 방법입니다.

기존 합의 알고리즘들은 블록을 생성한 주체가 블록보상(Block Reward)과 취합한 Fee를 모두 가져가는 구조를 가지고 있습니다. 이러한 이유로 DPoS와 PoA같이 경쟁을 기반으로 하지 않는 시스템에서는 블록생성의 권한을 공평하게 나누는것이 해결해야하는 가장 중요한 문제입니다. 하지만 이러한 제약은 고속으로 거래를 처리하여 블록을 생성해야하는 BP(Block Producer)들이 주고 받아야하는 메시지를 증가시키고 Traffic이 Queue에 쌓여 있는 상황에서 블록생성의 기회를 균일하게 나누기 위하여 자주 Leader를 변경하게되면 최상의 성능을 달성하지 못하는 문제를 발생시킵니다. 이러한 단점을 보완하기 위해서 SPoA는 Authority Member 중 누가 블록을 생성하더라도 Staking Contract에 보관되어있는 Authority Member들의 WEMIX Staking량에 비례하여 Reward가 주어질 수 있도록 설계되었습니다. 블록을 생성한 Authority Member는 Block Reward 분배내역을 Block Header에 포함시켜야하며 정해진 룰(i.e., Governance Contract에 기록되어 있는)에 어긋나면 해당 블록은 다른 Authority 들에 의해 전파되지 않습니다.
Block Reward (1+alpha WEMIX/block)
Minting
1
Collected Transaction Fees
Alpha(기반)
Minting Reward 분배
Collected Transaction Fee 분배
NCPs
40%
NCPs
0%
WEMIX Staker
10%
WEMIX Staker
0%
Eco-system
25%
Eco-system
0%
Maintenance
25%
Maintenance
100%
Reward를 받게 되는 Account(Member당 1개)는 Governance Contract에 최초 System Contract들을 배포한 Governance Coinbase Account를 제외하고 모두 Voting에 의해 등록되어 있으며, 블록을 생성하는 Authority Member는 해당 Account들의 Balance State를 Update하여 Patricia Trie의 Root Hash 값에 계산 결과를 반영시킵니다.
Authority Member를 포함하여 모든 Full Node는 전송받은 블록의 Header를 검증하여 Governance Contract에 기록되어 있는 Rule이 정확하게 반영되지 않는 것이 감지되면 해당 블록을 폐기하고 Member 중 한 명이 Voting을 통해서 해당 Member를 제거하고 Staking된 WEMIX를 몰수하는 작업을 수행할 수 있게 됩니다.

WEMIX 블록체인의 블록생성 간격은 Governance Contract에 설정되어 있습니다. Mempool에 거래의 존재 유무와 상관없이 Liveness와 Block Finality를 보장하기 위해 BP는 정해진 시간마다 (최초 설정값 1초) 블록을 생성하는 로직을 가지고 있습니다. 블록생성 간격은 Authority의 Voting에 의해 변경 가능한 변수값입니다.

Miner에 의해 생성된 블록이 P2P를 통하여 네트워크에 전파되면 이를 수신한 각각의 Full Node(Authority Member 포함)는 블록의 유효성을 스스로 검증하고 판단하여야 합니다. Miner가 아닌 Authority Node들은 Governance에 기록된 Member 중 Miner로 선정된 Member가 생성한 블록인지를 확인하고 Reward가 정상적으로 분배되어 있으며 거래 내역이 전체 시스템의 상태(State)에 반영되었다고 스스로 검증하여 판단되면 해당 블록을 이웃 노드들에게 전파하게 됩니다.
이를 전파받은 Non-Authority Full Node는 Header에 포함된 Member의 Signature가 올바른지를 확인하고 거래내역을 검증한후 블록에 기록된 거래가 Rule에 따라 생성되었다고 판단되면 블록을 Local Disk에 저장하고 이웃 노드에게 전파합니다.
전파되는 블록을 검증할때 위의 과정을 진행하기 전에 모든 Full Node가 먼저 검증해야하는 것이 두가지 있는데 이는 Miner_Limit과 Max_Consecutive_Blocks입니다.
Miner_Limit은 아래와 같이 정의되는데 RAFT에서 특정 Member가 Miner로 결정되면 블록을 생성할 수 있는 Epoch가 주어지는데, 이 Epoch가 연속으로 주어질 수 없도록 하는 것을 목적으로 합니다. 즉, 모든 블록은 아래의 Miner_Limt을 만족하는 경우에만 유효합니다.
Miner_Limit = floor(SIGNER_COUNT / 2) + 1 (Number of consecutive epochs out of which a miner may only occupy one)
Max_Consecutive_Blocks는 한 Epoch에서 동일 Miner가 최대 연속으로 생성할수있는 블록의 개수입니다. 이값은 만약 Member Node의 Hacking으로 네트워크가 분기될때 분기된 블록이 생성 수 있는 Height를 제한하기 위하여 도입된 변수입니다. WEMIX3.0에서 Max_Consecutive_Blocks는 1입니다.
위의 두가지 값은 Block Finality를 보장하기 위한 방법이며 악의적으로 행동하는 Authority Member가 네트워크에 줄 수 있는 피해를 최소화하기 위하여 고안되었습니다.
Copy link
On this page
RAFT(Reliable And Fault Tolerant) Algorithm
WEMIX3.0 합의 메커니즘
SPoA(Stake base Proof of Authority)
Authority
Miner Selection
Reward Distribution
Block Generation
Block Verification