diff --git a/3.restricted-mint-multisig/imports/multisig.leo b/3.restricted-mint-multisig/imports/multisig.leo index 1652050..af6e113 100644 --- a/3.restricted-mint-multisig/imports/multisig.leo +++ b/3.restricted-mint-multisig/imports/multisig.leo @@ -6,6 +6,14 @@ program multisig.aleo { mapping proposals: Proposal => u64; mapping signers: address => bool; + //signed addresses + mapping signed_addresses: Signed => bool; + + struct Signed { + signer: address, + proposal: Proposal + } + struct Proposal { program_address: address, function_id: field, @@ -40,9 +48,16 @@ program multisig.aleo { } finalize sign(caller: address, proposal: Proposal) { + assert(Mapping::get(signers, caller)); + + //signed addresses + Mapping::get(signed_addresses, Signed { signer: caller, proposal: proposal }); + + let signatures: u64 = Mapping::get_or_use(proposals, proposal, 0u64); Mapping::set(proposals, proposal, signatures + 1u64); + Mapping::set(signed_addresses, Signed { signer: caller, proposal: proposal }, true); } transition add_signer(ticket_: ticket, new_signer: address) {