import alphaswap_v1.aleo;
program asfaucet_v1.aleo;
mapping faucets:
key as field.public;
value as u128.public;
mapping admins:
key as address.public;
value as boolean.public;
function claim:
input r0 as field.public;
input r1 as u128.public;
call alphaswap_v1.aleo/transfer_public r0 self.caller r1 into r2;
async claim r2 r0 r1 into r3;
output r3 as asfaucet_v1.aleo/claim.future;
finalize claim:
input r0 as alphaswap_v1.aleo/transfer_public.future;
input r1 as field.public;
input r2 as u128.public;
await r0;
get faucets[r1] into r3;
lte r2 r3 into r4;
assert.eq r4 true;
function init:
assert.eq self.caller aleo1uldp2afc9gnfsxd0r2svaecax8quutny5j6ns2qa80yp5uhsac9q35h7h6;
async init self.caller into r0;
output r0 as asfaucet_v1.aleo/init.future;
finalize init:
input r0 as address.public;
contains admins[r0] into r1;
not r1 into r2;
assert.eq r2 true;
set true into admins[r0];
function set_faucet:
input r0 as field.public;
input r1 as u128.public;
async set_faucet self.caller r0 r1 into r2;
output r2 as asfaucet_v1.aleo/set_faucet.future;
finalize set_faucet:
input r0 as address.public;
input r1 as field.public;
input r2 as u128.public;
get admins[r0] into r3;
assert.eq r3 true;
set r2 into faucets[r1];
function set_admin:
input r0 as address.public;
input r1 as boolean.public;
async set_admin self.caller r0 r1 into r2;
output r2 as asfaucet_v1.aleo/set_admin.future;
finalize set_admin:
input r0 as address.public;
input r1 as address.public;
input r2 as boolean.public;
get admins[r0] into r3;
assert.eq r3 true;
set r2 into admins[r1];
function withdraw:
input r0 as field.public;
input r1 as address.public;
input r2 as u128.public;
call alphaswap_v1.aleo/transfer_public r0 r1 r2 into r3;
async withdraw r3 self.caller r0 r2 into r4;
output r4 as asfaucet_v1.aleo/withdraw.future;
finalize withdraw:
input r0 as alphaswap_v1.aleo/transfer_public.future;
input r1 as address.public;
input r2 as field.public;
input r3 as u128.public;
await r0;
get admins[r1] into r4;
assert.eq r4 true;