Skip to content
This repository was archived by the owner on Aug 22, 2025. It is now read-only.
This repository was archived by the owner on Aug 22, 2025. It is now read-only.

New Voting Strategy: Weighted Historical Token Holding #1324

@mshakeg

Description

@mshakeg

Description:

Summary:
I propose a new voting strategy for Snapshot that determines the weight of an account based on its ERC20 token balance over a given period. This approach aims to reward and recognize long-term token holders and create incentives for users to maintain consistent token balances over time.

Motivation:
Many projects value long-term holders and supporters, seeing them as core pillars of their communities. A voting strategy that considers not just the current token balance but also the historical holding pattern can be a game-changer for DAOs and projects that want to give voice to these consistent supporters.

Technical Specification:

  1. Period Definition: Define a start and end block number for the period of interest.
  2. Token Activity Points Identification: Detect all blocks where a Transfer, Mint, or Burn event occurred for the ERC20 token within the timeframe.
  3. Weight Calculation Over Static Periods: For each static period between two consecutive activity points, compute:
    weight_{period} = balance_{start_of_period} * delta_time_{period}
  4. Summation: Aggregate all the weight_{period} values to get the total weight for the account over the timeframe.
  5. Proportional Weighting:

The core idea is to determine the "token-time" for an account. Think of "token-time" as the product of the number of tokens held and the duration for which they're held. For instance, if you hold 100 tokens for 10 days, that results in 1,000 token-days.

Steps:

  1. Calculate Account's Token-Time Weight:

    • For each static period between two consecutive activity points, compute the token-time:
      token_time_for_period = balance_at_start_of_period * duration_of_period
    • Sum all the token_time_for_period values for the account to determine its total token-time weight over the entire timeframe:
      total_token_time_account = SUM(token_time_for_period over all periods)
  2. Calculate Total Token-Time Weight for All Addresses:

    • For each static period, calculate the total token-time for all token holders:
      token_time_total_for_period = total_supply_at_start_of_period * duration_of_period
    • Sum the token_time_total_for_period values across all periods to get the overall token-time weight for the entire supply over the timeframe:
      total_token_time_all = SUM(token_time_total_for_period over all periods)
  3. Determine Account's Proportional Weight:

    • With the token-time weight of the account and the total token-time weight known, the account's proportional weight can be calculated as:
      proportion = total_token_time_account / total_token_time_all
    • This proportion represents the fraction of the total token-time weight attributed to the specific account over the timeframe.

Illustrative Example:

Let's use a simple example:

  • During period 1: Account A holds 100 tokens for 10 days, resulting in 1,000 token-days. The total supply held by all addresses results in 10,000 token-days.
  • During period 2: Account A holds 150 tokens for 5 days, resulting in 750 token-days. The total supply held by all addresses results in 6,000 token-days.

The account's total token-time weight is 1,750 token-days, while the total token-time weight for all tokens is 16,000 token-days. Therefore, the account's proportional weight is 1,750 divided by 16,000, or 10.9375%.

Benefits:

  1. Incentivizes Long-Term Holding: This strategy can act as a natural incentive for community members to hold tokens over longer periods.
  2. Fair Representation: It ensures that the influence in voting isn't just limited to large token holders at a given moment, but also considers the commitment over time.
  3. Flexibility: Projects can choose their look-back period based on their community's preference, ensuring adaptability.

Concerns & Mitigations:

  1. Efficiency: Processing events over an extended period could be resource-intensive. However, by considering only periods between activity points (Transfer, Mint, Burn events), we reduce computational overhead.
  2. Security: Care must be taken to ensure the strategy doesn't introduce potential vulnerabilities. Thorough testing and community reviews can mitigate this.

Integration with Snapshot:
This strategy can be integrated as an optional feature for DAOs and projects. They can select this alongside or in place of the standard ERC20 balance-based strategies depending on their community's preference.

Conclusion:
A voting strategy that considers historical token holdings can offer a unique and fair approach to DAO decision-making. By recognizing the commitment of long-term holders, we can foster stronger community alignment and engagement.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions