アトミック的にコインをスワップする: クロス・ブロックチェーンとプライバシーための交換 Ethan Heilman, Nicolas Dorier
OR イントロ アトミッック・スワップ: 交換が起きた 両者はコインを取り戻す …両者が悪意を持って、お互いをだまそうとしたとしても! AliceとBobは仮想通貨(ビットコインなど)の交換が出来るように なり、下記の条件を実現する: アトミック:交換は「成功」か「失敗」、お互いにコインを送金せずに奪うことで相手をだます事は出来ない 信頼できない:信頼出来るサード・パーティーは必要ない 交換が起きた Alice Bob Alice Bob OR 両者はコインを取り戻す X …両者が悪意を持って、お互いをだまそうとしたとしても!
実例:クロス・ブロックチェーンの交換とプライバシー クロス・チェーンのアトミック・スワップ: AliceはLitecoinを持っていて、Bitcoinが欲しい BobはBitcoinを持っていて、Litecoinが欲しい それで、AliceはBobと 2LTC と 1BTC を交換する Alice Bob Tx Tx プライバシーのためのアトミック・スワップ: 自分のトランザクション・グラフを曖昧にするためにAliceとBobは 1BTC を 1BTC で交換する。これをミキシングと言います Alice Bob Tx Tx
同じブロックチェーン上でアトミック・スワップ Bob, Bitcoinを交換しましょうか? はい、トランザクション2の中にコインを持っています Alice Bob Transaction 1 Transaction 2 APK BPK Tx 3 needs Alice and Bob’s signatures to spend Tx 1 and 2. Transaction 3 APK BPK ステップ2: AliceはTx3をサインして、Bobへ署名を送る Aσ Bσ ステップ3: BobはTx3をサインして、ブロックチェーンにのせる ステップ1: AliceはTx3を作成して、Bobへ送る ステップ4: Tx3はブロックチェーンで確認された これはシンプルなCoinJoinの例。プライバシーについて話す時にこのプロトコルを再び検討する。 Tx3はブロックチェーン上で確認されるかどうか、つまりアトミックな交換である。 ただし、Tx1とTx2が異なるブロックチェーン上にある場合は、このプロトコルを使えない。
ノンアトミック・クロスブロックチェーンの交換 Bob, LitecoinとBitcoinを交換しますか? Yes, send me Litecoin first and I’ll send you Bitcoin ケケケケ、AliceのLitecoinを盗んだぞ!!! Alice Bob Transaction 1 Transaction 2 APK BPK Transaction 3 BPK ステップ1: AliceはTx3をサインして、Litecoinのブロックチェーンに乗せる Transaction 4 APK ステップ2: BobはTx3が確認されることを待つ ハッシュ・ロックを使って、これを防ぐことが出来ます! X 悪のステップ3: BobはTx4のサインも送信する事もしない! ステップ3: BobがTx4をサインして、Bitcoinのブロックチェーンに乗せる ノンアトミック:AliceはBobをだませないけど、 BobはAliceをだませる … AliceはBobを信頼すべき
資金をハッシュ・ロックする BPK , Y= H(?) Bσ, X Txのアウトプットをつかうために、H(X)=Yを満たすXの値を知るべき ステップ1: Aliceはランダムな値Xを選んで、ハッシュをしてYを得る。 Transaction 1 BPK , Y= H(?) ステップ2: AliceはBobがXを分かるとBobが使えるトランザクションを作成して乗せる Transaction 2 Bσ, X ステップ3: BobはXをわかって、Tx1を消費する ハッシュ・ロック: Txのアウトプットをつかうために、H(X)=Yを満たすXの値を知るべき
アトミック クロス・ブロックチェーンの交換 アトミック クロス・ブロックチェーンの交換 Bob Alice Transaction 1 BPK ,Y= H(?) Alice Bob Transaction 4 BPK Bσ, X Transaction 2 APK ,Y= H(?) ステップ1: Aliceはランダム値のXを選んで、Yにハッシュして、Tx1を乗せる ステップ2: BobはTx1が確認されることを待ってから、Tx2を乗せる Transaction 3 APK Aσ, X ステップ3: AliceはTx2が確認されることを待ってから、Tx3を乗せる ステップ4: BobはTx3からXが分かって、Tx4を送信する Transaction 1 Transaction 2 APK BPK Transaction 3 BPK Step 1: Alice signs Tx 3 and posts it to Litecoin’s blockchain Transaction 4 APK X
アトミック クロス・ブロックチェーンの交換 アトミック クロス・ブロックチェーンの交換 Bob Alice Transaction 1 BPK ,Y= H(?) Transaction 4 BPK Bσ, X Transaction 2 APK ,Y= H(?) Transaction 5 APK Aσ Transaction 3 APK Aσ, X Transaction 6 BPK Bσ X X これはTier Nolanアトミック交換プロトコルと呼ばれている。 AliceはTx3を乗せなかったら何が起こる?全部のコインは消費出来なくなる! 時間制限に達するとコインを払い戻すタイムロックと呼ばれる追加の支払い条件を追加します。 Transaction 1 Transaction 2 APK BPK Transaction 3 BPK Step 1: Alice signs Tx 3 and posts it to Litecoin’s blockchain Transaction 4 APK X
フルTier-Nolanアトミック交換プロトコル Bob Alice Transaction 1 BPK ,Y= H(?) Transaction 4 BPK Bσ, X Transaction 2 APK ,Y= H(?) Transaction 5 APK Aσ Transaction 3 APK Aσ, X Transaction 6 BPK Bσ 返金 交換が起きた 返金 Bitcoinは2つのタイム・ロック機能がある:absolute CLTV (BIP-65) と relative CSV (BIP-112) ここはCLTVを使います。 Transaction 1 Transaction 2 APK BPK Transaction 3 BPK Step 1: Alice signs Tx 3 and posts it to Litecoin’s blockchain Transaction 4 APK X
フルTier-Nolanアトミック交換プロトコル:タイミング Aliceの返金 はアンロックされた Litecoin’s Blockchain Tx 1 Tx 3 Tx 4 Tx3: Aliceの署名とX Tx4: Bobの署名とX Tx 5 Tx 6 Tx6: Bobの署名 Tx5: Aliceの署名 Tx1の消費の条件: 1. Bobの署名とX または 2. Aliceの署名とLTC-高さ>205 200 201 202 203 204 205 206 Aliceのタイム・ロックはBobのものより大きくなければならない … じゃないと彼女が騙すことができる Bobの返金 はアンロックされた Bitcoin’s Blockchain Tx 2 300 301 302 303 304 305 306 Tx2の消費の条件: 1. Aliceの署名とX または 2. Bobの署名とBTC-高さ>304 Transaction 1 Transaction 2 APK BPK Transaction 3 BPK Step 1: Alice signs Tx 3 and posts it to Litecoin’s blockchain Transaction 4 APK X
フルTier-Nolanアトミック交換プロトコル:タイミング Aliceの返金 はアンロックされた Litecoin’s Blockchain Tx 1 Tx 4 Tx 5 Tx1の消費の条件: 1. Bobの署名とX または 2. Aliceの署名とLTC-高さ>204 200 201 Tx5: Aliceの署名 202 203 204 205 206 Tx4: Bobの署名とX Alice ケケケケ、AliceのLitecoinを盗んだぞ!!! Aliceのタイム・ロックはBobのものより大きくなければならない … じゃないと彼女が騙すことができる Bob’s Refund unlocked Bitcoin’s Blockchain Tx 3 Tx3: Aliceの署名とX Tx 2 300 301 302 303 304 305 306 Tx2の消費の条件: 1. Aliceの署名とX または 2. Bobの署名とBTC-高さ>304 Transaction 1 Transaction 2 APK BPK Transaction 3 BPK Step 1: Alice signs Tx 3 and posts it to Litecoin’s blockchain Transaction 4 APK X
クロス・チェーンの アトミック・スワップを やってみましょう
まとめ:クロス・チェーンのアトミック・スワップ クロス・チェーンのアトミック・スワップ: AliceはLitecoinを持って、Bitcoinが欲しい BobはBitcoinを持って、Litecoinが欲しい それで、AliceはBobと2LTCと1BTCを交換する Alice Bob Tier-Nolanアトミック交換 両者の仮想通貨の交換ができるようにする 両者はお互いにだますことができない Aliceが不正行為をしないようにタイムロックを慎重に選ぶ必要がある ハッシュロックとタイムロックをサポートする仮想通貨であれば動作できる 洗練された数学でハッシュロック要件は取り除ける ブロックチェーン上の4つのトランザクションが必要 AliceはBobを信頼すれば2つのトランザクションを減らせる
プライバシー Alice Bob 目的はトランザクショングラフの繋がりを破ること 2つのプロトコルについて簡単に説明する: Tx Tx プライバシーためのアトミック・スワップ: 自分のトランザクション・グラフを曖昧にするためにAliceとBobは1BTCと1BTCを交換する、これをミキシングと言います Alice Bob Tx Tx 目的はトランザクショングラフの繋がりを破ること 2つのプロトコルについて簡単に説明する: シングルトランザクションのCoinJoin MaxwellのCoinSwap (プライベート・アトミック・スワップ)
シンプルな2人のCoinJoinのプロトコル Alice Bob Transaction 1 Transaction 2 APK BPK Transaction 3 A’PK B’PK ステップ2: AliceはTx3をサインして、Bobに署名を送る Aσ Bσ ステップ3: BobはTx3をサインして、ブロックチェーンに乗せる ステップ1: AliceはTx3を作成して、Bobへ送る プライバシーのためにAliceとBobは新しいパブリックキーを使う。 ステップ4: Tx3はブロックチェーン上で確認された プライバシーの提供: どのTx3のパブリック・キーがAliceのものであるかを推測するのは1/2の確率
プライベート・アトミック・スワップ(MaxwellのCoinSwap) Transaction 1 Transaction 2 B’PK, A’PK B’’PK, A’’PK Transaction 6 APK Aσ, X Transaction 5 BPK Bσ, X Transaction 3 B’’σA’’σ Transaction 4 B’σA’σ A’’PK ,Y= H(?) B’PK Transaction 8 B’σA’σ B’PK Transaction 7 B’σA’σ A’’PK Refund プライバシーの提供:ブロックチェーン上に見えるのはTx1, Tx2, Tx7, Tx8だけで、繋がりは無い Transaction 1 Transaction 2 APK BPK Transaction 3 BPK Step 1: Alice signs Tx 3 and posts it to Litecoin’s blockchain Transaction 4 APK X
プライバシーのまとめ Tx Tx Tx Tx MaxwellのCoinSwapは異なるブロックチェーン上の4つのマルチシグ・トランザクション からクロス・チェーンのアトミック・スワップを区別できないようにする しかし、値段、タイミング、ネットワークの情報、などで相関性が分かる アトミック・スワップのプライバシーのプロトコルはいくつかある: Barberのフェア・エクスチェンジ / XIM TumbleBit ...
質問 Topics Discussed: シンプルな交換プロトコル 1つの関係者を信頼する交換 1つのブロックチェーン上にまたがって機能するアトミックな交換 クロス・チェーンのアトミック・スワップ ハッシュ・ロック / タイム・ロック Tier Nolanのアトミック交換プロトコル プライバシー 2者間のCoinJoin アトミックな交換をプライベートにする
Backup slides
Backup slides
フルTier-Nolanアトミック交換プロトコル Bob Alice Transaction 1 BPK ,Y= H(?) Transaction 4 BPK Bσ, X Transaction 2 APK ,Y= H(?) Transaction 5 APK Aσ Transaction 3 APK Aσ, X Transaction 6 BPK Bσ 返金 交換が起きた 返金 Transaction 1 Transaction 2 APK BPK Transaction 3 BPK Step 1: Alice signs Tx 3 and posts it to Litecoin’s blockchain Transaction 4 APK X
Full Tier-Nolan Atomic Trade Protocol Alice’s Refund unlocked Litecoin’s Blockchain Tx 1 Tx 3 Tx 4 Tx3: Alice sig & X Tx4: Bob sig & X Tx 5 Tx 6 Tx6: Bob sig Tx5: Alice sig Tx1 Spend Conditions: 1. Bob Sig & X Or 2. Alice Sig & LTC-Height>205 200 201 202 203 204 205 206 Bob’s Refund unlocked Bitcoin’s Blockchain Tx 2 300 301 302 303 304 305 306 Tx2 Spend Conditions: 1. Alice Sig & X Or 2. Bob Sig & BTC-Height>304 Transaction 1 Transaction 2 APK BPK Transaction 3 BPK Step 1: Alice signs Tx 3 and posts it to Litecoin’s blockchain Transaction 4 APK X
フルTier-Nolanアトミック交換プロトコル:タイミング Aliceの返金 はアンロックされた Litecoin’s Blockchain Tx 1 Tx 3 Tx 4 Tx3: Aliceの署名とX Tx4: Bobの署名とX Tx 5 Tx 6 Tx6: Bobの署名 Tx5: Aliceの署名 Tx1の消費の条件: 1. Bobの署名とX または 2. Aliceの署名とLTC-高さ>205 200 201 202 203 204 205 206 Bobの返金 はアンロックされた Bitcoin’s Blockchain Tx 2 300 301 302 303 304 305 306 Tx2の消費の条件: 1. Aliceの署名とX または 2. Bobの署名とBTC-高さ>304 Transaction 1 Transaction 2 APK BPK Transaction 3 BPK Step 1: Alice signs Tx 3 and posts it to Litecoin’s blockchain Transaction 4 APK X
シンプルな2人のCoinJoinのプロトコル Alice Bob Transaction 1 Transaction 2 APK BPK Transaction 3 A’PK B’PK ステップ2: AliceはTx3をサインして、Bobに署名を送る Aσ Bσ ステップ3: BobはTx3をサインして、ブロックチェーンに乗せる ステップ1: AliceはTx3を作成して、Bobへ送る プライバシーのためにAliceとBobは新しいパブリックキーを使う。 ステップ4: Tx3はブロックチェーン上で確認された プライバシーの提供: どのTx3のパブリック・キーがAliceのものであるかを推測するのは1/2の確率
Barber Protocol B’PK, A’PK B’’PK, A’’PK APK Aσ, X BPK Bσ, X B’’σA’’σ Transaction 1 Transaction 2 B’PK, A’PK B’’PK, A’’PK Transaction 6 APK Aσ, X Transaction 5 BPK Bσ, X Transaction 3 B’’σA’’σ Transaction 4 B’σA’σ A’’PK ,Y= H(?) B’PK Transaction 8 B’σA’σ B’PK Transaction 7 B’σA’σ A’’PK Refund Transaction 1 Transaction 2 APK BPK Transaction 3 BPK Step 1: Alice signs Tx 3 and posts it to Litecoin’s blockchain Transaction 4 APK X
Barber et al’s Fair-Exchange Protocol 公平な交換プロトコル:無信頼ミキサーでBitcoinをミキシングする [0] “Bitter to Better —How to Make Bitcoin a Better Currency”, Barber et al. Transaction 1 Transaction 2 APK BPK Transaction 3 BPK Step 1: Alice signs Tx 3 and posts it to Litecoin’s blockchain Transaction 4 APK X