Skip to content

Conversation

@SynnekOG
Copy link

Summary

This PR significantly extends the functionality of MultiSigContractV2 by adding custom errors, governance-related constants, a reference to external contracts, and a constructor for initializing critical parameters. These changes lay the foundation for secure multisignature governance, attestation integration, and emergency management.


Changes

🔒 New Custom Errors

  • MultiSigContract__TimelockActive
    Raised when a transaction cannot execute due to an active timelock.
  • MultiSigContract__EmergencyModeActive
    Prevents execution of certain functions during emergency mode.
  • MultiSigContract__InvalidThreshold
    Thrown when an invalid global signature threshold is set.
  • MultiSigContract__DuplicateSigner
    Prevents duplicate signer entries.

⚙️ New State Variables

  • Factory Token Reference

    • FactoryTokenContract public factoryTokenContract;
      Reference to the factory’s token contract for tighter integration.
  • Sign Protocol Instance

    • ISP public spInstance;
      Enables integration with Sign Protocol for attestations.
  • Schema IDs

    • uint64 public signatureSchemaId;
    • uint64 public revocationSchemaId;
    • uint64 public executionSchemaId;
      Each schema ID represents a different type of attestation (signatures, revocations, executions).
  • Signature Threshold

    • uint256 public signatureThreshold = 6000;
      Default 60% global signature threshold, represented as percentage * 100.
  • Emergency Controls

    • bool public emergencyMode; – Tracks whether the contract is in emergency mode.
    • address public emergencyAdmin; – Privileged account capable of pausing/unpausing during emergencies.

🏗 Constructor

constructor(
    address _spInstance,
    uint64 _signatureSchemaId,
    uint64 _revocationSchemaId,
    uint64 _executionSchemaId,
    address _emergencyAdmin,
    address _initialOwner
) Ownable(_initialOwner) {
    if (_spInstance == address(0) || _emergencyAdmin == address(0)) {
        revert MultiSigContract__InvalidAddress();
    }

    spInstance = ISP(_spInstance);
    signatureSchemaId = _signatureSchemaId;
    revocationSchemaId = _revocationSchemaId;
    executionSchemaId = _executionSchemaId;
    emergencyAdmin = _emergencyAdmin;

    // Potential future addition: add initial owner as default signer with admin role
}

@2PykeETH 2PykeETH self-requested a review September 29, 2025 17:32
@2PykeETH 2PykeETH added documentation Improvements or additions to documentation enhancement New feature or request labels Sep 29, 2025
@2PykeETH 2PykeETH merged commit 879d561 into CraftMeme:main Sep 29, 2025
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants