Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Extension Block
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
shigeyuki azuchi
January 21, 2020
Technology
0
39
Extension Block
GBEC動画解説コンテンツのスライドです。
https://goblockchain.network/2020/01/extension-block/
shigeyuki azuchi
January 21, 2020
Tweet
Share
More Decks by shigeyuki azuchi
See All by shigeyuki azuchi
Shorのアルゴリズム
azuchi
0
21
DahLIAS: Discrete Logarithm-Based Interactive Aggregate Signatures
azuchi
0
17
Fiat-Shamir変換と注意点
azuchi
0
120
AssumeUTXOを利用したブロックチェーンの同期
azuchi
0
23
BIP-374 離散対数の等価性証明
azuchi
0
43
BIP-353 DNS Payment Instructions
azuchi
0
62
OP_CAT and Schnorr Trick
azuchi
0
59
Pay to Anchorと1P1Cリレー
azuchi
0
51
プロアクティブ秘密分散法
azuchi
0
77
Other Decks in Technology
See All in Technology
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.3k
プロダクト成長を支える開発基盤とスケールに伴う課題
yuu26
4
1.3k
OCI Database Management サービス詳細
oracle4engineer
PRO
1
7.4k
レガシー共有バッチ基盤への挑戦 - SREドリブンなリアーキテクチャリングの取り組み
tatsukoni
0
210
こんなところでも(地味に)活躍するImage Modeさんを知ってるかい?- Image Mode for OpenShift -
tsukaman
0
120
Context Engineeringが企業で不可欠になる理由
hirosatogamo
PRO
3
520
Cosmos World Foundation Model Platform for Physical AI
takmin
0
670
クレジットカード決済基盤を支えるSRE - 厳格な監査とSRE運用の両立 (SRE Kaigi 2026)
capytan
6
2.7k
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
200
What happened to RubyGems and what can we learn?
mikemcquaid
0
250
GSIが複数キー対応したことで、俺達はいったい何が嬉しいのか?
smt7174
3
150
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
13k
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
170
The Limits of Empathy - UXLibs8
cassininazir
1
210
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
0
310
Exploring anti-patterns in Rails
aemeredith
2
250
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
For a Future-Friendly Web
brad_frost
182
10k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
170
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
110
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Transcript
【Bitcoin】Extension Block
1. ブロックチェーンの機能追加の仕組み 2. Soft-forkでブロックサイズを増やす Auxiliary Blockの提案 3. Extension Blockの仕組み 4.
Litecoinで提案されている Extension Blockの導入 1 今日話すこと Extension Block
ブロックチェーンのコンセンサスルールに影響する変更を加える際の方法 • Soft-fork 既存のルールをより厳しくする際に使用するアップグレード方法で、 アップグレードしていない旧ノードもそのまま動作する。 ◦ ブロックサイズの縮小:32MB → 1MB
◦ OP_NOPに検証ルールを追加(OP_CLTV, OP_CSV) ◦ 新しいルールをサポートするsegwit version, programを追加 • Hard-fork(Network Upgrade) 既存のルールを易しくする際に使用するアップグレード方法で、 全ノードのアップグレードが必要。 ◦ ブロックサイズの拡大: 1MB → 2MB ◦ コンセンサスアルゴリズムの変更PoW→PoS 2 ブロックチェーンの機能追加の仕組み
3 Soft-forkでブロックサイズを拡大? 2013年にJahnson Lauが提案したSoft-forkでブロックサイズを拡大する方法。 Block Block Block Block Auxiliary Block
Auxiliary Block Auxiliary Block Auxiliary Block Block Auxiliary Block Auxiliary Blockでもメインチェーンと同様Bitcoinの送金ができる。 ① <serialized script x> OP_AUX という scriptPubkey宛にコインを送金する。 Tx ② 対応するAuxiliary BlockのコインベースTxに 同量のコインを持つUTXOが作られる。 UTXO: <serialized script xを展開したもの> コインがメインBlockからAuxiliary Blockに移動 Coinbase Tx コインがAuxiliary BlockからメインBlockに移動 ④ コインを <serialized script y> OP_AUX OP_RETURN 宛に送金する。 Tx ⑤ 対応するメインBlockで未使用のOP_AUXのUTXOを選択 し、ロックされているコインを同量、 <serialized script yを展開したもの> 宛に送金する。 ※ OP_RETURN によりAuxiliary Block 上の コインは消滅する。 ③ Auxiliary Blockの全Txのマークルルートが メインBlockのコインベースTxに記録される。
4 新旧ノードの振る舞い Block Block Block Block Auxiliary Block Auxiliary Block
Auxiliary Block Auxiliary Block Block Auxiliary Block Auxiliary Blockはどんなブロックサイズでもよく、コンセンサスルールも自由に設計できる。 ① <serialized script x> OP_AUX という scriptPubkey宛にコインを送金する。 Tx Coinbase Tx ③ コインを <serialized script y> OP_AUX OP_RETURN 宛に送金する。 Tx 新ノード 旧ノード 旧ノードから見ると OP_AUX = OP_NOPであるため、 このUTXOは誰もが使用可能なUTXOと認識する。 つまり、そのまま動作可能。 ※ 但し使おうとしても新ノードによるマイニングにより実際は使えない。 旧ノードはAuxiliary Blockについては関知しない。 新ノードは、以下の検証を行う。 • メインBlock<->Auxiliary間のコインの移動が正しく行 われているか • Auxiliary Blockのトランザクションが 新しいルールの下、有効か
5 Extension Blockの仕組み • 既存のメインBlockと1対1で対応するExtension Blockを用意する。 コインをメインBlockからExtension Blockへ移動させることで、Extension Block上では メインBlockのコンセンサスに縛られない
新しいルールの下で取引が可能になる。 ◦ Peg-in:メインBlockのコインをあるルールの下、ロックすることで メインBlockのコインをExtension Blockに移動する。 ◦ Peg-out:Extension Blockのコインをあるルールの下、 消滅させることでコインをメインBlockに戻す。 • 旧ノードはそのまま動作するため、従来ハードフォークが必要だった変更も ソフトフォークでの導入が可能になる。
6 Litecoinで提案されているExtension Block LitecoinにExtension Blockの導入を提案するLIP-0002 https://github.com/litecoin-project/lips/blob/master/lip-0002.mediawiki Block Block
Block Block Extension Block Extension Block Extension Block Extension Block Block Extension Block ① 新しいwitness program <ver> <commitment> 宛にコインを 送金してメインBlockのコインをロックする Peg-in Txを作成する。 Peg-in Tx ② 対応するEBのコインベースTxに 同量のコインを持つ UTXOが作られる。 UTXOのアンロック条件は <commitment>と対応する。 Coinbase Tx ③ コインをLitecoinのアドレスへのコミットメントの宛に 送金するPeg-out Txを作成する。 Peg-out Tx ExtAddrのscriptPubkeyは↓ ExtVer <eb_commitment> eb_commitmentは対応するEBのコミットメントで、 MimblewimbleのEBの場合は、 • EB内の全Txのトランザクションカーネル • EB内のUTXOセット のデータからコミットメントが作られる。 1つのIntegration Txにつき1つのExtAddrアウトプットが 作られ、そのブロック時点 EB側のコインの総量がロックされる。 ④ マイナーはメイン Block内のPeg-in Txを収集し、 EB内のPeg-out Txを収集し、Integration Txを 作成し、メインBlockの最後に配置する。 Integration Tx In 前のBlockのExtAddr UTXO Peg-in UTXO A Peg-in UTXO B Out ExtAddr UTXO Peg-Out UTXO Ⅰ Peg-Out UTXO Ⅱ
7 まとめ • Extension BlockはメインチェーンのBlockと1対1で対応するブロック ◦ EB側のブロックにコインを移動し、EB内では任意の コンセンサスルールを実行する拡張方法の1つ。 今までHFを必要としていた変更もSFで可能になる。 •
コインの移動の表現がサイドチェーンに似ているが、 ◦ コインの移動やEBのコンセンサスもメインチェーンの アップグレード済みフルノードにより検証される。 ◦ EB作成の手数料はメインBlockのコインとして徴収できる。 ◦ メインBlock、EBの両方がフルノードによって検証されるため、 フルノードの検証コストは上がる。 ◦ EBにはマイニング報酬はなく手数料報酬のみである。 ▪ メインBlockのTx手数料とEBのTx手数料のレートは異なるかもしれない。