aboutsummaryrefslogtreecommitdiff
path: root/zkvms_guest_io/src
diff options
context:
space:
mode:
authorKamen Mladenov <kamen@syndamia.com>2025-05-07 11:55:04 +0300
committerKamen Mladenov <kamen@syndamia.com>2025-05-07 15:48:31 +0300
commitdf83e8ed67222c1764bec939da6b4e2db5d94d82 (patch)
treec36d1815be780c865d81d0a1e373f062e988dd72 /zkvms_guest_io/src
parent4b712763be325747fa43c45e58c5013e24e13388 (diff)
downloadzkVMs-benchmarks-df83e8ed67222c1764bec939da6b4e2db5d94d82.tar
zkVMs-benchmarks-df83e8ed67222c1764bec939da6b4e2db5d94d82.tar.gz
zkVMs-benchmarks-df83e8ed67222c1764bec939da6b4e2db5d94d82.zip
feat(zkvms_guest_io): Add private and public input arguments
This allows us to pass custom inputs on single-guest commands (nix run .#fibonacci).
Diffstat (limited to 'zkvms_guest_io/src')
-rw-r--r--zkvms_guest_io/src/main.rs13
1 files changed, 11 insertions, 2 deletions
diff --git a/zkvms_guest_io/src/main.rs b/zkvms_guest_io/src/main.rs
index a38ce99..a3f48ca 100644
--- a/zkvms_guest_io/src/main.rs
+++ b/zkvms_guest_io/src/main.rs
@@ -15,6 +15,12 @@ use sysinfo::System;
#[derive(Parser, Debug)]
#[command(about, long_about = None)]
struct Cli {
+ /// Path to private input file (in TOML format)
+ private_input: Option<String>,
+
+ /// Path to public input file (in TOML format)
+ public_input: Option<String>,
+
/// Ignored zkVMs. Values are substrings of names.
#[arg(short, long, value_delimiter = ',', num_args = 1..)]
ignore: Option<Vec<String>>,
@@ -36,12 +42,15 @@ static COMMAND_LOG_PATH: &str = "/tmp/output.log";
static METRICS_TEMP_OUTPUT_PATH: &str = "/tmp/current_metrics";
static PROOF_SIZE_FILE_PATH: &str = "/tmp/proof_size";
-fn run_command(zkvm_guest_command: &str, operation: &str) -> Result<std::process::Output, Error> {
+fn run_command(zkvm_guest_command: &str, operation: &str, private_input: &Option<String>, public_input: &Option<String>) -> Result<std::process::Output, Error> {
+ let inputs = vec![private_input.clone(), public_input.clone()];
+ let inputs = inputs.iter().flatten().collect::<Vec<_>>();
Command::new("runexec")
.args(["--no-container", "--output", COMMAND_LOG_PATH, "--"])
.args([zkvm_guest_command, operation])
.arg("--benchmark")
.args(["--metrics-output", METRICS_TEMP_OUTPUT_PATH])
+ .args(inputs)
.stdout(Stdio::piped())
.output()
}
@@ -153,7 +162,7 @@ fn main() {
for operation in ["execute", "prove", "verify"] {
println!("== {operation} {zkvm} ==");
- let output = run_command(zkvm_guest_command, operation);
+ let output = run_command(zkvm_guest_command, operation, &cli.private_input, &cli.public_input);
// Couldn't run runexec
if let Err(msg) = output {