この文書はコンピューター工学知識なしでも理解できます。
Consensus Algorithm
Blockchainはそれぞれの目的によって、Consensus Algorithmと呼ぶRuleを持ちます。
- どんなMinerがBlockを作るか。
- どんなBlockがUnique ChainのBlockで選ばれるか。
- どんなTransactionを捨てて、どんなTransactionを残るか。
- どんなNodeがLeaderに慣れるか。
Consensus Algorithmは必ず悪義的攻撃者から守る仕様設計が要求されます。
- 同じMinerが続きBlockを作るのができないように。
- 信頼できるMinerを選ぶように。
広がっているConsensus Algorithmは大別して二つで分割されます。
- Bitcoinから始まったProof Of系
- Practical Byzantine Fault Tolerance (PBFT)系
Proof Of
Public ChainやConsortium Chainで使用されて、BitcoinのProof of Workが一番有名です。
このAlgorithmを使うBlockchainのMinerたちは競争関係になります。
Proof Of Work (PoW)
誰でもMinerがなって、Blockを生産するのができます。
その代わり、Blockを作る為十分なComputing Powerを支払った事を証明しなければなりません。 特定な難易度をフォロワーするHashを計算する仕事で証明できます。故、PoWを使っているケースはHash Rateが大切な数値になっています。
- 大きなComputing Powerを支払う為、続きながらBlockを作ることが難しいなります。
- 他の資格が要求されないことで、誰でもMinerが成れます。
- Hash計算はComputing Powerの無駄使いを起こして、Miner互い競争が酷くなるほどこの費用は増えます。
Proof Of Stake (PoS)
Blockchainに十分な資産をStake(預け入れ)することでMinerに成れます。
BlockchainとCrypto Currencyは結局ユーザー互い信頼からその価値が算定されますから、 大きな資産を持ちユーザーは、自分の資産の価値を作るこのシステムを壊す選択をしないとユーザーたちが思うことで成立します。
- 他のConsensusと連係されPoS Miner互いの優先順位を決めます。
- PoSはMinerの資格を押さえて、競争を減らす効果が有ります。
- 沢山の資産を扱っているExchange(交易)の存在はPoSにリスクです。Exchangeユーザーは希に関係なしで、Exchangeへ権利を譲る状態になります。
Delegated Proof of Stake (DPoS)
Blockchainに十分な資産をStake(預け入れ)することでMinerに成れますが、他のユーザーから権利を預かる(委任)のができます。
- PoSのプラスマイナスを引き受けます。
- StakeをDelegate(委任)する技能で、十分な委任を貰うのができるならば、PoSに比べて安い費用でMinerに成れます。
- もっと沢山のDelegated Stakeを預かるため、Minerたちはポピュリズム公約を話す可能性が有ります。
Proof Of Authority (PoA)
権限持ちNodeのみ、Minerに成れます。
このケースは、Blockchainを信頼しなくて、Blockchain運営チームを信頼する事になります。
単に、運営チームがデータ変造を決意することは全てのユーザーがデータ変造に同義するよりかなり易い仕事です。
Practical Byzantine Fault Tolerance (PBFT)
Consortium ChainやPrivate Chainで広がっている、Byzantine Generals Problemを解決する伝統的方法です。
このAlgorithmを使用するBlockchainのMinerたちは協力関係で、この方法はBlockchainの運営主体が明確なケースに有利します。
- 一般ユーザーがMiner運営できない意味で、運営主体を信頼する意味になります。
- Public Blockchainように大きなスケールのネットワークを維持する必要が有りません。
- 小さいネットワークではブロック伝播が十分速いから,ブロック生成間を短いに設定できます。
Proof Ofと同じ、PBFTも色んな派生が有りますが、根本的な方法は違いません。
- 3N + 1 ルールをフォロワーするMiner(ProducerやValidator)で運営します。普通、21が使用されます。
- 3N + 1はせめてそのNode数が有りないとN NodeほどFaultを許容できない意味です。
- 例) 20(3N+2)はNが6で、20 - 6 = 14ですからミニマム議決要求数は14です。
- 例) 21(3N+0)はNが6で、21 - 6 = 15ですからミニマム議決要求数は15です。
- 例) 22(3N+1)はNが7で、22 - 7 = 15ですからミニマム議決要求数は15です。
Nodeは各RoundでLeaderを選出し、選ばれたLeaderはBlockを生産して、他のNodeは生産されたBlockを検証します。
ただ、このよう合意過程が複雑すぎますから、Leader選出代わりに次のBlock生産を通して前のBlockをConfirmすることで合議を代替することもあります。
例えば,
- Miner1がBlock Aを作った後、Miner2がその後を繋ぐBlock Bを作っていますが, Miner3がBlock Bを無視してBlock B'を作ります。
- この場合、Miner3はMiner2が作ったBlock Bに同義しなかったになります。
- 後、Miner4はBlock BやB'を選択することも、他のB''を作ることもできます。
Reference
- この文書は韓国語文書から翻訳されています。韓国語文書が原文になります。