Under Construction This DApp is in development

Reputation Ontology

The Reputation Ontology is OmniSocial’s modular, on-chain trust and credibility system.

It governs how users earn, lose, and apply non-transferable reputation across different reputation domains like moderation, governance, and creation. Reputation influences visibility, voting power, access rights, and more.

🧱 Core Concepts

Term
Description

Reputation Domain

A category of rep (e.g. governance, moderation, creator) with its own rules

Non-transferable

Reputation cannot be sold, traded, or moved—it's identity-bound

Decay

Reputation slowly decays over time to encourage sustained contribution

Weighting

Different domains can be weighted differently in voting and discovery

Reputation Oracle

Off-chain or on-chain actors that grant/verify reputation actions

🗂 Default Reputation Domains

Domain
Purpose
Decay Rate
Use Cases

governance

Participating in DAOs/voting

Medium

DAO proposals, weighted voting

moderation

Content moderation & community

Fast

Flagging, trust scoring

creation

Posts, tips, content shared

Slow

Feed ranking, tip multipliers

dev

Contributions to code/infra

Medium

Grant access, badges

rep_oracle

Meta-reputation for rep granters

Very slow

Delegation, community governance

These are customizable by governance. New domains can be proposed.

⚙️ Smart Contract Functions

The core RepModule contract handles all reputation logic. Example functions:

grantReputation(address user, string domain, uint256 amount)

  • Grants amount of rep in domain to user

  • Only callable by an approved Reputation Oracle

burnReputation(address user, string domain, uint256 amount)

  • Used to reduce reputation manually (e.g. spam)

getReputation(address user, string domain) returns (uint256)

  • Returns current active rep balance (post-decay) for the domain

getRawReputation(address user, string domain) returns (uint256)

  • Returns the raw total reputation (before decay)

decayReputation(address user, string domain)

  • Triggers on interaction or periodically (auto-handled in subgraph indexers)

⏳ Decay Mechanism

Each reputation domain decays based on a half-life function:

effectiveRep = rawRep * e^(-λ * t)
  • λ is a decay constant unique to each domain.

  • Decay ensures that reputation stays current and incentivizes continued contribution.

  • Decay can be paused or reduced via badges or verified credentials.

📊 Example Usage

1. Earning Rep

  • A user creates a high-quality post → +20 creation rep via a RepOracle.

  • User votes in a DAO → +5 governance rep via DAOFactory hook.

2. Applying Rep

  • A user with moderation rep > 50 can flag spam directly.

  • DAO voting power = getReputation(user, "governance") + boost from "rep_oracle"

3. Viewing Rep (Subgraph)

query GetReputation {
  reputationBalances(where: {user: "0xabc...", domain: "creation"}) {
    domain
    amount
    lastUpdated
  }
}

🧠 Developer Tips

  • To mint rep via code:

RepModule(granter).grantReputation(user, "dev", 10e18);
  • Reputation oracles must be approved via governance proposals or contract owner flow.

  • The RepModule is modular—new domains and policies can be added post-deploy.

Last updated

Was this helpful?