Qaupot Blog
Software Engineering, Trip

この文書はコンピューター工学知識なしでも理解できます。

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

  • この文書は韓国語文書から翻訳されています。韓国語文書が原文になります。
이 블로그는 개인 블로그입니다. 게시글은 오류를 포함하고 있을 수 있지만, 저자는 오류를 해결하기 위해 노력하고 있습니다.
게시글에 별도의 고지가 없는 경우, 크리에이티브 커먼즈 저작자표시-비영리-변경금지 4.0 라이선스를 따릅니다.

This blog is personal blog. published posts may contain some errors, but author doing efforts to clear errors.
If post have not notice of license, it under creative commons Attribution-NonCommercial-NoDerivatives 4.0.