A zero-knowledge rollup with options for both on-chain and off-chain data availability. Users at the individual transaction level are given the choice to publish data on-chain, to a parent chain, or off-chain, to a separate environment. The off-chain mode acts as a validium, where data is published to a separate environment, which could be to a committee of trusted parties or a data availability chain.