Skip to content

Commit

Permalink
s/Delegators/RewardDelegators/g
Browse files Browse the repository at this point in the history
  • Loading branch information
msmania committed Dec 21, 2023
1 parent 7287e7f commit 3031344
Show file tree
Hide file tree
Showing 20 changed files with 269 additions and 253 deletions.
4 changes: 2 additions & 2 deletions app/cmd/cli/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ Will prompt the user for the <fromAddr> account passphrase.`,
// stakeNewCmd is an upgraded version of `nodesCmd` that captures newer
// on-chain functionality in a cleaner way
var stakeNewCmd = &cobra.Command{
Use: "stakeNew <OperatorPublicKey> <OutputAddress> <SignerAddress> <Stake> <ChainIDs> <ServiceURL> <Delegators> <NetworkID> <Fee> [Memo]",
Use: "stakeNew <OperatorPublicKey> <OutputAddress> <SignerAddress> <Stake> <ChainIDs> <ServiceURL> <RewardDelegators> <NetworkID> <Fee> [Memo]",
Short: "Stake a node in the network",
Long: `Stake a node in the network, promoting it to a servicer or a validator.
Expand All @@ -133,7 +133,7 @@ The command takes the following parameters.
Stake Amount to stake in uPOKT
ChainIDs Comma-separated chain IDs to host on the node
ServiceURL Relay endpoint of the node. Must include the port number.
Delegators Delegator addresses to share rewards
RewardDelegators Addresses to share rewards
NetworkID Network ID to submit a transaction to e.g. mainnet or testnet
Fee Transaction fee in uPOKT
Memo Optional. Text to include in the transaction. No functional effect.
Expand Down
2 changes: 1 addition & 1 deletion app/cmd/cli/txUtil.go
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,7 @@ func BuildStakeTx(
}

if len(delegatorsStr) > 0 {
if json.Unmarshal([]byte(delegatorsStr), &msg.Delegators); err != nil {
if json.Unmarshal([]byte(delegatorsStr), &msg.RewardDelegators); err != nil {
return nil, err
}
}
Expand Down
6 changes: 3 additions & 3 deletions app/cmd/rpc/rpc_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1651,7 +1651,7 @@ func generateTestTx() (string, error) {
Value: types.NewInt(8000000000000),
ServiceUrl: "https://x.com:443",
Output: outputAddr,
Delegators: map[string]uint32{
RewardDelegators: map[string]uint32{
"1000000000000000000000000000000000000000": 1,
"2000000000000000000000000000000000000000": 2,
},
Expand Down Expand Up @@ -1722,14 +1722,14 @@ func TestMsgStake_Marshaling_BackwardCompatibility(t *testing.T) {
assert.Nil(t, err)
msgStake, ok := stdTx.Msg.(*types2.MsgStake)
assert.True(t, ok)
assert.Nil(t, msgStake.Delegators)
assert.Nil(t, msgStake.RewardDelegators)
assert.Nil(t, msgStake.ValidateBasic())

// Validate that an old stake messages DOES have delegators
stdTx, err = app.UnmarshalTxStr(StakeTxAfterDelegatorsUpgrade, heightForProto)
assert.Nil(t, err)
msgStake, ok = stdTx.Msg.(*types2.MsgStake)
assert.True(t, ok)
assert.NotNil(t, msgStake.Delegators)
assert.NotNil(t, msgStake.RewardDelegators)
assert.Nil(t, msgStake.ValidateBasic())
}
6 changes: 3 additions & 3 deletions codec/codec.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ const (
ClearUnjailedValSessionKey = "CRVAL"
PerChainRTTM = "PerChainRTTM"
AppTransferKey = "AppTransfer"
RewardsDelegatorKey = "RewardDelegator"
RewardDelegatorsKey = "RewardDelegators"
)

func GetCodecUpgradeHeight() int64 {
Expand Down Expand Up @@ -296,8 +296,8 @@ func (cdc *Codec) IsAfterAppTransferUpgrade(height int64) bool {
}

func (cdc *Codec) IsAfterDelegatorUpgrade(height int64) bool {
return (UpgradeFeatureMap[RewardsDelegatorKey] != 0 &&
height >= UpgradeFeatureMap[RewardsDelegatorKey]) ||
return (UpgradeFeatureMap[RewardDelegatorsKey] != 0 &&
height >= UpgradeFeatureMap[RewardDelegatorsKey]) ||
TestMode <= -3
}

Expand Down
6 changes: 3 additions & 3 deletions proto/x/nodes/msg.proto
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ message MsgProtoStake {
(gogoproto.moretags) = "yaml:\"output_address\""
];
// Mapping from delegated-to addresses to a percentage of rewards.
map<string, uint32> Delegators = 6 [
(gogoproto.jsontag) = "delegators,omitempty",
(gogoproto.moretags) = "yaml:\"delegators\""
map<string, uint32> RewardDelegators = 6 [
(gogoproto.jsontag) = "reward_delegators,omitempty",
(gogoproto.moretags) = "yaml:\"reward_delegators\""
];
}

Expand Down
2 changes: 1 addition & 1 deletion proto/x/nodes/nodes.proto
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ message ProtoValidator {
string StakedTokens = 7 [(gogoproto.customtype) = "github.com/pokt-network/pocket-core/types.BigInt", (gogoproto.jsontag) = "tokens", (gogoproto.nullable) = false];
google.protobuf.Timestamp UnstakingCompletionTime = 8 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true, (gogoproto.jsontag) = "unstaking_time", (gogoproto.moretags) = "yaml:\"unstaking_time\""];
bytes OutputAddress = 9 [(gogoproto.casttype) = "github.com/pokt-network/pocket-core/types.Address", (gogoproto.jsontag) = "output_address,omitempty", (gogoproto.moretags) = "yaml:\"output_address\""];
map<string, uint32> Delegators = 10 [(gogoproto.jsontag) = "delegators,omitempty", (gogoproto.moretags) = "yaml:\"delegators\""];
map<string, uint32> RewardDelegators = 10 [(gogoproto.jsontag) = "reward_delegators,omitempty", (gogoproto.moretags) = "yaml:\"reward_delegators\""];
}

message LegacyProtoValidator {
Expand Down
6 changes: 3 additions & 3 deletions x/nodes/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,12 +61,12 @@ func handleStake(ctx sdk.Ctx, msg types.MsgStake, k keeper.Keeper, signer crypto
}

if k.Cdc.IsAfterDelegatorUpgrade(ctx.BlockHeight()) {
if err := msg.CheckDelegators(); err != nil {
if err := msg.CheckRewardDelegators(); err != nil {
return err.Result()
}
} else if msg.Delegators != nil {
} else if msg.RewardDelegators != nil {
// Ignore the delegators field before the upgrade
msg.Delegators = nil
msg.RewardDelegators = nil
}

validator := types.NewValidatorFromMsg(msg)
Expand Down
8 changes: 4 additions & 4 deletions x/nodes/keeper/reward.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ func (k Keeper) RewardForRelaysPerChain(ctx sdk.Ctx, chain string, relays sdk.Bi
ctx.Logger(),
toNode,
address,
validator.Delegators,
validator.RewardDelegators,
func(recipient sdk.Address, share sdk.BigInt) {
k.mint(ctx, share, recipient)
},
Expand Down Expand Up @@ -180,7 +180,7 @@ func SplitNodeRewards(
return errors.New("non-positive rewards")
}

normalizedDelegators, err := types.NormalizeDelegators(delegators)
normalizedDelegators, err := types.NormalizeRewardDelegators(delegators)
if err != nil {
// If the delegators field is invalid, do nothing.
return errors.New("invalid delegators")
Expand Down Expand Up @@ -255,14 +255,14 @@ func (k Keeper) blockReward(ctx sdk.Ctx, previousProposer sdk.Address) {
}

if !k.Cdc.IsAfterDelegatorUpgrade(ctx.BlockHeight()) {
validator.Delegators = nil
validator.RewardDelegators = nil
}

err := SplitNodeRewards(
ctx.Logger(),
proposerCut,
k.GetOutputAddressFromValidator(validator),
validator.Delegators,
validator.RewardDelegators,
func(recipient sdk.Address, share sdk.BigInt) {
err = k.AccountKeeper.SendCoins(
ctx,
Expand Down
4 changes: 2 additions & 2 deletions x/nodes/keeper/reward_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -564,10 +564,10 @@ func TestKeeper_RewardForRelaysPerChain(t *testing.T) {
assert.True(t, rewardsHighProfit.Equal(expectedRewardsHighProfit))
assert.True(t, rewardsDefault.LT(rewardsHighProfit))

// After the RewardsDelegator upgrade, a servicer is compensated for
// After the RewardDelegators upgrade, a servicer is compensated for
// the reward cost (= transactions fees). Therefore the expected rewards
// is decreased by the reward cost.
codec.UpgradeFeatureMap[codec.RewardsDelegatorKey] = Height_Delegator
codec.UpgradeFeatureMap[codec.RewardDelegatorsKey] = Height_Delegator
rewardCost := keeper.GetRewardCost(ctx)
expectedRewardsHighProfit = expectedRewardsHighProfit.Sub(rewardCost)
rewardsHighProfit = keeper.RewardForRelaysPerChain(
Expand Down
9 changes: 6 additions & 3 deletions x/nodes/keeper/valStateChanges.go
Original file line number Diff line number Diff line change
Expand Up @@ -262,11 +262,14 @@ func (k Keeper) ValidateEditStake(ctx sdk.Ctx, currentValidator, newValidtor typ
}
}

// Delegators can be set/edited only if:
// RewardDelegators can be set/edited only if:
// 1) The feature has been activated AND
// 2) the message is signed by the operator address.
if k.Cdc.IsAfterDelegatorUpgrade(ctx.BlockHeight()) &&
!types.CompareStringMaps(currentValidator.Delegators, newValidtor.Delegators) &&
!types.CompareStringMaps(
currentValidator.RewardDelegators,
newValidtor.RewardDelegators,
) &&
!signer.Equals(currentValidator.Address) {
return types.ErrDisallowedDelegatorEdit(k.Codespace())
}
Expand Down Expand Up @@ -341,7 +344,7 @@ func (k Keeper) EditStakeValidator(ctx sdk.Ctx, currentValidator, updatedValidat

// After the upgrade, we allow delegators change
if k.Cdc.IsAfterDelegatorUpgrade(ctx.BlockHeight()) {
currentValidator.Delegators = updatedValidator.Delegators
currentValidator.RewardDelegators = updatedValidator.RewardDelegators
}
}
// update chains
Expand Down
32 changes: 19 additions & 13 deletions x/nodes/keeper/valStateChanges_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -500,13 +500,13 @@ func TestValidatorStateChange_Delegators(t *testing.T) {
originalTestMode := codec.TestMode
originalNCUST := codec.UpgradeFeatureMap[codec.NonCustodialUpdateKey]
originalOEDIT := codec.UpgradeFeatureMap[codec.OutputAddressEditKey]
originalReward := codec.UpgradeFeatureMap[codec.RewardsDelegatorKey]
originalReward := codec.UpgradeFeatureMap[codec.RewardDelegatorsKey]
t.Cleanup(func() {
codec.UpgradeHeight = originalUpgradeHeight
codec.TestMode = originalTestMode
codec.UpgradeFeatureMap[codec.NonCustodialUpdateKey] = originalNCUST
codec.UpgradeFeatureMap[codec.OutputAddressEditKey] = originalOEDIT
codec.UpgradeFeatureMap[codec.RewardsDelegatorKey] = originalReward
codec.UpgradeFeatureMap[codec.RewardDelegatorsKey] = originalReward
})

// Enable EditStake, NCUST, and OEDIT
Expand Down Expand Up @@ -534,12 +534,12 @@ func TestValidatorStateChange_Delegators(t *testing.T) {
signer crypto.PublicKey,
) sdk.Error {
msgStake := types.MsgStake{
Chains: []string{"0021", "0040"},
ServiceUrl: "https://www.pokt.network:443",
Value: stakeAmount.Amount,
PublicKey: operatorPubkey,
Output: outputAddress,
Delegators: delegators,
Chains: []string{"0021", "0040"},
ServiceUrl: "https://www.pokt.network:443",
Value: stakeAmount.Amount,
PublicKey: operatorPubkey,
Output: outputAddress,
RewardDelegators: delegators,
}
return handleStakeForTesting(ctx, k, msgStake, signer)
}
Expand All @@ -551,10 +551,10 @@ func TestValidatorStateChange_Delegators(t *testing.T) {
assert.Nil(t, runStake(operatorPubKey1, singleDelegator, outputPubKey))
validatorCur, found := k.GetValidator(ctx, operatorAddr1)
assert.True(t, found)
assert.Nil(t, validatorCur.Delegators)
assert.Nil(t, validatorCur.RewardDelegators)

// Enable DELE
codec.UpgradeFeatureMap[codec.RewardsDelegatorKey] = -1
codec.UpgradeFeatureMap[codec.RewardDelegatorsKey] = -1

// Attempt to change the delegators with output's signature --> Fail
err := runStake(operatorPubKey1, singleDelegator, outputPubKey)
Expand All @@ -567,21 +567,27 @@ func TestValidatorStateChange_Delegators(t *testing.T) {
assert.Nil(t, err)
validatorCur, found = k.GetValidator(ctx, operatorAddr1)
assert.True(t, found)
assert.True(t, types.CompareStringMaps(validatorCur.Delegators, singleDelegator))
assert.True(
t,
types.CompareStringMaps(validatorCur.RewardDelegators, singleDelegator),
)

// Attempt to reset the delegators with operator's signature --> Success
err = runStake(operatorPubKey1, nil, operatorPubKey1)
assert.Nil(t, err)
validatorCur, found = k.GetValidator(ctx, operatorAddr1)
assert.True(t, found)
assert.Nil(t, validatorCur.Delegators)
assert.Nil(t, validatorCur.RewardDelegators)

// New stake with delegators can be signed by the output --> Success
err = runStake(operatorPubKey2, singleDelegator, outputPubKey)
assert.Nil(t, err)
validatorCur, found = k.GetValidator(ctx, operatorAddr2)
assert.True(t, found)
assert.True(t, types.CompareStringMaps(validatorCur.Delegators, singleDelegator))
assert.True(
t,
types.CompareStringMaps(validatorCur.RewardDelegators, singleDelegator),
)
}

func TestKeeper_JailValidator(t *testing.T) {
Expand Down
4 changes: 2 additions & 2 deletions x/nodes/keeper/validator.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import (
func (k Keeper) MarshalValidator(ctx sdk.Ctx, validator types.Validator) ([]byte, error) {
if k.Cdc.IsAfterNonCustodialUpgrade(ctx.BlockHeight()) {
if !k.Cdc.IsAfterDelegatorUpgrade(ctx.BlockHeight()) {
validator.Delegators = nil
validator.RewardDelegators = nil
}
bz, err := k.Cdc.MarshalBinaryLengthPrefixed(&validator, ctx.BlockHeight())
if err != nil {
Expand All @@ -33,7 +33,7 @@ func (k Keeper) UnmarshalValidator(ctx sdk.Ctx, valBytes []byte) (val types.Vali
err = k.Cdc.UnmarshalBinaryLengthPrefixed(valBytes, &val, ctx.BlockHeight())
if err == nil {
if !k.Cdc.IsAfterDelegatorUpgrade(ctx.BlockHeight()) {
val.Delegators = nil
val.RewardDelegators = nil
}
} else {
ctx.Logger().Error("could not unmarshal validator: " + err.Error())
Expand Down
15 changes: 9 additions & 6 deletions x/nodes/keeper/validator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -176,9 +176,9 @@ func TestValidator_Proto_MarshalingCompatibility(t *testing.T) {

val_1 = getStakedValidator()
val_1.OutputAddress = getRandomValidatorAddress()
val_1.Delegators = map[string]uint32{}
val_1.Delegators[getRandomValidatorAddress().String()] = 10
val_1.Delegators[getRandomValidatorAddress().String()] = 20
val_1.RewardDelegators = map[string]uint32{}
val_1.RewardDelegators[getRandomValidatorAddress().String()] = 10
val_1.RewardDelegators[getRandomValidatorAddress().String()] = 20
valL_1 = val_1.ToLegacy()

// Validator --> []byte --> Validator
Expand All @@ -190,8 +190,11 @@ func TestValidator_Proto_MarshalingCompatibility(t *testing.T) {
assert.Nil(t, err)
assert.True(t, val_2.ToLegacy().Equals(val_1.ToLegacy()))
assert.True(t, val_2.OutputAddress.Equals(val_1.OutputAddress))
assert.NotNil(t, val_2.Delegators)
assert.True(t, types.CompareStringMaps(val_2.Delegators, val_1.Delegators))
assert.NotNil(t, val_2.RewardDelegators)
assert.True(
t,
types.CompareStringMaps(val_2.RewardDelegators, val_1.RewardDelegators),
)

// Validator --> []byte --> LegacyValidator
marshaled, err = Marshal(&val_1)
Expand All @@ -211,5 +214,5 @@ func TestValidator_Proto_MarshalingCompatibility(t *testing.T) {
assert.Nil(t, err)
assert.True(t, val_2.ToLegacy().Equals(valL_1))
assert.Nil(t, val_2.OutputAddress)
assert.Nil(t, val_2.Delegators)
assert.Nil(t, val_2.RewardDelegators)
}
8 changes: 4 additions & 4 deletions x/nodes/types/errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ const (
CodeUnauthorizedSigner CodeType = 125
CodeNilSigner CodeType = 126
CodeDisallowedOutputAddressEdit CodeType = 127
CodeInvalidaDelegators CodeType = 128
CodeInvalidDelegators CodeType = 128
CodeDisallowedDelegatorEdit CodeType = 129
)

Expand Down Expand Up @@ -164,11 +164,11 @@ func ErrDisallowedOutputAddressEdit(codespace sdk.CodespaceType) sdk.Error {
}

func ErrInvalidDelegators(codespace sdk.CodespaceType, reason string) sdk.Error {
return sdk.NewError(codespace, CodeInvalidaDelegators,
"Invalid delegators: %s", reason)
return sdk.NewError(codespace, CodeInvalidDelegators,
"Invalid reward delegators: %s", reason)
}

func ErrDisallowedDelegatorEdit(codespace sdk.CodespaceType) sdk.Error {
return sdk.NewError(codespace, CodeDisallowedDelegatorEdit,
"Only the node operator address can edit delegators")
"Only the node operator address can edit reward delegators")
}
Loading

0 comments on commit 3031344

Please sign in to comment.