# web2 rollups i was thinking the other day, a disconnected but asyncly connected world of rollups is better or a single monolith blockchain is better, i couldn't come to a conclusion. but my liking towards web2 rollups increased during this process. ## why? web2 rollups are nothing but a web2 server tied up with a sequencer (optional), bundler/proposer (mandatory) and some kind of proving system (validity/fraud) so if we take care of those 3 things, which we can (not easy but managable), we can convert any server, literally any application to a micro rollup that will settle on any blockchain of their choice. ## composability one of the main questions that everyone has, rollups are disjointed set of "blockchains", so having atomic cross rollup transactions is a pain-in-the-a**. there are some solutions like using shared sequencers, but not all rollups will use same shared sequencer :sweat_smile: another solution is to be good with async composability, meaning, rollup A will send a tx to rollup B but will not know the success state of that tx. this is true for normal rollups which uses any generalized vms like evm or svm. but web2 rollups are an exception, they do not use generalized vms but use specialized vms, specialized vms are nothing but normal backends and they are open to connect with outside world, wait for some data enabling seamless execution between multiple web2 rollups which are not even using the same shared sequencer, this might not be as good as atomic execution but it will still wait for the execution and extract data from it ## complexity web2 rollups does not introduce any extra complexity to the stack, it does introduce a little bit of complexity but it can be abstracted away by having a good SDK take care of sequencer and bundler/proposer. ## SDK i am looking at this SDK to provide multiple services into one, it will contain a sequencer, a proposer and some way to verify those proofs (validity/fraud) and along with it. ![image](https://hackmd.io/_uploads/SJGOGVaNT.png) sequencer will be in front of the application's core logic, it can be written in any language. sequencer can support multiple types of **messages**, these messages are then sent to the application's logic engine or its specialized vm, which calls appropriate function execute the state change. once the state change is done for the full block, logic engine will notify proposer of it, which will then generate proofs and push it to the blockchain.