Rollups have been a major point of interest focus of development in the Tezos community, but they're not well understood yet. We did a Twitter thread on using new Tezos technologies such as rollups and account abstraction- what they are and how we did ours.
This article is the result of the follow-up discussion with Daniel Hines, developer at Marigold leading their smart rollups initiative. We discussed with him what we built, the smart rollups they’ve been developing, and how to drive adoption.
Layer 2 & 3 Rollups? What’s this all about?
The problem with rollups is that there are no official definitions of what a Layer 2 is. Some roll ups are simply for NFTs, some include smart contracts, and some are more esoteric. Because of this, definitions and expectations are all over the place.
In the Ethereum world, some people have started using new terms to differentiate their efforts. For example, the Lens Protocol has had a number of stories of developers looking to scale its social actions with rollups, rather than being limited by the throughput of Polygon (see addendum at the end of the article).
We built our own rollup for social actions on DNS.xyz. You can create posts, which are minted as NFTs on Tezos (layer 1). You can post likes and comments, which are added to our rollup and on IPFS.
How the DNS rollup works
When a user likes an NFT or comments on the NFT:
- The like and comment appears instantaneously on the site
- The action gets added to a large list
- The list is bundled, and added to IPFS every 10 minutes
- We also make the actions visible in our GraphQL
- The resulting additions to IPFS are added to a Tezos contract every 10 minutes
You get the best of both worlds: web2-like user experience, but web3 openness. You can like hundreds of posts and leave comments seamlessly. You don’t have to wait for the blockchain. You don’t have to pay for gas. You can see everything on IPFS, and on the blockchain.
When you make a post (upload an image, write some text…), it’s still a regular NFT on Layer 1. So there’s no need for a bridge. However, for comments and likes, you don’t need to make Layer 1 NFTs. With this approach, you can leave likes and comments on any Tezos NFT, and still end up with the data available to everyone
Q&A with Daniel Hines
edited for clarity
Right now, when you use a Tezos service, you wait 15-30 sec for transactions to finalize. It’s even longer, and more expensive on Ethereum. I’m used to sites loading instantaneously, for likes, comments, and even purchases being instantaneous.
If you go back to the Bitcoin whitepaper, the primary purpose of a blockchain is a decentralized timestamping service. Bitcoin is the purest, rawest implementation of blockchain. Web 3 was built by decentralization visionaries, but it's just database technology. The way people build on blockchain right now is: it's always technology first.
What do you think is a better approach?
The problem with building technology first is that it forces you to fix things in hindsight. You could cut a lot of corners, and capture a lot of the value of decentralization, by building differently.
Your team is building an open, decentralized social media platform. You don’t need to implement every aspect of a Layer 2 into your product: you could go extremely far by just timestamping hashes of your data, or timestamping IPFS hashes on Tezos. It’s the approach your team took.
It's arguably more open than a platform like Twitter. Anyone with access to those IPFS nodes, can download not just the entire state, but the entire history! Now users can easily download data from DNS, while on Twitter, you have to pay their API fees. Since you’ve made all the posts NFTs, there’s a direct model we can shift towards, in contrast to how platforms like Twitter serve ads but users don’t get revenue. I think it's great.
We decided to build our own rollup specifically for likes and comments. What are your thoughts on this approach?
With an L2 like Arbitrum, people are routing to a centralized sequencer. This is the dominant pattern for L2s, but nothing is stopping anyone from routing transactions through some kind of sequencer on their own to get instant results and then settling on an L1 later. Doing this on an L1 like Tezos, where it's cheap, and verifiable on Michelson contracts makes a lot of sense and you're the first people to do this to my knowledge. And because you’re running your own sequencer, you can still manage content moderation.
You’re processing sequences of transactions (the likes, comments, and replies) using the Tezos L1 for timestamping. Basically, you reimplemented tzstamp for social by computing off-chain and posting the results. Now your server logs are public information where anyone can audit your data it canonicalizes the data. You might tamper with it on your server, but not once it’s posted, because changing that requires a ⅔ attack on Tezos.
What are the pros and cons?
You guys are leveraging a space where publicly verifiable data is valuable to users, even if your particular smart contract can't compute over that data. For example, you couldn't write a smart contract where each time an NFT gets a hundred likes, some counter on the chain increases or or the user gets like 0.1 XTZ. You couldn't do that fully on chain, but you now have an interoperable standard, and with strong standards, if someone wants to make a role-playing game, where the weapons are twitter-like posts, you can now.
There’s a joke about how in Star Wars, R2D2 somehow just knows how to interoperate with the Death Star. Yet, in software it takes 5 years and $2m to make an integration point.
The key insight here is the value to users in linking data to an L1, and that this value does not completely overlap with computation on L1. There’s a space in between having everything centralized and having fully decentralized magic computers. There’s a middle ground with off-chain centralized compute, but the data is transparent and timestamped, thus open and available for anyone to operate on however they wish.