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
BitVM
Search
shigeyuki azuchi
May 28, 2024
Technology
0
110
BitVM
GBECの解説動画のスライドです。
https://goblockchain.network/2024/05/bitvm/
shigeyuki azuchi
May 28, 2024
Tweet
Share
More Decks by shigeyuki azuchi
See All by shigeyuki azuchi
Shorのアルゴリズム
azuchi
0
11
DahLIAS: Discrete Logarithm-Based Interactive Aggregate Signatures
azuchi
0
11
Fiat-Shamir変換と注意点
azuchi
0
99
AssumeUTXOを利用したブロックチェーンの同期
azuchi
0
21
BIP-374 離散対数の等価性証明
azuchi
0
37
BIP-353 DNS Payment Instructions
azuchi
0
58
OP_CAT and Schnorr Trick
azuchi
0
55
Pay to Anchorと1P1Cリレー
azuchi
0
50
プロアクティブ秘密分散法
azuchi
0
71
Other Decks in Technology
See All in Technology
"人"が頑張るAI駆動開発
yokomachi
1
660
[2025-12-12]あの日僕が見た胡蝶の夢 〜人の夢は終わらねェ AIによるパフォーマンスチューニングのすゝめ〜
tosite
0
220
Strands Agents × インタリーブ思考 で変わるAIエージェント設計 / Strands Agents x Interleaved Thinking AI Agents
takanorig
6
2.4k
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
9.9k
MySQLのSpatial(GIS)機能をもっと充実させたい ~ MyNA望年会2025LT
sakaik
0
170
株式会社ビザスク_AI__Engineering_Summit_Tokyo_2025_登壇資料.pdf
eikohashiba
1
140
LayerX QA Night#1
koyaman2
0
290
Strands AgentsのEvaluatorをLangfuseにぶち込んでみた
andoooooo_bb
0
100
MySQLとPostgreSQLのコレーション / Collation of MySQL and PostgreSQL
tmtms
1
1.4k
M&Aで拡大し続けるGENDAのデータ活用を促すためのDatabricks権限管理 / AEON TECH HUB #22
genda
0
290
モダンデータスタックの理想と現実の間で~1.3億人Vポイントデータ基盤の現在地とこれから~
taromatsui_cccmkhd
2
290
AWSインフルエンサーへの道 / load of AWS Influencer
whisaiyo
0
240
Featured
See All Featured
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
110
Google's AI Overviews - The New Search
badams
0
880
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
990
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
36
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Evolving SEO for Evolving Search Engines
ryanjones
0
86
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
70k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
0
26
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
Navigating Team Friction
lara
191
16k
Facilitating Awesome Meetings
lara
57
6.7k
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へ