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

Program zkdao_v0_0_1.aleo

Program ID
zkdao_v0_0_1.aleo
Owner signature
sign1d6acvmth0xvtugjrfcll8u6du6gx86qqnl7nsac4xytl7mkwssqnl59ffwqznhp542vdu6sl2w56vk5ns70xjpyxpfawp88vn5dvwqujg89h08lg4q6tvfgqsfcdkmqrqusq8249v7lrf853j9mdx4rhpjfw5fstl5q2ugr80xrn7d94v0f8heam63hh2xpckwvsew5m4jcqjsm8a97
Times called
8
Similar programs
Imports
-
Mappings
admins (field -> boolean)
admin_struct (field -> Admin)
membership (field -> Membership)
Structs
Membership
Admin
Records
-
Functions
-
Transitions
grant_admin_initial(address) -> () finalize(field)
remove_admin_initial(address) -> () finalize(field)
destruct_owner() -> ()
approve_destruct() -> () finalize(field)
request_membership(address) -> () finalize(field)
approve_membership(address) -> () finalize(field, field)
grant_membership(address) -> () finalize(field)
Program Source Code (Aleo Instruction) Upload Leo source

program zkdao_v0_0_1.aleo;

struct Membership:
    requests as boolean;
    approvals as field;
    granted as boolean;

struct Admin:
    num_admins as field;
    destruct_approvals as field;
    destructed as boolean;
    reset as boolean;

mapping admins:
    key as field.public;
    value as boolean.public;

mapping admin_struct:
    key as field.public;
    value as Admin.public;

mapping membership:
    key as field.public;
    value as Membership.public;

function grant_admin_initial:
    input r0 as address.private;
    hash.bhp256 self.caller into r1 as field;
    assert.eq r1 5471346192118974203811093312871574098188146069506081670514657699548656288468field;
    hash.bhp256 r0 into r2 as field;
    async grant_admin_initial r2 into r3;
    output r3 as zkdao_v0_0_1.aleo/grant_admin_initial.future;
finalize grant_admin_initial:
    input r0 as field.public;
    cast 0field 0field false false into r1 as Admin;
    get.or_use admin_struct[0field] r1 into r2;
    assert.eq r2.destructed false;
    get.or_use admins[r0] false into r3;
    assert.eq r3 false;
    set true into admins[r0];
    add r2.num_admins 1field into r4;
    cast r4 r2.destruct_approvals r2.destructed r2.reset into r5 as Admin;
    set r5 into admin_struct[0field];

function remove_admin_initial:
    input r0 as address.private;
    hash.bhp256 self.caller into r1 as field;
    assert.eq r1 5471346192118974203811093312871574098188146069506081670514657699548656288468field;
    hash.bhp256 r0 into r2 as field;
    async remove_admin_initial r2 into r3;
    output r3 as zkdao_v0_0_1.aleo/remove_admin_initial.future;
finalize remove_admin_initial:
    input r0 as field.public;
    cast 0field 0field false false into r1 as Admin;
    get.or_use admin_struct[0field] r1 into r2;
    assert.eq r2.destructed false;
    gt r2.num_admins 0field into r3;
    assert.eq r3 true;
    get admins[r0] into r4;
    assert.eq r4 true;
    set false into admins[r0];
    sub r2.num_admins 1field into r5;
    cast r5 r2.destruct_approvals r2.destructed r2.reset into r6 as Admin;
    set r6 into admin_struct[0field];

function destruct_owner:
    async destruct_owner  into r0;
    output r0 as zkdao_v0_0_1.aleo/destruct_owner.future;
finalize destruct_owner:
    cast 0field 0field false false into r0 as Admin;
    get.or_use admin_struct[0field] r0 into r1;
    gt r1.destruct_approvals 2field into r2;
    assert.eq r2 true;
    cast r1.num_admins r1.destruct_approvals true r1.reset into r3 as Admin;
    set r3 into admin_struct[0field];

function approve_destruct:
    hash.bhp256 self.caller into r0 as field;
    async approve_destruct r0 into r1;
    output r1 as zkdao_v0_0_1.aleo/approve_destruct.future;
finalize approve_destruct:
    input r0 as field.public;
    get.or_use admins[r0] false into r1;
    assert.eq r1 true;
    cast 0field 0field false false into r2 as Admin;
    get.or_use admin_struct[0field] r2 into r3;
    add r3.destruct_approvals 1field into r4;
    cast r3.num_admins r4 r3.destructed r3.reset into r5 as Admin;
    set r5 into admin_struct[0field];

function request_membership:
    input r0 as address.private;
    hash.bhp256 r0 into r1 as field;
    async request_membership r1 into r2;
    output r2 as zkdao_v0_0_1.aleo/request_membership.future;
finalize request_membership:
    input r0 as field.public;
    cast false 0field false into r1 as Membership;
    get.or_use membership[r0] r1 into r2;
    cast true r2.approvals r2.granted into r3 as Membership;
    set r3 into membership[r0];

function approve_membership:
    input r0 as address.private;
    hash.bhp256 r0 into r1 as field;
    hash.bhp256 self.caller into r2 as field;
    async approve_membership r2 r1 into r3;
    output r3 as zkdao_v0_0_1.aleo/approve_membership.future;
finalize approve_membership:
    input r0 as field.public;
    input r1 as field.public;
    get.or_use admins[r0] false into r2;
    assert.eq r2 true;
    get membership[r1] into r3;
    add r3.approvals 1field into r4;
    cast r3.requests r4 r3.granted into r5 as Membership;
    set r5 into membership[r1];

function grant_membership:
    input r0 as address.private;
    hash.bhp256 r0 into r1 as field;
    async grant_membership r1 into r2;
    output r2 as zkdao_v0_0_1.aleo/grant_membership.future;
finalize grant_membership:
    input r0 as field.public;
    get membership[r0] into r1;
    gt r1.approvals 2field into r2;
    assert.eq r2 true;
    cast r1.requests r1.approvals true into r3 as Membership;
    set r3 into membership[r0];

Block heightTimestampTransition IDFunction callState
104,4822023-10-28 16:33:03au1rr2glyjrt0xjqg8wgvdcenenxjgrzqf9e7r9xw9x8cwy9flurcyq5a07ecgrant_membershipAccepted
104,4182023-10-28 16:27:57au1gcz3qyqy8tk9n5nae374sk235yscf5lm62dr6p0352542jp66spqy5j7exapprove_membershipAccepted
104,4152023-10-28 16:27:44au183w9vlkpppxfqghue9daecf8vtenaq5k57929r7kd9f7gs9e8qqsp7r4sdapprove_membershipAccepted
104,4112023-10-28 16:27:26au1ws86d0x35qvp2nkufcd4janqjcv6p584jjkjzwr4623myqzpx5gq2tw006approve_membershipAccepted
104,3712023-10-28 16:24:21au16cuqu80vqnm8h8kh7c5stg247tcgspvrvu9xxs48jpycmp7xwsgqdfmut8grant_admin_initialAccepted
104,3682023-10-28 16:24:06au1l2w36yqxka69qm7nxtja25se8h9xh5acxshnpstgmyq8fez98yqsz8ntprgrant_admin_initialAccepted
104,3652023-10-28 16:23:53au1hkx38vy9esaxflv92vtt3ydamcc2vdh87n3stzp5exk355auwcxq2wt5nkgrant_admin_initialAccepted
104,3352023-10-28 16:21:30au1v7w0egkr90jp5mnek280tqwff0g9rlaflf8yz97u9yevm42l7qysngzcqerequest_membershipAccepted






Not implemented