Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
BitVM
Search
shigeyuki azuchi
May 28, 2024
Technology
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
BitVM
GBECの解説動画のスライドです。
https://goblockchain.network/2024/05/bitvm/
shigeyuki azuchi
May 28, 2024
More Decks by shigeyuki azuchi
See All by shigeyuki azuchi
SLH-DSA (SPHINCS+)
azuchi
0
11
Hyper Tree
azuchi
0
18
FORS
azuchi
0
30
クラスターmempool
azuchi
0
43
W-OTS+
azuchi
0
49
Shorのアルゴリズム
azuchi
0
71
DahLIAS: Discrete Logarithm-Based Interactive Aggregate Signatures
azuchi
0
55
Fiat-Shamir変換と注意点
azuchi
0
260
AssumeUTXOを利用したブロックチェーンの同期
azuchi
0
69
Other Decks in Technology
See All in Technology
品質と信頼性を地続きにする
grimoh
1
780
2026-09-11 【Snowflake World Tour Tokyo 2026】Snowflakeを起点に、AI Agentが自律稼働し続ける未来へ / Driving AI Agents with Snowflake
civitaspo
0
700
Minecraft JavaのMODをSwiftで作る
1mash0
0
180
AIで社員の自主発信に広報目線を組み込む
_mossann_t
0
130
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
860
負債のメタファと2026年 / Debt Metaphor in Agentic Engineering Age 202609 Edition
twada
PRO
10
4.1k
AI 時代のスタートアップエコシステ厶から考究する技術的負債との向き合い方
m3m0r7
PRO
3
2.3k
AIエージェントの一手は 誰も見ていない - Falco拡張OSS「Prempti」とeBPFで サーバーレス実行基盤を二層防御する
keitah
0
210
作って終わりじゃないサーバーレス 〜9年運用する大規模EC物流API基盤の設計・運用のリアル〜
zozotech
PRO
0
160
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
2
950
AIエージェントを最高のパートナーに育てる方法|評価と判断軸を育てる5つのステップ
koichiaoki
1
150
リアーキテクチャ後の障害ゼロを目指したShadow Testingの取り組み
nihonbuson
PRO
1
160
Featured
See All Featured
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
330
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
760
A Modern Web Designer's Workflow
chriscoyier
699
190k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Side Projects
sachag
456
43k
The untapped power of vector embeddings
frankvandijk
2
1.9k
Designing Experiences People Love
moore
143
24k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Site-Speed That Sticks
csswizardry
13
1.5k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
530
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
580
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
520
Transcript
BitVM
1 BitVM 現状のBitcoinのコンセンサスルールで、 Bitcoin上で任意の計算の検証を可能にする https://bitvm.org/bitvm.pdf
2 任意のロジックを回路にコンパイル 【一般的なプログラム】 1. 高級言語を使ってコードを記述する 2. コンパイラが最終的に機械語(0 or 1)に変換 3.
専用回路(CPUなど)でそれが実行される あらゆる計算はなんらかの回路の形で表現できる BitVMではNANDゲートのみを使用↑ (NANDゲートの組み合わせで他の論理ゲートは構築可能) OR AND XOR NOR NAND
3 Bitcoin ScriptでNANDゲートを実現 Bitcoin Scriptの2つのopcodeを使えばNANDゲートを実現できる: • OP_BOOLAND スタックから2つの要素を取得して、両方とも非0であれば1を、 それ以外であれば0をスタックにプッシュする
• OP_NOT スタックから1つ要素を取得して、要素が0 or 1の場合それを反転して スタックにプッシュ 記述を簡素化するため↑の組み合わせをOP_NAND opcodeとする。
4 Bit Value Commitment NANDゲートの入力値、出力値に対するコミットメント OP_IF OP_HASH160 <hash1> OP_EUALVERIFY <1>
OP_ELSE OP_HASH160 <hash0> OP_EUALVERIFY <0> OP_ENDIF 入力値に対して0 or 1の値を出力するスクリプト • 2つのハッシュ値(hash0、hash1)を使ったハッシュロック • hash0のプリイメージが提供されると0が • hash1のプリイメージ提供されると1が出力される 記述を簡素化するためこの機能を OP_BITCOMMITMENT opocdeとする
入力A、B、出力YのNANDゲートのコミットメント 各A, B, Yのhash0, hash1のプリイメージが提供されると
スクリプトにより、 A NAND B == Y が評価される。これが成立する場合のみアンロック可能 5 Logic Gate Commitment Bit Value Commitmentを組み合わせたゲートへのコミットメント # 出力Yの提供 <Yのhash0 or hash1のプリイメージ> OP_BITCOMMITMENT OP_TOALTSTACK # 出力値をアルトスタックに移動 # 入力Bの提供 <Bのhash0 or hash1のプリイメージ> OP_BITCOMMITMENT OP_TOALTSTACK # 入力値となる結果をアルトスタックに移動 # 入力Aの提供 <Aのhash0 or hash1のプリイメージ> OP_BITCOMMITMENT # 入力Bの値をメインスタックに移動 OP_FROMALTSTACK OP_NAND # A NAND Bの結果がスタックにプッシュされる # アルトスタックからYを読み込み OP_FROMALTSTACK # A NAND B = Yかどうかチェックする OP_EQUALVERIFY
Logic Gate Commitmentを組み合わせると任意の回路を構成できる
例:4つの入力(A, B, C, D)と8つのゲートを持つ回路 ※ ただし、任意の計算をする場合、数十億個の巨大な回路になる 6 Binary Circuit Commitment
7 Taptreeへのエンコード 回路を構成したら、回路内の 各Logic Gate Commitmentをリーフノードとした Taptreeを構成する
各ゲートに対する入力値と出力値を提供すればツリー内の任意のゲートを実行できる
8 チャレンジ&レスポンス 【ここまで】 1. 任意のロジックを回路にコンパイル 2. 回路に対するBinary Circuit Commitmentを作成
3. 回路内の各Gate CommitmentをリーフとしたTaprootスクリプトを構成 → 任意のロジックの検証が可能なBitcoin Scriptを実現 【検証】 基本的に証明者がコミットしたロジックの計算結果をオフチェーンで提供 その結果に誤りがある場合、ペナルティを課せる。 • 検証者は証明者に特定のゲートの実行を要求 • 証明者は指定されたゲートの実行結果で応答
証明者と検証者はセットアップ時にチャレンジ&レスポンス用の事前署名済みTxチェーンを用意 9 チャレンジ&レスポンス • 検証者がチャレンジを開始 • 検証者がFraud Proofを提示
• 証明者が1週間待機 • 証明者が結果を返答 • 検証者が1週間待機 検証者がプリイメージを 提供して実行ゲートを指定 証明者は指定された ゲートを実行
証明者が誤った計算結果を提供した場合、検証者が資金を没収できる 10 チャレンジ&レスポンス 証明者のレスポンスでは、2つの入力と出力値について、 0 or 1を返すために各値について、hash0とhash1のいずれかのプリメージを公開する
preimage A0 or A1 preimage B0 or B1 preimage E0 or E1 不正な計算結果を提供する場合、 同じ入力/出力値に対して異なる値が提示されることになり その値の0と1を表す2つのプリイメージが公開される。 その場合、2つのプリイメージの提供により 検証者はコインを没収できる。
11 BitVMの制限 • プロトコルの参加者は2名に限定される • 任意の計算をBitVM用の回路にコンパイルする高級言語はまだない • 任意の計算の回路を作成する場合、ゲートの数は膨大になり、
保持するデータ量も膨大になる(数百MB〜数GB) • Fraud Proofベースの仕組みで、基本的に任意の計算をオンチェーンで実行する仕組みではない • チャレンジの際、どのゲートを実行すれば効率的に証明できるのか判断するのは難しい BitVM 2へ