From 9723750a25343e57e1f0d5b8f12aa96e7f5e80b3 Mon Sep 17 00:00:00 2001 From: Harun Mwangi Date: Thu, 22 Aug 2024 11:14:26 +0300 Subject: [PATCH] docs: align the design document to the code --- docs/design-specs/upgradable-multi-sig.pdf | Bin 276067 -> 276795 bytes docs/design-specs/upgradable-multi-sig.typ | 56 ++++++++++++++------- 2 files changed, 38 insertions(+), 18 deletions(-) diff --git a/docs/design-specs/upgradable-multi-sig.pdf b/docs/design-specs/upgradable-multi-sig.pdf index f715fdb9a6f7f29e025de5532ea9257ac45b83c8..c6c736e6b9327b6e7c184a8db07d1d681f6e2b58 100644 GIT binary patch delta 40874 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

ifCclB3>gKQFIz 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ɱHqr*p&IaKeT*k83Y!CTRRZb%3c)cRGBy02Y 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 diff --git a/docs/design-specs/upgradable-multi-sig.typ b/docs/design-specs/upgradable-multi-sig.typ index e9aa2f3..176ee34 100644 --- a/docs/design-specs/upgradable-multi-sig.typ +++ b/docs/design-specs/upgradable-multi-sig.typ @@ -108,7 +108,7 @@ = Overview \ -This Upgradable Multi-Signature Smart Contract is developed using Aiken for the Cardano blockchain. It is designed to facilitate secure asset transactions by authorized members within predefined thresholds. The contract allows for seamless adjustment of signer thresholds and dynamic addition or removal of signers, ensuring long-term usability and adaptability. +This document outlines the design specification for an upgradable multisignature (multisig) smart contract implemented using Aiken for the Cardano blockchain. The contract enables authorized members to execute asset transactions within predefined thresholds, demonstrates secure spending of assets, allows seamless adjustment of signer thresholds, and supports dynamic addition or removal of signers for enduring usability and adaptability. #pagebreak() @@ -161,16 +161,20 @@ There are one main contracts in this multi-sig system. \ === Multi-sig validator \ -The Multi-sig Contract is the primary contract responsible for managing the list of authorized signers, validating transactions, and ensuring the proper execution of multi-sig operations. It facilitates the initialization of the multi-sig wallet, updating of signers, execution of transactions, and upgrading of the contract. +The Multi-sig Contract is the primary contract responsible for managing the list of authorized signers, validating transactions, and ensuring the proper execution of multi-sig operations. ==== Parameters \ - None \ ==== Spend Purpose +\ +The contract uses the Spend purpose, allowing it to manage and spend funds locked in its address. ==== Datum \ +The datum structure holds the current state of the multisig arrangement: +\ - *`signers`:* List of public key hashes of authorized signers. - *`threshold`:* Minimum number of required signatures. @@ -184,23 +188,23 @@ The Multi-sig Contract is the primary contract responsible for managing the list \ ==== Redeemer \ -- Sign +The contract supports two types of operations, represented by the redeemer: +\ +- Sign: For executing fund transfers -- Update +- Update: For modifying the multisig configuration \ ==== Validation \ -+ *Common Checks (for both Sign and Update)* - - - Ensure the transaction is signed by at least the required number of authorized signers - - - Verify that the output value contains at least the input value (no unauthorized spending) - + *Sign* The redeemer allows a majority of the authorized signers to collectively approve and execute transactions using the funds controlled by the multi-signature contract - - Ensure the spent amount is within the spending_limit + - Verifies that the required number of authorized signers have signed the transaction + + - Ensures the transfer amount does not exceed the spending limit + + - Checks that the total value is preserved across inputs and outputs - Ensure the output datum matches the input datum (no changes to the multisig configuration) @@ -208,22 +212,28 @@ The Multi-sig Contract is the primary contract responsible for managing the list The redeemer enables the modification of the multi-signature arrangement itself. + - Verifies that the required number of authorized signers have signed the transaction + - Enforce bounds on new signers list and threshold: - - New signer count > 0 + - New signer count must be greater than 0 - - 0 < New threshold ≤ New signer count // (We can't require more signatures than there are signers.) + - New threshold must be greater than 0 and less than or equal to the new signer count - - New funds_qty ≥ 0 + - New funds quantity must be greater than or equal to 0 - - 0 ≤ New spending_limit ≤ New funds_qty + - New spending limit must be greater than or equal to 0 and less than or equal to the new funds quantity - Ensure there are no duplicate keys in the new list of signers - Verify that input value equals output value (no spending during update) + - Verify that the total value is preserved (input value equals output value, no funds are spent during update) + - Ensure the new configuration is stored in the output datum + - Allows addition or removal of only one signer at a time + \ #pagebreak() @@ -251,6 +261,7 @@ This action ensures that the number of signers meets or exceeds the specified th b: "threshold", c: "funds", d: "funds_qty", //Threshold count for withdrawal + e: "spending_limit", ) ), ), @@ -269,8 +280,11 @@ This action ensures that the number of signers meets or exceeds the specified th ), datum: ( - a: "signers", + a: "signers", b: "threshold", + c: "funds", + d: "funds_qty", //Threshold count for withdrawal + e: "spending_limit", ) ), ), @@ -301,6 +315,7 @@ This action ensures that the number of signers meets or exceeds the specified th - `threshold` - `funds` - `funds_qty` + - `spending_limit` . - Value: @@ -323,7 +338,8 @@ This action ensures that the number of signers meets or exceeds the specified th - `signers` - `threshold` - `funds` - - `funds_qty` + - `funds_qty` + - `spending_limit` - Value: @@ -353,7 +369,8 @@ updates the required signers threshold. b: "old_threshold", c: "funds", d: "old_funds_qty", //Threshold count for withdrawal - ) + e: "spending_limit", + ) ), ), outputs: ( @@ -370,6 +387,7 @@ updates the required signers threshold. b: "new_threshold", c: "funds", d: "old_funds_qty", //Threshold count for withdrawal + e: "spending_limit", ) ), @@ -397,6 +415,7 @@ updates the required signers threshold. - `old_threshold` - `funds` - `old_funds_qty` + - `old_spending_limit` - Value: @@ -414,6 +433,7 @@ updates the required signers threshold. - `new_threshold` - `funds` - `new_funds_qty` + - `new_spending_limit` - Value: