11use aligned:: { send_proof_to_be_verified_on_aligned, wait_until_proof_is_aggregated} ;
2+ use alloy:: hex;
23use db:: { generate_random_transfers, DB } ;
4+ use primitive_types:: U256 ;
35use sp1_state_transition_program:: ProgramOutput ;
46use zk:: { prove_state_transition, PROGRAM_ELF } ;
57
@@ -14,30 +16,39 @@ pub async fn start_l2(
1416 wallet : aligned_sdk:: core:: types:: Wallet < aligned_sdk:: core:: types:: SigningKey > ,
1517) {
1618 // 0. Load merkle tree file, if not created, create initial state
17- let mut db = DB :: new ( "./db" . to_string ( ) ) . expect ( "create db" ) ;
19+ let mut db = DB :: new ( "./db" . to_string ( ) ) ;
1820
1921 // 1. Create random transfers
20- let account_updates = generate_random_transfers ( & db, 10 ) ;
22+ let transfers = generate_random_transfers ( & db, 10 ) ;
2123
2224 // 2. Call zkvm and pass (MerkleTree, Updates to perform)
23- let ( mut proof, _vk) = prove_state_transition ( & mut db, account_updates . clone ( ) ) ;
25+ let ( mut proof, _vk) = prove_state_transition ( & db, transfers . clone ( ) ) ;
2426 let ProgramOutput {
2527 initial_state_merkle_root,
2628 post_state_merkle_root,
2729 } = proof. public_values . read :: < ProgramOutput > ( ) ;
2830
2931 // 3. If the proving went alright, update the db and verify that the merkle root matches
3032 assert ! ( db. commitment( ) == initial_state_merkle_root) ;
31- for update in account_updates {
32- db. user_states
33- . get_mut ( & update. from )
34- . expect ( "User should exist" )
35- . balance -= update. amount ;
36-
37- db. user_states
38- . get_mut ( & update. to )
39- . expect ( "User should exist" )
40- . balance += update. amount ;
33+ for transfer in transfers {
34+ let mut user_from = db
35+ . user_states
36+ . get ( & transfer. from )
37+ . expect ( "User must exist in state" )
38+ . clone ( ) ;
39+
40+ let mut user_to = db
41+ . user_states
42+ . get ( & transfer. to )
43+ . expect ( "User must exist in state" )
44+ . clone ( ) ;
45+
46+ user_from. balance -= transfer. amount ;
47+ user_from. nonce += U256 :: one ( ) ;
48+ user_to. balance += transfer. amount ;
49+
50+ db. user_states . insert ( transfer. from , user_from) ;
51+ db. user_states . insert ( transfer. to , user_to) ;
4152 }
4253 assert ! ( db. commitment( ) == post_state_merkle_root) ;
4354
0 commit comments