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
Scriptless Scriptの仕組みとポテンシャル
Search
shigeyuki azuchi
July 21, 2018
Technology
3
1.5k
Scriptless Scriptの仕組みとポテンシャル
HashHub Conference 2018で発表したScriptless Scriptの仕組みとポテンシャルのスライドです。
shigeyuki azuchi
July 21, 2018
Tweet
Share
More Decks by shigeyuki azuchi
See All by shigeyuki azuchi
Shorのアルゴリズム
azuchi
0
13
DahLIAS: Discrete Logarithm-Based Interactive Aggregate Signatures
azuchi
0
12
Fiat-Shamir変換と注意点
azuchi
0
100
AssumeUTXOを利用したブロックチェーンの同期
azuchi
0
22
BIP-374 離散対数の等価性証明
azuchi
0
38
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
72
Other Decks in Technology
See All in Technology
AI: The stuff that nobody shows you
jnunemaker
PRO
1
160
First-Principles-of-Scrum
hiranabe
3
1.4k
コールドスタンバイ構成でCDは可能か
hiramax
0
130
自己管理型チームと個人のセルフマネジメント 〜モチベーション編〜
kakehashi
PRO
5
2.1k
産業的変化も組織的変化も乗り越えられるチームへの成長 〜チームの変化から見出す明るい未来〜
kakehashi
PRO
1
340
小さく、早く、可能性を多産する。生成AIプロジェクト / prAIrie-dog
visional_engineering_and_design
0
340
AWS re:Invent2025最新動向まとめ(NRIグループre:Cap 2025)
gamogamo
0
150
Next.js 16の新機能 Cache Components について
sutetotanuki
0
210
Digitization部 紹介資料
sansan33
PRO
1
6.4k
2025年のデザインシステムとAI 活用を振り返る
leveragestech
0
700
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.5k
_第4回__AIxIoTビジネス共創ラボ紹介資料_20251203.pdf
iotcomjpadmin
0
170
Featured
See All Featured
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
41
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
Applied NLP in the Age of Generative AI
inesmontani
PRO
3
2k
Faster Mobile Websites
deanohume
310
31k
From π to Pie charts
rasagy
0
100
Into the Great Unknown - MozCon
thekraken
40
2.2k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
59
Color Theory Basics | Prateek | Gurzu
gurzu
0
170
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
250
Joys of Absence: A Defence of Solitary Play
codingconduct
1
260
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
How to Think Like a Performance Engineer
csswizardry
28
2.4k
Transcript
Copyright ©2018 HAW International Inc. all rights reserved. HashHub Conference
2018 Scriptless Scriptの仕組みとポテンシャル 2018/07/21 株式会社ハウインターナショナル 安土 茂亨
Copyright ©2018 HAW International Inc. all rights reserved. 自己紹介 •
株式会社ハウインターナショナル CTO • 株式会社chaintope CTO • BitcoinプロトコルのRuby実装「bitcoinrb」 • Open Assets ProtocolのRuby実装 「openassets-ruby」 • Bech32のRuby実装「bech32rb」 • 共著 「ブロックチェーン・プログラミング 仮想通貨入門」 • ブログ「Develop with pleasure!」 https://techmedia-think.hatenablog.com/
Copyright ©2018 HAW International Inc. all rights reserved. Scriptless Scriptとは?
Script(スマートコントラクト)を書くことなく、 署名技術のみでコントラクトを実現するコンセプト • 2016年 Tom Elvis JedusorがIRCにmimblewimbleというコンセプトを投稿 ◦ Txにインプットとアウトプットを持つがScriptは持たず、署名のみでコント ロールされる新しいブロックチェーンの設計 https://scalingbitcoin.org/papers/mimblewimble.txt ◦ Scriptを持たないままScriptの機能をどう持たせるか? • 2017年 Andrew PoelstraがScriptless Scriptというコンセプトを発表 https://download.wpsoftware.net/bitcoin/wizardry/mw-slides/2017-03-mit-bi tcoin-expo/slides.pdf ◦ スマートコントラクトをデジタル署名にエンコード ▪ マルチシグ ▪ クロスチェーンAtomic Swap ▪ Lightning Networkのコントラクト
Copyright ©2018 HAW International Inc. all rights reserved. Bitcoin Scriptを使ったマルチシグ
Bitcoinを使用する際に複数個の署名を必要とする仕組み 3人のうち2人の署名があればBitcoinを使用できる アリス ボブ キャロル 2 <アリスの公開鍵> <ボブの公開鍵> <キャロルの公開鍵> 3 CHECKMULTISIG 2-of-3のマルチシグスクリプト scriptPubKey 0 <アリスの署名> <キャロルの署名> scriptSig
Copyright ©2018 HAW International Inc. all rights reserved. 前提となるSchnorr 署名
公開鍵と署名の集約特性を持つデジタル署名方式 • 楕円曲線のジェネレータ: G • 秘密鍵: x • 公開鍵: P = xG • ハッシュ関数: H() • メッセージ: m 【署名の生成】 1. ランダムなnonce k を選択 2. kを秘密鍵として楕円曲線上の点R = kGを計算 3. s = k + H(P, R, m)x を計算 4. (R, s)が署名データ 【署名の検証】 sG = R + H(P, R, m)P が成立するか検証 Bitcoinへの導入の提案もスタート https://github.com/sipa/bips/blob/bip-schnorr/bip-schnorr.mediawiki
Copyright ©2018 HAW International Inc. all rights reserved. Schnorr でマルチシグ
• 鍵ペア P1 = x1G • nonce R1 = k1G • 鍵ペア P2 = x2G • nonce R2 = k1G マルチシグの公開鍵 P = P1 + P2 にコインをロック ※Pに対応する秘密鍵は誰も知らない Pにロックされたコインをアンロックする際の署名 (署名に使用する R = R1 + R2) ① s1 = k1 + H(P, R, m)x1 を計 算 ① s2 = k2 + H(P, R, m)x2 を計 算 ② s = s1 + s2 = k1 + k2 + H(P, R, m)(x1 + x2)を計算 署名データは(R, s) ※ 署名は各ユーザーが計算した各 s値の加算することで計算できる ③ sG = R + H(P, R, m)P を検証
Copyright ©2018 HAW International Inc. all rights reserved. Scriptlessマルチシグのメリット •
母数が巨大なマルチシグであっても、ロックスクリプトは 単一の公開鍵になる。 • アンロックする際に必要な署名は、署名者数分の署名は 必要なく、単一の署名のみ。 • ブロックチェーン上のトランザクションを見ても通常の公開 鍵宛の支払いトランザクションに見え、マルチシグを使っ ているかどうかは当事者以外分からない。 ※ Rogue-key攻撃への対応は必要
Copyright ©2018 HAW International Inc. all rights reserved. Bitcoin Scriptを使ったAtomic
Swap HTLC(Hashed Time Lock Contract) シークレットとタイムロックを利用したAtomic Swapプロトコル アリスはLitecoin上でシークレットAを公開してLTCを入手し、 ボブは公開されたAを使ってBTCを入手する。 ※コインを入手する際にスクリプトは公開されブロックチェーンに記録されるため、 HTLCを行ったことは誰もが知ることになる アリスはBitcoinを以下のアンロック条件のスクリプトに送る。 • H(A)のプリイメージ=シークレットAが分かればボブは BTCを入手できる。 • 10日経過したらアリスはBTCを入手できる。 Secret A H(A) ボブはLTCを以下のアンロック条件のコントラクトに送る。 • H(A)のプリイメージ=シークレットAが 分かればアリスはLTCを入手できる。 • 5日経過したらボブはLTCを入手できる。 BTC/LTCを交換
Copyright ©2018 HAW International Inc. all rights reserved. Adaptor Signature
Atomic Swapで必要なハッシュのプリイメージの交換を 代替するのがAdaptor Signature • 通常のSchnorr署名 (R, s) : s = k + H(P, R, m)x • Adaptor Signature (R, s’, T): s’ = k + t + H(P, R, m)x ※いずれもRは同じ値 Adaptor Signature s’ と 署名 s が揃うと t が計算できる s’ - s = t T = tG → tがプリイメージ、Tがハッシュの代替
Copyright ©2018 HAW International Inc. all rights reserved. ③ アリスはランダムなシークレットt
(T = tG)を生成し、マルチシグの 署名を作成するヒントが入ったAdapter Signatureを作ってボブに送る。 ※ 両方のチェーンでそれぞれのPとRを使って同様のことを行う。 このとき同じ t を使用する。 s’ = k1 + t + H(P, R, m)x1 Adaptor Signatureを使ったAtomic Swap BTC/LTCを交換 (R, s', T) ②各チェーンで相手に送金する未署名のTxを作成 T = tG ④ ボブはマルチシグの署名データの一部をアリスに渡す sB = k2 + H(P, R, m)x2 ⑥ ボブはアリスの署名 s を使って t の値を知る。 t = s’ + sB - s t が分かるとマルチシグをアンロックするのに必要な アリス側の署名を計算できる。 sA = s’’ - t これでもう1方のチェーンのコインを入手する。 ⑤アリスはボブから受け取ったsBを使って、マルチシグの署名を完成させる。 s = s’ + sB - t = k1 + k2 + H(P, R, m)(x1 + x2) 署名(R, s)を完成させコインを入手するTxをブロードキャストする。 鍵ペア P1 = x1G nonce R1 = k1G 鍵ペア P2 = x2G nonce R2 = k2G マルチシグ公開鍵 P = P1 + P2 nonce R = R1 + R2 (※ P, R は各チェーンで異なる) ① P 宛にBTCをロック ① P’ 宛にLTCをロック Tx Tx’ sB Tx’ (R, s) t
Copyright ©2018 HAW International Inc. all rights reserved. Scriptless Atomic
Swapのメリット • 各チェーンでAtomic Swapを行うトランザクションは通常 の公開鍵宛の支払いトランザクションにしか見えず、 Atomic Swapが行われたかどうか当事者以外は分から ない。 • スクリプトが無い分トランザクションサイズが若干減少 ※ Rogue-key攻撃への対応は必要 ※ OP_CLTVを使ったタイムロックの制限はできないので、 予めnLocktimeをセットした払い戻しTxの準備が必要。
Copyright ©2018 HAW International Inc. all rights reserved. Scriptless Script
with ECDSA • 2017年にYehuda Lindellが発表した論文 Fast Secure Two-Party ECDSA Signing https://eprint.iacr.org/2017/552.pdf • ↑をベースに2018年にPedro Moreno-Sanchezが ECDSAでScriptless Scriptを実現する論文を発表 Scriptless Scripts with ECDSA https://lists.linuxfoundation.org/pipermail/lightning-dev/a ttachments/20180426/fe978423/attachment-0001.pdf
Copyright ©2018 HAW International Inc. all rights reserved. ECDSA署名 •
秘密鍵: x • 公開鍵: P = xG • メッセージ: m • ハッシュ関数: H() 【署名の生成】 1. ランダムなnonce k を選択。 2. kを秘密鍵とした楕円曲線上の点 R = kGを計算。 3. 点Rのx座標をrとする。 4. を計算 5. 生成した (r, s)がECDSAの署名データ。 【署名の検証】
Copyright ©2018 HAW International Inc. all rights reserved. ECDSAでマルチシグを構成するポイント 署名(r,
s)の内、秘密鍵を使った計算をするのはsの計算↓ 秘密鍵xを2者の秘密鍵から計算する値にすると、署名は単一 だが、有効な署名を生成するためには2者の秘密鍵を必要とす るマルチシグを構成することができる。 x = アリスの秘密鍵 × ボブの秘密鍵 ※両者がお互い自分の秘密鍵を明らかにすることなく、 sを計算できる必要がある
Copyright ©2018 HAW International Inc. all rights reserved. Pにロックされたコインをアンロックするすためには が計算できればいい
ECDSAマルチシグのロック 鍵ペア P1 = x1G nonce R1 = k1G 鍵ペア P2 = x2G nonce R2 = k2G P1, R1, P2, R2を共有 P = x1 ・ P2 を計算 R = k1 ・R2 を計算 P = x2 ・ P1 を計算 R = k2 ・R1 を計算 PとRは同じ点になる P宛にコインを送金するとマルチシグへのロックとなる
Copyright ©2018 HAW International Inc. all rights reserved. 秘密計算で署名値を算出 ①アリスは、Paillier暗号用の鍵ペアを生成(
priv, pub) ※Paillier暗号は加法準同型性がある暗号スキーム ②pubを使ってアリスの秘密鍵 x1を暗号化Enc(x1)し、 pubと一緒にボブに送信 Enc(x1) pub ③ ボブは、以下の計算をして pubで暗号化 Enx(x1)を使って以下を計算 c3 = c1⊕c2を計算して、アリスに送る。 ④ アリスはc3を復号して s’ を計算 ⑤ s’をk1^-1 するとアンロックに必要な署名値 s が手に入る 両者ともに秘密鍵 x1, x2を明らかにすることなく、 マルチシグのアンロックに必要な署名値を計算できる。 1
Copyright ©2018 HAW International Inc. all rights reserved. Scriptless Script
with ECDSA • ECDSA自体にSchnorrのような鍵・署名の集約特性は ないが、準同型性のある暗号を利用した秘密計算を することで、両者の秘密情報を必要とする署名を生成 • マルチシグ以外に、Schnorrと同様、 Adaptor Signatureを使ったAtomic Swapが可能。 • Lightning Networkへの適用も 「Multi-Hop Locks for Secure, Privacy-Preserving and Interoperable Payment-Channel Networks」 https://eprint.iacr.org/2018/472.pdf
Copyright ©2018 HAW International Inc. all rights reserved. Scriptless Scriptのメリット
• Privacy/Fungibility コントラクトの中身が公開されることはなく、ブロックチェーン 上では通常の支払いと区別できない • (ちょっとした)Scalability ◦ トランザクションサイズの削減 ◦ スクリプト評価のコスト削減 • 適用性/互換性 デジタル署名技術をベースにした技術なので、ECDSAや Schnorrが利用可能なブロックチェーンであれば適用可能 (※ ECDSA版であれば各チェーンで今すぐ利用可能)