-
Notifications
You must be signed in to change notification settings - Fork 3.7k
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
Validators don't have owners => Update language used #1884
Comments
@rigelrozanski just read through that convo. Seems like we initially just want to update CLI nomenclature (flags, etc..), correct? |
I can understand the confusion but shouldn't we focus on explaining that validators don't hold funds at all - an "entrusted" address wouldn't be "entrusted" with the funds either (that would imply custodial ownership) - they're just at stake if a protocol fault is committed. |
I think "owner" should be entirely removed and replaced with "validator". And "validator" to be replaced with "validation_key", I fleshed it out more at #1869 (comment) |
This comment doesn't make sense to me, here is the validator struct: cosmos-sdk/x/stake/types/validator.go Lines 23 to 44 in 7fc2ed6
What do you propose we change Owner field name too?
totally agree, entrust doesn't make sense, any other thoughts for the best term? |
What about "manager"? A bit simpler, although I'm not sure whether or not that implies fund custodianship. Probably regardless of term we'll just have to explain the exact "funds-at-stake" model in several places (including the CLI) very clearly. |
I like manager - or how about |
What is a validator? Right now it is an account, a keypair (either Secp256k1 or Ed25519), associated with it another keypair (Ed25519) used exclusively for signing consensus messages. So why call it an owner or a manager or a trustee when the validator's identity is literally represented by the account it was created from. The validator is literally represented by that account. Calling the validator account a manager/operator/trustee doesn't make it clearer, it introduces another entity type to the vocabulary without a distinct role to play on its own. Here's what I'm saying in a different form:
The other side to this is allowing multiple "validation_addr/key" per validator (the account), if possible (I do not know if it is) it would solve the validation node availability problem by allowing redundancy. |
"Operator" is definitely better than "manager".
The validator account is in all other respects a standard account - it can have a balance, send/receive transactions, vote in governance, etc. - it just happens to be { operating } (insert verb of choice) a validator. I think we need a distinct word for that relationship between an account and a validator struct (including Tendermint signing key) - but definitely open to suggestions!
I think you're talking about Tendermint signing keys - the primary reason we can't implement that (in the simple way) is that the light clients would need to know about the other signing keys too. |
I think there's no relationship, an account through a transaction or by including it in some state structure (e.g., genesis.json) becomes a validator, the account assumes the role of a validator. Think of it as a flag you flip on an account, it's not a distinct addressable entity, in fact you cannot address a validator through any other means but its account. So a validator addressable via its account, an account that happens to be a validator, can be associated with at least a single Tendermint signing key (through its address or public key). I think the ideal relationship is Account (of type validator) 1-to-M signing keys. |
the account doesn't assume that role, the owner of the account is presumably the "validator" by that definition.
it is. it's literally an address.
You can and we do throughout the codebase. The operator address is however the only static addressable index, The Tendermint Pubkey however holds an index to the operator-address and thus you can also address a the validator through the Tendermint-Pubkey without the operator-address - This functionality has not yet been exposed in the CLI yet.
For the current design of staking, the constraint is that there must only be one Tendermint signing key associated with a operator-key (aka you cannot re-use an operator key across multiple validators) Calling the operator-account |
I see an account as an individual/organisation. The owner of that account may choose to create a validator, but they are still free to hold funds in that account that are totally unrelated to the running of the validator, and indeed may be delegated elsewhere - that is entirely their choice! There is not an intrinsic link between an account (and any funds it may hold) and a validation signing keypair. The main issue here for me is consistency. In different parts of the system, we are addressing a validator by it's If we are refering to a validator (delegation, unbonding, checking signing-info, etc.) then we should be refering to the
and so on.... This way we can avoid having to define this relationship that may or may not exist ;) It also allows at a later date, if it determined to be useful, to abstract away validation keypairs / accounts such that one account can control multiple validators, without having to make breaking changes to the API (because all validator interactions are solely concerned with a validator address and not an account). |
agreed - we should probably switch as much literally everything user facing on gaia to use the operator address all references which require Generally speaking I think we want to reference everything by address not PubKey within the CLI. As per the distinction between using the bech Within the CLI I can see calling it the flag where you feed in the I'm going to close this issue for now, this has been a good/endured conversation, opening some new issues to reflect this conversation:
Yeah this is definitely on the table for post launch - there has been discussion of good abstractions here - for now - this is an extra feature so we're not focusing on it - much cleaner to just stick to 1-to-1 for now. |
"owner" and the
owner_addr
are kind of misleading the because it implies that the funds of that validator are actually owned by that address whereas in reality they are more entrusted but truly held in protocol or by the delegators and the validatorstems from community conversation here: #1869 (comment)
The text was updated successfully, but these errors were encountered: