mirror of
https://github.com/planetmint/planetmint-go.git
synced 2025-10-14 00:59:21 +00:00
Fix distribution bugs (#228)
* fixed missing-proposer bug for asset distribution * improved logging reduced type conversions and potential errors Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com>
This commit is contained in:
parent
73b0d1b4c8
commit
2b19b8194b
@ -2,7 +2,6 @@ package util
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"strconv"
|
|
||||||
|
|
||||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||||
"github.com/planetmint/planetmint-go/config"
|
"github.com/planetmint/planetmint-go/config"
|
||||||
@ -63,16 +62,11 @@ func SendDistributionRequest(goCtx context.Context, distribution daotypes.Distri
|
|||||||
buildSignBroadcastTx(goCtx, "sending the distribution request", sendingValidatorAddress, msg)
|
buildSignBroadcastTx(goCtx, "sending the distribution request", sendingValidatorAddress, msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
func SendDistributionResult(goCtx context.Context, lastPoP string, daoTxID string, invTxID string, popTxID string) {
|
func SendDistributionResult(goCtx context.Context, lastPoP int64, daoTxID string, invTxID string, popTxID string) {
|
||||||
ctx := sdk.UnwrapSDKContext(goCtx)
|
ctx := sdk.UnwrapSDKContext(goCtx)
|
||||||
sendingValidatorAddress := config.GetConfig().ValidatorAddress
|
sendingValidatorAddress := config.GetConfig().ValidatorAddress
|
||||||
GetAppLogger().Info(ctx, "create Distribution Result")
|
GetAppLogger().Info(ctx, "create Distribution Result")
|
||||||
iLastPoP, err := strconv.ParseInt(lastPoP, 10, 64)
|
msg := daotypes.NewMsgDistributionResult(sendingValidatorAddress, lastPoP, daoTxID, invTxID, popTxID)
|
||||||
if err != nil {
|
|
||||||
ctx.Logger().Error("Distribution Result: preparation failed ", err.Error())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
msg := daotypes.NewMsgDistributionResult(sendingValidatorAddress, iLastPoP, daoTxID, invTxID, popTxID)
|
|
||||||
buildSignBroadcastTx(goCtx, "send distribution result", sendingValidatorAddress, msg)
|
buildSignBroadcastTx(goCtx, "send distribution result", sendingValidatorAddress, msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,6 +47,7 @@ func BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock, k keeper.Keeper)
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
util.GetAppLogger().Error(ctx, "error while computing the RDDL distribution ", err)
|
util.GetAppLogger().Error(ctx, "error while computing the RDDL distribution ", err)
|
||||||
}
|
}
|
||||||
|
distribution.Proposer = hexProposerAddress
|
||||||
util.SendDistributionRequest(ctx, distribution)
|
util.SendDistributionRequest(ctx, distribution)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,6 @@ package keeper
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"strconv"
|
|
||||||
|
|
||||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||||
"github.com/planetmint/planetmint-go/util"
|
"github.com/planetmint/planetmint-go/util"
|
||||||
@ -14,26 +13,27 @@ func (k msgServer) DistributionRequest(goCtx context.Context, msg *types.MsgDist
|
|||||||
|
|
||||||
validatorIdentity, validResult := util.GetValidatorCometBFTIdentity(ctx)
|
validatorIdentity, validResult := util.GetValidatorCometBFTIdentity(ctx)
|
||||||
if validResult && msg.Distribution.GetProposer() == validatorIdentity {
|
if validResult && msg.Distribution.GetProposer() == validatorIdentity {
|
||||||
|
util.GetAppLogger().Info(ctx, "distribution request: Entering Asset Distribution Mode")
|
||||||
// issue three distributions:
|
// issue three distributions:
|
||||||
investorTx, err := util.DistributeAsset(msg.Distribution.InvestorAddr, msg.Distribution.InvestorAmount)
|
investorTx, err := util.DistributeAsset(msg.Distribution.InvestorAddr, msg.Distribution.InvestorAmount)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Logger().Error("Distribution Request: could not distribute asset to Investors: ", err.Error())
|
util.GetAppLogger().Error(ctx, "Distribution Request: could not distribute asset to Investors: ", err.Error())
|
||||||
}
|
}
|
||||||
popTx, err := util.DistributeAsset(msg.Distribution.PopAddr, msg.Distribution.PopAmount)
|
popTx, err := util.DistributeAsset(msg.Distribution.PopAddr, msg.Distribution.PopAmount)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Logger().Error("Distribution Request: could not distribute asset to PoP: ", err.Error())
|
util.GetAppLogger().Error(ctx, "Distribution Request: could not distribute asset to PoP: ", err.Error())
|
||||||
}
|
}
|
||||||
daoTx, err := util.DistributeAsset(msg.Distribution.DaoAddr, msg.Distribution.DaoAmount)
|
daoTx, err := util.DistributeAsset(msg.Distribution.DaoAddr, msg.Distribution.DaoAmount)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Logger().Error("Distribution Request: could not distribute asset to DAO: ", err.Error())
|
util.GetAppLogger().Error(ctx, "Distribution Request: could not distribute asset to DAO: ", err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
msg.Distribution.InvestorTxID = investorTx
|
msg.Distribution.InvestorTxID = investorTx
|
||||||
msg.Distribution.PopTxID = popTx
|
msg.Distribution.PopTxID = popTx
|
||||||
msg.Distribution.DaoTxID = daoTx
|
msg.Distribution.DaoTxID = daoTx
|
||||||
lastPopString := strconv.FormatInt(msg.Distribution.LastPop, 10)
|
util.SendDistributionResult(goCtx, msg.Distribution.LastPop, daoTx, investorTx, popTx)
|
||||||
util.SendDistributionResult(goCtx, lastPopString, daoTx, investorTx, popTx)
|
|
||||||
}
|
}
|
||||||
|
util.GetAppLogger().Info(ctx, "distribution request: storing distribution")
|
||||||
k.StoreDistributionOrder(ctx, *msg.GetDistribution())
|
k.StoreDistributionOrder(ctx, *msg.GetDistribution())
|
||||||
|
|
||||||
return &types.MsgDistributionRequestResponse{}, nil
|
return &types.MsgDistributionRequestResponse{}, nil
|
||||||
|
@ -21,7 +21,7 @@ func (k msgServer) DistributionResult(goCtx context.Context, msg *types.MsgDistr
|
|||||||
distribution.InvestorTxID = msg.InvestorTxID
|
distribution.InvestorTxID = msg.InvestorTxID
|
||||||
err := k.resolveStagedClaims(ctx, distribution.FirstPop, distribution.LastPop)
|
err := k.resolveStagedClaims(ctx, distribution.FirstPop, distribution.LastPop)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errorsmod.Wrapf(types.ErrResolvingStagedClaims, " for provieded PoP heights: %d %d", distribution.FirstPop, distribution.LastPop)
|
return nil, errorsmod.Wrapf(types.ErrResolvingStagedClaims, " for provided PoP heights: %d %d", distribution.FirstPop, distribution.LastPop)
|
||||||
}
|
}
|
||||||
k.StoreDistributionOrder(ctx, distribution)
|
k.StoreDistributionOrder(ctx, distribution)
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user