I vaguely remember a paper which stated that in their current implementation, lightning watchtowers require a lot of memory because they need to store information about (a penalty TX for) every balance change that happens on a channel they watch. And that eltoo would be more memory-efficient because it only requires storing information pertaining to the latest respective state. However, when talking about this in a large group of bitcoiners, there was no consensus about this. Does anyone know whether this is actually the case? Does a watchtower really need to store info about every channel balance change?
1 Answer
Without eltoo (ie today) a watchtower needs to store a different justice transaction for every channel update in case the channel counterparty broadcasts (deliberately or accidentally) an expired channel state.
With eltoo (once/if we have SIGHASH_ANYPREVOUT enabled onchain) a watchtower will only need to store a single justice transaction in case the channel counterparty broadcasts an expired channel state. The watchtower can delete old justice transactions.
This presentation from Christian Decker at Chaincode Labs is a great resource on eltoo.
-
2In fact, since the commitment transactions in eltoo are symmetric, it's even sufficient to store only a single state per channel, rather than per channel participant!– Murch ♦Commented Mar 15, 2021 at 21:19
-
2Another trick that Richard Myers came up with is that you only need to store a commitment if you receive, since that's what you're interested in, so you can stay silent and just tell the watchtower whenever your balance increased, your peer is incentivized to do the same whenever their balance increases, further halving communication costs.– cdeckerCommented Mar 16, 2021 at 10:10