Bolt is a proof of concept for permissionless proposer commitments through PBS. In its essence, it consists in a light fork of the current Mev-boost stack that allows users to request preconfirmations from proposers, and then adds a way for proposers to commit to transaction inclusion in a way that is easily verifiable.
- Users submit transactions to the proposer next in line (^1)
- The proposer can accept this transaction, and send a preconfirmation to the user
- The PBS builders can then request the list of preconfirmed transactions from the proposer
- Builders build valid blocks with the preconfirmations and append a proof of inclusion with their bids
- The relays can then forward these proofs to the proposers when the
getHeader
request is made - The proposer now has all the necessary info to verify if the payload includes the preconfirmations
- If the block is valid, the proposer can propose it as usual. If not, the proposer can self-build
(^1) This is a simplification for the sake of the proof of concept. In production, it's not ideal to have proposers expose an endpoint and accept direct traffic. We are planning to use a distributed relay network to handle parts of the communication and pricing of the preconfirmations.
For this proof of concept, we are using a full Kurtosis devnet stack, with custom PBS images. To run the devnet, you can use the following commands:
# build all docker images locally first (this will take a while)
make build-images
# spin up the kurtosis devnet
make up
and to stop it:
# stop and remove the kurtosis enclave
make down
# clean up artifacts and stop the kurtosis engine
make clean