用語集 / ライトニングとレイヤー2
ミリサトシ
別名はmsatです。
- ミリサトシとは?
- ミリサトシはサトシの1000分の1であり、ライトニングネットワークがチャネルの残高や経路手数料を数える際に用いる単位で、ビットコインのブロックチェーン自体には記録できない金額です。
ライトニングは、ブロックチェーンより一段階細かい、サトシの1000分の1単位で会計を行います。BOLT 2はその比率を明示しています。push_msatはfunding_satoshisの1000倍を超えてはならず、オンチェーンで強制できるのはサトシ単位の整数額だけです。残高に残るミリサトシの端数は、チャネル内では実際に存在しますが、そのチャネルを閉じた瞬間に切り捨てられて消えます。
仕組み
ミリサトシはブロックチェーン上の決済単位ではなく、ライトニングチャネル内の計算単位です。
チャネル内のすべての支払い額はミリサトシで書かれ、そのことはフィールド名に示されています。チャネルに支払いを追加するメッセージupdate_add_htlcは64ビットのamount_msatを持ち、チャネルを開く際にはpush_msat、htlc_minimum_msat、max_htlc_value_in_flight_msatが同じ単位で交渉されます。BOLT 2は定義のそばにその注意点を明記しています。金額はミリサトシで表され、「though on-chain enforcement is only possible for whole サトシ amounts greater than the dust limit」(ただしオンチェーンで強制できるのはダストリミットを超えるサトシ単位の整数額のみ)であり、コミットメントトランザクションはそれらを切り捨てます。
換算係数は俗説ではありません。チャネルを開くノードは、push_msatをfunding_satoshisの1000倍以下に設定しなければならず、受け取る側のピアは、push_msatがfunding_satoshisの1000倍より大きければチャネルを失敗させなければなりません。1,000と1の比率は、双方のハンドシェイクに書き込まれています。
インボイスも同じ下限を引き継ぎます。BOLT 11の金額は、乗数を表す文字を伴うビットコインで表され、そのうち最小のp(ピコ)には他の単位にはない規則があります。金額の最後の桁はゼロでなければなりません。1ピコビットコインはミリサトシの10分の1なので、末尾のゼロによって要求額はミリサトシの整数に強制されます。仕様はその理由を明快に述べています。HTLCはミリサトシで表されるため、ミリサトシ未満の金額はネットワーク上で送金できないという理由であり、テストベクターには「Invalid sub-millisatoshi precision」(ミリサトシ未満の精度は無効)という見出しの下で拒否されるインボイスが含まれています。
追加の3桁の小数は、手数料の計算で役割を果たします。転送ノードは、転送する1サトシあたりサトシの100万分の1で表される比例レートを課すため、1,000サトシの支払いに対して1のレートは、ちょうど1ミリサトシになります。これをサトシ単位に丸めると、手数料を1000倍にしたか、まったく失ったかのどちらかになります。
表示される場所
ミリサトシの数値は、ライトニングのツールが丸めた表示ではなく実際の数値を示すあらゆる場所に現れます。
BOLT 11のインボイスをデコードすると、ルートヒントがこの単位で現れます。仕様自体の計算例には、基本手数料として1ミリサトシと2ミリサトシを課す2つのホップが挙げられており、Blockstreamのストア注文向けのサンプルインボイスには、基本手数料が1000(サトシ1単位分)のルートヒントが含まれています。チャネルのゴシップ更新はhtlc_minimum_msatとfee_base_msatを同じ単位で公開するため、これらのフィールドを読み取るダッシュボードには、隣に並ぶサトシの数値より1000倍大きい数値が表示されます。
消費者向けウォレットは単位を隠しますが、計算は隠しません。Phoenixは支払い時に手数料を確認するのではなく手数料表を公開しており、ライトニング送金には0.4%に加えて4サトシがかかります。137サトシの支払いでは、割合の部分は548ミリサトシとなり、これはオンチェーンでの表現をまったく持たない量です。Muunはオンチェーンとライトニングを1つの残高として提示しており、境界を完全に隠しますが、なくしてはいません。
ミリサトシvsサトシ
サトシはビットコインのブロックチェーンが記録できる最小の金額であり、ミリサトシはその1000分の1で、ライトニングのメッセージと、その2つのピアが保持する帳簿の中にのみ存在します。
その違いはチャネルを閉じる時に効いてきます。1,234,567ミリサトシのチャネル残高は1,234サトシとしてのみ強制でき、それ以上は強制できません。チャネルをオンチェーンで決済するコミットメントトランザクションはサトシ単位の整数額を支払うためです。残った567ミリサトシには存在できるオンチェーンの出力がなく、チャネルが開いている間だけ使用できます。この差は1セントの何分の1かにすぎませんが、ブロックチェーンに関わるあらゆる場面でこの2つの単位を互いに置き換えられない理由でもあります。