Governance

Introduction

This guide outlines how to participate in Creek Protocol governance through staking, proposing, and voting mechanisms. The governance system is designed to ensure decentralized decision-making while maintaining protocol security and operational efficiency.

The governance contracts are open-source and permissively licensed, allowing for community review and contribution.

Governance Token

The Creek Protocol governance is powered by the CREEK token, which grants holders the right to propose and vote on protocol changes. CREEK tokens represent voting rights in the protocol's decision-making process.

Proposal Lifecycle

  1. Creation: Proposal submitted by eligible CREEK stakers

  2. Delay Period: 2-day review period before voting begins

  3. Voting Phase: 5-day period for token holders to cast votes

  4. Execution Delay: 2-day timelock before implementation

  5. Execution: Successful proposals implemented on-chain

  6. Expiration: 30-day window for execution before proposal expires

Staking Tokens in Insurance Fund

Overview

Before participating in governance, users must stake their CREEK tokens into the Protocol Insurance Fund. This dual-purpose staking mechanism:

  • Establishes voting power proportional to staked amount

  • Strengthens the protocol's financial backstop against market volatility

  • Aligns governance participants with protocol security

  • Provides additional yield from Insurance Fund operations

Staking in the Insurance Fund demonstrates commitment to both protocol governance and security. Stakers receive voting rights while simultaneously contributing to systemic risk reduction.

How to Stake in Insurance Fund

  1. Stake All Tokens:

    • Use the stakeToInsuranceFund function to deposit all your approved tokens

    • Function: stakeToInsuranceFund(delegate_address)

    • The delegate_address can be your own address or another user's address

  2. Stake Specific Amount:

    • Use the stakeAmountToInsuranceFund function for partial delegation

    • Function: stakeAmountToInsuranceFund(delegate_address, amount)

    • Amount specified in token units with 18 decimals

  3. Unstake Tokens:

    • Use the unstakeFromInsuranceFund function to withdraw tokens

    • Function: unstakeFromInsuranceFund(amount)

    • Note: Unstaking during active votes maintains your voting power until voting concludes

    • Standard 3-day cooldown period applies for withdrawals

Staking Rewards and Risks

  • Rewards: Insurance Fund stakers earn:

    • Base yield from 15% of protocol revenue allocated to Insurance Fund

    • Additional yield from protocol-executed liquidation fees

    • Governance voting rights proportional to staked amount

  • Risks: In extreme market conditions:

    • Up to 20% of staked value may be utilized for system stability

    • Loss distribution occurs pro-rata among stakers

    • Recovery rights apply to any future system surplus

Creating a Proposal

Eligibility Requirements

To create a proposal, you must meet the following criteria:

  • Minimum 50,000 CREEK tokens staked in Insurance Fund

  • Tokens must be staked for at least 3 days prior to proposal submission

Proposal Types

Proposals can target various aspects of the protocol:

  • Parameter modifications (e.g., stability fees, collateralization ratios)

  • Protocol upgrades and technical improvements

  • Treasury and Insurance Fund utilization

  • Integration with external protocols

  • Emergency responses to market conditions

How to Create a Proposal

  1. Propose:

    • Use the propose function to submit actions for execution

    • Function: propose(actions)

    • Actions must be formatted as executable contract calls

  2. Describe:

    • Provide comprehensive proposal details

    • Function: describe(proposal_id, description)

    • Description should include rationale, expected impact, and implementation details

  3. Combined Function:

    • For convenience, use the combined function

    • Function: propose_and_describe(actions, description)

  4. Recommended Process:

    • Draft proposal on Creek forum for community feedback

    • Refine based on community input

    • Submit final on-chain proposal with detailed documentation

Voting on Proposals

Voting Mechanism

Creek implements a simple majority voting system with quorum requirements:

  • Each CREEK token staked in the Insurance Fund equals one vote

  • Votes can be cast as "For" or "Against"

  • Votes are weighted according to the time-weighted average of staked tokens

  • Abstentions are not counted toward quorum

How to Vote

  1. Vote For or Against:

    • Use the vote function to cast your vote

    • Function: vote(proposal_id, for_vote)

    • Parameter for_vote is set to true for "For" and false for "Against"

  2. Check Voting Status:

    • View real-time voting metrics

    • Function: get_proposal_stats(proposal_id)

    • Returns current vote counts, quorum status, and time remaining

Voting Weight Calculation

Voting weight is calculated using a 2-day smoothing period to prevent flash loan attacks:

voting_weight = average(staked_tokens) over voting_weight_smoothing_period

Cancelling a Proposal

Proposers may cancel their proposals before the voting period begins if errors are identified or circumstances change.

How to Cancel a Proposal

  • Use the cancel function as the original proposer

  • Function: cancel(proposal_id)

  • Cancellation is only possible during the delay period

Executing a Proposal

Successful proposals enter an execution phase after passing the vote and timelock period.

Execution Requirements

For a proposal to be eligible for execution:

  • Quorum of at least 2,000,000 CREEK tokens must be reached

  • Simple majority (>50%) of votes must be "For"

  • Execution delay period must have passed

  • Execution must occur within the execution window

How to Execute a Proposal

  • Any address can trigger execution once conditions are met

  • Function: execute(proposal_id, actions)

  • Actions must match those specified in the original proposal

Governance Parameters

The following parameters define Creek's governance process:

  • Proposal Creation Threshold: 50,000 CREEK tokens

  • Voting Start Delay: 2 days (172,800 seconds)

  • Voting Period: 5 days (432,000 seconds)

  • Voting Weight Smoothing Period: 2 days (172,800 seconds)

  • Quorum Requirement: 2,000,000 CREEK tokens (2% of supply)

  • Execution Delay: 2 days (172,800 seconds)

  • Execution Window: 30 days (2,592,000 seconds)

Emergency Governance

For critical security issues or extreme market events, Creek incorporates a tiered emergency response system:

Guardian Multisig

A 5-of-7 multisig can enact temporary emergency measures:

  • Pause specific protocol functions

  • Adjust critical risk parameters

  • Implement emergency oracle fallbacks

  • Duration limited to 72 hours before regular governance confirmation

Recovery Mode

Automatically activated under extreme conditions:

  • System-wide collateralization ratio falls below 150%

  • Gold price drops more than 20% in 24 hours

  • Multiple oracle failures detected

During Recovery Mode:

  • Minting restricted to higher collateralization ratios

  • Liquidation thresholds adjusted

  • Regular governance required to exit Recovery Mode

Governance Roadmap

Creek Protocol follows a progressive decentralization approach:

  1. Initial Phase (Current): Core parameters governed by token holders

  2. Expansion Phase: Governance control over all protocol aspects

  3. Full Decentralization: Complete protocol sovereignty by DAO

This governance structure ensures the Creek Protocol can respond effectively to changing market conditions while maintaining security and community participation in decision-making, while simultaneously strengthening the protocol's financial resilience through the integrated Insurance Fund staking model.

Last updated

Was this helpful?