Skip to content

[codex] Add ERC20 lock boost provider#822

Draft
skhomuti wants to merge 6 commits into
phase-2from
feat/erc20-lock-boost-provider
Draft

[codex] Add ERC20 lock boost provider#822
skhomuti wants to merge 6 commits into
phase-2from
feat/erc20-lock-boost-provider

Conversation

@skhomuti

@skhomuti skhomuti commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add an ERC20 lock boost provider with per-operator vaults, step-based group boost caching, and Lido Aragon voting proxy support.
  • Extend MetaRegistry with weight boost provider registration and an explicit group-aware flag for composition-change hooks.
  • Add interfaces and unit coverage for ERC20 locks, vault voting proxy behavior, MetaRegistry provider add/remove flows, and group-aware refresh routing.

Comment thread src/interfaces/IERC20LockBoostProvider.sol Outdated
Comment thread src/interfaces/IERC20LockBoostProvider.sol Outdated
Comment thread src/ERC20LockBoostProvider.sol
Comment thread src/ERC20LockBoostProvider.sol Outdated
Comment thread src/ERC20LockBoostProvider.sol
Comment thread src/ERC20LockBoostProvider.sol Outdated
Comment thread src/ERC20LockBoostProvider.sol
Comment thread src/ERC20LockVault.sol
Comment thread src/ERC20LockVault.sol
Comment thread src/ERC20LockVault.sol Outdated
@skhomuti skhomuti force-pushed the feat/erc20-lock-boost-provider branch 2 times, most recently from 712c919 to 0407b20 Compare June 19, 2026 08:28
@skhomuti skhomuti changed the base branch from develop to phase-2 June 22, 2026 10:09
@skhomuti skhomuti force-pushed the feat/erc20-lock-boost-provider branch from 0407b20 to a8f0f49 Compare June 22, 2026 14:05

/// @inheritdoc IWeightBoostProvider
function getWeightBoostBP(uint256 nodeOperatorId) external view returns (uint256 boostBP) {
boostBP = _getBoostBP(_storage().locks[nodeOperatorId].amount);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MAX_BP + amount I guess

@skhomuti skhomuti force-pushed the feat/erc20-lock-boost-provider branch from f8c45db to bd8b09d Compare June 25, 2026 06:44

accounting.grantRole(accounting.MANAGE_BOND_CURVES_ROLE(), address(deployer));
accounting.grantRole(accounting.SET_BOND_CURVE_MULTIPLIER_ROLE(), address(additionalBondRegistry));
metaRegistry.addWeightBoostProvider(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where is LDO lock provider?


ICuratedModule public immutable MODULE;
IMetaRegistry public immutable META_REGISTRY;
address public immutable TOKEN;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel that this provider is already LDO-specific and it makes no sense to name it as general ERC20


bytes32 public constant SET_LOCK_PERIOD_ROLE = keccak256("SET_LOCK_PERIOD_ROLE");

uint256 internal constant MAX_BP = 10000;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Import from constants lib

IMetaRegistry public immutable META_REGISTRY;
address public immutable TOKEN;
address public immutable VOTING_CONTRACT;
address public immutable SNAPSHOT_DELEGATION;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a chance that this address might change. Consider having it as a storage variable and fetch the value from the main contract in the vault contracts

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants