Portable Reputation Passport
LIVE ON STARKNET MAINNET
The reputation passport is running on Starknet mainnet at zkde.fi/passport. It reads your real on-chain activity and compiles it into a verifiable reputation profile.
The passport is a compositional view of your wallet's trust posture across Starknet DeFi. It pulls together your on-chain activity — bridge deposits, protocol interactions, transaction history, proof completions — into a single queryable reputation profile. It travels with your wallet.
What /passport shows you
When you open /passport, you see:
- Reputation score — a composite number derived from your on-chain activity across Starknet protocols
- Tier — your current reputation tier (determines what gates are unlocked)
- Gates — visual grid showing which system capabilities you've unlocked
- Protocol metrics — how many DeFi protocols you've interacted with, your TVL, transaction count
- On-chain activity — bridge deposits, successful/failed transactions, activity timeline
- Tier progress — how close you are to the next tier
This isn't a self-reported profile. The data comes from querying your actual mainnet transaction history on Starknet. The backend scans your positions and activity via mainnet RPC (reputation_scanner.py, onchain_activity_service.py, position_scanner.py) and computes reputation scoring off-chain.
What feeds into it
flowchart TB ACT["<b>On-chain activity</b><br/>Bridge deposits, tx history,<br/>protocol interactions"] --> RP["<b>Reputation Passport</b>"] REP["<b>Reputation scoring</b><br/>Tier, composite score,<br/>FICO-pack proofs"] --> RP ONB["<b>Onboarding state</b><br/>Wallet binding, agent<br/>registration status"] --> RP ID["<b>Identity context</b><br/>Linked addresses,<br/>auth session state"] --> RP RP --> PASS["/passport: passport viewer"] RP --> PORT["/portfolio: gate checks"] RP --> LEND["Lending: credit eligibility"] RP --> AUTO["Automation: readiness checks"]
On-chain activity is the primary signal on mainnet. The system queries your Starknet mainnet transactions — bridge deposits through StarkGate, interactions with Ekubo and Vesu, staking activity, transaction success/failure rates. Volume, consistency, and diversity all contribute.
Reputation scoring includes the composite score, tier assignment, and completion status of the five FICO-pack proofs. The FICO-pack proofs let you prove specific properties about your financial posture without revealing the underlying data.
Onboarding state tracks wallet binding and agent registration. Incomplete onboarding can block entry to controlled flows.
Identity context includes linked addresses (Starknet + Ethereum for cross-chain) and auth session state.
Portability
The "portable" in the name matters. Your reputation is computed from your mainnet on-chain activity — it travels with your wallet address. The portable passport export API bundles your reputation data (score, tier, activity, proofs) into a structured profile that any integration can consume.
On Sepolia, the ReputationRegistry contract stores reputation state on-chain. That contract is coming to mainnet — when it does, the reputation anchoring moves fully on-chain. Today, the mainnet passport derives its data from RPC-scanned chain state and attests results via the mainnet ReceiptRegistry.
The passport export API:
GET /api/v1/passport/portable/{address}/exportReturns a structured reputation profile that can be consumed by any integration.
API endpoints
| Method | Endpoint | What it returns |
|---|---|---|
GET | /api/v1/passport/portable/{address}/export | Full portable passport profile |
GET | /api/v1/zkdefi/risk_passport/user/{address} | Composed trust object |
GET | /api/v1/zkdefi/risk_passport/pool/{pool_id} | Pool trust context |
GET | /api/v1/zkdefi/risk_profile/{address} | Aggregated risk profile (superset) |
GET | /api/v1/zkdefi/reputation/user/{address} | Reputation snapshot — tier, score, history |
GET | /api/v1/zkdefi/reputation/proofs/{address} | FICO-pack proof status (all 5 proofs) |
The user passport and pool passport serve different consumers. Your passport tells the system about you. The pool passport tells the system about the target you're interacting with. When you execute through the rebalancer, both get consulted.
Where it's consumed
| Surface | How passport is used |
|---|---|
| /passport | The human-readable viewer — your score, tier, gates, activity timeline |
| /portfolio | Gate checks — determines which operations are available to you |
| Lending paths | Reputation-driven eligibility for borrow capacity and terms |
| Autonomous mode | Readiness checks before the agent starts operating |
| External integrations | Any Starknet app can query the ReputationRegistry |
Mainnet contracts
| Contract | Role | Network |
|---|---|---|
| ReceiptRegistry | Receipts from operations that build your reputation | Mainnet |
| ReceiptOS Archive | Permanent receipt archive | Mainnet |
| SelectiveDisclosure | Prove properties without revealing data | Mainnet |
| MIST Chamber | Privacy wrapping for selective disclosure | Mainnet (third-party) |
What about ReputationRegistry?
The ReputationRegistry contract is on Starknet Sepolia. Today, mainnet passport data is derived by scanning your mainnet chain state via RPC (positions, balances, protocol interactions, bridge activity). When the ReputationRegistry moves to mainnet, reputation scoring will be fully on-chain.
Full addresses: Contracts
Important nuance
Passport values are operational indicators, not legal conclusions. A passport showing high reputation means the on-chain data supports that scoring — it's not a legal attestation, a credit score, or a guarantee of future behavior. The scoring model is transparent and the inputs are verifiable on-chain, but the interpretation is the system's, not a regulated financial institution's.
For the proof generation endpoints that produce the FICO-pack attestations, see Reputation & Scoring.