Skip to content

Commit

Permalink
Genesis validators cleanup (#2282)
Browse files Browse the repository at this point in the history
  • Loading branch information
abi87 authored Nov 9, 2023
1 parent 151621f commit e3f1212
Show file tree
Hide file tree
Showing 10 changed files with 62 additions and 50 deletions.
4 changes: 2 additions & 2 deletions genesis/genesis.go
Original file line number Diff line number Diff line change
Expand Up @@ -418,8 +418,8 @@ func FromConfig(config *Config) ([]byte, ids.ID, error) {
delegationFee := json.Uint32(staker.DelegationFee)

platformvmArgs.Validators = append(platformvmArgs.Validators,
api.PermissionlessValidator{
Staker: api.Staker{
api.GenesisPermissionlessValidator{
GenesisValidator: api.GenesisValidator{
StartTime: json.Uint64(genesisTime.Unix()),
EndTime: json.Uint64(endStakingTime.Unix()),
NodeID: staker.NodeID,
Expand Down
6 changes: 3 additions & 3 deletions tests/e2e/static-handlers/suites.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,13 +141,13 @@ var _ = ginkgo.Describe("[StaticHandlers]", func() {
}
}

genesisValidators := make([]api.PermissionlessValidator, len(keys))
genesisValidators := make([]api.GenesisPermissionlessValidator, len(keys))
for i, key := range keys {
id := key.PublicKey().Address()
addr, err := address.FormatBech32(hrp, id.Bytes())
require.NoError(err)
genesisValidators[i] = api.PermissionlessValidator{
Staker: api.Staker{
genesisValidators[i] = api.GenesisPermissionlessValidator{
GenesisValidator: api.GenesisValidator{
StartTime: json.Uint64(time.Date(1997, 1, 1, 0, 0, 0, 0, time.UTC).Unix()),
EndTime: json.Uint64(time.Date(1997, 1, 30, 0, 0, 0, 0, time.UTC).Unix()),
NodeID: ids.NodeID(id),
Expand Down
30 changes: 21 additions & 9 deletions vms/platformvm/api/static_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,9 @@ type Staker struct {
StakeAmount *json.Uint64 `json:"stakeAmount,omitempty"`
}

// GenesisValidator should to be used for genesis validators only.
type GenesisValidator Staker

// Owner is the repr. of a reward owner sent over APIs.
type Owner struct {
Locktime json.Uint64 `json:"locktime"`
Expand Down Expand Up @@ -132,6 +135,15 @@ type PermissionlessValidator struct {
Delegators *[]PrimaryDelegator `json:"delegators,omitempty"`
}

// GenesisPermissionlessValidator should to be used for genesis validators only.
type GenesisPermissionlessValidator struct {
GenesisValidator
RewardOwner *Owner `json:"rewardOwner,omitempty"`
DelegationFee json.Float32 `json:"delegationFee"`
ExactDelegationFee *json.Uint32 `json:"exactDelegationFee,omitempty"`
Staked []UTXO `json:"staked,omitempty"`
}

// PermissionedValidator is the repr. of a permissioned validator sent over APIs.
type PermissionedValidator struct {
Staker
Expand Down Expand Up @@ -170,15 +182,15 @@ type Chain struct {
// [Chains] are the chains that exist at genesis.
// [Time] is the Platform Chain's time at network genesis.
type BuildGenesisArgs struct {
AvaxAssetID ids.ID `json:"avaxAssetID"`
NetworkID json.Uint32 `json:"networkID"`
UTXOs []UTXO `json:"utxos"`
Validators []PermissionlessValidator `json:"validators"`
Chains []Chain `json:"chains"`
Time json.Uint64 `json:"time"`
InitialSupply json.Uint64 `json:"initialSupply"`
Message string `json:"message"`
Encoding formatting.Encoding `json:"encoding"`
AvaxAssetID ids.ID `json:"avaxAssetID"`
NetworkID json.Uint32 `json:"networkID"`
UTXOs []UTXO `json:"utxos"`
Validators []GenesisPermissionlessValidator `json:"validators"`
Chains []Chain `json:"chains"`
Time json.Uint64 `json:"time"`
InitialSupply json.Uint64 `json:"initialSupply"`
Message string `json:"message"`
Encoding formatting.Encoding `json:"encoding"`
}

// BuildGenesisReply is the reply from BuildGenesis
Expand Down
32 changes: 16 additions & 16 deletions vms/platformvm/api/static_service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ func TestBuildGenesisInvalidUTXOBalance(t *testing.T) {
Amount: 0,
}
weight := json.Uint64(987654321)
validator := PermissionlessValidator{
Staker: Staker{
validator := GenesisPermissionlessValidator{
GenesisValidator: GenesisValidator{
EndTime: 15,
Weight: weight,
NodeID: nodeID,
Expand All @@ -47,7 +47,7 @@ func TestBuildGenesisInvalidUTXOBalance(t *testing.T) {
UTXOs: []UTXO{
utxo,
},
Validators: []PermissionlessValidator{
Validators: []GenesisPermissionlessValidator{
validator,
},
Time: 5,
Expand All @@ -71,8 +71,8 @@ func TestBuildGenesisInvalidStakeWeight(t *testing.T) {
Amount: 123456789,
}
weight := json.Uint64(0)
validator := PermissionlessValidator{
Staker: Staker{
validator := GenesisPermissionlessValidator{
GenesisValidator: GenesisValidator{
StartTime: 0,
EndTime: 15,
NodeID: nodeID,
Expand All @@ -91,7 +91,7 @@ func TestBuildGenesisInvalidStakeWeight(t *testing.T) {
UTXOs: []UTXO{
utxo,
},
Validators: []PermissionlessValidator{
Validators: []GenesisPermissionlessValidator{
validator,
},
Time: 5,
Expand All @@ -116,8 +116,8 @@ func TestBuildGenesisInvalidEndtime(t *testing.T) {
}

weight := json.Uint64(987654321)
validator := PermissionlessValidator{
Staker: Staker{
validator := GenesisPermissionlessValidator{
GenesisValidator: GenesisValidator{
StartTime: 0,
EndTime: 5,
NodeID: nodeID,
Expand All @@ -136,7 +136,7 @@ func TestBuildGenesisInvalidEndtime(t *testing.T) {
UTXOs: []UTXO{
utxo,
},
Validators: []PermissionlessValidator{
Validators: []GenesisPermissionlessValidator{
validator,
},
Time: 5,
Expand All @@ -161,8 +161,8 @@ func TestBuildGenesisReturnsSortedValidators(t *testing.T) {
}

weight := json.Uint64(987654321)
validator1 := PermissionlessValidator{
Staker: Staker{
validator1 := GenesisPermissionlessValidator{
GenesisValidator: GenesisValidator{
StartTime: 0,
EndTime: 20,
NodeID: nodeID,
Expand All @@ -177,8 +177,8 @@ func TestBuildGenesisReturnsSortedValidators(t *testing.T) {
}},
}

validator2 := PermissionlessValidator{
Staker: Staker{
validator2 := GenesisPermissionlessValidator{
GenesisValidator: GenesisValidator{
StartTime: 3,
EndTime: 15,
NodeID: nodeID,
Expand All @@ -193,8 +193,8 @@ func TestBuildGenesisReturnsSortedValidators(t *testing.T) {
}},
}

validator3 := PermissionlessValidator{
Staker: Staker{
validator3 := GenesisPermissionlessValidator{
GenesisValidator: GenesisValidator{
StartTime: 1,
EndTime: 10,
NodeID: nodeID,
Expand All @@ -214,7 +214,7 @@ func TestBuildGenesisReturnsSortedValidators(t *testing.T) {
UTXOs: []UTXO{
utxo,
},
Validators: []PermissionlessValidator{
Validators: []GenesisPermissionlessValidator{
validator1,
validator2,
validator3,
Expand Down
6 changes: 3 additions & 3 deletions vms/platformvm/block/builder/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -357,13 +357,13 @@ func buildGenesisTest(t *testing.T, ctx *snow.Context) []byte {
}
}

genesisValidators := make([]api.PermissionlessValidator, len(preFundedKeys))
genesisValidators := make([]api.GenesisPermissionlessValidator, len(preFundedKeys))
for i, key := range preFundedKeys {
nodeID := ids.NodeID(key.PublicKey().Address())
addr, err := address.FormatBech32(constants.UnitTestHRP, nodeID.Bytes())
require.NoError(err)
genesisValidators[i] = api.PermissionlessValidator{
Staker: api.Staker{
genesisValidators[i] = api.GenesisPermissionlessValidator{
GenesisValidator: api.GenesisValidator{
StartTime: json.Uint64(defaultValidateStartTime.Unix()),
EndTime: json.Uint64(defaultValidateEndTime.Unix()),
NodeID: nodeID,
Expand Down
6 changes: 3 additions & 3 deletions vms/platformvm/block/executor/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -399,15 +399,15 @@ func buildGenesisTest(ctx *snow.Context) []byte {
}
}

genesisValidators := make([]api.PermissionlessValidator, len(preFundedKeys))
genesisValidators := make([]api.GenesisPermissionlessValidator, len(preFundedKeys))
for i, key := range preFundedKeys {
nodeID := ids.NodeID(key.PublicKey().Address())
addr, err := address.FormatBech32(constants.UnitTestHRP, nodeID.Bytes())
if err != nil {
panic(err)
}
genesisValidators[i] = api.PermissionlessValidator{
Staker: api.Staker{
genesisValidators[i] = api.GenesisPermissionlessValidator{
GenesisValidator: api.GenesisValidator{
StartTime: json.Uint64(defaultValidateStartTime.Unix()),
EndTime: json.Uint64(defaultValidateEndTime.Unix()),
NodeID: nodeID,
Expand Down
6 changes: 3 additions & 3 deletions vms/platformvm/txs/executor/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -366,15 +366,15 @@ func buildGenesisTest(ctx *snow.Context) []byte {
}
}

genesisValidators := make([]api.PermissionlessValidator, len(preFundedKeys))
genesisValidators := make([]api.GenesisPermissionlessValidator, len(preFundedKeys))
for i, key := range preFundedKeys {
nodeID := ids.NodeID(key.PublicKey().Address())
addr, err := address.FormatBech32(constants.UnitTestHRP, nodeID.Bytes())
if err != nil {
panic(err)
}
genesisValidators[i] = api.PermissionlessValidator{
Staker: api.Staker{
genesisValidators[i] = api.GenesisPermissionlessValidator{
GenesisValidator: api.GenesisValidator{
StartTime: json.Uint64(defaultValidateStartTime.Unix()),
EndTime: json.Uint64(defaultValidateEndTime.Unix()),
NodeID: nodeID,
Expand Down
6 changes: 3 additions & 3 deletions vms/platformvm/validator_set_property_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -849,8 +849,8 @@ func buildCustomGenesis() ([]byte, error) {

starTime := mockable.MaxTime.Add(-1 * defaultMinStakingDuration)
endTime := mockable.MaxTime
genesisValidator := api.PermissionlessValidator{
Staker: api.Staker{
genesisValidator := api.GenesisPermissionlessValidator{
GenesisValidator: api.GenesisValidator{
StartTime: json.Uint64(starTime.Unix()),
EndTime: json.Uint64(endTime.Unix()),
NodeID: nodeID,
Expand All @@ -871,7 +871,7 @@ func buildCustomGenesis() ([]byte, error) {
NetworkID: json.Uint32(constants.UnitTestID),
AvaxAssetID: avaxAssetID,
UTXOs: genesisUTXOs,
Validators: []api.PermissionlessValidator{genesisValidator},
Validators: []api.GenesisPermissionlessValidator{genesisValidator},
Chains: nil,
Time: json.Uint64(defaultGenesisTime.Unix()),
InitialSupply: json.Uint64(360 * units.MegaAvax),
Expand Down
4 changes: 2 additions & 2 deletions vms/platformvm/validators/manager_benchmark_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@ func BenchmarkGetValidatorSet(b *testing.B) {
addr, err := address.FormatBech32(constants.UnitTestHRP, ids.GenerateTestShortID().Bytes())
require.NoError(err)

genesisValidators := []api.PermissionlessValidator{{
Staker: api.Staker{
genesisValidators := []api.GenesisPermissionlessValidator{{
GenesisValidator: api.GenesisValidator{
StartTime: json.Uint64(genesisTime.Unix()),
EndTime: json.Uint64(genesisEndTime.Unix()),
NodeID: ids.GenerateTestNodeID(),
Expand Down
12 changes: 6 additions & 6 deletions vms/platformvm/vm_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -175,13 +175,13 @@ func defaultGenesis(t *testing.T) (*api.BuildGenesisArgs, []byte) {
}
}

genesisValidators := make([]api.PermissionlessValidator, len(keys))
genesisValidators := make([]api.GenesisPermissionlessValidator, len(keys))
for i, key := range keys {
nodeID := ids.NodeID(key.PublicKey().Address())
addr, err := address.FormatBech32(constants.UnitTestHRP, nodeID.Bytes())
require.NoError(err)
genesisValidators[i] = api.PermissionlessValidator{
Staker: api.Staker{
genesisValidators[i] = api.GenesisPermissionlessValidator{
GenesisValidator: api.GenesisValidator{
StartTime: json.Uint64(defaultValidateStartTime.Unix()),
EndTime: json.Uint64(defaultValidateEndTime.Unix()),
NodeID: nodeID,
Expand Down Expand Up @@ -243,14 +243,14 @@ func BuildGenesisTestWithArgs(t *testing.T, args *api.BuildGenesisArgs) (*api.Bu
}
}

genesisValidators := make([]api.PermissionlessValidator, len(keys))
genesisValidators := make([]api.GenesisPermissionlessValidator, len(keys))
for i, key := range keys {
nodeID := ids.NodeID(key.PublicKey().Address())
addr, err := address.FormatBech32(constants.UnitTestHRP, nodeID.Bytes())
require.NoError(err)

genesisValidators[i] = api.PermissionlessValidator{
Staker: api.Staker{
genesisValidators[i] = api.GenesisPermissionlessValidator{
GenesisValidator: api.GenesisValidator{
StartTime: json.Uint64(defaultValidateStartTime.Unix()),
EndTime: json.Uint64(defaultValidateEndTime.Unix()),
NodeID: nodeID,
Expand Down

0 comments on commit e3f1212

Please sign in to comment.