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
# | Integration | Key | Factors and Score |
---|---|---|---|
1 | 101.xyz (opens in a new tab) | 101badges | Badges |
2 | Aave (opens in a new tab) | aave |
|
3 | Alchemy (opens in a new tab) | alchemy | Reports on isSpamContract (opens in a new tab) |
4 | ArcX (opens in a new tab) | arcx | Points for each indexed ArcX Score |
5 | Async Art (opens in a new tab) | asyncart |
|
6 | Binance Account Bound Token (opens in a new tab) | babt | Token Ownership |
7 | Bird (opens in a new tab) | bird | Bird Rating |
8 | Boardroom (opens in a new tab) | boardroom |
|
9 | BrightId (opens in a new tab) | brightid | 37 Points for Verification |
10 | Celo Verified Attestations (opens in a new tab) | celo | 1 Point for each valid Attestation |
11 | Chain Abuse (opens in a new tab) | chainabuse | Chain Abuse Reports |
12 | Coinvise (opens in a new tab) | coinvise | User Profile |
13 | Commons Stack (opens in a new tab) | commonstack | $TRUST Score |
14 | Coordinape (opens in a new tab) | coordinape | Number of teammates |
15 | Cred Protocol (opens in a new tab) | credprotocol | Credit Score Report |
16 | CryptoRelief (opens in a new tab) | cryptorelief | Donations |
17 | CryptoScamDB (opens in a new tab) | cryptoscamdb | -20 Points for being flagged |
18 | Cyberconnect (opens in a new tab) | cyberconnect |
|
19 | Dapplist (opens in a new tab) | dapplist |
|
20 | DeBank (opens in a new tab) | debank |
|
21 | DeepDAO (opens in a new tab) | deepdao |
|
22 | ENS (opens in a new tab) | ens | 10 Points for Reverse Resolution to your Address. |
23 | Etherscan (opens in a new tab) | etherscan | Flagged Labels like Akropolis Hacker |
24 | Ethrank (opens in a new tab) | ethrank | Rank |
25 | Forta | forta | - Number of 'HIGH', 'MEDIUM', 'CRITICAL' Alerts |
26 | Foundation (opens in a new tab) | foundation | - NFTs Sold - Average Sale Value - Followers - Following |
27 | Gitcoin (opens in a new tab) | gitcoin | 10 Points for funding a Grant. |
28 | Giveth (opens in a new tab) | giveth | Giveth Donations |
29 | Golden (opens in a new tab) | golden | Golden Points |
30 | Goldfinch (opens in a new tab) | goldfinch | Goldfinch UID |
31 | Go Plus (opens in a new tab) | goplus |
|
32 | GovernorDAO (opens in a new tab) | governordao | Proof of Existence |
33 | Humanbound (opens in a new tab) | hbt | Token Ownership |
34 | Hive.one (opens in a new tab) | hiveone | Points for,6 - Attention Score - Insider Score |
35 | Huddln (opens in a new tab) | huddln | Huddln XP |
36 | Idena (opens in a new tab) | idena | 1 Point for Verification |
37 | Karma Protocol (opens in a new tab) | karma | Karma Score |
38 | KlimaDAO (opens in a new tab) | klima | Amount of Carbon Offset |
39 | Known Origin (opens in a new tab) | knownorigin | - NFTs Sold - Average Sale Value |
40 | Krebit (opens in a new tab) | krebit |
|
41 | Kycdao (opens in a new tab) | kycdao | KYC Verfication Status |
42 | Labels | labels | Cross Chain Address Label Cloud,
|
43 | Layer3 (opens in a new tab) | layer3 | - XP - Level |
44 | LearnWeb3 (opens in a new tab) | learn web3 | - Graduation Badges |
45 | Lens Protocol (opens in a new tab) | lens | Lens Profile |
46 | Mazury (opens in a new tab) | mazury | Badges |
47 | Metagame (opens in a new tab) | metagame | Season XP ** 0.5 |
48 | MyEtherWallet (opens in a new tab) | mew | -20 on being Blacklisted |
49 | Mirror (opens in a new tab) | mirror | 10 Points for being a writer on Mirror |
50 | Parallel ID (opens in a new tab) | parallel | Parallel ID |
51 | POAP (opens in a new tab) | poap | 1 Point for Each POAP Received |
52 | Proof of Humanity (opens in a new tab) | poh | 8 Points for Verification |
53 | Proof of Personhood (opens in a new tab) | pop | - Price of Forgery - Personhood Score |
54 | Polygon Ecosystem (opens in a new tab) | polygon | Relative Score out of 100 based on, - Number of Transactions - Net Volume Transacted - Retention |
55 | Project Galaxy (opens in a new tab) | projectgalaxy | 1 Point for each Eligible Credential |
56 | Quadrata (opens in a new tab) | quadrata | Quadrata Passport |
57 | Questbook (opens in a new tab) | questbook | - Valid Grants - Sucessful Applications. |
58 | RabbitHole (opens in a new tab) | rabbithole | - Points equal to the Levels you cross on RabbitHole. - TaskIDs of the tasks Completed |
59 | Rarible (opens in a new tab) | rarible | - Total NFTs Sold - Total NFTs Created - Total NFT Owned - Average Sale Value - Followers - Following |
60 | RSS3 (opens in a new tab) | rss3 | - Profile - Backlinks - Accounts - Links |
61 | ScanBlocks | scanblocks |
|
62 | Roci.fi (opens in a new tab) | rocifi | Credit Score (0-10) |
63 | SDN (opens in a new tab) | sdn | Specially Designated Nationals |
64 | Seedchain (opens in a new tab) | seedchain | - Trees Planted |
65 | Showtime (opens in a new tab) | showtime | - Followers - Following |
66 | Spectral (opens in a new tab) | spectral | - MACRO Score |
67 | SuperRare (opens in a new tab) | superrare | - NFTs Sold - Average Sale Value - Followers - Following |
68 | Token Blacklists (opens in a new tab) | tokenblacklists | Blacklist Data for USDC, USDT, BUSD, TUSD, USDP, EUROC, EURT |
69 | Transaction Data | txn |
|
70 | Unipass (opens in a new tab) | unipass | Points for Level |
71 | Uniswap Sybil (opens in a new tab) | uniswap | 10 Points for Verification |
72 | Unstoppable Domains (opens in a new tab) | unstoppable | 10 Points for Reverse Reslution to your Address. |
73 | Upala (opens in a new tab) | upala | Upala ID |
74 | Upshot (opens in a new tab) | upshot | Upshot GMI Score |
75 | WIW (opens in a new tab) | wiw | WIW Badges |
76 | Yup (opens in a new tab) | yup | - Yup Score |
77 | Zapper (opens in a new tab) | zapper | - Following - Followers - xp - zp |
78 | Zora (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
- Contract Address:
0x1cb460256bcece9aa216e80ccff5c3b98f8c9263
View on PolygonScan (opens in a new tab)
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
- https://gov.gitcoin.co/t/the-gitcoin-anti-sybil-flywheel/9417 (opens in a new tab)
- https://gitcoin.co/blog/a-community-based-roadmap-for-sybil-detection-across-web-3/ (opens in a new tab)
- The Laws of Identity - Kim Cameron (opens in a new tab)