Source: Bitcoin Magazine; Translation: Wuzhu, Golden Finance
Rollups have recently become the focus of BTC scaling and the first thing that truly steals the spotlight from the Lighting Network, gaining wider attention. Rollups aim to be an off-chain second layer that is not constrained or limited by the core Liquidity of the Lighting Network. In other words, end users need someone to allocate (or ‘lend’) funds in advance in order to receive money, or intermediate routing nodes need channel balances to facilitate the smooth flow of payment amounts from senders to receivers.
These systems were originally run on Ethereum and other Turing Complete systems, but the focus has recently shifted to porting them over to UTXO-based blockchains such as BTC. This article does not intend to discuss the current state of implementation on BTC, but rather the idealized Rollup functionality that people have been pursuing for a long time, which depends on the ability to directly verify Zero-Knowledge Proofs (ZKP) on BTC, a feature that is currently not supported by BTC.
The basic architecture of Roll is as follows: a single account (UTXO in BTC) stores the balances of all users in Rollup. This UTXO contains a commitment, which exists in the form of the Merkle root of the Merkle tree, committing all current balances of existing accounts in Rollup. All these accounts are authorized using Public Key/Private Key pairs, so to make off-chain expenditures, users still need to sign certain content using their Secret Key. This part of the structure allows users to leave at any time without permission, by proving that their account is part of the Merkle tree with a transaction, they can unilaterally exit Rollup without the permission of the operator.
The operator of Rollup must include a ZKP in the transaction to update the merkle root of the on-chain account balance during the process of completing off-chain transactions. Without this ZKP, the transaction will be invalid and cannot be included in the blockchain. This proof allows people to verify whether all changes to the off-chain account have been properly authorized by the account holder, and whether the operator has not maliciously updated the balance to steal users’ funds or dishonestly reallocated them to other users.
Suitable Rollup
In the appropriate Rollup, each time a new off-chain transaction is confirmed and the Rollup account’s state changes, the information is directly put into the blockchain. Not the entire tree, that would be too absurd, but the information needed to rebuild the tree. In a simple implementation, the digest of all existing accounts in the Rollup will include the balance, and the account is only added in the updated transactions of the Rollup.
In more advanced implementations, use balance differences. This is essentially a summary of which accounts have had funds added or removed during the update process. This allows each Rollup update to only include the account balance changes that have occurred. Then, users can simply scan the chain and ‘calculate’ from the beginning of the Rollup to derive the current state of account balances, allowing them to reconstruct the Merkle tree of current balances.
This can save a lot of expenses and Block space (thus saving funds), while still allowing users to ensure access to the information required for one-sided exit. The rollup rules require that this data be included in the formal rollup provided to users using the Block chain, that is, transactions that do not include an account summary or account difference are considered invalid transactions.
Validity Period
Another way to deal with the issue of user withdrawal data availability is to store the data somewhere outside of the blockchain. This introduces subtle issues, as rollups still need to enforce the availability of the data elsewhere. Traditionally, other blockchains have been used for this purpose, specifically designed to act as data availability layers for systems like rollups.
This creates a dilemma of having equally strong security measures. When data is directly published to the BTCBlock chain, Consensus rules can ensure that it is absolutely correct. However, when it is published to an external system, the best it can do is to verify the SPV proof, that is, the data has been published to another system.
This requires verifying that the data exists in other on-chain proofs, ultimately an Oracle Machine issue. BTC’s Blockchain cannot fully verify anything other than what happens on its own Block on-chain. The best it can do is verify ZKP. However, ZKP cannot verify whether the Block containing rollup data is truly publicly broadcast after generation. It cannot verify whether external information is truly publicly accessible to everyone.
This opens the door to data withholding attacks, wherein commitments to published data are made and used to advance rollup, but the data is not actually available. This results in users being unable to withdraw funds. The only real solution is to rely entirely on the value and incentive structure of systems other than BTC.
Dilemma
This has presented a dilemma for rollup. When it comes to data availability, there is essentially a binary choice of whether to publish the data to the BTC blockchain or elsewhere. This choice has significant implications for the security, sovereignty, and scalability of the rollup.
On the one hand, using BTCBlock chain as the data availability layer will set a hard limit on the scalability of rollups. Block space is limited, which sets a limit on the number of rollups that can exist at one time and the total number of transactions that can be processed off-chain by all rollups. Each rollup update requires block space proportional to the number of accounts whose balances have changed since the last update. Information theory only allows data to be compressed to a certain extent, at which point there is no more potential for expansion.
On the other hand, using different layers to achieve data availability will eliminate the hard upper limit of scalability gains, but it also brings new security and sovereignty issues. In the Rollup using BTC to achieve data availability, if the data that users need to extract is not automatically published to the blockchain, the state of Rollup cannot change. With Validiums, this guarantee depends entirely on the ability of the external system used to resist deception and data hiding.
Now, any Block producer on the external data availability system can hijack the funds of BTCRollup users by producing Blocks instead of actually broadcasting them, thus making the data available.
So, what would it be like if we really achieve the ideal Rollup implementation on BTC and truly enable unilateral user withdrawals?
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
Bitcoin Magazine: What challenges are Rollups facing?
Source: Bitcoin Magazine; Translation: Wuzhu, Golden Finance
Rollups have recently become the focus of BTC scaling and the first thing that truly steals the spotlight from the Lighting Network, gaining wider attention. Rollups aim to be an off-chain second layer that is not constrained or limited by the core Liquidity of the Lighting Network. In other words, end users need someone to allocate (or ‘lend’) funds in advance in order to receive money, or intermediate routing nodes need channel balances to facilitate the smooth flow of payment amounts from senders to receivers.
These systems were originally run on Ethereum and other Turing Complete systems, but the focus has recently shifted to porting them over to UTXO-based blockchains such as BTC. This article does not intend to discuss the current state of implementation on BTC, but rather the idealized Rollup functionality that people have been pursuing for a long time, which depends on the ability to directly verify Zero-Knowledge Proofs (ZKP) on BTC, a feature that is currently not supported by BTC.
The basic architecture of Roll is as follows: a single account (UTXO in BTC) stores the balances of all users in Rollup. This UTXO contains a commitment, which exists in the form of the Merkle root of the Merkle tree, committing all current balances of existing accounts in Rollup. All these accounts are authorized using Public Key/Private Key pairs, so to make off-chain expenditures, users still need to sign certain content using their Secret Key. This part of the structure allows users to leave at any time without permission, by proving that their account is part of the Merkle tree with a transaction, they can unilaterally exit Rollup without the permission of the operator.
The operator of Rollup must include a ZKP in the transaction to update the merkle root of the on-chain account balance during the process of completing off-chain transactions. Without this ZKP, the transaction will be invalid and cannot be included in the blockchain. This proof allows people to verify whether all changes to the off-chain account have been properly authorized by the account holder, and whether the operator has not maliciously updated the balance to steal users’ funds or dishonestly reallocated them to other users.
Suitable Rollup
In the appropriate Rollup, each time a new off-chain transaction is confirmed and the Rollup account’s state changes, the information is directly put into the blockchain. Not the entire tree, that would be too absurd, but the information needed to rebuild the tree. In a simple implementation, the digest of all existing accounts in the Rollup will include the balance, and the account is only added in the updated transactions of the Rollup.
In more advanced implementations, use balance differences. This is essentially a summary of which accounts have had funds added or removed during the update process. This allows each Rollup update to only include the account balance changes that have occurred. Then, users can simply scan the chain and ‘calculate’ from the beginning of the Rollup to derive the current state of account balances, allowing them to reconstruct the Merkle tree of current balances.
This can save a lot of expenses and Block space (thus saving funds), while still allowing users to ensure access to the information required for one-sided exit. The rollup rules require that this data be included in the formal rollup provided to users using the Block chain, that is, transactions that do not include an account summary or account difference are considered invalid transactions.
Validity Period
Another way to deal with the issue of user withdrawal data availability is to store the data somewhere outside of the blockchain. This introduces subtle issues, as rollups still need to enforce the availability of the data elsewhere. Traditionally, other blockchains have been used for this purpose, specifically designed to act as data availability layers for systems like rollups.
This creates a dilemma of having equally strong security measures. When data is directly published to the BTCBlock chain, Consensus rules can ensure that it is absolutely correct. However, when it is published to an external system, the best it can do is to verify the SPV proof, that is, the data has been published to another system.
This requires verifying that the data exists in other on-chain proofs, ultimately an Oracle Machine issue. BTC’s Blockchain cannot fully verify anything other than what happens on its own Block on-chain. The best it can do is verify ZKP. However, ZKP cannot verify whether the Block containing rollup data is truly publicly broadcast after generation. It cannot verify whether external information is truly publicly accessible to everyone.
This opens the door to data withholding attacks, wherein commitments to published data are made and used to advance rollup, but the data is not actually available. This results in users being unable to withdraw funds. The only real solution is to rely entirely on the value and incentive structure of systems other than BTC.
Dilemma
This has presented a dilemma for rollup. When it comes to data availability, there is essentially a binary choice of whether to publish the data to the BTC blockchain or elsewhere. This choice has significant implications for the security, sovereignty, and scalability of the rollup.
On the one hand, using BTCBlock chain as the data availability layer will set a hard limit on the scalability of rollups. Block space is limited, which sets a limit on the number of rollups that can exist at one time and the total number of transactions that can be processed off-chain by all rollups. Each rollup update requires block space proportional to the number of accounts whose balances have changed since the last update. Information theory only allows data to be compressed to a certain extent, at which point there is no more potential for expansion.
On the other hand, using different layers to achieve data availability will eliminate the hard upper limit of scalability gains, but it also brings new security and sovereignty issues. In the Rollup using BTC to achieve data availability, if the data that users need to extract is not automatically published to the blockchain, the state of Rollup cannot change. With Validiums, this guarantee depends entirely on the ability of the external system used to resist deception and data hiding.
Now, any Block producer on the external data availability system can hijack the funds of BTCRollup users by producing Blocks instead of actually broadcasting them, thus making the data available.
So, what would it be like if we really achieve the ideal Rollup implementation on BTC and truly enable unilateral user withdrawals?