You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In #2936, we changed WatchExternalChannelSpent to be a WatchSpent instead of a WatchSpentBasic. One of the consequences is that whenever we receive a channel_announcement, we will call checkSpent:
If the announcement is from a utxo that has been spent a long time ago, we go through client.lookForSpendingTx which iterates over blocks and is very inefficient. It's important to go through this process for our own channels, but for external channels this can be used as a DoS vector.
I'm not sure what exactly we should do: if we don't look into the blockchain, we won't find the spending tx and thus cannot wait 12 blocks before removing the channel. But if we look into the blockchain, that's expensive and can be abused...
The text was updated successfully, but these errors were encountered:
In #2936, we changed
WatchExternalChannelSpent
to be aWatchSpent
instead of aWatchSpentBasic
. One of the consequences is that whenever we receive achannel_announcement
, we will callcheckSpent
:eclair/eclair-core/src/main/scala/fr/acinq/eclair/blockchain/bitcoind/ZmqWatcher.scala
Line 378 in 27ba60f
If the announcement is from a utxo that has been spent a long time ago, we go through
client.lookForSpendingTx
which iterates over blocks and is very inefficient. It's important to go through this process for our own channels, but for external channels this can be used as a DoS vector.I'm not sure what exactly we should do: if we don't look into the blockchain, we won't find the spending tx and thus cannot wait 12 blocks before removing the channel. But if we look into the blockchain, that's expensive and can be abused...
The text was updated successfully, but these errors were encountered: