in_sync

Program protocol_transfers.aleo

Program ID
protocol_transfers.aleo
Owner signature
sign1hhzrfc4rmr2zk3vyxeqgpa5e4qvap6c05gymx7jkjm6am8h2lgpwdkldmg7adv2kqvt33zyvs0fp0anchp6a3z88tccd4cnsw0m96qqh7y00jwagn9ae9ytnk5qj7za66k5nruz2ex0y87flnlkctk2eqq62xlryqk35v7q8k82fxepzes2rqz8rhsaz07yqr0p85g3mhrpssq2p2xn
Times called
0
Similar programs
0
Mappings
-
Structs
Proposal
Share
Custody
ValidatorShareData
Records
ValidatorShare
WithdrawRequest
DestinationShare
Functions
-
Transitions
process_request_as_validator(ValidatorShare, WithdrawRequest, public u64) -> DestinationShare
submit_shares_to_validators([ValidatorShareData; 16u32], Custody) -> (ValidatorShare, ValidatorShare, ValidatorShare, ValidatorShare, ValidatorShare, ValidatorShare, ValidatorShare, ValidatorShare, ValidatorShare, ValidatorShare, ValidatorShare, ValidatorShare, ValidatorShare, ValidatorShare, ValidatorShare, ValidatorShare)
submit_requests_to_validators([address; 16u32], field, address) -> (WithdrawRequest, WithdrawRequest, WithdrawRequest, WithdrawRequest, WithdrawRequest, WithdrawRequest, WithdrawRequest, WithdrawRequest, WithdrawRequest, WithdrawRequest, WithdrawRequest, WithdrawRequest, WithdrawRequest, WithdrawRequest, WithdrawRequest, WithdrawRequest)
Program Source Code (Aleo Instruction) Upload Leo source

import credits.aleo;
import protocol_core.aleo;

program protocol_transfers.aleo;

struct Proposal:
    validators as [address; 16u32];
    threshold as u8;
    current_validator_set_index as u64;

struct Share:
    share_val as field;
    index as field;

struct Custody:
    initiator as address;
    data_address as address;
    threshold as u8;

struct ValidatorShareData:
    validator as address;
    share as Share;

record ValidatorShare:
    owner as address.private;
    share as Share.private;
    custody as Custody.private;

record WithdrawRequest:
    owner as address.private;
    custody_hash as field.private;
    to as address.private;

record DestinationShare:
    owner as address.private;
    share as Share.private;

function process_request_as_validator:
    input r0 as ValidatorShare.record;
    input r1 as WithdrawRequest.record;
    input r2 as u64.public;
    hash.bhp256 r0.custody into r3 as field;
    assert.eq r1.custody_hash r3;
    cast r1.to r0.share into r4 as DestinationShare.record;
    call credits.aleo/transfer_public self.caller r2 into r5;
    call protocol_core.aleo/process_request_as_validator r3 r2 r0.custody.threshold into r6;
    async process_request_as_validator r6 r5 into r7;
    output r4 as DestinationShare.record;
    output r7 as protocol_transfers.aleo/process_request_as_validator.future;
finalize process_request_as_validator:
    input r0 as protocol_core.aleo/process_request_as_validator.future;
    input r1 as credits.aleo/transfer_public.future;
    await r0;
    await r1;

function submit_shares_to_validators:
    input r0 as [ValidatorShareData; 16u32].private;
    input r1 as Custody.private;
    assert.eq self.caller secret_custody_protocol.aleo;
    cast r0[0].validator r0[0].share r1 into r2 as ValidatorShare.record;
    cast r0[1].validator r0[1].share r1 into r3 as ValidatorShare.record;
    cast r0[2].validator r0[2].share r1 into r4 as ValidatorShare.record;
    cast r0[3].validator r0[3].share r1 into r5 as ValidatorShare.record;
    cast r0[4].validator r0[4].share r1 into r6 as ValidatorShare.record;
    cast r0[5].validator r0[5].share r1 into r7 as ValidatorShare.record;
    cast r0[6].validator r0[6].share r1 into r8 as ValidatorShare.record;
    cast r0[7].validator r0[7].share r1 into r9 as ValidatorShare.record;
    cast r0[8].validator r0[8].share r1 into r10 as ValidatorShare.record;
    cast r0[9].validator r0[9].share r1 into r11 as ValidatorShare.record;
    cast r0[10].validator r0[10].share r1 into r12 as ValidatorShare.record;
    cast r0[11].validator r0[11].share r1 into r13 as ValidatorShare.record;
    cast r0[12].validator r0[12].share r1 into r14 as ValidatorShare.record;
    cast r0[13].validator r0[13].share r1 into r15 as ValidatorShare.record;
    cast r0[14].validator r0[14].share r1 into r16 as ValidatorShare.record;
    cast r0[15].validator r0[15].share r1 into r17 as ValidatorShare.record;
    output r2 as ValidatorShare.record;
    output r3 as ValidatorShare.record;
    output r4 as ValidatorShare.record;
    output r5 as ValidatorShare.record;
    output r6 as ValidatorShare.record;
    output r7 as ValidatorShare.record;
    output r8 as ValidatorShare.record;
    output r9 as ValidatorShare.record;
    output r10 as ValidatorShare.record;
    output r11 as ValidatorShare.record;
    output r12 as ValidatorShare.record;
    output r13 as ValidatorShare.record;
    output r14 as ValidatorShare.record;
    output r15 as ValidatorShare.record;
    output r16 as ValidatorShare.record;
    output r17 as ValidatorShare.record;

function submit_requests_to_validators:
    input r0 as [address; 16u32].private;
    input r1 as field.private;
    input r2 as address.private;
    assert.eq self.caller secret_custody_protocol.aleo;
    cast r0[0] r1 r2 into r3 as WithdrawRequest.record;
    cast r0[1] r1 r2 into r4 as WithdrawRequest.record;
    cast r0[2] r1 r2 into r5 as WithdrawRequest.record;
    cast r0[3] r1 r2 into r6 as WithdrawRequest.record;
    cast r0[4] r1 r2 into r7 as WithdrawRequest.record;
    cast r0[5] r1 r2 into r8 as WithdrawRequest.record;
    cast r0[6] r1 r2 into r9 as WithdrawRequest.record;
    cast r0[7] r1 r2 into r10 as WithdrawRequest.record;
    cast r0[8] r1 r2 into r11 as WithdrawRequest.record;
    cast r0[9] r1 r2 into r12 as WithdrawRequest.record;
    cast r0[10] r1 r2 into r13 as WithdrawRequest.record;
    cast r0[11] r1 r2 into r14 as WithdrawRequest.record;
    cast r0[12] r1 r2 into r15 as WithdrawRequest.record;
    cast r0[13] r1 r2 into r16 as WithdrawRequest.record;
    cast r0[14] r1 r2 into r17 as WithdrawRequest.record;
    cast r0[15] r1 r2 into r18 as WithdrawRequest.record;
    output r3 as WithdrawRequest.record;
    output r4 as WithdrawRequest.record;
    output r5 as WithdrawRequest.record;
    output r6 as WithdrawRequest.record;
    output r7 as WithdrawRequest.record;
    output r8 as WithdrawRequest.record;
    output r9 as WithdrawRequest.record;
    output r10 as WithdrawRequest.record;
    output r11 as WithdrawRequest.record;
    output r12 as WithdrawRequest.record;
    output r13 as WithdrawRequest.record;
    output r14 as WithdrawRequest.record;
    output r15 as WithdrawRequest.record;
    output r16 as WithdrawRequest.record;
    output r17 as WithdrawRequest.record;
    output r18 as WithdrawRequest.record;

Block heightTimestampTransition IDFunction callState
Program has no mappings.
Not implemented