pending_htlcs

pending_htlcsとはなにか。nodeを運用し始めて数日立つけど、この事象は発生したことがなかったので、気になった。
lndmonでもここはモニタリングしてるが、なかなか発生しない。

結論から言えば、lndで挙げられているissueをみればわかる。

htlcのペンディングは、受信側のnodeがなんらかの理由で保持し続けた場合か、ルーティングノードが途中でダウンした場合に発生する。

lightning networkのmultihop paymentではhtlcのコントラクトが伝染することによって、裏切りを巧みに防ぎながらオフチェーントランザクションをさばいている。

詳細としては、overviewが詳しい。 念の為確認として、htlcとは下記のようなコントラクトのことだ。

あるユーザー間(売り手と買い手)の決済を行うコントラクトで、売り手がハッシュのプリイメージを公開することで資金を入手することを可能にし、買い手が指定期間内に売り手がプリイメージを公開せずタイムアウトになった際に、資金を取り戻すことを可能にするスクリプトである。

OP_IF  
    [HASHOP] <digest> OP_EQUALVERIFY OP_DUP OP_HASH160 <seller pubkey hash>            
OP_ELSE  
    <num> [TIMEOUTOP] OP_DROP OP_DUP OP_HASH160 <buyer pubkey hash>
OP_ENDIF  
OP_EQUALVERIFY  
OP_CHECKSIG  

一般的に、このhtlcの伝染はオフチェーンで高速で行なわれるため、「htlcのペンディングは、受信側のnodeがなんらかの理由で保持し続けた場合か、ルーティングノードが途中でダウンした場合」が頻発するとは起こりづらい。とおもうのだけど、なぜ起こるんだろう。