DAO operators and governance engineers · ships in half a day

How to gate DAO voting by reputation

Your governance is captured by whoever can split tokens across the most wallets.

The problem

One-token-one-vote rewards capital; one-wallet-one-vote rewards wallet factories. Quadratic voting only works if you can tell humans apart first, which is exactly the missing primitive.

Step by step

  1. 1. Fetch reputation at snapshot time

    Score every voter at the proposal snapshot block so nobody can farm reputation mid-vote.

    const rep = await tl.verify({ address: voter, epoch: proposal.snapshotEpoch });
  2. 2. Blend weight

    A common shape: sqrt(tokens) multiplied by a reputation factor between 0 and 1.

    const weight = Math.sqrt(tokenBalance) * Math.min(1, rep.trust_score / 60);
  3. 3. Enforce a floor

    Set a hard minimum for proposal creation, which is where spam hurts most.

    require(registry.scoreOf(msg.sender) >= 50, "not enough reputation to propose");

Share the proof

Once you are live, show it. This badge stays up to date on its own and links visitors back to the verifiable profile behind the score.

<a href="https://trstlyr.com/u/your-handle">
  <img src="https://trstlyr.com/badge/your-handle.svg" alt="Verified on TrustLayer" height="28" />
</a>

Frequently asked questions

Next recipes

All 6 recipes are on the API recipes index.