# WIP!!! Validator Client: Fee Recipient with MEV Boost ( custom builder) changes
# This document is experimental and subject to change
This document describes the changes being made to existing flags to support the Builder API and custom block builders such as MEV.
## Summary of changes
- New suggested fee recipient builder flag
- Name change for `fee-recipient-config-file` and `fee-recipient-config-url` flags to `validator-config-file` and `validator-config-url`
- Update fee-recipient-config to include optional gas limit, and builder-fee-recipient-override field
- Include Yaml parsing for `validator-config-file`
## Current Fee Recipient Config based on Teku Implementation
JSON file for defining validator public key to eth address
This will allow you to map your validators to corresponding eth addresses or generally cover the remaining keys with a default.
```
{
"proposer_config": {
"0xa057816155ad77931185101128655c0191bd0214c201ca48ed887f6c4c6adf334070efcd75140eada5ac83a92506dd7a": {
"fee_recipient": "0x50155530FCE8a85ec7055A5F8b2bE214B3DaeFd3",
}
},
"default_config": {
"fee_recipient": "0x6e35733c5af9B61374A128e6F85f553aF09ff89A"
}
}
```
`proposer_config` is optional
`default_config` is mandatory
`fee_recipient` is mandatory in each config
## Current Flags
### Validator Client
- `suggested-fee-recipient` to set default eth address for ALL validators.
( i.e. --suggested-fee-recipient=0x046Fb65722E6b0000012BFEBf6177F1D2e9758D9)
- `fee-recipient-config-file` to set file location for fee recipient json.
( i.e. --fee-recipient-config-file=./fee_recipient_config.json)
- `fee-recipient-config-url` to set URL for fee recipient json.
( i.e. --fee-recipient-config-url=http://example.com/api/getFeeRecipient)
suggested fee recipient flag will override the configuration file.
you can not use both the file and url flags at the same time.
the validator client will send the fee recipient information at startup for all public keys that are active
as well as when the public key becomes active. It does this by calling the beacon api `prepareBeaconProposer`
### Beacon Node
- `suggested-fee-recipient` to set default eth address from validator client cli
( i.e. --suggested-fee-recipient=0x046Fb65722E6b0000012BFEBf6177F1D2e9758D9)
this sets the fall back default fee recipient on the beacon node if the validator restarts without fee recipient flags set
The beacon node will cache fee recipient information locally to be persistent.
### No Flags
by default Prysm uses the eth burn address (0x0000...)
## Updated Config Changes
### New Flags and Changes to Old Flags
- New`suggested-builder-fee-recipient` flag: a new flag that can be used to set the fee recipient for the custom builder.
note: flag can be used with `suggested-fee-recipient` together as the prepare beacon proposer api will still be used as a fall back for the custom builder. This flag will be unavailable with
- Name change for `fee-recipient-config-file` and `fee-recipient-config-url` flags to `validator-config-file` and `validator-config-url` : This is to make the configurations more generic for future field additions.
### Config Changes
- new support for yaml (i.e.)
```
---
proposer_config:
'0xa057816155ad77931185101128655c0191bd0214c201ca48ed887f6c4c6adf334070efcd75140eada5ac83a92506dd7a':
fee_recipient: '0x50155530FCE8a85ec7055A5F8b2bE214B3DaeFd3'
default_config:
fee_recipient: '0x6e35733c5af9B61374A128e6F85f553aF09ff89A'
```
- include optional gas limit(uint64 with default 30M),builder-fee-recipient(hex string eth address), and the enable custom builder field(bool) (i.e.)
```
---
proposer_config:
'0xa057816155ad77931185101128655c0191bd0214c201ca48ed887f6c4c6adf334070efcd75140eada5ac83a92506dd7a':
fee_recipient: '0x50155530FCE8a85ec7055A5F8b2bE214B3DaeFd3'
builder-fee-recipient-override: '0x50155530FCE8a85ec7055A5F8b2bE214B3DaeFd3'
gas_limit: 30000000
default_config:
fee_recipient: '0x6e35733c5af9B61374A128e6F85f553aF09ff89A'
builder-fee-recipient-override: '0x50155530FCE8a85ec7055A5F8b2bE214B3DaeFd3'
gas_limit: 30000000
```
- gas limit ( optional): maximum gas for building the block with a default of 30M
- builder-fee-recipient-override ( required if using custom builder): the fee recipient used for the builder which can be the same fee recipient as for the execution client