Skip to content

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}/export

Returns a structured reputation profile that can be consumed by any integration.

API endpoints

MethodEndpointWhat it returns
GET/api/v1/passport/portable/{address}/exportFull 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

SurfaceHow passport is used
/passportThe human-readable viewer — your score, tier, gates, activity timeline
/portfolioGate checks — determines which operations are available to you
Lending pathsReputation-driven eligibility for borrow capacity and terms
Autonomous modeReadiness checks before the agent starts operating
External integrationsAny Starknet app can query the ReputationRegistry

Mainnet contracts

ContractRoleNetwork
ReceiptRegistryReceipts from operations that build your reputationMainnet
ReceiptOS ArchivePermanent receipt archiveMainnet
SelectiveDisclosureProve properties without revealing dataMainnet
MIST ChamberPrivacy wrapping for selective disclosureMainnet (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.

Built by Obsqra Labs