{"id":24431768,"url":"https://github.com/silentcicero/ensverify","last_synced_at":"2026-05-22T07:05:45.441Z","repository":{"id":55165905,"uuid":"182076349","full_name":"SilentCicero/ensverify","owner":"SilentCicero","description":"An Ethereum name verification micro-service API that allows for a secondary source of proof for ENS name reduction (i.e. two-factor for ENS)","archived":false,"fork":false,"pushed_at":"2022-12-06T22:17:53.000Z","size":8510,"stargazers_count":3,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-08T02:02:46.365Z","etag":null,"topics":["2factor","ens","ethereum","factor","for","name","names","service","two","verify"],"latest_commit_sha":null,"homepage":"https://ensverify.com","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SilentCicero.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-04-18T11:36:44.000Z","updated_at":"2019-06-17T20:17:53.000Z","dependencies_parsed_at":"2023-01-24T11:31:42.529Z","dependency_job_id":null,"html_url":"https://github.com/SilentCicero/ensverify","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SilentCicero%2Fensverify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SilentCicero%2Fensverify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SilentCicero%2Fensverify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SilentCicero%2Fensverify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SilentCicero","download_url":"https://codeload.github.com/SilentCicero/ensverify/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243470779,"owners_count":20295995,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["2factor","ens","ethereum","factor","for","name","names","service","two","verify"],"created_at":"2025-01-20T15:21:52.568Z","updated_at":"2025-12-30T10:42:08.880Z","avatar_url":"https://github.com/SilentCicero.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"## ENS Verify\n\nA micro-api service which provides a second factor for name reduction verification using elliptic signature proofs for the Ethereum Name Service (ENS).\n\n## About\n\nThe Ethereum Name Service (ENS) is awesome, but I've found that I don't always like to trust a single source of name reduction (i.e. infura via my personal connection).\n\nI wanted an additional party to reduce the name via their connection, and sign a payload with a pre-established known-address reduction. This way, if my connection is compromised, I know the name reduction from the second party could not be spoofed, as they only sign specific name reductions. This service adds a second layer of security for ENS that is both easy to setup, establish and verify.\n\nENSVerify now uses Etherscan as its primary API provider.\n\n## Layout\n\nThe code provided is a simple front-end and lambda server written in NodeJS.\n\n`/frontend` the website frontend\n`/package` our front-end or client-side NPM package\n`/server` the lambda server which reduces and signs ENS names\n\n## Using the Service to Verify a Name\n\nBelow are some examples of using the verification API.\n\nOur server signing address is `0xa75D20DdA7883CBF720b131938B6DcE4d733F877`. This will be known ahead of time and in-wallet client-side.\n\nThe signature reduction is as follows.\n\n### Our JS Library (which uses axios and ethers.js):\n```js\nconst verify = require('ensverify');\n\n// verify a specfici name and address to be correct\nverify('registrar.firefly.eth', '0x6fC21092DA55B392b045eD78F4732bff3C580e2c')\n.then(result =\u003e console.log(result)) // true\n.catch(console.log);\n\n// Returns Promise Object\n// true if verified correct\n// throws otherwise\n```\n\n### Raw Example (using axios and ethers.js):\n```js\nconst axios = require('axios');\nconst ethers = require('ethers');\n\n// name and address in question\nconst name = 'registrar.firefly.eth';\nconst address = '0x6fC21092DA55B392b045eD78F4732bff3C580e2c';\n\n// provider address\nconst provider = '0xa75D20DdA7883CBF720b131938B6DcE4d733F877';\n\n// json params for axios\nconst payload = axios.post('https://verify.ensverify.com/', JSON.stringify({ name }))\n.then(result =\u003e {\n  // build payload (minimized for data)\n  const payload = {\n    name, // name to verify\n    address, // address to verify\n    timestamp: result.data.t, // call timestamp\n  };\n\n  // signed digest\n  const hashDigest = ethers.utils.keccak256(ethers.utils.toUtf8Bytes(JSON.stringify(payload)));\n\n  // verified\n  if (provider == ethers.utils.recoverAddress(hashDigest, result.data.s)) {\n    console.log('Name has been verified by ENSVerify.com!');\n  }\n})\n.catch(console.log);\n```\n\n## Developer Install\n\n```\ngit clone https://github.com/SilentCicero/ensverify\nnpm install\n```\n\nTo run the example:\n\n```\nnode ./verify-example.js\n```\n\n## Now/Zeit\n\nWe use now.sh to host our Lambda service.\n\n## License\n\nThis project is licensed under the MIT license, Copyright (c) 2019 Nick Dodson. For more information see LICENSE.md.\n\n```\nThe MIT License\n\nCopyright (c) 2019 Nick Dodson. nickdodson.com \u003cthenickdodson@gmail.com\u003e\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsilentcicero%2Fensverify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsilentcicero%2Fensverify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsilentcicero%2Fensverify/lists"}