Applicative Bootloader is a Cairo0-based program designed to efficiently aggregate and merge proofs in a hierarchical, tree-like structure. It achieves this by verifying child proofs and applying custom aggregation logic to their outputs. The process is divided into two core operations:
- Verification: Validates each child proof and extracts its result.
- Aggregation: Merges the extracted results, producing a final output.
This enables a scalable structure where each level’s trace is proven, allowing the system to build subsequent layers seamlessly.
The Applicative Bootloader operates in two distinct stages:
- Proof Verification & Output Extraction: A multi-task bootloader verifies multiple proofs and collects their outputs.
- Output Aggregation: A single-task bootloader applies the specified aggregation logic to the extracted outputs, combining them into a cohesive result.
The main use case for the Applicative Bootloader is to merge several task-specific proofs into a single consolidated proof. This approach offers scalability for an arbitrary number of tasks while maintaining efficient public memory usage. It prevents memory growth from becoming unmanageable as the proof tree grows and allows for the implementation of custom, externally defined aggregation logic.
To set up and run the Applicative Bootloader, follow these steps:
-
Initialize and update submodules:
git submodule init && git submodule update
-
Set up the environment and compile:
./setup.sh && ./compile.sh export PYTHONPATH=.:cairo-lang
-
Execute the following Python scripts:
-
Run the node input process:
python input_node.py && python nodes_run.py
-
Prepare applicative bootloader inputs:
python input_node_ar.py && python input_applicative_bootloader.py
-
Finally, run the applicative bootloader:
python applicative_run.py
-