The explorer is out of sync. The last synced block is 190 hours ago. Current block height: explorer: 2206528 / node: 2329664 / ref: 2329664
program arcane_access.aleo; record Access: owner as address.private; access_id as field.private; is_able_to_grant as boolean.private; is_able_to_revoke as boolean.private; mapping public_access: key as address.public; value as boolean.public; mapping grant_ability: key as address.public; value as boolean.public; mapping revoke_ability: key as address.public; value as boolean.public; mapping ban_list: key as field.public; value as boolean.public; function check_access_private: input r0 as Access.record; cast r0.owner r0.access_id r0.is_able_to_grant r0.is_able_to_revoke into r1 as Access.record; async check_access_private r0.access_id into r2; output r1 as Access.record; output r2 as arcane_access.aleo/check_access_private.future; finalize check_access_private: input r0 as field.public; get.or_use ban_list[r0] false into r1; not r1 into r2; assert.eq r2 true; function check_access_public: input r0 as address.private; async check_access_public r0 into r1; output r1 as arcane_access.aleo/check_access_public.future; finalize check_access_public: input r0 as address.public; is.eq r0 aleo16e5ckxpxh0pshx03shk43mc5l8m7lgrrrk2vjefw3muypc4xuc9sea9wmc into r1; get.or_use public_access[r0] false into r2; or r1 r2 into r3; assert.eq r3 true; function grant_private: input r0 as Access.record; input r1 as address.private; input r2 as field.private; input r3 as boolean.private; input r4 as boolean.private; assert.eq r0.is_able_to_grant true; cast r0.owner r0.access_id r0.is_able_to_grant r0.is_able_to_revoke into r5 as Access.record; cast r1 r2 r3 r4 into r6 as Access.record; async grant_private r0.access_id into r7; output r5 as Access.record; output r6 as Access.record; output r7 as arcane_access.aleo/grant_private.future; finalize grant_private: input r0 as field.public; get.or_use ban_list[r0] false into r1; not r1 into r2; assert.eq r2 true; function grant_public: input r0 as address.private; input r1 as field.private; input r2 as boolean.private; input r3 as boolean.private; cast r0 r1 r2 r3 into r4 as Access.record; async grant_public self.caller r0 r2 r3 into r5; output r4 as Access.record; output r5 as arcane_access.aleo/grant_public.future; finalize grant_public: input r0 as address.public; input r1 as address.public; input r2 as boolean.public; input r3 as boolean.public; is.eq r0 aleo16e5ckxpxh0pshx03shk43mc5l8m7lgrrrk2vjefw3muypc4xuc9sea9wmc into r4; get.or_use public_access[r0] false into r5; or r4 r5 into r6; assert.eq r6 true; get.or_use grant_ability[r0] false into r7; or r4 r7 into r8; assert.eq r8 true; set r2 into grant_ability[r1]; set r3 into revoke_ability[r1]; function revoke_private: input r0 as Access.record; input r1 as field.private; input r2 as address.private; assert.eq r0.is_able_to_revoke true; cast r0.owner r0.access_id r0.is_able_to_grant r0.is_able_to_revoke into r3 as Access.record; async revoke_private r1 r2 into r4; output r3 as Access.record; output r4 as arcane_access.aleo/revoke_private.future; finalize revoke_private: input r0 as field.public; input r1 as address.public; set true into ban_list[r0]; set false into grant_ability[r1]; set false into revoke_ability[r1]; function revoke_public: input r0 as field.private; input r1 as address.private; async revoke_public self.caller r0 r1 into r2; output r2 as arcane_access.aleo/revoke_public.future; finalize revoke_public: input r0 as address.public; input r1 as field.public; input r2 as address.public; is.eq r0 aleo16e5ckxpxh0pshx03shk43mc5l8m7lgrrrk2vjefw3muypc4xuc9sea9wmc into r3; get.or_use public_access[r0] false into r4; or r3 r4 into r5; assert.eq r5 true; get.or_use revoke_ability[r0] false into r6; or r3 r6 into r7; assert.eq r7 true; set true into ban_list[r1]; set false into grant_ability[r2]; set false into revoke_ability[r2];
Block height | Timestamp | Transition ID | Function call | State |
1,944,285 | 2024-04-09 10:23:48 | au12tn9wvgu4x245umc96h0myryy0ku698qj4mga45rav3rjwwygvrsdqmtpu | check_access_public | Accepted |