Skip to content

Commit 8755559

Browse files
authored
Merge pull request #57 from lambdaclass/add_tests
Increase Mina and Mina Account FFI coverage
2 parents 836ce51 + df5c035 commit 8755559

9 files changed

Lines changed: 137 additions & 31 deletions

File tree

Makefile

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -518,24 +518,24 @@ batcher_send_mina_task:
518518
@echo "Sending Mina state task to Batcher..."
519519
@cd batcher/aligned/ && cargo run --release -- submit \
520520
--proving_system Mina \
521-
--proof ../../scripts/test_files/mina/mina_state.proof \
522-
--public_input ../../scripts/test_files/mina/mina_state.pub \
521+
--proof ../../scripts/test_files/mina/devnet_mina_state.proof \
522+
--public_input ../../scripts/test_files/mina/devnet_mina_state.pub \
523523
--proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657
524524

525525
batcher_send_mina_task_bad_hash:
526526
@echo "Sending Mina state task to Batcher..."
527527
@cd batcher/aligned/ && cargo run --release -- submit \
528528
--proving_system Mina \
529-
--proof ../../scripts/test_files/mina/mina_state.proof \
529+
--proof ../../scripts/test_files/mina/devnet_mina_state.proof \
530530
--public_input ../../scripts/test_files/mina/mina_state_bad_hash.pub \
531531
--proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657
532532

533533
batcher_send_mina_burst:
534534
@echo "Sending Mina state task to Batcher..."
535535
@cd batcher/aligned/ && cargo run --release -- submit \
536536
--proving_system Mina \
537-
--proof ../../scripts/test_files/mina/mina_state.proof \
538-
--public_input ../../scripts/test_files/mina/mina_state.pub \
537+
--proof ../../scripts/test_files/mina/devnet_mina_state.proof \
538+
--public_input ../../scripts/test_files/mina/devnet_mina_state.pub \
539539
--repetitions 15 \
540540
--proof_generator_addr 0x66f9664f97F2b50F62D13eA064982f936dE76657
541541

@@ -1133,8 +1133,8 @@ docker_batcher_send_mina_burst:
11331133
docker exec $(shell docker ps | grep batcher | awk '{print $$1}') aligned submit \
11341134
--private_key $(DOCKER_PROOFS_PRIVATE_KEY) \
11351135
--proving_system Mina \
1136-
--proof ./scripts/test_files/mina/mina_state.proof \
1137-
--public_input ./scripts/test_files/mina/mina_state.pub \
1136+
--proof ./scripts/test_files/mina/devnet_mina_state.proof \
1137+
--public_input ./scripts/test_files/mina/devnet_mina_state.pub \
11381138
--repetitions $(DOCKER_BURST_SIZE) \
11391139
--proof_generator_addr $(PROOF_GENERATOR_ADDRESS) \
11401140
--rpc_url $(DOCKER_RPC_URL) \

operator/mina/lib/src/consensus_state.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ mod test {
165165
use super::*;
166166

167167
const PROOF_BYTES: &[u8] =
168-
include_bytes!("../../../../scripts/test_files/mina/mina_state.proof");
168+
include_bytes!("../../../../scripts/test_files/mina/devnet_mina_state.proof");
169169

170170
#[test]
171171
fn new_mina_state_passes_consensus_checks() {

operator/mina/lib/src/lib.rs

Lines changed: 80 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -238,62 +238,123 @@ fn check_pub_inputs(
238238

239239
#[cfg(test)]
240240
mod test {
241+
use std::ptr;
242+
241243
use super::*;
242244

243-
const PROOF_BYTES: &[u8] =
244-
include_bytes!("../../../../scripts/test_files/mina/mina_state.proof");
245-
const PUB_INPUT_BYTES: &[u8] =
246-
include_bytes!("../../../../scripts/test_files/mina/mina_state.pub");
245+
const DEVNET_PROOF_BYTES: &[u8] =
246+
include_bytes!("../../../../scripts/test_files/mina/devnet_mina_state.proof");
247+
const DEVNET_PUB_INPUT_BYTES: &[u8] =
248+
include_bytes!("../../../../scripts/test_files/mina/devnet_mina_state.pub");
249+
const MAINNET_PROOF_BYTES: &[u8] =
250+
include_bytes!("../../../../scripts/test_files/mina/mainnet_mina_state.proof");
251+
const MAINNET_PUB_INPUT_BYTES: &[u8] =
252+
include_bytes!("../../../../scripts/test_files/mina/mainnet_mina_state.pub");
247253
const BAD_HASH_PUB_INPUT_BYTES: &[u8] =
248254
include_bytes!("../../../../scripts/test_files/mina/mina_state_bad_hash.pub");
249255

250256
#[test]
251-
fn valid_mina_state_proof_verifies() {
257+
fn valid_devnet_mina_state_proof_verifies() {
252258
let result = verify_mina_state_ffi(
253-
PROOF_BYTES.as_ptr(),
254-
PROOF_BYTES.len() as u32,
255-
PUB_INPUT_BYTES.as_ptr(),
256-
PUB_INPUT_BYTES.len() as u32,
259+
DEVNET_PROOF_BYTES.as_ptr(),
260+
DEVNET_PROOF_BYTES.len() as u32,
261+
DEVNET_PUB_INPUT_BYTES.as_ptr(),
262+
DEVNET_PUB_INPUT_BYTES.len() as u32,
263+
);
264+
assert_eq!(result, 1);
265+
}
266+
267+
#[test]
268+
fn valid_mainnet_mina_state_proof_verifies() {
269+
let result = verify_mina_state_ffi(
270+
MAINNET_PROOF_BYTES.as_ptr(),
271+
MAINNET_PROOF_BYTES.len() as u32,
272+
MAINNET_PUB_INPUT_BYTES.as_ptr(),
273+
MAINNET_PUB_INPUT_BYTES.len() as u32,
257274
);
258275
assert_eq!(result, 1);
259276
}
260277

261278
#[test]
262279
fn mina_state_proof_with_bad_bridge_tip_hash_does_not_verify() {
263280
let result = verify_mina_state_ffi(
264-
PROOF_BYTES.as_ptr(),
265-
PROOF_BYTES.len() as u32,
281+
DEVNET_PROOF_BYTES.as_ptr(),
282+
DEVNET_PROOF_BYTES.len() as u32,
266283
BAD_HASH_PUB_INPUT_BYTES.as_ptr(),
267284
BAD_HASH_PUB_INPUT_BYTES.len() as u32,
268285
);
269286
assert_eq!(result, 0);
270287
}
271288

272289
#[test]
273-
fn empty_mina_state_proof_does_not_verify() {
274-
const PROOF_SIZE: usize = PROOF_BYTES.len();
290+
fn zeroized_mina_state_proof_does_not_verify() {
291+
const PROOF_SIZE: usize = DEVNET_PROOF_BYTES.len();
275292
let empty_proof_buffer = [0u8; PROOF_SIZE];
276293

277294
let result = verify_mina_state_ffi(
278295
empty_proof_buffer.as_ptr(),
279296
PROOF_SIZE as u32,
280-
PUB_INPUT_BYTES.as_ptr(),
281-
PUB_INPUT_BYTES.len() as u32,
297+
DEVNET_PUB_INPUT_BYTES.as_ptr(),
298+
DEVNET_PUB_INPUT_BYTES.len() as u32,
282299
);
283300
assert_eq!(result, 0);
284301
}
285302

286303
#[test]
287-
fn valid_mina_state_proof_with_empty_pub_input_does_not_verify() {
288-
const PUB_INPUT_SIZE: usize = PUB_INPUT_BYTES.len();
304+
fn valid_mina_state_proof_with_zeroized_pub_input_does_not_verify() {
305+
const PUB_INPUT_SIZE: usize = DEVNET_PUB_INPUT_BYTES.len();
289306
let empty_pub_input_buffer = [0u8; PUB_INPUT_SIZE];
290307

291308
let result = verify_mina_state_ffi(
292-
PROOF_BYTES.as_ptr(),
293-
PROOF_BYTES.len() as u32,
309+
DEVNET_PROOF_BYTES.as_ptr(),
310+
DEVNET_PROOF_BYTES.len() as u32,
294311
empty_pub_input_buffer.as_ptr(),
295312
PUB_INPUT_SIZE as u32,
296313
);
297314
assert_eq!(result, 0);
298315
}
316+
317+
#[test]
318+
fn null_mina_state_proof_does_not_verify() {
319+
let result = verify_mina_state_ffi(
320+
ptr::null(),
321+
DEVNET_PROOF_BYTES.len() as u32,
322+
DEVNET_PUB_INPUT_BYTES.as_ptr(),
323+
DEVNET_PUB_INPUT_BYTES.len() as u32,
324+
);
325+
assert_eq!(result, 0);
326+
}
327+
328+
#[test]
329+
fn valid_mina_state_proof_with_null_pub_input_does_not_verify() {
330+
let result = verify_mina_state_ffi(
331+
DEVNET_PROOF_BYTES.as_ptr(),
332+
DEVNET_PROOF_BYTES.len() as u32,
333+
ptr::null(),
334+
DEVNET_PUB_INPUT_BYTES.len() as u32,
335+
);
336+
assert_eq!(result, 0);
337+
}
338+
339+
#[test]
340+
fn empty_mina_state_proof_does_not_verify() {
341+
let result = verify_mina_state_ffi(
342+
DEVNET_PROOF_BYTES.as_ptr(),
343+
0,
344+
DEVNET_PUB_INPUT_BYTES.as_ptr(),
345+
DEVNET_PUB_INPUT_BYTES.len() as u32,
346+
);
347+
assert_eq!(result, 0);
348+
}
349+
350+
#[test]
351+
fn valid_mina_state_proof_with_empty_pub_input_does_not_verify() {
352+
let result = verify_mina_state_ffi(
353+
DEVNET_PROOF_BYTES.as_ptr(),
354+
DEVNET_PROOF_BYTES.len() as u32,
355+
DEVNET_PUB_INPUT_BYTES.as_ptr(),
356+
0,
357+
);
358+
assert_eq!(result, 0);
359+
}
299360
}

operator/mina/mina_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ import (
77
"github.com/yetanotherco/aligned_layer/operator/mina"
88
)
99

10-
const ProofFilePath = "../../scripts/test_files/mina/mina_state.proof"
10+
const ProofFilePath = "../../scripts/test_files/mina/devnet_mina_state.proof"
1111

12-
const PubInputFilePath = "../../scripts/test_files/mina/mina_state.pub"
12+
const PubInputFilePath = "../../scripts/test_files/mina/devnet_mina_state.pub"
1313

1414
func TestMinaStateProofVerifies(t *testing.T) {
1515
proofBytes, err := os.ReadFile(ProofFilePath)

operator/mina_account/lib/src/lib.rs

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ pub fn verify_account_inclusion(proof_bytes: &[u8], pub_input_bytes: &[u8]) -> b
102102
mod test {
103103

104104
use super::*;
105+
use core::ptr;
105106

106107
const PROOF_BYTES: &[u8] =
107108
include_bytes!("../../../../scripts/test_files/mina_account/mina_account.proof");
@@ -130,7 +131,7 @@ mod test {
130131
}
131132

132133
#[test]
133-
fn empty_account_state_proof_does_not_verify() {
134+
fn zeroized_account_state_proof_does_not_verify() {
134135
const PROOF_SIZE: usize = PROOF_BYTES.len();
135136
let proof_buffer = [0u8; PROOF_SIZE];
136137

@@ -144,7 +145,7 @@ mod test {
144145
}
145146

146147
#[test]
147-
fn valid_account_state_proof_with_empty_pub_input_does_not_verify() {
148+
fn valid_account_state_proof_with_zeroized_pub_input_does_not_verify() {
148149
const PUB_INPUT_SIZE: usize = PUB_INPUT_BYTES.len();
149150
let pub_input_buffer = [0u8; PUB_INPUT_SIZE];
150151

@@ -156,4 +157,48 @@ mod test {
156157
);
157158
assert_eq!(result, 0);
158159
}
160+
161+
#[test]
162+
fn null_account_state_proof_does_not_verify() {
163+
let result = verify_account_inclusion_ffi(
164+
ptr::null(),
165+
PROOF_BYTES.len() as u32,
166+
PUB_INPUT_BYTES.as_ptr(),
167+
PUB_INPUT_BYTES.len() as u32,
168+
);
169+
assert_eq!(result, 0);
170+
}
171+
172+
#[test]
173+
fn valid_account_state_proof_with_null_pub_input_does_not_verify() {
174+
let result = verify_account_inclusion_ffi(
175+
PROOF_BYTES.as_ptr(),
176+
PROOF_BYTES.len() as u32,
177+
ptr::null(),
178+
PUB_INPUT_BYTES.len() as u32,
179+
);
180+
assert_eq!(result, 0);
181+
}
182+
183+
#[test]
184+
fn empty_account_state_proof_does_not_verify() {
185+
let result = verify_account_inclusion_ffi(
186+
PROOF_BYTES.as_ptr(),
187+
0,
188+
PUB_INPUT_BYTES.as_ptr(),
189+
PUB_INPUT_BYTES.len() as u32,
190+
);
191+
assert_eq!(result, 0);
192+
}
193+
194+
#[test]
195+
fn valid_account_state_proof_with_empty_pub_input_does_not_verify() {
196+
let result = verify_account_inclusion_ffi(
197+
PROOF_BYTES.as_ptr(),
198+
PROOF_BYTES.len() as u32,
199+
PUB_INPUT_BYTES.as_ptr(),
200+
0,
201+
);
202+
assert_eq!(result, 0);
203+
}
159204
}
File renamed without changes.
File renamed without changes.
47.2 KB
Binary file not shown.
1.03 KB
Binary file not shown.

0 commit comments

Comments
 (0)