DeXe Protocol Tech Documentation
  • getting started
    • Architecture Overview
    • Glossary
  • guides
    • Creating DAO
      • Deploying DAO
      • Customizing DAO
        • VotePower
        • ERC721Power
        • ERC721Multiplier
    • Interacting with DAO
      • Deposit/Withdraw
      • Delegations
      • Proposal life cycle
      • Rewards
      • Metagovernance
      • Internal validator proposals
      • Special proposals
        • Distribution proposal
        • Token sale proposal
    • Usage of subgraphs
  • contract interfaces
    • Core contracts
      • IPriceFeed
      • IContractsRegistry
      • ICoreProperties
    • Factory contracts
      • IPoolRegistry
      • IPoolFactory
    • Gov contracts
      • ERC20
        • IERC20Gov
      • ERC721
        • experts
          • IERC721Expert
        • multipliers
          • IAbstractERC721Multiplier
          • IERC721Multiplier
          • IDexeERC721Multiplier
        • powers
          • IERC721Power
      • proposals
        • IProposalValidator
        • IDistributionProposal
        • ITokenSaleProposal
      • settings
        • IGovSettings
      • user-keeper
        • IGovUserKeeper
      • validators
        • IGovValidators
        • IGovValidatorsToken
      • voting
        • IVotePower
      • IGovPool
  • contracts deployments
    • Prod (BSC/ETH)
    • Stage (BSC Testnet/Sepolia)
  • subgraphs deployments
    • Prod (BSC)
    • Prod (ETH)
    • Stage (BSC Testnet)
Powered by GitBook
On this page
  1. guides
  2. Creating DAO
  3. Customizing DAO

ERC721Multiplier

With the exception of the VotePower contract, the ERC721Multiplier does not increase voting power, but rather directly boosts your rewards. The ERC721Multiplier contract allows users to lock and unlock their NFTs, each of which is associated with a specific duration and multiplier, much like a coupon. If a user locks an NFT before claiming rewards, they will receive additional rewards based on the multiplier of the locked NFT.

Not all DAOs follow the same logic for ERC721Multiplier. In the case of DEXE DAO, it employs a custom contract called DexeERC721Multiplier. This implementation reduces the multiplier by 10% each time the token is unlocked. Additionally, it considers the average user balance when calculating extra rewards. You can deploy your own version of ERC721Multiplier by implementing the IAbstractERC721Multiplier interface. Following that, you can create a proposal to change the ERC721Multiplier in the DAO as in the example below.

function setNftMultiplierAddress(IAbstractERC721Multiplier nftMultiplier) external {
    require(
        nftMultiplier.supportsInterface(type(IAbstractERC721Multiplier).interfaceId),
        "Not a ERC721Multiplier"
    );

    IGovPool.ProposalAction[] memory actionsFor = new IGovPool.ProposalAction[](1);
    actionsFor[0] = IGovPool.ProposalAction({
        executor: address(govPool),
        value: 0,
        data: abi.encodeWithSelector(IGovPool.setNftMultiplierAddress.selector, nftMultiplier)
    });

    IGovPool.ProposalAction[] memory actionsAgainst = new IGovPool.ProposalAction[](0);

    govPool.createProposal("Set ERC721Multiplier", actionsFor, actionsAgainst);
}