-
Notifications
You must be signed in to change notification settings - Fork 225
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support validator account level relay choice #154
Comments
Could you provide a specific example? An issue is that mev-boost and the relay needs to conform to the builder spec: https://ethereum.github.io/builder-specs/ This API spec only allows setting |
Ah - so, should I raise this at the builder-spec repo? A specific example:
Right now, the only way to handle this is to have different consensus clients for the two customers with differently associated MEV boost sidecars... |
hmmm i see, i think this would indeed be easiest handled in mev-boost. and it seems related to #155, file based relay list, where you could set this relation. we'll discuss internally and report back in a little bit. |
For reference, the Teku/Lighthouse config file format looks like this: {
"proposer_config": {
"0xa057816155ad77931185101128655c0191bd0214c201ca48ed887f6c4c6adf334070efcd75140eada5ac83a92506dd7a": {
"fee_recipient": "0x50155530FCE8a85ec7055A5F8b2bE214B3DaeFd3",
"validator_registration": {
"enabled": true,
"gas_limit": "12345654321"
}
}
},
"default_config": {
"fee_recipient": "0x6e35733c5af9B61374A128e6F85f553aF09ff89A",
"validator_registration": {
"enabled": false
}
}
} |
The most simple config for mev-boost could look like this (and allow per-proposer overrides): {
"default_config": {
"relays": [
"https://0xb5246e299aeb782fbc7c91b41b3284245b1ed5206134b0028b81dfb974e5900616c67847c2354479934fc4bb75519ee1@builder-relay-kiln.flashbots.net"
]
}
} |
wouldn't make sense to add these relay entry inside validator registration? |
my take: {
"builder_relays_groups": {
"groupA": ["https://0x...@builder-relay-kiln.flashbots.net", "http://..."],
"groupB": ["https://0x...@builder2-relay-kiln.flashbots.net", "http://...."]
},
"proposer_config": {
"0xa057816155ad77931185101128655c0191bd0214c201ca48ed887f6c4c6adf334070efcd75140eada5ac83a92506dd7a": {
"fee_recipient": "0x50155530FCE8a85ec7055A5F8b2bE214B3DaeFd3",
"validator_registration": {
"enabled": true,
"builder_relays_group": "groupB",
"gas_limit": "12345654321"
}
}
},
"default_config": {
"fee_recipient": "0x6e35733c5af9B61374A128e6F85f553aF09ff89A",
"validator_registration": {
"enabled": false,
"builder_relays_group": "groupA"
}
}
} |
For simplicity, {
"proposer_config": {
"0xa057816155ad77931185101128655c0191bd0214c201ca48ed887f6c4c6adf334070efcd75140eada5ac83a92506dd7a": {
"fee_recipient": "0x50155530FCE8a85ec7055A5F8b2bE214B3DaeFd3",
"validator_registration": {
"enabled": true,
"relay": "https://other-builder-relay-kiln.flashbots.net"
"gas_limit": "12345654321"
}
}
},
"default_config": {
"fee_recipient": "0x6e35733c5af9B61374A128e6F85f553aF09ff89A",
"validator_registration": {
"relay": "https://default-builder-relay-kiln.flashbots.net"
"enabled": false
}
}
} |
{
"builder_relays_groups": {
"groupB": [
"https://0x...@builder2-relay-kiln.flashbots.net",
"http://...."
]
},
"proposer_config": {
"0xa057816155ad77931185101128655c0191bd0214c201ca48ed887f6c4c6adf334070efcd75140eada5ac83a92506dd7a": {
"fee_recipient": "0x50155530FCE8a85ec7055A5F8b2bE214B3DaeFd3",
"validator_registration": {
"enabled": true,
"builder_relays": ["https://0x...@builder-relay-kiln.flashbots.net"],
"gas_limit": "12345654321"
}
}
},
"default_config": {
"fee_recipient": "0x6e35733c5af9B61374A128e6F85f553aF09ff89A",
"validator_registration": {
"enabled": false,
"builder_relays": ["groupB"]
}
}
} |
looks good to me. Once we find an agreement we should formalize with a schema definition so we can be clear on formats and what is required and what is optional. (ie, in teku we require |
I'm thinking about changing from {
"proposer_config": {
"0x...": {
"fee_recipient": "0x..",
"builder_registration": {
"enabled": true,
"builder_relays": ["https://0x...@builder-relay-kiln.flashbots.net"],
"gas_limit": "12345654321"
}
}
} From a validator configuration perspective seems clearer. If that section is being translated in a validator_registration from the perspective of a builder, it's just a technicality. |
Looks good too. In this case we could consider changing |
For reference: see also the Prysm PR prysmaticlabs/prysm#10992 |
Just to clarify things :
And can also be a combination of both ? |
I think it is even better to have "builder": {
"enabled": true,
"relays": ["https://0x...@builder-relay-kiln.flashbots.net"],
"gas_limit": "12345654321"
} |
yes
I vote for maximum flexibility: combination |
Hey @james-prysm, in teku we are doing our final review\changes to officially release builder-related params and config. {
"builder_relays_groups": {
"groupB": [
"https://0x...@builder2-relay-kiln.flashbots.net",
"http://...."
]
},
"proposer_config": {
"0xa057816155ad77931185101128655c0191bd0214c201ca48ed887f6c4c6adf334070efcd75140eada5ac83a92506dd7a": {
"fee_recipient": "0x50155530FCE8a85ec7055A5F8b2bE214B3DaeFd3",
"builder": {
"enabled": true,
"relays": ["https://0x...@builder-relay-kiln.flashbots.net"],
"gas_limit": "12345654321"
}
}
},
"default_config": {
"fee_recipient": "0x6e35733c5af9B61374A128e6F85f553aF09ff89A",
"builder": {
"enabled": false,
"relays": ["groupB"]
}
}
} |
Do you think it should replace the |
It should not replace the -relays flag, but i think if someone specifies the config and -relays, it should fail with a log message |
@tbenr just seeing this now... thanks for letting me know, I'll go update this. |
Just catching up with this from the Lighthouse side and I have a few questions
Given my current understanding of the design space my preference would be for a separate push-based API for the gas limit to be added alongside the push-based Fee recipient API, and a separate relay assignment config file for |
the way Prysm works right now is we have an |
@michaelsproul mev-boost only uses the relays config from this file, gasLimit and feeRecipient need to be sent as a validator registration that's signed with the validator key, so mev-boost wouldn't even be able to use that. |
Thanks everyone for all the input so far (and @0xpanoramix for his work on implementing this in #186). Let's continue the spec-specific conversations in https://github.com/ethereum/builder-specs/pull/41/files 🙏 |
Succeeded by #455 |
As a node operator, different customers want to select different sources of MEV. To enable efficient distribution of validator keys across regions and consensus client types, our validator clients hold keys from different customers.
Teku and Lighthouse support specification of fee_recipient at the validator key level.
It would be great if mev-boost / builder-api could utilize the same file but with an added parameter per validator key to select the appropriate relay when that particular key is chosen to propose a block.
This would also enable solo stakers who have more than one validator to explore different sources of MEV without having to run multiple nodes.
The text was updated successfully, but these errors were encountered: