Administration
The protocol has very minimal global governance - ensuring that each project owns and is responsible for its own funds and destiny. The following are the only global functions that can be accessed by a privileged administrating address, initially the JuiceboxDAO multisig, a 9 of 14 multisig voted in by JBX members:
JBProjects.setTokenUriResolver(...)
Allows the owner of theJBProjectscontract to provide and change theIJBTokenUriResolverused to resolve metadata for project NFTs in itstokenURI(...)function.
JBPrices.addPriceFeedFor(...)
Allows the owner of theJBPricescontract to add new price feeds used to convert amounts denoted in one currency to another. Once added, a default price feed cannot be removed. A project owner can set and use custom price feeds, but cannot override default price feeds.
JBDirectory.setIsAllowedToSetFirstController(...)
Allows the owner of theJBDirectorycontract to add/remove addresses that can set a project's first controller on its behalf. Allowed contracts simplify project deployments by removing the need for the project's owner to send a second transaction to set the controller in the directory.
JBFeelessAddresses.setFeelessAddress(...)
Allows the owner of theJBFeelessAddressescontract to add/remove addresses that can receive funds from projects without incurring fees typically taken any time funds leave the ecosystem.JBBuybackHookRegistry.allowHook(...)&&JBBuybackHookRegistry.disallowHook(...)
Allows the owner of theJBBuybackHookRegistrycontract to add/remove addresses that serve as the buyback hook. Projects using the registry as the buyback hook can either inherit changes made by this owner, or set their own hook among those allowed by the owner.JBSwapTerminalRegistry.allowTerminal(...)&&JBSwapTermianlRegistry.disallowTerminal(...)
Allows the owner of theJBSwapTerminalRegistrycontract to add/remove addresses that serve as the swap terminal. Projects using the registry as a terminal can either inherit changes made by this owner, or set their own swap terminal among those allowed by the owner.JBSuckersRegistry.allowSuckerDeployer(...)&&JBSuckersRegistry.allowSuckerDeployer(...)&&JBSuckersRegistry.removedSuckerDeployer(...)
Allows the owner of theJBSuckersRegistrycontract to add/remove addresses that can deploy new suckers. The owner must approve of infrastructure that extends existing projects to new chains.
Ownership for each contract is managed independently and can be transferred to a new owner by the current owner.