eltoo: A Simplified update Mechanism for Lightning and Off-Chain Contracts



Summary:

The paper discusses the use of SIGHASH_NOINPUT in combination with SIGHASH_SINGLE for off-chain transactions. These transactions involve funding, trigger, update, and settlement transactions that are signed with SIGHASH_NOINPUT flags. The update transaction script has two branches: a CSV-encumbered N-of-N "settlement" branch, and a CLTV-encumbered N-of-N "update" branch. The CLTV-encumberance ensures that if a past update transaction is confirmed, we can spend it using any later update transaction, since CLTV uses `stackTop past Unix timestamp so they are not actually time-encumbered.The pubkeys on the settlement branch of each update transaction are different and are derived using any hierarchical derivation method. The pubkeys on the update branch are all the same in all update transactions. This lets any update transaction replace any other update transaction, as long as the CLTV-encumberance is respected. Settlement transactions can carry contracts, which will be affected by the CSV-encumberance of the settlement transaction. Compared to Poon-Dryja (LN-penalty) channels, this approach requires more transactions in the worst-case, but dropping unilaterally on-chain requires the party doing the drop to have some on-chain funds it controls completely, since update transactions do not pay fees by themselves. However, the onchain reserve for paying fees for unilaterally dropped channels might be feasibly smaller than the channel reserve under Poon-Dryja. Like invalidation trees, N-party funds rather than just 2-party funds (channels) can be used.


Updated on: 2023-05-24T23:52:42.973867+00:00