Hey everyone!
Our team (also behind this and this recently), has been exploring the concept of succinct programmability.
In short, basically, our bridge is only able to realistically work with the first 58 bytes of the ciphertext (memo) in a transaction, which is basically nothing for a program. You can’t even cram a proper SHA-512 hash in it!
Instead, we are developing ESMASTe/ESMASTL: extended, sandboxed Merklized Alternative Script Tree Evaluators.
What are these?
These are Merkle trees you can “commit” to in a trustless bridge transaction that look COMPLETELY RANDOM and encrypted to anyone but the receiver (who is only able to tell that it is not a standard memo), until the moment you decide to execute the script programmed inside it, as Keccak256 is a pseudorandom hash function (or more accurately, a random oracle function).
Since it’s a Merkle tree root, it is theoretically possible to cram infinite layers of programs in there, but in practice we limit it to 12 layers (2,048 workable program paths) per transaction.
They are functionally very similar to Taproot, but way less complex and way better. They don’t require any network upgrades to Zcash, and work out-of-the-box with v5 and v6 shielded transactions.
Using this, you can essentially “program” that after your swap finishes, anyone can claim the resulting ETH after X days. Or maybe you can program that after your swap finishes, the money is sent automatically to AAVe and deposited in a pool. Or maybe you can program that the money is sent to a donation address. The possibilities are endless (well, not endless, there are 61 opcodes right now and we don’t have proper control flows).
When its time to actually run the flow you want, you simply reveal a succinct proof that the path is one you pre-authorised in the root, and provide the actual path program to a relayer, who broadcasts it for you.
All you have to do is use an intuitive drag-and-drop script editor (Scratch-like!) or download a script someone else made (although that’s dangerous) or set it to a script that’s already vetted, much like how contracts work on Ethereum.
What we want right now is opinion on whether this is something the community would like, as it would allow relayed transactions to do virtually anything you want ONLY if you want it to be executed, but on the other hand it still does require relayers and thus the incentives that come with it.
Should this be further developed? React to this post to let us know, so we know that it is worth developing more on.
Also, this reminds me, @GGuy this is kind of what you envisioned in your The Future of Atomic Swaps , didn’t you? Would LOVE your opinion on this!
Click here to donate and support us
ZEC: u1z4k39nmw7qy8fu0n2fsntd4528d33wy9ms603tunfv94kl0n0tqur9w30sj9xt6ve6jz9mp78s3dlzm7xla3jg2s4at76a8vv5galg6k
TAZ (directly to the liquidity pool): utest16fndgs84ecpuy97aus3xhuk2r5rzayr6jjgjdr9qxed2zn8kr7ezksg64a5pa6e7t93hlgmjea2ru0retuc3tymw7drlupsrs5yd5gzx
ETH: 0x720BbF4bD4cD576F5098F559cAaF671AEb15b985
(This appendix was automatically added via a Chrome plugin)