Time Locked Contracts(HTLCs)の代替手段 • HTLCsを利用したマルチホップ決済では、同じプリイメージを使って支払いを制御するため、 ルーティングプライバシーの課題がある。 ◦ 経路上に悪意あるユーザーのノードが複数存在すると Wormhole Attackにより 中間ノードに支払われる手数料を奪う攻撃も考えられる。 • PTLCsでは、ハッシュ値とそのプリイメージの代わりに、楕円曲線上の点(Point)と その離散対数(=秘密鍵)を利用する。 H(xxx) xxx H(xxx) xxx H(xxx) xxx H(xxx) xxx H(xxx) xxx Wormhole Y 0 =y 0 G y 0 Y 1 =y 1 G y 1 Y 2 =y 2 G y 2 Y 3 =y 3 G y 3 Y 4 =y 4 G y 4 経路内で使われるPointが異なるので、同じ経路の支払いかどうか区別できない
B = bG A Refund addr ① 自身の公開鍵Aと払い戻し用アドレスをボブに送信する Send addr B ② 自身の公開鍵Bと送信先アドレスをアリスに送信する Tx In Out アリスのUTXO 2 <A> <B> 2 OP_CMS ③ アリスのUTXOを使って アリスとボブの2-of-2の マルチシグ宛に送金するTxを作成する Refund Tx In Out 2-of-2 マルチシグ Refund addr ④ 両者のマルチシグのコインを使用する 払い戻し用のTxを作成し、ボブの署名を貰う Bob’s sig Send Tx In Out 2-of-2 マルチシグ Send addr Adaptor sig Y ⑤ 両者のマルチシグのコインを使用して、ボブに送金するTxを作成し、 アリスは自身の鍵と補助ポイントYを使ってAdaptor Signatureを作成し、ボブに送信する。 TimeLocked
addr Adaptor sig Y y ⑥ ボブはAdaptor Signatureに対してYの 離散対数yを使って、インプットのマルチシグに対し て有効なアリスの署名を完成させる。 また、bを使って必要な自分の署名を作成し、 Txを完成させ、ブロードキャストする。 Bob’s sig ボブの鍵ペア B = bG ⑦ アリスはブロードキャストされたTxの署名データを取得し、 署名とAdapto Signatureからyの値を計算する。 Adaptor sig Y y Refund Tx In Out 2-of-2 マルチシグ Refund addr Bob’s sig ⑧ ボブがyを明かさない=Send Txを公開しない場合、 アリスは予めRefund Txのボブ分の署名を受け取っているので、 自分の署名を加えて、 Refund Txをブロードキャストし、払い戻しを受ける。 Alice’s sig Alice’s sig Bob’s sig Alice’s sig TimeLocked
アリスのnonce Ra = kaG ボブのnonce Rb = kbG s = (H(m) + r * (a * b)) / (ka * kb) R = ka * Rb = kb * Ra 2P-ECDSAの場合、両者の鍵から単一の鍵を構成するため その鍵に対して有効な署名を協力して作成する必要がある P = a * B = b * A この署名の計算をお互いの秘密鍵、 nonceを秘匿したまま行う必要がある。 そのために加法準同型性のある Paillier暗号などを利用した計算が必要でプロトコルは複雑になる。 OP_CHECKMULTISIG と組み合わせると、シークレットを一方の参加者の署名に組み込めるので 2P-ECDSAよりもシンプルに実現できる