{"id":20049023,"url":"https://github.com/unlock-protocol/unlock-thirdweb","last_synced_at":"2026-06-10T17:30:59.780Z","repository":{"id":107046548,"uuid":"546307786","full_name":"unlock-protocol/unlock-thirdweb","owner":"unlock-protocol","description":null,"archived":false,"fork":false,"pushed_at":"2022-11-23T16:00:22.000Z","size":13,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-02T08:28:44.336Z","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":"2022-10-05T22:01:18.000Z","updated_at":"2022-10-07T19:42:06.000Z","dependencies_parsed_at":"2023-04-13T15:47:09.410Z","dependency_job_id":null,"html_url":"https://github.com/unlock-protocol/unlock-thirdweb","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/unlock-protocol/unlock-thirdweb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unlock-protocol%2Funlock-thirdweb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unlock-protocol%2Funlock-thirdweb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unlock-protocol%2Funlock-thirdweb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unlock-protocol%2Funlock-thirdweb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/unlock-protocol","download_url":"https://codeload.github.com/unlock-protocol/unlock-thirdweb/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unlock-protocol%2Funlock-thirdweb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34163253,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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:01.049Z","updated_at":"2026-06-10T17:30:59.761Z","avatar_url":"https://github.com/unlock-protocol.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Using Thirdweb to deploy Public Locks!\n\nThis project aims at making it easy for anyone to deploy Public Locks using Thirdweb's interfaces.\n\nTo achieve this, we deployed a \"proxy\" contract that maps Thirdweb's [`IContractFactory`](https://portal.thirdweb.com/contracts/IContractFactory) factory with Unlock's factory contract.\n\n## Deploying the factory contract\n\nThis should only be done once per network (and the Unlock team should probably do that for each network). We added a hardhat task for this.\n\nYou can replace `goerli` with your network name, as long as the network is in the `hardhat.config.js` file. You will also need to add an Etherscan (or similar) API key for verification purposes!\n\n```shell\nyarn hardhat run scripts/deploy.js --network goerli\n```\n\nAt this point (November 2022) the factory has been deployed to the following networks:\n\n- Goerli `0xeb4c31752c2525438e5346732d7ae84c6e6e7892`\n- Mainnet `0x8e0b46ec3b95c81355175693da0083b00fcc1326`\n- Polygon `0x527baf993c7a3ee9e30e70f5db00648bc374e46a`\n- Avalanche `0xe87efc02f26efe45171afdbec85d743fdb2eb1fb`\n- Optimism `0xe87efc02f26efe45171afdbec85d743fdb2eb1fb`\n- Arbitrum `0x88ed81de2d62849b337c3f31cd84d041bf26a38c`\n- Binance `0xe87efc02f26efe45171afdbec85d743fdb2eb1fb`\n\n## Releasing `PublicLock`\n\nYou need to do this from the Unlock Labs hardware wallet for the contract to appear [on this page with the previous releases](https://thirdweb.com/unlock-protocol.eth).\n\nWhen deploying a new version of the PublicLock (or when adding support for a new network), we create \"release\" of the Public Lock contract (taken from [Unlock's contracts package](https://github.com/unlock-protocol/unlock/tree/master/packages/contracts)) using `npx thirdweb release`. When doing this, choose `⬡ PublicLock` in the list of contracts to create a release for.\n\nOn the release form, it is important to select the `Deployable via proxy` option and then enter the _implementation_ addresses for each of the networks supported. You can find these by querying the `publicLockAddress` on each Unlock contract (you can find the addresses of each [Unlock contract on this page](https://docs.unlock-protocol.com/core-protocol/unlock/networks)). Don't click the `Deploy` button next to the address field because the implementation has already been deployed.\n\nIn the next section, enter the factory contract's address from the step above (it might already be completed).\n\nFinally, click on `Create Release`!\n\n## Deploying through ThirdWeb\n\nAt this point, you can use the ThirdWeb UI to deploy new locks and interface with them! The locks you deploy there will also show up on the Unlock dashboard and can be managed using both interfaces!\n\nFor any lock that was **not** deployed through the ThirdWeb dashboard, you can also easily import them there, by constructing the following URL: `https://thirdweb.com/\u003cchain name\u003e/\u003clock address\u003e/settings`.\n\nYou can also use ThirdWeb's SDK with the following: `sdk.getContract(address)`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funlock-protocol%2Funlock-thirdweb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funlock-protocol%2Funlock-thirdweb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funlock-protocol%2Funlock-thirdweb/lists"}