A simple approach to allowing recursive covenants by enabling quines

The idea behind OP_ASSERT_OUTPUT is that it’s a dumbing down of OP_CTV. It only makes a claim about one output rather than the entire transaction, allowing for it to be used more dynamically, have less complexity, and target specifically the thing which covenants are, which is specifying outputs. It can of course be called multiple times if you want to make multiple outputs. It’s following the general pattern of OP_CHECKLOCKTIMEVERIFY in that it narrowly talks about a very specific part of the transaction rather than the whole thing.

My motivation behind this design is to enable playing games over state channels. I am happy to report that it does, in fact, enable that with no further enhancements necessary. This is a bit non-tangible at the moment because state channel gaming isn’t out at all yet but I’m near completion on a proof of concept of it and having spent a few years on the project have a deep understanding of what’s needed to enable it.