プルヌフオブステヌクむンサむドルック


むンタヌネット䞊には倚くの哲孊的な蚘事や議論がありたすが、メリットに぀いおは十分な情報がありたせん。 ある時点で、著者は、セキュリティのメカニズムず倚くの関連するニュアンスが、倚くの暗号通貚開発者によっおも完党に理解されおいないこずに気付きたした。 これは、暗号通貚の1぀にPoS実装を移怍する実際のケヌスで、サヌドパヌティの専門家が発芋した脆匱性に関する情報のさらなる公開で明らかになりたした。

この蚘事は、すでにPoSの脆匱性に遭遇したか、今埌登堎するすべおの開発者に圹立ちたす。


カットの䞋で恐ろしい。


歎史の粒


むンタヌネットでは、ピアコむンでのProof-of-StakePoSの起源は、2011幎のフォヌラムでの議論、その埌のNovaoinでの䜿甚、およびPIVXやその他のBitcoinフォヌクでのさらなる配垃埌に远跡されたす。 かなり原始的なPoSロゞックがkernel.h / kernel.cppにkernel.cppれ、さたざたなフランケンシュタむンモゞュヌルの圢でフォヌクスペヌスをさたよう。


PoSアルゎリズムはいく぀かの開発段階を経お、誰かがバヌゞョンを提䟛したす。 珟圚、PoSオプションは自然な理由で分割されおおり、DPosは登堎しおいたす。 最も高床な゜リュヌションの1぀は、むヌサリアムのCasperプロトコルです。


ブロックチェヌンにはブロックの生成が必芁であり、誰かが新しいブロックを䜜成する暩利を持っおいる必芁がありたす。 Gitバヌゞョン管理システムなどのブロックチェヌンでこれがあたり競争なく䜜者によっお行われおいる堎合、暗号通貚では、Proof-of-WorkPoWのフレヌムワヌクでブロックの報酬を埗るための激しい闘争がありたす-特定の目暙マむニング、マむニングによっお決定されたす。


PoSは、Proof-of-WorkPoWを眮き換えお、マむニングでのリ゜ヌスの浪費を防ぎたす。 代わりに、すべおの入力パラメヌタヌは、コむンホルダヌの既存の節玄に基づく䞀定の特性で厳密に定矩されたす。 したがっお、PoWは、コむンの䜜成者を最初に抵圓に入れお濃瞮するためのさたざたなオプションに頌らない堎合、PoSの開始点ずしお必芁です。


なんで


゚ネルギヌの節玄は、生産者ず消費者の枩宀効果ガスの排出を制限するのず同じくらい、開発者ずコむン保有者にずっお重芁です。 残酷な真実は異なりたす


  1. PoWベヌスのプロゞェクトは、いわゆる 「51の攻撃」攻撃者は倧きな力を掻甚し、䞊列チェヌンを䜜成しおから、異なるコむンの動き぀たり、2回の無駄で突然公開できたす。
  2. PoWマむナヌはコストをたかない、キャパシティビルディングに投資する必芁がありたす。これはプロゞェクトからの資本の盎接的な流出であり、
  3. 貯蓄の所有者は、自然のむンフレを芋るのではなく、自己調達資本によっお賌買力を維持したいず考えおいたす。

実䟋2018幎11月から12月に攻撃が詊みられたした。 その埌、12月から2月にかけお、ビデオカヌドでのマむニングで最も収益性の高いコむンずしお泚目が集たりたした。 レヌトは2+から0.5 USDに䜎䞋したした。 PoSに切り替えた埌、週に1米ドルに䞊昇し、投資の流入が増加したした。




技術的なポむント


泚意このセクションでは、Peercoin、PIVX、およびそれらの分岐にあるような「埓来の」PoSに぀いお説明しおいたす。


「ポむント」の集䞭化ずアカりンティングがないこずを理解する必芁がありたす。 このバヌゞョンでは、PoWず同じ運の原理が機胜したす。


1.甚語


甚語は比范的䞀般的ですが、異なる実装ではそのニュアンスは次のずおりです。



2.解剖孊


生成プロセス


  1. ステヌクむンプットの芁件を満たすすべおのUTXOを芋぀ける
  2. ステヌク修食子を芋぀けたす。
  3. ステヌク入力によるPoWタヌゲットの乗算
    • 実際、100䞇分の1-1 MH PoWハッシュレヌトが実隓的に1コむンに盞圓するのはこのためです。
  4. Stake Hash = H(Stake Modifier, Stake Block Time, UTXO output index, UTXO txid, Current Block Time)たす。
    • 可倉パラメヌタヌのみCurrent Block Time
  5. Stake Hash >= Stake Target堎合、蚱容範囲内でCurrent Block Timeを芋぀けようずしたす。
    • 実装に応じお、Stake Inputの量を掛けるず、Stake Targetがオヌバヌフロヌする可胜性を考慮する必芁がありたす。
  6. Coinbaseをtx [0]に、CoinStakeをtx [1]に配眮したす。
    • Coinbaseの受益者は、Stake Inputず同じスクリプトアドレスです。
  7. ブロックに眲名したす。

2.1。 ブロック時間


詐欺は時間の経過ずずもに䜕らかの利益をもたらすこずがわかりたす。 暙準的なコンセンサスでは、䞋限ず䞊限が制限されおいたす。


䞋䜍のブロックは、垞に最埌のNブロックのブロックの平均時間を蚭定したす。通垞は11を超えたす。これは、ノヌドの生成時の時間の䞍正確さの蚱容範囲です。


PoWの歎史的な䞊限は、2時の空を指で蚭定したした。 間隔を長くするず、耇雑さが枛り、ブランチの魅力が䜎䞋したす。したがっお、意味がありたせん。 しかし、PoSにずっおは理にかなっおいたす。


PIVXなどは、将来の時間を最倧3分に制限したす。 より厳しい制限を課す人もいたすが、これはナヌザヌに問題を匕き起こしたす。 䞀郚のPoS実装では、最小の珟圚のブロック時間間隔を1秒から15-16秒に倉曎するこずを決定したした。


2.2。 ステヌク修食子


ステヌク修食子は予枬を困難にし、チェヌンを先に構築する手段ずしお考えられおいたしたが、䜕かが間違っおいたした...


それを蚈算するためのさたざたなオプションがありたす挞進的に指定された時間間隔の終わりのブロックハッシュの最埌のビット、前のブロックからの[それほどではない]予枬倀など。 䞀郚の堎所では、健党なものよりもコヌドの難読化のように芋えたす。


オリゞナルは64間隔のギャップを取りたす。 このギャップは埐々に64の䞍均等な郚分に分割されたす。 境界線は分に䞞められたす。 境界では、既存のブロックが遞択され、それらから最埌の1ビットが取埗されたす。 そのため、Nonceに䌌た64ビットの数倀が刀明したした。


Peerconの間隔は20分ですが、PIVXのスタッフは、1分間隔を1分に䞞めお、医垫が泚文したものず刀断したした。


䞀般に、Blackcoin V2 +などの䞀郚の実装ではすべおが固定され、Stake Modifierはヘッドからカりントされたすが、Peercoin V03、PIVX、Blackcoin V1およびその他はStake Inputブロックからカりントされたす。 埌者はその意味をほが完党に砎壊したす。 倉数の呜名、さらなる倉容、および考え抜かれたコピヌアンドペヌストの平凡な問題のために混乱が起こったずいう仮定がありたす。 そしお、著者自身が十分に遅れお問題を発芋した䞀方で、圌の泚意はすべおDoSに察する保護に集䞭しおいたした。 捕たるな


2.3。 ブロック眲名


ブロックハッシュは䜜業の蚌明ずしお機胜しなくなり、誰でも眲名されたCoinStakeトランザクションを他の誰かのブロックから取埗できるため、ブロックがStakeの所有者によっお䜜成されたこずを確認する必芁がありたす。 したがっお、ヘッダヌはCoinStakeず同じ秘密キヌで眲名されたす。


2.4。 CoinBaseおよびCoinStake終了スクリプト


プラむバシヌを保護し、1぀のりォレット内の個々のアドレスをリンクしないようにするには、同じ出口スクリプト、たたは人々がりォレットアドレスを呌び出すのが必芁です。


2.5䜕ずどこ


CoinBaseずCoinStakeで金額を凊理する方法にはさたざたなバリ゚ヌションがありたす。 特定の堎合の論理ず動機


  1. 凊理゚ラヌによるナヌザヌ資金の損倱を最小限に抑えるために、金額は別々に保぀必芁がありたす。
  2. CoinBaseは100の確認を保持したすが、CoinStakeはすぐに䜿甚できたす。これはもちろん、二重に䜿甚されるリスクを残したす。
    • ブロックの深さにスナップするず、ステヌク入力ずしお䜿甚するための幎霢資栌にも矛盟したす。
  3. CoinBaseずCoinStakeは決しおmempoolに分類されるべきではなく、それらに基づくすべおのトランザクションはチェヌンの再構築䞭に削陀されるべきです。

3.ヘッダヌに察するブロックを完了したす


ネットワヌクぞの本栌的なノヌドの゚ントリは、同期から始たりたす。 ビットコむンでは、同期は䞻にブロックヘッダヌに基づいおいたす。 コンセンサスの予備怜蚌に十分な情報が含たれおいたす。 最初に、比范的小さなヘッダヌが取り出され、片偎ノヌドから最倧2000個のバッチでチェックされたす。 最初のテストが成功した堎合、接続されおいるすべおのノヌドからすべおのブロックが䞊行しおプルされたす。


フラッド保護は、ロヌカルノヌドが最もよく知られおいるヘッダヌを持っおいるものず比范し、ヘッダヌのチェヌン党䜓を芁求するずいう事実に基づいおいたす。 ダりンロヌド時に、ディスクスペヌスずコンピュヌティングの䜎コストによっおすべおがチェックされたす。 チェヌンは、個々のブロックの耇雑さの合蚈であるchainworkなどの特性に基づいお重みが比范されたす。 このような匷力な代替チェヌンを構築するには、非垞に倚くのリ゜ヌスを投資する必芁があり、攻撃は芋蟌みがありたせん。


PoSでは、このアプロヌチは機胜したせん。 ブロックを確認するには、少なくずもステヌクの最䜎幎霢たで完党な前のブロックを凊理する必芁がありたす。 著者によっお芋られた実装は、倉質し始めおいたせんでしたが、単にヘッダヌを扱うこずを拒吊したした。


したがっお、ヘッダヌに続くブロックの日和芋的䞊列ダりンロヌドを実装したした。これにより、すべおの接続を䜿甚するため、同期速床が倧幅に向䞊したす。 ピアが異なるチェヌン䞊にある堎合にのみ小さな遅延が発生したす。暙準スキヌムのようにわずかなタむムアりト埌に接続が切断されたす。 マむナスずしお、同期時に誀ったチェヌンを遞択する傟向。


ずころで、暙準のBitcoinクラむアントずそのフォヌクは、いく぀かがさたざたな理由で倱敗した堎合に、8の発信接続の最小暙準数を十分に長く獲埗しおいたす。 これは、非同期アりトバりンド接続によっお解決されたした。


4.フォヌク、スプリット、オヌファン


ビルディングブロックの競争では、1〜2リンクの代替チェヌンが比范的䞀般的です。 開発されたネットワヌクでのより長い分岐は、プログラミング゚ラヌたたはグロヌバルなむンタヌネットの切断によるコンセンサスの重倧な倱敗の間にのみ自然に発生したす。


分離しおも、通垞、トランザクション凊理の敎合性に察する脅嚁はありたせん。 ブロックをデタッチするず、すべおのトランザクションがmempoolに戻り、すでに他のブロックに含たれおいたす。 Mempoolは、トランザクションが䜜成された埌の䞀時的なリポゞトリです。 Mempool自䜓は、最近のバヌゞョンではディスクに保存されたす。 ブロックの報酬は砎壊されたす。 そのため、賞の最小確認数深さが蚭定されおいたす。


メむンネットワヌクぞの接続があるず仮定するず、ロヌカルネットワヌクセグメントは倖郚ずの接続を倱い、マむニングを続行したす。 そのような枝は通垞、その自然な匱さのために脅嚁をもたらしたせん。


PoWの䞻な51攻撃に぀いおは既に説明したした-非垞にリ゜ヌスを消費したすが、PoSの堎合は比范的手頃な䟡栌になりたす。 このため、チェヌンのさたざたなリンクから倚くのブランチを䜜成するこずが技術的に可胜になりたす。 叀兞的な解決策の1぀は、特定の深さ以䞋のフォヌクを犁止するこずです。


このような保護の䞻な問題は、隠者セグメントからのノヌドが、再起動埌に独立しおメむン回路に戻るこずができないこずです。


したがっお 、チェヌンのトップが非垞に若い堎合にのみ、特定の期間より叀いフォヌクを犁止するアプロヌチが実装されたした。


ブロックの目暙間隔が1分の堎合、叀いフォヌクの基準は1時間に遞択されたした。これはCoinBaseの確認の玄60に盞圓し、15分のクラりンの若さの基準は最倧統蚈ブロック遅延の3+倍です。


5.ハッシュのブロックず分割


PoWでは、ブロックハッシュはすべおのデヌタを完党にカバヌしたす。 たた、タヌゲットの確認にも䜿甚されたす。 PoSでは、ステヌクハッシュは別の倀です。 遞択の可胜性を陀倖する必芁がありたす。 これにより、䞻な脅嚁が開かれたす。これは、同じ偶発的なステヌクに基づいお無制限の数の異なるバヌゞョンのブロックを䜜成する機胜で、ネットワヌクたたはその個々のノヌドを簡単にフラッディングしお配眮できたす。


玠朎な防埡アプロヌチは、さらに深刻なスプリット脆匱性を匕き起こしたす。 さたざたなバリ゚ヌションのこれらのアプロヌチの1぀は、ステヌク入力の䜿甚を1回だけ蚱可するこずです。 単玔な攻撃は、異なるブロックを異なるノヌドに送信するこずです。これにより、すぐに゜フトスプリットが䜜成されたす。


DoS犁止でこれを悪化させるこずはさらに臎呜的です。DoS犁止は、チェヌンだけでなく、ネットワヌク自䜓を異なるセグメントに分割したす。


他の問題が発生したす-ドロップされたブロックからステヌクを䜿甚できない。


したがっお 、スロットル方匏が最も安党な゜リュヌションずしお遞択されたした-同じステヌクは1分に1回しか䜿甚できたせん。 ロゞックは単玔です攻撃は1時間の間隔でしか持続できたせん䞊蚘の叀いフォヌクを参照。そのため、60ブロックたでしかフラッディングできたせん。 最良の堎合、次のブロックで、ネットワヌクはすでに単䞀の回線に移動したす。 最悪の堎合、継続的な攻撃では、これは1時間で起こりたす。 最悪の堎合の確率-連続しおいく぀かのブロックを芋぀けるこずは、指数関数的に溶けおいたす。


それでも同じように、完党な同期の瞬間たで、ノヌドが䞭皋床のフラッドに察しお脆匱になるポむントがいく぀か残っおいたす。


6.最䜎幎霢


䞀郚の人にずっお、この制限は困惑しおいたすが、ネットワヌクの安定性にずっお非垞に重芁です。 このパラメヌタは、代替ネットワヌクの最倧長に盎接関連しおおり、ロヌカルノヌドは重倧な技術的歪みなしに確認できたす。


前述のように、ロヌカルノヌドは、ステヌク入力aがbの堎所を持っおいるこず、実際にUTXOであり、䜿甚されおいないこずを確認できるように、幎霢制限たでのすべおのブロックを凊理する必芁がありたす。


これがいわゆるの機胜を通しおのみ可胜であるこずを確認しおください。 CoinView、これは特定のブロックの時点でのコむンの動きの状態です-ロヌカルノヌドの理解におけるメむンチェヌンのトップ。


CoinViewによっお保存された時間間隔たたは特別な方法での代替回路の本栌的なテストの実装は、将来性がないようです。 これらの代替チェヌンの数は無限に倚くなりたす。


UTXOの幎霢制限のバヌが倧きすぎるず、コむンの䞀郚を䜿甚したり結合したりするナヌザヌに悪圱響を及がしたす。


ブロックの深さでこの境界を指定するず、適切なUTXOが存圚しないため、チェヌンが完党に停止するずいう仮想の膠着状態が発生する可胜性がありたす。 時間単䜍の堎合、少なくずもいく぀かの動きが発生したす。


したがっお 、他のネットワヌクでは、ブロックの深さではなく、絶察時間単䜍で1時間のバランスの取れた遞択が䜿甚されたす。


7.最小額のN UTXOたたは合蚈Nの1 UTXOよりも優れおいるものは䜕ですか


ここでの類掚はそれ自䜓を請う0.9の粟床を持぀1぀の銃たたは0.3の粟床を持぀3぀の銃が良いが、1/2 ^ 20のオヌダヌの確率で、そのような蚈算の結果は平準化されるように思われる。 小さなマップは、資栌の成熟床を混乱させたす。


倚くの小さな取匕がより倚くのブロックを芋぀けるずいう珟圚の信念は、おそらく重量を決定するためにステヌクむンプットの幎霢も考慮に入れられたずきにさかのがりたす。 圓時、叀い小さなトランザクションは本圓に倚くの意味を成しおいたした。


珟時点では、実際の実隓ず理論蚈算に基づいお、倧芏暡なUTXOにグルヌプ化されたグルヌプはより倚くのブロックをもたらしたす。 さらに、UTXOが少ないほど、CPUの䜜業が少なくなりたす。 誰かが反察を䞻匵したす。


だから自分で考えおください。


8.ブロックを前進させる


PoSマむナヌは、圓然、ブロック時間を少し䞊回りたす。 これは、ネットワヌクの耇雑さに悪圱響を及がしたす。 暙準のビットコむンコヌドは、指定された時間に関係なく、受信した最初のブロックを遞択したす。 ほずんどのPoS実装は同じこずを行いたす。


そのため、 PoSマむナヌのロゞックは、珟圚のブロックの時間が進んだ堎合にブロックの平均時間から遞択を開始するように倉曎されたした。 同時に、ノヌドは順序を比范する前に、指定されたブロックの時間を比范したす。 PoSマむナヌは、フォヌクを生成しおいるこずが確認された堎合でも、芋぀かったブロックをネットワヌクに送信したす。


このようにしお、ネットワヌクは、DoS保護のために同じStake Modifierを䜿甚しお、次の60秒間にStake Inputを䜿甚できない仮想送信枈みブロックからも保護されたす。 時間をかけお䞍正行為をした堎合の二重眰のように。


9.小さなチェックリスト


  1. ステヌク入力は、分岐点の前に有効なUTXOである必芁がありたす。
    • メむンチェヌンの堎合、分岐点はチップです。
    • 代替回路の堎合-分岐点の埌のUTXOは、切り替え時に自己DoSに぀ながる可胜性がありたす。
    • UTXOを単独でmempoolに入れないでください。
  2. メむン回路を再構築するずき、mempoolでCoinStakeを受け入れないでください。
    • CoinBaseでも同じこずが起こりたす。
    • これにより、トランザクションチェヌンが砎壊される可胜性がありたす。
  3. トップがかなり生きおいる堎合、叀いブロックからのフォヌクを受け入れないでください。
  4. ステヌク入力の絶察時間単䜍の幎霢芁件は、安定性ずセキュリティのために必芁です。
  5. ステヌクハッシュはブロック時間からのみ倉曎する必芁がありたす。
  6. Stake Modifierは、Stake Inputブロックにバむンドしないでください。
  7. ブロックヘッダヌの操䜜には、ネットワヌク䞊およびむンデックスの再䜜成䞭に特別な凊理が必芁です。
  8. CoinStakeはロヌカルりォレットに蚘録されおおり、orfanを正しく衚瀺するにはいく぀かの倉曎が必芁です。
  9. PoSマむナヌはおそらく十分な劚害を持ち、ファむルでファむナラむズする必芁がありたす。
  10. むンデックスの再䜜成には改善が必芁です。 ヘッダヌず同様に機胜したす。最初にブロックのむンデックスのみをロヌドしおチェックし、次にブロックの凊理のみを詊みたす。
  11. PoSぞの移行がハヌドコヌドされおおらず、sporkを介しおいる堎合は、起動時にキャッチする必芁がありたす。 胞子は保存されたせん。
  12. DashずBitcoinのチェックポむントはほずんど停物であり、非垞に深刻な改善が必芁です。
  13. Dashフォヌクがバヌゞョン0.13たでの堎合、シンプルナヌザヌモヌドでのマスタヌノヌドデヌタの凊理に問題がありたす。
    • クラむアントを頻繁に再起動するず、ネットワヌクビュヌがゆがみたす。
    • グラフィカルモヌドで実行しおいる堎合は、キャッシュを無芖する方が適切です。
  14. ブロック時間を考慮しお、最適なブロックの遞択を倉曎したす。
  15. Bitcoin .
  16. mempool CoinStake .





. mainnet PoW , , PoS, . PoS Ethereum Casper'.


GPU - — ethminer'. 150-200 GH (ethash). - PoS .


PoS PIVX 2.x " ". - PIVX , , . , PIVX 2.x . Dash 0.12 Bitcoin'.


, PoS . , , .


準備䜜業


ドキュメント


. . whitepaper -.



PoS PIVX Bitcoin/Dash. CoinStake . PoS .


, Stake Modifier Stake Hash , Stake Input . - , - PIVX .



— . :


  1. .
  2. .
  3. — .. , .
  4. , - , .

. spork' , .


, . spork' .


PoS


, - . spork, , .



, .. . , .



testnet, .


testnet 3 1 mainnet, .



PoW , PoS - , 1e6 PoW.


. mainnet Stake Input.


.


PoS


X spork PoS . - , .


. , . .


, , .


軟膏で飛ぶ


Stake Modifier . . PIVX - 
 , , Ethereum, .




おわりに


䞊蚘では、オヌプン゜ヌスの䞖界には商業的䟡倀はなく、時代遅れのテクノロゞヌに基づく䞀時的な゜リュヌションでもありたす。ただし、他の倚くのプロゞェクトが最近PoS実装に察する攻撃に遭遇しおおり、この蚘事がホストのセキュリティの匷化に圹立぀こずが期埅されおいたす。著者は最初は確かに資料が䞍足しおいた。


泚この蚘事では、誀った広告料金を回避するために、名前ずプロゞェクトリ゜ヌスぞの盎接リンクを削陀する予定です。


コヌドベヌス党䜓をそのたたのGitHub Mirror



Source: https://habr.com/ru/post/J442862/


All Articles