-
Notifications
You must be signed in to change notification settings - Fork 300
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
Ability to specify different 'fee recipients' for different validator accounts running on a client #4850
Comments
Yep makes sense. We will likely always require a default fee recipient be specified as there are a bunch of ways to add validators and we can't always guarantee a fee recipient are specified as part of them but definitely makes sense to have a way to override that default per validator. I'm thinking we probably need to support reading the mapping of validator public key to fee recipient address from a YAML file and we'd periodically check that file for changes so you don't need to restart to change the configuration. Mostly I imagine that's useful for when validators are added without restarting so you can also add an override for them. |
@beetrootkid I'd like to design how things will work, so we can agree on requirements before start implementing it. So, my first proposal could be a yaml file similar to # file will be periodically read by teku, no restart will be required
# validator public key -> fee recipient ethereum address
fee_recipients:
'0x12345...12345': '0x0000000000000000000000000000000000000001'
'0x12345...54321': '0x0000000000000000000000000000000000000002'
# used for indices not present in fee_recipients
default_fee_recipient: "0x0000000000000000000000000000000000000003" public keys are long but allows you to prepare the file even before knowing the assigned index for a new validator. The corresponding CLI argument could be I don't if makes sense to you to have the current |
Hi guys, thanks for you input. Dropping some comments inline:
The structure makes sense to us. But see last comment.
Perfect, it aligns with our backend too.
Would it be too much asking to load configuration via URL too? It would simplify a lot more on our side; complementing your proposal, was wondering something like
Agree with this approach, doesn't leave room for any confusion. Additionally, we wanted to specify the block producer URL per validator. It's similar requirement to the recipient fee and maybe you guys may want to explore some 'per-validator' configuration structure and bundle the fee recipient + block producer url in the same config file/url. Example based of yours:
I can create a different ticket if you wish. And either way will work for us. |
As per out of band discussions, the extensibility of the structure is a good suggestion. For the moment i would leave Wrt URL support, we already have a transparent system for loading file locally or remotely via URL but ATM the file have to be a yaml file in both cases. I'm more lean to have the same param supporting local file or an URL. so to summarise:
# file will be periodically read by teku, no restart will be required
# validator public key -> fee recipient ethereum address + future params
'0x12345...12345':
suggested_fee_recipient: '0x0000000000000000000000000000000000000001'
'0x12345...00001':
suggested_fee_recipient: '0x0000000000000000000000000000000000000003'
# default values used for validators not present in previous list
suggested_fee_recipient: "0x0000000000000000000000000000000000000004"
@joaocenoura WDYT? cc: @ajsutton |
Adding Rocket Pool's support for this feature. It will be highly desirable for us to specify a fee recipient on a per validator account basis. The suggested YAML-based solution would meet our requirements. |
Sounds good 👍 that would meet our requirements as well. Minor note on the yaml requirement: we already have a rest service that teku validators use to pull configuration from. As of now, we only use |
Given we've wound up using JSON for the remote signer validator keys, it probably makes sense to use JSON here too. I just defaulted to thinking YAML because we use YAML for our config files and this felt like a config file but we use JSON for our REST APIs and it can be argued this is going to most often be used by pointing it to an API. If it causes confusion we can possibly support both but let's start with JSON and see what happens. |
That's perfect for us 👍 thanks @ajsutton |
@joaocenoura @beetrootkid @kanewallmann we merged the first iteration on this feature. |
Description
As a non-pooling, non-custodial staking provider, we need to be able to specify different coinbase accounts / fee recipients based on the validator account selected to propose a block.
It will be a 1:Many relationship between fee recipients and validator accounts.
Without this, it becomes very difficult for us to distribute the priority fees to the appropriate validator owner.
The text was updated successfully, but these errors were encountered: