{"id":20049031,"url":"https://github.com/unlock-protocol/pindrop","last_synced_at":"2025-07-21T11:32:34.831Z","repository":{"id":107046425,"uuid":"414033026","full_name":"unlock-protocol/pindrop","owner":"unlock-protocol","description":"UDT Airdrop extraction of eligible addresses","archived":false,"fork":false,"pushed_at":"2021-10-06T01:38:27.000Z","size":4120,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-02T08:28:37.487Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/unlock-protocol.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-06T01:36:06.000Z","updated_at":"2021-10-06T01:38:29.000Z","dependencies_parsed_at":"2023-04-13T15:47:22.777Z","dependency_job_id":null,"html_url":"https://github.com/unlock-protocol/pindrop","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/unlock-protocol/pindrop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unlock-protocol%2Fpindrop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unlock-protocol%2Fpindrop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unlock-protocol%2Fpindrop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unlock-protocol%2Fpindrop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/unlock-protocol","download_url":"https://codeload.github.com/unlock-protocol/pindrop/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unlock-protocol%2Fpindrop/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266291752,"owners_count":23906324,"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":[],"created_at":"2024-11-13T11:48:02.003Z","updated_at":"2025-07-21T11:32:34.826Z","avatar_url":"https://github.com/unlock-protocol.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pindrop\n\nUnlock Inc. wants to airdrop UDT tokens to anyone who has contributed to the protocol before September 1st 2021.\nHowever we are building a claim mechanism that will require users to delegate their tokens if they want to claim them.\n\nRules are the following:\n* every token holder at block `13136426` who owns more than 3 UDT will receive 1 UDT\n* every user who has deployed 1 lock will receive 3 UDT per lock they deployed\n* every user who has purchased 1 key will receive 1 UDT per key purchased\n\n## Extracting recipient addresses\n\n### Mainnet:\n\nUse the `index.js` script with the following params:\n\n```javascript\nconst providerUrl = \"https://eth-mainnet.alchemyapi.io/v2/6idtzGwDtRbzil3s6QbYHr2Q_WBfn100\"\nconst unlockAddress = \"0x3d5409cce1d45233de1d4ebdee74b8e004abdd13\"\nconst maxBlocks = 100000000 // No block limit!\nconst startBlock = Math.floor(7120796/maxBlocks) * maxBlocks\nconst endBlock = 13136426 // Last transaction of August 31st 2021\n```\n\nSee results in `mainnet.js`.\n\n### xDAI:\n\n```javascript\nconst providerUrl = \"https://rpc.xdaichain.com/\"\nconst unlockAddress = \"0x14bb3586Ce2946E71B95Fe00Fc73dd30ed830863\"\nconst maxBlocks = 10000000\nconst startBlock = Math.floor(14521201/maxBlocks) * maxBlocks\nconst endBlock = 17866254 // Last transaction of August 31st 2021\n```\n\nSee results in `xdai.js`.\n\n### Polygon\n\nWe have not found a polygon provider which lets use un the same script as above in a reasonable time.\nAs a consequence, we used Dune.\n\nThis request lists all key purchasers:\n\n```sql\nSELECT \"to\", \"evt_tx_hash\" FROM unlock.\"PublicLock_evt_Transfer\"\n        WHERE evt_block_number \u003c 18605916\n        ORDER BY \"evt_block_time\" ASC\n```\n\nAnd this one lists all lock deployers:\n\n```sql\nSELECT \"lockOwner\", \"evt_tx_hash\" FROM unlock.\"Unlock_evt_NewLock\"\n        WHERE evt_block_number \u003c 18605916\n        ORDER BY \"evt_block_time\" ASC\n```\n\nWe then combined the outcome to build a `json` file of the same format as above.\n\n\n## Token holders:\n\nWe use the covalent API\n\n```bash\ncurl -X GET \"https://api.covalenthq.com/v1/1/tokens/0x90de74265a416e1393a450752175aed98fe11517/token_holders/?block-height=13136426\u0026page-number=0\u0026page-size=1000\u0026key=ckey_44739eb00dd649e182e708ba705\" -H \"Accept: application/json\"\ncurl -X GET \"https://api.covalenthq.com/v1/1/tokens/0x90de74265a416e1393a450752175aed98fe11517/token_holders/?block-height=13136426\u0026page-number=1\u0026page-size=1000\u0026key=ckey_44739eb00dd649e182e708ba705\" -H \"Accept: application/json\"\ncurl -X GET \"https://api.covalenthq.com/v1/1/tokens/0x90de74265a416e1393a450752175aed98fe11517/token_holders/?block-height=13136426\u0026page-number=2\u0026page-size=1000\u0026key=ckey_44739eb00dd649e182e708ba705\" -H \"Accept: application/json\"\ncurl -X GET \"https://api.covalenthq.com/v1/1/tokens/0x90de74265a416e1393a450752175aed98fe11517/token_holders/?block-height=13136426\u0026page-number=3\u0026page-size=1000\u0026key=ckey_44739eb00dd649e182e708ba705\" -H \"Accept: application/json\"\ncurl -X GET \"https://api.covalenthq.com/v1/1/tokens/0x90de74265a416e1393a450752175aed98fe11517/token_holders/?block-height=13136426\u0026page-number=4\u0026page-size=1000\u0026key=ckey_44739eb00dd649e182e708ba705\" -H \"Accept: application/json\"\n```\n\nAnd combined the result, and then restricted to all token holders with 3 UDT or more.\n\nWe are also adding any user who has been providing liquidity to the Uniswap v2 pool used by the protocol as of the same date.\n\n```bash\ncurl -X GET \"https://api.covalenthq.com/v1/1/tokens/0x9ca8aef2372c705d6848fdda3c1267a7f51267c1/token_holders/?block-height=13136426\u0026page-number=0\u0026page-size=1000\u0026key=ckey_44739eb00dd649e182e708ba705\" -H \"Accept: application/json\"\n```\n\n## Create a claimAndDelegate fork of the Uniswap merkle-dristribution repo!\n\n[See repo](https://github.com/unlock-protocol/merkle-distributor)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funlock-protocol%2Fpindrop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funlock-protocol%2Fpindrop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funlock-protocol%2Fpindrop/lists"}