Glossar / Lightning und Layer 2
Millisatoshi
Auch bekannt als msat.
- Was ist ein Millisatoshi?
- Ein Millisatoshi ist ein Tausendstel eines Satoshi, die Einheit, in der Lightning Kanalguthaben und Routing-Gebühren zählt, und ein Betrag, den die Bitcoin-Blockchain selbst nicht erfassen kann.
Lightning rechnet eine Stufe feiner als die Blockchain, in Tausendsteln eines Satoshi. BOLT 2 legt das Verhältnis eindeutig fest: push_msat darf nicht mehr als das 1000-Fache von funding_satoshis betragen, und eine Durchsetzung On-Chain ist nur für ganze Satoshi-Beträge möglich. Jeder Millisatoshi-Rest in Ihrem Guthaben ist innerhalb des Kanals real und wird in dem Moment weggerundet, in dem dieser Kanal geschlossen wird.
So funktioniert es
Ein Millisatoshi ist eine Rechnungseinheit innerhalb eines Lightning-Kanals und keine Abrechnungseinheit auf der Blockchain.
Jeder Zahlungsbetrag innerhalb eines Kanals wird in Millisatoshi geschrieben und sagt dies in seinem Feldnamen. Die Nachricht, die einem Kanal eine Zahlung hinzufügt, update_add_htlc, trägt einen 64 Bit großen Betrag amount_msat, und beim Öffnen eines Kanals werden push_msat, htlc_minimum_msat und max_htlc_value_in_flight_msat in derselben Einheit ausgehandelt. BOLT 2 nennt den Haken neben der Definition: Beträge sind in Millisatoshi, "though on-chain enforcement is only possible for whole satoshi amounts greater than the dust limit", und die Commitment-Transaktion rundet sie ab.
Der Umrechnungsfaktor ist kein Hörensagen. Ein Node, der einen Kanal öffnet, muss push_msat auf höchstens das 1000-Fache von funding_satoshis setzen, und der empfangende Peer muss den Kanal fehlschlagen lassen, wenn push_msat größer ist als funding_satoshis mal 1000. Das Verhältnis von 1.000 zu 1 ist von beiden Seiten in den Handshake geschrieben.
Rechnungen übernehmen dieselbe Untergrenze. Ein BOLT-11-Betrag wird in Bitcoin mit einem Multiplikatorbuchstaben angegeben, und der kleinste von ihnen, p für Pico, trägt eine Regel, die die anderen nicht haben: die letzte Ziffer des Betrags muss null sein. Ein Pico-Bitcoin ist ein Zehntel eines Millisatoshi, die abschließende Null zwingt die Anforderung also auf eine ganze Zahl von Millisatoshi. Die Spezifikation nennt ihren Grund klar, dass Sub-Millisatoshi-Beträge nicht im Netzwerk übertragen werden können, da HTLCs in Millisatoshi denominiert sind, und die Testvektoren enthalten eine Rechnung, die unter der Überschrift "Invalid sub-millisatoshi precision" abgelehnt wird.
Die drei zusätzlichen Dezimalstellen verdienen sich in der Gebührenarithmetik ihren Platz. Ein weiterleitender Node erhebt eine proportionale Rate, die in Millionsteln eines Satoshi pro weitergeleitetem Satoshi angegeben wird, eine Rate von 1 auf eine Zahlung von 1.000 Satoshi ergibt also genau ein Millisatoshi. Runden Sie das auf ein ganzes Satoshi, haben Sie die Gebühr entweder vertausendfacht oder weggeworfen.
Wo Sie es sehen
Millisatoshi-Zahlen tauchen überall dort auf, wo ein Lightning-Werkzeug seine echten Zahlen statt einer gerundeten Anzeige zeigt.
Dekodieren Sie eine BOLT-11-Rechnung, erscheinen die Route Hints in dieser Einheit. Das eigene durchgerechnete Beispiel der Spezifikation listet zwei Hops, die eine Basisgebühr von 1 Millisatoshi und 2 Millisatoshi berechnen, und die Beispielrechnung für eine Bestellung im Blockstream-Shop trägt einen Route Hint, dessen Basisgebühr 1000 beträgt, ein ganzes Satoshi. Das Gossip-Update eines Kanals veröffentlicht htlc_minimum_msat und fee_base_msat in derselben Einheit, ein Dashboard, das diese Felder liest, zeigt also eine Zahl, die tausendmal größer ist als die Satoshi-Zahl daneben.
Wallets für Endnutzer verbergen die Einheit, aber nicht die Arithmetik. Phoenix veröffentlicht eine Gebührentabelle, statt Gebühren erst zum Zahlungszeitpunkt zu ermitteln, und das Senden über Lightning kostet 0,4 Prozent plus 4 Satoshi; bei einer Zahlung von 137 Satoshi ergibt der Prozentanteil 548 Millisatoshi, eine Menge ohne jede On-Chain-Darstellung. Muun zeigt On-Chain und Lightning als ein Guthaben, was die Grenze vollständig verbirgt, ohne sie aufzuheben.
Millisatoshi vs. Satoshi
Ein Satoshi ist der kleinste Betrag, den die Bitcoin-Blockchain erfassen kann, ein Millisatoshi ist ein Tausendstel davon und existiert nur in den Nachrichten von Lightning und in den Büchern, die seine beiden Peers führen.
Der Unterschied schlägt beim Schließen zu. Ein Kanalsaldo von 1.234.567 Millisatoshi ist als 1.234 Satoshi durchsetzbar und nicht mehr, weil die Commitment-Transaktion, die den Kanal On-Chain abwickelt, ganze Satoshi auszahlt; die übrig bleibenden 567 Millisatoshi haben keinen On-Chain-Output, in dem sie leben könnten, und sie sind nur ausgebbar, solange der Kanal geöffnet bleibt. Diese Lücke ist einen Bruchteil eines Cent wert, und sie ist trotzdem der Grund, warum die beiden Einheiten in allem, was die Blockchain berührt, nicht gegeneinander getauscht werden können.