@@ -199,7 +199,7 @@ impl BasicSnippet for VerifyMmrSuccessor {
199
199
// _ *old_mmr *new_mmr *old_peaks[0] *end_of_memory [0]
200
200
hint running_leaf_count = stack[ 0 ..2 ]
201
201
202
- dup 6 { & num_leafs}
202
+ dup 5 { & num_leafs}
203
203
// _ *old_mmr *new_mmr *old_peaks[0] *end_of_memory [0] [old_num_leafs]
204
204
hint num_leafs_remaining = stack[ 0 ..2 ]
205
205
@@ -372,9 +372,11 @@ mod test {
372
372
use rand:: RngCore ;
373
373
use rand:: SeedableRng ;
374
374
use triton_vm:: error:: InstructionError ;
375
+ use triton_vm:: prelude:: bfe;
375
376
use triton_vm:: prelude:: BFieldElement ;
376
377
use triton_vm:: prelude:: Tip5 ;
377
378
use triton_vm:: program:: NonDeterminism ;
379
+ use triton_vm:: twenty_first:: prelude:: AlgebraicHasher ;
378
380
use triton_vm:: twenty_first:: prelude:: Mmr ;
379
381
use triton_vm:: twenty_first:: util_types:: mmr:: mmr_accumulator:: MmrAccumulator ;
380
382
use triton_vm:: twenty_first:: util_types:: mmr:: mmr_successor_proof:: MmrSuccessorProof ;
@@ -383,7 +385,6 @@ mod test {
383
385
384
386
use crate :: empty_stack;
385
387
use crate :: memory:: encode_to_memory;
386
- use crate :: memory:: FIRST_NON_DETERMINISTICALLY_INITIALIZED_MEMORY_ADDRESS ;
387
388
use crate :: prelude:: TasmObject ;
388
389
use crate :: snippet_bencher:: BenchmarkCase ;
389
390
use crate :: test_helpers:: negative_test;
@@ -426,11 +427,20 @@ mod test {
426
427
new_mmr : & MmrAccumulator ,
427
428
mmr_successor_proof : & MmrSuccessorProof ,
428
429
) -> MemPreserverInitialState {
430
+ let seed = Tip5 :: hash_pair ( Tip5 :: hash ( old_mmr) , Tip5 :: hash ( new_mmr) ) ;
431
+ let seed: u64 = seed. 0 [ 0 ] . value ( ) ;
432
+ let seed: [ u8 ; 8 ] = seed. to_be_bytes ( ) ;
433
+ let seed: [ u8 ; 32 ] = seed. repeat ( 4 ) . try_into ( ) . unwrap ( ) ;
434
+ let mut rng: StdRng = SeedableRng :: from_seed ( seed) ;
435
+ let old_mmr_address: u32 = rng. gen_range ( 0 ..1 << 30 ) ;
436
+ let new_mmr_address: u32 = old_mmr_address + rng. gen_range ( 0 ..1 << 28 ) ;
437
+ let old_mmr_address = bfe ! ( old_mmr_address) ;
438
+ let new_mmr_address = old_mmr_address + bfe ! ( new_mmr_address) ;
439
+
429
440
let mut nondeterminism = NonDeterminism :: new ( vec ! [ ] ) ;
430
441
VerifyMmrSuccessor :: update_nondeterminism ( & mut nondeterminism, mmr_successor_proof) ;
431
- let old_mmr_address = FIRST_NON_DETERMINISTICALLY_INITIALIZED_MEMORY_ADDRESS ;
432
- let new_mmr_address = encode_to_memory ( & mut nondeterminism. ram , old_mmr_address, old_mmr) ;
433
- let _garbage_address = encode_to_memory ( & mut nondeterminism. ram , new_mmr_address, new_mmr) ;
442
+ encode_to_memory ( & mut nondeterminism. ram , old_mmr_address, old_mmr) ;
443
+ encode_to_memory ( & mut nondeterminism. ram , new_mmr_address, new_mmr) ;
434
444
let mut stack = empty_stack ( ) ;
435
445
stack. push ( old_mmr_address) ;
436
446
stack. push ( new_mmr_address) ;
@@ -444,7 +454,7 @@ mod test {
444
454
fn failing_initial_states ( ) -> Vec < MemPreserverInitialState > {
445
455
let mut rng = thread_rng ( ) ;
446
456
let mut initial_states = vec ! [ ] ;
447
- for old_num_leafs in [ 1u64 , 8 ] {
457
+ for old_num_leafs in [ 1u64 , 2 , 3 , 8 ] {
448
458
for num_new_leafs in [ 0u64 , 1 , 8 ] {
449
459
if [ ( 0 , 0 ) ]
450
460
. into_iter ( )
@@ -594,15 +604,15 @@ mod test {
594
604
fn corner_case_initial_states ( & self ) -> Vec < MemPreserverInitialState > {
595
605
let mut rng = thread_rng ( ) ;
596
606
let mut initial_states = vec ! [ ] ;
597
- for old_num_leafs in [ 0u64 , 1 , 8 ] {
598
- for num_new_leafs in [ 0u64 , 1 , 8 ] {
607
+ for old_num_leafs in [ 0u64 , 1 , 2 , 3 , 4 , 8 ] {
608
+ for num_inserted_leafs in [ 0u64 , 1 , 2 , 3 , 4 , 8 ] {
599
609
let old_mmr = MmrAccumulator :: init (
600
610
( 0 ..old_num_leafs. count_ones ( ) )
601
611
. map ( |_| rng. gen :: < Digest > ( ) )
602
612
. collect_vec ( ) ,
603
613
old_num_leafs,
604
614
) ;
605
- let new_leafs = ( 0 ..num_new_leafs )
615
+ let new_leafs = ( 0 ..num_inserted_leafs )
606
616
. map ( |_| rng. gen :: < Digest > ( ) )
607
617
. collect_vec ( ) ;
608
618
let mut new_mmr = old_mmr. clone ( ) ;
0 commit comments