mirror of
https://github.com/planetmint/planetmint-go.git
synced 2025-11-24 06:25:47 +00:00
wip: adjust for validator pop reward from dao account
Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com>
This commit is contained in:
parent
208ad70ab0
commit
00c7a6cd37
@ -196,7 +196,7 @@ func (s *SelectionE2ETestSuite) VerifyTokens(token string) {
|
||||
})
|
||||
s.Require().NoError(err)
|
||||
assert.Contains(s.T(), out.String(), token)
|
||||
assert.Equal(s.T(), "amount: \"17979452050\"\ndenom: "+token+"\n", out.String()) // Total supply 2 * 7990867578 (total supply) + 1 * 1997716894 (challenger) = 17979452050
|
||||
assert.Equal(s.T(), "amount: \"17979452053\"\ndenom: "+token+"\n", out.String()) // Total supply 2 * 7990867578 (total supply) + 1 * 1997716894 (challenger) = 17979452050
|
||||
|
||||
out, err = clitestutil.ExecTestCLICmd(val.ClientCtx, bank.GetBalancesCmd(), []string{
|
||||
machines[0].address,
|
||||
|
||||
@ -48,11 +48,14 @@ func (k Keeper) ComputeDistribution(ctx sdk.Context, lastReissuance int64, block
|
||||
distribution.StrategicAddr = k.GetParams(ctx).DistributionAddressStrategic
|
||||
distribution.PopAddr = k.GetParams(ctx).DistributionAddressPop
|
||||
|
||||
distribution.DaoAmount = util.UintValueToRDDLTokenString(uint64(float64(amount) * types.PercentageDao))
|
||||
// PoP rewards subtracted from DaoAmount and added to PoPAmount for later distribution
|
||||
validatorPoPRewards := k.GetValidatorPoPReward(ctx)
|
||||
|
||||
distribution.DaoAmount = util.UintValueToRDDLTokenString(uint64(float64(amount)*types.PercentageDao) - validatorPoPRewards)
|
||||
distribution.EarlyInvAmount = util.UintValueToRDDLTokenString(uint64(float64(amount) * types.PercentageEarlyInvestor))
|
||||
distribution.InvestorAmount = util.UintValueToRDDLTokenString(uint64(float64(amount) * types.PercentageInvestor))
|
||||
distribution.StrategicAmount = util.UintValueToRDDLTokenString(uint64(float64(amount) * types.PercentageStrategic))
|
||||
distribution.PopAmount = util.UintValueToRDDLTokenString(uint64(float64(amount) * types.PercentagePop))
|
||||
distribution.PopAmount = util.UintValueToRDDLTokenString(uint64(float64(amount)*types.PercentagePop) + validatorPoPRewards)
|
||||
|
||||
return distribution
|
||||
}
|
||||
|
||||
@ -45,6 +45,7 @@ func (k msgServer) resolveStagedClaims(ctx sdk.Context, start int64, end int64)
|
||||
}
|
||||
|
||||
popParticipants := make(map[string]uint64)
|
||||
validatorPopReward := k.GetValidatorPoPReward(ctx)
|
||||
|
||||
for _, challenge := range challenges {
|
||||
// if challenge not finished nobody has claims
|
||||
@ -56,6 +57,11 @@ func (k msgServer) resolveStagedClaims(ctx sdk.Context, start int64, end int64)
|
||||
if challenge.GetSuccess() {
|
||||
popParticipants[challenge.Challengee] += challengeeAmt
|
||||
}
|
||||
initiatorAddr, err := sdk.AccAddressFromHexUnsafe(challenge.Initiator)
|
||||
if err != nil {
|
||||
util.GetAppLogger().Error(ctx, "error converting initiator address")
|
||||
}
|
||||
popParticipants[initiatorAddr.String()] += validatorPopReward
|
||||
}
|
||||
|
||||
// second data structure because map iteration order is not guaranteed in GO
|
||||
|
||||
@ -44,6 +44,12 @@ func (k msgServer) ReportPopResult(goCtx context.Context, msg *types.MsgReportPo
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_, err = sdk.AccAddressFromHexUnsafe(msg.Challenge.GetInitiator())
|
||||
if err != nil {
|
||||
util.GetAppLogger().Error(ctx, "error converting initiator address")
|
||||
return nil, errorsmod.Wrap(types.ErrInvalidPoPInitiator, "PoP initiator not hex encoded")
|
||||
}
|
||||
|
||||
// update valid PoP Result reports
|
||||
err = k.updateChallenge(ctx, msg)
|
||||
if err != nil {
|
||||
@ -74,6 +80,9 @@ func (k msgServer) issuePoPRewards(ctx sdk.Context, challenge types.Challenge) (
|
||||
stagedCRDDL = stagedCRDDL.AddAmount(sdk.NewIntFromUint64(challengerAmt))
|
||||
}
|
||||
|
||||
validatorPoPreward := k.GetValidatorPoPReward(ctx)
|
||||
stagedCRDDL = stagedCRDDL.AddAmount(sdk.NewIntFromUint64(validatorPoPreward))
|
||||
|
||||
err = k.bankKeeper.MintCoins(ctx, types.ModuleName, sdk.NewCoins(stagedCRDDL))
|
||||
if err != nil {
|
||||
return
|
||||
@ -90,6 +99,12 @@ func (k msgServer) handlePoP(ctx sdk.Context, challenge types.Challenge) (err er
|
||||
return
|
||||
}
|
||||
|
||||
initiatorAddr, _ := sdk.AccAddressFromHexUnsafe(challenge.Initiator)
|
||||
err = k.sendRewards(ctx, initiatorAddr.String(), k.GetValidatorPoPReward(ctx))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
if !challenge.GetSuccess() {
|
||||
return
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@ package keeper_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
@ -30,6 +31,7 @@ func TestMsgServer(t *testing.T) {
|
||||
func TestMsgServerReportPoPResult(t *testing.T) {
|
||||
t.Parallel()
|
||||
initiator := sample.Secp256k1AccAddress()
|
||||
initiatorHex := hex.EncodeToString(initiator.Bytes())
|
||||
challenger := sample.Secp256k1AccAddress()
|
||||
challengee := sample.Secp256k1AccAddress()
|
||||
errInvalidPopData := "Invalid pop data"
|
||||
@ -44,7 +46,7 @@ func TestMsgServerReportPoPResult(t *testing.T) {
|
||||
types.MsgReportPopResult{
|
||||
Creator: challenger.String(),
|
||||
Challenge: &types.Challenge{
|
||||
Initiator: initiator.String(),
|
||||
Initiator: initiatorHex,
|
||||
Challenger: challenger.String(),
|
||||
Challengee: challengee.String(),
|
||||
Height: 1,
|
||||
@ -59,7 +61,7 @@ func TestMsgServerReportPoPResult(t *testing.T) {
|
||||
types.MsgReportPopResult{
|
||||
Creator: challenger.String(),
|
||||
Challenge: &types.Challenge{
|
||||
Initiator: initiator.String(),
|
||||
Initiator: initiatorHex,
|
||||
Challenger: challenger.String(),
|
||||
Challengee: challengee.String(),
|
||||
Height: 2,
|
||||
@ -87,7 +89,7 @@ func TestMsgServerReportPoPResult(t *testing.T) {
|
||||
types.MsgReportPopResult{
|
||||
Creator: challenger.String(),
|
||||
Challenge: &types.Challenge{
|
||||
Initiator: initiator.String(),
|
||||
Initiator: initiatorHex,
|
||||
Challenger: challenger.String(),
|
||||
Challengee: challengee.String(),
|
||||
Height: 4,
|
||||
@ -102,7 +104,7 @@ func TestMsgServerReportPoPResult(t *testing.T) {
|
||||
types.MsgReportPopResult{
|
||||
Creator: challenger.String(),
|
||||
Challenge: &types.Challenge{
|
||||
Initiator: initiator.String(),
|
||||
Initiator: initiatorHex,
|
||||
Challenger: challenger.String(),
|
||||
Challengee: challengee.String(),
|
||||
Height: 5,
|
||||
@ -117,7 +119,7 @@ func TestMsgServerReportPoPResult(t *testing.T) {
|
||||
types.MsgReportPopResult{
|
||||
Creator: challenger.String(),
|
||||
Challenge: &types.Challenge{
|
||||
Initiator: initiator.String(),
|
||||
Initiator: initiatorHex,
|
||||
Challenger: challenger.String(),
|
||||
Challengee: challengee.String(),
|
||||
Height: 6,
|
||||
@ -128,7 +130,7 @@ func TestMsgServerReportPoPResult(t *testing.T) {
|
||||
"PoP report data does not match challenge: invalid challenge",
|
||||
},
|
||||
{
|
||||
"Non-Existing PoP",
|
||||
"Initiator not hex encoded",
|
||||
types.MsgReportPopResult{
|
||||
Creator: challenger.String(),
|
||||
Challenge: &types.Challenge{
|
||||
@ -140,6 +142,21 @@ func TestMsgServerReportPoPResult(t *testing.T) {
|
||||
Finished: true,
|
||||
},
|
||||
},
|
||||
"PoP initiator not hex encoded: invalid PoP initiator",
|
||||
},
|
||||
{
|
||||
"Non-Existing PoP",
|
||||
types.MsgReportPopResult{
|
||||
Creator: challenger.String(),
|
||||
Challenge: &types.Challenge{
|
||||
Initiator: initiatorHex,
|
||||
Challenger: challenger.String(),
|
||||
Challengee: challengee.String(),
|
||||
Height: 8,
|
||||
Success: true,
|
||||
Finished: true,
|
||||
},
|
||||
},
|
||||
"no challenge found for PoP report: invalid challenge",
|
||||
},
|
||||
}
|
||||
@ -147,7 +164,7 @@ func TestMsgServerReportPoPResult(t *testing.T) {
|
||||
msgServer, ctx, k := setupMsgServer(t)
|
||||
sdkCtx := sdk.UnwrapSDKContext(ctx)
|
||||
// set up the challenges, do not store the last challenge (special test case)
|
||||
for i := 0; i < 6; i++ {
|
||||
for i := 0; i < len(testCases)-1; i++ {
|
||||
msg := testCases[i].msg
|
||||
challenge := msg.GetChallenge()
|
||||
k.StoreChallenge(sdkCtx, *challenge)
|
||||
@ -155,9 +172,11 @@ func TestMsgServerReportPoPResult(t *testing.T) {
|
||||
// adjust challenge 4 to satisfy the test case
|
||||
testCases[3].msg.Challenge.Challengee = testCases[3].msg.Challenge.Challenger
|
||||
testCases[4].msg.Challenge.Challenger = testCases[4].msg.Challenge.Challengee
|
||||
testCases[5].msg.Challenge.Initiator = testCases[5].msg.Challenge.Challenger
|
||||
testCases[5].msg.Challenge.Initiator = hex.EncodeToString(challenger.Bytes())
|
||||
|
||||
for _, tc := range testCases {
|
||||
tc := tc
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
res, err := msgServer.ReportPopResult(ctx, &tc.msg)
|
||||
|
||||
if tc.errMsg != "" {
|
||||
@ -165,6 +184,7 @@ func TestMsgServerReportPoPResult(t *testing.T) {
|
||||
} else {
|
||||
assert.Equal(t, &types.MsgReportPopResultResponse{}, res)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
func TestMsgServerMintToken(t *testing.T) {
|
||||
|
||||
@ -19,7 +19,6 @@ func MigrateParams(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.Bina
|
||||
|
||||
params.ValidatorPopReward = 1
|
||||
|
||||
// migratedParams := types.NewParams(params.MintAddress, params.TokenDenom, params.StagedDenom, params.ClaimDenom, params.ReissuanceAsset, params.ReissuanceEpochs, params.PopEpochs, params.DistributionOffset, params.DistributionAddressEarlyInv, params.DistributionAddressInvestor, params.DistributionAddressStrategic, params.DistributionAddressDao, params.DistributionAddressPop, params.MqttResponseTimeout, params.ClaimAddress, params.TxGasLimit, 1)
|
||||
bz, err := cdc.Marshal(¶ms)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@ -29,4 +29,5 @@ var (
|
||||
ErrConvertClaims = errorsmod.Register(ModuleName, 20, "convert claim failed")
|
||||
ErrInvalidClaimAddress = errorsmod.Register(ModuleName, 21, "invalid claim address")
|
||||
ErrInvalidPopReporter = errorsmod.Register(ModuleName, 22, "invalid PoP reporter")
|
||||
ErrInvalidPoPInitiator = errorsmod.Register(ModuleName, 23, "invalid PoP initiator")
|
||||
)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user