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
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
AssumeUTXOを利用したブロックチェーンの同期
azuchi
0
4
BIP-374 離散対数の等価性証明
azuchi
0
14
BIP-353 DNS Payment Instructions
azuchi
0
31
OP_CAT and Schnorr Trick
azuchi
0
25
Pay to Anchorと1P1Cリレー
azuchi
0
27
プロアクティブ秘密分散法
azuchi
0
43
v3トランザクションリレー
azuchi
0
42
ランポート署名
azuchi
0
85
BitVM
azuchi
0
82
Other Decks in Technology
See All in Technology
ネットワーク保護はどう変わるのか?re:Inforce 2025最新アップデート解説
tokushun
0
150
KubeCon + CloudNativeCon Japan 2025 Recap by CA
ponkio_o
PRO
0
250
2025-06-26_Lightning_Talk_for_Lightning_Talks
_hashimo2
2
110
解析の定理証明実践@Lean 4
dec9ue
1
200
高速なプロダクト開発を実現、創業期から掲げるエンタープライズアーキテクチャ
kawauso
1
230
Delegating the chores of authenticating users to Keycloak
ahus1
0
130
LangSmith×Webhook連携で実現するプロンプトドリブンCI/CD
sergicalsix
1
150
Node-RED × MCP 勉強会 vol.1
1ftseabass
PRO
0
180
CI/CD/IaC 久々に0から環境を作ったらこうなりました
kaz29
1
200
Connect 100+を支える技術
kanyamaguc
0
150
モバイル界のMCPを考える
naoto33
0
360
生成AI開発案件におけるClineの業務活用事例とTips
shinya337
0
180
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.5k
The World Runs on Bad Software
bkeepers
PRO
69
11k
Faster Mobile Websites
deanohume
307
31k
For a Future-Friendly Web
brad_frost
179
9.8k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Unsuck your backbone
ammeep
671
58k
Navigating Team Friction
lara
187
15k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.6k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
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で現時点で利用可能