From 05a40cb8efa8ebd80e3af610dec7fe803144c0bb Mon Sep 17 00:00:00 2001 From: lightsing Date: Tue, 18 Nov 2025 12:39:03 +0800 Subject: [PATCH 1/3] refactor and fix --- crates/integration/src/lib.rs | 7 ++-- download-release.sh | 67 +++++++++++++++++++++++++---------- 2 files changed, 53 insertions(+), 21 deletions(-) diff --git a/crates/integration/src/lib.rs b/crates/integration/src/lib.rs index f715b7ee..f38de5d2 100644 --- a/crates/integration/src/lib.rs +++ b/crates/integration/src/lib.rs @@ -220,9 +220,12 @@ pub trait ProverTester { /// Load the axiom program prover fn load_axiom_prover() -> eyre::Result { + let mut prover = Self::load_prover(false)?; + let vk = prover.get_app_commitment(); + let vk = hex::encode(serialize_vk::serialize(&vk)); let program_id = AXIOM_PROGRAM_IDS - .get(Self::NAME) - .ok_or_else(|| eyre::eyre!("missing axiom program id for {}", Self::NAME))? + .get(&vk) + .ok_or_else(|| eyre::eyre!("missing axiom program id for {}: {}", Self::NAME, vk))? .to_string(); let prover = AxiomProver::from_env( Self::NAME.to_string(), diff --git a/download-release.sh b/download-release.sh index f4768868..7626cc66 100644 --- a/download-release.sh +++ b/download-release.sh @@ -1,32 +1,61 @@ #!/bin/bash -set -xeu +set -eu -# release version -SCROLL_ZKVM_VERSION=0.5.2 -if [ -z "${SCROLL_ZKVM_VERSION}" ]; then - echo "SCROLL_ZKVM_VERSION not set" +# Color settings +if [[ -t 1 && -z "${NO_COLOR:-}" ]]; then + RED="\033[31m" + GREEN_BOLD="\033[1;32m" + YELLOW_BOLD="\033[1;33m" + RED_BOLD="\033[1;31m" + NC="\033[0m" +else + RED="" + GREEN_BOLD="" + YELLOW_BOLD="" + RED_BOLD="" + NC="" +fi +INFO_PREFIX="${GREEN_BOLD}[+]${NC}" +WARN_PREFIX="${YELLOW_BOLD}[!]${NC}" + +# select release version +GUEST_VERSION="${GUEST_VERSION:-}" +if [ -n "$1" ]; then + GUEST_VERSION="$1" +fi +if [ -z "$GUEST_VERSION" ]; then + echo -e "$RED_BOLD[x]$NC ${RED}GUEST_VERSION not set$NC" exit 1 fi +function can_access_s3() { + aws --profile default s3 ls "s3://circuit-release/scroll-zkvm/releases/$GUEST_VERSION" >/dev/null 2>&1 +} function download_by_s3() { - aws --profile default s3 cp s3://circuit-release/scroll-zkvm/releases/$SCROLL_ZKVM_VERSION releases/$SCROLL_ZKVM_VERSION --recursive + echo "$INFO_PREFIX download via s3" + aws --profile default s3 cp s3://circuit-release/scroll-zkvm/releases/$GUEST_VERSION releases/$GUEST_VERSION --recursive } function download_by_http() { - for f in chunk/app.vmexe \ - chunk/openvm.toml \ - verifier/openVmVk.json \ - verifier/verifier.bin \ - bundle/digest_1.hex \ - bundle/app.vmexe \ - bundle/digest_2.hex \ - bundle/openvm.toml \ - batch/app.vmexe \ - batch/openvm.toml; do - output_path="releases/$SCROLL_ZKVM_VERSION/$f" + echo -e "$INFO_PREFIX download via http" + for f in {chunk,bundle,batch}/{app.{vmexe,elf},openvm.toml} \ + verifier/{openVmVk.json,verifier.bin} \ + bundle/{digest_1.hex,digest_2.hex}; do + output_path="releases/$GUEST_VERSION/$f" mkdir -p "$(dirname "$output_path")" - wget https://circuit-release.s3.us-west-2.amazonaws.com/scroll-zkvm/releases/$SCROLL_ZKVM_VERSION/$f -O "$output_path" + if ! wget --quiet --show-progress -O "$output_path" https://circuit-release.s3.us-west-2.amazonaws.com/scroll-zkvm/releases/$GUEST_VERSION/$f; then + rm -f "$output_path" + echo -e "$WARN_PREFIX failed to download $f" + continue + fi + echo -e "$INFO_PREFIX downloaded $f" done } -download_by_http $SCROLL_ZKVM_VERSION +if can_access_s3; then + download_by_s3 +else + download_by_http +fi +echo -e "$INFO_PREFIX done" +tree "releases/$GUEST_VERSION" From d0134e144460c0646c3e83f011cf2a1109db77bb Mon Sep 17 00:00:00 2001 From: lightsing Date: Tue, 18 Nov 2025 12:42:24 +0800 Subject: [PATCH 2/3] fix --- download-release.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/download-release.sh b/download-release.sh index 7626cc66..42ede63c 100644 --- a/download-release.sh +++ b/download-release.sh @@ -32,7 +32,7 @@ function can_access_s3() { aws --profile default s3 ls "s3://circuit-release/scroll-zkvm/releases/$GUEST_VERSION" >/dev/null 2>&1 } function download_by_s3() { - echo "$INFO_PREFIX download via s3" + echo -e "$INFO_PREFIX download via s3" aws --profile default s3 cp s3://circuit-release/scroll-zkvm/releases/$GUEST_VERSION releases/$GUEST_VERSION --recursive } From d10d46aae3922f73a63019f5d7a9c6b09953be8d Mon Sep 17 00:00:00 2001 From: lightsing Date: Tue, 18 Nov 2025 13:00:06 +0800 Subject: [PATCH 3/3] uploads axiom_program_ids to s3 --- crates/tools/upload-axiom/src/main.rs | 35 +++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/crates/tools/upload-axiom/src/main.rs b/crates/tools/upload-axiom/src/main.rs index f44bf811..af0277ce 100644 --- a/crates/tools/upload-axiom/src/main.rs +++ b/crates/tools/upload-axiom/src/main.rs @@ -18,6 +18,7 @@ use std::collections::HashMap; use std::fs::File; use std::io::{IsTerminal, stderr, stdout}; use std::path::{Path, PathBuf}; +use std::process::Command; use std::{env, fs}; #[derive(Parser)] @@ -31,6 +32,14 @@ use std::{env, fs}; .multiple(false) ) )] +#[command( + group( + ArgGroup::new("program_ids") + .args(&["no_write_ids", "upload_s3"]) + .required(false) + .multiple(false) + ) +)] struct Cli { /// Guest program version /// @@ -51,6 +60,9 @@ struct Cli { /// Don't write program ids json #[arg(long)] no_write_ids: bool, + /// Uploads program ids json to s3 if available + #[arg(long)] + upload_s3: bool, /// The directory containing the manifest of the crate to run this command in. #[arg(long, env = "CARGO_MANIFEST_DIR")] @@ -250,6 +262,29 @@ fn main() -> eyre::Result<()> { "{LOG_PREFIX} {OK} Wrote Axiom program IDs to {}", output_path.display() ); + + // "s3://circuit-release/scroll-zkvm/releases/$GUEST_VERSION/axiom_program_ids.json" + // aws --profile default s3 cp + if cli.upload_s3 { + let s3_path = format!( + "s3://circuit-release/scroll-zkvm/releases/{guest_version}/axiom_program_ids.json" + ); + let status = Command::new("aws") + .arg("--profile") + .arg("default") + .arg("s3") + .arg("cp") + .arg(output_path) + .arg(&s3_path) + .status()?; + if status.success() { + println!("{LOG_PREFIX} {OK} Uploaded axiom_program_ids.json to {s3_path}"); + } else { + println!( + "{LOG_PREFIX} {WARN} Failed to upload axiom_program_ids.json to {s3_path}" + ); + } + } } Ok(())