mirror of
https://github.com/fluencelabs/tendermint
synced 2025-06-23 09:41:38 +00:00
Amount -> Power. Closes #166
This commit is contained in:
@ -34,7 +34,7 @@ func initFiles(cmd *cobra.Command, args []string) {
|
|||||||
}
|
}
|
||||||
genDoc.Validators = []types.GenesisValidator{types.GenesisValidator{
|
genDoc.Validators = []types.GenesisValidator{types.GenesisValidator{
|
||||||
PubKey: privValidator.PubKey,
|
PubKey: privValidator.PubKey,
|
||||||
Amount: 10,
|
Power: 10,
|
||||||
}}
|
}}
|
||||||
|
|
||||||
genDoc.SaveAs(genFile)
|
genDoc.SaveAs(genFile)
|
||||||
|
@ -7,8 +7,8 @@ import (
|
|||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
|
||||||
cmn "github.com/tendermint/tmlibs/common"
|
|
||||||
"github.com/tendermint/tendermint/types"
|
"github.com/tendermint/tendermint/types"
|
||||||
|
cmn "github.com/tendermint/tmlibs/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
var testnetFilesCmd = &cobra.Command{
|
var testnetFilesCmd = &cobra.Command{
|
||||||
@ -48,7 +48,7 @@ func testnetFiles(cmd *cobra.Command, args []string) {
|
|||||||
privVal := types.LoadPrivValidator(privValFile)
|
privVal := types.LoadPrivValidator(privValFile)
|
||||||
genVals[i] = types.GenesisValidator{
|
genVals[i] = types.GenesisValidator{
|
||||||
PubKey: privVal.PubKey,
|
PubKey: privVal.PubKey,
|
||||||
Amount: 1,
|
Power: 1,
|
||||||
Name: mach,
|
Name: mach,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -119,7 +119,7 @@ var testGenesis = `{
|
|||||||
"type": "ed25519",
|
"type": "ed25519",
|
||||||
"data":"3B3069C422E19688B45CBFAE7BB009FC0FA1B1EA86593519318B7214853803C8"
|
"data":"3B3069C422E19688B45CBFAE7BB009FC0FA1B1EA86593519318B7214853803C8"
|
||||||
},
|
},
|
||||||
"amount": 10,
|
"power": 10,
|
||||||
"name": ""
|
"name": ""
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -400,7 +400,7 @@ func randGenesisDoc(numValidators int, randPower bool, minPower int64) (*types.G
|
|||||||
val, privVal := types.RandValidator(randPower, minPower)
|
val, privVal := types.RandValidator(randPower, minPower)
|
||||||
validators[i] = types.GenesisValidator{
|
validators[i] = types.GenesisValidator{
|
||||||
PubKey: val.PubKey,
|
PubKey: val.PubKey,
|
||||||
Amount: val.VotingPower,
|
Power: val.VotingPower,
|
||||||
}
|
}
|
||||||
privValidators[i] = privVal
|
privValidators[i] = privVal
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ Fields
|
|||||||
- ``validators``:
|
- ``validators``:
|
||||||
- ``pub_key``: The first element specifies the pub\_key type. 1 ==
|
- ``pub_key``: The first element specifies the pub\_key type. 1 ==
|
||||||
Ed25519. The second element are the pubkey bytes.
|
Ed25519. The second element are the pubkey bytes.
|
||||||
- ``amount``: The validator's voting power.
|
- ``power``: The validator's voting power.
|
||||||
- ``name``: Name of the validator (optional).
|
- ``name``: Name of the validator (optional).
|
||||||
- ``app_hash``: The expected application hash (as returned by the
|
- ``app_hash``: The expected application hash (as returned by the
|
||||||
``Commit`` ABCI message) upon genesis. If the app's hash does not
|
``Commit`` ABCI message) upon genesis. If the app's hash does not
|
||||||
@ -41,7 +41,7 @@ Sample genesis.json
|
|||||||
1,
|
1,
|
||||||
"9BC5112CB9614D91CE423FA8744885126CD9D08D9FC9D1F42E552D662BAA411E"
|
"9BC5112CB9614D91CE423FA8744885126CD9D08D9FC9D1F42E552D662BAA411E"
|
||||||
],
|
],
|
||||||
"amount": 1,
|
"power": 1,
|
||||||
"name": "mach1"
|
"name": "mach1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -49,7 +49,7 @@ Sample genesis.json
|
|||||||
1,
|
1,
|
||||||
"F46A5543D51F31660D9F59653B4F96061A740FF7433E0DC1ECBC30BE8494DE06"
|
"F46A5543D51F31660D9F59653B4F96061A740FF7433E0DC1ECBC30BE8494DE06"
|
||||||
],
|
],
|
||||||
"amount": 1,
|
"power": 1,
|
||||||
"name": "mach2"
|
"name": "mach2"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -57,7 +57,7 @@ Sample genesis.json
|
|||||||
1,
|
1,
|
||||||
"0E7B423C1635FD07C0FC3603B736D5D27953C1C6CA865BB9392CD79DE1A682BB"
|
"0E7B423C1635FD07C0FC3603B736D5D27953C1C6CA865BB9392CD79DE1A682BB"
|
||||||
],
|
],
|
||||||
"amount": 1,
|
"power": 1,
|
||||||
"name": "mach3"
|
"name": "mach3"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -65,7 +65,7 @@ Sample genesis.json
|
|||||||
1,
|
1,
|
||||||
"4F49237B9A32EB50682EDD83C48CE9CDB1D02A7CFDADCFF6EC8C1FAADB358879"
|
"4F49237B9A32EB50682EDD83C48CE9CDB1D02A7CFDADCFF6EC8C1FAADB358879"
|
||||||
],
|
],
|
||||||
"amount": 1,
|
"power": 1,
|
||||||
"name": "mach4"
|
"name": "mach4"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -177,7 +177,7 @@ When ``tendermint init`` is run, both a ``genesis.json`` and
|
|||||||
"genesis_time": "0001-01-01T00:00:00.000Z",
|
"genesis_time": "0001-01-01T00:00:00.000Z",
|
||||||
"validators": [
|
"validators": [
|
||||||
{
|
{
|
||||||
"amount": 10,
|
"power": 10,
|
||||||
"name": "",
|
"name": "",
|
||||||
"pub_key": [
|
"pub_key": [
|
||||||
1,
|
1,
|
||||||
@ -310,7 +310,7 @@ then the new ``genesis.json`` will be:
|
|||||||
"genesis_time": "0001-01-01T00:00:00.000Z",
|
"genesis_time": "0001-01-01T00:00:00.000Z",
|
||||||
"validators": [
|
"validators": [
|
||||||
{
|
{
|
||||||
"amount": 10,
|
"power": 10,
|
||||||
"name": "",
|
"name": "",
|
||||||
"pub_key": [
|
"pub_key": [
|
||||||
1,
|
1,
|
||||||
@ -318,7 +318,7 @@ then the new ``genesis.json`` will be:
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"amount": 10,
|
"power": 10,
|
||||||
"name": "",
|
"name": "",
|
||||||
"pub_key": [
|
"pub_key": [
|
||||||
1,
|
1,
|
||||||
|
@ -93,7 +93,7 @@ func TestGenesisAndValidators(t *testing.T) {
|
|||||||
val := vals.Validators[0]
|
val := vals.Validators[0]
|
||||||
|
|
||||||
// make sure the current set is also the genesis set
|
// make sure the current set is also the genesis set
|
||||||
assert.Equal(t, gval.Amount, val.VotingPower)
|
assert.Equal(t, gval.Power, val.VotingPower)
|
||||||
assert.Equal(t, gval.PubKey, val.PubKey)
|
assert.Equal(t, gval.PubKey, val.PubKey)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -90,7 +90,7 @@ func UnsafeDialSeeds(seeds []string) (*ctypes.ResultDialSeeds, error) {
|
|||||||
// "validators": [
|
// "validators": [
|
||||||
// {
|
// {
|
||||||
// "name": "",
|
// "name": "",
|
||||||
// "amount": 10,
|
// "power": 10,
|
||||||
// "pub_key": {
|
// "pub_key": {
|
||||||
// "data": "68DFDA7E50F82946E7E8546BED37944A422CD1B831E70DF66BA3B8430593944D",
|
// "data": "68DFDA7E50F82946E7E8546BED37944A422CD1B831E70DF66BA3B8430593944D",
|
||||||
// "type": "ed25519"
|
// "type": "ed25519"
|
||||||
|
@ -347,7 +347,7 @@ func MakeGenesisState(db dbm.DB, genDoc *types.GenesisDoc) *State {
|
|||||||
validators[i] = &types.Validator{
|
validators[i] = &types.Validator{
|
||||||
Address: address,
|
Address: address,
|
||||||
PubKey: pubKey,
|
PubKey: pubKey,
|
||||||
VotingPower: val.Amount,
|
VotingPower: val.Power,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
"genesis_time": "2016-06-24T20:01:19.322Z",
|
"genesis_time": "2016-06-24T20:01:19.322Z",
|
||||||
"validators": [
|
"validators": [
|
||||||
{
|
{
|
||||||
"amount": 1,
|
"power": 1,
|
||||||
"name": "mach1",
|
"name": "mach1",
|
||||||
"pub_key": {
|
"pub_key": {
|
||||||
"type": "ed25519",
|
"type": "ed25519",
|
||||||
@ -12,7 +12,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"amount": 1,
|
"power": 1,
|
||||||
"name": "mach2",
|
"name": "mach2",
|
||||||
"pub_key": {
|
"pub_key": {
|
||||||
"type": "ed25519",
|
"type": "ed25519",
|
||||||
@ -20,7 +20,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"amount": 1,
|
"power": 1,
|
||||||
"name": "mach3",
|
"name": "mach3",
|
||||||
"pub_key": {
|
"pub_key": {
|
||||||
"type": "ed25519",
|
"type": "ed25519",
|
||||||
@ -28,7 +28,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"amount": 1,
|
"power": 1,
|
||||||
"name": "mach4",
|
"name": "mach4",
|
||||||
"pub_key": {
|
"pub_key": {
|
||||||
"type": "ed25519",
|
"type": "ed25519",
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
"genesis_time": "2016-06-24T20:01:19.322Z",
|
"genesis_time": "2016-06-24T20:01:19.322Z",
|
||||||
"validators": [
|
"validators": [
|
||||||
{
|
{
|
||||||
"amount": 1,
|
"power": 1,
|
||||||
"name": "mach1",
|
"name": "mach1",
|
||||||
"pub_key": {
|
"pub_key": {
|
||||||
"type": "ed25519",
|
"type": "ed25519",
|
||||||
@ -12,7 +12,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"amount": 1,
|
"power": 1,
|
||||||
"name": "mach2",
|
"name": "mach2",
|
||||||
"pub_key": {
|
"pub_key": {
|
||||||
"type": "ed25519",
|
"type": "ed25519",
|
||||||
@ -20,7 +20,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"amount": 1,
|
"power": 1,
|
||||||
"name": "mach3",
|
"name": "mach3",
|
||||||
"pub_key": {
|
"pub_key": {
|
||||||
"type": "ed25519",
|
"type": "ed25519",
|
||||||
@ -28,7 +28,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"amount": 1,
|
"power": 1,
|
||||||
"name": "mach4",
|
"name": "mach4",
|
||||||
"pub_key": {
|
"pub_key": {
|
||||||
"type": "ed25519",
|
"type": "ed25519",
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
"genesis_time": "2016-06-24T20:01:19.322Z",
|
"genesis_time": "2016-06-24T20:01:19.322Z",
|
||||||
"validators": [
|
"validators": [
|
||||||
{
|
{
|
||||||
"amount": 1,
|
"power": 1,
|
||||||
"name": "mach1",
|
"name": "mach1",
|
||||||
"pub_key": {
|
"pub_key": {
|
||||||
"type": "ed25519",
|
"type": "ed25519",
|
||||||
@ -12,7 +12,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"amount": 1,
|
"power": 1,
|
||||||
"name": "mach2",
|
"name": "mach2",
|
||||||
"pub_key": {
|
"pub_key": {
|
||||||
"type": "ed25519",
|
"type": "ed25519",
|
||||||
@ -20,7 +20,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"amount": 1,
|
"power": 1,
|
||||||
"name": "mach3",
|
"name": "mach3",
|
||||||
"pub_key": {
|
"pub_key": {
|
||||||
"type": "ed25519",
|
"type": "ed25519",
|
||||||
@ -28,7 +28,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"amount": 1,
|
"power": 1,
|
||||||
"name": "mach4",
|
"name": "mach4",
|
||||||
"pub_key": {
|
"pub_key": {
|
||||||
"type": "ed25519",
|
"type": "ed25519",
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
"genesis_time": "2016-06-24T20:01:19.322Z",
|
"genesis_time": "2016-06-24T20:01:19.322Z",
|
||||||
"validators": [
|
"validators": [
|
||||||
{
|
{
|
||||||
"amount": 1,
|
"power": 1,
|
||||||
"name": "mach1",
|
"name": "mach1",
|
||||||
"pub_key": {
|
"pub_key": {
|
||||||
"type": "ed25519",
|
"type": "ed25519",
|
||||||
@ -12,7 +12,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"amount": 1,
|
"power": 1,
|
||||||
"name": "mach2",
|
"name": "mach2",
|
||||||
"pub_key": {
|
"pub_key": {
|
||||||
"type": "ed25519",
|
"type": "ed25519",
|
||||||
@ -20,7 +20,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"amount": 1,
|
"power": 1,
|
||||||
"name": "mach3",
|
"name": "mach3",
|
||||||
"pub_key": {
|
"pub_key": {
|
||||||
"type": "ed25519",
|
"type": "ed25519",
|
||||||
@ -28,7 +28,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"amount": 1,
|
"power": 1,
|
||||||
"name": "mach4",
|
"name": "mach4",
|
||||||
"pub_key": {
|
"pub_key": {
|
||||||
"type": "ed25519",
|
"type": "ed25519",
|
||||||
|
@ -18,7 +18,7 @@ import (
|
|||||||
// GenesisValidator is an initial validator.
|
// GenesisValidator is an initial validator.
|
||||||
type GenesisValidator struct {
|
type GenesisValidator struct {
|
||||||
PubKey crypto.PubKey `json:"pub_key"`
|
PubKey crypto.PubKey `json:"pub_key"`
|
||||||
Amount int64 `json:"amount"`
|
Power int64 `json:"power"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,7 +44,7 @@ func (genDoc *GenesisDoc) SaveAs(file string) error {
|
|||||||
func (genDoc *GenesisDoc) ValidatorHash() []byte {
|
func (genDoc *GenesisDoc) ValidatorHash() []byte {
|
||||||
vals := make([]*Validator, len(genDoc.Validators))
|
vals := make([]*Validator, len(genDoc.Validators))
|
||||||
for i, v := range genDoc.Validators {
|
for i, v := range genDoc.Validators {
|
||||||
vals[i] = NewValidator(v.PubKey, v.Amount)
|
vals[i] = NewValidator(v.PubKey, v.Power)
|
||||||
}
|
}
|
||||||
vset := NewValidatorSet(vals)
|
vset := NewValidatorSet(vals)
|
||||||
return vset.Hash()
|
return vset.Hash()
|
||||||
@ -71,6 +71,12 @@ func (genDoc *GenesisDoc) ValidateAndComplete() error {
|
|||||||
return errors.Errorf("The genesis file must have at least one validator")
|
return errors.Errorf("The genesis file must have at least one validator")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, v := range genDoc.Validators {
|
||||||
|
if v.Power == 0 {
|
||||||
|
return errors.Errorf("The genesis file cannot contain validators with no voting power: %v", v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if genDoc.GenesisTime.IsZero() {
|
if genDoc.GenesisTime.IsZero() {
|
||||||
genDoc.GenesisTime = time.Now()
|
genDoc.GenesisTime = time.Now()
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ func TestGenesis(t *testing.T) {
|
|||||||
[]byte(`{"chain_id": "mychain", "validators": [{}]`), // missing validators
|
[]byte(`{"chain_id": "mychain", "validators": [{}]`), // missing validators
|
||||||
[]byte(`{"validators":[{"pub_key":
|
[]byte(`{"validators":[{"pub_key":
|
||||||
{"type":"ed25519","data":"961EAB8752E51A03618502F55C2B6E09C38C65635C64CCF3173ED452CF86C957"},
|
{"type":"ed25519","data":"961EAB8752E51A03618502F55C2B6E09C38C65635C64CCF3173ED452CF86C957"},
|
||||||
"amount":10,"name":""}]}`), // missing chain_id
|
"power":10,"name":""}]}`), // missing chain_id
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, testCase := range testCases {
|
for _, testCase := range testCases {
|
||||||
@ -29,7 +29,7 @@ func TestGenesis(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// test a good one by raw json
|
// test a good one by raw json
|
||||||
genDocBytes := []byte(`{"genesis_time":"0001-01-01T00:00:00Z","chain_id":"test-chain-QDKdJr","consensus_params":null,"validators":[{"pub_key":{"type":"ed25519","data":"961EAB8752E51A03618502F55C2B6E09C38C65635C64CCF3173ED452CF86C957"},"amount":10,"name":""}],"app_hash":""}`)
|
genDocBytes := []byte(`{"genesis_time":"0001-01-01T00:00:00Z","chain_id":"test-chain-QDKdJr","consensus_params":null,"validators":[{"pub_key":{"type":"ed25519","data":"961EAB8752E51A03618502F55C2B6E09C38C65635C64CCF3173ED452CF86C957"},"power":10,"name":""}],"app_hash":""}`)
|
||||||
_, err := GenesisDocFromJSON(genDocBytes)
|
_, err := GenesisDocFromJSON(genDocBytes)
|
||||||
assert.NoError(t, err, "expected no error for good genDoc json")
|
assert.NoError(t, err, "expected no error for good genDoc json")
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user