{"id":18263315,"url":"https://github.com/safe-global/safe-deployments","last_synced_at":"2026-01-29T12:03:45.562Z","repository":{"id":38048112,"uuid":"357832728","full_name":"safe-global/safe-deployments","owner":"safe-global","description":"A collection of Safe singleton deployments","archived":false,"fork":false,"pushed_at":"2026-01-22T16:27:37.000Z","size":2999,"stargazers_count":177,"open_issues_count":20,"forks_count":393,"subscribers_count":10,"default_branch":"main","last_synced_at":"2026-01-23T09:33:16.429Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/safe-global.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":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-04-14T08:34:39.000Z","updated_at":"2026-01-21T19:02:45.000Z","dependencies_parsed_at":"2023-02-10T14:45:43.512Z","dependency_job_id":"88ec1b00-6c85-430c-b771-1f3109a80865","html_url":"https://github.com/safe-global/safe-deployments","commit_stats":{"total_commits":626,"total_committers":162,"mean_commits":"3.8641975308641974","dds":0.8258785942492013,"last_synced_commit":"f6f18955a64aa1efb2050d3578bd7a21f3e37362"},"previous_names":["gnosis/safe-deployments"],"tags_count":83,"template":false,"template_full_name":null,"purl":"pkg:github/safe-global/safe-deployments","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/safe-global%2Fsafe-deployments","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/safe-global%2Fsafe-deployments/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/safe-global%2Fsafe-deployments/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/safe-global%2Fsafe-deployments/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/safe-global","download_url":"https://codeload.github.com/safe-global/safe-deployments/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/safe-global%2Fsafe-deployments/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28877051,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-29T10:31:27.438Z","status":"ssl_error","status_checked_at":"2026-01-29T10:31:01.017Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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-05T11:10:44.966Z","updated_at":"2026-01-29T12:03:45.555Z","avatar_url":"https://github.com/safe-global.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Safe Deployments\n\n[![npm version](https://badge.fury.io/js/%40safe-global%2Fsafe-deployments.svg)](https://badge.fury.io/js/%40safe-global%2Fsafe-deployments)\n[![CI](https://github.com/safe-global/safe-deployments/actions/workflows/test.yml/badge.svg)](https://github.com/safe-global/safe-deployments/actions/workflows/test.yml)\n\nThis contract contains a collection of deployments of the contract of the [Safe contracts repository](https://github.com/safe-global/safe-smart-account).\n\nThe addresses on the different networks and the abi files are available for each deployment. To get an overview of the available versions, check the available [json assets](./src/assets/).\n\n## Adding additional deployments:\n\n1. Follow the [deployment steps in the Safe contract repository](https://github.com/safe-global/safe-smart-account/#deployments).\n2. Verify that the addresses match the expected address for each contract. You can find them under the \"addresses\" mapping in the respective JSON file in the [assets folder](./src/assets/).\n3. Create a PR adding the new deployment. Example PR can be found [here](https://github.com/safe-global/safe-deployments/pull/676).\n\n## Deployments overview\n\n\u003e ContractScan is a 3rd party tool that is not maintained by the Safe team\n\n- [1.0.0](https://contractscan.xyz/bundle?name=Safe+1.0.0\u0026addresses=0xb6029ea3b2c51d09a50b53ca8012feeb05bda35a,0x12302fe9c02ff50939baaaaf415fc226c078613c)\n- [1.1.1](https://contractscan.xyz/bundle?name=Safe+1.1.1\u0026addresses=0xf61a721642b0c0c8b334ba3763ba1326f53798c0,0x8538fcbccba7f5303d2c679fa5d7a629a8c9bf4a,0xd5d82b6addc9027b22dca772aa68d5d74cdbdf44,0x34cfac646f301356faa8b21e94227e3583fe3f5f,0x8d29be29923b68abfdd21e541b9374737b49cdad,0x76e2cfc1f5fa8f6a5b3fc4c8f4788f0116861f9b)\n- [1.2.0](https://contractscan.xyz/bundle?name=Safe+1.2.0\u0026addresses=0x6851d6fdfafd08c0295c392436245e5bc78b0185)\n- 1.3.0\n  - [Canonical](https://contractscan.xyz/bundle?name=Safe+1.3.0\u0026addresses=0xf48f2b2d2a534e402487b3ee7c18c33aec0fe5e4,0x7cbb62eaa69f79e6873cd1ecb2392971036cfaa4,0xd9db270c1b5e3bd161e8c8503c55ceabee709552,0x3e5c63644e683549055b9be8653de26e0b4cd36e,0xa238cbeb142c10ef7ad8442c6d1f9e89e07e7761,0x40a2accbd92bca938b02010e17a5b8929b49130d,0xa6b71e26c5e0845f74c812102ca7114b6a896ab2,0xa65387f16b013cf2af4605ad8aa5ec25a2cba3a2,0x59ad6735bcd8152b84860cb256dd9e96b85f69da)\n  - [EIP-155](https://contractscan.xyz/bundle?name=Safe+1.3.0+EIP-155\u0026addresses=0x017062a1de2fe6b99be3d9d37841fed19f573804,0xb19d6ffc2182150f8eb585b79d4abcd7c5640a9d,0x69f4d1788e39c87893c980c06edf4b7f686e2938,0xfb1bffc9d739b8d520daf37df666da4c687191ea,0x998739bfdaadde7c933b942a68053933098f9eda,0xa1dabef33b3b82c7814b6d82a79e50f4ac44102b,0xc22834581ebc8527d974f8a1c97e1bea4ef910bc,0x98ffbbf51bb33a056b08ddf711f289936aaff717,0x727a77a074d1e6c4530e814f89e618a3298fc044)\n  - [ZKsync](https://contractscan.xyz/bundle?name=Safe+1.3.0+zkSync\u0026addresses=0x2f870a80647bbc554f3a0ebd093f11b4d2a7492a,0xcb8e5e438c5c2b45fbe17b02ca9af91509a8ad56,0xb00ce5cccdef57e539ddced01df43a13855d9910,0x1727c2c531cf966f902e5927b98490fdfb3b2b70,0x0dfcccb95225ffb03c6fbb2559b530c2b7c8a912,0xf220d3b4dfb23c4ade8c88e526c1353abacbc38f,0xdaec33641865e4651fb43181c6db6f7232ee91c2,0x357147caf9c0cca67dfa0cf5369318d8193c8407,0x4191e2e12e8bc5002424ce0c51f9947b02675a44)\n- 1.4.1\n  - [Canonical](https://contractscan.xyz/bundle?name=Safe+1.4.1\u0026addresses=0xfd0732dc9e303f09fcef3a7388ad10a83459ec99,0x9b35af71d77eaf8d7e40252370304687390a1a52,0x38869bf66a61cf6bdb996a6ae40d5853fd43b526,0x9641d764fc13c8b624c04430c7356c1c7c8102e2,0x41675c099f32341bf84bfc5382af534df5c7461a,0x29fcb43b46531bca003ddc8fcb67ffe91900c762,0x4e1dcf7ad4e460cfd30791ccc4f9c8a4f820ec67,0xd53cd0ab83d845ac265be939c57f53ad838012c9,0x3d4ba2e0884aa488718476ca2fb8efc291a46199,0x526643F69b81B008F46d95CD5ced5eC0edFFDaC6,0xfF83F6335d8930cBad1c0D439A841f01888D9f69,0xBD89A1CE4DDe368FFAB0eC35506eEcE0b1fFdc54)\n  - [zkSync](https://contractscan.xyz/bundle?name=Safe+1.4.1+zkSync\u0026addresses=0x9301E98DD367135f21bdF66f342A249c9D5F9069,0xAAA566Fe7978bB0fb0B5362B7ba23038f4428D8f,0x0408EF011960d02349d50286D20531229BCef773,0x309D0B190FeCCa8e1D5D8309a16F7e3CB133E885,0xC35F063962328aC65cED5D4c3fC5dEf8dec68dFa,0x610fcA2e0279Fa1F8C00c8c2F71dF522AD469380,0x817756C6c555A94BCEE39eB5a102AbC1678b09A7,0xc329D02fd8CB2fc13aa919005aF46320794a8629,0xa26620d1f8f1a2433F0D25027F141aaCAFB3E590,0x199A9df0224031c20Cc27083A4164c9c8F1Bcb39,0xAca1ec0a1A575CDCCF1DC3d5d296202Eb6061888,0xdd35026932273768A3e31F4efF7313B5B7A7199d)\n- [1.5.0](https://contractscan.xyz/bundle?name=Safe+1.5.0\u0026addresses=0x3EfCBb83A4A7AfcB4F68D501E2c2203a38be77f4,0x2Ef5ECfbea521449E4De05EDB1ce63B75eDA90B4,0x85a8ca358D388530ad0fB95D0cb89Dd44Fc242c3,0xA83c336B20401Af773B6219BA5027174338D1836,0x218543288004CD07832472D464648173c77D7eB7,0xFf51A5898e281Db6DfC7855790607438dF2ca44b,0xEdd160fEBBD92E350D4D398fb636302fccd67C7e,0x6439e7ABD8Bb915A5263094784C5CF561c4172AC,0x14F2982D601c9458F93bd70B218933A6f8165e7b,0x900C7589200010D6C6eCaaE5B06EBe653bc2D82a,0x4FfeF8222648872B3dE295Ba1e49110E61f5b5aa,0x07EfA797c55B5DdE3698d876b277aBb6B893654C,0x54e86d004d71a8D2112ec75FaCE57D730b0433F3)\n\n## Install\n\n- npm - `npm i @safe-global/safe-deployments`\n- yarn - `yarn add @safe-global/safe-deployments`\n\n## Usage\n\nIt is possible to directly use the JSON files in the [assets folder](./src/assets/) that contain the addresses and ABI definitions.\n\nAn alternative is using JavaScript library methods to query the correct deployment. The library supports different methods to get the deployment of a specific contract.\n\nEach of the methods takes an optional `DeploymentFilter` as a parameter.\n\n```ts\ninterface DeploymentFilter {\n  version?: string;\n  released?: boolean; // Defaults to true if no filter is specified\n  network?: string; // Chain id of the network\n}\n```\n\n### V1 Methods (Single Deployments)\n\nThose methods will return a `SingletonDeployment` object or `undefined` if no deployment was found for the specified filter.\n\n```ts\nexport interface SingletonDeployment {\n  // The default address of the deployment.\n  defaultAddress: string;\n\n  // Indicates if the deployment is released.\n  released: boolean;\n\n  // The name of the contract.\n  contractName: string;\n\n  // The version of the deployment.\n  version: string;\n\n  // The address \u0026 hash of the contract code, where the key is the deployment type.\n  // There could be multiple deployment types: canonical, eip155, zksync\n  // Possible addresses per version:\n  // 1.0.0: canonical\n  // 1.1.1: canonical\n  // 1.2.0: canonical\n  // 1.3.0: canonical, eip155, zksync\n  // 1.4.1: canonical, zksync\n  // Ex: deployments: { \"canonical\": { \"codeHash\": \"0x1234\", \"address\": \"0x5678\"}}\n  deployments: Record\u003cstring, { address: string; codeHash: string }\u003e;\n\n  // A record of network addresses, where the key is the network identifier and the value is the address.\n  networkAddresses: Record\u003cstring, string\u003e;\n\n  // The ABI (Application Binary Interface) of the contract.\n  abi: any[];\n}\n```\n\n- Safe\n\n```ts\nconst safeSingleton = getSafeSingletonDeployment();\n\n// Returns latest contract version, even if not finally released yet\nconst safeSingletonNightly = getSafeSingletonDeployment({ released: undefined });\n\n// Returns released contract version for specific network\nconst safeSingletonGörli = getSafeSingletonDeployment({ network: '5' });\n\n// Returns released contract version for specific version\nconst safeSingleton100 = getSafeSingletonDeployment({ version: '1.0.0' });\n\n// Version with additional events used on L2 networks\nconst safeL2Singleton = getSafeL2SingletonDeployment();\n```\n\n- Factories\n\n```ts\nconst proxyFactory = getProxyFactoryDeployment();\n```\n\n- Libraries\n\n```ts\nconst multiSendLib = getMultiSendDeployment();\n\nconst multiSendCallOnlyLib = getMultiSendCallOnlyDeployment();\n\nconst createCallLib = getCreateCallDeployment();\n\nconst signMessageLib = getSignMessageLibDeployment();\n```\n\n- Fallback Handlers\n\n```ts\nconst standardFallbackHandler = getFallbackHandlerDeployment();\n\nconst tokenCallbackHandler = getTokenCallbackHandlerDeployment();\n\nconst compatHandler = getCompatibilityFallbackHandlerDeployment();\n\nconst extensibleFallbackHandler = getExtensibleFallbackHandlerDeployment();\n```\n\n### V2 Methods (Multiple Deployments)\n\nWe added a new methods that allow multiple deployment addresses for a contract.\n\nThose methods will return a `SingletonDeployment` object or `undefined` if no deployment was found for the specified filter. Notice the difference in the `networkAddresses` field.\n\n```ts\nexport interface SingletonDeployment {\n  // The default address of the deployment.\n  defaultAddress: string;\n\n  // Indicates if the deployment is released.\n  released: boolean;\n\n  // The name of the contract.\n  contractName: string;\n\n  // The version of the deployment.\n  version: string;\n\n  // The address \u0026 hash of the contract code, where the key is the deployment type.\n  // There could be multiple deployment types: canonical, eip155, zksync\n  // Possible addresses per version:\n  // 1.0.0: canonical\n  // 1.1.1: canonical\n  // 1.2.0: canonical\n  // 1.3.0: canonical, eip155, zksync\n  // 1.4.1: canonical, zksync\n  // Ex: deployments: { \"canonical\": { \"codeHash\": \"0x1234\", \"address\": \"0x5678\"}}\n  deployments: Record\u003cstring, { address: string; codeHash: string }\u003e;\n\n  // A record of network addresses, where the key is the network identifier and the value is the address.\n  networkAddresses: Record\u003cstring, string | string[]\u003e;\n\n  // The ABI (Application Binary Interface) of the contract.\n  abi: any[];\n}\n```\n\n- Safe\n\n```ts\nconst safeSingleton = getSafeSingletonDeployments();\n\n// Returns latest contract version, even if not finally released yet\nconst safeSingletonNightly = getSafeSingletonDeployments({ released: undefined });\n\n// Returns released contract version for specific network\nconst safeSingletonGörli = getSafeSingletonDeployments({ network: '5' });\n\n// Returns released contract version for specific version\nconst safeSingleton100 = getSafeSingletonDeployments({ version: '1.0.0' });\n\n// Version with additional events used on L2 networks\nconst safeL2Singleton = getSafeL2SingletonDeployments();\n```\n\n- Factories\n\n```ts\nconst proxyFactory = getProxyFactoryDeployments();\n```\n\n- Libraries\n\n```ts\nconst multiSendLib = getMultiSendDeployments();\n\nconst multiSendCallOnlyLib = getMultiSendCallOnlyDeployments();\n\nconst createCallLib = getCreateCallDeployments();\n\nconst signMessageLib = getSignMessageLibDeployments();\n```\n\n- Handler\n\n```ts\nconst standardFallbackHandler = getFallbackHandlerDeployments();\n\nconst tokenCallbackHandler = getTokenCallbackHandlerDeployments();\n\nconst compatHandler = getCompatibilityFallbackHandlerDeployments();\n\nconst extensibleFallbackHandler = getExtensibleFallbackHandlerDeployments();\n```\n\n## Release Cycle\n\n`safe-deployments` release cycle is once per month, except for urgent issues that require immediate attention.\n\n## Notes\n\n- v1 supports only one address per network, while v2 allows multiple addresses per network. To maintain compatibility with v1, the address order in v2 is arranged so that the first address matches the one used in v1.\n\n- A list of network information can be found at [chainid.network](https://chainid.network/)\n\n## License\n\nThis library is released under MIT.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsafe-global%2Fsafe-deployments","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsafe-global%2Fsafe-deployments","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsafe-global%2Fsafe-deployments/lists"}