ToolszkEVMArchitectureUnified LxLy

Updating rollups

!!!caution While it is technically imprecise, for the sake of simplicity, we refer to both rollups and validiums as 'rollups'. ### Updating a rollup It is often

While it is technically imprecise, for the sake of simplicity, we refer to both rollups and validiums as 'rollups'.

Updating a rollup

It is often necessary to enable upgradeability of rollups.

More specifically, a user with appropriate rights can change the consensus implementation and the type of a certain rollup. Such a user can therefore modify the sequencing or verification procedures of a rollup.

In order to change the consensus, the function UpdateRollup()\texttt{UpdateRollup()} needs to change the transparent proxy implementation.

In the upgrading procedure, the rollupCompatibilityID\texttt{rollupCompatibilityID} comes into play:

  • In order to avoid errors, we can only upgrade to a rollup type having the same compatibility identifier as the original one.

If this is not the case, the transaction is reverted, raising the UpdateNotCompatible\texttt{UpdateNotCompatible} error.

Adding existing rollups

Rollups that are already deployed and working, do not follow any rollup type.

Such an existing rollup can be added to the RollupManager\texttt{RollupManager} via the addExistingRollup()\texttt{addExistingRollup}() function, by specifying its current address.

When the verifier implements the IVerifierRollup\texttt{IVerifierRollup} interface, it requests only for the raw consensus contract address, as it will not be used directly but through a proxy to allow upgradeability options.

As mentioned before, rollups that are deployed and already in operation can be added to the RollupManager\texttt{RollupManager} in order to allow unified management.

In this case, the addExistingRollup()\texttt{addExistingRollup()} function is called.

Since the rollup has previously been initialized, the following information needs to be provided:

Observe that most of these parameters were actually provided by the RollupType\texttt{RollupType}, but RollupData\texttt{RollupData} of already existing rollups is constructed by hand, since they do not follow any rollup type as yet.

Edit on GitHub

Last updated on