Repository navigation
Publish the registration behind the intent-settlement measurement #73
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |