mirror of
https://github.com/logos-blockchain/logos-execution-zone.git
synced 2026-08-26 03:41:13 +00:00
Programs dispatch at the address seeded via with_programs/a live Deploy (loader_core::immutable_deploy_account_id), not the bijection AccountId::from(program_id) used by the legacy ProgramDeploymentTransaction storage shape. This sweep threads the correct address through lee/lez/integration_tests/wallet-ffi call sites and fixes 7 dispatch-address bugs the mismatch was masking: bijection-vs-real-PDA mismatches in lez/wallet's native_token_transfer facade, integration_tests' auth_transfer/private and private_pda suites, wallet-ffi's generic_transaction FFI boundary, a stale assertion in program_deployment.rs, and a stale expected-error string in cross_zone_state_machine.rs. Also includes a full clippy/fmt pass: doc-comment reflow, #[expect(...)] attribute additions, redundant type-annotation/unused-import removal, and two assert!s added purely for bounds-check elision on already-guarded slices — no logic changes. Both CI clippy invocations and cargo fmt --check are clean. Verified: RISC0_DEV_MODE=1 cargo test -p lee --lib (214 passed) and the broader sanity set across lee/wallet/bridge_lock_core/ping_core/ cross_zone_outbox_core/sequencer_core (mock features) both green. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
cycle_bench
Per-program Risc0 cycle counts, prover wall time, PPE composition cost, and verifier wall time for the built-in LEZ programs. Feeds the fee model (G_executor, G_prove, G_verify, S_agg).
Run
The binary handles executor cycles, prover wall time, and PPE composition cost:
# Executor cycles only (fast, ~seconds)
cargo run --release -p cycle_bench
# + real proving per program (slow, ~minutes)
cargo run --release -p cycle_bench --features prove -- --prove
# + PPE composition cases (very slow, ~hour)
cargo run --release -p cycle_bench --features ppe -- --prove --ppe
The verifier microbenchmark (G_verify) lives in a criterion bench under benches/verify.rs:
# Generates one PPE receipt for auth_transfer Transfer (~minutes of setup),
# then times Receipt::verify under criterion's statistical sampler.
cargo bench -p cycle_bench --features ppe --bench verify
RISC0_DEV_MODE=1 skips proving entirely and is only useful for the executor path. The bin writes to target/cycle_bench.json; criterion writes per-bench estimates under target/criterion/.
What you'll see
- Per-program executor cycles and segments, plus exec wall time as
best / mean ± stdev (n=N). - With
--prove: prover total cycles, paging cycles, segments, and wall time. - With
--ppe: end-to-endexecute_and_provewall time andS_agg(the borsh-serialized InnerReceipt length) for one auth-transfer-in-PPE case and a chain-caller depth sweep. - From the
verifycriterion bench:ppe/verify_auth_transferslope-regression point estimate with 95% CI bounds.
Baseline comparison (verify bench)
# On main:
cargo bench -p cycle_bench --features ppe --bench verify -- --save-baseline main
# On your branch:
cargo bench -p cycle_bench --features ppe --bench verify -- --baseline main