PsyFi Documentation
  • Welcome to PsyFi
    • Why use PsyFi?
    • PsyFi Product Suite
    • PsyVaults - Vaults Product
      • πŸ—οΈCovered Calls & Secured Puts Vaults Architecture
      • πŸ“ΆLeveraged Strategy Vaults (Call Spreads & Put Spreads) - Currently Paused
      • πŸ’ΉMarket Making Vaults - Currently Paused
      • πŸ“šPsyVaults Resources
        • PsyFi Vault Contracts
      • πŸ‘©β€πŸ«PsyVaults Tutorials
        • πŸ’΅Weekly Bidding on V2 Vaults
        • πŸ’°PsyVault Rewards
          • Auto-Deposit into PsyLend to Earn Rewards
          • Understanding Staking Rewards
          • Boosting your Staking Rewards
      • ❓PsyVaults FAQs
    • PsyLend - Structured Products Lending
      • πŸ‘©β€πŸŽ“Tutorials - Supplying & Borrowing
      • 🎰Supply & Interest Rate Calculations
      • πŸ…ΏοΈLending Parameters
      • βš’οΈLiquidations
      • πŸ’°Rewards
      • ⚑Fees
      • *️Risks & Insurance Fund
      • PsyLend FAQs
      • PsyLend Glossary
  • PsyFi DAO Audits
    • Audits
  • Build with PsyFi
    • Options Protocol
      • American Style Options
      • Tokenized European Style Options
      • Under-Collateralized European Style Options
      • PsyOptions FAQ
    • Fusion - Airdropping Options - Deprecated
      • πŸ‘©β€πŸ«Fusion Tutorials
        • Users: Option Rewards and What You Can Do With Them
        • Users: Claiming Airdrops Through Fusion
    • Developers
      • Program Integration
      • Client Integration
        • Namespace: instructions
        • Namespace: serumInstructions
        • Namespace: serum utils
        • Enumeration: ClusterName
        • Enumeration: ProgramVersions
        • Class: Validation
      • PsyFi DAO Contributor Support
    • Designers
      • Logos
      • Fonts
  • Options Education
    • Styles of Options
    • Calls & Puts
    • Option Strategies
    • Glossary
  • PSY Token & DAO
    • PSY Tokenomics
      • PSY Token Unlock Schedule
    • Governance Infrastructure & Tokenomics
    • Governance Parameters
    • PSY 2.0: PSY Stake and DeMux Overview [RFC]
    • Governance Tutorials
      • Governance Overview & Walkthrough
      • Initializing a Proposal Using Poseidon [RFC]
      • PsyOptions Protocol Governance Actions
      • Voter Stake Registry Set Up
        • How to Lock Your Own Tokens
        • How to Propose Issuing Locked Tokens
        • How to Propose Clawing Back Granted Tokens
      • PSY 2.0 - How to Stake Your PSY to Start Participating in PSY 2.0 Governance
      • PSY 2.0 - How to Claim Rewards For Staked PSY
      • PSY 2.0 - How to Setup a RewardPool
      • PSY 2.0 - How to perform DeMuX Actions on Reward Pools [RFC]
      • PSY 2.0 - How to view tokens that are sent to DeMux [RFC]
    • Governance FAQ
      • πŸ›PSY DAO Bug Bounty
    • Poseidon [RFC]
    • PsyFi DAO Contributors
Powered by GitBook
On this page
  • Setting up VSR for Your DAO
  • ConfigureVotingMint Parameters
  1. PSY Token & DAO
  2. Governance Tutorials

Voter Stake Registry Set Up

PreviousPsyOptions Protocol Governance ActionsNextHow to Lock Your Own Tokens

Last updated 1 year ago

By setting up Voter Stake Registry for your DAO in , you can allow contributors, investors, and advisors to participate in Governance while their tokens are vesting. This helps keep everyone aligned, and active in the DAO while ensuring that all actions are verifiable on chain!

Additionally, as one example, you can easily issue vested tokens to Protocol Ambassadors without worrying that they will quickly abandon the project! This can be accomplished with the Clawback functionality which we will cover on this page.

Setting up VSR for Your DAO

Deploy your own instance of the Voter Stake Registry to the DAO. Deploying your own is safest because it cannot be upgrade by some other authority, whether that authority is a person or another DAO.

Note: This step is optional, but is the safest route to go!

Create a Registrar by passing in the governance program ID, and the community token mint. Registrars are uniquely constrained (via PDA usage) by those two parameters.

Using the SPL Governance UI today will default to the Voter Stake Registry to the Mango DO. Using protocols controlled by others can open the DO to risks as their alignment with yours may differ in the future. This is a concern for any protocol holding tokens for an extended period of time. For example, the Mango token holders could collude to upgrade the protocol with an instruction that sucks all the tokens out of other vesting/locked contracts.

Use ConfigureVotingMint to add a token to the Registrar and set it’s vote weight. This instruction is where a lot of magic happens and needs to be carefully paid attention to!

Consider this - Should the vote weight be relative to the community token that is tied to the Registrar?

Dev Note: Remaining accounts must be all the token mints that have registered as voting mints, including the newly registered one.

ConfigureVotingMint Parameters

  • idx: index of the rate to be set. There is an array of VotingMintConfigs, and the idx references the index that the corresponding config is or should be placed. When adding a new one it should be the next index.

  • digit_shift: The amount of digits to shift the native token amount.

  • baseline_vote_weight_scaled_factor: vote weight factor for all funds in vault, in 1/1e9 units. So 1e9 means 1!

  • max_extra_lockup_vote_weight_scaled_factor: max extra weight for lockups, in 1/1e9 units. So 1e9 means no matter how long a lock up period is the voting weight can never exceed this factor.

  • lockup_saturation_secs: lockup duration at which the full vote weight bonus is given to locked up deposits. This is a factor that dampens the lock up vote power boost until this has passed. If this max boost power is 1e9 (factoring in the scale factor it's 1), then this value does not matter.

  • grant_authority: The authority that can grant the additional vote weight. This should be a governance authority.

Note: voting_power = baseline_vote_weight + min(lockup_time_remaining / lockup_saturation_secs, 1) * max_extra_lockup_vote_weight

Enable the voter weight plugin by calling the SetRealmConfig instruction on the SPL Governance program used.

Note: use the Realm Config proposal, and put the voter stake registry program ID as the community vote plugin.

Realms