The existing integration sends the txData of each block to the Nubit DA backend for data retrieval.
Soon, the coordinator will send execution traces and txData to Nubit DA, and the returned DA proof (including the existence proof and indexes) will be transmitted to rollup nodes and L1 contracts. This will allow users with light storage and computation resources to retrieve data from Nubit DA and verify the returned DA proofs using on-chain public inputs.
Rollup from Scroll
Scroll offers scalability for Ethereum with strong security guarantees. Its technical novelty includes efficient, trustless, and secure rollups from zero-knowledge proofs, providing easier access, faster response, and the support of more users.
In a nutshell, the Scroll rollup scheme aggregates transactions (and execution results) with succinct zero-knowledge proofs. The proof tasks are dispensed by the coordinator and are executed by provers in a trustless manner. The verification logic and proofs are stored in Ethereum smart contracts. Hence, data integrity and unforgeability are guaranteed by Ethereum with an extremely low overhead.
As a further enhancement, our integration aims to provide the data availability (DA) backend for Scroll.
Integration with Nubit DA
Current Integration
Our current integration, based on l2geth-source codes, facilitates the seamless interaction between Scroll execution nodes and the Nubit DA backend. Serialized and batched transaction data is transmitted to the backend, where it is stored and indexed via nubit-node. This integration enhances block synchronizations and consensus executions by leveraging the Nubit DA storage. Additionally, it ensures historical block data synchronization to Nubit DA and sends data of newly generated blocks for each confirmation, enhancing overall data availability and security.
For example, the SubmitBlobToNubit function aggregates transactions and submits them to the Nubit DA backend:
In the next phase, we aim to further streamline the integration process. Coordinators will facilitate synchronization with the Nubit DA through adaptations like Batch.InsertBatch(). Transaction data will be batched, encoded, and sent to Nubit DA as blobTxs, with corresponding DA height, commitment, and auxiliary information returned to coordinators and then delivered to rollup nodes. This approach not only optimizes data retrieval but also ensures robust data availability.
Here’s how the SubmitBlobToNubit function might look in the next phase:
Looking ahead, our integration envisions a significant role for local storage on Scroll nodes. With the support of our DA backend, nodes will only need to store recently generated blocks locally, while historical block data will be seamlessly retrieved from the DA backend. This approach minimizes storage requirements, enhances security, and ensures data availability, providing a solid foundation for future scalability.
Run the Integration Demo
Configuration
Start a Nubit Node
Refer to the Nubit DA guideline for detailed instructions. Please contact the Nubit team to obtain enough NUB tokens. Remember to store the private key file of your Nubit address securely in your $HOME/.nubit-node directory.
Clone the Repository
Clone the integration demo repository to your local machine. Please contact Nubit team for the repo access.
cd $HOMEgitclonehttps://github.com/RiemaLabs/nubit-scroll-integration-democdnubit-scroll-integration-demo
Install the GCC Compiler
Install the required GCC compiler.
sudoaptinstallbuild-essential
Build l2geth
Build the l2geth binary.
makenccc_geth
Define a Command Alias
Create a convenient alias for the l2geth binary.
alias l2geth=./build/bin/geth
This configuration will prepare your environment for running the Nubit integration demo.
Run the Integration Demo
Start the l2geth Process
Run the l2geth process with the following command.