The explorer is out of sync. The last synced block is 314 hours ago. Current block height: explorer: 2206528 / node: 2408351 / ref: 2408349
program puzzle_game4.aleo; record PuzzleMove: owner as address.private; moves as u64.private; game_cell as u64.private; record Game_ID: owner as address.private; game_id as u128.private; struct PuzzleMoveII: player as address; last_move as u64; count_moves as u64; struct CLAIM_REWARD: zk_id as u128; player as address; reward as u64; max_reward as u64; struct R_CELL: r1 as u64; r2 as u64; r3 as u64; r4 as u64; r5 as u64; r6 as u64; r7 as u64; r8 as u64; r9 as u64; r10 as u64; r11 as u64; r12 as u64; r13 as u64; r14 as u64; r15 as u64; mapping account: key as address.public; value as PuzzleMoveII.public; mapping reward: key as u128.public; value as CLAIM_REWARD.public; mapping account_balance: key as address.public; value as u64.public; mapping r1: key as address.public; value as u64.public; mapping r2: key as address.public; value as u64.public; mapping r3: key as address.public; value as u64.public; mapping r4: key as address.public; value as u64.public; mapping r5: key as address.public; value as u64.public; mapping r6: key as address.public; value as u64.public; mapping r7: key as address.public; value as u64.public; mapping r8: key as address.public; value as u64.public; mapping r9: key as address.public; value as u64.public; mapping r10: key as address.public; value as u64.public; mapping r11: key as address.public; value as u64.public; mapping r12: key as address.public; value as u64.public; mapping game_cell1: key as address.public; value as u64.public; mapping game_cell2: key as address.public; value as u64.public; mapping game_cell3: key as address.public; value as u64.public; mapping game_cell4: key as address.public; value as u64.public; mapping game_cell5: key as address.public; value as u64.public; mapping game_cell6: key as address.public; value as u64.public; mapping game_cell7: key as address.public; value as u64.public; mapping game_cell8: key as address.public; value as u64.public; mapping game_cell9: key as address.public; value as u64.public; mapping game_cell10: key as address.public; value as u64.public; mapping game_cell11: key as address.public; value as u64.public; mapping game_cell12: key as address.public; value as u64.public; function main: input r0 as u32.public; input r1 as u32.private; add r0 r1 into r2; output r2 as u32.private; function start_game: input r0 as u128.private; is.eq aleo1az8p9vlllyqwtj0c2g9svkd0e5v0p3zzdflwwrpa7kpe8xrfxgfqqpru7m self.caller into r1; assert.eq r1 true; hash.bhp256 r0 into r2 as u128; cast aleo1az8p9vlllyqwtj0c2g9svkd0e5v0p3zzdflwwrpa7kpe8xrfxgfqqpru7m r2 into r3 as Game_ID.record; async start_game aleo1az8p9vlllyqwtj0c2g9svkd0e5v0p3zzdflwwrpa7kpe8xrfxgfqqpru7m r2 into r4; output r3 as Game_ID.record; output r4 as puzzle_game4.aleo/start_game.future; finalize start_game: input r0 as address.public; input r1 as u128.public; is.eq r0 aleo1az8p9vlllyqwtj0c2g9svkd0e5v0p3zzdflwwrpa7kpe8xrfxgfqqpru7m into r2; assert.eq r2 true; cast r1 r0 0u64 0u64 into r3 as CLAIM_REWARD; get.or_use reward[r1] r3 into r4; cast r1 r0 0u64 0u64 into r5 as CLAIM_REWARD; set r5 into reward[r1]; function move_puzzle00: input r0 as u64.private; input r1 as u64.private; input r2 as u128.private; hash.keccak512 r0 into r3 as u64; hash.keccak512 r1 into r4 as u64; cast self.caller r4 r3 into r5 as PuzzleMove.record; async move_puzzle00 self.caller r3 r4 r2 into r6; output r5 as PuzzleMove.record; output r6 as puzzle_game4.aleo/move_puzzle00.future; finalize move_puzzle00: input r0 as address.public; input r1 as u64.public; input r2 as u64.public; input r3 as u128.public; cast r3 r0 0u64 0u64 into r4 as CLAIM_REWARD; get.or_use reward[r3] r4 into r5; is.eq r5.zk_id r3 into r6; assert.eq r6 true; cast r0 r2 0u64 into r7 as PuzzleMoveII; get.or_use account[r0] r7 into r8; assert.eq r0 r8.player; lte r8.count_moves 100u64 into r9; assert.eq r9 true; add r8.count_moves 1u64 into r10; cast r8.player r8.last_move r10 into r11 as PuzzleMoveII; set r11 into account[r0]; hash.bhp256 r0 into r12 as address; get.or_use r1[r12] 0u64 into r13; set r2 into r1[r12]; get.or_use game_cell1[r12] 0u64 into r14; set r1 into game_cell1[r12]; function move_puzzle01: input r0 as u64.private; input r1 as u64.private; input r2 as u128.private; hash.keccak512 r0 into r3 as u64; hash.keccak512 r1 into r4 as u64; cast self.caller r4 r3 into r5 as PuzzleMove.record; async move_puzzle01 self.caller r3 r4 r2 into r6; output r5 as PuzzleMove.record; output r6 as puzzle_game4.aleo/move_puzzle01.future; finalize move_puzzle01: input r0 as address.public; input r1 as u64.public; input r2 as u64.public; input r3 as u128.public; cast r3 r0 0u64 0u64 into r4 as CLAIM_REWARD; get.or_use reward[r3] r4 into r5; is.eq r5.zk_id r3 into r6; assert.eq r6 true; cast r0 r2 0u64 into r7 as PuzzleMoveII; get.or_use account[r0] r7 into r8; assert.eq r0 r8.player; lte r8.count_moves 100u64 into r9; assert.eq r9 true; add r8.count_moves 1u64 into r10; cast r8.player r8.last_move r10 into r11 as PuzzleMoveII; set r11 into account[r0]; hash.bhp256 r0 into r12 as address; get.or_use r2[r12] 0u64 into r13; set r2 into r2[r12]; get.or_use game_cell2[r12] 0u64 into r14; set r1 into game_cell2[r12]; function move_puzzle02: input r0 as u64.private; input r1 as u64.private; input r2 as u128.private; hash.keccak512 r0 into r3 as u64; hash.keccak512 r1 into r4 as u64; cast self.caller r4 r3 into r5 as PuzzleMove.record; async move_puzzle02 self.caller r3 r4 r2 into r6; output r5 as PuzzleMove.record; output r6 as puzzle_game4.aleo/move_puzzle02.future; finalize move_puzzle02: input r0 as address.public; input r1 as u64.public; input r2 as u64.public; input r3 as u128.public; cast r3 r0 0u64 0u64 into r4 as CLAIM_REWARD; get.or_use reward[r3] r4 into r5; is.eq r5.zk_id r3 into r6; assert.eq r6 true; cast r0 r2 0u64 into r7 as PuzzleMoveII; get.or_use account[r0] r7 into r8; assert.eq r0 r8.player; lte r8.count_moves 100u64 into r9; assert.eq r9 true; add r8.count_moves 1u64 into r10; cast r8.player r8.last_move r10 into r11 as PuzzleMoveII; set r11 into account[r0]; hash.bhp256 r0 into r12 as address; get.or_use r3[r12] 0u64 into r13; set r2 into r3[r12]; get.or_use game_cell3[r12] 0u64 into r14; set r1 into game_cell3[r12]; function move_puzzle03: input r0 as u64.private; input r1 as u64.private; input r2 as u128.private; hash.keccak512 r0 into r3 as u64; hash.keccak512 r1 into r4 as u64; cast self.caller r4 r3 into r5 as PuzzleMove.record; async move_puzzle03 self.caller r3 r4 r2 into r6; output r5 as PuzzleMove.record; output r6 as puzzle_game4.aleo/move_puzzle03.future; finalize move_puzzle03: input r0 as address.public; input r1 as u64.public; input r2 as u64.public; input r3 as u128.public; cast r3 r0 0u64 0u64 into r4 as CLAIM_REWARD; get.or_use reward[r3] r4 into r5; is.eq r5.zk_id r3 into r6; assert.eq r6 true; cast r0 r2 0u64 into r7 as PuzzleMoveII; get.or_use account[r0] r7 into r8; assert.eq r0 r8.player; lte r8.count_moves 100u64 into r9; assert.eq r9 true; add r8.count_moves 1u64 into r10; cast r8.player r8.last_move r10 into r11 as PuzzleMoveII; set r11 into account[r0]; hash.bhp256 r0 into r12 as address; get.or_use r4[r12] 0u64 into r13; set r2 into r4[r12]; get.or_use game_cell4[r12] 0u64 into r14; set r1 into game_cell4[r12]; function move_puzzle10: input r0 as u64.private; input r1 as u64.private; input r2 as u128.private; hash.keccak512 r0 into r3 as u64; hash.keccak512 r1 into r4 as u64; cast self.caller r4 r3 into r5 as PuzzleMove.record; async move_puzzle10 self.caller r3 r4 r2 into r6; output r5 as PuzzleMove.record; output r6 as puzzle_game4.aleo/move_puzzle10.future; finalize move_puzzle10: input r0 as address.public; input r1 as u64.public; input r2 as u64.public; input r3 as u128.public; cast r3 r0 0u64 0u64 into r4 as CLAIM_REWARD; get.or_use reward[r3] r4 into r5; is.eq r5.zk_id r3 into r6; assert.eq r6 true; cast r0 r2 0u64 into r7 as PuzzleMoveII; get.or_use account[r0] r7 into r8; assert.eq r0 r8.player; lte r8.count_moves 100u64 into r9; assert.eq r9 true; add r8.count_moves 1u64 into r10; cast r8.player r8.last_move r10 into r11 as PuzzleMoveII; set r11 into account[r0]; hash.bhp256 r0 into r12 as address; get.or_use r5[r12] 0u64 into r13; set r2 into r5[r12]; get.or_use game_cell5[r12] 0u64 into r14; set r1 into game_cell5[r12]; function move_puzzle11: input r0 as u64.private; input r1 as u64.private; input r2 as u128.private; hash.keccak512 r0 into r3 as u64; hash.keccak512 r1 into r4 as u64; cast self.caller r4 r3 into r5 as PuzzleMove.record; async move_puzzle11 self.caller r3 r4 r2 into r6; output r5 as PuzzleMove.record; output r6 as puzzle_game4.aleo/move_puzzle11.future; finalize move_puzzle11: input r0 as address.public; input r1 as u64.public; input r2 as u64.public; input r3 as u128.public; cast r3 r0 0u64 0u64 into r4 as CLAIM_REWARD; get.or_use reward[r3] r4 into r5; is.eq r5.zk_id r3 into r6; assert.eq r6 true; cast r0 r2 0u64 into r7 as PuzzleMoveII; get.or_use account[r0] r7 into r8; assert.eq r0 r8.player; lte r8.count_moves 100u64 into r9; assert.eq r9 true; add r8.count_moves 1u64 into r10; cast r8.player r8.last_move r10 into r11 as PuzzleMoveII; set r11 into account[r0]; hash.bhp256 r0 into r12 as address; get.or_use r6[r12] 0u64 into r13; set r2 into r6[r12]; get.or_use game_cell6[r12] 0u64 into r14; set r1 into game_cell6[r12]; function move_puzzle12: input r0 as u64.private; input r1 as u64.private; input r2 as u128.private; hash.keccak512 r0 into r3 as u64; hash.keccak512 r1 into r4 as u64; cast self.caller r4 r3 into r5 as PuzzleMove.record; async move_puzzle12 self.caller r3 r4 r2 into r6; output r5 as PuzzleMove.record; output r6 as puzzle_game4.aleo/move_puzzle12.future; finalize move_puzzle12: input r0 as address.public; input r1 as u64.public; input r2 as u64.public; input r3 as u128.public; cast r3 r0 0u64 0u64 into r4 as CLAIM_REWARD; get.or_use reward[r3] r4 into r5; is.eq r5.zk_id r3 into r6; assert.eq r6 true; cast r0 r2 0u64 into r7 as PuzzleMoveII; get.or_use account[r0] r7 into r8; assert.eq r0 r8.player; lte r8.count_moves 100u64 into r9; assert.eq r9 true; add r8.count_moves 1u64 into r10; cast r8.player r8.last_move r10 into r11 as PuzzleMoveII; set r11 into account[r0]; hash.bhp256 r0 into r12 as address; get.or_use r7[r12] 0u64 into r13; set r2 into r7[r12]; get.or_use game_cell7[r12] 0u64 into r14; set r1 into game_cell7[r12]; function move_puzzle13: input r0 as u64.private; input r1 as u64.private; input r2 as u128.private; hash.keccak512 r0 into r3 as u64; hash.keccak512 r1 into r4 as u64; cast self.caller r4 r3 into r5 as PuzzleMove.record; async move_puzzle13 self.caller r3 r4 r2 into r6; output r5 as PuzzleMove.record; output r6 as puzzle_game4.aleo/move_puzzle13.future; finalize move_puzzle13: input r0 as address.public; input r1 as u64.public; input r2 as u64.public; input r3 as u128.public; cast r3 r0 0u64 0u64 into r4 as CLAIM_REWARD; get.or_use reward[r3] r4 into r5; is.eq r5.zk_id r3 into r6; assert.eq r6 true; cast r0 r2 0u64 into r7 as PuzzleMoveII; get.or_use account[r0] r7 into r8; assert.eq r0 r8.player; lte r8.count_moves 100u64 into r9; assert.eq r9 true; add r8.count_moves 1u64 into r10; cast r8.player r8.last_move r10 into r11 as PuzzleMoveII; set r11 into account[r0]; hash.bhp256 r0 into r12 as address; get.or_use r8[r12] 0u64 into r13; set r2 into r8[r12]; get.or_use game_cell8[r12] 0u64 into r14; set r1 into game_cell8[r12]; function move_puzzle20: input r0 as u64.private; input r1 as u64.private; input r2 as u128.private; hash.keccak512 r0 into r3 as u64; hash.keccak512 r1 into r4 as u64; cast self.caller r4 r3 into r5 as PuzzleMove.record; async move_puzzle20 self.caller r3 r4 r2 into r6; output r5 as PuzzleMove.record; output r6 as puzzle_game4.aleo/move_puzzle20.future; finalize move_puzzle20: input r0 as address.public; input r1 as u64.public; input r2 as u64.public; input r3 as u128.public; cast r3 r0 0u64 0u64 into r4 as CLAIM_REWARD; get.or_use reward[r3] r4 into r5; is.eq r5.zk_id r3 into r6; assert.eq r6 true; cast r0 r2 0u64 into r7 as PuzzleMoveII; get.or_use account[r0] r7 into r8; assert.eq r0 r8.player; lte r8.count_moves 100u64 into r9; assert.eq r9 true; add r8.count_moves 1u64 into r10; cast r8.player r8.last_move r10 into r11 as PuzzleMoveII; set r11 into account[r0]; hash.bhp256 r0 into r12 as address; get.or_use r9[r12] 0u64 into r13; set r2 into r9[r12]; get.or_use game_cell9[r12] 0u64 into r14; set r1 into game_cell9[r12]; function move_puzzle21: input r0 as u64.private; input r1 as u64.private; input r2 as u128.private; hash.keccak512 r0 into r3 as u64; hash.keccak512 r1 into r4 as u64; cast self.caller r4 r3 into r5 as PuzzleMove.record; async move_puzzle21 self.caller r3 r4 r2 into r6; output r5 as PuzzleMove.record; output r6 as puzzle_game4.aleo/move_puzzle21.future; finalize move_puzzle21: input r0 as address.public; input r1 as u64.public; input r2 as u64.public; input r3 as u128.public; cast r3 r0 0u64 0u64 into r4 as CLAIM_REWARD; get.or_use reward[r3] r4 into r5; is.eq r5.zk_id r3 into r6; assert.eq r6 true; cast r0 r2 0u64 into r7 as PuzzleMoveII; get.or_use account[r0] r7 into r8; assert.eq r0 r8.player; lte r8.count_moves 100u64 into r9; assert.eq r9 true; add r8.count_moves 1u64 into r10; cast r8.player r8.last_move r10 into r11 as PuzzleMoveII; set r11 into account[r0]; hash.bhp256 r0 into r12 as address; get.or_use r10[r12] 0u64 into r13; set r2 into r10[r12]; get.or_use game_cell10[r12] 0u64 into r14; set r1 into game_cell10[r12]; function move_puzzle22: input r0 as u64.private; input r1 as u64.private; input r2 as u128.private; hash.keccak512 r0 into r3 as u64; hash.keccak512 r1 into r4 as u64; cast self.caller r4 r3 into r5 as PuzzleMove.record; async move_puzzle22 self.caller r3 r4 r2 into r6; output r5 as PuzzleMove.record; output r6 as puzzle_game4.aleo/move_puzzle22.future; finalize move_puzzle22: input r0 as address.public; input r1 as u64.public; input r2 as u64.public; input r3 as u128.public; cast r3 r0 0u64 0u64 into r4 as CLAIM_REWARD; get.or_use reward[r3] r4 into r5; is.eq r5.zk_id r3 into r6; assert.eq r6 true; cast r0 r2 0u64 into r7 as PuzzleMoveII; get.or_use account[r0] r7 into r8; assert.eq r0 r8.player; lte r8.count_moves 100u64 into r9; assert.eq r9 true; add r8.count_moves 1u64 into r10; cast r8.player r8.last_move r10 into r11 as PuzzleMoveII; set r11 into account[r0]; hash.bhp256 r0 into r12 as address; get.or_use r11[r12] 0u64 into r13; set r2 into r11[r12]; get.or_use game_cell11[r12] 0u64 into r14; set r1 into game_cell11[r12]; function move_puzzle23: input r0 as u64.private; input r1 as u64.private; input r2 as u128.private; hash.keccak512 r0 into r3 as u64; hash.keccak512 r1 into r4 as u64; cast self.caller r4 r3 into r5 as PuzzleMove.record; async move_puzzle23 self.caller r3 r4 r2 into r6; output r5 as PuzzleMove.record; output r6 as puzzle_game4.aleo/move_puzzle23.future; finalize move_puzzle23: input r0 as address.public; input r1 as u64.public; input r2 as u64.public; input r3 as u128.public; cast r3 r0 0u64 0u64 into r4 as CLAIM_REWARD; get.or_use reward[r3] r4 into r5; is.eq r5.zk_id r3 into r6; assert.eq r6 true; cast r0 r2 0u64 into r7 as PuzzleMoveII; get.or_use account[r0] r7 into r8; assert.eq r0 r8.player; lte r8.count_moves 100u64 into r9; assert.eq r9 true; add r8.count_moves 1u64 into r10; cast r8.player r8.last_move r10 into r11 as PuzzleMoveII; set r11 into account[r0]; hash.bhp256 r0 into r12 as address; get.or_use r12[r12] 0u64 into r13; set r2 into r12[r12]; get.or_use game_cell12[r12] 0u64 into r14; set r1 into game_cell12[r12]; function claim_puzzle_reward: input r0 as address.private; input r1 as u128.private; async claim_puzzle_reward self.caller r1 into r2; output r0 as address.private; output r2 as puzzle_game4.aleo/claim_puzzle_reward.future; finalize claim_puzzle_reward: input r0 as address.public; input r1 as u128.public; hash.bhp256 r0 into r2 as address; cast r1 r0 0u64 0u64 into r3 as CLAIM_REWARD; get.or_use reward[r1] r3 into r4; is.eq r1 r4.zk_id into r5; assert.eq r5 true; is.eq r4.reward 0u64 into r6; assert.eq r6 true; lte r4.max_reward 10000u64 into r7; assert.eq r7 true; add r4.reward 100000u64 into r8; add r4.max_reward 1u64 into r9; cast r1 r0 r8 r9 into r10 as CLAIM_REWARD; set r10 into reward[r1]; get.or_use r1[r2] 0u64 into r11; get.or_use r2[r2] 0u64 into r12; get.or_use r3[r2] 0u64 into r13; get.or_use r4[r2] 0u64 into r14; get.or_use r5[r2] 0u64 into r15; get.or_use r6[r2] 0u64 into r16; get.or_use r7[r2] 0u64 into r17; get.or_use r8[r2] 0u64 into r18; get.or_use r9[r2] 0u64 into r19; get.or_use r10[r2] 0u64 into r20; get.or_use r11[r2] 0u64 into r21; get.or_use r12[r2] 0u64 into r22; get.or_use game_cell1[r2] 0u64 into r23; get.or_use game_cell2[r2] 0u64 into r24; get.or_use game_cell3[r2] 0u64 into r25; get.or_use game_cell4[r2] 0u64 into r26; get.or_use game_cell5[r2] 0u64 into r27; get.or_use game_cell6[r2] 0u64 into r28; get.or_use game_cell7[r2] 0u64 into r29; get.or_use game_cell8[r2] 0u64 into r30; get.or_use game_cell9[r2] 0u64 into r31; get.or_use game_cell10[r2] 0u64 into r32; get.or_use game_cell11[r2] 0u64 into r33; get.or_use game_cell12[r2] 0u64 into r34; is.eq r11 7373962538411719600u64 into r35; is.eq r23 10129181955415037291u64 into r36; and r35 r36 into r37; assert.eq r37 true; is.eq r12 10129181955415037291u64 into r38; is.eq r24 702147630584067503u64 into r39; and r38 r39 into r40; assert.eq r40 true; is.eq r13 702147630584067503u64 into r41; is.eq r25 13223257262169554754u64 into r42; and r41 r42 into r43; assert.eq r43 true; is.eq r14 13223257262169554754u64 into r44; is.eq r26 8980829337908044081u64 into r45; and r44 r45 into r46; assert.eq r46 true; is.eq r15 16539908051717120644u64 into r47; is.eq r27 3615050074908606450u64 into r48; and r47 r48 into r49; assert.eq r49 true; is.eq r16 1191090918244757124u64 into r50; is.eq r28 5136266840463965139u64 into r51; and r50 r51 into r52; assert.eq r52 true; is.eq r17 2204896469900557125u64 into r53; is.eq r29 15353286996840814990u64 into r54; and r53 r54 into r55; assert.eq r55 true; is.eq r18 2018936823927039953u64 into r56; is.eq r30 16018772298875027729u64 into r57; and r56 r57 into r58; assert.eq r58 true; is.eq r19 16644101643060801947u64 into r59; is.eq r31 16765984159929877290u64 into r60; and r59 r60 into r61; assert.eq r61 true; is.eq r20 16123326104847387674u64 into r62; is.eq r32 16539908051717120644u64 into r63; and r62 r63 into r64; assert.eq r64 true; is.eq r21 11764327590515361485u64 into r65; is.eq r33 1191090918244757124u64 into r66; and r65 r66 into r67; assert.eq r67 true; get.or_use account_balance[r0] 0u64 into r68; add r68 r4.reward into r69; set r69 into account_balance[r0]; function end_game: input r0 as u128.private; is.eq aleo1az8p9vlllyqwtj0c2g9svkd0e5v0p3zzdflwwrpa7kpe8xrfxgfqqpru7m self.caller into r1; assert.eq r1 true; async end_game self.caller r0 into r2; output r2 as puzzle_game4.aleo/end_game.future; finalize end_game: input r0 as address.public; input r1 as u128.public; cast r1 r0 0u64 0u64 into r2 as CLAIM_REWARD; get.or_use reward[r1] r2 into r3; is.eq r3.zk_id r1 into r4; assert.eq r4 true; is.eq r0 aleo1az8p9vlllyqwtj0c2g9svkd0e5v0p3zzdflwwrpa7kpe8xrfxgfqqpru7m into r5; assert.eq r5 true; remove reward[r1];
Block height | Timestamp | Transition ID | Function call | State |