Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Adaptor Signatureを利用した Atomic Swap - ECDSA 版 -
Search
shigeyuki azuchi
January 24, 2019
Technology
1
210
Adaptor Signatureを利用した Atomic Swap - ECDSA 版 -
GBEC動画解説コンテンツのスライドです。
https://goblockchain.network/2019/01/adaptor_signature-ecdsa/
shigeyuki azuchi
January 24, 2019
Tweet
Share
More Decks by shigeyuki azuchi
See All by shigeyuki azuchi
Shorのアルゴリズム
azuchi
0
10
DahLIAS: Discrete Logarithm-Based Interactive Aggregate Signatures
azuchi
0
10
Fiat-Shamir変換と注意点
azuchi
0
98
AssumeUTXOを利用したブロックチェーンの同期
azuchi
0
20
BIP-374 離散対数の等価性証明
azuchi
0
36
BIP-353 DNS Payment Instructions
azuchi
0
57
OP_CAT and Schnorr Trick
azuchi
0
54
Pay to Anchorと1P1Cリレー
azuchi
0
49
プロアクティブ秘密分散法
azuchi
0
70
Other Decks in Technology
See All in Technology
たまに起きる外部サービスの障害に備えたり備えなかったりする話
egmc
0
410
Connection-based OAuthから学ぶOAuth for AI Agents
flatt_security
0
370
Amazon Bedrock Knowledge Bases × メタデータ活用で実現する検証可能な RAG 設計
tomoaki25
6
2.4k
アラフォーおじさん、はじめてre:Inventに行く / A 40-Something Guy’s First re:Invent Adventure
kaminashi
0
160
202512_AIoT.pdf
iotcomjpadmin
0
140
20251219 OpenIDファウンデーション・ジャパン紹介 / OpenID Foundation Japan Intro
oidfj
0
500
AIBuildersDay_track_A_iidaxs
iidaxs
4
1.3k
ESXi のAIOps だ!2025冬
unnowataru
0
370
[Data & AI Summit '25 Fall] AIでデータ活用を進化させる!Google Cloudで作るデータ活用の未来
kirimaru
0
3.9k
LayerX QA Night#1
koyaman2
0
260
普段使ってるClaude Skillsの紹介(by Notebooklm)
zerebom
8
2.2k
Next.js 16の新機能 Cache Components について
sutetotanuki
0
190
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Making Projects Easy
brettharned
120
6.5k
sira's awesome portfolio website redesign presentation
elsirapls
0
89
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
SEO for Brand Visibility & Recognition
aleyda
0
4.1k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
The agentic SEO stack - context over prompts
schlessera
0
560
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
2
260
It's Worth the Effort
3n
187
29k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
720
Transcript
Adaptor Signatureを利用した Atomic Swap - ECDSA 版 -
1 Scriptless Scripts with ECDSA 2018年4月にPedro Moreno-Sanchezらが ホワイトペーパーを公開 https://lists.linuxfoundation.org/pipermail/lightning-dev/attac hments/20180426/fe978423/attachment-0001.pdf
• 前提知識 ◦ Adaptor Signatureを利用したAtomic Swap - Schnorr版 - https://goblockchain.network/2018/12/adaptor_signature/ ◦ 高速で安全な2者間のECDSA署名 https://goblockchain.network/2018/10/ecdsa_2-of-2_multisig/
2 ECDSA署名 • 楕円曲線の生成点:G • 秘密鍵:x、公開鍵:P = xG • 暗号学的ハッシュ関数:
H • メッセージダイジェスト: m 【署名の生成】 • ランダムなnonce kを選択する。 • R = kGを計算する(Rは楕円曲線上の点)。 • 点Rのx座標をrとする。 • • (r, s)が署名データ 【署名の検証】 秘密鍵 x の情報を知らなければ、 この式を満たす s は導出できない。 を計算し、その点のx座標がrと 一致するか検証する。 sの構成上、Schnorr署名のような 線形性がないため、署名の集約 スキームは持たない。 を計算する。
3 Scriptless Multisig with ECDSA 鍵ペア P1 = x1G nonce
R1 = k1G Pにロックされたコインをアンロックするすためには が計算できればいい 鍵ペア P2 = x2G nonce R2 = k2G P1, R1, P2, R2を共有 P = x1 ・ P2 を計算 R = k1 ・R2 を計算 P = x2 ・ P1 を計算 R = k2 ・R1 を計算 計算した点Pと点Rはそれぞれ同じ点になる P宛にコインを送金するとマルチシグへのロックとなる
4 Adaptor Signature with Schnorr Adaptor SignatureはAtomic Swapで必要な ハッシュのプリイメージとコインの交換を代替する署名テクニック •
通常のSchnorr署名 (R, s): R = kG、s = k + H(P, R, m) x • Adaptor Signature (R, s’, T): R = kG, s’ = k + t + H(P, R, m) x, T = tG ※ Rは同じ値 t がハッシュのプリイメージの代替でランダムに選択した数値 Tはtを秘密鍵とした楕円曲線上の点=公開鍵でハッシュの役割をする Adaptor Signature s’とsが揃うとそこからtを計算できる。 t = s’ - s
5 Adaptor Signature with ECDSA ECDSAの署名データには線形性は無いので Rにシークレットの値を加味して、Atomic Swapを実現する • 通常のECDSA署名
(R, s’): R = kG、 • Adaptor Signature 署名生成時に選択するnonceにシークレットaを含める。 (R, s): R = akG, s’とsが揃うとそこからaを計算できる。 a = s’/ s
6 Adaptor Signatureを使ったAtomic Swap Bitcoin Litecoin • 鍵ペア P1 =
x1G • nonce R1 = k1G • Paillier暗号の鍵ペア (Priv, Pub) • 鍵ペア P2 = x2G • nonce R2 = k2G • 鍵ペア P4 = x4G • nonce R4 = k4G • 鍵ペア P3 = x3G • nonce R3 = k3G P = x1P2 = x2P1 ① 1 BTCをロック P’ = x3P4 = x4P3 ② 10 LTCをロック ③ ボブはランダムなシークレット aを選択し、 A = aGを計算し、アリスに送る。 ⑥ R'を使って R = k1R’ を計算する。 ⑥ ボブも R = (a * k2)R1を計算する。 Rのx座標をrとする。 ⑧ を計算し、 を計算し、C3をアリスに送る。 ④ Paillier暗号の公開鍵Pubでx1を 暗号化したckey = Enc(x1)を ボブに送る。 ⑤ R' = k2Aを計算してアリスに送る。 R ④ Paillier暗号の公開鍵Pubでx4を 暗号化したckey’ = Enc(x4)を ボブに送る。 ⑤ T’ = k3Aを計算してアリスに送る。 ⑥ T'を使って T = k4T’ を計算する。 ⑥ ボブも T = (a * k3)R4を計算する。 Tのx座標をtとする。 T C3 Tx(m) ⑦ BTCをボブに送るTxから 署名対象のメッセージ mを生成し共有 ⑦ LTCをアリスに送るTxから 署名対象のメッセージ m’を生成し共有 Tx(m’) ※ この時、R'、T'がAから算出されていることを 証明するゼロ知識証明を必要とする。 ※ RもTも同じシークレット aが使われていることが重要 有効な署名をそれぞれのチェーンで構成するにあたって aの知識が必要となる。
⑫ アリスはボブがブロードキャストした トランザクションから sの値が分かるので、 それとs’’を使ってシークレット aを計算する。 7 Adaptor Signatureを使ったAtomic Swap
Bitcoin Litecoin ⑪ s’’とシークレットaを使ってsを計算する。 算出した(r, s)がボブがBitcoinを受け取る トランザクションの有効な署名になる。 ボブはTx(m)をブロードキャストし、 BTCを手に入れる。 ⑩ C3を復号し、s’を得る。 s’とk1を使ってs’’を計算し、 ボブに送る。 ⑬ アリスはu’’とaを使って、アリスが Litecoinを受け取るトランザクションの 有効な署名を完成させる。 Tx(m) (r, s) a ⑨ を計算し、 を計算し、C3’をアリスに送る。 Tx(m’) (t, u) ⑩ C3’を復号し、u’を得る。 u’とk4を使ってu’’を計算する。 C3’
8 まとめ • Adaptor Signatureはハッシュのプリイメージの交換を 代替する署名エンコード • タイムロックの仕組みはないので、予めnLocktimeを セットした払い戻し用のトランザクションを準備しておく 必要がある。
• オンチェーン上では、単純なアドレス(P2PKHのような) 宛の送金トランザクションに見えるだけで、 Atomic Swapが行われたことは当事者以外分からない。 • スクリプトのサイズ分手数料が安価に。 • ECDSAで現時点で利用可能