Your users need to know that they have control over their funds, and that they can retrieve their funds at any time, in case your application is not functioning correctly.
To facilitate this self-custody, StarkEx-powered applications must make their users' data always available.
Data availability means that the full state tree is always available, which provides users with the security of knowing that if StarkEx ever stops functioning, they can prove custody of their funds.
StarkEx supports Volition to make data available. Volition enables two sets of vaults to provide data availability as follows:
ZK-Rollup: Vault balances are published on-chain as
calldata. The ZK-Rollup provides built-in trustlessness. Vault range: 263, 263+231
Validium: Data is available off-chain. The Data Availability Committee (DAC) stores Validium vaults' balances, providing a trusted solution to make your users’ data available. Vault range: 0, 231
One application can support both ZK-Rollup and Validium vaults. Assets can be transferred between the different vault ranges.
The vault size results in the following:
Each signature has 64 bits allocated for vaults.
When depositing to a ZK-Rollup vault, the 63rd bit of
vaultIdmust be on. The roots of both vault trees are updated when
UpdateStateis called. The updated balances of rollup vaults are also emitted on-chain as
An escape hatch is checked against the tree in which the escaped vault is located.
StarkEx supports ZK-Rollup to make data available. Vault balances are published on-chain as
calldata. The ZK-Rollup provides built-in trustlessness. The vault range is: 263, 263+231
When using ZK-Rollup, the Cairo program ensures that all the required data to recover the L2 balances Merkle Tree is published on-chain as
calldata. The output of a Cairo program when using ZK-Rollup includes the following:
The proven new state
The complete list of differences of the users' balances compared with the previous state
In order to reduce
Advantage: ZK-Rollup is trustless. All the data needed to reclaim user’s funds on an escape event is present and visible on the blockchain.
Disadvantage: Each vault that has changed in the batch incurs a gas cost. So for batches in which many vaults' states change, the cost of a state update event applies mostly to the data availability, rather than the verification of the proof.
When using Validium vaults, users' balances are not published on-chain. Rather, they are sent to several well known and trusted parties who are members of the Data Availability Committee (DAC). A state update is valid and accepted on-chain only if at least a quorum of the committee members sign a state update. Specifically, they sign that they know all the new vault balances such that they determine to the new state, as enforced by the availability verifiers.
Lower cost: Payment for on-chain data is not required. When updating the on-chain state, most gas is spent on the verification of the proof.
Privacy: Users' balance information is stored off-chain, privately, with a committee of trusted parties, not on-chain.
Disadvantage: Using a DAC requires trust in the committee members.
Volition enables you to use both ZK-Rollup and Validium vaults in your application and let your users decide which vault range to use, for each and every asset they own.
Your application locates each vault in the corresponding vault’s tree. Your user can change the data availability vault for all, or in the case of a fungible asset, some, of a specific asset, by transferring it into a vault on the other tree.