From 8193e8cbc7b481feb3ebf123490801f34199bdbb Mon Sep 17 00:00:00 2001 From: Otto G <5030059+ottodevs@users.noreply.github.com> Date: Wed, 15 Nov 2023 16:14:35 +0300 Subject: [PATCH] fix double-signing issue --- 3.restricted-mint-multisig/imports/multisig.leo | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/3.restricted-mint-multisig/imports/multisig.leo b/3.restricted-mint-multisig/imports/multisig.leo index 1652050..3c87f27 100644 --- a/3.restricted-mint-multisig/imports/multisig.leo +++ b/3.restricted-mint-multisig/imports/multisig.leo @@ -5,6 +5,12 @@ program multisig.aleo { mapping required_signatures: bool => u64; mapping proposals: Proposal => u64; mapping signers: address => bool; + mapping signed_addresses: Signed => bool; + + struct Signed { + signer: address, + proposal: Proposal + } struct Proposal { program_address: address, @@ -41,8 +47,11 @@ program multisig.aleo { finalize sign(caller: address, proposal: Proposal) { assert(Mapping::get(signers, caller)); + let signed: Signed = Signed { signer: caller, proposal: proposal }; + assert(!Mapping::get(signed_addresses, signed)); let signatures: u64 = Mapping::get_or_use(proposals, proposal, 0u64); Mapping::set(proposals, proposal, signatures + 1u64); + Mapping::set(signed_addresses, signed, true); } transition add_signer(ticket_: ticket, new_signer: address) {