Skip to content

Commit 616fe62

Browse files
Merge branch 'staging' into feataggmode/constant-costs-proof-sending
2 parents 893209d + 2aa541a commit 616fe62

File tree

135 files changed

+37680
-4430
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

135 files changed

+37680
-4430
lines changed

.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/[email protected]
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: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,5 +123,5 @@ jobs:
123123
124124
- name: Run AggregationMode tests
125125
run: |
126-
cd aggregation_mode
127-
cargo test --all
126+
cd aggregation_mode/proof_aggregator && cargo test
127+
cd ../batcher && 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

Makefile

Lines changed: 146 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ ifeq ($(OS),Darwin)
3232
endif
3333

3434
ifeq ($(OS),Linux)
35-
export LD_LIBRARY_PATH+=$(CURDIR)/operator/risc_zero/lib:$(CURDIR)/operator/sp1/lib
36-
OPERATOR_FFIS=$(CURDIR)/operator/risc_zero/lib:$(CURDIR)/operator/sp1/lib
35+
export LD_LIBRARY_PATH+=$(CURDIR)/operator/risc_zero/lib:$(CURDIR)/operator/sp1/lib:$(CURDIR)/operator/mina/lib:$(CURDIR)/operator/mina_account/lib
36+
OPERATOR_FFIS=$(CURDIR)/operator/risc_zero/lib:$(CURDIR)/operator/sp1/lib:$(CURDIR)/operator/mina/lib:$(CURDIR)/operator/mina_account/lib
3737
endif
3838

3939
ifeq ($(OS),Linux)
@@ -300,7 +300,25 @@ proof_aggregator_install: ## Install the aggregation mode with proving enabled
300300
cargo install --path aggregation_mode --features prove,gpu --bin proof_aggregator_gpu --locked
301301

302302
proof_aggregator_write_program_ids: ## Write proof aggregator zkvm programs ids
303-
@cd aggregation_mode && ./scripts/build_programs.sh
303+
@cd aggregation_mode/proof_aggregator && ./scripts/build_programs.sh
304+
305+
agg_mode_docker_up:
306+
@cd aggregation_mode && docker-compose up -d
307+
308+
agg_mode_docker_down:
309+
@cd aggregation_mode && docker-compose down
310+
311+
agg_mode_docker_clean: agg_mode_docker_down
312+
docker volume rm aggregation-mode_postgres_data
313+
314+
agg_mode_run_migrations: agg_mode_docker_up
315+
cargo run --manifest-path ./aggregation_mode/Cargo.toml --release --bin migrate -- postgres://postgres:postgres@localhost:5435/
316+
317+
agg_mode_batcher_start_local: agg_mode_run_migrations
318+
cargo run --manifest-path ./aggregation_mode/Cargo.toml --release --bin agg_mode_batcher -- config-files/config-agg-mode-batcher.yaml
319+
320+
agg_mode_batcher_start_ethereum_package: agg_mode_run_migrations
321+
cargo run --manifest-path ./aggregation_mode/Cargo.toml --release --bin agg_mode_batcher -- config-files/config-agg-mode-batcher-ethereum-package.yaml
304322

305323
__AGGREGATOR__: ## ____
306324

@@ -703,6 +721,58 @@ batcher_send_circom_groth16_bn256_no_pub_input_burst: crates/target/release/alig
703721
--rpc_url $(RPC_URL) \
704722
--network $(NETWORK)
705723

724+
batcher_send_mina_task:
725+
@echo "Sending Mina state task to Batcher..."
726+
@cd crates/cli/ && cargo run --release -- submit \
727+
--proving_system Mina \
728+
--proof ../../scripts/test_files/mina/devnet_mina_state.proof \
729+
--public_input ../../scripts/test_files/mina/devnet_mina_state.pub \
730+
--proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \
731+
--rpc_url $(RPC_URL) \
732+
--network $(NETWORK)
733+
734+
batcher_send_mina_task_bad_hash:
735+
@echo "Sending Mina state task to Batcher..."
736+
@cd crates/cli/ && cargo run --release -- submit \
737+
--proving_system Mina \
738+
--proof ../../scripts/test_files/mina/devnet_mina_state.proof \
739+
--public_input ../../scripts/test_files/mina/mina_state_bad_hash.pub \
740+
--proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \
741+
--rpc_url $(RPC_URL) \
742+
--network $(NETWORK)
743+
744+
batcher_send_mina_burst:
745+
@echo "Sending Mina state task to Batcher..."
746+
@cd crates/cli/ && cargo run --release -- submit \
747+
--proving_system Mina \
748+
--proof ../../scripts/test_files/mina/devnet_mina_state.proof \
749+
--public_input ../../scripts/test_files/mina/devnet_mina_state.pub \
750+
--proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \
751+
--repetitions $(BURST_SIZE) \
752+
--rpc_url $(RPC_URL) \
753+
--network $(NETWORK)
754+
755+
batcher_send_mina_account_task:
756+
@echo "Sending Mina account task to Batcher..."
757+
@cd crates/cli/ && cargo run --release -- submit \
758+
--proving_system MinaAccount \
759+
--proof ../../scripts/test_files/mina_account/mina_account.proof \
760+
--public_input ../../scripts/test_files/mina_account/mina_account.pub \
761+
--proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \
762+
--rpc_url $(RPC_URL) \
763+
--network $(NETWORK)
764+
765+
batcher_send_mina_account_burst:
766+
@echo "Sending Mina account task to Batcher..."
767+
@cd crates/cli/ && cargo run --release -- submit \
768+
--proving_system MinaAccount \
769+
--proof ../../scripts/test_files/mina_account/mina_account.proof \
770+
--public_input ../../scripts/test_files/mina_account/mina_account.pub \
771+
--proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \
772+
--repetitions $(BURST_SIZE) \
773+
--rpc_url $(RPC_URL) \
774+
--network $(NETWORK)
775+
706776
batcher_send_proof_with_random_address: ## Send a proof with a random address to Batcher. Parameters: RPC_URL, NETWORK, PROOF_TYPE, REPETITIONS
707777
@cd crates/cli/ && ./send_proof_with_random_address.sh
708778

@@ -968,6 +1038,48 @@ test_merkle_tree_go_bindings_linux: build_merkle_tree_linux
9681038
@echo "Testing Merkle Tree Go bindings..."
9691039
go test ./operator/merkle_tree/... -v
9701040

1041+
__MINA_FFI__: ##
1042+
build_mina_macos:
1043+
@cd operator/mina/lib && cargo build --release ${MINA_FEATURES_FLAG}
1044+
@cp operator/mina/lib/target/release/libmina_state_verifier_ffi.dylib operator/mina/lib/libmina_state_verifier_ffi.dylib
1045+
1046+
build_mina_linux:
1047+
@cd operator/mina/lib && cargo build --release ${MINA_FEATURES_FLAG}
1048+
@cp operator/mina/lib/target/release/libmina_state_verifier_ffi.so operator/mina/lib/libmina_state_verifier_ffi.so
1049+
1050+
test_mina_rust_ffi:
1051+
@echo "Testing Mina Rust FFI source code..."
1052+
@cd operator/mina/lib && cargo t --release
1053+
1054+
test_mina_go_bindings_macos: build_mina_macos
1055+
@echo "Testing Mina Go bindings..."
1056+
go test ./operator/mina/... -v
1057+
1058+
test_mina_go_bindings_linux: build_mina_linux
1059+
@echo "Testing Mina Go bindings..."
1060+
go test ./operator/mina/... -v
1061+
1062+
__MINA_ACCOUNT_FFI__: ##
1063+
build_mina_account_macos:
1064+
@cd operator/mina_account/lib && cargo build --release
1065+
@cp operator/mina_account/lib/target/release/libmina_account_verifier_ffi.dylib operator/mina_account/lib/libmina_account_verifier_ffi.dylib
1066+
1067+
build_mina_account_linux:
1068+
@cd operator/mina_account/lib && cargo build --release
1069+
@cp operator/mina_account/lib/target/release/libmina_account_verifier_ffi.so operator/mina_account/lib/libmina_account_verifier_ffi.so
1070+
1071+
test_mina_account_rust_ffi:
1072+
@echo "Testing Mina Account Rust FFI source code..."
1073+
@cd operator/mina_account/lib && cargo t --release
1074+
1075+
test_mina_account_go_bindings_macos: build_mina_account_macos
1076+
@echo "Testing Mina Account Go bindings..."
1077+
go test ./operator/mina_account/... -v
1078+
1079+
test_mina_account_go_bindings_linux: build_mina_account_linux
1080+
@echo "Testing Mina Account Go bindings..."
1081+
go test ./operator/mina_account/... -v
1082+
9711083
__FFI__: ## ____
9721084

9731085
build_all_ffi: ## Build all FFIs
@@ -979,13 +1091,17 @@ build_all_ffi_macos: ## Build all FFIs for macOS
9791091
@$(MAKE) build_sp1_macos
9801092
@$(MAKE) build_risc_zero_macos
9811093
@$(MAKE) build_merkle_tree_macos
1094+
@$(MAKE) build_mina_macos
1095+
@$(MAKE) build_mina_account_macos
9821096
@echo "All macOS FFIs built successfully."
9831097

9841098
build_all_ffi_linux: ## Build all FFIs for Linux
9851099
@echo "Building all FFIs for Linux..."
9861100
@$(MAKE) build_sp1_linux
9871101
@$(MAKE) build_risc_zero_linux
9881102
@$(MAKE) build_merkle_tree_linux
1103+
@$(MAKE) build_mina_linux
1104+
@$(MAKE) build_mina_account_linux
9891105
@echo "All Linux FFIs built successfully."
9901106

9911107
__EXPLORER__: ## ____
@@ -1193,6 +1309,30 @@ docker_batcher_send_circom_groth16_bn256_no_pub_input_burst:
11931309
--rpc_url $(DOCKER_RPC_URL) \
11941310
--max_fee 0.1ether
11951311

1312+
docker_batcher_send_mina_burst:
1313+
@echo "Sending Mina state task to Batcher..."
1314+
docker exec $(shell docker ps | grep batcher | awk '{print $$1}') aligned submit \
1315+
--private_key $(DOCKER_PROOFS_PRIVATE_KEY) \
1316+
--proving_system Mina \
1317+
--proof ./scripts/test_files/mina/devnet_mina_state.proof \
1318+
--public_input ./scripts/test_files/mina/devnet_mina_state.pub \
1319+
--repetitions $(DOCKER_BURST_SIZE) \
1320+
--proof_generator_addr $(PROOF_GENERATOR_ADDRESS) \
1321+
--rpc_url $(DOCKER_RPC_URL) \
1322+
--max_fee 0.1ether
1323+
1324+
docker_batcher_send_mina_account_burst:
1325+
@echo "Sending Mina account task to Batcher..."
1326+
docker exec $(shell docker ps | grep batcher | awk '{print $$1}') aligned submit \
1327+
--private_key $(DOCKER_PROOFS_PRIVATE_KEY) \
1328+
--proving_system MinaAccount \
1329+
--proof ./scripts/test_files/mina_account/mina_account.proof \
1330+
--public_input ./scripts/test_files/mina_account/mina_account.pub \
1331+
--repetitions $(DOCKER_BURST_SIZE) \
1332+
--proof_generator_addr $(PROOF_GENERATOR_ADDRESS) \
1333+
--rpc_url $(DOCKER_RPC_URL) \
1334+
--max_fee 0.1ether
1335+
11961336
# Update target as new proofs are supported.
11971337
docker_batcher_send_all_proofs_burst:
11981338
@$(MAKE) docker_batcher_send_sp1_burst
@@ -1202,6 +1342,8 @@ docker_batcher_send_all_proofs_burst:
12021342
@$(MAKE) docker_batcher_send_gnark_groth16_burst
12031343
@$(MAKE) docker_batcher_send_circom_groth16_bn256_burst
12041344
@$(MAKE) docker_batcher_send_circom_groth16_bn256_no_pub_input_burst
1345+
@$(MAKE) docker_batcher_send_mina_burst
1346+
@$(MAKE) docker_batcher_send_mina_account_burst
12051347

12061348
docker_batcher_send_infinite_groth16:
12071349
docker exec $(shell docker ps | grep batcher | awk '{print $$1}') \
@@ -1239,7 +1381,7 @@ docker_verify_proofs_onchain:
12391381
'
12401382

12411383
DOCKER_PROOFS_WAIT_TIME=60
1242-
DOCKER_SENT_PROOFS=7
1384+
DOCKER_SENT_PROOFS=9
12431385

12441386
docker_verify_proof_submission_success:
12451387
@echo "Verifying proofs were successfully submitted..."

0 commit comments

Comments
 (0)