{"id":19610754,"url":"https://github.com/onflow/hybrid-custody","last_synced_at":"2026-03-04T10:31:34.492Z","repository":{"id":156440442,"uuid":"624993943","full_name":"onflow/hybrid-custody","owner":"onflow","description":"Cadence suite enabling Hybrid Custody on Flow","archived":false,"fork":false,"pushed_at":"2024-11-22T22:36:28.000Z","size":261,"stargazers_count":17,"open_issues_count":3,"forks_count":12,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-12-07T11:41:50.945Z","etag":null,"topics":["hybrid-custody","onflow","smart-contracts"],"latest_commit_sha":null,"homepage":"","language":"Cadence","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/onflow.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-07T19:32:29.000Z","updated_at":"2025-07-15T10:25:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"6d1dce7a-6194-4956-9733-7c36f3bb4316","html_url":"https://github.com/onflow/hybrid-custody","commit_stats":null,"previous_names":["onflow/hybrid-custody"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/onflow/hybrid-custody","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onflow%2Fhybrid-custody","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onflow%2Fhybrid-custody/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onflow%2Fhybrid-custody/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onflow%2Fhybrid-custody/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/onflow","download_url":"https://codeload.github.com/onflow/hybrid-custody/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onflow%2Fhybrid-custody/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30078308,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T08:01:56.766Z","status":"ssl_error","status_checked_at":"2026-03-04T08:00:42.919Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["hybrid-custody","onflow","smart-contracts"],"created_at":"2024-11-11T10:33:07.374Z","updated_at":"2026-03-04T10:31:34.475Z","avatar_url":"https://github.com/onflow.png","language":"Cadence","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hybrid Custody\n\n![Tests](https://github.com/onflow/hybrid-custody/actions/workflows/integration-tests.yml/badge.svg)\n[![codecov](https://codecov.io/gh/onflow/hybrid-custody/branch/main/graph/badge.svg?token=5GWD5NHEKF)](https://codecov.io/gh/onflow/hybrid-custody)\n\n**Please see [Flow's documentation about account\nlinking](https://developers.flow.com/concepts/hybrid-custody/guides/linking-accounts) for more information and\nexamples.**\n\nThis repo contains a primary contract for managing ChildAccounts to permit hybrid custody in scenarios where apps only\nwant to share a subset of resources on their accounts with various parents. In many cases, this will be a user's primary\nwallet outside of the application a child account came from\n\nApps need assurances that their own resources are safe from malicious actors, so giving out full custody might not be\nthe form of hybrid custody that they want. In this model, the app still maintains control of their managed accounts, but\nthey can:\n\n1. Share capabilities freely, with a few built-in controls over the types of capabilities that can be returned with some\n   helper contracts (the `CapabilityFactory`, and `CapabilityFilter`)\n1. Share additional capabilities (public or private) with a parent account via a `CapabilityDelegator` resource\n\n## Deployment Details\n\n| Network    | Address                                                                              |\n| ---------- | ------------------------------------------------------------------------------------ |\n| Testnet    | [0x294e44e1ec6993c6](https://testnet.contractbrowser.com/account/0x294e44e1ec6993c6) |\n| Mainnet    | [0xd8a7e05a7ac670c0](https://contractbrowser.com/account/0xd8a7e05a7ac670c0)         |\n\n### Hosted `CapabilityFactory` \u0026 `CapabilityFilter` Implementations\n\n\u003e :information_source: `CapabilityFactory.Manager` implementations and `CapabilityFilter.AllowAllFilter` have been\n\u003e deployed to the accounts below for generalized use cases to make account linking as easy as possible. These\n\u003e generalized implementations likely cover most use cases, but you'll want to weigh the decision to use them according\n\u003e to your risk tolerance and specific scenario.\n\n| Use Case | Testnet Address | Mainnet Address |\n| -------- | --------------- | --------------- |\n| NFT Capability Factories       | [0x1055970ee34ef4dc](https://f.dnz.dev/0x1055970ee34ef4dc/storage/CapabilityFactory_0x294e44e1ec6993c6) | [0xee9ff4f07a2d6dad](https://f.dnz.dev/0xee9ff4f07a2d6dad/storage/CapabilityFactory_0xd8a7e05a7ac670c0) |\n| FT Capability Factories        | [0x08bed9e8508ed20e](https://f.dnz.dev/0x08bed9e8508ed20e/storage/CapabilityFactory_0x294e44e1ec6993c6) | [0x410aa603925923d9](https://f.dnz.dev/0x410aa603925923d9/storage/CapabilityFactory_0xd8a7e05a7ac670c0) |\n| NFT + FT Capability Factories  | [0x1b7fa5972fcb8af5](https://f.dnz.dev/0x1b7fa5972fcb8af5/storage/CapabilityFactory_0x294e44e1ec6993c6) | [0x071d382668250606](https://f.dnz.dev/0x071d382668250606/storage/CapabilityFactory_0xd8a7e05a7ac670c0) |\n| AllowAllFilter                 | [0xe2664be06bb0fe62](https://f.dnz.dev/0xe2664be06bb0fe62/storage/CapabilityFilter_0x294e44e1ec6993c6) | [0x78e93a79b05d0d7d](https://f.dnz.dev/0x78e93a79b05d0d7d/storage/CapabilityFilter_0xd8a7e05a7ac670c0)  |\n\n## Development\n\nFollow the steps outlined below to set up your development environment.\n\n1. **Initialize and Update Submodules**\n\n   This project uses [Flow CLI's Dependency Manager](https://developers.flow.com/tools/flow-cli/dependency-manager). To\n   install them, run the following command in your terminal:\n\n   ```bash\n   flow dependencies install\n   ```\n\n2. **Run Flow Emulator**\n\n   Kickstart your development by running the flow emulator. Use the following command in your terminal:\n\n## Audit report\n\nHybrid Custody was audited by Oak Security in July 2023: [final report](https://github.com/oak-security/audit-reports/blob/master/Dapper%20Labs/Audit%20Report%20-%20Hybrid%20Custody%20Smart%20Contracts.pdf).\n\n   ```bash\n   flow emulator start\n   ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonflow%2Fhybrid-custody","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fonflow%2Fhybrid-custody","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonflow%2Fhybrid-custody/lists"}