Upgrade to Pro — share decks privately, control downloads, hide ads and more …

フィー・スナイピングとその対策

 フィー・スナイピングとその対策

GBECの解説動画の資料です:
https://goblockchain.network/2021/08/fee-sniping/

shigeyuki azuchi

August 24, 2021
Tweet

More Decks by shigeyuki azuchi

Other Decks in Technology

Transcript

  1. 1 フィー・スナイピングとは?
 マイナーが意図的に過去のブロックをマイニングして、
 該当ブロックをマイニングした別のマイナーの手数料を奪うこと
 • 一見ムダにみえるような攻撃のように思えるけど? 
 ◦ ブロックをマイニングすると、マイナーは 6.25

    BTCの報酬(2021年7月現在)と 
 ブロック内のトランザクションの手数料を報酬として受け取る。 
 ◦ マイニング報酬は約4年に一度、半減する(半減期)。 
 ◦ 将来的に報酬で手数料の占める割合が増した場合、 
 過去のブロックのトランザクションが、現在mempoolにある 
 トランザクションよりも大幅に高い手数料を払っている場合、 
 過去ブロックを再マイニングするインセンティブが発生する。 

  2. 2 緩和策
 nLocktimeを利用したトランザクションの再配置の防止
 Tx
 Version
 Inputs
 Outputs
 nLocktime
 【nLocktimeの仕様】
 •

    インプットのnSequenceが最大値(0xffffffff)でない場合
 nLocktimeの制限が有効になる。
 • nLocktimeにはトランザクションをブロックに
 格納できる最小時間を設定する。
 最小時間より前のブロックには格納できない。
 ◦ nLocktime < 500,000,000の場合は、ブロック高として解釈 
 ◦ それ以上の場合は、UNIXタイムスタンプとして解釈 
 ウォレットがトランザクション作成時に現在のブロック高を設定することで、 
 フィースナイピングによりトランザクションを過去ブロックに 
 再配置できないようにする。

  3. 3 nSequenceの使用へ
 Tx
 Version
 Inputs
 Outputs
 nLocktime
 TxIn
 OutPoint
 scriptSig


    nSequence
 【nSequenceの仕様】
 • nLocktimeが絶対時間によるタイムロックの 
 仕組みなのに対し、nSequenceは相対時間による 
 タイムロックを提供する
 • OutPointで参照するUTXOが、ブロックに 
 格納されてから設定した期間、トランザクションを 
 ブロックに格納できなくなる。
 • nSequenceの下位16 bitでロック期間を設定 
 (ブロック高 or 時間:23bit めがタイプフラグ) 
 ウォレットがトランザクション作成時に、インプットが参照するUTXOのブロック高と 
 現在のブロック高の差分のブロック数をnSequenceに設定することで、 
 nLocktimeと同様の対策が可能。 
 nSequenceを利用する他のコントラクト・プロトコルとの違いをなくすことで、 
 プライバシーの向上を狙う。

  4. 4 宣伝
 ブロックチェーン技術概論 理論と実践(2021年、講談社)
 https://www.amazon.co.jp/dp/406524093X
 
 1. ブロックチェーン技術の原点 
 2. ブロックチェーンの概要

    
 3. スマートコントラクトと分散台帳 
 4. ブロックチェーンを構成する暗号技術の基礎 
 5. ビットコインのシステム構成と仕組み 
 6. ビットコインの仕組みの詳細 
 7. P2Pネットワーク
 8. さまざまなノード実装 
 9. トークンの表現と利用 
 10. ブロックチェーンのスケーラビリティ 
 11. 暗号技術とスマートコントラクト 
 12. ブロックチェーンと匿名化技術 
 13. ブロックチェーンを利用したシステム構成 
 14. ブロックチェーン特有のリスク 
 15. ブロックチェーンのビジネスへの導入