Design Principles
The constraints API was built on the following design principles.
Expressivity
The API should be maximally expressive to cover multiple use cases. In essence, a constraint submission is an array of
{ transaction, index }
entries. The transaction field is required, while the index is not. This allows for the following
patterns:
- Single transactions with no ordering preference: array of a single transaction
- Bundles at the top of the block: array of multiple transactions with indexes starting at 0
- Bundles at the rest of the block, only preference over relative ordering: array of multiple transactions without indexes
We believe these constraint primitives should be able to cover most commitment types: ToB / RoB auctions, inclusion preconfirmations, execution preconfirmations etc.
Simplicity
The { transaction, index }
constraint schema is very simple.
Verifiability
Proposers should be able to verify the constraints on any builder bids without needing to know the contents of the payload. This schema allows for the generation of proofs for any of the constraint patterns. See inclusion proofs for more information.