The explorer is out of sync. The last synced block is 524 hours ago. Current block height: explorer: 2206528 / node: 2541496 / ref: 2492275

Program store_seiren.aleo

Program ID
store_seiren.aleo
Owner signature
sign1xyekh6ckh86ug2rn8uht70gad2w6tqp2camedl07p9q72taazvpmlcvllxr7gsxtds4h3qd9qk9z95r4eerxdlr8w2xr0mu43rjnxqtlv3umq9ygcq89qlz238zxxw8vetta0lp6gqf2klgtha0rtmtpqhuhlmqzdxycfd0rphnmtd7qx6uwrup778g7dgu9ycggazd5k6xsgj8j4l4
Times called
0
Similar programs
Imports
-
Mappings
items (u8 -> u64)
prices (u8 -> u64)
Structs
-
Records
Token
Item
Functions
-
Transitions
mint(address, u64) -> Token
add_item(u8, u64, u64) -> () finalize(u8, u64, u64)
buy(Token, u8, u64, u64) -> (Token, Item) finalize(u8, u64, u64)
transfer_item(Item, address) -> Item
Program Source Code (Aleo Instruction) Upload Leo source

program store_seiren.aleo;

record Token:
    owner as address.private;
    amount as u64.private;

record Item:
    owner as address.private;
    item as u8.private;
    quantity as u64.private;

mapping items:
    key as u8.public;
    value as u64.public;

mapping prices:
    key as u8.public;
    value as u64.public;

function mint:
    input r0 as address.private;
    input r1 as u64.private;
    assert.eq self.caller aleo1jnc0zu0jmttwlullcjcneww5ck37znj3ut97rye47g87cn9k7vqsvvcqq4;
    cast r0 r1 into r2 as Token.record;
    output r2 as Token.record;

function add_item:
    input r0 as u8.private;
    input r1 as u64.private;
    input r2 as u64.private;
    assert.eq self.caller aleo1jnc0zu0jmttwlullcjcneww5ck37znj3ut97rye47g87cn9k7vqsvvcqq4;
    async add_item r0 r1 r2 into r3;
    output r3 as store_seiren.aleo/add_item.future;
finalize add_item:
    input r0 as u8.public;
    input r1 as u64.public;
    input r2 as u64.public;
    get.or_use items[r0] 0u64 into r3;
    add r3 r1 into r4;
    set r4 into items[r0];
    set r2 into prices[r0];

function buy:
    input r0 as Token.record;
    input r1 as u8.private;
    input r2 as u64.private;
    input r3 as u64.private;
    sub r0.amount r3 into r4;
    cast r0.owner r4 into r5 as Token.record;
    cast self.caller r1 r2 into r6 as Item.record;
    async buy r1 r2 r3 into r7;
    output r5 as Token.record;
    output r6 as Item.record;
    output r7 as store_seiren.aleo/buy.future;
finalize buy:
    input r0 as u8.public;
    input r1 as u64.public;
    input r2 as u64.public;
    get.or_use items[r0] 0u64 into r3;
    gte r3 r1 into r4;
    assert.eq r4 true;
    get.or_use prices[r0] 0u64 into r5;
    assert.neq r5 0u64;
    mul r5 r1 into r6;
    assert.eq r6 r2;

function transfer_item:
    input r0 as Item.record;
    input r1 as address.private;
    cast r1 r0.item r0.quantity into r2 as Item.record;
    output r2 as Item.record;

Block heightTimestampTransition IDFunction callState




Not implemented