Skip to content

Commit dbb66db

Browse files
authored
Merge fbf96e4 into a2dcb5f
2 parents a2dcb5f + fbf96e4 commit dbb66db

File tree

146 files changed

+38476
-4714
lines changed

Some content is hidden

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

146 files changed

+38476
-4714
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/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: 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: 165 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)
@@ -252,6 +252,9 @@ proof_aggregator_start_dev: is_aggregator_set reset_last_aggregated_block ./aggr
252252
proof_aggregator_start_dev_ethereum_package: is_aggregator_set reset_last_aggregated_block ./aggregation_mode/target/release/proof_aggregator_dev ## Starts proof aggregator with mock proofs (DEV mode) in ethereum package. Parameters: AGGREGATOR=<sp1|risc0>
253253
AGGREGATOR=$(AGGREGATOR) RISC0_DEV_MODE=1 ./aggregation_mode/target/release/proof_aggregator_dev config-files/config-proof-aggregator-mock-ethereum-package.yaml
254254

255+
proof_aggregator_test_without_compiling_agg_programs:
256+
cd aggregation_mode && SKIP_AGG_PROGRAMS_BUILD=1 cargo test -p proof_aggregator --tests -- --nocapture
257+
255258
### All CPU proof aggregator receipts
256259
./aggregation_mode/target/release/proof_aggregator_cpu: $(AGGREGATION_MODE_SOURCES)
257260
AGGREGATOR=$(AGGREGATOR) cargo build --features prove --manifest-path ./aggregation_mode/Cargo.toml --release --bin proof_aggregator_cpu
@@ -300,7 +303,41 @@ proof_aggregator_install: ## Install the aggregation mode with proving enabled
300303
cargo install --path aggregation_mode --features prove,gpu --bin proof_aggregator_gpu --locked
301304

302305
proof_aggregator_write_program_ids: ## Write proof aggregator zkvm programs ids
303-
@cd aggregation_mode && ./scripts/build_programs.sh
306+
@cd aggregation_mode/proof_aggregator && ./scripts/build_programs.sh
307+
308+
agg_mode_docker_up:
309+
@cd aggregation_mode && docker compose up -d
310+
311+
agg_mode_docker_down:
312+
@cd aggregation_mode && docker compose down
313+
314+
agg_mode_docker_clean: agg_mode_docker_down
315+
docker volume rm aggregation-mode_postgres_data
316+
317+
agg_mode_run_migrations: agg_mode_docker_up
318+
cargo run --manifest-path ./aggregation_mode/Cargo.toml --release --bin migrate -- postgres://postgres:postgres@localhost:5435/
319+
320+
agg_mode_batcher_start_local: agg_mode_run_migrations
321+
cargo run --manifest-path ./aggregation_mode/Cargo.toml --release --bin agg_mode_batcher -- config-files/config-agg-mode-batcher.yaml
322+
323+
agg_mode_batcher_start_ethereum_package: agg_mode_run_migrations
324+
cargo run --manifest-path ./aggregation_mode/Cargo.toml --release --bin agg_mode_batcher -- config-files/config-agg-mode-batcher-ethereum-package.yaml
325+
326+
AGG_MODE_SENDER ?= 0x70997970C51812dc3A010C7d01b50e0d17dc79C8
327+
agg_mode_batcher_send_payment:
328+
@cast send --value 1ether \
329+
0x922D6956C99E12DFeB3224DEA977D0939758A1Fe \
330+
--private-key 0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d
331+
332+
agg_mode_batcher_send_sp1_proof:
333+
@NONCE=$$(curl -s http://127.0.0.1:8089/nonce/0x70997970C51812dc3A010C7d01b50e0d17dc79C8 | jq -r '.data.nonce'); \
334+
curl -X POST \
335+
-H "Content-Type: multipart/form-data" \
336+
-F "nonce=$${NONCE}" \
337+
-F "proof=@scripts/test_files/sp1/sp1_fibonacci_5_0_0.proof" \
338+
-F "program_vk=@scripts/test_files/sp1/sp1_fibonacci_5_0_0_vk.bin" \
339+
-F "signature_hex=0x0" \
340+
http://127.0.0.1:8089/proof/sp1
304341

305342
__AGGREGATOR__: ## ____
306343

@@ -703,6 +740,58 @@ batcher_send_circom_groth16_bn256_no_pub_input_burst: crates/target/release/alig
703740
--rpc_url $(RPC_URL) \
704741
--network $(NETWORK)
705742

743+
batcher_send_mina_task:
744+
@echo "Sending Mina state task to Batcher..."
745+
@cd crates/cli/ && cargo run --release -- submit \
746+
--proving_system Mina \
747+
--proof ../../scripts/test_files/mina/devnet_mina_state.proof \
748+
--public_input ../../scripts/test_files/mina/devnet_mina_state.pub \
749+
--proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \
750+
--rpc_url $(RPC_URL) \
751+
--network $(NETWORK)
752+
753+
batcher_send_mina_task_bad_hash:
754+
@echo "Sending Mina state task to Batcher..."
755+
@cd crates/cli/ && cargo run --release -- submit \
756+
--proving_system Mina \
757+
--proof ../../scripts/test_files/mina/devnet_mina_state.proof \
758+
--public_input ../../scripts/test_files/mina/mina_state_bad_hash.pub \
759+
--proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \
760+
--rpc_url $(RPC_URL) \
761+
--network $(NETWORK)
762+
763+
batcher_send_mina_burst:
764+
@echo "Sending Mina state task to Batcher..."
765+
@cd crates/cli/ && cargo run --release -- submit \
766+
--proving_system Mina \
767+
--proof ../../scripts/test_files/mina/devnet_mina_state.proof \
768+
--public_input ../../scripts/test_files/mina/devnet_mina_state.pub \
769+
--proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \
770+
--repetitions $(BURST_SIZE) \
771+
--rpc_url $(RPC_URL) \
772+
--network $(NETWORK)
773+
774+
batcher_send_mina_account_task:
775+
@echo "Sending Mina account task to Batcher..."
776+
@cd crates/cli/ && cargo run --release -- submit \
777+
--proving_system MinaAccount \
778+
--proof ../../scripts/test_files/mina_account/mina_account.proof \
779+
--public_input ../../scripts/test_files/mina_account/mina_account.pub \
780+
--proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \
781+
--rpc_url $(RPC_URL) \
782+
--network $(NETWORK)
783+
784+
batcher_send_mina_account_burst:
785+
@echo "Sending Mina account task to Batcher..."
786+
@cd crates/cli/ && cargo run --release -- submit \
787+
--proving_system MinaAccount \
788+
--proof ../../scripts/test_files/mina_account/mina_account.proof \
789+
--public_input ../../scripts/test_files/mina_account/mina_account.pub \
790+
--proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657 \
791+
--repetitions $(BURST_SIZE) \
792+
--rpc_url $(RPC_URL) \
793+
--network $(NETWORK)
794+
706795
batcher_send_proof_with_random_address: ## Send a proof with a random address to Batcher. Parameters: RPC_URL, NETWORK, PROOF_TYPE, REPETITIONS
707796
@cd crates/cli/ && ./send_proof_with_random_address.sh
708797

@@ -968,6 +1057,48 @@ test_merkle_tree_go_bindings_linux: build_merkle_tree_linux
9681057
@echo "Testing Merkle Tree Go bindings..."
9691058
go test ./operator/merkle_tree/... -v
9701059

1060+
__MINA_FFI__: ##
1061+
build_mina_macos:
1062+
@cd operator/mina/lib && cargo build --release ${MINA_FEATURES_FLAG}
1063+
@cp operator/mina/lib/target/release/libmina_state_verifier_ffi.dylib operator/mina/lib/libmina_state_verifier_ffi.dylib
1064+
1065+
build_mina_linux:
1066+
@cd operator/mina/lib && cargo build --release ${MINA_FEATURES_FLAG}
1067+
@cp operator/mina/lib/target/release/libmina_state_verifier_ffi.so operator/mina/lib/libmina_state_verifier_ffi.so
1068+
1069+
test_mina_rust_ffi:
1070+
@echo "Testing Mina Rust FFI source code..."
1071+
@cd operator/mina/lib && cargo t --release
1072+
1073+
test_mina_go_bindings_macos: build_mina_macos
1074+
@echo "Testing Mina Go bindings..."
1075+
go test ./operator/mina/... -v
1076+
1077+
test_mina_go_bindings_linux: build_mina_linux
1078+
@echo "Testing Mina Go bindings..."
1079+
go test ./operator/mina/... -v
1080+
1081+
__MINA_ACCOUNT_FFI__: ##
1082+
build_mina_account_macos:
1083+
@cd operator/mina_account/lib && cargo build --release
1084+
@cp operator/mina_account/lib/target/release/libmina_account_verifier_ffi.dylib operator/mina_account/lib/libmina_account_verifier_ffi.dylib
1085+
1086+
build_mina_account_linux:
1087+
@cd operator/mina_account/lib && cargo build --release
1088+
@cp operator/mina_account/lib/target/release/libmina_account_verifier_ffi.so operator/mina_account/lib/libmina_account_verifier_ffi.so
1089+
1090+
test_mina_account_rust_ffi:
1091+
@echo "Testing Mina Account Rust FFI source code..."
1092+
@cd operator/mina_account/lib && cargo t --release
1093+
1094+
test_mina_account_go_bindings_macos: build_mina_account_macos
1095+
@echo "Testing Mina Account Go bindings..."
1096+
go test ./operator/mina_account/... -v
1097+
1098+
test_mina_account_go_bindings_linux: build_mina_account_linux
1099+
@echo "Testing Mina Account Go bindings..."
1100+
go test ./operator/mina_account/... -v
1101+
9711102
__FFI__: ## ____
9721103

9731104
build_all_ffi: ## Build all FFIs
@@ -979,13 +1110,17 @@ build_all_ffi_macos: ## Build all FFIs for macOS
9791110
@$(MAKE) build_sp1_macos
9801111
@$(MAKE) build_risc_zero_macos
9811112
@$(MAKE) build_merkle_tree_macos
1113+
@$(MAKE) build_mina_macos
1114+
@$(MAKE) build_mina_account_macos
9821115
@echo "All macOS FFIs built successfully."
9831116

9841117
build_all_ffi_linux: ## Build all FFIs for Linux
9851118
@echo "Building all FFIs for Linux..."
9861119
@$(MAKE) build_sp1_linux
9871120
@$(MAKE) build_risc_zero_linux
9881121
@$(MAKE) build_merkle_tree_linux
1122+
@$(MAKE) build_mina_linux
1123+
@$(MAKE) build_mina_account_linux
9891124
@echo "All Linux FFIs built successfully."
9901125

9911126
__EXPLORER__: ## ____
@@ -1193,6 +1328,30 @@ docker_batcher_send_circom_groth16_bn256_no_pub_input_burst:
11931328
--rpc_url $(DOCKER_RPC_URL) \
11941329
--max_fee 0.1ether
11951330

1331+
docker_batcher_send_mina_burst:
1332+
@echo "Sending Mina state task to Batcher..."
1333+
docker exec $(shell docker ps | grep batcher | awk '{print $$1}') aligned submit \
1334+
--private_key $(DOCKER_PROOFS_PRIVATE_KEY) \
1335+
--proving_system Mina \
1336+
--proof ./scripts/test_files/mina/devnet_mina_state.proof \
1337+
--public_input ./scripts/test_files/mina/devnet_mina_state.pub \
1338+
--repetitions $(DOCKER_BURST_SIZE) \
1339+
--proof_generator_addr $(PROOF_GENERATOR_ADDRESS) \
1340+
--rpc_url $(DOCKER_RPC_URL) \
1341+
--max_fee 0.1ether
1342+
1343+
docker_batcher_send_mina_account_burst:
1344+
@echo "Sending Mina account task to Batcher..."
1345+
docker exec $(shell docker ps | grep batcher | awk '{print $$1}') aligned submit \
1346+
--private_key $(DOCKER_PROOFS_PRIVATE_KEY) \
1347+
--proving_system MinaAccount \
1348+
--proof ./scripts/test_files/mina_account/mina_account.proof \
1349+
--public_input ./scripts/test_files/mina_account/mina_account.pub \
1350+
--repetitions $(DOCKER_BURST_SIZE) \
1351+
--proof_generator_addr $(PROOF_GENERATOR_ADDRESS) \
1352+
--rpc_url $(DOCKER_RPC_URL) \
1353+
--max_fee 0.1ether
1354+
11961355
# Update target as new proofs are supported.
11971356
docker_batcher_send_all_proofs_burst:
11981357
@$(MAKE) docker_batcher_send_sp1_burst
@@ -1202,6 +1361,8 @@ docker_batcher_send_all_proofs_burst:
12021361
@$(MAKE) docker_batcher_send_gnark_groth16_burst
12031362
@$(MAKE) docker_batcher_send_circom_groth16_bn256_burst
12041363
@$(MAKE) docker_batcher_send_circom_groth16_bn256_no_pub_input_burst
1364+
@$(MAKE) docker_batcher_send_mina_burst
1365+
@$(MAKE) docker_batcher_send_mina_account_burst
12051366

12061367
docker_batcher_send_infinite_groth16:
12071368
docker exec $(shell docker ps | grep batcher | awk '{print $$1}') \
@@ -1239,7 +1400,7 @@ docker_verify_proofs_onchain:
12391400
'
12401401

12411402
DOCKER_PROOFS_WAIT_TIME=60
1242-
DOCKER_SENT_PROOFS=7
1403+
DOCKER_SENT_PROOFS=9
12431404

12441405
docker_verify_proof_submission_success:
12451406
@echo "Verifying proofs were successfully submitted..."

0 commit comments

Comments
 (0)