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
AssumeUTXOを利用したブロックチェーンの同期
azuchi
0
4
BIP-374 離散対数の等価性証明
azuchi
0
16
BIP-353 DNS Payment Instructions
azuchi
0
35
OP_CAT and Schnorr Trick
azuchi
0
28
Pay to Anchorと1P1Cリレー
azuchi
0
29
プロアクティブ秘密分散法
azuchi
0
45
v3トランザクションリレー
azuchi
0
44
ランポート署名
azuchi
0
90
BitVM
azuchi
0
87
Other Decks in Technology
See All in Technology
データエンジニアリング 4年前と変わったこと、 4年前と変わらないこと
tanakarian
2
360
Railsの限界を超えろ!「家族アルバム みてね」の画像・動画の大規模アップロードを支えるアーキテクチャの変遷
ojima_h
3
430
Bliki (ja), and the Cathedral, and the Bazaar
koic
8
1.4k
地図と生成AI
nakasho
0
710
OTel 公式ドキュメント翻訳 PJ から始めるコミュニティ活動/Community activities starting with the OTel official document translation project
msksgm
0
250
2025-07-25 NOT A HOTEL TECH TALK ━ スマートホーム開発の最前線 ━ SOFTWARE
wakinchan
0
140
PdM業務における使い分け
shinshiro
0
590
会社もクラウドも違うけど 通じたコスト削減テクニック/Cost optimization strategies effective regardless of company or cloud provider
aeonpeople
2
170
TypeScript 上達の道
ysknsid25
11
1.4k
株式会社島津製作所_研究開発(集団協業と知的生産)の現場を支える、OSS知識基盤システムの導入
akahane92
1
1.2k
「手を動かした者だけが世界を変える」ソフトウェア開発だけではない開発者人生
onishi
12
5.6k
Shadow DOMとセキュリティ - 光と影の境界を探る / Shibuya.XSS techtalk #13
masatokinugawa
0
280
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
301
21k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Agile that works and the tools we love
rasmusluckow
329
21k
The Invisible Side of Design
smashingmag
301
51k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.5k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Making Projects Easy
brettharned
116
6.3k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.7k
Into the Great Unknown - MozCon
thekraken
40
1.9k
Navigating Team Friction
lara
187
15k
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版であれば各チェーンで今すぐ利用可能)