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
Discreet Log Contract
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
shigeyuki azuchi
May 23, 2019
Technology
0
92
Discreet Log Contract
GBEC動画解説コンテンツのスライドです。
https://goblockchain.network/2019/05/discreet-log-contract/
shigeyuki azuchi
May 23, 2019
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
42
BIP-353 DNS Payment Instructions
azuchi
0
60
OP_CAT and Schnorr Trick
azuchi
0
58
Pay to Anchorと1P1Cリレー
azuchi
0
51
プロアクティブ秘密分散法
azuchi
0
77
Other Decks in Technology
See All in Technology
Amazon S3 Vectorsを使って資格勉強用AIエージェントを構築してみた
usanchuu
3
430
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
17k
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
1.6k
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
450
We Built for Predictability; The Workloads Didn’t Care
stahnma
0
130
月間数億レコードのアクセスログ基盤を無停止・低コストでAWS移行せよ!アプリケーションエンジニアのSREチャレンジ💪
miyamu
0
800
2人で作ったAIダッシュボードが、開発組織の次の一手を照らした話― Cursor × SpecKit × 可視化の実践 ― Qiita AI Summit
noalisaai
1
370
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
13k
小さく始めるBCP ― 多プロダクト環境で始める最初の一歩
kekke_n
1
350
Deno・Bunの標準機能やElysiaJSを使ったWebSocketサーバー実装 / ラーメン屋を貸し切ってLT会! IoTLT 2026新年会
you
PRO
0
290
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.5k
Introduction to Bill One Development Engineer
sansan33
PRO
0
360
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
Balancing Empowerment & Direction
lara
5
880
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
450
BBQ
matthewcrist
89
10k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1k
GraphQLとの向き合い方2022年版
quramy
50
14k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
930
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.8k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Statistics for Hackers
jakevdp
799
230k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
110
Git: the NoSQL Database
bkeepers
PRO
432
66k
Transcript
Discreet Log Contract
1 Discreet Log Contract https://adiabat.github.io/dlc.pdf Lightning Networkのホワイトペーパーの共著 者であるThaddeus Dryjaが提案するオラクル へのトラストを最小限とした
• スケーラビリティ • プライバシー保護 を備えたコントラクトのプロトコル。 オラクルが公開した情報を元に コントラクトが実行され、暗号通貨を使ったデリ バティブ取引を可能にする。
2 DLCを利用した予測市場取引 アリス ボブ オリビア (Oracle) 金曜日に日本円を購入する 金曜日に日本円を売却する
Setup Contract 水曜日に売買契約を結ぶ 水曜日時点では 1円 = 160 satoshi 金曜日時点では 1円 = 200 satoshi Oracleであるオリビアは 日々、通貨価格を公開する Contractは 1円 = 200 satoshi 換算で取引を実行する
3 コントラクトのセットアップ Funding Tx アリスのBTC 2-of-2のマルチシグ 資金をアリスとボブの2-of-2のマルチシグにロック するFunding Txを作成する
Contract Execution Tx 1 Funding TxのUTXO アリス宛の送金 ボブ宛送金 Contract Execution Tx 2 Funding TxのUTXO アリス宛の送金 ボブ宛送金 Contract Execution Tx 3 Funding TxのUTXO アリス宛の送金 ボブ宛送金 Contract Execution Tx 4 Funding TxのUTXO アリス宛の送金 ボブ宛送金 1円 = 150 satの場合 1円 = 151 satの場合 1円 = 152 satの場合 1円 = 153 satの場合 Funding Txの資金をインプットとし、1円の価格に応じて アウトプットの取り分が変わるContract Execution Txを 大量に作成し、お互いに署名を作成し、各自保存しておく。
4 Schnorr署名 公開鍵や署名の集約特性があるデジタル署名スキーム • 楕円曲線の生成点:G • 秘密鍵:x、公開鍵:P = xG
• 暗号学的ハッシュ関数: H • メッセージダイジェスト: m 【署名の生成】 • ランダムなnonce kを選択する。 • R = kGを計算する。 • s = k + H(P, R, m) x を計算する。 • (R, s)が署名データ 秘密鍵 x の情報を知らなければ、 この式を満たす s は導出できない。 【署名の検証】 • sG = R + H(P, R, m)P が成立する か検証する。
5 Oracleが予め公開する情報 • 自身の公開鍵V = vG オリビアが公開する情報はこの公開鍵Vに対して 有効な署名が含まれる。 •
nonce R = kG Vは使いまわされるが、Vとは別に日々価格を 発表する際に使用する署名のnonceの値を 事前に公開する。 Oracleであるオリビアは予め以下の2つの点を公開する。
6 Contract Execution Txの中身 Contract Execution Tx 150 Funding TxのUTXO
ボブへのP2PKH 以下のロック条件を持つスクリプト ハッシュへの支払い • Pub_A150 • ボブの公開鍵+タイムロッ ク • Pub_Ai = アリスの公開鍵 + siG • Pub_Bi = ボブの公開鍵 + siG siGは、siG = R + H(i, R)Vで計算する。iは1円のsatoshiの値を指す。 Pub_Aiのコインを入手するには、アリスの秘密鍵の他、siの情報が必要になる。 Pub_Biのコインを入手するには、ボブの秘密鍵の他、siの情報が必要になる。 Contract Execution Tx 150’ Funding TxのUTXO アリスへのP2PKH 以下のロック条件を持つスクリプト ハッシュへの支払い • Pub_B150 • アリスの公開鍵+タイムロッ ク
7 Oracleが公開する終値 金曜日の終値が1円 = 200 satoshiだった場合、 オリビアは、200の値にコミットするSchnorr署名を 作成する。 nonce は予め公開しているR
= kGの値を使用。 s = k + H(200, R)v を計算し、 マーケットの終わり値200と署名(R, s)を公開する。 ※ 公開はWeb上で公開してもいいし、Twitterで流すのでも何でもいい。
8 Contract Execition Contract Execution Tx 200 Funding Txの UTXO
ボブへのP2PKH 以下のロック条件を持つスクリプトハッ シュへの支払い • Pub_A200 • ボブの公開鍵+タイムロック アリス(もしくはボブ)は該当する価格のCETをブロードキャストする Contract Execution Tx 200’ Funding Txの UTXO アリスへのP2PKH 以下のロック条件を持つスクリプトハッ シュへの支払い • Pub_B200 • アリスの公開鍵+タイムロック Pub_A200 = アリスの公開鍵 + s200G であり、 アリスはOracleが公開した署名データの s200 = k + H(200, R)v を知っているので、 Pub_A200に対して有効な署名は 「アリスの秘密鍵 + s200」 を秘密鍵として作成することが できる。(タイムロックが経過するとボブに没収される。) ※ 通常はそのままブロードキャストするより、協力してお互いの取り分を直接送るClosing Txを作る。
9 不正への対応 Contract Execution Tx 150 Funding Txの UTXO ボブへのP2PKH
以下のロック条件を持つスクリプトハッ シュへの支払い • Pub_A150 • ボブの公開鍵+タイムロック Contract Execution Tx 150’ Funding Txの UTXO アリスへのP2PKH 以下のロック条件を持つスクリプトハッ シュへの支払い • Pub_B150 • アリスの公開鍵+タイムロック Oracleが公開した値と異なる条件のトランザクションをブロードキャストする不正をした場 合、トランザクションを投げた側が、siが分からずアンロックに必要な署名が作れず、タイム アウトを経過すると結局全額相手に持っていかれる。
10 DLCの特徴 • ブロックチェーンを見ても、単純にマルチシグとP2PKH宛とスクリプト (中身も公開鍵宛と、タイムロックが付いた公開鍵宛のいずか)なので、 DLCを使って予測取引をしていたことは当事者以外分からない。 • Oracleが虚偽の報告をしない前提となっており最低限のトラストが必要。 ◦ 相手とOracleの共謀に対応する場合、複数のOracleを立てる。
◦ n-of-mのOracleもやれなくはない(ただし複雑になる)。 • 価格などの扱う場合は、作成するトランザクション数が極端に大きくなる場合、値を指 数と仮数で表現することでトランザクション数を減らせる。 • Lightning Networkを利用したオフチェーン環境での実行も可能。 • 多分、Mimblewimbleを実装しているGrin等でも実現可能(CSV次第)。 • 具体サービスも誕生間近? https://www.garage.co.jp/ja/pr/2019/04/20190419.html