nayutaco / ptarmigan

Lightning Network (BOLT)
Apache License 2.0
132 stars 19 forks source link

channel pruning algorithm #466

Open nayuta-ueno opened 6 years ago

nayuta-ueno commented 6 years ago

今のところ、dijkstraのshortest pathアルゴリズムで送金経路を求めている。 その経路でupdate_fail_htlcが返された場合は、失敗したchannelを経路から外して再計算する。 これを繰り返し、送金に成功するか、経路が見つけられなくなるまで再送している。

経路から外す際、恒久的に除外するか、一時的に除外するかという情報を持たせている。 一時的に除外する場合は、次の新しい送金では経路として含めるようになる。

今は、以下だけを一時的に除外している。

ログを見る限りでは、失敗理由はtemporary_channel_failureunknown_next_peerがほとんどのため、新しく送金を行っても再送が頻繁に発生している。 channel_announcement/channel_updateだけで情報を集めているが、何か考慮漏れがあるのだろうか? あるいは、temporary_channel_failureを登録してしばらくは経路から外すような考慮が必要なのだろうか。

nayuta-ueno commented 6 years ago

今は暫定として、ucoincli -Rというオプションを用意し、その場合は一時的に除外する経路も除いたまま送金を開始するようにしている。 その場合は、再送が少ない。