Skip to content

Commit b777910

Browse files
authored
Merge 2b65191 into f5aed29
2 parents f5aed29 + 2b65191 commit b777910

288 files changed

Lines changed: 52750 additions & 8830 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: "Start Aggregation Mode Server"
2+
3+
# Starts the Paperspace GPU server that runs the aggregation mode.
4+
#
5+
# The server is kept powered off to avoid 24/7 billing. This workflow boots it
6+
# once a day; on boot the machine runs `aggregation_mode.service`, which executes
7+
# the SP1 aggregations and then powers the machine off again
8+
# (see infra/aggregation_mode/run.sh).
9+
on:
10+
schedule:
11+
# 15:00 UTC == 12:00 GMT-3, every day. GitHub Actions cron is always in UTC.
12+
- cron: "0 15 * * *"
13+
workflow_dispatch:
14+
15+
jobs:
16+
start-server:
17+
name: Start Paperspace aggregation server
18+
runs-on: ubuntu-latest
19+
steps:
20+
- name: Start Paperspace machine
21+
env:
22+
PAPERSPACE_API_KEY: ${{ secrets.PAPERSPACE_API_KEY }}
23+
MACHINE_ID: ${{ secrets.PAPERSPACE_MACHINE_ID }}
24+
run: |
25+
set -euo pipefail
26+
27+
if [ -z "${PAPERSPACE_API_KEY}" ] || [ -z "${MACHINE_ID}" ]; then
28+
echo "::error::PAPERSPACE_API_KEY and PAPERSPACE_MACHINE_ID secrets must be set."
29+
exit 1
30+
fi
31+
32+
echo "Starting Paperspace machine ${MACHINE_ID}..."
33+
http_code=$(curl -sS -o response.json -w "%{http_code}" \
34+
-X PATCH "https://api.paperspace.com/v1/machines/${MACHINE_ID}/start" \
35+
-H "Authorization: Bearer ${PAPERSPACE_API_KEY}")
36+
37+
echo "Paperspace API responded with HTTP ${http_code}"
38+
cat response.json || true
39+
40+
# 2xx means the start request was accepted.
41+
if [ "${http_code}" -lt 200 ] || [ "${http_code}" -ge 300 ]; then
42+
echo "::error::Failed to start Paperspace machine (HTTP ${http_code})."
43+
exit 1
44+
fi
45+
46+
echo "Start request accepted. The machine will run the aggregation on boot and shut itself down afterwards."

.github/workflows/build-and-test-go.yml

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ on:
1313
- "common/**"
1414
- "core/**"
1515
- "metrics/**"
16-
- ".github/workflows/build-go.yml"
16+
- ".github/workflows/build-and-test-go.yml"
1717
env:
1818
FFI_FOR_RELEASE: false
1919
jobs:
@@ -31,15 +31,83 @@ jobs:
3131
- name: foundry-toolchain
3232
uses: foundry-rs/foundry-toolchain@v1.2.0
3333

34+
- name: Cache SP1 bindings
35+
id: cache-sp1
36+
uses: actions/cache@v4
37+
with:
38+
path: operator/sp1/lib/libsp1_verifier_ffi.so
39+
key: sp1-bindings-${{ runner.os }}-${{ hashFiles('operator/sp1/lib/**/*.rs', 'operator/sp1/lib/Cargo.*') }}
40+
3441
- name: Build SP1 bindings
42+
if: steps.cache-sp1.outputs.cache-hit != 'true'
3543
run: make build_sp1_linux
3644

45+
- name: Clean SP1 build artifacts
46+
if: steps.cache-sp1.outputs.cache-hit != 'true'
47+
run: rm -rf operator/sp1/lib/target
48+
49+
- name: Cache Risc Zero bindings
50+
id: cache-risc-zero
51+
uses: actions/cache@v4
52+
with:
53+
path: operator/risc_zero/lib/librisc_zero_verifier_ffi.so
54+
key: risc-zero-bindings-${{ runner.os }}-${{ hashFiles('operator/risc_zero/lib/**/*.rs', 'operator/risc_zero/lib/Cargo.*') }}
55+
3756
- name: Build Risc Zero go bindings
57+
if: steps.cache-risc-zero.outputs.cache-hit != 'true'
3858
run: make build_risc_zero_linux
3959

60+
- name: Clean Risc Zero build artifacts
61+
if: steps.cache-risc-zero.outputs.cache-hit != 'true'
62+
run: rm -rf operator/risc_zero/lib/target
63+
64+
- name: Cache Merkle Tree bindings
65+
id: cache-merkle-tree
66+
uses: actions/cache@v4
67+
with:
68+
path: |
69+
operator/merkle_tree/lib/libmerkle_tree.so
70+
operator/merkle_tree/lib/libmerkle_tree.a
71+
key: merkle-tree-bindings-${{ runner.os }}-${{ hashFiles('operator/merkle_tree/lib/**/*.rs', 'operator/merkle_tree/lib/Cargo.*') }}
72+
4073
- name: Build Merkle Tree bindings
74+
if: steps.cache-merkle-tree.outputs.cache-hit != 'true'
4175
run: make build_merkle_tree_linux
4276

77+
- name: Clean Merkle Tree build artifacts
78+
if: steps.cache-merkle-tree.outputs.cache-hit != 'true'
79+
run: rm -rf operator/merkle_tree/lib/target
80+
81+
- name: Cache Mina bindings
82+
id: cache-mina
83+
uses: actions/cache@v4
84+
with:
85+
path: operator/mina/lib/libmina_state_verifier_ffi.so
86+
key: mina-bindings-${{ runner.os }}-${{ hashFiles('operator/mina/lib/**/*.rs', 'operator/mina/lib/Cargo.*') }}
87+
88+
- name: Build Mina bindings
89+
if: steps.cache-mina.outputs.cache-hit != 'true'
90+
run: make build_mina_linux
91+
92+
- name: Clean Mina build artifacts
93+
if: steps.cache-mina.outputs.cache-hit != 'true'
94+
run: rm -rf operator/mina/lib/target
95+
96+
- name: Cache Mina Account bindings
97+
id: cache-mina-account
98+
uses: actions/cache@v4
99+
with:
100+
path: operator/mina_account/lib/libmina_account_verifier_ffi.so
101+
key: mina-account-bindings-${{ runner.os }}-${{ hashFiles('operator/mina_account/lib/**/*.rs', 'operator/mina_account/lib/Cargo.*') }}
102+
103+
- name: Build Mina Account bindings
104+
if: steps.cache-mina-account.outputs.cache-hit != 'true'
105+
run: make build_mina_account_linux
106+
107+
- name: Clean Mina Account build artifacts
108+
if: steps.cache-mina-account.outputs.cache-hit != 'true'
109+
run: rm -rf operator/mina_account/lib/target
110+
43111
- name: Build operator
44112
run: go build operator/cmd/main.go
45113

.github/workflows/build-and-test-rust.yml

Lines changed: 7 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ on:
1313
- ".github/workflows/build-and-test-rust.yml"
1414

1515
jobs:
16-
build:
16+
build-and-test:
1717
runs-on: aligned-runner
1818

1919
steps:
@@ -26,6 +26,9 @@ jobs:
2626
components: rustfmt, clippy
2727
override: true
2828

29+
- name: foundry-toolchain
30+
uses: foundry-rs/foundry-toolchain@v1.2.0
31+
2932
# Reference: https://github.com/succinctlabs/sp1/actions/runs/8886659400/workflow#L61-L65
3033
- name: Install sp1 toolchain
3134
run: |
@@ -82,46 +85,13 @@ jobs:
8285
# We need to skip the build as clippy does not support the riscv32im-risc0-zkvm-elf target
8386
RISC0_SKIP_BUILD=1 cargo clippy --all -- -D warnings
8487
85-
test:
86-
runs-on: aligned-runner
87-
needs: build
88-
steps:
89-
- name: Checkout code
90-
uses: actions/checkout@v4
91-
92-
- name: foundry-toolchain
93-
uses: foundry-rs/foundry-toolchain@v1.2.0
94-
95-
# Reference: https://github.com/succinctlabs/sp1/actions/runs/8886659400/workflow#L61-L65
96-
- name: Install sp1 toolchain
97-
run: |
98-
curl -L https://sp1.succinct.xyz | bash
99-
source /home/runner/.bashrc
100-
~/.sp1/bin/sp1up
101-
102-
- name: Install risc0 toolchain
103-
run: |
104-
curl -L https://risczero.com/install | bash
105-
source ~/.bashrc
106-
~/.risc0/bin/rzup install
107-
108-
- name: Cache Rust dependencies
109-
uses: actions/cache@v3
110-
with:
111-
path: |
112-
~/.cargo/registry
113-
~/.cargo/git
114-
crates/target
115-
key: ${{ runner.os }}-rust-${{ hashFiles('**/Cargo.lock') }}
116-
restore-keys: |
117-
${{ runner.os }}-rust-
118-
11988
- name: Run Batcher tests
12089
run: |
12190
cd crates
12291
cargo test --all
12392
12493
- name: Run AggregationMode tests
12594
run: |
126-
cd aggregation_mode
127-
cargo test --all
95+
cd aggregation_mode/proof_aggregator && SKIP_AGG_PROGRAMS_BUILD=1 cargo test
96+
cd ../gateway && cargo test
97+
cd ../payments_poller && cargo test

.github/workflows/test-mina.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: test-mina
2+
3+
on:
4+
merge_group:
5+
push:
6+
branches: [main]
7+
pull_request:
8+
branches: ["*"]
9+
paths:
10+
- 'operator/mina/**'
11+
- 'operator/mina_account/**'
12+
- '.github/workflows/test-mina.yml'
13+
14+
jobs:
15+
test:
16+
runs-on: ubuntu-latest
17+
steps:
18+
- uses: actions/checkout@v4
19+
- uses: actions/setup-go@v5
20+
with:
21+
go-version: '1.22'
22+
cache: false
23+
- uses: actions-rs/toolchain@v1
24+
with:
25+
toolchain: stable
26+
- name: Test Mina Rust
27+
run: make test_mina_rust_ffi
28+
- name: Test Mina go bindings
29+
run: make test_mina_go_bindings_linux
30+
- name: Test Mina Account Rust
31+
run: make test_mina_account_rust_ffi
32+
- name: Test Mina Account go bindings
33+
run: make test_mina_account_go_bindings_linux

.gitignore

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,12 @@ circuit_js
4141

4242
# Reports
4343
docs/dead_links_report.txt
44+
45+
**/.terraform
46+
terraform.tfstate
47+
terraform.tfstate.backup
48+
49+
50+
# Aggregation Mode Ansible INI files (track config-*.ini templates, ignore others)
51+
infra/aggregation_mode/ansible/playbooks/ini/*.ini
52+
!infra/aggregation_mode/ansible/playbooks/ini/config-*.ini

0 commit comments

Comments
 (0)