BLK 400.4M·XRD $0.001·Σ TVL √ 10.1K
LAUNCHGOVERN
Wiki homeEssays
  1. Home
  2. /
  3. Wiki
  4. /
  5. DAO governance & tooling
  6. /
  7. Tooling
  8. /
  9. Membership & roles
  10. /
  11. Human Passport (formerly Gitcoin Passport)

PreviousHats ProtocolNextBoardroom (governance data API)
Categories:WikiDAO governance & toolingToolingMembership & roles
MANIFESTO · CAPER / OWN THE GAME
The launchpad that raises and deploys capital. Guaranteed entry / exit liquidity. Governance that can't be captured.

Human Passport (passport.human.tech) is the most widely deployed proof-of-personhood layer in DAO funding. It aggregates a scattered pile of credentials — an exchange KYC attestation, a government-ID proof, a biometric check, a Discord account, an ENS name, a record of on-chain activity — into one number, the Unique Humanity Score, which any application can gate on. It was built inside Gitcoin as Gitcoin Passport to stop Sybil attackers farming its quadratic-funding matching pool, spun out as Passport XYZ, and acquired by the Holonym Foundation in December 2024 and rebranded under the human.tech umbrella.

It is the tooling answer to the problem set out in Sybil resistance in DAOs: not who is this person, but how confident are we that this wallet is a distinct human, and what is that confidence worth. Where Collab.Land and Guild.xyz answer “does this wallet hold the right token,” Passport answers the harder question of whether ten wallets holding it are ten people.

Stamps, the score, and the threshold

A Stamp is a verifiable credential issued by Passport's IAM service after the user proves control of some account or attestation. The catalogue spans five families: KYC, biometrics, web3 activity, web-of-trust, and web2 activity. Each stamp carries a weight, and the scorer “adds up the weights of each Stamp owned by each user and compares the result to a pre-defined threshold value.”

The default threshold is 20. The documentation is explicit that this is a tuned default rather than a law of nature, and publishes the trade-off it encodes:

ScoreSybil eliminationFalse-positive risk
20EffectiveLow
25More effectiveMedium
30Most effectiveHigh

Integrators are not stuck with it: a custom scorer can move the threshold, upweight or downweight individual stamps, or require a specific stamp as a prerequisite regardless of score. A DAO gating a treasury vote and a grants round gating a $5 donation are entitled to different answers, and the config supports that.

Where the weight actually sits

The weights are not a black box — they are a public Python dict in the deployed scorer, gitcoin_passport_weights.py, alongside the threshold constant itself. As currently deployed it lists 51 stamps summing to about 180 points, and the distribution is extremely top-heavy:

Heaviest stampsNFTScore#50 16.246 · CoinbaseDualVerification 16.042 · HolonymGovIdProvider 16.026 · BinanceBABT 16.021 · ETHScore#50 16.021
Lightest stampsBrightid 0.202 · ETHDaysActive#50 0.207 · Ens 0.208 · GnosisSafe 0.222 · SnapshotProposalsProvider 0.239

Set that against a threshold of 20 and the practical shape of the system is clear. A single Binance or Coinbase attestation carries roughly 80% of the bar on its own. The entire decentralised-identity tail that aggregate personhood was meant to lean on — BrightID, ENS, a Gnosis Safe, a history of Snapshot proposals — sums to about one point between them. Having actually participated in on-chain governance is worth around 1% of the score that certifies you as a human.

This is a defensible engineering choice rather than a scandal: exchange KYC is the strongest and most expensive-to-forge signal available at scale, and the government-ID and biometric routes exist precisely so that people who will not use an exchange have a path. But a DAO adopting the default threshold should be clear about what it is adopting. Aggregate proof-of-personhood, in production, mostly resolves to did a centralised exchange verify you — and that is a different trust assumption from the one the phrase “decentralised identity” suggests. The file is live config and changes; check the current values before quoting them.

Expiry and deduplication

Two rules do more work than the score itself.

Deduplication is LIFO. Every stamp carries a hash, and when two Passports present the same credential “the duplicate Stamp is ignored and not counted towards the score” — the first claim keeps it. This, not the threshold, is the actual Sybil defence. Nothing stops one human from creating ten Passports; what stops them is that ten Passports cannot all point at one Coinbase account. Because the heaviest stamps are exactly the scarce ones, every additional wallet has to clear 20 points out of the cheap tail, and the cheap tail does not add up.

Credentials decay. Offchain and onchain stamps alike expire after 90 days, extendable by re-verifying in the app; onchain scores carry no explicit expiry, so the docs advise treating the attestation timestamp under the same 90-day rule. For a one-shot funding round that is irrelevant. For a standing membership roster it is a maintenance obligation — a member verified today is unverified next quarter, and a gate that silently drops people is a governance problem, not just an ops one.

How DAOs actually use it

  • Quadratic-funding rounds. This is the origin and still the flagship use. Gitcoin Grants 18 required a score of 20 or above for a donation to be eligible for matching; Grants 19 softened the cliff into a ramp — “a minimum score of 15 to be eligible for matching” with “matching power… proportionally increase[d] for scores between 15 and 25.” That ramp is the honest response to false positives: a mis-scored human loses matching weight rather than their vote. See quadratic voting and funding for why QF collapses entirely without a personhood layer, and Gitcoin DAO for the organisation running the rounds.
  • Role gating. Guild.xyz can require a minimum Unique Humanity Score as a role requirement (partnership since 2023), so access is gated on a personhood signal rather than on holdings alone.
  • Airdrop filtering. Distribution teams use it to thin out farmed claimant sets — see airdrops and token distribution.
  • Addresses with no Passport. The Models API classifies any EVM address from its transaction history alone, returning −1 (insufficient data) or 0–100, across eight models covering an aggregate score plus Ethereum L1, NFT activity, Arbitrum, Base, Optimism, Polygon, and zkSync. This is the retroactive tool: you can score a claimant set that never opted in.
  • In-app verification. Passport Embed is a React component that puts the stamp-collection flow inside the integrator's own dApp instead of bouncing users to a second site.

The stack is open source under AGPL-3.0 — the monorepo carries the app, the iam credential-issuance server, a Ceramic-backed database client, and the infra config, with onchain attestations published across roughly a dozen networks.

From Gitcoin to Holonym

Passport was built inside Gitcoin, spun out as Passport XYZ, and acquired by the Holonym Foundation in December 2024, which rebranded it Human Passport and folded it in beside Human Network and Human Wallet. The project's own figures — self-reported, not independently audited — put it at over 2 million users, 150+ campaigns, 120+ integrating projects as of March 2026, nine consecutive Gitcoin Grants rounds defended, and more than $512M in capital flow protected.

The handover is worth noting on its own terms. The Sybil defence that decides who is eligible for a DAO's matching pool is now maintained by a different organisation than the DAO running the pool, on a weights file that organisation controls. That is an ordinary vendor relationship, and it is also a governance dependency: a round's eligibility rules can change without the round's voters approving anything. Anyone treating a Passport threshold as a constitutional parameter should pin the scorer they mean, the way any other external dependency gets pinned.

The limits

  • A score is a property of a wallet, not a person. Deduplication is the only thing binding the two, so the defence is exactly as strong as the scarcity of the heaviest stamps — and no stronger.
  • The cheap route in is a centralised exchange. That excludes people who cannot or will not KYC, which is the privacy-and-inclusivity half of the tension named on the Sybil resistance page. Personhood systems buy security by charging someone; the question is always who pays.
  • Trust moves off-chain, it does not disappear. A Passport is a claim about attestations from Coinbase, Binance, Civic, Holonym, Idena, and Discord. The DAO is not verifying humans; it is verifying that someone else did, and inheriting their failure modes.
  • It says nothing about vote weight. Passport decides who may participate. Whether one verified human then counts for one vote or ten thousand is entirely a question for the voting layer — which is why personhood tooling sits in the access tier of the DAO tooling stack, not the governance tier.

How Caper approaches this

Caper runs no identity check at all, and makes no claim that any member is human. It attacks the same problem from the cost side instead. A member's vote weight is w = (t × v) / (V × T) — governance tokens held, multiplied by that account's own soulbound vote tokens, over the vote-token supply and circulating supply (compute_vote_weight, contracts/logic/src/lib.rs). Vote tokens are minted one per accepted ballot, straight into the voter's account by the immortal state component, and the resource's depositor role admits no other frame — so a voting record cannot be bought, sold, or transferred between wallets. Each ballot costs that caper's vote fee (100 XRD by genesis default), paid into the caper's own treasury.

The multiplicative form is what does the Sybil work. Splitting one holding across ten wallets multiplies nothing: each wallet then holds a tenth of the tokens, and to reproduce the original weight every one of them would have to pay the vote fee on every proposal to build its own record — ten times the cost for, at best, the same weight, while each extra mint inflates V, the denominator every member shares. Extra identities are strictly a worse deal than one.

It is a narrower promise than proof of personhood: Caper cannot tell you a member is a distinct human, only that concentrated influence had to be paid for and shown up for. But it is a promise the contract keeps by itself, with no external issuer, no expiring credential, and no weights file that a third party can re-tune. See proposals for the voting mechanics.

References

  • Human Passport, documentation — product overview, Stamps, Embed, Models, Data Services.
  • Human Passport, Scoring thresholds — the threshold-20 default and the sybil-elimination / false-positive trade-off table.
  • Human Passport, Deduplicating Stamps — the LIFO rule and the hash field.
  • Human Passport, Stamp and score expirations — the 90-day window.
  • passportxyz/passport-scorer, gitcoin_passport_weights.py — the deployed stamp weights and GITCOIN_PASSPORT_THRESHOLD.
  • passportxyz/passport, monorepo (AGPL-3.0) — app, IAM credential issuance, Ceramic database client, infra.
  • human.tech, Human Passport: proof of personhood and Sybil resistance for Web3 — the Holonym acquisition and the project's self-reported adoption figures.
  • Gitcoin, Announcing Gitcoin Grants 18 and Announcing Gitcoin Grants 19 — the 20-point matching gate and its replacement by a 15–25 sliding scale.
ToolHuman Passport (passport.human.tech) — proof-of-personhood scoring and Sybil-defence layer
FormerlyGitcoin Passport → Passport XYZ → Human Passport
OwnerHolonym Foundation (acquired December 2024); one of three human.tech products alongside Human Network and Human Wallet
Core primitiveStamps (verifiable credentials) → a single Unique Humanity Score
Default threshold20 — GITCOIN_PASSPORT_THRESHOLD = "20" in the deployed scorer config
Stamp catalogue51 weighted stamps, from 0.202 to 16.246 points, ~180 points in total (same config file)
Expiry90 days, offchain and onchain stamps alike
DeduplicationLIFO on the stamp hash — a credential already claimed elsewhere scores zero
ProductsStamps API · Passport Embed (React) · Passport Models (ML address classification, −1 to 100) · ZK individual verifications
Sourcepassportxyz/passport (AGPL-3.0) · passportxyz/passport-scorer
Best known forGating matching eligibility in Gitcoin's quadratic-funding rounds
RelatedSybil resistance in DAOs · Guild.xyz · Collab.Land