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
1101.xyz (opens in a new tab)101badgesBadges
2Aave (opens in a new tab)aave
  • totalCollateralETH
  • totalDebtETH
  • availableBorrowsETH
  • currentLiquidationThreshold
  • ltv
  • healthFactor
Across: Main Market, AMM Market, Polygon Market, Avalanche Market
3Alchemy (opens in a new tab)alchemyReports on isSpamContract (opens in a new tab)
4ArcX (opens in a new tab)arcxPoints for each indexed ArcX Score
5Async Art (opens in a new tab)asyncart
  • NFTs Sold
  • Average Sale Value
6Binance Account Bound Token (opens in a new tab)babtToken Ownership
7Bird (opens in a new tab)birdBird Rating
8Boardroom (opens in a new tab)boardroom
  • Number of Votes given
  • DAOs participated In
  • Voting History
9BrightId (opens in a new tab)brightid37 Points for Verification
10Celo Verified Attestations (opens in a new tab)celo1 Point for each valid Attestation
11Chain Abuse (opens in a new tab)chainabuseChain Abuse Reports
12Coinvise (opens in a new tab)coinviseUser Profile
13Commons Stack (opens in a new tab)commonstack$TRUST Score
14Coordinape (opens in a new tab)coordinapeNumber of teammates
15Cred Protocol (opens in a new tab)credprotocolCredit Score Report
16CryptoRelief (opens in a new tab)cryptoreliefDonations
17CryptoScamDB (opens in a new tab)cryptoscamdb-20 Points for being flagged
18Cyberconnect (opens in a new tab)cyberconnect
  • Followers
  • Following
  • Social
  • Display Name
19Dapplist (opens in a new tab)dapplist
  • Dapps Hunted
  • XP
20DeBank (opens in a new tab)debank
  • base_score
  • rank
  • social_coefficient
  • social_score
  • total_score
21DeepDAO (opens in a new tab)deepdao
  • score
  • rank
  • relativeScore
  • daos
  • proposals
  • votes
22ENS (opens in a new tab)ens10 Points for Reverse Resolution to your Address.
23Etherscan (opens in a new tab)etherscanFlagged Labels like Akropolis Hacker
24Ethrank (opens in a new tab)ethrankRank
25Fortaforta- Number of 'HIGH', 'MEDIUM', 'CRITICAL' Alerts
26Foundation (opens in a new tab)foundation- NFTs Sold
- Average Sale Value
- Followers
- Following
27Gitcoin (opens in a new tab)gitcoin10 Points for funding a Grant.
28Giveth (opens in a new tab)givethGiveth Donations
29Golden (opens in a new tab)goldenGolden Points
30Goldfinch (opens in a new tab)goldfinchGoldfinch UID
31Go Plus (opens in a new tab)goplus
  • blacklist_doubt
  • honeypot_related_address
  • contract_address
  • phishing_activities
  • blackmail_activities
  • stealing_attack
  • fake_kyc
  • malicious_mining_activities
  • darkweb_transactions
  • cybercrime
  • money_laundering
  • financial_crime
32GovernorDAO (opens in a new tab)governordaoProof of Existence
33Humanbound (opens in a new tab)hbtToken Ownership
34Hive.one (opens in a new tab)hiveonePoints for,6
- Attention Score
- Insider Score
35Huddln (opens in a new tab)huddlnHuddln XP
36Idena (opens in a new tab)idena1 Point for Verification
37Karma Protocol (opens in a new tab)karmaKarma Score
38KlimaDAO (opens in a new tab)klimaAmount of Carbon Offset
39Known Origin (opens in a new tab)knownorigin- NFTs Sold
- Average Sale Value
40Krebit (opens in a new tab)krebit
  • VCs
  • Krebits
41Kycdao (opens in a new tab)kycdaoKYC Verfication Status
42LabelslabelsCross Chain Address Label Cloud,
  • Ethereum
  • Arbitrum
  • Avalanche
  • BSC
  • Optimism
  • Polygon
  • Solana
43Layer3 (opens in a new tab)layer3- XP
- Level
44LearnWeb3 (opens in a new tab)learn web3- Graduation Badges
45Lens Protocol (opens in a new tab)lensLens Profile
46Mazury (opens in a new tab)mazuryBadges
47Metagame (opens in a new tab)metagameSeason XP ** 0.5
48MyEtherWallet (opens in a new tab)mew-20 on being Blacklisted
49Mirror (opens in a new tab)mirror10 Points for being a writer on Mirror
50Parallel ID (opens in a new tab)parallelParallel ID
51POAP (opens in a new tab)poap1 Point for Each POAP Received
52Proof of Humanity (opens in a new tab)poh8 Points for Verification
53Proof of Personhood (opens in a new tab)pop- Price of Forgery
- Personhood Score
54Polygon Ecosystem (opens in a new tab)polygonRelative Score out of 100 based on,
- Number of Transactions
- Net Volume Transacted
- Retention
55Project Galaxy (opens in a new tab)projectgalaxy1 Point for each Eligible Credential
56Quadrata (opens in a new tab)quadrataQuadrata Passport
57Questbook (opens in a new tab)questbook- Valid Grants
- Sucessful Applications.
58RabbitHole (opens in a new tab)rabbithole- Points equal to the Levels you cross on RabbitHole.
- TaskIDs of the tasks Completed
59Rarible (opens in a new tab)rarible- Total NFTs Sold
- Total NFTs Created
- Total NFT Owned
- Average Sale Value
- Followers
- Following
60RSS3 (opens in a new tab)rss3- Profile
- Backlinks
- Accounts
- Links
61ScanBlocksscanblocks
  • hacker
  • phisher
  • scammer
  • fraudster
62Roci.fi (opens in a new tab)rocifiCredit Score (0-10)
63SDN (opens in a new tab)sdnSpecially Designated Nationals
64Seedchain (opens in a new tab)seedchain- Trees Planted
65Showtime (opens in a new tab)showtime- Followers
- Following
66Spectral (opens in a new tab)spectral- MACRO Score
67SuperRare (opens in a new tab)superrare- NFTs Sold
- Average Sale Value
- Followers
- Following
68Token Blacklists (opens in a new tab)tokenblacklistsBlacklist Data for USDC, USDT, BUSD, TUSD, USDP, EUROC, EURT
69Transaction Datatxn
  • Age of Address
  • Total Transaction Count
  • Gas Spend
  • Contracts Deployed
  • Failed Txn Count
  • Failed Gas Spend
  • Funded by Tornado Cash
  • Tornado Cash Interactions
70Unipass (opens in a new tab)unipassPoints for Level
71Uniswap Sybil (opens in a new tab)uniswap10 Points for Verification
72Unstoppable Domains (opens in a new tab)unstoppable10 Points for Reverse Reslution to your Address.
73Upala (opens in a new tab)upalaUpala ID
74Upshot (opens in a new tab)upshotUpshot GMI Score
75WIW (opens in a new tab)wiwWIW Badges
76Yup (opens in a new tab)yup- Yup Score
77Zapper (opens in a new tab)zapper- Following
- Followers
- xp
- zp
78Zora (opens in a new tab)zora- 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": {},
  "alchemy": false,
  "arcx": {
    "disabled": true
  },
  "asyncart": {
    "totalCountSold": 0,
    "totalAmountSold": 0,
    "username": "vitalik",
    "name": "vitalik.eth",
    "picURL": "https://res.cloudinary.com/asynchronous-art-inc/image/upload/t_profile_l_avatar,w_160,f_png/v00000000000/users/0xd8da6bf26964af9d7eed9e03e53415d37aa96045.png",
    "address": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
    "bio": "",
    "location": "",
    "website": ""
  },
  "bird": {
    "bird_rating": 10,
    "eth_balance": 2471.229555202156,
    "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
  },
  "commonsstack": false,
  "coordinape": {
    "disabled": true
  },
  "cryptorelief": {
    "amount": 0
  },
  "cryptoscamdb": false,
  "cyberconnect": {
    "data": {
      "identity": {
        "address": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
        "followingCount": 0,
        "followerCount": 25651,
        "social": {
          "twitter": "VitalikButerin"
        }
      }
    }
  },
  "dapplist": {
    "score": 0,
    "dapps": []
  },
  "debank": {
    "base_score": 55.09881135629814,
    "rank": 142,
    "social_coefficient": 1.3575331755268074,
    "social_score": 11.825614909544385,
    "total_score": 66.92442626584253
  },
  "deepdao": {},
  "ens": "vitalik.eth",
  "etherscan": false,
  "forta": [
    {
      "severity": "MEDIUM",
      "protocol": "ethereum",
      "source": {
        "transactionHash": "0xc3929975f6bfb14e0750bb9cac91b1bda2b262a471611b7e82fa848bf6c6cd76",
        "block": {
          "number": 15128780,
          "timestamp": "2022-07-12T15:58:41Z",
          "chainId": 1
        },
        "bot": {
          "id": "0xfb8465b9dd4fc91739a1ed5a508cc24423b2c13938e27adea8903bf083fe533b"
        }
      }
    },
    {
      "severity": "MEDIUM",
      "protocol": "ethereum",
      "source": {
        "transactionHash": "0xd320d0f9b884da01b80ad25d70b0d1fe91913d7d7bf8789c2710ca0502e4b817",
        "block": {
          "number": 15128482,
          "timestamp": "2022-07-12T14:54:22Z",
          "chainId": 1
        },
        "bot": {
          "id": "0xfb8465b9dd4fc91739a1ed5a508cc24423b2c13938e27adea8903bf083fe533b"
        }
      }
    },
    {
      "severity": "MEDIUM",
      "protocol": "ethereum",
      "source": {
        "transactionHash": "0x4ebc1b0faee8df132515dfc5255ba51aa252c387e10feb902972d7c5e5ed3a06",
        "block": {
          "number": 15125147,
          "timestamp": "2022-07-12T02:24:38Z",
          "chainId": 1
        },
        "bot": {
          "id": "0xfb8465b9dd4fc91739a1ed5a508cc24423b2c13938e27adea8903bf083fe533b"
        }
      }
    },
    {
      "severity": "MEDIUM",
      "protocol": "ethereum",
      "source": {
        "transactionHash": "0x16f934c555d1cbe153742c8300bf81d96f4450963bde4c79fb66fb8322a37ca8",
        "block": {
          "number": 15124997,
          "timestamp": "2022-07-12T01:52:02Z",
          "chainId": 1
        },
        "bot": {
          "id": "0xfb8465b9dd4fc91739a1ed5a508cc24423b2c13938e27adea8903bf083fe533b"
        }
      }
    },
    {
      "severity": "MEDIUM",
      "protocol": "ethereum",
      "source": {
        "transactionHash": "0x16f934c555d1cbe153742c8300bf81d96f4450963bde4c79fb66fb8322a37ca8",
        "block": {
          "number": 15124997,
          "timestamp": "2022-07-12T01:52:02Z",
          "chainId": 1
        },
        "bot": {
          "id": "0xfb8465b9dd4fc91739a1ed5a508cc24423b2c13938e27adea8903bf083fe533b"
        }
      }
    }
  ],
  "foundation": {
    "totalCountSold": 0,
    "totalAmountSold": 0,
    "followerCount": 0,
    "followingCount": 0
  },
  "gitcoin": {
    "funder": true
  },
  "goldfinch": false,
  "governordao": false,
  "hiveone": {
    "_id": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
    "attention_score": 879.35498046875,
    "attention_score_change_week": -2.9769999980926514,
    "cluster_id": "2209261",
    "created_at": "2022-03-17T00:00:00Z",
    "id": "8404233766",
    "identity": {
      "clusters": [
        {
          "active": true,
          "created_at": "2020-12-01T11:19:54Z",
          "id": "2300535731",
          "name": "Polkadot",
          "updated_at": "2022-02-10T18:22:37Z"
        },
        {
          "active": true,
          "created_at": "2021-08-27T15:14:17Z",
          "id": "7799179304",
          "name": "React",
          "updated_at": "2021-12-20T09:55:19Z"
        },
        {
          "active": true,
          "created_at": "2021-08-27T15:14:17Z",
          "id": "7799179322",
          "name": "Poker",
          "updated_at": "2022-01-03T22:33:04Z"
        },
        {
          "active": true,
          "created_at": "2021-09-30T00:24:47Z",
          "id": "2209261",
          "name": "Ethereum",
          "updated_at": "2022-03-24T16:17:09Z"
        }
      ],
      "id": "3792855450",
      "social_accounts": [
        {
          "social_account": {
            "@type": "type.googleapis.com/twitter.account.TwitterAccount",
            "created_at": "2011-05-08T16:03:03Z",
            "description": "Ethereum.\n\nFable of the Dragon Tyrant (not mine but it's important): https://t.co/imsWsmOAT8\n\nAbolish daylight savings time (and leap seconds too)",
            "followers_count": "3623758",
            "following_count": "296",
            "id": "295218901",
            "location": "Earth",
            "name": "vitalik.eth",
            "personal": true,
            "profile_image_url": "https://pbs.twimg.com/profile_images/977496875887558661/L86xyLF4_normal.jpg",
            "screen_name": "VitalikButerin",
            "tweets_count": "17103",
            "updated_at": "2022-04-03T04:33:17Z",
            "url": "https://t.co/IHF9ic0Ejh"
          }
        }
      ]
    },
    "insider_score": 0.8009719848632812,
    "personal_rank": "1",
    "rank": "1",
    "social_account": {
      "social_account": {
        "@type": "type.googleapis.com/twitter.account.TwitterAccount",
        "created_at": "2011-05-08T16:03:03Z",
        "description": "Ethereum.\n\nFable of the Dragon Tyrant (not mine but it's important): https://t.co/imsWsmOAT8\n\nAbolish daylight savings time (and leap seconds too)",
        "followers_count": "3623758",
        "following_count": "296",
        "id": "295218901",
        "location": "Earth",
        "name": "vitalik.eth",
        "personal": true,
        "profile_image_url": "https://pbs.twimg.com/profile_images/977496875887558661/L86xyLF4_normal.jpg",
        "screen_name": "VitalikButerin",
        "tweets_count": "17103",
        "updated_at": "2022-04-03T04:33:17Z",
        "url": "https://t.co/IHF9ic0Ejh"
      }
    }
  },
  "idena": false,
  "karma": {
    "score": 0,
    "daos": [
      "ENS DAO",
      "Hop Exchange",
      "Optimism"
    ]
  },
  "klima": false,
  "knownorigin": {
    "totalCountSold": 0,
    "totalAmountSold": 0
  },
  "labels": {
    "success": false,
    "error": "Not in DB."
  },
  "layer3": {},
  "learnweb3": false,
  "lens": false,
  "metagame": false,
  "mew": false,
  "mirror": false,
  "poap": 70,
  "poh": false,
  "pop": false,
  "polygon": false,
  "projectgalaxy": {
    "id": "WoKVUVH2WabnkqAcGcReTL",
    "username": "",
    "eligibleCredentials": {
      "list": []
    }
  },
  "quadrata": false,
  "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
      }
    }
  },
  "rocifi": false,
  "rss3": {
    "profile": {},
    "backlinks": [],
    "accounts": [],
    "links": []
  },
  "sdn": false,
  "showtime": {
    "success": false,
    "error": "Not in DB."
  },
  "superrare": false,
  "tokenblacklists": false,
  "txn": {
    "ethereumAge": 2479,
    "ethereumGasSpend": "21.918470772548254677",
    "polygonAge": 357,
    "polygonGasSpend": "0.021788048805369",
    "optimismAge": 186,
    "optimismGasSpend": "0.002134864146"
  },
  "unipass": false,
  "uniswap": {
    "success": false,
    "error": "Not in DB."
  },
  "unstoppable": false,
  "upala": false,
  "yup": {
    "success": false,
    "error": "Not in DB."
  },
  "zapper": {
    "followers": 5752,
    "following": 0,
    "xp": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
    "zp": 0
  },
  "zora": {
    "totalCountSold": 0,
    "totalAmountSold": 0
  },
  "score": 82,
  "signature": "0x975bd01e083a32882e75f60dd5b51c0e088667fc978a9790444cabada3cb59d46db589237bebf88795bc28439763900e52f6d27ce2a476ad2c363a810c6e4d511c",
  "signatureAddress": "0xCCcccCcC54317EE02C2dBfdD832a67C7acD28e06",
  "success": true
}

Example 2,

https://theconvo.space/api/identity?address=0xD665afb9A4019a8c482352aaa862567257Ed62CF&apikey=apikey
View Response
{
  "aave": {},
  "alchemy": false,
  "arcx": {
    "disabled": true
  },
  "asyncart": {
    "totalCountSold": 0,
    "totalAmountSold": 0,
    "username": "archangel",
    "name": "Archangel",
    "picURL": "https://res.cloudinary.com/asynchronous-art-inc/image/upload/t_profile_l_avatar,w_160,f_png/v00000000000/users/0xd665afb9a4019a8c482352aaa862567257ed62cf.png",
    "address": "0xd665afb9a4019a8c482352aaa862567257ed62cf",
    "userType": "artist",
    "bio": "A Digital Abstract artist trying to depict the way of memento mori!",
    "location": "India",
    "website": "https://www.archangel77.com/",
    "twitter": "TheArchangel22",
    "instagram": "_thearchangel__"
  },
  "bird": {
    "bird_rating": 1.18,
    "eth_balance": 1.262811302170669,
    "nbr_account_age_days": 505,
    "nbr_transaction_count": 660
  },
  "boardroom": {
    "totalVotes": 1,
    "daos": [
      "rarible"
    ],
    "votes": [
      {
        "dao": "rarible",
        "vote": "Yes",
        "proposalLink": "https://app.boardroom.info/compound/proposal/cHJvcG9zYWw6cmFyaWJsZTpkZWZhdWx0OnFtdWhucXo0YXkxNGdqNmFwd202b242bDR5Y2dmcHgzYmF3eTJjeW0zcHdqN3U="
      }
    ]
  },
  "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
  },
  "commonsstack": false,
  "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": false,
  "deepdao": {},
  "ens": false,
  "etherscan": false,
  "forta": [],
  "foundation": {
    "totalCountSold": 9,
    "totalAmountSold": 181608.84,
    "followerCount": 2186,
    "followingCount": 52
  },
  "gitcoin": {
    "funder": false
  },
  "goldfinch": false,
  "governordao": false,
  "hiveone": false,
  "idena": false,
  "karma": false,
  "klima": false,
  "knownorigin": {
    "totalCountSold": 3,
    "totalAmountSold": 4860
  },
  "labels": {
    "success": false,
    "error": "Not in DB."
  },
  "layer3": {},
  "learnweb3": false,
  "lens": false,
  "metagame": false,
  "mew": false,
  "mirror": false,
  "poap": 1,
  "poh": false,
  "pop": false,
  "polygon": false,
  "projectgalaxy": {
    "id": "heYJq328iZkPHU89BUoVrP",
    "username": "",
    "eligibleCredentials": {
      "list": []
    }
  },
  "quadrata": false,
  "questbook": {
    "grantApplications": 0,
    "grants": 0
  },
  "rabbithole": {
    "level": 1,
    "score": 0,
    "tasksCompleted": [],
    "credentials": []
  },
  "rarible": {
    "totalAmountSold": 0,
    "error": {
      "message": "Invalid Request",
      "response": {
        "size": 0,
        "timeout": 0
      }
    }
  },
  "rocifi": false,
  "rss3": {
    "profile": {},
    "backlinks": [],
    "accounts": [],
    "links": []
  },
  "sdn": false,
  "showtime": {
    "_id": "0xD665afb9A4019a8c482352aaa862567257Ed62CF",
    "profile_id": 9080,
    "wallet_address": "0x8bD67300f3E32BEE4c2ED7c64d7c3535C9aF9eBd",
    "name": "Archangel",
    "img_url": "https://storage.googleapis.com/nft-public-profile-pics/9080_1621960618.jpg",
    "timestamp": "2021-05-28T15:28:10.147",
    "username": "TheArchangel",
    "verified": true,
    "wallet_addresses": [
      "0xd665afb9a4019a8c482352aaa862567257ed62cf",
      "0x8bD67300f3E32BEE4c2ED7c64d7c3535C9aF9eBd"
    ],
    "followers": 3102,
    "following": 125
  },
  "superrare": false,
  "tokenblacklists": false,
  "txn": {
    "ethereumAge": 553,
    "ethereumGasSpend": "6.130596933406455037",
    "polygonAge": 0,
    "polygonGasSpend": "0.0",
    "optimismAge": 0,
    "optimismGasSpend": "0.0"
  },
  "unipass": false,
  "uniswap": {
    "success": false,
    "error": "Not in DB."
  },
  "unstoppable": false,
  "upala": false,
  "yup": {
    "success": false,
    "error": "Not in DB."
  },
  "zapper": {
    "followers": 0,
    "following": 0,
    "xp": "0xd665afb9a4019a8c482352aaa862567257ed62cf",
    "zp": 0
  },
  "zora": {
    "totalCountSold": 0,
    "totalAmountSold": 0
  },
  "score": 12,
  "signature": "0xfc8f40680c95414c6687ae5676c7c988416f490f1e0f760bae37189ef316f50f41f7e9581f342019e034ea0953c4d75271c6264429134b28c10981809903fec51c",
  "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