Fathom Protocol
  • Introduction
  • FXD Stablecoin
    • FXD Smart Contract Architecture
    • Minting and Burning Mechanisms with LTV Ratio
    • Soft-Pegging to the US Dollar
    • Opening and closing position flows
    • BookKeeping mechanism
      • Stablecoin Accounting
      • Collateral Accounting
    • Liquidation
      • Fixed Spread Liquidation Strategy
      • Liquidation process walk through
    • Emergency Shutdown
    • Maths for position safety
    • Fee structure
    • Risk Management
    • Interfaces
      • ProxyWalletRegistry
      • ProxyWallet
        • FathomStablecoinProxyActions
      • CollateralPoolConfig
      • BookKeeper
      • FXD
      • LiquidationEngine
      • FlashMintModule
      • PriceFeed
      • ShowStopper
      • StabilityFeeCollector
      • SystemDebtEngine
      • AdminControls
    • Deployments
      • XDC Network
    • User Guides
      • Open FXD position
      • Top Up FXD Position
      • Repay and close FXD position
    • Fathom Stablecoin Smart Contracts
    • Fathom Stablecoin Subgraph
  • Vaults
    • Key Features
    • Definitions
    • Architecture
    • Fees
    • Workflows
    • Vault Management
    • Strategy Creation
    • Interfaces
      • Factory
      • Vault
      • BaseStrategy
      • TokenizedStrategy
    • Deployments
      • XDC Network
    • User Guides
      • Deposit and Withdraw in Vault
    • Fathom Vaults Smart Contracts
    • Fathom Vaults Subgraph
  • Lending
    • Core Concepts
    • Protocol Mechanics
    • Architecture
    • Interfaces
      • FmToken
      • VariableDebtToken
      • StableDebtToken
      • L2Pool
      • PoolAddressesProvider
    • User Guides
      • Supply, Borrow, Repay and Withdraw Asset
    • Deployments
      • XDC Network
    • Fathom Lending Smart Contracts
    • Fathom Lending Subgraph
  • DEX
    • Core Concepts
    • Architecture
    • Interfaces
      • Factory
      • Pair
      • Router
    • User Guides
      • Providing Liquidity
      • Swapping Assets
    • Deployments
      • XDC Network
    • Fathom DEX Smart Contracts
    • Fathom DEX Subgraph
  • DAO
    • DAO Structure
    • Governance Process
    • Staking Process
    • Treasury Management
    • Risk Management and Security Measures
    • Contributing to Fathom DAO
    • Interfaces
      • FTHM
      • Staking
        • Vault
        • RewardsCalculator
        • vFTHM
      • Governance
        • TimelockController
    • Deployments
      • XDC Network
    • User Guides
      • Staking
      • Proposing
      • Voting
    • Fathom DAO Smart Contracts
    • Fathom DAO Subgraph
  • Whitepaper
    • Version 1.0
  • Resources
  • FXD Deployments
  • FTHM Deployments
  • Privacy Policy
  • Terms of Service
Powered by GitBook

Copyright© Fathom App 2024.

On this page
  • Structs
  • Storage Variables
  • Set Functions
  • Events

Was this helpful?

Export as PDF
  1. DAO
  2. Interfaces

Governance

https://github.com/Into-the-Fathom/fathom-dao-smart-contracts/blob/master/contracts/dao/governance/MainTokenGovernor.sol

The MainTokenGovernor is an advanced governance contract integrates multiple functionalities including proposal management, token governance, timelock control, and emergency stops. It extends several OpenZeppelin contracts to create a robust governance framework.

Structs

ProposalCore

  • voteStart (Timers.BlockNumber): The block number marking the start of the voting period.

  • voteEnd (Timers.BlockNumber): The block number marking the end of the voting period.

  • executed (bool): Indicates whether the proposal has been executed.

  • canceled (bool): Indicates whether the proposal has been canceled.

  • expireTimestamp (uint256): A timestamp after which the proposal can no longer be executed.

Storage Variables

isSupportedToken (mapping(address => bool)): Tracks whether a token is supported for operations like relay or recovery.

listOfSupportedTokens (address[]): A dynamic list of all tokens that have been added as supported, allowing for enumeration and iteration through supported tokens.

isConfirmed (mapping(uint256 => bool)): Maps proposal IDs to their confirmation status, indicating whether a proposal has been confirmed by the multisig.

isProposalExecuted (mapping(uint256 => bool)): Maps proposal IDs to a boolean indicating whether they have been executed. Ensures a proposal can't be executed more than once.

Set Functions

relayERC20

  • Arguments:

    • target (address): The address of the token to relay.

    • data (bytes): The data payload for the relay transaction.

  • Description: Allows the governance system to relay ERC20 tokens that might have been sent to the contract by mistake. It ensures only supported tokens can be relayed.

relayNativeToken

  • Arguments:

    • target (address): The address of the recipient or contract.

    • value (uint256): The amount of native tokens (e.g., ETH) to send.

    • data (bytes): The data payload for the relay transaction.

  • Description: Similar to relayERC20 but for native blockchain tokens like ETH, ensuring that any mistakenly sent native tokens can be returned or used in governance operations.

propose

  • Arguments:

    • targets (address[]): Addresses of contracts called under the proposal.

    • values (uint256[]): List of values (in wei) for each call.

    • calldatas (bytes[]): Calldata to be sent to each target.

    • description (string): Human-readable description of the proposal.

  • Returns: uint256 (proposalId)

  • Description: Initiates a new proposal in the governance system.

cancelProposal

  • Arguments:

    • targets (address[])

    • values (uint256[])

    • calldatas (bytes[])

    • descriptionHash (bytes32)

  • Returns: uint256

  • Description: Cancels a proposal, can only be accessed by Multisig.

emergencyStop

  • Description: Halts all contract functions effectively, only callable by Multisig, can also recover and send all supported tokens and native tokens to the multisig's address.

addSupportingToken

  • Arguments:

    • _token (address): Address of the token to add as supported.

  • Description: Adds a token to the list of supported tokens for relay or recovery operations.

removeSupportingToken

  • Arguments:

    • _token (address): Address of the token to remove from supported list.

  • Description: Removes a token from the list of supported tokens, disallowing any future relay or recovery operations for it.

Events

TokenSupported

  • Arguments: None.

  • Description: Emitted when a token is added to the list of supported tokens for relay operations.

TokenUnsupported

  • Arguments: None.

  • Description: Emitted when a token is removed from the list of supported tokens.

ProposalQueued

  • Parameters:

    • proposalId (uint256): ID of the proposal that has been queued.

    • eta (uint256): Estimated time of execution for the proposal.

  • Description: Emitted when a proposal is successfully queued in the timelock to be executed later.

ProposalExecuted

  • Parameters:

    • proposalId (uint256): ID of the proposal that has been executed.

  • Description: Emitted when a proposal is successfully executed.

ConfirmProposal

  • Parameters:

    • signer (address): Address of the signer who confirmed the proposal.

    • proposalId (uint256): ID of the confirmed proposal.

  • Description: Emitted when a proposal is confirmed by a multisig signer.

RevokeConfirmation

  • Parameters:

    • signer (address): Address of the signer who revoked the confirmation.

    • proposalId (uint256): ID of the proposal whose confirmation was revoked.

  • Description: Emitted when the confirmation of a proposal is revoked by a multisig signer.

MaxTargetUpdated

  • Parameters:

    • newMaxTargets (uint256): New maximum number of targets allowed in a proposal.

    • oldMaxTargets (uint256): Old maximum number of targets that was previously allowed.

  • Description: Emitted when the maximum number of targets that can be included in a proposal is updated.

ProposalLifetimeUpdated

  • Parameters:

    • newProposalLifetime (uint256): The new duration (in seconds) that a proposal remains valid.

    • oldProposalLifetime (uint256): The old duration that a proposal was valid.

  • Description: Emitted when the lifespan of proposals is updated.

BlocklistStatusUpdated

  • Parameters:

    • account (address): Address of the account whose blocklist status was updated.

    • isBlocklisted (bool): New blocklist status of the account.

  • Description: Emitted when the blocklist status of an account is updated to either restrict or allow proposal creation by that account.

PreviousvFTHMNextTimelockController

Last updated 11 months ago

Was this helpful?