PR
Background
Balancer’s boosted pools have seen great adoption over the recent year. In order to expand the Boosted Pools product to more protocols in addition to Aave, a Linear Pool registration process needs to be established so that LP’s and Swappers can experience great UX during the user flow.
One typical example of a boosted pool is the inclusion of a Balancer Pool Token (BPT) in the Form of a Linear Pool. Each Linear Pool is being deployed from the respective ProtocolLinearPoolFactory. One and the same LinearPoolFactory can however be used to create Linear Pools for multiple different protocols, if they are for example forks. During the creation of a Linear Pool, a protocolId parameter needs to be passed. Let’s look at some examples.
- Create a (Aaave protocol) DAI-aDAI Linear Pool - deployed from the AaveLinearPoolFactory - pass 1 as an example protocolId parameter.
- Create a (Aave protocol) USDC-aUSDC Linear Pool - deployed from the AaveLinearPoolFactory - pass 1 as an example protocolID parameter.
- Create a (Sturdy protocol) Dai-sDAI Linear Pool - deployed from the AaveLinearPoolFactory - pass 13 as an example protocolId parameter.
- Create a (Euler protocol) USDC-eUSDC Linear Pool - deployed from the EulerLinearPoolFactory - pass 5 as an example protocolId parameter.
Creating a boosted pool is permissionless. Therefore a process to register protocols is required to allow data-consumers to distinguish which pool belongs to which protocol, even if the pool has been created from the same factory.
Dependencies
Only authorized accounts can register a protocolId. Orb collective proposes to have this be handled by the Balancer Maxis.
In order for this to happen, a Balancer Maxis account needs to be granted the permission to call the function registerProtocolId(uint256,string)
and renameProtocolId(uint256,string)
, which requires a previously granted authorisation. For this an interaction with the Authoriser contract is necessary. Once this has been done, the Balancer Maxis account can call registerProtocolId()
and renameProtocolId
on a global protocolID registry contract. This contract is deployed on the following networks:
chain | address |
---|---|
mainnet | 0xc3ccacE87f6d3A81724075ADcb5ddd85a8A1bB68 |
polygon | 0xa523f47A933D5020b23629dDf689695AA94612Dc |
arbitrum | 0x5cF4928a3205728bd12830E1840F7DB85c62a4B9 |
optimism | 0x9805dcfD25e6De36bad8fe9D3Fe2c9b44B764102 |
gnosis | 0x6B5dA774890Db7B7b96C6f44e6a4b0F657399E2e |
goerli | 0x4fb47126Fa83A8734991E41B942Ac29A3266C968 |
The protocolIDs registered by the Balancer Maxis shall be unique.
Specification
-
As per the linked payload, The DAO multisig in each network will initiate transactions with the Authorizer 0xA331D84eC860Bf466b4CdCcFb4aC09a1B43F3aE6 and call
grantRole
providing the address ofLM Multisig
on a given chain as the account, and the list of the ActionIDs per chain in the table below as roles. -
Once a new protocolId registration is required, the Balancer Maxis activate the
LM Multisig
to call registerProtocolId() on the ProtocolIdRegistry with a protocolId parameter and name. The protocolId and Name will be determined in collaboration with Orb and the original change requestor. -
A protocol looking to get its protocolId registered should engage with the Balancer Maxis or Orb Collective to determine what the appropriate protocolId and name to be registered is and action the on-chain change.
deployment | chain | function | role | target | target_address |
---|---|---|---|---|---|
20230223-protocol-id-registry | arbitrum | registerProtocolId(uint256,string) | 0xfed0eb6041728fc141bad70d04446ff0e9c8289a4f53cc060addc832c914b44f | BalancerMaxis | 0xc38c5f97B34E175FFd35407fc91a937300E33860 |
20230223-protocol-id-registry | arbitrum | renameProtocolId(uint256,string) | 0xdc8681b640b547e98ee6f4d708df559b807526d976644c3aca24bc12c4f839c3 | BalancerMaxis | 0xc38c5f97B34E175FFd35407fc91a937300E33860 |
20230223-protocol-id-registry | gnosis | registerProtocolId(uint256,string) | 0x0ed00e8835e2d2867dcdf863354062a805ff3fe1dabf44c0b68378c84c52616e | BalancerMaxis | 0x14969B55a675d13a1700F71A37511bc22D90155a |
20230223-protocol-id-registry | gnosis | renameProtocolId(uint256,string) | 0xfb760772d39ec169b9e7cd49bccd8858c635114d103dea72a7a694d094e8930c | BalancerMaxis | 0x14969B55a675d13a1700F71A37511bc22D90155a |
20230223-protocol-id-registry | mainnet | registerProtocolId(uint256,string) | 0x09a880cf3d54a213316bf4d92d60e72ba0ab61a639fce84378eefb9a63d6abd5 | BalancerMaxis | 0xc38c5f97B34E175FFd35407fc91a937300E33860 |
20230223-protocol-id-registry | mainnet | renameProtocolId(uint256,string) | 0x4f3dee5b767f91b4faa9979f01808dd2490fde931a9eb355d5f8e0187826dade | BalancerMaxis | 0xc38c5f97B34E175FFd35407fc91a937300E33860 |
20230223-protocol-id-registry | optimism | registerProtocolId(uint256,string) | 0x176a1b54ac0ba4509b1a508223c85146627bbe203b18b2beaa28b6992b3b021d | BalancerMaxis | 0x09Df1626110803C7b3b07085Ef1E053494155089 |
20230223-protocol-id-registry | optimism | renameProtocolId(uint256,string) | 0x8630bf555a7a5baabd493fc2afc07b7baa6ea598eaea016acd0d926a6a6962fa | BalancerMaxis | 0x09Df1626110803C7b3b07085Ef1E053494155089 |
20230223-protocol-id-registry | polygon | registerProtocolId(uint256,string) | 0x8f64bed4b4e908316d1d51abae6d2ca2c0f6ac132d219882be578341027b587b | BalancerMaxis | 0xc38c5f97B34E175FFd35407fc91a937300E33860 |
20230223-protocol-id-registry | polygon | renameProtocolId(uint256,string) | 0x5dd6754fa5d8d56f6177c0265c35ab00ee57aa8a190975f1fba56a18796f0aeb | BalancerMaxis | 0xc38c5f97B34E175FFd35407fc91a937300E33860 |
20230223-protocol-id-registry | goerli | registerProtocolId(uint256,string) | 0xdfc349d88d311b76af85f0bdc6a81be0e30485d488472e3813359f8e26fc1c95 | BalancerMaxis | 0x3bAbEBfD684506A5B47701ee231A53427Ad413Ef |
20230223-protocol-id-registry | goerli | renameProtocolId(uint256,string) | 0x397a10db2c15733cdb7c0fad6226786d83e216ed46c740257186765f4018bec5 | BalancerMaxis | 0x3bAbEBfD684506A5B47701ee231A53427Ad413Ef |
Going forward, whenever a protocol seeks to get its protocolId registered, Orb Collective and Balancer Maxis will coordinate with the respective protocol to ensure a proper registration process. The Balancer Maxis are mandated by this BIP to make necessary on-chain changes to the registry at the instructions of the Orb collective without individual veBAL governance around each change.