The explorer is out of sync. The last synced block is 524 hours ago. Current block height: explorer: 2206528 / node: 2541516 / ref: 2492275
program dev_truecoin_token_v007.aleo; record Token: owner as address.private; amount as u64.private; record KYC: owner as address.private; expiry_block_height as u32.private; record AML: owner as address.private; version as u32.private; struct UpdateAMLBlocklist: account as address; blocked as boolean; struct MintArgs: to as address; amount as u64; iv as field; struct Action: action_id as u8; struct Proposal: action as Action; argument_hash as field; nonce as u64; record Authorization: owner as address.private; proposal as Proposal.private; record MintRequest: owner as address.private; argument as MintArgs.private; mapping public_balance: key as address.public; value as u64.public; mapping aml_blocklist: key as address.public; value as boolean.public; mapping aml_version: key as boolean.public; value as u32.public; function authorize_mint: input r0 as address.private; input r1 as u64.private; input r2 as field.private; cast r0 r1 r2 into r3 as MintArgs; cast 0u8 into r4 as Action; hash.bhp256 r3 into r5 as field; cast r4 r5 0u64 into r6 as Proposal; cast r0 r6 into r7 as Authorization.record; cast r0 r3 into r8 as MintRequest.record; output r7 as Authorization.record; output r8 as MintRequest.record; function mint_public: input r0 as Authorization.record; input r1 as AML.record; input r2 as KYC.record; input r3 as u32.private; input r4 as MintArgs.private; assert.eq r0.proposal.action.action_id 0u8; hash.bhp256 r4 into r5 as field; assert.eq r0.proposal.argument_hash r5; assert.eq r4.to r2.owner; cast r1.owner r1.version into r6 as AML.record; lte r3 r2.expiry_block_height into r7; assert.eq r7 true; cast r2.owner r2.expiry_block_height into r8 as KYC.record; async mint_public r4 r1.version r3 into r9; output r6 as AML.record; output r8 as KYC.record; output r9 as dev_truecoin_token_v007.aleo/mint_public.future; finalize mint_public: input r0 as MintArgs.public; input r1 as u32.public; input r2 as u32.public; get aml_version[true] into r3; assert.eq r1 r3; lt block.height r2 into r4; assert.eq r4 true; get.or_use public_balance[r0.to] 0u64 into r5; add r5 r0.amount into r6; set r6 into public_balance[r0.to]; function mint_private: input r0 as Authorization.record; input r1 as AML.record; input r2 as KYC.record; input r3 as u32.private; input r4 as MintArgs.private; assert.eq r0.proposal.action.action_id 0u8; hash.bhp256 r4 into r5 as field; assert.eq r0.proposal.argument_hash r5; assert.eq r4.to r2.owner; cast r1.owner r1.version into r6 as AML.record; lte r3 r2.expiry_block_height into r7; assert.eq r7 true; cast r2.owner r2.expiry_block_height into r8 as KYC.record; cast r4.to r4.amount into r9 as Token.record; output r6 as AML.record; output r8 as KYC.record; output r9 as Token.record; function issue_kyc: input r0 as address.private; input r1 as u32.private; cast r0 r1 into r2 as KYC.record; output r2 as KYC.record; function redeem_public: input r0 as KYC.record; input r1 as u32.private; input r2 as u64.private; lte r1 r0.expiry_block_height into r3; assert.eq r3 true; cast r0.owner r0.expiry_block_height into r4 as KYC.record; async redeem_public r0.owner r2 r1 into r5; output r4 as KYC.record; output r5 as dev_truecoin_token_v007.aleo/redeem_public.future; finalize redeem_public: input r0 as address.public; input r1 as u64.public; input r2 as u32.public; lt block.height r2 into r3; assert.eq r3 true; get.or_use public_balance[r0] 0u64 into r4; sub r4 r1 into r5; set r5 into public_balance[r0]; function redeem_private: input r0 as KYC.record; input r1 as u32.private; input r2 as u64.private; input r3 as Token.record; lte r1 r0.expiry_block_height into r4; assert.eq r4 true; cast r0.owner r0.expiry_block_height into r5 as KYC.record; sub r3.amount r2 into r6; cast r3.owner r6 into r7 as Token.record; output r5 as KYC.record; output r7 as Token.record; function transfer_public: input r0 as address.public; input r1 as u64.public; async transfer_public self.caller r0 r1 into r2; output r2 as dev_truecoin_token_v007.aleo/transfer_public.future; finalize transfer_public: input r0 as address.public; input r1 as address.public; input r2 as u64.public; get.or_use public_balance[r0] 0u64 into r3; sub r3 r2 into r4; set r4 into public_balance[r0]; get.or_use public_balance[r1] 0u64 into r5; add r5 r2 into r6; set r6 into public_balance[r1]; function transfer_private: input r0 as Token.record; input r1 as address.private; input r2 as u64.private; sub r0.amount r2 into r3; cast r0.owner r3 into r4 as Token.record; cast r1 r2 into r5 as Token.record; output r4 as Token.record; output r5 as Token.record; function transfer_private_to_public: input r0 as Token.record; input r1 as address.public; input r2 as u64.public; sub r0.amount r2 into r3; cast r0.owner r3 into r4 as Token.record; async transfer_private_to_public r1 r2 into r5; output r4 as Token.record; output r5 as dev_truecoin_token_v007.aleo/transfer_private_to_public.future; finalize transfer_private_to_public: input r0 as address.public; input r1 as u64.public; get.or_use public_balance[r0] 0u64 into r2; add r2 r1 into r3; set r3 into public_balance[r0]; function transfer_public_to_private: input r0 as address.private; input r1 as u64.public; cast r0 r1 into r2 as Token.record; async transfer_public_to_private self.caller r1 into r3; output r2 as Token.record; output r3 as dev_truecoin_token_v007.aleo/transfer_public_to_private.future; finalize transfer_public_to_private: input r0 as address.public; input r1 as u64.public; get.or_use public_balance[r0] 0u64 into r2; sub r2 r1 into r3; set r3 into public_balance[r0]; function join: input r0 as Token.record; input r1 as Token.record; add r0.amount r1.amount into r2; cast r0.owner r2 into r3 as Token.record; output r3 as Token.record; function update_aml_blocklist: input r0 as UpdateAMLBlocklist.private; async update_aml_blocklist r0 into r1; output r1 as dev_truecoin_token_v007.aleo/update_aml_blocklist.future; finalize update_aml_blocklist: input r0 as UpdateAMLBlocklist.public; set r0.blocked into aml_blocklist[r0.account]; get.or_use aml_version[true] 0u32 into r1; add r1 1u32 into r2; set r2 into aml_version[true]; function issue_aml: input r0 as u32.private; cast self.caller r0 into r1 as AML.record; async issue_aml self.caller into r2; output r1 as AML.record; output r2 as dev_truecoin_token_v007.aleo/issue_aml.future; finalize issue_aml: input r0 as address.public; get.or_use aml_blocklist[r0] false into r1; not r1 into r2; assert.eq r2 true; function verify_aml: input r0 as AML.record; cast r0.owner r0.version into r1 as AML.record; async verify_aml r0.version into r2; output r1 as AML.record; output r2 as dev_truecoin_token_v007.aleo/verify_aml.future; finalize verify_aml: input r0 as u32.public; get aml_version[true] into r1; assert.eq r0 r1; function verify_kyc: input r0 as KYC.record; input r1 as u32.private; lte r1 r0.expiry_block_height into r2; assert.eq r2 true; cast r0.owner r0.expiry_block_height into r3 as KYC.record; async verify_kyc r1 into r4; output r3 as KYC.record; output r4 as dev_truecoin_token_v007.aleo/verify_kyc.future; finalize verify_kyc: input r0 as u32.public; lt block.height r0 into r1; assert.eq r1 true;