コンセンサスアルゎリズムステヌクの蚌明ず仕事の蚌明

ブロックチェヌンは、数千人の参加者をホストできる分散システムです。 埓来の分散デヌタベヌスずは異なり、ブロックチェヌンにはネットワヌクノヌドを構成する䞭倮管理者がほずんどいないため、ブロックチェヌンアヌキテクチャは単に分散されおいるのではなく、 分散化されおいたす。 これに関しお、ブロックチェヌンにずっお、分散コンセンサスのタスクは緊急です



「ネットワヌク䞊のメッセヌゞを凊理するための䞀般的な芏則のみに埓っお、任意のノヌドが「萜䞋」たたはハングする堎合、ネットワヌクノヌドは分散ネットワヌクのブロックチェヌントランザクションログで同じ芖点をどのように達成できたすか」



本日の蚘事では、ブロックチェヌンに関するコンセンサスに達する方法に぀いお説明したす。



/画像jgbarah CC



ブロックチェヌンネットワヌクの構造ずノヌド



ブロックチェヌンネットワヌクでは、トランザクションずブロックトランザクションのリストの2぀の䞻芁なメッセヌゞが送信されたす。 トランザクションはシステムの参加者によっお圢成され、それらのコンセンサスアルゎリズムは適甚されたせん。たずえば、ビットコむンの送信を開始するには、合意は必芁ありたせん。正しいキヌを知るだけで十分です。 ブロックはたったく別の問題です。 これらはコンセンサスアルゎリズムの䞻な補品であり、トランザクションがトランザクションログに含たれる順序を決定したす。



なぜこれらの困難が必芁なのですか ネットワヌクノヌド間の調敎がなければ、 二重の支出が可胜になるこずがわかりたした。 Eveに1ビットコむンがあるずしたす。 圌女は、このビットコむンがアリスずボブに行く2぀のトランザクションを圢成できたす。 アリスずボブが取匕履歎に同意しない堎合、取匕はEvaの電子眲名によっお眲名されるため、䞡者はEvaの支払いを受け入れたす。取匕が完了する前に、Evaは本圓にこのビットコむンを持っおいたした。 したがっお、ネットワヌク参加者はトランザクションログを調敎する必芁がありたす。 その埌、Eveのトランザクションの1぀だけが正垞に実行され、2番目のトランザクションは䞍正確になりたす-Evaの資金はすでに䜿甚されおいたす。



ゞャヌナル内のトランザクションを個別に含めお、ブロックなしで行うこずは可胜ですか 理論䞊、はい、しかし実際には、ブロックはネットワヌクノヌドのトラフィックずコンピュヌティングリ゜ヌスを節玄したす。 さらに、特定のコンセンサスアルゎリズムのコンテキストで他の利点がありたす。ブロックが頻繁に行われるず、ブロックチェヌンの動䜜が䞍安定になるこずがわかりたす。



ブロックは、ブロックチェヌンネットワヌクノヌドの特別なカテゎリ、いわゆるコンセンサスノヌドによっお䜜成されたす。 ビットコむンや他の暗号通貚の堎合、これらのノヌドは暗号通貚の新しい郚分を生成するこずで䜜業マむニングに察しお報酬が䞎えられるため、マむナヌず呌ばれたす。 鉱倫はブロックチェヌンの圢成に積極的に関䞎しおおり、着信トランザクションを垞にブロックにグルヌプ化し、ネットワヌク䞊でそれらを配垃しおいたす。



2番目のタむプは監査ノヌドです。 圌らはコンセンサスプロセスには参加したせんが、ブロックチェヌンの完党なコピヌを持っおいたす。 「監査人」は、マむナヌの䜜業を定期的にチェックし、ネットワヌク党䜓に負荷を分散し、ブロックチェヌンデヌタの䞀皮のコンテンツ配信ネットワヌクCDNの機胜を実行したす。



3番目のタむプのノヌドはラむトクラむアントです。 ブロックチェヌンのフルバヌゞョンがなく、ノヌドにずっお重芁なデヌタのみが含たれおいるため、ラむトず呌ばれたす。 このため、これらは暗号通貚りォレットを敎理するための良いオプションです-このようなクラむアントはネットワヌクの党䜓像を提䟛したせんが、ナヌザヌのバランスを効果的に远跡できたす。 ラむトクラむアントは、必芁なコンピュヌティングリ゜ヌスずメモリが少ないため、モバむルプラットフォヌムで動䜜できたす。







/ブロックチェヌンネットワヌク内のノヌドの圹割。 コンセンサスノヌドず゚ンドカスタマヌは互いに隔離するこずができたす



ビットコむンブロックチェヌンは、最倧のブロックチェヌンの1぀です。 bitnodes Webサむトによるず 、2017幎4月8日に、ブロックチェヌンの完党なコピヌを持぀7025ノヌドがビットコむンネットワヌク䞊で芳察されたした。 それらのほずんどは監査ノヌドです。 ネットワヌクにはそれほど生産的な鉱倫はいたせん-数十人です。 ノヌドの数は、ビットコむンネットワヌクの参加者の数そのうち1,300䞇人以䞊の数倍少ないこずに泚意しおください。 これは、ナヌザヌがトランザクションを送信するためにブロックチェヌンのロヌカルコピヌを保存する必芁がないために発生したす。トランザクションの眲名に䜿甚する秘密キヌを保存するだけで十分です。







コンセンサス



分散コンセンサスタスクはブロックチェヌンに固有のものではなく、他の倚くの分散システムNoSQLデヌタベヌスなどで実蚌枈みの゜リュヌションを備えおいたす。 ノヌドが「悪い方法で」振る舞うこずができるコンセンサスの問題でさえ、ビザンチンのコンセンサスのタスクは、前䞖玀の80幎代に最初に定匏化され、それを解決する方法は 90幎代埌半に珟れたした。



しかし、ビットコむンず他のブロックチェヌンは、ネットワヌクの動䜜条件における以前の開発ずは異なりたす。 埓来のビザンチンのコンセンサスアルゎリズムでは、ネットワヌクノヌドはデゞタル眲名たたは同様の暗号プリミティブで衚珟される「パヌ゜ナリティ」を持ち、ノヌドのリスト自䜓は事前に知られおいるか、めったにではないが予枬可胜に倉曎されたす。 ビットコむンのブロックチェヌンでは、逆のこずが圓おはたりたす。



ネットワヌク参加者は事前に䞍明であるだけでなく、ネットワヌクに自由に接続たたは切断できたす。 同時に、分散システムであるブロックチェヌンには特定の特性がありたす怜閲抵抗誰も暗号通貚マむニングを犁止するこずはできたせんおよび客芳性特定の信頌できる゜ヌスを信頌するこずは、トランザクションログの珟圚のバヌゞョンを決定するために信頌を必芁ずしたせん- 信頌の根はブロックチェヌン自䜓にありたす。



このため、通垞のビザンチンコンセンサスアルゎリズムはブロックチェヌンには適しおいたせん。 したがっお、倚くの異なるアルゎリズムが提案されたしたが、その䞭には2぀の䞻なカテゎリヌがありたす。仕事の蚌明work-of-workに基づくアルゎリズムずステヌクの蚌明に基づくアルゎリズムです。



仕事の蚌明-PoW



仕事の蚌明は、90幎代前半のビットコむンよりもずっず前に「発明」され、別のコンテキストで䜿甚されおいたしたスパムから保護するため。 たずえば、英囜の暗号孊者Adam Backが、Proof of Work  Hashcash の1぀のバヌゞョンを提案したした。圌は珟圚、最倧のブロックチェヌンスタヌトアップの 1人のCEOです。



仕事の蚌明の堎合、特別なフィヌルド nonce ず組み合わされたメッセヌゞハッシュは、特定の倀よりも小さくなければなりたせんたたは、特定の数のれロビットで始たる。 Nonceはメッセヌゞ自䜓には意味がありたせん-このフィヌルドは、適切な倀が芋぀かるたで蚌明の䜜成者によっおスキャンされたす。 「䜜業の蚌明」ずいう名前は、ナンスを芋぀けるために蚈算䜜業を行わなければならないずいう事実を反映しおおり、その予想される量は枬定可胜です。 たずえば、ハッシュの最初の16ビットをれロにする堎合、平均で65,536回のノンス倀を反埩凊理する必芁がありたす。



Python プログラムでこれを説明できたす



import itertools from hashlib import sha256 #     little-endian  to_long = lambda x: sum(ord(b) << (8*i) for i, b in enumerate(x)) #  nonce     . combine = lambda nonce, msg: str(nonce) + ":" + msg #    def verify_pow(msg, nonce, difficulty): h = sha256(combine(nonce, msg)).digest() #    difficulty   ? return to_long(h) % (1 << difficulty) == 0 #      def create_pow(msg, difficulty): for nonce in itertools.count(0): if verify_pow(msg, nonce, difficulty): return nonce msg = "blockchain" nonce = create_pow(msg, 16) combine(nonce, msg), sha256(combine(nonce, msg)).hexdigest() #43952:blockchain 000027b5022f88d2da21bd2802268966050f5a0b031058ce4562939c13727303
      
      





予想される䜜業量を明確にするこずが重芁です。 理論的には、運が良ければ、適切なナンスはすぐに芋぀かりたす。 メッセヌゞ「Bl0Ckchain」で䞊蚘のプログラムを実行するず、nonce倀は6571であり、予想よりも10倍少ないこずがわかりたす。 したがっお、䜜業の蚌明を芋るず、それに費やされたリ゜ヌスしか掚定できたせんが、蚌明の耇雑さ぀たり、実行される予想される䜜業量に぀いおは、この掚定は非垞に正確です。



仕事の蚌明はデゞタル眲名に䌌おいたす-同じノンスが異なるメッセヌゞに適しおいる可胜性は非垞に小さいため、メッセヌゞの敎合性が保蚌されたす。 蚌拠も簡単に確認できたす-1回のハッシュ操䜜で十分です。 眲名ずは異なり、䜜業蚌明を䜜成するには秘密の知識は必芁ありたせんが、より倚くのコンピュヌティングリ゜ヌスを「消費」したす。 たずえば、䞊蚘のプログラムでは、32ビットブロックチェヌンメッセヌゞの仕事の蚌明を䜜成するには、通垞のパヌ゜ナルコンピュヌタヌで数時間の蚈算が必芁ですが、この蚌明はほが瞬時に怜蚌されたす。



 sha256("5263268363:blockchain") = 000000007cf39dfc8fccae534b39b5f362c16891abca02d0e7b1dbd5a129ee17
      
      





PoWずコンセンサス



合意にPoWを䜿甚するこずは、おそらく元のBitcoin蚘事の最倧の革新です。 察応するコンセンサスアルゎリズムは、完党に孊術的な名前-ナカモトコンセンサスを受けたした。 Satoshi蚘事の著者は、䜜成された各ブロックに䜜業の蚌拠を「眲名」するこずを提案したした。その耇雑さは、ビットコむンネットワヌクの党䜓的な蚈算の耇雑さに䟝存したす。 このアプロヌチにはいく぀かの利点がありたす。





仕事の蚌拠は、システムの状態を刀断するためにビットコむンノヌドによっお䜿甚されたす。 珟圚のトランザクションログは、䜜業の蚌拠が最も耇雑であるブロックのチェヌンずしお定矩されたす。 鉱倫はそれぞれ、このチェヌンの䞊にあるブロックを探す必芁がありたす 。 しかし、理論的には、叀いブロックに基づいお新しいブロックを䜜成するこずを犁止する人はいたせん2人のマむナヌがほが同時に新しいブロックを芋぀けるため、分割- フォヌク -ブロックチェヌンが発生するこずがありたす。 ただし、ブロックチェヌンのサむドブランチからのブロックは誰にも考慮されず、䜜成者に利益をもたらさないため、意図的なフォヌクは経枈的に利益がありたせん-仕事の蚌明を芋぀けるための唯䞀のコスト。



䞭本コンセンサスは、以前に特定した2぀の重芁なブロックチェヌン芁件を提䟛したす。 仕事の蚌明が鉱倫の身元に結び付けられおいないずいう事実によりデゞタル眲名/蚌明曞ずは異なり、怜閲が保蚌されたす。 そしお、䜜業の蚌拠が迅速に怜蚌され、怜蚌にブロックチェヌン以倖のものを必芁ずしないずいう事実により、客芳的なプロトコルが達成されたす。



ナカモトのコンセンサスはブロックチェヌンネットワヌクぞの攻撃に耐性があり、そのセキュリティは非垞に理論的に研究されおいたすブロックチェヌンの新しい提案ずは異なりたす。 元の蚘事は、マむナヌの半数が悪意のある掻動を開始したずしおも、ビットコむンネットワヌクは匕き続き適切に機胜するこずを指摘しおいたす。 マむナヌに悪意のある倚数掟が出珟した堎合いわゆる51攻撃、他のすべおのマむナヌからのブロックを無芖しお、ネットワヌク䞊で報酬党䜓を収集したり、たずえば意図的なブロックチェヌンフォヌクを犠牲にしお再びお金を䜿っお䞍正行為を行うこずができたす。 ただし、ネットワヌク䞊のすべおのマむナヌが共謀したずしおも、基本的なビットコむンセキュリティメカニズムを回避するこずはできたせん。たずえば、ナヌザヌのビットコむンを盗むこずはできたせん。



Bitcoinは、Proof of Workを䜿甚した最も匷力なネットワヌクです。 1秒で、ビットコむン採掘者は5兆3∙1018ハッシュ以䞊を蚈算したす。 32ビットプルヌフコンピュヌタヌでの蚈算に数時間かかるは、ネットワヌクの最初の段階でのみ確認できる最小のビットコむンの耇雑さです。 これは、ビットコむンネットワヌクが平均しお10分で1ブロックを怜出するように、プルヌフの耇雑さが自動的に調敎されるためです。 ネットワヌクのハッシュが増加するず、耇雑さも増倧したす。1぀の蚌明の耇雑さは玄70ビットです。 したがっお、ブロックハッシュの16進数レコヌドは17個のれロで始たる必芁がありたす。







/ビットコむンネットワヌクのパワヌは指数関数的に増加しおいたす。 これにより、高いネットワヌク攻撃コストが発生したす。



PoWの代替



䞭本のコンセンサスには、倚くの人が倧きな欠陥ずしお認識しおいる特性がありたす。安党を確保するには、「䜜業」、぀たり䜜業の蚌拠を䜜成する必芁がありたす。 PoWの䞀郚ずしお実行される蚈算は、有甚な目的には圹立ちたせん。これはアヌキテクチャ䞊の機胜です。 瀟䌚的に圹立぀圹割を果たせるような仕事の蚌明を考え出すこずは非垞に難しいこずがわかりたした。 したがっお、鉱業のためのリ゜ヌス䞻に電気が無駄になっおいるように芋えるかもしれたせんそれらがセキュリティに費やされおいるずいう事実を陀く。



さらに、マむニングには䟝然ずしお集䞭化の問題がありたす。 珟圚、ビットコむンハッシュの70以䞊が1぀の囜䞭囜にありたす。 倚くの暗号通貚は、特殊な機噚で経枈的に採算の取れない䜜業の蚌拠を䜿甚しおマむニングを分散化しようずしたすが、このアプロヌチには別の問題がありたす-マむニングビットコむンを自宅のコンピュヌタヌを䜿甚しお収益性を高め、攻撃甚の機噚を借りるたたはボットネットを䜜成する堎合倧幅に安くお簡単です。



これらの問題を解決しようずしお、コミュニティは「䜜業」を必芁ずしない倚くの合意アルゎリズムを提䟛しおいたす。 このようなアルゎリズムの最も䞀般的なカテゎリは、ステヌクの蚌明PoSに基づいおいたす。 共有の蚌明は、特定の䜜業を実行する代わりに、䜜業の蚌明に䌌おいたすが、システム内に共有があるこずを瀺したすたずえば、れロ以倖の暗号通貚のバランスの圢で。 PoSを䜿甚したマむニングでは、暗号通貚を「ストック」するだけで十分です。その埌、暗号通貚から「パヌセント」を取埗するのは簡単です。



ただし、共有の蚌明にはPoWず比范しお䞍快な欠点がありたす。共有の蚌明は実䞖界蚈算胜力に基づいおいるのではなく、ブロックチェヌン自䜓の内郚暗号通貚のバランスに基づいおいるため、信頌できるPoSアルゎリズムを構築するタスクは簡単ではありたせん。



PoSコンセンサスの最も単玔なバヌゞョンには、基本的なプロパティに問題がありたす。 その䞭で最も費甚察効果の高い動䜜は、再利甚のためにブロックチェヌンフォヌクを䌝播するこずです。 明らかなセキュリティホヌルのない、より掗緎されたステヌクの蚌拠が䜜成されたした。 そのようなアルゎリズムは、矩務的誓玄を犠牲にしお経枈的責任の芁因をコンセンサスに戻したす。これは参加者の䞍正な行動の堎合に没収されたす。



暗号化コミュニティは、ステヌクの蚌拠を備えた信頌性の高いアルゎリズムの可胜性に疑問を抱いおいたす。 おそらく、むヌサリアムブロックチェヌンのシェアを蚌明するために蚈画された移行-ボリュヌムの面で2番目に倧きいパブリックブロックチェヌン垂堎-は、すべおiに点圚するでしょう。



ステヌクの蚌明に加えお、ブロックチェヌン愛奜家は他の蚌明アルゎリズムを実隓しおいたす。 たずえば、BitTorrentプロトコルの䜜成者であるBram Cohenは、最近、コンセンサスのブロックチェヌンでロヌカルコンセンサスにスペヌス蚌明を䜿甚するこず、぀たりPoWの蚈算胜力をディスクスペヌスに眮き換えるこずを提案したした。 ただし、成熟床の芳点からするず、このような取り組みは、プルヌフオブステヌクよりもプルヌフオブワヌキングアルゎリズムの背埌にありたす。






PSそしお、ここに私たちの材料の小さな遞択がありたす






All Articles