The “Cuttlefish” protocol update has been enacted by the validator set and is now live on the Radix Public Network and the Stokenet test network.
The headline feature of Cuttlefish is subintents (called pre-authorizations in the Radix Wallet), which function like mini transactions that can be embedded within other transactions. They are complete user intents which are signed separately and can be passed around off-ledger to be assembled with other intents into a complete transaction.
The Power of Subintents
Subintents enable a wide variety of interesting use cases where different actors can sign parts of a transaction that they’re interested in, with an expectation that another part of the transaction will handle getting their desired outcome.
Each subintent in a transaction exists within its own “walled garden,” so there’s no unintended sharing of permissions with other parts of the transaction, and subintents can pass resources back and forth with their parent (and children, if any) during execution.
The Radix “all-or-nothing” guarantee of transaction execution remains in place: all instructions in all subintents must fully execute successfully or the entire transaction will fail, so users are always assured that they won’t wind up with only part of their intent.
Check out this video of RDX Works CPO Matthew Hine explaining how subintents work and going into some sample use cases.
Developers may want to review the technical reference documentation on subintents, as well as the freshly-overhauled general transaction documentation.
Throughput Improvements
Transaction benchmarking revealed some low-hanging fruit for performance improvement which was worked in for Cuttlefish. Please note that this is separate from the still-to-come, more comprehensive effort on looking at ways to maximize throughput.
Scrypto Updates
Radix has supported ECDSA/secp256k1 and EdDSA/Ed25519 for transaction signing since the Babylon release, and now the related primitives for verification are also available directly in Scrypto, for those wishing to do so within on-ledger components at native speed & cost.
The Account blueprint has been updated to expose getter methods for balances for use cases where producing Proofs of amounts is not desired.
Please see the complete release notes for the full set of changes.