`OP_EVICT`: An Alternative to `OP_TAPLEAFUPDATEVERIFY`



Summary:

In a recent email conversation between Antoine and ZmnSCPxj, they discuss the differences between `OP_TLUV` and `OP_EVICT` in terms of their assumptions about cooperation among construction participants once the Taproot tree is set up. While `OP_TLUV` leaves the transaction output with the remaining Tapleaves intact, `OP_EVICT` assumes cooperation among the remaining construction participants to satisfy the final CHECKSIG. In order to revive the construct with `OP_TLUV`, a separate transaction that spends the change output is required, whereas `OP_EVICT` does another CHECKSIG without requiring a separate transaction. The discussion then moves onto the topic of withdrawing funds unilaterally without affecting the stability of the off-chain pool and without cooperation with other users, which is currently a restriction of channel factories fault-tolerance. The blockchain is the only entity that can reliably enforce timeouts, hence, if a channel has an HTLC/PTLC time out, it may be necessary to evict the participant who is not behaving properly, and that is what `OP_EVICT` does. ZmnSCPxj came up with the idea of `OP_EVICT` after musing on this topic.


Updated on: 2023-06-15T17:01:55.364513+00:00