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
Bitcoinのタイムロックの仕組み
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
shigeyuki azuchi
February 27, 2024
Technology
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Bitcoinのタイムロックの仕組み
GBECの解説動画のスライドです。
https://goblockchain.network/2024/02/timelock/
shigeyuki azuchi
February 27, 2024
More Decks by shigeyuki azuchi
See All by shigeyuki azuchi
Hyper Tree
azuchi
0
10
FORS
azuchi
0
24
クラスターmempool
azuchi
0
39
W-OTS+
azuchi
0
44
Shorのアルゴリズム
azuchi
0
66
DahLIAS: Discrete Logarithm-Based Interactive Aggregate Signatures
azuchi
0
52
Fiat-Shamir変換と注意点
azuchi
0
250
AssumeUTXOを利用したブロックチェーンの同期
azuchi
0
63
BIP-374 離散対数の等価性証明
azuchi
0
81
Other Decks in Technology
See All in Technology
暗号化?某ファイルストレージはどうなるの!? 3rd Partyとうまく付き合う秘密度ラベル設計
kasada
0
200
Kiro5兄弟のいまどきのセキュリティ基礎知識
kentapapa
0
280
わたしが知り合いゼロの勉強会に 行けるようになるまで
r5ni4
2
800
サーバー常駐型の 簡易障害調査AI エージェントを作ってみた話
masayoshi
0
170
RapidCopy2 Matrix I/Oエンジンによるファイルコピーソフトウェアの設計と実装
kengosawa2
1
420
マイナンバーカード本人確認の実装比較(OAuth/OIDC Numa (Immersion) Workshop 2026) / 20260825 numa-12
oidfj
PRO
0
280
1000⼈規模のClaude Enterprise運⽤を「Oktaのグループ」と「Slack」に集約する
sansantech
PRO
0
400
NANDでも描画したい!
nichica906
3
730
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
24k
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3.2k
tamachi.go 誕生の裏側
rymiyamoto
1
210
紙 to デジタル
ichien178
0
150
Featured
See All Featured
For a Future-Friendly Web
brad_frost
183
10k
Paper Plane (Part 1)
katiecoart
PRO
1
10k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
380
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
4
490
How to train your dragon (web standard)
notwaldorf
97
6.8k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
500
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
57k
Transcript
Bitcoinのタイムロックの仕組み
1 Bitcoinで利用可能なタイムロック • 絶対的時刻(ブロック高)指定によるタイムロック
• 相対的な時刻(ブロック高)指定によるタイムロック OP_CLTV UTXO OP_CSV UTXO タイムロックされたUTXOは、予め決められた時間になるまで使用できない。 タイムロックされたUTXOは、このUTXOのTxがブロックに格納された後、 予め定められた時間が経過するまで使用できない。
2 nLocktimeを使用したタイムロック Tx Version Inputs Outputs nLocktime 0 < nLocktime
< 0xffffffffの値が設定された場合、 その値になるまでTxをブロックに格納できない。 • 値が500,000,000未満であれば、ブロック高として解釈され • それ以上であれば、ブロック時間として解釈されれる • BIP-113(Medial Time Past)適用前は、ブロックのタイムスタンプ • 適用後は、Median Time Past: 直近11ブロックのタイムスタンプの中央値 ※ ブロックのタイムスタンプの順序を強制するコンセンサスルールはないため、 MTPによりマイナーが意図的にタイムスタンプを調整するのを防止 ※ 基本的には、ブロック高を採用することが多い
3 OP_CHECKLOCKTIMEVERIFY Tx Version Inputs Outputs nLocktime OP_CLTV UTXO nLocktime
の機能だけでは、UTXOをタイムロックできない (nLocktimeが設定されていないTxを作れば使えてしまうため) BIP-65:OP_CHECKLOCKTIMEVERIFY opcodeの導入 https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki OP_CLTV opcodeは、TxのnLocktimeが スクリプトスタックの<ロックタイム>の値以上であることを強制する。 (かつ、インプットのnSequence != 0xffffffff→ロックタイムの無効化設定) ※ 2015年にソフトフォークでBitcoinに導入される。 … <ロックタイム> OP_CHECKLOCKTIMEVERIFY … スクリプトインタプリターはTx内のデータしかチェックできないため、 OP_CLTVによるnLocktimeの設定値の制御+nLocktimeのルールの組み合わせにより コンセンサスレベルでのUTXOのタイムロックが機能する。
4 相対時間によるタイムロック Tx Version Inputs Outputs nLocktime TxIn OutPoint scriptSig
nSequence 相対的ロックタイムを組み込むためには、そのロックタイムの値を 設定可能なnLocktimeと同様のフィールドが必要 nSequenceは元々Txを置換する際に使用されていたフィールド BIP-68:Relative lock-time https://github.com/bitcoin/bips/blob/master/bip-0068.mediawiki このbitがセットされていれば時間ベース、 セットされてなければブロックベース Relative lock-timeの設定値 1年ちょっとまでのlock-timeが設定可能 • 時間ベースの場合は、設定値×512秒 • ブロックベースの場合は、ブロック数 残りの16bitは将来の拡張のため確保 Disable Flagがセットされていれば、 タイムロックは無効
5 OP_CHECKSEQUENCEVERIFY nSequence の機能だけでは、UTXOをタイムロックできないため、 OP_CLTVのように相対的なタイムロックを強制するopcodeが必要
BIP-112:OP_CHECKSEQUENCEVERIFY opcodeの導入 https://github.com/bitcoin/bips/blob/master/bip-0112.mediawiki OP_CSV opcodeは、インプットの nSequenceが スクリプトスタックの<ロックタイム>の値以上であることを強制する。 ※ 2016年にMTP、BIP-68と一緒にソフトフォークでBitcoinに導入される。 … <ロックタイム> OP_CHECKSEQUENCEVERIFY … Tx Version Inputs Outputs nLocktime TxIn OutPoint scriptSig nSequence OP_CSV UTXO スクリプトインタプリターはTx内のデータしかチェックできないため、 OP_CSV(BIP-112)+ BIP-68の組み合わせにより、 コンセンサスレベルでのUTXOのタイムロックが機能する。 この機能を有効にするために、 TxのVersionは2以上である必要がある。