ECC’s recently-announced draft Orchard requirements, which guide its design of the proposed protocol upgrade, include this explicit non-requirement:
NonR2. User-Defined Asset Precursor Support
Non-Requirement: The protocol does not require precursor support for a future User-Defined Assets feature.
Rationale - Technical Strategy: Getting precursor support right requires certainty about a subset of UDA requirements, and blocking Pollard on clarifying future UDA requirements introduces more deployment & execution risk.
To recall, UDA (User-Defined Asset) support means letting transactions on the Zcash blockchain convey various distinct assets, beyond than just ZEC. For example, we would have “shielded BTC”, shielded USDC", etc., all benefiting from Zcash’s privacy.
By analogy, consider ERC-20 tokens, and things like wrapped Bitcoin represented on the Ethereum blockchain. Except that wrapping assets on Ethereum is done for the smart-contract functionality or interoperability, while UDAs on Zcash would be used to attain privacy, fungibility and censorship-resistance of a multitude of assets for a potentially huge userbase. And analogously to Ethereum, UDA transactions on Zcash would still be paying their fees in ZEC.
Strikingly, we already know how to add UDA support to the existing Zcash Sapling protocol! ECC has already figured it out and even prototyped it! We could have added it with a network upgrade that’s much simpler than Orchard.
But the above non-requirement means rejecting or delaying UDAs for potentially a very long time. It’s not just wasting this opportunity to deploy UDAs. It’s also refusing to plan ahead and design for the addition. In particular, it means being fine with the possibility that adding User-Defined Assets will require another incompatible major upgrade, with another address format change and another pool migration, even if such disruption can be easily avoid by “precursor” support.
My opinion: this is a grave mistake. Even if we can’t usably deploy UDAs right away with Orchard deployment, we should prepare the ground for UDA support in the protocol. This is an important investment with potentially huge payoff (namely avoiding the above disruption and its associated costs and delays).
If there are specific downsides to planning ahead for UDAs and including whatever precursor support is needed in Orchard to minimize disruption, then these downsides should be openly discussed. And let’s see if the community can help in mitigating them.
Let’s discuss?
Edit: This topic was originally titled “ECC rejecting User-Defined Asset precursor support in Orchard”. Changed after the intended semantics and technical facts became clearer.