Source: Bitcoin Magazine; Translation: Wuzhu, Golden Finance
Rollups has recently become the focus of BTC expansion, becoming the first thing to truly steal the spotlight from the Lighting Network, in a more widespread attention. Rollups aims to be an off-chain second layer that is not constrained or restricted by the core Liquidity of Lighting Network, i.e., 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 full flow of payment amounts from sender to receiver.
These systems were initially run on Ethereum and other Turing Complete systems, but recently the focus has shifted to porting them to UTXO-based blockchains (e.g., BTC). This article is not intended to discuss the current 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 Proof (ZKP) on BTC, a feature that BTC currently does not support.
The basic architecture of Roll is as follows: a single account (UTXO in BTC) stores the balances of all users in the 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 the Rollup. All these accounts are authorized using Public Key/Private Key pairs, so in order to propose off-chain spending, users still need to sign certain content using the Secret Key. This part of the structure allows users to exit at any time without permission, simply by proving that their account is part of the Merkle tree. They can unilaterally exit the 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 off-chain transaction process. 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 reallocate them to other users.
The question is, if only the root of the Merkle tree is published on-chain and users can view and access it, how can they place their branches in the tree so that they can exit without permission whenever they want?
Suitable Rollup
In the appropriate Rollup, each time a new off-chain transaction is confirmed and the Rollup account’s state changes, the information will be directly placed on the blockchain. Not the entire tree, that would be absurd, but the information needed to rebuild the tree. In a simple implementation, the summary of all existing accounts in the Rollup will contain the balances, and the accounts will only be added in the updated Rollup transactions.
In more advanced implementations, balance diff is used. This is essentially a summary of which accounts have increased or decreased funds during the update process. This allows each Rollup update to only contain the balance changes that have occurred in the accounts. Then, users can simply scan the chain and ‘calculate’ from the beginning of the Rollup to determine the current state of account balances, which allows them to reconstruct the Merkle tree of the current balances.
This can save a lot of expenses and Block space (thus saving money), while still allowing users to ensure access to the information required for unilateral exit. Rollup rules require that these data be included in the formal rollup provided to users using the Block chain, and transactions that do not include account summaries or account differences are considered invalid transactions.
Validity
Another approach to addressing the issue of user withdrawal data availability is to place the data elsewhere outside the Block chain. This introduces subtle issues as rollup still needs to ensure that the data is available elsewhere. Traditionally, other Block chains are used for this purpose, specifically designed to serve as the data availability layer for systems such as rollup.
This creates a dilemma of having equally strong security measures. When data is directly published to the BTCBlock chain, Consensus rules can guarantee its absolute correctness. However, when it is published to an external system, the best it can do is to verify SPV proof, which means the data has been published to another system.
This requires verifying that the data exists as proof on other on-chain, which is ultimately an Oracle Machine problem. The BTC Block chain cannot fully verify anything except what happens on its own Block on-chain, the best it can do is verify the ZKP. However, ZKP cannot verify whether the Block containing rollup data is actually publicly broadcast after generation. It cannot verify whether external information is truly public to everyone.
This opens the door to data withholding attacks, that is, creating a commitment to publish data and using it to advance rollup, but the data is not actually available. This prevents users from withdrawing funds. The only real solution is to rely entirely on the value and incentive structure of systems outside of BTC.
Dilemma
This has brought a dilemma to rollup. When it comes to data availability issues, there is basically 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 rollup.
On the one hand, using BTC blockchain as the data availability layer will set a hard upper limit for the scalability of the rollup. Block space is limited, which sets a limit on the number of rollups that can exist at once and the total number of off-chain transactions that all rollups can handle. Each rollup update requires Block space proportional to the number of accounts whose balance has changed since the last update. Information theory only allows data to be compressed to a certain extent, and there is no more potential for expansion at this point.
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 Rollups that achieve data availability using BTC, if the data that users need to extract is not automatically published to the blockchain, the state of the 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 BTCRollup users’ funds by producing Blocks instead of actually broadcasting them, thus making the data available.
So, what would it be like if we really achieved the ideal Rollup implementation on BTC and truly realized 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 does Rollup face?
Source: Bitcoin Magazine; Translation: Wuzhu, Golden Finance
Rollups has recently become the focus of BTC expansion, becoming the first thing to truly steal the spotlight from the Lighting Network, in a more widespread attention. Rollups aims to be an off-chain second layer that is not constrained or restricted by the core Liquidity of Lighting Network, i.e., 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 full flow of payment amounts from sender to receiver.
These systems were initially run on Ethereum and other Turing Complete systems, but recently the focus has shifted to porting them to UTXO-based blockchains (e.g., BTC). This article is not intended to discuss the current 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 Proof (ZKP) on BTC, a feature that BTC currently does not support.
The basic architecture of Roll is as follows: a single account (UTXO in BTC) stores the balances of all users in the 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 the Rollup. All these accounts are authorized using Public Key/Private Key pairs, so in order to propose off-chain spending, users still need to sign certain content using the Secret Key. This part of the structure allows users to exit at any time without permission, simply by proving that their account is part of the Merkle tree. They can unilaterally exit the 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 off-chain transaction process. 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 reallocate them to other users.
The question is, if only the root of the Merkle tree is published on-chain and users can view and access it, how can they place their branches in the tree so that they can exit without permission whenever they want?
Suitable Rollup
In the appropriate Rollup, each time a new off-chain transaction is confirmed and the Rollup account’s state changes, the information will be directly placed on the blockchain. Not the entire tree, that would be absurd, but the information needed to rebuild the tree. In a simple implementation, the summary of all existing accounts in the Rollup will contain the balances, and the accounts will only be added in the updated Rollup transactions.
In more advanced implementations, balance diff is used. This is essentially a summary of which accounts have increased or decreased funds during the update process. This allows each Rollup update to only contain the balance changes that have occurred in the accounts. Then, users can simply scan the chain and ‘calculate’ from the beginning of the Rollup to determine the current state of account balances, which allows them to reconstruct the Merkle tree of the current balances.
This can save a lot of expenses and Block space (thus saving money), while still allowing users to ensure access to the information required for unilateral exit. Rollup rules require that these data be included in the formal rollup provided to users using the Block chain, and transactions that do not include account summaries or account differences are considered invalid transactions.
Validity
Another approach to addressing the issue of user withdrawal data availability is to place the data elsewhere outside the Block chain. This introduces subtle issues as rollup still needs to ensure that the data is available elsewhere. Traditionally, other Block chains are used for this purpose, specifically designed to serve as the data availability layer for systems such as rollup.
This creates a dilemma of having equally strong security measures. When data is directly published to the BTCBlock chain, Consensus rules can guarantee its absolute correctness. However, when it is published to an external system, the best it can do is to verify SPV proof, which means the data has been published to another system.
This requires verifying that the data exists as proof on other on-chain, which is ultimately an Oracle Machine problem. The BTC Block chain cannot fully verify anything except what happens on its own Block on-chain, the best it can do is verify the ZKP. However, ZKP cannot verify whether the Block containing rollup data is actually publicly broadcast after generation. It cannot verify whether external information is truly public to everyone.
This opens the door to data withholding attacks, that is, creating a commitment to publish data and using it to advance rollup, but the data is not actually available. This prevents users from withdrawing funds. The only real solution is to rely entirely on the value and incentive structure of systems outside of BTC.
Dilemma
This has brought a dilemma to rollup. When it comes to data availability issues, there is basically 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 rollup.
On the one hand, using BTC blockchain as the data availability layer will set a hard upper limit for the scalability of the rollup. Block space is limited, which sets a limit on the number of rollups that can exist at once and the total number of off-chain transactions that all rollups can handle. Each rollup update requires Block space proportional to the number of accounts whose balance has changed since the last update. Information theory only allows data to be compressed to a certain extent, and there is no more potential for expansion at this point.
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 Rollups that achieve data availability using BTC, if the data that users need to extract is not automatically published to the blockchain, the state of the 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 BTCRollup users’ funds by producing Blocks instead of actually broadcasting them, thus making the data available.
So, what would it be like if we really achieved the ideal Rollup implementation on BTC and truly realized unilateral user withdrawals?