-
Notifications
You must be signed in to change notification settings - Fork 18
Open
Description
[Feature] Implement EVM Vote Weight Synchronization for Block Producers
π Description
Create a new action in the system contract that synchronizes block producer vote weights between EVM and native chains, ensuring consistent voting power across both environments.
π Key Features
- Read vote aggregates from EVM state for specific block producers
- Compare with locally tracked vote weights on native side
- Calculate and apply vote weight differences when detected
- Maintain a persistent record of EVM vote weights in a dedicated table
π§ Tasks
- Create new action in system contract to fetch EVM vote weights for a specific BP
- Implement table structure to store EVM vote weights on native side
- Develop logic to compare EVM vs native vote weights and apply differences
- Ensure only significant changes trigger state updates (optimization)
- Add support for off-chain script to periodically call this action
- Implement security measures to ensure only eosio account can modify EVM contract state
- Configure zero gas price for all system contract to EVM transactions
- Add comprehensive documentation for the new feature
π Security Considerations
- Native-to-EVM communications for BP registration/unregistration and decay multiplier updates must only be executable by the eosio account
- The EVM contract should have the system contract address hardcoded for verification
- All transactions from system contract to EVM should have 0 gas price
- Add thorough testing
- Consider audit.
π Flow Example
- Action called for BP with 0 previous EVM votes
- System reads current EVM state showing 10^6 votes after decay
- System adds these votes to the BP's total stake
- System updates the EVM vote weights table with new value
- No action taken if values remain unchanged between calls
Metadata
Metadata
Assignees
Labels
No labels