Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
bdb4831
fix(recursion): final_poly & FRI missing randomness (#1703)
jonathanpwang Jun 3, 2025
770b25d
refactor: ELF and Program (#1638)
nyunyunyunyu May 9, 2025
f9d512b
feat: Build script for calling init macros (#1596)
Avaneesh-axiom Apr 25, 2025
c5b3227
feat: Lazily call setup function for moduli and curves on first use (…
Avaneesh-axiom Apr 29, 2025
131f4bb
chore: update `getrandom` to v0.3 in `openvm` lib (#1635)
jonathanpwang May 9, 2025
ac2095e
feat: openvm build can build multiple targets + additional cargo opti…
stephenh-axiom-xyz May 14, 2025
a46308b
feat: Add e2e stark proof support (#1597)
nyunyunyunyu Apr 30, 2025
8dd6fd3
feat: Add Rv32HintLoadByKey (#1606)
nyunyunyunyu Apr 30, 2025
cff3cfc
feat: Root Verifier ASM (#1615)
nyunyunyunyu May 5, 2025
d779843
feat: Macro define_verify_openvm_stark (#1620)
nyunyunyunyu May 12, 2025
a4b997d
feat: helper functions for verify_openvm_stark (#1631)
nyunyunyunyu May 15, 2025
234a707
refactor: CLI Build & Setup (#1649)
nyunyunyunyu May 15, 2025
217bbe4
fix: verifier read dir (#1658)
HrikB May 16, 2025
0e363bc
docs: add CHANGELOG.md (#1660)
HrikB May 16, 2025
b2a705a
chore: add entry point to book examples without openvm::init!() (#1663)
stephenh-axiom-xyz May 19, 2025
02b035b
feat: cargo CLI update target directory (#1662)
stephenh-axiom-xyz May 20, 2025
55f2a92
feat: commit command for cargo openvm (#1667)
stephenh-axiom-xyz May 21, 2025
47dd716
feat: init command for cargo openvm (#1670)
stephenh-axiom-xyz May 21, 2025
dab89d2
feat: CLI prove use bin name for output path + e2e stark verify (#1675)
stephenh-axiom-xyz May 27, 2025
ef37313
feat: ensure all CLI commit outputs are in hex + fix verify STARK (#1…
stephenh-axiom-xyz May 30, 2025
4c322dd
refactor: guest bindings (#1613)
Avaneesh-axiom Jun 1, 2025
30fba67
refactor: guest bindings (#1613)
jonathanpwang Jun 3, 2025
3607e3c
feat: Patch ecdsa `VerifyingKey::recover_from_prehash` to skip messag…
Avaneesh-axiom Jun 2, 2025
4baa49c
perf: update stark-backend commit
jonathanpwang Jun 3, 2025
fc3c8bb
perf(ecc-guest): optimize setup handling in ecc guest bindings (#1706)
jonathanpwang Jun 4, 2025
156eb58
chore: update workspace to v1.2.1-rc.0
jonathanpwang Jun 4, 2025
6d9712c
feat: optimize `Group::is_identity` (#1709)
Avaneesh-axiom Jun 4, 2025
dccbd76
chore: move directory
jonathanpwang Jun 4, 2025
79d1489
chore(ecc-guest): remove `k256, p256` modules and fix guest-libs to a…
jonathanpwang Jun 4, 2025
2c35253
fix(ci): remove hashFiles from guest-lib-tests (#1710)
jonathanpwang Jun 4, 2025
eebc16a
chore(ci): patch examples to use local crates (#1712)
jonathanpwang Jun 4, 2025
7d63ca9
chore: change to dual license (#1713)
yi-sun Jun 5, 2025
27b4e7d
fix(sw-macro): host `set_up_once` undefined (#1717)
jonathanpwang Jun 5, 2025
07bd2b7
docs: Add comment explaining the `is_identity` optimization (#1716)
Avaneesh-axiom Jun 6, 2025
4682f18
fix(cli): generate `openvm_init.rs` before building (#1721)
jonathanpwang Jun 9, 2025
08bbf79
chore: macro crate should use workspace version (#1723)
jonathanpwang Jun 9, 2025
cc0ae36
docs: update division typo in ISA.md (#1726)
stephenh-axiom-xyz Jun 10, 2025
152b6b6
chore(ecc-guest): placeholder trait and function implementations for …
jonathanpwang Jun 11, 2025
33abb41
merge v1.2.1-rc.1 commit 152b6b6 and fix conflicts
Schaeff Jun 19, 2025
b4df8c3
update stark-backend
Schaeff Jun 20, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
22 changes: 12 additions & 10 deletions .github/workflows/cli.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,32 +45,34 @@ jobs:
run: |
cargo install --force --locked --path .

- name: check build consistency
working-directory: examples/ecc
run: |
cargo openvm build
mv openvm/app.vmexe app1.vmexe
cargo openvm build
cmp app1.vmexe openvm/app.vmexe || (echo "Build is not deterministic!" && exit 1)

- name: Build and run book examples
working-directory: examples
run: |
set -e
for dir in */; do
if [ -f "${dir}Cargo.toml" ]; then
echo "Building ${dir%/}"
cd "$dir"
cargo openvm build && cargo openvm run
cargo openvm build
cargo openvm run
cd ..
fi
done

- name: check build consistency
working-directory: examples/ecc
run: |
cargo openvm build
mv target/openvm/release/ecc-example.vmexe app1.vmexe
cargo openvm build
cmp app1.vmexe target/openvm/release/ecc-example.vmexe || (echo "Build is not deterministic!" && exit 1)

- name: Run app-level CLI commands
working-directory: crates/cli
run: |
export RUST_BACKTRACE=1
cargo build
cargo run --bin cargo-openvm -- openvm keygen --config ./example/app_config.toml --output app.pk --vk-output app.vk
cargo run --bin cargo-openvm -- openvm keygen --config ./example/app_config.toml --output-dir .

- name: Run CLI tests
working-directory: crates/cli
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/extension-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,6 @@ jobs:
FEATURE_ARGS=""
if [[ "${{ matrix.extension.name }}" == "pairing" ]]; then
FEATURE_ARGS="--features=bn254,bls12_381,halo2curves"
elif [[ "${{ matrix.extension.name }}" == "ecc" ]]; then
FEATURE_ARGS="--features=k256,p256"
fi
cargo nextest run --cargo-profile=fast $FEATURE_ARGS --no-tests=pass

Expand Down
77 changes: 77 additions & 0 deletions .github/workflows/guest-lib-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
name: Guest Library Tests

on:
push:
branches: ["main"]
pull_request:
branches: ["**"]
paths:
- "crates/circuits/**"
- "crates/vm/**"
- "extensions/**"
- "guest-libs/**"
- "Cargo.toml"
- ".github/workflows/guest-lib-tests.yml"

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true

env:
CARGO_TERM_COLOR: always
OPENVM_FAST_TEST: "1"

jobs:
integration-tests:
strategy:
matrix:
crate:
- { name: "sha2", path: "sha2" }
- { name: "keccak256", path: "keccak256" }
- { name: "ff_derive", path: "ff_derive" }
- { name: "k256", path: "k256" }
- { name: "p256", path: "p256" }
- { name: "ruint", path: "ruint" }
- { name: "pairing", path: "pairing" }
# Ensure tests run in parallel even if one fails
fail-fast: false

runs-on:
- runs-on=${{ github.run_id }}
- runner=64cpu-linux-arm64
- tag=crate-${{ matrix.crate.name }}
- extras=s3-cache

steps:
- uses: runs-on/action@v1
- uses: actions/checkout@v4
- uses: dorny/paths-filter@v3
id: filter
with:
filters: |
- "crates/circuits/**"
- "crates/vm/**"
- "extensions/**"
- "guest-libs/${{ matrix.crate.path }}/**"
- ".github/workflows/guest-lib-tests.yml"
- name: Skip if no changes
if: steps.filter.outputs.matched == 'false'
run: |
echo "No relevant changes, skipping tests."
exit 0

- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- uses: taiki-e/install-action@nextest

- name: Run ${{ matrix.crate.name }} guest library tests
working-directory: guest-libs/${{ matrix.crate.path }}
run: |
rustup component add rust-src --toolchain nightly-2025-02-14
FEATURE_ARGS=""
if [[ "${{ matrix.crate.name }}" == "pairing" ]]; then
FEATURE_ARGS="--features=bn254,bls12_381"
fi
cargo nextest run --cargo-profile=fast $FEATURE_ARGS --no-tests=pass
18 changes: 8 additions & 10 deletions .github/workflows/lints.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:

- uses: codespell-project/actions-codespell@v2
with:
skip: Cargo.lock,./book/pnpm-lock.yaml,*.txt,./crates/toolchain/openvm/src/memcpy.s,./crates/toolchain/openvm/src/memset.s,./audits/*.pdf,
skip: Cargo.lock,./book/pnpm-lock.yaml,*.txt,./crates/toolchain/openvm/src/memcpy.s,./crates/toolchain/openvm/src/memset.s,./audits/*.pdf,./guest-libs/ruint/*
ignore_words_file: .codespellignore

- uses: dtolnay/rust-toolchain@stable
Expand All @@ -43,9 +43,10 @@ jobs:

- name: Run clippy
run: |
# list of features generated using:
# echo -e "\033[1;32mAll unique features across workspace:\033[0m" && cargo metadata --format-version=1 --no-deps | jq -r '.packages[].features | to_entries[] | .key' | sort -u | sed 's/^/• /'
cargo clippy --all-targets --all --tests --features "aggregation bench-metrics bls12_381 bn254 default entrypoint evm-prove evm-verify export-getrandom export-libm function-span getrandom halo2-compiler halo2curves heap-embedded-alloc k256 jemalloc jemalloc-prof nightly-features panic-handler parallel rust-runtime static-verifier std test-utils unstable" -- -D warnings
# list of all unique features across workspace generated using:
# cargo metadata --format-version=1 --no-deps | jq -r '.packages[].features | to_entries[] | .key' | sort -u | tr '\n' ' ' && echo ""
# (exclude mimalloc since it conflicts with jemalloc)
cargo clippy --all-targets --all --tests --features "aggregation bench-metrics bls12_381 bn254 build-binaries default entrypoint evm-prove evm-verify export-intrinsics export-libm function-span getrandom-unsupported halo2-compiler halo2curves heap-embedded-alloc jemalloc jemalloc-prof nightly-features panic-handler parallel profiling rust-runtime static-verifier std test-utils" -- -D warnings
cargo clippy --all-targets --all --tests --no-default-features --features "mimalloc" -- -D warnings

- name: Run fmt, clippy for guest
Expand All @@ -56,16 +57,13 @@ jobs:
if [ -f "$crate_path/Cargo.toml" ]; then
echo "Running cargo fmt, clippy for $crate_path"
cargo +nightly fmt --manifest-path "$crate_path/Cargo.toml" --all -- --check
if [[ "$crate_path" == *"extensions/ecc/tests/programs"* ]]; then
echo "Running cargo clippy with k256 and p256 features for $crate_path"
cargo clippy --manifest-path "$crate_path/Cargo.toml" --all-targets --features "std k256 p256" -- -D warnings
elif [[ "$crate_path" == *"extensions/pairing/tests/programs"* ]]; then
if [[ "$crate_path" == *"guest-libs/pairing/tests/programs"* ]]; then
echo "Running cargo clippy with openvm_pairing_guest::bn254 feature for $crate_path"
cargo clippy --manifest-path "$crate_path/Cargo.toml" --all-targets --features "std bn254" -- -D warnings
echo "Running cargo clippy with openvm_pairing_guest::bls12_381 feature for $crate_path"
cargo clippy --manifest-path "$crate_path/Cargo.toml" --all-targets --features "std bls12_381" -- -D warnings
elif [[ "$crate_path" == *"extensions/"* ]]; then
echo "Running cargo clippy for $crate_path"
elif [[ "$crate_path" == *"extensions/"* || "$crate_path" == *"guest-libs/"* ]]; then
echo "Running cargo clippy with std feature for $crate_path"
cargo clippy --manifest-path "$crate_path/Cargo.toml" --all-targets --features "std" -- -D warnings
else
echo "Running cargo clippy for $crate_path"
Expand Down
19 changes: 19 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Changelog

## v1.1.2 (2025-05-08)

- The solidity verifier contract no longer has any awareness of the OpenVM patch version. `{MAJOR_VERSION}.{MINOR_VERSION}` is the minimum information necessary to identify the verifier contract since any verifier contract changes will be accompanied by a minor version bump.

## v1.1.1 (2025-05-03)

- Adds `OpenVmHalo2Verifier` generation to the SDK which is a thin wrapper around the original `Halo2Verifier` contract exposing a more user-friendly interface.
- Updates the CLI to generate the new `OpenVmHalo2Verifier` contract during `cargo openvm setup`.
- Removes the ability to generate the old `Halo2Verifier` contract from the SDK and CLI.
- Changes the `EvmProof` struct to align with the interface of the `OpenVmHalo2Verifier` contract.
- Formats the verifier contract during generation for better readability on block explorers.
- For verifier contract compilation, explicitly sets the `solc` config via standard-json input for metadata consistency.

## v1.1.0 (2025-05-02)

### Security Fixes
- Fixes security vulnerability [OpenVM allows the byte decomposition of pc in AUIPC chip to overflow](https://github.com/advisories/GHSA-jf2r-x3j4-23m7)
Loading
Loading