NFT scaling solutions are not equal
The purpose of this article is to help users and developers compare and contrast the various scaling strategies that have been proposed and built and explain the solution Immutable.com went with and why.
The properties of these solutions have a direct impact on the security of user assets and the challenges developers will face. Everyone who uses, mints, or trades NFTs on Ethereum knows that scaling is the key challenge facing the industry right now. The uniqueness of NFTs, a key part of their desirability, is also the very thing that makes them expensive and illiquid to trade on a blockchain with a limited capacity.
Many teams are working extremely hard to give players and studios what they want: scalable, instant, and trustless minting and trading of NFTs. As the developers of Gods Unchained, we know this issue all too well and have spent considerable time and money to fully understand how we cross this chasm.
Alternative Blockchains (Tron, Flow, EOS)
Alternative blockchains, which make different design decisions to ETH to prioritize throughput, are commonly proposed scaling solutions. This includes projects like Tron and EOS, which support general-purpose applications, as well as projects like Flow, which are targeting NFTs specifically.
In general, the blockchain trilemma still applies: the only fundamental scaling boosts come from a reduction in security or decentralization or both. Nevertheless, this is a decision that comes down to individual applications: what makes sense for users of one game may not make sense for another.
However, with the rise of layer 2 solutions built on ETH, the key advantage of these alternative blockchains (scalability improvements) is under threat. Ethereum remains the largest smart contract blockchain in the world. It has built up enormous network effects and is the platform of choice for users and developers alike. It has significant ecosystem support: exchanges, wallets, fiat providers – even regulators are very familiar with Ethereum and how to interface with it.
Building all this infrastructure from scratch while trying to compete with Ethereum’s momentum will be a daunting challenge.
Sidechains (Matic, Ronin, xDai)
Sidechains are separate blockchains that run parallel to Ethereum. They have their own miners (often called validators and operators), their own consensus algorithm, and their own bridge to transfer assets to and from the main chain (in this case, Ethereum). Users deposit by locking their assets in a mainnet smart contract. To withdraw back to Ethereum, users initiate an exit on the sidechain, then provide proof of the exit once it is included in the side chain’s history.
Sidechains are very effective at general computation, and all EVM contracts can be ported directly to run on the sidechain, enabling ETH-like interoperability between contracts on each sidechain, as well as application-level logic.
This makes them a common choice for NFT scaling, as applications can migrate with low overheads and development time.
However, sidechains, like alternative blockchains, usually relax Ethereum’s security and decentralization in order to reach their desired scale. Users should be careful not to assume that their ETH assets, while in a sidechain, are just as secure as they are on mainnet: they are only as secure as the consensus algorithm of the sidechain. For sidechains with a limited number of operators and a vulnerable consensus algorithm (i.e. most of them), this could result in the complete theft or ransom of all user assets stored in the sidechain.
Sidechains also often require additional tooling to be built to support the requisite level of UX.
Plasma chains are a type of sidechain which avoids the security problems described above (at the cost of some scale) by publishing the roots of each plasma chain block on mainnet Ethereum. This ensures that (in theory) plasma chains directly inherit the security of the parent blockchain.
However, they have a significant disadvantage in that withdrawals from the plasma chain can take up to 2 weeks, as there is a requirement for a challenging period (‘exit game’) where users can report fraud. This dramatically impacts the UX of the system for users – explaining to mainstream gamers the complex reason they can’t access their assets immediately is an unenviable task.
State Channels (Efinity, Raiden)
State channels are a general-purpose scaling solution that is most useful in interactions between a defined number of participants in a closed system.
State channels require an opening and closing transaction on-chain, but all the intermediate states are sent directly between the parties (who both sign to indicate assent). Imagine a game of tic-tac-toe where we each sign off on each other’s moves. If either of us claims we won unjustly, the other can produce the contradictory signature and force an on-chain arbitration.
Importantly, state channels need 100% availability of all the participants involved, or one user could publish an old state and claim it as the latest. If we’re sending NFTs backward and forward between us, you can see the damage that might cause. The participants can use someone to represent them if they go offline, but this third-party could be bribed or attacked (particularly if one entity is fulfilling this function for the entire ecosystem).
Rollups “roll-up” large numbers of transactions into a big batch, then generate a “proof” for that batch. Using this proof, rather than checking each trade individually, we’re able to check the entire batch at once.
Generally, users will deposit their assets into a smart contract on-chain, and their assets will be made available for instant trading in an off-chain environment. Users can subsequently withdraw back on-chain under certain conditions (usually waiting for a withdrawal batch to be published). These systems often allow the ‘operator’ of the system to censor transactions by not including them in batches, but give users the option to withdraw those assets back on-chain to preserve user custody.
Rollups are the latest of the scaling technologies described in this document to reach “production-grade”, and are the subject of significant excitement for everyone involved in Ethereum. Last month, Vitalik Buterin declared that “the Ethereum ecosystem is likely to be all-in on rollups as a scaling strategy for the near and mid-term future”.
Optimistic Rollups (Optimism)
Optimistic rollups are “optimistic” because they assume that the proof provided for each transaction batch is valid. During a pre-defined challenge period (usually 1-2 weeks), anyone can challenge the submitted proof and assert fraud – these are therefore called “fraud proofs”. The advantage of optimistic rollups is that they easily support general computation: you will be able to copy/paste your mainnet Solidity code.
However, they have significant limitations for scaling NFTs. Firstly, there is no possibility for fast NFT withdrawals – taking your NFT out of the system can require a 1-2 week wait. Secondly, in the event that an optimistic rollup is very successful and contains a significant amount of value, they can become a target for attacks, as the cost of stealing funds from the Optimistic Rollup is unrelated to the size of the potential theft – a penalty for the growth that we and others expect in the NFT ecosystem.
ZK-Rollup (Immutable X)
ZK-rollups use “validity proofs” rather than the fraud proofs described above, using either SNARKs or STARKs and plenty of complex mathematics to prove the validity of the transactions in the rollup. Using validity proofs means that once a proof has been accepted on-chain, users have immediate confirmation that those transactions were valid and are now immutable. In an NFT context, this solves both the problems identified with optimistic rollups above: users can withdraw immediately and no-one is able to attack the system, regardless of the value flowing through the system. In terms of scale, ZK-rollups have been able to reach speeds of thousands of transactions per second, and are easily capable of reaching even higher limits.
The current disadvantage of ZK-rollups is general computation: it is more challenging to port smart contract logic directly into the rollup, and therefore only limited functionality is available e.g. transfers and trades. However, with the fantastic work the StarkWare team is doing with CAIRO, ZK-rollups will soon have parity in terms of general computation as well.
What did we choose? Why?
At Immutable we’ve worked in-depth on blockchain games for years with titles like Gods Unchained. When comparing scaling solutions, we knew what we wanted:
- Unlimited scalability
- Instant transaction confirmation and mainstream-quality UX
- No compromise on user security
- Retaining access to Ethereum’s ecosystem and network effects
This made our choice easy: we built Immutable X, a ZK-rollup engine for NFTs in partnership with StarkWare. ZK-rollups are the only solution above capable of scale without compromise, and though they still have disadvantages in the area of general computation, those challenges are rapidly being resolved. When you build an application using a scaling solution, you are committing to that solution: we wanted to ensure we backed the winner not just for right now, but for years to come.
We know the NFT ecosystem desperately needs scalability. With Immutable X, we’re offering that scalability to everyone without forcing applications or users to compromise on the security of their assets, and the response has been phenomenal. If you’d like to find out more, or signup to our alpha (either to trade assets or create your own), head to our website.