Skip to content
✨ Learn more about Convo Space & Omnid →
Docs
Convo API
Omnid

Omnid

Introduction

Omnid aggregates multiple on/off-chain sources of reputation into a singular graph where each source gets curated and counts towards some points too. These are further accessible as an overall dynamic TrustScore for any Ethereum Address. This score is continuously evolving. As more platforms get integrated, the weights and the score will update too.

Current Integrations and Score Weightage

#IntegrationKeyFactors and Score
1Aaveaave
  • totalCollateralETH
  • totalDebtETH
  • availableBorrowsETH
  • currentLiquidationThreshold
  • ltv
  • healthFactor
Across: Main Market, AMM Market, Polygon Market, Avalanche Market
2AlchemyalchemyReports on isSpamContract
3ArcXarcxPoints for each indexed ArcX Score
4Async Artasyncart
  • NFTs Sold
  • Average Sale Value
5BirdbirdBird Rating
6Boardroomboardroom
  • Number of Votes given
  • DAOs participated In
  • Voting History
7BrightIdbrightid37 Points for Verification
8Celo Verified Attestationscelo1 Point for each valid Attestation
9Coinvisecoinvise
  • Tokens Created(a) : (a)^0.5 Points
  • NFTs Created(b) : (b)^0.5 Points
  • Total NFTs Sold(c): c Points
  • Airdrops Sent(d): d Points
  • Multisends(e): e Points
  • Liquidity Pools Created(f): f Points
10Commons Stackcommonstack$TRUST Score
11Contextcontext
  • Followers
  • Folowing
12CoordinapecoordinapeNumber of teammates
13CryptoReliefcryptoreliefDonations
14CryptoScamDBcryptoscamdb-20 Points for being flagged
15Cyberconnectcyberconnect
  • Followers
  • Following
  • Social
  • Display Name
16Dapplistdapplist
  • Dapps Hunted
  • XP
17DeBankdebank
  • base_score
  • rank
  • social_coefficient
  • social_score
  • total_score
18DeepDAOdeepdao
  • score
  • rank
  • relativeScore
  • daos
  • proposals
  • votes
19EmblemDAOemblem
  • Soul Score
  • Rank
20ENSens10 Points for Reverse Resolution to your Address.
21EtherscanetherscanFlagged Labels like Akropolis Hacker
22Fortaforta- Number of 'HIGH', 'MEDIUM', 'CRITICAL' Alerts
23Foundationfoundation- NFTs Sold
- Average Sale Value
- Followers
- Following
24Gitcoingitcoin10 Points for funding a Grant.
25GoldfinchgoldfinchGoldfinch UID
26GovernorDAOgovernordaoProof of Existence
27Hive.onehiveonePoints for,6
- Attention Score
- Insider Score
28Idenaidena1 Point for Verification
29Karma ProtocolkarmaKarma Score
30KlimaDAOklimaAmount of Carbon Offset
31Known Originknownorigin- NFTs Sold
- Average Sale Value
32Layer3layer3- XP
- Level
33LearnWeb3learnweb3- Graduation Badges
34Lens ProtocollensLens Profile
35MetagamemetagameSeason XP ** 0.5
36MyEtherWalletmew-20 on being Blacklisted
37Mirrormirror10 Points for being a writer on Mirror
38POAPpoap1 Point for Each POAP Received
39Proof of Humanitypoh8 Points for Verification
40Proof of Personhoodpop- Price of Forgery
- Personhood Score
41Polygon EcosystempolygonRelative Score out of 100 based on,
- Number of Transactions
- Net Volume Transacted
- Retention
42Project Galaxyprojectgalaxy1 Point for each Eligible Credential
43QuadrataquadrataQuadrata Passport
44Questbookquestbook- Valid Grants
- Sucessful Applications.
45RabbitHolerabbithole- Points equal to the Levels you cross on RabbitHole.
- TaskIDs of the tasks Completed
46Rariblerarible- Total NFTs Sold
- Total NFTs Created
- Total NFT Owned
- Average Sale Value
- Followers
- Following
47RSS3rss3- Profile
- Backlinks
- Accounts
- Links
48SDNsdnSpecially Designated Nationals
49Showtimeshowtime- Followers
- Following
50SuperRaresuperrare- NFTs Sold
- Average Sale Value
- Followers
- Following
51Token Blackliststokenblacklists
  • USDC
  • USDT
  • BUSD
52Transaction Datatxn
  • Age of Ethereum Address
  • Age of Polygon Address
  • Gas Spend on Ethereum
  • Gas Spend on Polygon
53UnipassunipassPoints for Level
54Uniswap Sybiluniswap10 Points for Verification
55Unstoppable Domainsunstoppable10 Points for Reverse Reslution to your Address.
56Yupyup- Yup Score
57Zapperzapper- Following
- Followers
- xp
- zp
58Zorazora- Number of NFTs Sold
- Average Sale Value

Integration

ℹ️

You can add a noCache=true query paramter to manually rebuild and cache the Social Graph anytime. Otherwise our indexers update your score every 8 hours.

Querying TrustScore

API Request format,

https://theconvo.space/api/identity?address=<ethereum-address-or-ens>&apikey=<apikey>

Example 1,

https://theconvo.space/api/identity?address=vitalik.eth&apikey=<apikey>
View Response
{
  "aave": {
    "totalHf": 0,
    "mainMarket": {
      "healthFactor": false
    },
    "ammMarket": {
      "healthFactor": false
    },
    "polygonMarket": {
      "healthFactor": false
    },
    "avalancheMarket": {
      "healthFactor": false
    }
  },
  "arcx": {
    "disabled": true
  },
  "asyncart": {
    "totalCountSold": 0,
    "totalAmountSold": 0
  },
  "bird": {
    "bird_rating": 10,
    "eth_balance": 4217.327617249959,
    "nbr_account_age_days": 2367,
    "nbr_transaction_count": 1000
  },
  "boardroom": {
    "totalVotes": 0,
    "daos": [],
    "votes": []
  },
  "brightid": false,
  "celo": {
    "attestations": 0
  },
  "coinvise": {
    "tokensCreated": 0,
    "nftsCreated": 0,
    "totalPoolCount": 0,
    "totalPoolTvl": 0,
    "totalCountSold": 0,
    "totalAmountSold": 0,
    "multisendCount": 0,
    "airdropCount": 0,
    "following": 0,
    "followers": 0
  },
  "context": {},
  "commonsstack": {},
  "coordinape": {
    "disabled": true
  },
  "cryptorelief": {
    "amount": 0
  },
  "cryptoscamdb": false,
  "cyberconnect": {
    "errors": [
      {
        "message": "Server Internal Error"
      }
    ]
  },
  "dapplist": {
    "score": 0,
    "dapps": []
  },
  "debank": {},
  "deepdao": {},
  "ens": "vitalik.eth",
  "etherscan": {
    "labels": []
  },
  "forta": [
    {
      "severity": "MEDIUM",
      "protocol": "ethereum",
      "source": {
        "transactionHash": "0x293608d8305f53ad5c2d8b584a4d473639e1e7e0a438e4237d902606c6ff9e5f",
        "block": {
          "number": 14809612,
          "timestamp": "2022-05-20T06:46:04Z",
          "chainId": 1
        },
        "agent": {
          "id": "0x20d0cd9432c7e15cb625097a718c15cc07f463b5252e3c36ae23acb7ef98d54e"
        }
      }
    },
    {
      "severity": "MEDIUM",
      "protocol": "ethereum",
      "source": {
        "transactionHash": "0x293608d8305f53ad5c2d8b584a4d473639e1e7e0a438e4237d902606c6ff9e5f",
        "block": {
          "number": 14809612,
          "timestamp": "2022-05-20T06:46:04Z",
          "chainId": 1
        },
        "agent": {
          "id": "0x46ce98e921e2766a922840a56e89f24409001052c284e0bd6cbaa4fecd95e9b6"
        }
      }
    },
    {
      "severity": "MEDIUM",
      "protocol": "ethereum",
      "source": {
        "transactionHash": "0x80eda1c997c9db1441b2dd85636ab4d4aaf2e2e6d60912d259a8f228393e58cd",
        "block": {
          "number": 14809284,
          "timestamp": "2022-05-20T05:24:46Z",
          "chainId": 1
        },
        "agent": {
          "id": "0x3858be37e155f84e8e0d6212db1b47d4e83b1d41e8a2bebecb902651ed1125d6"
        }
      }
    },
    {
      "severity": "MEDIUM",
      "protocol": "ethereum",
      "source": {
        "transactionHash": "0x7587c7d9f575d5cd69222468f390c2603419577063ba4c66da7c72e6ce6d9c93",
        "block": {
          "number": 14802417,
          "timestamp": "2022-05-19T02:27:32Z",
          "chainId": 1
        },
        "agent": {
          "id": "0xd0c4ed06a38e2048bf04f251778463a096348ea55ec64487f858922ccec73d02"
        }
      }
    },
    {
      "severity": "MEDIUM",
      "protocol": "ethereum",
      "source": {
        "transactionHash": "0x3685deba9798c948352db24f1e04119f7d770a2e2b5e2fb4d5b2de368d92169c",
        "block": {
          "number": 14800940,
          "timestamp": "2022-05-18T20:39:57Z",
          "chainId": 1
        },
        "agent": {
          "id": "0xd0c4ed06a38e2048bf04f251778463a096348ea55ec64487f858922ccec73d02"
        }
      }
    }
  ],
  "foundation": {
    "totalCountSold": 0,
    "totalAmountSold": 0,
    "followerCount": 0,
    "followingCount": 0
  },
  "gitcoin": {
    "funder": false
  },
  "goldfinch": {},
  "governordao": {
    "enrollmentStatus": "Unenrolled"
  },
  "hiveone": false,
  "idena": false,
  "karma": {
    "disabled": true
  },
  "klima": {
    "totalRetirements": 0,
    "totalCarbonRetired": 0,
    "totalClaimed": 0
  },
  "knownorigin": {
    "totalCountSold": 0,
    "totalAmountSold": 0
  },
  "layer3": {},
  "learnweb3": {},
  "lens": {},
  "metagame": {},
  "mew": {},
  "poap": 66,
  "poh": {
    "submissions": []
  },
  "pop": {},
  "polygon": {
    "Score100": 0
  },
  "projectgalaxy": {
    "id": "WoKVUVH2WabnkqAcGcReTL",
    "username": "",
    "eligibleCredentials": {
      "list": []
    }
  },
  "quadrata": {
    "quadrataPassports": []
  },
  "questbook": {
    "grantApplications": 0,
    "grants": 0
  },
  "rabbithole": {
    "level": 3,
    "score": 551,
    "tasksCompleted": [
      "UNI_V2_POOL",
      "GNOSIS_SAFE_OWNER",
      "UNI_V2_SWAP",
      "ENS_REGISTER"
    ],
    "credentials": []
  },
  "rarible": {
    "totalAmountSold": 0,
    "error": {
      "message": "Invalid Request",
      "response": {
        "size": 0,
        "timeout": 0
      }
    }
  },
  "rss3": {
    "profile": {},
    "backlinks": [],
    "accounts": [],
    "links": []
  },
  "sdn": {
    "success": false,
    "error": "Not in DB."
  },
  "showtime": {
    "success": false,
    "error": "Not in DB."
  },
  "superrare": {
    "disabled": true
  },
  "txn": {
    "polygonAge": 305,
    "ethereumAge": 2426,
    "ethereumGasSpend": 21.02953524116167,
    "polygonGasSpend": 0
  },
  "unipass": {},
  "uniswap": {
    "success": false,
    "error": "Not in DB."
  },
  "unstoppable": false,
  "yup": {
    "success": false,
    "error": "Not in DB."
  },
  "zapper": {
    "followers": 5076,
    "following": 0,
    "xp": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
    "zp": 0
  },
  "zora": {
    "totalCountSold": 0,
    "totalAmountSold": 0
  },
  "score": 78,
  "signature": "0x07411fa751c02702e3af7e12fe8fa1aab93d220958efdec225ced2e2149fbca334363c55cfd50c34019e7fa7ea52cbce2bd199022fd58e7a33c91d35886fd6b11b",
  "signatureAddress": "0xCCcccCcC54317EE02C2dBfdD832a67C7acD28e06",
  "success": true
}

Example 2,

https://theconvo.space/api/identity?address=0xD665afb9A4019a8c482352aaa862567257Ed62CF&apikey=<apikey>
View Response
{
  "aave": {
    "totalHf": 0,
    "mainMarket": {
      "healthFactor": false
    },
    "ammMarket": {
      "healthFactor": false
    },
    "polygonMarket": {
      "healthFactor": false
    },
    "avalancheMarket": {
      "healthFactor": false
    }
  },
  "arcx": {
    "disabled": true
  },
  "asyncart": {
    "totalCountSold": 0,
    "totalAmountSold": 0
  },
  "bird": {
    "bird_rating": 1.18,
    "eth_balance": 1.8148611882957437,
    "nbr_account_age_days": 500,
    "nbr_transaction_count": 657
  },
  "boardroom": {
    "totalVotes": 0,
    "daos": [],
    "votes": []
  },
  "brightid": false,
  "celo": {
    "attestations": 0
  },
  "coinvise": {
    "tokensCreated": 0,
    "nftsCreated": 0,
    "totalPoolCount": 0,
    "totalPoolTvl": 0,
    "totalCountSold": 0,
    "totalAmountSold": 0,
    "multisendCount": 0,
    "airdropCount": 0,
    "following": 0,
    "followers": 0
  },
  "context": {},
  "commonsstack": {},
  "coordinape": {
    "disabled": true
  },
  "cryptorelief": {
    "amount": 0
  },
  "cryptoscamdb": false,
  "cyberconnect": {
    "data": {
      "identity": {
        "address": "0xd665afb9a4019a8c482352aaa862567257ed62cf",
        "followingCount": 0,
        "followerCount": 0,
        "social": {
          "twitter": "TheArchangel22"
        }
      }
    }
  },
  "dapplist": {
    "score": 0,
    "dapps": []
  },
  "debank": {},
  "deepdao": {},
  "ens": "thearchangel.eth",
  "etherscan": {
    "labels": []
  },
  "forta": [
    {
      "severity": "MEDIUM",
      "protocol": "ethereum",
      "source": {
        "transactionHash": "0x7ca65022bd94d83d8a3467a963ff19271e58d1e6a8482aea1aa5652ac4382f56",
        "block": {
          "number": 14568299,
          "timestamp": "2022-04-12T03:19:55Z",
          "chainId": 1
        },
        "agent": {
          "id": "0x4c2105069bbf9f4ed488edeee1b6e96c75966d8f2dc530d8e29802ddc71f7cd5"
        }
      }
    },
    {
      "severity": "MEDIUM",
      "protocol": "ethereum",
      "source": {
        "transactionHash": "0xf4e0a6c433ba3e99687b4b7f6bf4d430c72c6c2c147b85869921c4ad76bfe7cd",
        "block": {
          "number": 14565438,
          "timestamp": "2022-04-11T16:26:17Z",
          "chainId": 1
        },
        "agent": {
          "id": "0x4c2105069bbf9f4ed488edeee1b6e96c75966d8f2dc530d8e29802ddc71f7cd5"
        }
      }
    },
    {
      "severity": "MEDIUM",
      "protocol": "ethereum",
      "source": {
        "transactionHash": "0x7889474986c17a45b31c3eb28d013a3da32086eae0e48061fedcfc79d7afb5e7",
        "block": {
          "number": 14558260,
          "timestamp": "2022-04-10T13:42:22Z",
          "chainId": 1
        },
        "agent": {
          "id": "0x4c2105069bbf9f4ed488edeee1b6e96c75966d8f2dc530d8e29802ddc71f7cd5"
        }
      }
    },
    {
      "severity": "MEDIUM",
      "protocol": "ethereum",
      "source": {
        "transactionHash": "0xff02112f63e96032328147b23e185596777294e094ac7e61da870bffce1be2e4",
        "block": {
          "number": 14514025,
          "timestamp": "2022-04-03T15:53:19Z",
          "chainId": 1
        },
        "agent": {
          "id": "0x4c2105069bbf9f4ed488edeee1b6e96c75966d8f2dc530d8e29802ddc71f7cd5"
        }
      }
    },
    {
      "severity": "MEDIUM",
      "protocol": "ethereum",
      "source": {
        "transactionHash": "0x3da562e5280da781c1c01adf371acb2b717423f704411e4c33e4c69374951bb2",
        "block": {
          "number": 14472475,
          "timestamp": "2022-03-28T04:10:29Z",
          "chainId": 1
        },
        "agent": {
          "id": "0x4c2105069bbf9f4ed488edeee1b6e96c75966d8f2dc530d8e29802ddc71f7cd5"
        }
      }
    }
  ],
  "foundation": {
    "totalCountSold": 9,
    "totalAmountSold": 499424.31000000006,
    "followerCount": 2099,
    "followingCount": 52
  },
  "gitcoin": {
    "funder": false
  },
  "goldfinch": {},
  "governordao": {
    "enrollmentStatus": "Unenrolled"
  },
  "hiveone": false,
  "idena": false,
  "karma": {
    "disabled": true
  },
  "klima": {
    "totalRetirements": 0,
    "totalCarbonRetired": 0,
    "totalClaimed": 0
  },
  "knownorigin": {
    "totalCountSold": 3,
    "totalAmountSold": 13365
  },
  "layer3": {},
  "learnweb3": {},
  "lens": {},
  "metagame": {},
  "mew": {},
  "poap": 1,
  "poh": {
    "submissions": []
  },
  "pop": {},
  "polygon": {
    "Score100": 0
  },
  "projectgalaxy": {
    "id": "heYJq328iZkPHU89BUoVrP",
    "username": "",
    "eligibleCredentials": {
      "list": []
    }
  },
  "quadrata": {
    "quadrataPassports": []
  },
  "questbook": {
    "grantApplications": 0,
    "grants": 0
  },
  "rabbithole": {
    "level": 1,
    "score": 0,
    "tasksCompleted": [],
    "credentials": []
  },
  "rarible": {
    "totalAmountSold": 0,
    "error": {
      "message": "Invalid Request",
      "response": {
        "size": 0,
        "timeout": 0
      }
    }
  },
  "rss3": {
    "profile": {},
    "backlinks": [],
    "accounts": [],
    "links": []
  },
  "sdn": {
    "success": false,
    "error": "Not in DB."
  },
  "showtime": {
    "success": false,
    "error": "Not in DB."
  },
  "superrare": {
    "disabled": true
  },
  "txn": {
    "polygonAge": 0,
    "ethereumAge": 500,
    "ethereumGasSpend": 5.974942715421393,
    "polygonGasSpend": 0
  },
  "unipass": {},
  "uniswap": {
    "success": false,
    "error": "Not in DB."
  },
  "unstoppable": false,
  "yup": {
    "success": false,
    "error": "Not in DB."
  },
  "zapper": {
    "followers": 0,
    "following": 0,
    "xp": "0xd665afb9a4019a8c482352aaa862567257ed62cf",
    "zp": 0
  },
  "zora": {
    "totalCountSold": 0,
    "totalAmountSold": 0
  },
  "score": 11,
  "signature": "0x4854872d56010c0b036e902d1946575d1aa0197188370b3b1d8109b29549ba83438566ac36e00900d5df89ffb629a7ba2c8d72f838e159d0deb5ea87bf9f783a1b",
  "signatureAddress": "0xCCcccCcC54317EE02C2dBfdD832a67C7acD28e06",
  "success": true
}

Verifying Response Signature

ℹ️

Omnid uses 0xCCcccCcC54317EE02C2dBfdD832a67C7acD28e06 as SignatureAddress to sign the oracle data.

const { utils } = require('ethers');

let resp = await fetch('https://theconvo.space/api/identity?address=vitalik.eth&apikey=<apikey>');
let { signature, signatureAddress, _mod, ...scoreData } = await resp.json();
let recoveredAddress = utils.verifyMessage(JSON.stringify(scoreData), signature);
console.log( recoveredAddress === signatureAddress );

ZK Identity

Using a naive implementation of a Range Proof SNARK, we create a circuit to generate a proof of: whether a TrustScore is within a specific range (nearest-tenths in this case) without revealing the original score. Soon, this will also allow you to verify membership in categories/sources of reputation without revealing any personal traits.

Generating ZkProof

API Request format,

https://theconvo.space/api/zkidentity?address=<ethereum-address-or-ens>&apikey=<apikey>
View Response
{
   //score data,
   "inputs": [
      "0x000000000000000000000000000000000000000000000000000000000000003c",
      "0x0000000000000000000000000000000000000000000000000000000000000046",
      "0x0000000000000000000000000000000000000000000000000000000000000001"
   ],
   "proof": [
      [
         "0x2350f8a0e2632b6a6263f25399cccd7acac5071374deb3dfddc7a8f6403cda72",
         "0x2dcf696d400516b327bb793d7163353dbfa15f43ac55beb18dde9b76cc0b8629"
      ],
      [
         [
            "0x1e0741e5371dfb9b5d64a3648f6a00bd3ddd1f49773dd7e39d8e80f9528fb9c5",
            "0x065cda7a43fc0f9c9020222850a5ad926cedc7d6bddf239d034454bed5c4bd78"
         ],
         [
            "0x1cd443e08a0b98bd0ee6dabcb52d928993bc7565035e2fe14a0720415d284d6f",
            "0x03f5ca544c64be5a2215baba2a7d6e8b3554dd4a4087cd09fa9ee50557de3ee4"
         ]
      ],
      [
         "0x03e301fc3938c14a158ab393095fdcd86f6e0dd49838ce322940228f3fdd3c80",
         "0x28143f38cfd83b3151739f2ce1ed2aeeb3f23230b56a8c46d2354a853e4b2e05"
      ]
   ]
}

Verifying ZkProof

const { ethers } = require('ethers');

let resp = await fetch('https://theconvo.space/api/zkidentity?address=vitalik.eth');
let { inputs, proof } = await resp.json();
let verifierAddress = "0x1cb460256bcece9aa216e80ccff5c3b98f8c9263";
let verifierAbi = [{"inputs":[{"components":[{"components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}],"internalType":"struct Pairing.G1Point","name":"a","type":"tuple"},{"components":[{"internalType":"uint256[2]","name":"X","type":"uint256[2]"},{"internalType":"uint256[2]","name":"Y","type":"uint256[2]"}],"internalType":"struct Pairing.G2Point","name":"b","type":"tuple"},{"components":[{"internalType":"uint256","name":"X","type":"uint256"},{"internalType":"uint256","name":"Y","type":"uint256"}],"internalType":"struct Pairing.G1Point","name":"c","type":"tuple"}],"internalType":"struct Verifier.Proof","name":"proof","type":"tuple"},{"internalType":"uint256[3]","name":"input","type":"uint256[3]"}],"name":"verifyTx","outputs":[{"internalType":"bool","name":"r","type":"bool"}],"stateMutability":"view","type":"function"}];

const provider = new ethers.providers.JsonRpcProvider();
const verifier = new ethers.Contract(verifierAddress, verifierAbi, provider);
let resp = verifier.verifyTx(proof, inputs);

console.log( resp === true );

Verifiable Credentials

Read more on the API here.

Learn More

Comments

Last updated on June 22, 2022