Skip to content

Publish the registration behind the intent-settlement measurement #73

Publish the registration behind the intent-settlement measurement

Publish the registration behind the intent-settlement measurement #73

Workflow file for this run

name: ci
on:
push:
branches: [main]
pull_request:
jobs:
contracts:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# Not `submodules: recursive`: the private/ submodule is not readable
# from CI (and is marked update=none). Init public ones explicitly.
- name: init submodules
run: git submodule update --init contracts/lib/forge-std contracts/lib/account-abstraction contracts/lib/openzeppelin-contracts
# Pinned to the version the committed benchmark numbers were produced
# with, so every job compiles with the same toolchain.
- uses: foundry-rs/foundry-toolchain@v1
with:
version: v1.7.1
- name: forge test
working-directory: contracts
run: forge test -vv
# The benchmark receipts and RESULTS.md are committed and quoted in the
# paper. Re-measure receipts against anvil under the pinned toolchain and
# rebuild the report from committed inputs; fail on drift, same policy as
# the golden vectors.
gas-drift:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: init submodules
run: git submodule update --init contracts/lib/forge-std contracts/lib/account-abstraction contracts/lib/openzeppelin-contracts
- uses: foundry-rs/foundry-toolchain@v1
with:
version: v1.7.1
- name: re-measure receipts (base scheme)
run: bench/measure_qca.sh
- name: re-measure receipts (ERC-4337)
run: bench/measure_4337.sh
- name: rebuild report
run: python3 bench/report.py > bench/results/RESULTS.md
- name: diff
run: git diff --exit-code bench/results/qca-receipts.json bench/results/qca-4337-receipts.json bench/results/RESULTS.md
tooling:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: cargo test
working-directory: tooling
run: cargo test --workspace
# The golden vectors are committed. If someone changes an encoding on
# either side without regenerating them, this job catches it even before
# the Foundry assertion does.
vector-drift:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: regenerate and diff
working-directory: tooling
run: |
cargo run -q -p qca-cli -- vectors --depth 3 > /tmp/golden.json
diff /tmp/golden.json ../contracts/test/vectors/golden.json
# The simulator result vectors back docs/GAME.md's figures and are
# committed. Regenerate under a fixed seed and fail on drift, same policy
# as the golden vectors. The sim's own unit tests (run in the tooling job)
# separately assert every closed-form bound in GAME.md.
sim-drift:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: regenerate and diff
run: |
sim/run.sh
git diff --exit-code sim/results
# The empirical fee analysis is a pure function of the committed base-fee
# sample and the committed gas numbers. Recompute and fail on drift. The
# raw data (fees/data) is fetched once by fees/fetch.py and committed; CI
# never touches the network.
fee-drift:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: recompute and diff
run: |
python3 fees/analyze.py
git diff --exit-code fees/results