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
9Chain AbusechainabuseChain Abuse Reports
10Coinvisecoinvise
  • 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
11Commons Stackcommonstack$TRUST Score
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
19ENSens10 Points for Reverse Resolution to your Address.
20EtherscanetherscanFlagged Labels like Akropolis Hacker
21Fortaforta- Number of 'HIGH', 'MEDIUM', 'CRITICAL' Alerts
22Foundationfoundation- NFTs Sold
- Average Sale Value
- Followers
- Following
23Gitcoingitcoin10 Points for funding a Grant.
24GivethgivethGiveth Donations
25GoldfinchgoldfinchGoldfinch UID
27Go Plusgoplus
  • 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
28GovernorDAOgovernordaoProof of Existence
29Hive.onehiveonePoints for,6
- Attention Score
- Insider Score
30HuddlnhuddlnHuddln XP
31Idenaidena1 Point for Verification
31Karma ProtocolkarmaKarma Score
32KlimaDAOklimaAmount of Carbon Offset
33Known Originknownorigin- NFTs Sold
- Average Sale Value
34LabelslabelsCross Chain Address Label Cloud,
  • Ethereum
  • Arbitrum
  • Avalanche
  • BSC
  • Optimism
  • Polygon
  • Solana
35Layer3layer3- XP
- Level
36LearnWeb3learnweb3- Graduation Badges
37Lens ProtocollensLens Profile
38MetagamemetagameSeason XP ** 0.5
39MyEtherWalletmew-20 on being Blacklisted
40Mirrormirror10 Points for being a writer on Mirror
41Parallel IDparallelParallel ID
42POAPpoap1 Point for Each POAP Received
43Proof of Humanitypoh8 Points for Verification
44Proof of Personhoodpop- Price of Forgery
- Personhood Score
45Polygon EcosystempolygonRelative Score out of 100 based on,
- Number of Transactions
- Net Volume Transacted
- Retention
46Project Galaxyprojectgalaxy1 Point for each Eligible Credential
47QuadrataquadrataQuadrata Passport
48Questbookquestbook- Valid Grants
- Sucessful Applications.
49RabbitHolerabbithole- Points equal to the Levels you cross on RabbitHole.
- TaskIDs of the tasks Completed
50Rariblerarible- Total NFTs Sold
- Total NFTs Created
- Total NFT Owned
- Average Sale Value
- Followers
- Following
51RSS3rss3- Profile
- Backlinks
- Accounts
- Links
52ScanBlocksscanblocks
  • hacker
  • phisher
  • scammer
  • fraudster
53Roci.firocifiCredit Score (0-10)
54SDNsdnSpecially Designated Nationals
55Showtimeshowtime- Followers
- Following
56SuperRaresuperrare- NFTs Sold
- Average Sale Value
- Followers
- Following
57Token BlackliststokenblacklistsBlacklist Data for USDC, USDT, BUSD, TUSD, USDP, EUROC, EURT
58Transaction Datatxn
  • Age of Address
  • Total Transaction Count
  • Gas Spend
  • Contracts Deployed
  • Failed Txn Count
  • Failed Gas Spend
  • Funded by Tornado Cash
  • Tornado Cash Interactions
59UnipassunipassPoints for Level
60Uniswap Sybiluniswap10 Points for Verification
61Unstoppable Domainsunstoppable10 Points for Reverse Reslution to your Address.
62UpalaupalaUpala ID
63UpshotupshotUpshot GMI Score
64Yupyup- Yup Score
65Zapperzapper- Following
- Followers
- xp
- zp
66Zorazora- 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

Last updated on September 8, 2022