Tanakei

Tanakei

@163

HTLCで送金できる最小金額の考察

安全な送金 Lightning Networkでは1円以下の送金も可能ですが、ある金額以下の送金は実は安全ではないのをご存知でしょうか。ここでは安全の定義をHTLC(Hash Time Lock Contract)と呼ばれるスマートコントラクトを使った送金とします。このコントラクトを使うと、複数のノードを経由し、ブロックチェーンへの書き込みをせずにビットコインの送金が可能となります。 しかし、このHTLCを使った送金には最低金額があり、この金額以下ではHTLCを使った送金はできません。そもそもHTLCはコインをロックしたスクリプトで、LN上での送金中に問題が生じた時、このHTLCをブロックチェーン上へ展開して資金の回収をします。ビットコインにはdust limitという送金可能な最小金額があり、この値は(Native Segwitの場合)294satsとなっています。そのため、LN上でHTLCを使った送金もこの金額以上である必要があります。 LN上でこのdust limit以下で送金する場合、HTLCは使えないのでどうするかと言うと、この金額以下はマイナーのトランザクション手数料とみなして送金されます。LN上での送金が正常に完了すれば、dust limit以下の金額は自身の残高に反映されます。もし、送金が失敗してブロックチェーン上へ展開されると、このコインはマイナーへの手数料として勘定されます。これについてはこちらの記事で紹介しているので読んでみてください。HTLCはdust limit以下では使えませんが、これ以上の金額であれば問題ないのでしょうか。実は、dust limit以上の送金でもHTLCが使えない場合があります。 HTLCの最小金額 LNではcommitment_txと呼ばれるビットコインの取引データを2者間で署名・交換することでブロックチェーン外で送金を行います。commitment_txのアウトプットには自身へのアドレスを指すto_localと相手のアドレスを指すto_remoteがあり、この各アウトプットへのコインの量を更新していくことで、お互いの残高を管理しています。例えばアリスからボブを経由してキャロルへ送金する場合、commitment_txのアウトプットにHTLCを追加することになります。この時、dust limit以下の送金であれば、HTLCが追加されることはなく、その金額はcommitment_txがブロックチェーンへ展開される場合、マイナー手数料となります。 以下では送受信が同時に4つ行われている状態のcommitment_txを例にとって解説していきます(参考例元は<a href="https://github.com/lightningnetwork/lightning-rfc/blo

チャネル、ホップ、オニオン、ゴシップ!

ライトニングネットワークはビットコインの上で動くセカンドレイヤー技術で、低手数料、高速送金を実現することができます。ライトニングネットワーク(以下、LNと称す)では大きく分けて以下の二つの技術で構成されています。 ペイメントチャネル マルチホップペイメント ペイメントチャネル ペイメントチャネルでは、2者間でマルチシグアドレスを生成し、そのアドレス上でお互いの残高を管理していきます。残高の更新があるたびに署名をしますが、この署名されたデータはブロックチェーンへ送信せず、お互いのウォレット内で保管します。こうすることで、2者間で送金があってもブロックチェーンへ送信しないので、ゼロ承認かつゼロ手数料での送金ができるわけです。このマルチシグアドレス上での残高管理・送受信を仮想的なトンネルと見立てたものをペイメントチャネルと呼びます。 ペイメントチャネルは2者間での送金を可能にする技術ですが、もし第3者へ送金したい場合、その第3者ともチャネルを作らないといけないのでしょうか。送金したい相手ごとに作成する必要があるととても不便です。その問題を解決する技術がマルチホップペイメントと呼ばれるものです。 マルチホップペイメント マルチホップペイメントでは、ビットコインのスマートコントラクトを活用することで、中継者を経由して第3者へ、トラストレスに送金をすることができます。例えばアリスとボブ、ボブとキャロルの間にペイメントチャネルがある場合を見てみます(下記の図を参照)。この時、アリスはボブを経由してキャロルへ送金をすることができるのですが、ここでアリスがボブへ送金してもボブはキャロルへその送金を中継しない場合が考えられます。これだと既存の銀行間送金のような第三者への信頼モデルになってしまいます。そこでアリスはボブへの送金時に「キャロルしか知りえないシークレットがあれば受け取れる」という制約をつけて送金をします。ボブはこの送金を受け取るにはキャロルへシークレットを貰わないといけないので、同様な制約をつけてキャロルへ送金をします。キャロルはこの送金を受け取るためにシークレットをボブへ渡します。そしてボブはアリスからの送金を受け取るためにこのシークレットをアリスへ渡し、送金を受け取ります。 こ

Popular stories

SaruTobi LN / Swing Thingモードで遊ぼう! 基本的な飛び方について

79

2重支払い、してもいいですか?

42

Archives

2021-04
1posts
2021-01
1posts