This is also something that has been discussed frequently in the past. Sequencers are a crucial piece of the rollup stacks. I’d say they’re important for two main reasons:
- Soft Finalization: This is super useful for UX. When you have a trusted and relieable sequencer, it lets you predict the effects of your transaction before they’re officially added to the base layer – which can take a while. This means much quicker feedback for users on the app’s interface.
- Cost-Effective Inputs: By bundling interactions together and sending them to the blockchain in one go, sequencers help dilute the cost of engaging with Layer 1. This is cost-effective, especially when dealing with a high volume of inputs.
There’s also this idea of shared sequencing. It sounds promising for future stuff like better L2<>L2 interactions, atomic transactions, and other cool things.
building our own sequencer might seem like a big leap. It involves setting up and managing a lot of infrastructure. Luckily, there are already some pretty cool solutions out there. Like Espresso (a decentralized shared sequencer), which we tried and had some good results with: Minimalist integration Cartesi Rollups & Espresso Sequencer - #13 by milton-cartesi.
There might be some technical challenges ahead: we’ve got to figure out how to juggle reading from L1 (for things like deposits and sequencer downtime/censorship/malfunctioning) and the sequencer feed part. We might even need to delve into a bit of ‘time traveling’ to get it right. We’d have to think if the input box would be unified or if each dapp will have a different subscription to the sequencer. There’s stuff like sorting out input metadata (to allow fast finalization) and the signing/msg.sender aspects.
But all in all, I believe its an obvious step for the evolution of our rollups stack - it improves UX and makes interactiosns significantly cheaper.