Program token_private_public.aleo
Program ID
token_private_public.aleo
Deployment transaction
Owner signature
sign16zmgdfp4msmg4lv3h3ekejkjs5qpjxxlrwgh4jjct3mqnerc2gp6gdeu788kw0ed6gp2s6tfygm460xu5ffyrqhfcflk7a0tph5g2q5ug64dk9h6zldghww0sj87r5qegsvesv0epv7u0cjsra6ngrxppx6v8ce0fkxdcwvf5dw0zcsnd6vh54x0e5z3ch8zaegkwtk025mszxqanch
Times called
0
Similar programs
0
Imports
-
Mappings
account (address -> u64)
Structs
-
Records
token
Functions
-
Transitions
mint_public(public address, public u64) -> () finalize(address, u64)
mint_private(address, u64) -> token
transfer_public(public address, public u64) -> () finalize(address, address, u64)
transfer_private(token, address, u64) -> (token, token)
transfer_private_to_public(token, public address, public u64) -> token finalize(address, u64)
transfer_public_to_private(public address, public u64) -> token finalize(address, u64)
mint_private(address, u64) -> token
transfer_public(public address, public u64) -> () finalize(address, address, u64)
transfer_private(token, address, u64) -> (token, token)
transfer_private_to_public(token, public address, public u64) -> token finalize(address, u64)
transfer_public_to_private(public address, public u64) -> token finalize(address, u64)
Program Source Code (Aleo Instruction) Upload Leo source
program token_private_public.aleo; record token: owner as address.private; amount as u64.private; mapping account: key as address.public; value as u64.public; function mint_public: input r0 as address.public; input r1 as u64.public; async mint_public r0 r1 into r2; output r2 as token_private_public.aleo/mint_public.future; finalize mint_public: input r0 as address.public; input r1 as u64.public; get.or_use account[r0] 0u64 into r2; add r2 r1 into r3; set r3 into account[r0]; function mint_private: input r0 as address.private; input r1 as u64.private; cast r0 r1 into r2 as token.record; output r2 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 token_private_public.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 account[r0] 0u64 into r3; sub r3 r2 into r4; set r4 into account[r0]; get.or_use account[r1] 0u64 into r5; add r5 r2 into r6; set r6 into account[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 token_private_public.aleo/transfer_private_to_public.future; finalize transfer_private_to_public: input r0 as address.public; input r1 as u64.public; get.or_use account[r0] 0u64 into r2; add r2 r1 into r3; set r3 into account[r0]; function transfer_public_to_private: input r0 as address.public; 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 token_private_public.aleo/transfer_public_to_private.future; finalize transfer_public_to_private: input r0 as address.public; input r1 as u64.public; get.or_use account[r0] 0u64 into r2; sub r2 r1 into r3; set r3 into account[r0];
Block height | Timestamp | Transition ID | Function call | State |