{"id":19607090,"url":"https://github.com/jbx-protocol/juice-delegates-registry","last_synced_at":"2026-05-18T15:31:47.620Z","repository":{"id":65389603,"uuid":"588336850","full_name":"jbx-protocol/juice-delegates-registry","owner":"jbx-protocol","description":"A contract managing the curated Juicebox delegates","archived":false,"fork":false,"pushed_at":"2023-07-01T21:07:53.000Z","size":993,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-06T22:54:43.099Z","etag":null,"topics":["ethereum","juicebox","juicebox-delegate","solidity"],"latest_commit_sha":null,"homepage":"https://npmjs.com/package/@jbx-protocol/juice-delegates-registry","language":"Solidity","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/jbx-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":"2023-01-12T22:03:53.000Z","updated_at":"2023-07-08T06:22:00.000Z","dependencies_parsed_at":"2025-01-10T08:33:31.379Z","dependency_job_id":null,"html_url":"https://github.com/jbx-protocol/juice-delegates-registry","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jbx-protocol/juice-delegates-registry","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbx-protocol%2Fjuice-delegates-registry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbx-protocol%2Fjuice-delegates-registry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbx-protocol%2Fjuice-delegates-registry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbx-protocol%2Fjuice-delegates-registry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jbx-protocol","download_url":"https://codeload.github.com/jbx-protocol/juice-delegates-registry/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbx-protocol%2Fjuice-delegates-registry/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33182727,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-18T09:27:30.708Z","status":"ssl_error","status_checked_at":"2026-05-18T09:27:28.300Z","response_time":71,"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":["ethereum","juicebox","juicebox-delegate","solidity"],"created_at":"2024-11-11T10:08:48.246Z","updated_at":"2026-05-18T15:31:47.587Z","avatar_url":"https://github.com/jbx-protocol.png","language":"Solidity","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Juice Delegates Registry\n\n## Summary\nProvide an easy to access function linking Juicebox protocol pay and redemption delegate with their respective deployer address.\nThis registry use create and create2 to, based on a deployer address and a nonce, generate a deterministic address for a delegate.\nThis address is then used as a key to store the deployer address.\n\n## Design\n### Flow\nAfter deploying a delegate, any addresses can call `registry.addDelegate(address deployer, uint256 nonce)` to add it. The registry will compute the corresponding \ndelegate address and add it. Alternatively, addDelegateCreate2(address _deployer, bytes32 _salt, bytes calldata _bytecode) can\nbe used to add delegate deployed from a contract, using create2. This registry doesn't inforce any delegate interface implementation (and could be used for any deployed contract).\n\nThe frontend might retrieve the correct nonce, for both contract and eoa, using  ethers `provider.getTransactionCount(address)` or web3js `web3.eth.getTransactionCount` just *before* the delegate deployment (if adding a delegate at a later time, manual nonce counting might be needed).\nCreate2 salt is based on the delegate deployer own internal logic while the deployment bytecode can be retrieved in the deployment transaction (off-chain) or via `abi.encodePacked(type(delegateContract).creationCode, abi.encode(constructorArguments))` (on-chain)\n\nThis registry is the second iteration and fallback on the previous version, if needed, when calling `deployerOf`.\n\n### Contracts/interface\n- JBDelegatesRegistry: the registry\n- IJBDelegatesRegistry; the registry interface\n\n## Usage\nAnyone can deploy this registry using the provided forge script.\nTo run this repo, you'll need [Foundry](https://book.getfoundry.sh/) and [NodeJS](https://nodejs.dev/en/learn/how-to-install-nodejs/) installed.\nInstall the dependencies with `npm install \u0026\u0026 git submodule update --init --force --recursive`, you should then be able\nto run the tests using `forge test` or deploy a new registry using `forge script Deploy` (and the correct arguments, based on the chain and key you want to use - see the [Foundry docs](https://book.getfoundry.sh/)).\n\n## Use-case\nThis registry allows frontend to easily and trustlessly query the deployer behind a given delegate. This might then used to assume a delegate as \"safe\" or not, based on front-end opinion.\n\n## Risks \u0026 trade-off\nA nasty delegate has a mint privilege access. It is therefore a key responsability to front-end providing informations to project owners and users on unintended/potentially adversarial behaviour, especially for unknow delegates.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbx-protocol%2Fjuice-delegates-registry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjbx-protocol%2Fjuice-delegates-registry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbx-protocol%2Fjuice-delegates-registry/lists"}