lightning-dev

Stale Factory (and channel) problem

Stale Factory (and channel) problem

Original Postby Alejandro Ranchal Pedrosa

Posted on: April 21, 2019 02:38 UTC

In an email exchange on the Lightning-Dev mailing list, Alejandro Ranchal Pedrosa and ZmnSCPxj discuss the potential of using SIGHASH_NOINPUT to address issues with stale offchain systems.

This problem arises when one participant in a multiparticipant offchain system sends a signature that advances the protocol, but is then unable to receive further signatures from other participants to continue the protocol. For two-participant offchain systems (payment channels), the issue can be fixed by allowing the exchange of signatures of the most recent state upon re-establishing a communication channel. However, for multiparticipant offchain systems that host other offchain systems (channel factories), it is unknown whether or not dropped participants are able to construct the new state, making it ambiguous if on-factory channels should be rooted from the old state or the new state. ZmnSCPxj suggests that SIGHASH_NOINPUT could help address this issue, as on-factory channels not affected by a channel reorganization operation at the factory level can continue to operate by use of SIGHASH_NOINPUT. In an example provided, if channel states use SIGHASH_NOINPUT in signatures, then unaffected channels can continue operation even if a factory-level operation is in an indeterminate state. Alejandro Ranchal Pedrosa notes that while SIGHASH_NOINPUT offers similar functionality to what he suggests in his paper, there may be some variants to SIGHASH_NOINPUT that could affect the no-lock property of offchain layers. Nonetheless, with minor variants (listed in the paper), SIGHASH_NOINPUT could work well as a solution.