types: Remove pubkey from validator hash (#2512)

* types: Remove pubkey from validator hash

* undo lock file change

* Update Spec
This commit is contained in:
Dev Ojha
2018-10-05 16:26:52 -07:00
committed by Ethan Buchman
parent 6e5f58191e
commit dfda7b442f
3 changed files with 5 additions and 3 deletions

View File

@@ -26,6 +26,7 @@ BREAKING CHANGES:
* Blockchain Protocol
* [types] \#2459 `Vote`/`Proposal`/`Heartbeat` use amino encoding instead of JSON in `SignBytes`.
* [types] \#2512 Remove the pubkey field from the validator hash
* P2P Protocol

View File

@@ -45,7 +45,7 @@ processing transactions, like gas variables and tags - see
### Validator
A validator is an active participant in the consensus with a public key and a voting power.
Validator's also contain an address which is derived from the PubKey:
Validator's also contain an address field, which is a hash digest of the PubKey.
```go
type Validator struct {
@@ -55,6 +55,9 @@ type Validator struct {
}
```
When hashing the Validator struct, the pubkey is not hashed,
because the address is already the hash of the pubkey.
The `state.Validators`, `state.LastValidators`, and `state.NextValidators`, must always by sorted by validator address,
so that there is a canonical order for computing the SimpleMerkleRoot.

View File

@@ -73,11 +73,9 @@ func (v *Validator) String() string {
func (v *Validator) Hash() []byte {
return aminoHash(struct {
Address Address
PubKey crypto.PubKey
VotingPower int64
}{
v.Address,
v.PubKey,
v.VotingPower,
})
}