Skip to content

Commit 4523c3f

Browse files
feat(apollo_starknet_os_program): add command to dump aggregator program
1 parent 24e2e96 commit 4523c3f

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

crates/starknet_committer_and_os_cli/src/os_cli/commands.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use apollo_starknet_os_program::{OS_PROGRAM_BYTES, PROGRAM_HASH};
1+
use apollo_starknet_os_program::{AGGREGATOR_PROGRAM_BYTES, OS_PROGRAM_BYTES, PROGRAM_HASH};
22
use cairo_lang_starknet_classes::casm_contract_class::CasmContractClass;
33
use cairo_vm::types::layout_name::LayoutName;
44
use rand_distr::num_traits::Zero;
@@ -73,6 +73,15 @@ pub(crate) fn dump_os_program(output_path: String) {
7373
write_to_file(&output_path, &os_program_json);
7474
}
7575

76+
pub(crate) fn dump_aggregator_program(output_path: String) {
77+
// Dumping the `Program` struct won't work - it is not deserializable via cairo-lang's Program
78+
// class. JSONify the raw bytes instead.
79+
let aggregator_program_json =
80+
serde_json::from_slice::<serde_json::Value>(AGGREGATOR_PROGRAM_BYTES)
81+
.expect("Aggregator bytes are JSON-serializable.");
82+
write_to_file(&output_path, &aggregator_program_json);
83+
}
84+
7685
pub(crate) fn dump_program_hash(output_path: String) {
7786
write_to_file(&output_path, &*PROGRAM_HASH);
7887
}

crates/starknet_committer_and_os_cli/src/os_cli/run_os_cli.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@ use tracing::level_filters::LevelFilter;
44
use tracing_subscriber::reload::Handle;
55
use tracing_subscriber::Registry;
66

7-
use crate::os_cli::commands::{dump_os_program, dump_program_hash, parse_and_run_os};
7+
use crate::os_cli::commands::{
8+
dump_aggregator_program,
9+
dump_os_program,
10+
dump_program_hash,
11+
parse_and_run_os,
12+
};
813
use crate::os_cli::tests::python_tests::OsPythonTestRunner;
914
use crate::shared_utils::types::{run_python_test, IoArgs, PythonTestArg};
1015

@@ -16,6 +21,11 @@ pub struct OsCliCommand {
1621

1722
#[derive(Debug, Subcommand)]
1823
enum Command {
24+
DumpAggregatorProgram {
25+
/// File path to output.
26+
#[clap(long, short = 'o', default_value = "stdout")]
27+
output_path: String,
28+
},
1929
DumpOsProgram {
2030
/// File path to output.
2131
#[clap(long, short = 'o', default_value = "stdout")]
@@ -39,6 +49,7 @@ pub async fn run_os_cli(
3949
) {
4050
info!("Starting starknet-os-cli with command: \n{:?}", os_command);
4151
match os_command.command {
52+
Command::DumpAggregatorProgram { output_path } => dump_aggregator_program(output_path),
4253
Command::DumpOsProgram { output_path } => dump_os_program(output_path),
4354
Command::DumpProgramHash { output_path } => dump_program_hash(output_path),
4455
Command::PythonTest(python_test_arg) => {

0 commit comments

Comments
 (0)