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
1.6k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Scriptless Scriptの仕組みとポテンシャル
HashHub Conference 2018で発表したScriptless Scriptの仕組みとポテンシャルのスライドです。
shigeyuki azuchi
July 21, 2018
More Decks by shigeyuki azuchi
See All by shigeyuki azuchi
クラスターmempool
azuchi
0
28
W-OTS+
azuchi
0
30
Shorのアルゴリズム
azuchi
0
53
DahLIAS: Discrete Logarithm-Based Interactive Aggregate Signatures
azuchi
0
39
Fiat-Shamir変換と注意点
azuchi
0
210
AssumeUTXOを利用したブロックチェーンの同期
azuchi
0
52
BIP-374 離散対数の等価性証明
azuchi
0
69
BIP-353 DNS Payment Instructions
azuchi
0
85
OP_CAT and Schnorr Trick
azuchi
0
84
Other Decks in Technology
See All in Technology
Dario Amodi『Policy on the AI Exponential』を理解する
nagatsu
0
210
AIを「創る」と「使う」の循環 — HRテックが実践するリアルなAI組織実装
taketo957
0
1.9k
SIer20年! 培ったスキルがスタートアップで輝く時
shucho0103
0
830
自律型AIエージェントは何を破壊するのか
kojira
0
150
小さくはじめるSLI/SLO ~育てながら組織に定着させる実践知~ / Starting Small with SLI/SLOs: Building Adoption Through Continuous Growth
nari_ex
2
1.3k
LLMにもCAP定理があるという話
harukasakihara
0
280
AmazonRoute 53ではじめてのドメイン取得!HTTPS化までの道のりを整理してみた
usanchuu
3
130
Agent Skills設計で柔軟性と硬さのバランスが難しい話
nassy20
0
110
Bucharest Tech Week 2026 - Reinventing testing practices in the AI era
edeandrea
PRO
1
130
小さく始める AI 活用推進 ― 日経電子版 Web チームの事例/nikkei-tech-talk47
nikkei_engineer_recruiting
0
160
Reliability in the Age of AI: Engineering for AI Velocity
rrreeeyyy
0
120
中期計画、2回作ってみた ~業務委託と正社員、両方の視点から~
demaecan
1
640
Featured
See All Featured
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
230
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Being A Developer After 40
akosma
91
590k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
450
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
570
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
Believing is Seeing
oripsolob
1
140
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
720
Producing Creativity
orderedlist
PRO
348
40k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
Designing for Timeless Needs
cassininazir
1
250
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版であれば各チェーンで今すぐ利用可能)