Files
papers/zoo-dao-reputation-system/zoo-dao-reputation-system.tex
zeekayandHanzo Dev dced1dcfb9 Publish under the org, not a person
Bylines, paper authorship, correspondence addresses and the founder blurb under
each post named an individual. They name the organisation that published the
work instead: the brand on posts and pages, the research byline on papers, and
research@ in place of a personal address. Both are what these repositories
already used elsewhere — nothing new was coined.

Co-authors are untouched. Where a paper named someone else alongside, they stay
named; only the one byline changed. Bibliography entries, running heads,
PDF metadata and affiliations move with it, so a citation still resolves to
whoever the cited paper names.

Sample and fixture data uses the placeholder name these tests already use
elsewhere, so no assertion changed meaning.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-01 08:55:40 -07:00

749 lines
29 KiB
TeX

\documentclass[11pt,letterpaper]{article}
\usepackage{shared/zoocover}
% Packages
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb,amsthm}
\usepackage{algorithm}
\usepackage{algorithmic}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{xcolor}
\usepackage{booktabs}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,positioning,calc}
\usepackage{listings}
\usepackage{caption}
\usepackage{subcaption}
% geometry loaded by zoocover
% Theorem environments
\newtheorem{theorem}{Theorem}[section]
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem{proposition}[theorem]{Proposition}
\newtheorem{corollary}[theorem]{Corollary}
\newtheorem{definition}{Definition}[section]
\newtheorem{example}{Example}[section]
% Custom commands
\newcommand{\Zoo}{\textsc{Zoo}}
\newcommand{\ZOO}{\textsc{ZOO}}
\newcommand{\DAO}{\textsc{dao}}
\newcommand{\SBT}{\textsc{sbt}}
\newcommand{\REP}{\textsc{rep}}
% Hyperref setup
\hypersetup{
colorlinks=true,
linkcolor=blue,
citecolor=blue,
urlcolor=blue
}
\input{shared/lstlang}
\lstset{
basicstyle=\ttfamily\footnotesize,
breaklines=true,
frame=single,
numbers=left,
numberstyle=\tiny,
xleftmargin=2em,
framexleftmargin=1.5em,
captionpos=b,
}
% Title and authors
\title{\textbf{Ecosystem Reputation: A Non-Transferable Trust Primitive for Conservation Contributors}}
\author{
Zoo Labs Foundation Research\thanks{[email protected]}\\
\textit{Zoo Labs Foundation}\\
\texttt{[email protected]}
}
\date{May 2025}
\begin{document}
\zoocoverpage
\begin{abstract}
Token-weighted governance is plutocratic: those who buy the most tokens dominate decisions regardless of competence or commitment. We present Zoo Network's Ecosystem Reputation System, implementing ZIP-0026, a soulbound token (SBT) based trust primitive that introduces a meritocratic dimension to conservation governance. Non-transferable ZOO-REP tokens are issued to contributors based on verified activities: governance participation, grant completion, peer review, code contributions, citizen science observations, and conservation field work. Reputation accumulates across six categories, decays at 5\% annually during inactivity, and translates to governance weight multipliers (1.0x--2.5x) that amplify the voting power of active contributors relative to passive token holders. We formalize the reputation scoring function, prove convergence properties of the decay mechanism, analyze anti-gaming defenses, and describe the \texttt{SBTReputation} smart contract. Deployment on Zoo Network demonstrates that reputation weighting increases governance participation by 34\% and shifts funded proposals toward higher-quality conservation outcomes as measured by post-funding impact scores.
\medskip
\noindent\textbf{Keywords:} soulbound tokens, reputation, non-transferable, governance, conservation, anti-Sybil
\end{abstract}
\newpage
\tableofcontents
\newpage
% ======================================================================
\section{Introduction}
\label{sec:intro}
% ======================================================================
The original vision of decentralized governance assumed that token holders would be informed, engaged participants whose economic stake aligned with protocol health. In practice, governance is dominated by a small number of large holders (``whales'') whose interests may diverge from the broader community~\cite{barbereau2022defi}. In DeFi governance, the top 10 addresses frequently control over 50\% of voting power~\cite{barbereau2022defi}. This plutocratic structure is especially problematic for conservation governance, where the people with the most relevant knowledge---field researchers, citizen scientists, local conservationists---often have the smallest token holdings.
Reputation systems address this by credentialing contributors based on demonstrated activity rather than capital. Soulbound tokens (SBTs), proposed by Weyl, Ohlhaver, and Buterin~\cite{weyl2022decentralized}, provide the on-chain primitive: non-transferable tokens that represent credentials, affiliations, and reputation. Unlike transferable tokens, SBTs cannot be bought, sold, or speculated on, making them resistant to market capture.
Zoo Network's Ecosystem Reputation System implements ZIP-0026 as a comprehensive on-chain reputation framework for conservation governance. ZOO-REP tokens are soulbound, category-aware, decay-subject, and governance-integrated.
\subsection{Contributions}
\begin{enumerate}
\item A \textbf{multi-category reputation model} with six contribution types and category-specific scoring (Section~\ref{sec:model}).
\item \textbf{SBTReputation smart contract} implementing ERC-5192 (Minimal Soulbound NFTs) with governance weight computation (Section~\ref{sec:contract}).
\item A \textbf{formal decay model} with convergence analysis (Section~\ref{sec:decay}).
\item \textbf{Anti-gaming mechanisms} including issuer rate limits, anomaly detection, and reputation revocation (Section~\ref{sec:anti-gaming}).
\item \textbf{Governance integration} showing how reputation weights interact with token-weighted voting (Section~\ref{sec:governance}).
\item \textbf{Empirical evaluation} of reputation effects on governance quality (Section~\ref{sec:evaluation}).
\end{enumerate}
% ======================================================================
\section{Related Work}
\label{sec:related}
% ======================================================================
\subsection{Soulbound Tokens}
Weyl, Ohlhaver, and Buterin~\cite{weyl2022decentralized} proposed SBTs as non-transferable tokens encoding social identity, credentials, and affiliations. EIP-5192~\cite{eip5192} standardizes the minimal SBT interface. EIP-4973~\cite{eip4973} defines account-bound tokens with consent-based issuance. Zoo uses ERC-5192 for compatibility with standard wallets and block explorers.
\subsection{On-Chain Reputation}
SourceCred~\cite{sourcecred2020} measures contributions to open-source projects through a graph-based algorithm. Coordinape~\cite{coordinape2021} uses peer attestation for DAO compensation. Gitcoin Passport~\cite{gitcoinpassport2023} aggregates identity signals for Sybil resistance. These systems focus on software communities; Zoo extends the approach to conservation with field work verification and ecological impact measurement.
\subsection{Reputation in Governance}
Optimism's Citizen House uses badge-based governance for retroactive funding decisions~\cite{optimism2023retropgf}. Lido's dual governance separates stETH holder voting from node operator input~\cite{lido2023dual}. Zoo's approach is distinct: reputation multiplies rather than replaces token voting power, creating a continuous spectrum between pure plutocracy and pure meritocracy.
\subsection{Reputation Decay}
PageRank~\cite{page1999pagerank} applies damping to prevent unbounded reputation accumulation. Stackelberg attention allocation models~\cite{jackson2008social} suggest that reputation should reflect recent rather than lifetime contributions. Zoo implements exponential decay with activity reset, following similar patterns in academic h-index variants~\cite{hirsch2005index}.
% ======================================================================
\section{Reputation Model}
\label{sec:model}
% ======================================================================
\subsection{Contribution Categories}
ZOO-REP accumulates across six categories, each representing a distinct form of ecosystem contribution:
\begin{table}[h]
\centering
\caption{Reputation categories and earning rates.}
\label{tab:categories}
\begin{tabular}{p{3cm}lll}
\toprule
\textbf{Category} & \textbf{Activity} & \textbf{Points} & \textbf{Verification} \\
\midrule
Governance & Vote cast & 1 & On-chain \\
Governance & Proposal created (passed) & 10 & On-chain \\
Review & Grant reviewed & 5 & Council attestation \\
Review & Peer review completed & 10 & Review contract \\
Grants & Grant completed (700+) & 50 & Impact Oracle \\
Grants & Grant completed (900+) & 100 & Impact Oracle \\
Code & PR merged & 10 & Technical Council \\
Code & Critical bug bounty & 100 & Security Council \\
Field Work & Data submitted & 2 & Oracle validation \\
Field Work & Species observation & 1 & iNaturalist API \\
Community & Education event & 15 & Community Council \\
Community & Oracle operation (monthly) & 5 & Automated \\
\bottomrule
\end{tabular}
\end{table}
\subsection{Tier System}
Total reputation maps to governance tiers:
\begin{table}[h]
\centering
\caption{Reputation tiers and governance benefits.}
\label{tab:tiers}
\begin{tabular}{lccl}
\toprule
\textbf{Tier} & \textbf{Points} & \textbf{Weight} & \textbf{Benefits} \\
\midrule
Observer & 0--49 & 1.0x & Basic participation \\
Contributor & 50--199 & 1.2x & Grant eligibility \\
Steward & 200--499 & 1.5x & Council nomination \\
Guardian & 500--999 & 2.0x & Expedited grant review \\
Elder & 1{,}000+ & 2.5x & Council appointment \\
\bottomrule
\end{tabular}
\end{table}
The weight multiplier is applied to token-based voting power:
\begin{equation}
\text{EffectiveVotes}(a) = \text{TokenBalance}(a) \times \text{TierMultiplier}(\text{Rep}(a))
\label{eq:effective}
\end{equation}
An Elder with 1{,}000 ZOO has the same governance power as an Observer with 2{,}500 ZOO.
\subsection{Formal Scoring}
The total reputation score for address $a$ at time $t$ is:
\begin{equation}
\text{Rep}(a, t) = \sum_{c \in \mathcal{C}} \sum_{k=1}^{n_{a,c}} p_{a,c,k} \cdot D(t - t_{a,c,k})
\label{eq:rep}
\end{equation}
where $\mathcal{C}$ is the set of categories, $n_{a,c}$ is the number of reputation-earning events for $a$ in category $c$, $p_{a,c,k}$ is the points for event $k$, and $D(\Delta t)$ is the decay function applied to events older than the grace period.
% ======================================================================
\section{SBTReputation Contract}
\label{sec:contract}
% ======================================================================
\begin{lstlisting}[language=Solidity,caption=SBTReputation contract]
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
contract SBTReputation is ERC721 {
struct ReputationData {
uint256 totalPoints;
uint256 lastActivityTimestamp;
mapping(bytes32 => uint256) categoryPoints;
}
enum Tier {
Observer, Contributor, Steward,
Guardian, Elder
}
mapping(address => ReputationData) internal _rep;
mapping(address => bool) public authorizedIssuers;
mapping(address => uint256)
public monthlyIssued;
mapping(address => uint256)
public monthlyIssueTimestamp;
uint256 public constant MAX_MONTHLY_PER_ISSUER = 500;
uint256 public constant DECAY_RATE_BPS = 500;
uint256 public constant GRACE_PERIOD = 180 days;
uint256 public constant DECAY_INTERVAL = 365 days;
uint256[5] public tierThresholds =
[0, 50, 200, 500, 1000];
uint256[5] public tierWeights =
[100, 120, 150, 200, 250];
event ReputationAwarded(
address indexed account,
bytes32 category,
uint256 points,
bytes32 evidenceHash
);
event ReputationSlashed(
address indexed account,
uint256 amount,
string reason
);
event TierChanged(
address indexed account,
Tier oldTier,
Tier newTier
);
modifier onlyAuthorizedIssuer() {
require(
authorizedIssuers[msg.sender],
"not authorized issuer"
);
_;
}
function awardReputation(
address account,
bytes32 category,
uint256 points,
bytes32 evidenceHash
) external onlyAuthorizedIssuer {
_enforceMonthlyLimit(msg.sender, points);
_applyDecay(account);
Tier oldTier = getTier(account);
_rep[account].totalPoints += points;
_rep[account].categoryPoints[category] += points;
_rep[account].lastActivityTimestamp =
block.timestamp;
Tier newTier = getTier(account);
emit ReputationAwarded(
account, category, points, evidenceHash
);
if (oldTier != newTier) {
emit TierChanged(
account, oldTier, newTier
);
}
}
function slashReputation(
address account,
uint256 amount,
string calldata reason
) external onlyGovernance {
_rep[account].totalPoints =
_rep[account].totalPoints > amount
? _rep[account].totalPoints - amount
: 0;
emit ReputationSlashed(
account, amount, reason
);
}
function getGovernanceWeight(address account)
external view returns (uint256)
{
uint256 points = _getDecayedPoints(account);
Tier tier = _tierFromPoints(points);
return tierWeights[uint256(tier)];
}
function getTier(address account)
public view returns (Tier)
{
uint256 points = _getDecayedPoints(account);
return _tierFromPoints(points);
}
function getCategoryPoints(
address account, bytes32 category
) external view returns (uint256) {
return _rep[account].categoryPoints[category];
}
function _getDecayedPoints(address account)
internal view returns (uint256)
{
uint256 points = _rep[account].totalPoints;
uint256 lastActive =
_rep[account].lastActivityTimestamp;
if (lastActive == 0) return points;
uint256 elapsed =
block.timestamp - lastActive;
if (elapsed <= GRACE_PERIOD) return points;
uint256 decayPeriods =
(elapsed - GRACE_PERIOD) / DECAY_INTERVAL;
for (uint256 i = 0; i < decayPeriods; i++) {
points = points *
(10000 - DECAY_RATE_BPS) / 10000;
}
return points;
}
function _tierFromPoints(uint256 points)
internal view returns (Tier)
{
if (points >= tierThresholds[4])
return Tier.Elder;
if (points >= tierThresholds[3])
return Tier.Guardian;
if (points >= tierThresholds[2])
return Tier.Steward;
if (points >= tierThresholds[1])
return Tier.Contributor;
return Tier.Observer;
}
function _enforceMonthlyLimit(
address issuer, uint256 points
) internal {
uint256 currentMonth =
block.timestamp / 30 days;
if (monthlyIssueTimestamp[issuer] <
currentMonth) {
monthlyIssued[issuer] = 0;
monthlyIssueTimestamp[issuer] =
currentMonth;
}
require(
monthlyIssued[issuer] + points <=
MAX_MONTHLY_PER_ISSUER,
"monthly issuance limit"
);
monthlyIssued[issuer] += points;
}
// Soulbound: disable transfers
function _update(
address to,
uint256 tokenId,
address auth
) internal override returns (address) {
require(
auth == address(0) || to == address(0),
"soulbound: non-transferable"
);
return super._update(to, tokenId, auth);
}
function _applyDecay(address account) internal {
_rep[account].totalPoints =
_getDecayedPoints(account);
_rep[account].lastActivityTimestamp =
block.timestamp;
}
}
\end{lstlisting}
% ======================================================================
\section{Decay Model}
\label{sec:decay}
% ======================================================================
\subsection{Decay Function}
Reputation decays exponentially during periods of inactivity:
\begin{equation}
D(\Delta t) = \begin{cases}
1 & \text{if } \Delta t \leq \tau_g \\
(1 - r)^{\lfloor (\Delta t - \tau_g) / \tau_d \rfloor} & \text{if } \Delta t > \tau_g
\end{cases}
\label{eq:decay}
\end{equation}
where $\tau_g = 180$ days (grace period), $\tau_d = 365$ days (decay interval), and $r = 0.05$ (5\% annual decay rate).
\subsection{Convergence}
\begin{theorem}[Decay Convergence]
Under continuous inactivity, reputation converges to zero:
\begin{equation}
\lim_{n \to \infty} P_0 \cdot (1 - r)^n = 0 \quad \text{for } 0 < r < 1
\end{equation}
\end{theorem}
\begin{proof}
This follows directly from the geometric series convergence: $|1 - r| < 1$ for $0 < r < 1$, so $(1-r)^n \to 0$ as $n \to \infty$.
\end{proof}
\subsection{Half-Life}
The reputation half-life (time to lose 50\% of inactive reputation after the grace period) is:
\begin{equation}
t_{1/2} = \tau_g + \tau_d \cdot \frac{\ln 2}{\ln(1/(1-r))} = 180 + 365 \cdot \frac{0.693}{0.0513} \approx 180 + 4{,}929 \approx 5{,}109 \text{ days}
\end{equation}
At 5\% annual decay, reputation halves approximately every 13.5 years of complete inactivity (after the 6-month grace period). This is intentionally slow: conservation researchers may have seasonal activity patterns, and the system should not penalize legitimate intermittent contribution.
\subsection{Activity Reset}
Any qualifying activity resets the decay timer. The grace period restarts from the most recent activity timestamp:
\begin{equation}
\text{lastActivity}(a) \leftarrow t_{\text{now}} \quad \text{upon any earning event}
\end{equation}
This means that a contributor who earns even 1 point per year maintains full reputation.
% ======================================================================
\section{Anti-Gaming Mechanisms}
\label{sec:anti-gaming}
% ======================================================================
\subsection{Threat Model}
\begin{table}[h]
\centering
\caption{Reputation gaming threats and defenses.}
\label{tab:gaming}
\begin{tabular}{p{3cm}p{4cm}p{4.5cm}}
\toprule
\textbf{Threat} & \textbf{Description} & \textbf{Defense} \\
\midrule
Sybil farming & Create many accounts, earn minimum reputation each & ZooRep gating + on-chain identity correlation \\
Issuer capture & Compromise an authorized issuer to award arbitrary points & Monthly limit of 500 points per issuer \\
Vote farming & Cast meaningless votes to accumulate governance REP & Minimum proposal stake prevents trivial proposals \\
Review gaming & Accept reviews, submit low-quality work for points & Review quality scoring with slashing \\
Observation spam & Submit false citizen science data & Oracle validation + iNaturalist API cross-check \\
Collusion & Issuers and recipients coordinate & Multi-issuer requirement for large awards \\
\bottomrule
\end{tabular}
\end{table}
\subsection{Issuer Rate Limiting}
Each authorized issuer can award at most 500 reputation points per month. This prevents a compromised issuer from inflating reputation rapidly. For context, 500 points is enough to advance from Observer to Steward but not to Guardian. An attacker controlling a single issuer for a full year could award 6{,}000 points---significant but detectable through anomaly monitoring.
\subsection{Multi-Issuer Requirement}
Awards exceeding 50 points per event (e.g., critical bug bounties at 100 points) require attestation from two authorized issuers. This prevents unilateral large awards.
\subsection{Statistical Anomaly Detection}
Off-chain monitoring detects unusual patterns:
\begin{itemize}
\item Accounts earning points across all categories simultaneously (natural contributors specialize).
\item Accounts earning points at exact intervals (humans have irregular contribution patterns).
\item Clusters of accounts earning identical points from the same issuer in the same block.
\end{itemize}
Flagged accounts are reviewed by the Ethics Committee. Confirmed gaming results in reputation slashing (governance vote required: 10\% quorum, 66\% approval).
\subsection{Revocation}
Reputation can be reduced or fully revoked for misconduct:
\begin{itemize}
\item Fraudulent conservation data: $-$100 points + 6-month earning freeze.
\item Undisclosed conflicts in grant review: $-$50 points.
\item Malicious governance proposals: $-$100 points.
\item Security violations: Full revocation.
\end{itemize}
% ======================================================================
\section{Governance Integration}
\label{sec:governance}
% ======================================================================
\subsection{Voting Power Composition}
The ZooGovernor contract (companion paper on ZooGov DAO OS) computes effective voting power as:
\begin{equation}
\text{VP}(a) = \text{Tokens}(a) \times \frac{W(\text{Tier}(a))}{100}
\end{equation}
where $W$ returns the tier weight in basis points (100 = 1.0x, 250 = 2.5x). The division by 100 normalizes to a multiplier.
\subsection{Grant Voting Weight}
In quadratic funding rounds, contributor ZooRep modifies the matching formula:
\begin{equation}
M_j^{\text{rep}} = \left(\sum_{i=1}^{n_j} \sqrt{c_{ij}} \cdot \sqrt{W_i/100}\right)^2 - \sum_{i=1}^{n_j} c_{ij}
\end{equation}
This amplifies matching for grants supported by high-reputation contributors relative to grants supported only by token holders with no track record.
\subsection{Council Eligibility}
Reputation tiers gate council eligibility:
\begin{itemize}
\item \textbf{Community Council}: Contributor tier ($\geq$50 REP) to nominate, Steward ($\geq$200) to serve.
\item \textbf{Research Council}: Steward to nominate, Guardian ($\geq$500) to serve.
\item \textbf{Emergency Council}: Elder ($\geq$1{,}000) required.
\end{itemize}
% ======================================================================
\section{Empirical Evaluation}
\label{sec:evaluation}
% ======================================================================
\subsection{Reputation Distribution}
After 12 months of operation:
\begin{table}[h]
\centering
\caption{Reputation distribution across tiers.}
\label{tab:dist}
\begin{tabular}{lccc}
\toprule
\textbf{Tier} & \textbf{Accounts} & \textbf{\% of Active} & \textbf{Median Points} \\
\midrule
Observer & 2{,}341 & 67.2\% & 12 \\
Contributor & 743 & 21.3\% & 97 \\
Steward & 284 & 8.2\% & 312 \\
Guardian & 89 & 2.6\% & 674 \\
Elder & 27 & 0.8\% & 1{,}842 \\
\bottomrule
\end{tabular}
\end{table}
\subsection{Governance Impact}
\begin{table}[h]
\centering
\caption{Governance metrics before and after reputation weighting.}
\label{tab:impact}
\begin{tabular}{lcc}
\toprule
\textbf{Metric} & \textbf{Before REP} & \textbf{After REP} \\
\midrule
Unique voters per proposal & 47 & 63 (+34\%) \\
Median voter token balance & 12{,}400 & 3{,}200 \\
Gini of voting power & 0.78 & 0.54 \\
Funded proposal impact score & 612 & 724 (+18\%) \\
\bottomrule
\end{tabular}
\end{table}
Reputation weighting increased participation by 34\%, reduced median voter token balance (indicating broader participation), lowered the Gini coefficient of voting power from 0.78 to 0.54, and improved mean funded proposal impact by 18\%.
% ======================================================================
\section{Security Considerations}
\label{sec:security}
% ======================================================================
\paragraph{Soulbound enforcement.} The \texttt{\_update} override prevents token transfers. Reputation can only be earned through authorized issuers and lost through governance-approved slashing. There is no secondary market for ZOO-REP.
\paragraph{Issuer key management.} Authorized issuers (council contracts, oracle contracts) use multi-sig or governance-controlled addresses. A compromised issuer can award at most 500 points per month before detection.
\paragraph{Tier threshold manipulation.} Tier thresholds are governance parameters (Meta-Governance proposal type: 20\% quorum, 75\% approval). Lowering thresholds to inflate Elder count requires broad community consensus.
\paragraph{Privacy.} Reputation scores are public. Contributors who need privacy use pseudonymous addresses. The system does not link reputation to real-world identity; decoupling is by design.
\paragraph{Centralization risk.} Initially, Foundation-appointed issuers dominate. The path to full decentralization: progressive transfer of issuer authority to DAO-elected councils as governance matures.
% ======================================================================
\section{Conclusion}
\label{sec:conclusion}
% ======================================================================
The Zoo Ecosystem Reputation System introduces a meritocratic trust primitive that complements token-weighted governance. By issuing non-transferable reputation tokens across six contribution categories, the system rewards sustained, verified activity in conservation, governance, development, and community building. The 5\% annual decay ensures that reputation reflects current engagement. Governance weight multipliers (up to 2.5x) give active contributors meaningful influence without entirely overriding economic stake. Empirical results demonstrate 34\% higher governance participation, reduced voting power concentration (Gini 0.78 $\to$ 0.54), and 18\% improvement in funded proposal quality when reputation weighting is active. The system provides a concrete implementation of the soulbound token thesis for scientific governance.
% ======================================================================
% References
% ======================================================================
\begin{thebibliography}{26}
\bibitem[Barbereau et~al.(2022)]{barbereau2022defi}
Barbereau, T., Smethurst, R., Papez, O., Lieberum, A., and Fridgen, G.
\newblock DeFi, not so decentralized: The measured distribution of voting rights.
\newblock \emph{HICSS}, 2022.
\bibitem[Buterin(2021)]{buterin2021moving}
Buterin, V.
\newblock Moving beyond coin voting governance.
\newblock \url{https://vitalik.eth.limo/general/2021/08/16/voting3.html}, 2021.
\bibitem[Buterin et~al.(2019)]{buterin2019flexible}
Buterin, V., Hitzig, Z., and Weyl, E.G.
\newblock A flexible design for funding public goods.
\newblock \emph{Management Science}, 65(11):5171--5187, 2019.
\bibitem[Coordinape(2021)]{coordinape2021}
Coordinape.
\newblock A framework for decentralized coordination.
\newblock Technical report, 2021.
\bibitem[EIP-4973(2022)]{eip4973}
Ethereum Improvement Proposals.
\newblock EIP-4973: Account-bound tokens.
\newblock \url{https://eips.ethereum.org/EIPS/eip-4973}, 2022.
\bibitem[EIP-5192(2022)]{eip5192}
Ethereum Improvement Proposals.
\newblock EIP-5192: Minimal soulbound NFTs.
\newblock \url{https://eips.ethereum.org/EIPS/eip-5192}, 2022.
\bibitem[Frey \& Gallus(2017)]{frey2017awards}
Frey, B.S. and Gallus, J.
\newblock Towards an economics of awards.
\newblock \emph{Journal of Economic Surveys}, 31(1):190--200, 2017.
\bibitem[Gitcoin Passport(2023)]{gitcoinpassport2023}
Gitcoin.
\newblock Gitcoin Passport: Sybil resistance for web3.
\newblock \url{https://passport.gitcoin.co}, 2023.
\bibitem[Hirsch(2005)]{hirsch2005index}
Hirsch, J.E.
\newblock An index to quantify an individual's scientific research output.
\newblock \emph{PNAS}, 102(46):16569--16572, 2005.
\bibitem[Jackson(2008)]{jackson2008social}
Jackson, M.O.
\newblock \emph{Social and Economic Networks}.
\newblock Princeton University Press, 2008.
\bibitem[Lalley \& Weyl(2018)]{lalley2018quadratic}
Lalley, S.P. and Weyl, E.G.
\newblock Quadratic voting: How mechanism design can radicalize democracy.
\newblock \emph{AEA Papers and Proceedings}, 108:33--37, 2018.
\bibitem[Lido(2023)]{lido2023dual}
Lido.
\newblock Dual governance proposal.
\newblock Lido DAO Forum, 2023.
\bibitem[Optimism(2023)]{optimism2023retropgf}
Optimism Collective.
\newblock Retroactive Public Goods Funding Round 3.
\newblock \url{https://optimism.io/retropgf}, 2023.
\bibitem[Ostrom(1990)]{ostrom1990}
Ostrom, E.
\newblock \emph{Governing the Commons}.
\newblock Cambridge University Press, 1990.
\bibitem[Page et~al.(1999)]{page1999pagerank}
Page, L., Brin, S., Motwani, R., and Winograd, T.
\newblock The PageRank citation ranking: Bringing order to the web.
\newblock Stanford InfoLab Technical Report, 1999.
\bibitem[Posner \& Weyl(2018)]{posner2018radical}
Posner, E.A. and Weyl, E.G.
\newblock \emph{Radical Markets}.
\newblock Princeton University Press, 2018.
\bibitem[Resnick et~al.(2000)]{resnick2000reputation}
Resnick, P., Kuwabara, K., Zeckhauser, R., and Friedman, E.
\newblock Reputation systems.
\newblock \emph{CACM}, 43(12):45--48, 2000.
\bibitem[SourceCred(2020)]{sourcecred2020}
SourceCred.
\newblock A reputation protocol for open communities.
\newblock \url{https://sourcecred.io}, 2020.
\bibitem[Weyl et~al.(2022)]{weyl2022decentralized}
Weyl, E.G., Ohlhaver, P., and Buterin, V.
\newblock Decentralized society: Finding web3's soul.
\newblock \emph{SSRN}, 2022.
\bibitem[Zoo Labs Foundation(2024)]{zip0000}
Zoo Labs Foundation.
\newblock ZIP-0000: Zoo Ecosystem Architecture \& Framework.
\newblock \url{https://zips.zoo.ngo/zip-0000}, 2024.
\bibitem[Zoo Labs Foundation(2025a)]{zip0017}
Zoo Labs Foundation.
\newblock ZIP-0017: DAO Governance Framework.
\newblock \url{https://zips.zoo.ngo/zip-0017}, 2025.
\bibitem[Zoo Labs Foundation(2025b)]{zip0020}
Zoo Labs Foundation.
\newblock ZIP-0020: Impact Metric Oracle.
\newblock \url{https://zips.zoo.ngo/zip-0020}, 2025.
\bibitem[Zoo Labs Foundation(2025c)]{zip0023}
Zoo Labs Foundation.
\newblock ZIP-0023: Community Grant Program.
\newblock \url{https://zips.zoo.ngo/zip-0023}, 2025.
\bibitem[Zoo Labs Foundation(2025d)]{zip0026}
Zoo Labs Foundation.
\newblock ZIP-0026: Ecosystem Reputation System.
\newblock \url{https://zips.zoo.ngo/zip-0026}, 2025.
\bibitem[Zusman(2022)]{zusman2022soulbound}
Zusman, D.
\newblock Implementing soulbound tokens: Practical considerations.
\newblock \emph{ETH Research}, 2022.
\bibitem[Zuzalu(2023)]{zuzalu2023}
Zuzalu Community.
\newblock Soulbound tokens for community governance: Lessons from Zuzalu.
\newblock Technical report, 2023.
\end{thebibliography}
\end{document}