committed by
Alessio Treglia
parent
d742b9e6ef
commit
2cd2289a11
@@ -0,0 +1 @@
|
||||
#4049 update tag MsgWithdrawValidatorCommission to match type
|
||||
@@ -0,0 +1 @@
|
||||
#3774 add category tag to transactions for ease of filtering
|
||||
@@ -6,7 +6,18 @@ The bank module emits the following events/tags:
|
||||
|
||||
### MsgSend
|
||||
|
||||
| Key | Value |
|
||||
|-----------|---------------------------|
|
||||
| sender | {senderAccountAddress} |
|
||||
| recipient | {recipientAccountAddress} |
|
||||
| Key | Value |
|
||||
|-------------|---------------------------|
|
||||
| `action` | `send` |
|
||||
| `category` | `bank` |
|
||||
| `sender` | {senderAccountAddress} |
|
||||
| `recipient` | {recipientAccountAddress} |
|
||||
|
||||
### MsgMultiSend
|
||||
|
||||
| Key | Value |
|
||||
|-------------|---------------------------|
|
||||
| `action` | `multisend` |
|
||||
| `category` | `bank` |
|
||||
| `sender` | {senderAccountAddress} |
|
||||
| `recipient` | {recipientAccountAddress} |
|
||||
|
||||
@@ -6,8 +6,9 @@ The crisis module emits the following events/tags:
|
||||
|
||||
### MsgVerifyInvariance
|
||||
|
||||
| Key | Value |
|
||||
|-----------|---------------------|
|
||||
| action | verify_invariant |
|
||||
| sender | {message-sender} |
|
||||
| invariant | {invariant-route} |
|
||||
| Key | Value |
|
||||
|-------------|--------------------|
|
||||
| `action` | `verify_invariant` |
|
||||
| `category` | `crisis` |
|
||||
| `sender` | {message-sender} |
|
||||
| `invariant` | {invariant-route} |
|
||||
|
||||
@@ -6,25 +6,25 @@ The distribution module emits the following events/tags:
|
||||
|
||||
### MsgSetWithdrawAddress
|
||||
|
||||
| Key | Value |
|
||||
|-----------|---------------------------|
|
||||
| delegator | {delegatorAccountAddress} |
|
||||
|
||||
### MsgWithdrawDelegatorRewardsAll
|
||||
|
||||
| Key | Value |
|
||||
|-----------|---------------------------|
|
||||
| delegator | {delegatorAccountAddress} |
|
||||
| Key | Value |
|
||||
|-------------|---------------------------|
|
||||
| `action` | `set_withdraw_address` |
|
||||
| `category` | `distribution` |
|
||||
| `delegator` | {delegatorAccountAddress} |
|
||||
|
||||
### MsgWithdrawDelegatorReward
|
||||
|
||||
| Key | Value |
|
||||
|------------------|---------------------------|
|
||||
| delegator | {delegatorAccountAddress} |
|
||||
| source-validator | {srcOperatorAddress} |
|
||||
| Key | Value |
|
||||
|--------------------|-----------------------------|
|
||||
| `action` | `withdraw_delegator_reward` |
|
||||
| `category` | `distribution` |
|
||||
| `delegator` | {delegatorAccountAddress} |
|
||||
| `source-validator` | {srcOperatorAddress} |
|
||||
|
||||
### MsgWithdrawValidatorRewardsAll
|
||||
### MsgWithdrawValidatorCommission
|
||||
|
||||
| Key | Value |
|
||||
|------------------|----------------------|
|
||||
| source-validator | {srcOperatorAddress} |
|
||||
| Key | Value |
|
||||
|--------------------|---------------------------------|
|
||||
| `action` | `withdraw_validator_commission` |
|
||||
| `category` | `distribution` |
|
||||
| `source-validator` | {srcOperatorAddress} |
|
||||
|
||||
@@ -4,35 +4,38 @@ The governance module emits the following events/tags:
|
||||
|
||||
## EndBlocker
|
||||
|
||||
| Key | Value |
|
||||
|-----------------|------------------------------------------------------|
|
||||
| proposal-result | proposal-passed\|proposal-rejected\|proposal-dropped |
|
||||
| Key | Value |
|
||||
|-------------------|------------------------------------------------------------|
|
||||
| `proposal-result` | `proposal-passed`\|`proposal-rejected`\|`proposal-dropped` |
|
||||
|
||||
## Handlers
|
||||
|
||||
### MsgSubmitProposal
|
||||
|
||||
| Key | Value |
|
||||
|-------------------------|--------------------------|
|
||||
| action | proposal-vote |
|
||||
| proposer | {proposerAccountAddress} |
|
||||
| proposal-id | {proposalID} |
|
||||
| voting-period-start [0] | {proposalID} |
|
||||
| Key | Value |
|
||||
|---------------------------|--------------------------|
|
||||
| `action` | `submit_proposal` |
|
||||
| `category` | `governance` |
|
||||
| `proposer` | {proposerAccountAddress} |
|
||||
| `proposal-id` | {proposalID} |
|
||||
| `voting-period-start` [0] | {proposalID} |
|
||||
|
||||
* [0] Tag only emitted if the voting period starts during the submission.
|
||||
|
||||
### MsgVote
|
||||
|
||||
| Key | Value |
|
||||
|-------------|-----------------------|
|
||||
| action | proposal-vote |
|
||||
| voter | {voterAccountAddress} |
|
||||
| proposal-id | {proposalID} |
|
||||
| Key | Value |
|
||||
|---------------|-----------------------|
|
||||
| `action` | `vote` |
|
||||
| `category` | `governance` |
|
||||
| `voter` | {voterAccountAddress} |
|
||||
| `proposal-id` | {proposalID} |
|
||||
|
||||
### MsgDeposit
|
||||
|
||||
| Key | Value |
|
||||
|-------------|---------------------------|
|
||||
| action | proposal-vote |
|
||||
| depositor | {depositorAccountAddress} |
|
||||
| proposal-id | {proposalID} |
|
||||
| Key | Value |
|
||||
|---------------|---------------------------|
|
||||
| `action` | `deposit` |
|
||||
| `category` | `governance` |
|
||||
| `depositor` | {depositorAccountAddress} |
|
||||
| `proposal-id` | {proposalID} |
|
||||
|
||||
@@ -6,7 +6,8 @@ The slashing module emits the following events/tags:
|
||||
|
||||
### MsgUnjail
|
||||
|
||||
| Key | Value |
|
||||
|-----------|----------------------------|
|
||||
| action | validator-unjailed |
|
||||
| validator | {validatorOperatorAddress} |
|
||||
| Key | Value |
|
||||
|-------------|----------------------------|
|
||||
| `action` | `unjail` |
|
||||
| `category` | `slashing` |
|
||||
| `validator` | {validatorOperatorAddress} |
|
||||
|
||||
@@ -4,55 +4,62 @@ The staking module emits the following events/tags:
|
||||
|
||||
## EndBlocker
|
||||
|
||||
| Key | Value |
|
||||
|-----------------------|-------------------------------------------|
|
||||
| action | complete-unbonding\|complete-redelegation |
|
||||
| delegator | {delegatorAccountAddress} |
|
||||
| source-validator | {srcOperatorAddress} |
|
||||
| destination-validator | {dstOperatorAddress} |
|
||||
| Key | Value |
|
||||
|-------------------------|-----------------------------------------------|
|
||||
| `action` | `complete-unbonding`\|`complete-redelegation` |
|
||||
| `category` | `staking` |
|
||||
| `delegator` | {delegatorAccountAddress} |
|
||||
| `source-validator` | {srcOperatorAddress} |
|
||||
| `destination-validator` | {dstOperatorAddress} |
|
||||
|
||||
## Handlers
|
||||
|
||||
### MsgCreateValidator
|
||||
|
||||
| Key | Value |
|
||||
|-----------------------|----------------------|
|
||||
| destination-validator | {dstOperatorAddress} |
|
||||
| moniker | {validatorMoniker} |
|
||||
| identity | {validatorIdentity} |
|
||||
| Key | Value |
|
||||
|-------------------------|----------------------|
|
||||
| `action` | `create_validator` |
|
||||
| `category` | `staking` |
|
||||
| `destination-validator` | {dstOperatorAddress} |
|
||||
|
||||
### MsgEditValidator
|
||||
|
||||
| Key | Value |
|
||||
|-----------------------|----------------------|
|
||||
| destination-validator | {dstOperatorAddress} |
|
||||
| moniker | {validatorMoniker} |
|
||||
| identity | {validatorIdentity} |
|
||||
| Key | Value |
|
||||
|-------------------------|----------------------|
|
||||
| `action` | `edit_validator` |
|
||||
| `category` | `staking` |
|
||||
| `destination-validator` | {dstOperatorAddress} |
|
||||
|
||||
### MsgDelegate
|
||||
|
||||
| Key | Value |
|
||||
|-----------------------|-------------------------------------------|
|
||||
| delegator | {delegatorAccountAddress} |
|
||||
| destination-validator | {dstOperatorAddress} |
|
||||
| Key | Value |
|
||||
|-------------------------|---------------------------|
|
||||
| `action` | `delegate` |
|
||||
| `category` | `staking` |
|
||||
| `delegator` | {delegatorAccountAddress} |
|
||||
| `destination-validator` | {dstOperatorAddress} |
|
||||
|
||||
### MsgBeginRedelegate
|
||||
|
||||
| Key | Value |
|
||||
|-----------------------|-------------------------------------------|
|
||||
| delegator | {delegatorAccountAddress} |
|
||||
| source-validator | {srcOperatorAddress} |
|
||||
| destination-validator | {dstOperatorAddress} |
|
||||
| end-time [0] | {delegationFinishTime} |
|
||||
| Key | Value |
|
||||
|-------------------------|---------------------------|
|
||||
| `action` | `begin_redelegate` |
|
||||
| `category` | `staking` |
|
||||
| `delegator` | {delegatorAccountAddress} |
|
||||
| `source-validator` | {srcOperatorAddress} |
|
||||
| `destination-validator` | {dstOperatorAddress} |
|
||||
| `end-time` [0] | {delegationFinishTime} |
|
||||
|
||||
* [0] Time is formatted in the RFC3339 standard
|
||||
|
||||
### MsgUndelegate
|
||||
|
||||
| Key | Value |
|
||||
|------------------|---------------------------|
|
||||
| delegator | {delegatorAccountAddress} |
|
||||
| source-validator | {srcOperatorAddress} |
|
||||
| end-time [0] | {delegationFinishTime} |
|
||||
| Key | Value |
|
||||
|--------------------|---------------------------|
|
||||
| `action` | `begin_unbonding` |
|
||||
| `category` | `staking` |
|
||||
| `delegator` | {delegatorAccountAddress} |
|
||||
| `source-validator` | {srcOperatorAddress} |
|
||||
| `end-time` [0] | {delegationFinishTime} |
|
||||
|
||||
* [0] Time is formatted in the RFC3339 standard
|
||||
|
||||
@@ -71,6 +71,7 @@ func MakeTag(k string, v string) Tag {
|
||||
// common tags
|
||||
var (
|
||||
TagAction = "action"
|
||||
TagCategory = "category"
|
||||
TagSrcValidator = "source-validator"
|
||||
TagDstValidator = "destination-validator"
|
||||
TagDelegator = "delegator"
|
||||
|
||||
+12
-4
@@ -2,6 +2,7 @@ package bank
|
||||
|
||||
import (
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/cosmos/cosmos-sdk/x/bank/tags"
|
||||
)
|
||||
|
||||
// NewHandler returns a handler for "bank" type messages.
|
||||
@@ -24,13 +25,19 @@ func handleMsgSend(ctx sdk.Context, k Keeper, msg MsgSend) sdk.Result {
|
||||
if !k.GetSendEnabled(ctx) {
|
||||
return ErrSendDisabled(k.Codespace()).Result()
|
||||
}
|
||||
tags, err := k.SendCoins(ctx, msg.FromAddress, msg.ToAddress, msg.Amount)
|
||||
err := k.SendCoins(ctx, msg.FromAddress, msg.ToAddress, msg.Amount)
|
||||
if err != nil {
|
||||
return err.Result()
|
||||
}
|
||||
|
||||
resTags := sdk.NewTags(
|
||||
tags.Category, tags.TxCategory,
|
||||
tags.Sender, msg.FromAddress.String(),
|
||||
tags.Recipient, msg.ToAddress.String(),
|
||||
)
|
||||
|
||||
return sdk.Result{
|
||||
Tags: tags,
|
||||
Tags: resTags,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,12 +47,13 @@ func handleMsgMultiSend(ctx sdk.Context, k Keeper, msg MsgMultiSend) sdk.Result
|
||||
if !k.GetSendEnabled(ctx) {
|
||||
return ErrSendDisabled(k.Codespace()).Result()
|
||||
}
|
||||
tags, err := k.InputOutputCoins(ctx, msg.Inputs, msg.Outputs)
|
||||
resTags, err := k.InputOutputCoins(ctx, msg.Inputs, msg.Outputs)
|
||||
if err != nil {
|
||||
return err.Result()
|
||||
}
|
||||
|
||||
resTags = resTags.AppendTag(tags.Category, tags.TxCategory)
|
||||
return sdk.Result{
|
||||
Tags: tags,
|
||||
Tags: resTags,
|
||||
}
|
||||
}
|
||||
|
||||
+38
-34
@@ -6,6 +6,7 @@ import (
|
||||
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/cosmos/cosmos-sdk/x/auth"
|
||||
"github.com/cosmos/cosmos-sdk/x/bank/tags"
|
||||
"github.com/cosmos/cosmos-sdk/x/params"
|
||||
)
|
||||
|
||||
@@ -17,8 +18,8 @@ type Keeper interface {
|
||||
SendKeeper
|
||||
|
||||
SetCoins(ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coins) sdk.Error
|
||||
SubtractCoins(ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coins) (sdk.Coins, sdk.Tags, sdk.Error)
|
||||
AddCoins(ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coins) (sdk.Coins, sdk.Tags, sdk.Error)
|
||||
SubtractCoins(ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coins) (sdk.Coins, sdk.Error)
|
||||
AddCoins(ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coins) (sdk.Coins, sdk.Error)
|
||||
InputOutputCoins(ctx sdk.Context, inputs []Input, outputs []Output) (sdk.Tags, sdk.Error)
|
||||
|
||||
DelegateCoins(ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coins) (sdk.Tags, sdk.Error)
|
||||
@@ -60,10 +61,10 @@ func (keeper BaseKeeper) SetCoins(
|
||||
// SubtractCoins subtracts amt from the coins at the addr.
|
||||
func (keeper BaseKeeper) SubtractCoins(
|
||||
ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coins,
|
||||
) (sdk.Coins, sdk.Tags, sdk.Error) {
|
||||
) (sdk.Coins, sdk.Error) {
|
||||
|
||||
if !amt.IsValid() {
|
||||
return nil, nil, sdk.ErrInvalidCoins(amt.String())
|
||||
return nil, sdk.ErrInvalidCoins(amt.String())
|
||||
}
|
||||
return subtractCoins(ctx, keeper.ak, addr, amt)
|
||||
}
|
||||
@@ -71,10 +72,10 @@ func (keeper BaseKeeper) SubtractCoins(
|
||||
// AddCoins adds amt to the coins at the addr.
|
||||
func (keeper BaseKeeper) AddCoins(
|
||||
ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coins,
|
||||
) (sdk.Coins, sdk.Tags, sdk.Error) {
|
||||
) (sdk.Coins, sdk.Error) {
|
||||
|
||||
if !amt.IsValid() {
|
||||
return nil, nil, sdk.ErrInvalidCoins(amt.String())
|
||||
return nil, sdk.ErrInvalidCoins(amt.String())
|
||||
}
|
||||
return addCoins(ctx, keeper.ak, addr, amt)
|
||||
}
|
||||
@@ -119,7 +120,7 @@ func (keeper BaseKeeper) UndelegateCoins(
|
||||
type SendKeeper interface {
|
||||
ViewKeeper
|
||||
|
||||
SendCoins(ctx sdk.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) (sdk.Tags, sdk.Error)
|
||||
SendCoins(ctx sdk.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) sdk.Error
|
||||
|
||||
GetSendEnabled(ctx sdk.Context) bool
|
||||
SetSendEnabled(ctx sdk.Context, enabled bool)
|
||||
@@ -150,10 +151,10 @@ func NewBaseSendKeeper(ak auth.AccountKeeper,
|
||||
// SendCoins moves coins from one account to another
|
||||
func (keeper BaseSendKeeper) SendCoins(
|
||||
ctx sdk.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins,
|
||||
) (sdk.Tags, sdk.Error) {
|
||||
) sdk.Error {
|
||||
|
||||
if !amt.IsValid() {
|
||||
return nil, sdk.ErrInvalidCoins(amt.String())
|
||||
return sdk.ErrInvalidCoins(amt.String())
|
||||
}
|
||||
return sendCoins(ctx, keeper.ak, fromAddr, toAddr, amt)
|
||||
}
|
||||
@@ -249,10 +250,10 @@ func setAccount(ctx sdk.Context, ak auth.AccountKeeper, acc auth.Account) {
|
||||
// subtractCoins subtracts amt coins from an account with the given address addr.
|
||||
//
|
||||
// CONTRACT: If the account is a vesting account, the amount has to be spendable.
|
||||
func subtractCoins(ctx sdk.Context, ak auth.AccountKeeper, addr sdk.AccAddress, amt sdk.Coins) (sdk.Coins, sdk.Tags, sdk.Error) {
|
||||
func subtractCoins(ctx sdk.Context, ak auth.AccountKeeper, addr sdk.AccAddress, amt sdk.Coins) (sdk.Coins, sdk.Error) {
|
||||
|
||||
if !amt.IsValid() {
|
||||
return nil, nil, sdk.ErrInvalidCoins(amt.String())
|
||||
return nil, sdk.ErrInvalidCoins(amt.String())
|
||||
}
|
||||
|
||||
oldCoins, spendableCoins := sdk.NewCoins(), sdk.NewCoins()
|
||||
@@ -267,59 +268,57 @@ func subtractCoins(ctx sdk.Context, ak auth.AccountKeeper, addr sdk.AccAddress,
|
||||
// So the check here is sufficient instead of subtracting from oldCoins.
|
||||
_, hasNeg := spendableCoins.SafeSub(amt)
|
||||
if hasNeg {
|
||||
return amt, nil, sdk.ErrInsufficientCoins(
|
||||
return amt, sdk.ErrInsufficientCoins(
|
||||
fmt.Sprintf("insufficient account funds; %s < %s", spendableCoins, amt),
|
||||
)
|
||||
}
|
||||
|
||||
newCoins := oldCoins.Sub(amt) // should not panic as spendable coins was already checked
|
||||
err := setCoins(ctx, ak, addr, newCoins)
|
||||
tags := sdk.NewTags(TagKeySender, addr.String())
|
||||
|
||||
return newCoins, tags, err
|
||||
return newCoins, err
|
||||
}
|
||||
|
||||
// AddCoins adds amt to the coins at the addr.
|
||||
func addCoins(ctx sdk.Context, am auth.AccountKeeper, addr sdk.AccAddress, amt sdk.Coins) (sdk.Coins, sdk.Tags, sdk.Error) {
|
||||
func addCoins(ctx sdk.Context, am auth.AccountKeeper, addr sdk.AccAddress, amt sdk.Coins) (sdk.Coins, sdk.Error) {
|
||||
|
||||
if !amt.IsValid() {
|
||||
return nil, nil, sdk.ErrInvalidCoins(amt.String())
|
||||
return nil, sdk.ErrInvalidCoins(amt.String())
|
||||
}
|
||||
|
||||
oldCoins := getCoins(ctx, am, addr)
|
||||
newCoins := oldCoins.Add(amt)
|
||||
|
||||
if newCoins.IsAnyNegative() {
|
||||
return amt, nil, sdk.ErrInsufficientCoins(
|
||||
return amt, sdk.ErrInsufficientCoins(
|
||||
fmt.Sprintf("insufficient account funds; %s < %s", oldCoins, amt),
|
||||
)
|
||||
}
|
||||
|
||||
err := setCoins(ctx, am, addr, newCoins)
|
||||
tags := sdk.NewTags(TagKeyRecipient, addr.String())
|
||||
|
||||
return newCoins, tags, err
|
||||
return newCoins, err
|
||||
}
|
||||
|
||||
// SendCoins moves coins from one account to another
|
||||
// Returns ErrInvalidCoins if amt is invalid.
|
||||
func sendCoins(ctx sdk.Context, am auth.AccountKeeper, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) (sdk.Tags, sdk.Error) {
|
||||
func sendCoins(ctx sdk.Context, am auth.AccountKeeper, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) sdk.Error {
|
||||
// Safety check ensuring that when sending coins the keeper must maintain the
|
||||
if !amt.IsValid() {
|
||||
return nil, sdk.ErrInvalidCoins(amt.String())
|
||||
return sdk.ErrInvalidCoins(amt.String())
|
||||
}
|
||||
|
||||
_, subTags, err := subtractCoins(ctx, am, fromAddr, amt)
|
||||
_, err := subtractCoins(ctx, am, fromAddr, amt)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return err
|
||||
}
|
||||
|
||||
_, addTags, err := addCoins(ctx, am, toAddr, amt)
|
||||
_, err = addCoins(ctx, am, toAddr, amt)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return err
|
||||
}
|
||||
|
||||
return subTags.AppendTags(addTags), nil
|
||||
return nil
|
||||
}
|
||||
|
||||
// InputOutputCoins handles a list of inputs and outputs
|
||||
@@ -334,19 +333,24 @@ func inputOutputCoins(ctx sdk.Context, am auth.AccountKeeper, inputs []Input, ou
|
||||
allTags := sdk.EmptyTags()
|
||||
|
||||
for _, in := range inputs {
|
||||
_, tags, err := subtractCoins(ctx, am, in.Address, in.Coins)
|
||||
_, err := subtractCoins(ctx, am, in.Address, in.Coins)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
allTags = allTags.AppendTags(tags)
|
||||
|
||||
allTags = allTags.AppendTag(
|
||||
tags.Sender, in.Address.String(),
|
||||
)
|
||||
}
|
||||
|
||||
for _, out := range outputs {
|
||||
_, tags, err := addCoins(ctx, am, out.Address, out.Coins)
|
||||
_, err := addCoins(ctx, am, out.Address, out.Coins)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
allTags = allTags.AppendTags(tags)
|
||||
allTags = allTags.AppendTag(
|
||||
tags.Recipient, out.Address.String(),
|
||||
)
|
||||
}
|
||||
|
||||
return allTags, nil
|
||||
@@ -381,8 +385,8 @@ func delegateCoins(
|
||||
setAccount(ctx, ak, acc)
|
||||
|
||||
return sdk.NewTags(
|
||||
sdk.TagAction, TagActionDelegateCoins,
|
||||
sdk.TagDelegator, []byte(addr.String()),
|
||||
sdk.TagAction, tags.ActionDelegateCoins,
|
||||
sdk.TagDelegator, addr.String(),
|
||||
), nil
|
||||
}
|
||||
|
||||
@@ -406,8 +410,8 @@ func undelegateCoins(
|
||||
setAccount(ctx, ak, acc)
|
||||
|
||||
return sdk.NewTags(
|
||||
sdk.TagAction, TagActionUndelegateCoins,
|
||||
sdk.TagDelegator, []byte(addr.String()),
|
||||
sdk.TagAction, tags.ActionUndelegateCoins,
|
||||
sdk.TagDelegator, addr.String(),
|
||||
), nil
|
||||
}
|
||||
|
||||
|
||||
@@ -101,7 +101,7 @@ func TestKeeper(t *testing.T) {
|
||||
require.True(t, bankKeeper.GetCoins(ctx, addr).IsEqual(sdk.NewCoins(sdk.NewInt64Coin("foocoin", 10))))
|
||||
require.True(t, bankKeeper.GetCoins(ctx, addr2).IsEqual(sdk.NewCoins(sdk.NewInt64Coin("foocoin", 5))))
|
||||
|
||||
_, err2 := bankKeeper.SendCoins(ctx, addr, addr2, sdk.NewCoins(sdk.NewInt64Coin("foocoin", 50)))
|
||||
err2 := bankKeeper.SendCoins(ctx, addr, addr2, sdk.NewCoins(sdk.NewInt64Coin("foocoin", 50)))
|
||||
require.Implements(t, (*sdk.Error)(nil), err2)
|
||||
require.True(t, bankKeeper.GetCoins(ctx, addr).IsEqual(sdk.NewCoins(sdk.NewInt64Coin("foocoin", 10))))
|
||||
require.True(t, bankKeeper.GetCoins(ctx, addr2).IsEqual(sdk.NewCoins(sdk.NewInt64Coin("foocoin", 5))))
|
||||
@@ -165,7 +165,7 @@ func TestSendKeeper(t *testing.T) {
|
||||
require.True(t, sendKeeper.GetCoins(ctx, addr).IsEqual(sdk.NewCoins(sdk.NewInt64Coin("foocoin", 10))))
|
||||
require.True(t, sendKeeper.GetCoins(ctx, addr2).IsEqual(sdk.NewCoins(sdk.NewInt64Coin("foocoin", 5))))
|
||||
|
||||
_, err := sendKeeper.SendCoins(ctx, addr, addr2, sdk.NewCoins(sdk.NewInt64Coin("foocoin", 50)))
|
||||
err := sendKeeper.SendCoins(ctx, addr, addr2, sdk.NewCoins(sdk.NewInt64Coin("foocoin", 50)))
|
||||
require.Implements(t, (*sdk.Error)(nil), err)
|
||||
require.True(t, sendKeeper.GetCoins(ctx, addr).IsEqual(sdk.NewCoins(sdk.NewInt64Coin("foocoin", 10))))
|
||||
require.True(t, sendKeeper.GetCoins(ctx, addr2).IsEqual(sdk.NewCoins(sdk.NewInt64Coin("foocoin", 5))))
|
||||
@@ -178,7 +178,7 @@ func TestSendKeeper(t *testing.T) {
|
||||
// validate coins with invalid denoms or negative values cannot be sent
|
||||
// NOTE: We must use the Coin literal as the constructor does not allow
|
||||
// negative values.
|
||||
_, err = sendKeeper.SendCoins(ctx, addr, addr2, sdk.Coins{sdk.Coin{"FOOCOIN", sdk.NewInt(-5)}})
|
||||
err = sendKeeper.SendCoins(ctx, addr, addr2, sdk.Coins{sdk.Coin{"FOOCOIN", sdk.NewInt(-5)}})
|
||||
require.Error(t, err)
|
||||
}
|
||||
|
||||
@@ -226,7 +226,7 @@ func TestVestingAccountSend(t *testing.T) {
|
||||
input.ak.SetAccount(ctx, vacc)
|
||||
|
||||
// require that no coins be sendable at the beginning of the vesting schedule
|
||||
_, err := bankKeeper.SendCoins(ctx, addr1, addr2, sendCoins)
|
||||
err := bankKeeper.SendCoins(ctx, addr1, addr2, sendCoins)
|
||||
require.Error(t, err)
|
||||
|
||||
// receive some coins
|
||||
@@ -235,7 +235,7 @@ func TestVestingAccountSend(t *testing.T) {
|
||||
|
||||
// require that all vested coins are spendable plus any received
|
||||
ctx = ctx.WithBlockTime(now.Add(12 * time.Hour))
|
||||
_, err = bankKeeper.SendCoins(ctx, addr1, addr2, sendCoins)
|
||||
err = bankKeeper.SendCoins(ctx, addr1, addr2, sendCoins)
|
||||
vacc = input.ak.GetAccount(ctx, addr1).(*auth.ContinuousVestingAccount)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, origCoins, vacc.GetCoins())
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
package bank
|
||||
|
||||
// Tag keys and values
|
||||
var (
|
||||
TagActionUndelegateCoins = []byte("undelegateCoins")
|
||||
TagActionDelegateCoins = []byte("delegateCoins")
|
||||
|
||||
TagKeyRecipient = "recipient"
|
||||
TagKeySender = "sender"
|
||||
)
|
||||
@@ -0,0 +1,17 @@
|
||||
package tags
|
||||
|
||||
import (
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
)
|
||||
|
||||
// Tag keys and values
|
||||
var (
|
||||
ActionUndelegateCoins = "undelegateCoins"
|
||||
ActionDelegateCoins = "delegateCoins"
|
||||
TxCategory = "bank"
|
||||
|
||||
Action = sdk.TagAction
|
||||
Category = sdk.TagCategory
|
||||
Recipient = "recipient"
|
||||
Sender = "sender"
|
||||
)
|
||||
@@ -16,5 +16,5 @@ type FeeCollectionKeeper interface {
|
||||
|
||||
// expected bank keeper
|
||||
type BankKeeper interface {
|
||||
SubtractCoins(ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coins) (sdk.Coins, sdk.Tags, sdk.Error)
|
||||
SubtractCoins(ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coins) (sdk.Coins, sdk.Error)
|
||||
}
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@ func handleMsgVerifyInvariant(ctx sdk.Context, msg MsgVerifyInvariant, k Keeper)
|
||||
|
||||
// remove the constant fee
|
||||
constantFee := sdk.NewCoins(k.GetConstantFee(ctx))
|
||||
_, _, err := k.bankKeeper.SubtractCoins(ctx, msg.Sender, constantFee)
|
||||
_, err := k.bankKeeper.SubtractCoins(ctx, msg.Sender, constantFee)
|
||||
if err != nil {
|
||||
return err.Result()
|
||||
}
|
||||
|
||||
+13
-10
@@ -32,11 +32,12 @@ func handleMsgModifyWithdrawAddress(ctx sdk.Context, msg types.MsgSetWithdrawAdd
|
||||
return err.Result()
|
||||
}
|
||||
|
||||
tags := sdk.NewTags(
|
||||
tags.Delegator, []byte(msg.DelegatorAddress.String()),
|
||||
resTags := sdk.NewTags(
|
||||
tags.Category, tags.TxCategory,
|
||||
tags.Delegator, msg.DelegatorAddress.String(),
|
||||
)
|
||||
return sdk.Result{
|
||||
Tags: tags,
|
||||
Tags: resTags,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,12 +48,13 @@ func handleMsgWithdrawDelegatorReward(ctx sdk.Context, msg types.MsgWithdrawDele
|
||||
return err.Result()
|
||||
}
|
||||
|
||||
tags := sdk.NewTags(
|
||||
tags.Delegator, []byte(msg.DelegatorAddress.String()),
|
||||
tags.Validator, []byte(msg.ValidatorAddress.String()),
|
||||
resTags := sdk.NewTags(
|
||||
tags.Category, tags.TxCategory,
|
||||
tags.Delegator, msg.DelegatorAddress.String(),
|
||||
tags.Validator, msg.ValidatorAddress.String(),
|
||||
)
|
||||
return sdk.Result{
|
||||
Tags: tags,
|
||||
Tags: resTags,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,10 +65,11 @@ func handleMsgWithdrawValidatorCommission(ctx sdk.Context, msg types.MsgWithdraw
|
||||
return err.Result()
|
||||
}
|
||||
|
||||
tags := sdk.NewTags(
|
||||
tags.Validator, []byte(msg.ValidatorAddress.String()),
|
||||
resTags := sdk.NewTags(
|
||||
tags.Category, tags.TxCategory,
|
||||
tags.Validator, msg.ValidatorAddress.String(),
|
||||
)
|
||||
return sdk.Result{
|
||||
Tags: tags,
|
||||
Tags: resTags,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -140,7 +140,7 @@ func (k Keeper) withdrawDelegationRewards(ctx sdk.Context, val sdk.Validator, de
|
||||
// add coins to user account
|
||||
if !coins.IsZero() {
|
||||
withdrawAddr := k.GetDelegatorWithdrawAddr(ctx, del.GetDelegatorAddr())
|
||||
if _, _, err := k.bankKeeper.AddCoins(ctx, withdrawAddr, coins); err != nil {
|
||||
if _, err := k.bankKeeper.AddCoins(ctx, withdrawAddr, coins); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ func (k Keeper) DistributeFeePool(ctx sdk.Context, amount sdk.Coins, receiveAddr
|
||||
}
|
||||
|
||||
feePool.CommunityPool.Sub(sdk.NewDecCoins(amount))
|
||||
_, _, err := k.bankKeeper.AddCoins(ctx, receiveAddr, amount)
|
||||
_, err := k.bankKeeper.AddCoins(ctx, receiveAddr, amount)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ func (h Hooks) AfterValidatorRemoved(ctx sdk.Context, _ sdk.ConsAddress, valAddr
|
||||
accAddr := sdk.AccAddress(valAddr)
|
||||
withdrawAddr := h.k.GetDelegatorWithdrawAddr(ctx, accAddr)
|
||||
|
||||
if _, _, err := h.k.bankKeeper.AddCoins(ctx, withdrawAddr, coins); err != nil {
|
||||
if _, err := h.k.bankKeeper.AddCoins(ctx, withdrawAddr, coins); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ func (k Keeper) WithdrawValidatorCommission(ctx sdk.Context, valAddr sdk.ValAddr
|
||||
accAddr := sdk.AccAddress(valAddr)
|
||||
withdrawAddr := k.GetDelegatorWithdrawAddr(ctx, accAddr)
|
||||
|
||||
if _, _, err := k.bankKeeper.AddCoins(ctx, withdrawAddr, coins); err != nil {
|
||||
if _, err := k.bankKeeper.AddCoins(ctx, withdrawAddr, coins); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@ func CreateTestInputAdvanced(t *testing.T, isCheckTx bool, initPower int64,
|
||||
// fill all the addresses with some coins, set the loose pool tokens simultaneously
|
||||
for _, addr := range TestAddrs {
|
||||
pool := sk.GetPool(ctx)
|
||||
_, _, err := bankKeeper.AddCoins(ctx, addr, sdk.Coins{
|
||||
_, err := bankKeeper.AddCoins(ctx, addr, sdk.Coins{
|
||||
sdk.NewCoin(sk.GetParams(ctx).BondDenom, initCoins),
|
||||
})
|
||||
require.Nil(t, err)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// nolint
|
||||
package tags
|
||||
|
||||
import (
|
||||
@@ -6,6 +5,9 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
TxCategory = "distribution"
|
||||
|
||||
Validator = sdk.TagSrcValidator
|
||||
Delegator = sdk.TagDelegator
|
||||
Category = sdk.TagCategory
|
||||
)
|
||||
|
||||
@@ -20,7 +20,7 @@ type StakingKeeper interface {
|
||||
|
||||
// expected coin keeper
|
||||
type BankKeeper interface {
|
||||
AddCoins(ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coins) (sdk.Coins, sdk.Tags, sdk.Error)
|
||||
AddCoins(ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coins) (sdk.Coins, sdk.Error)
|
||||
}
|
||||
|
||||
// expected fee collection keeper
|
||||
|
||||
@@ -96,7 +96,7 @@ func NewMsgWithdrawValidatorCommission(valAddr sdk.ValAddress) MsgWithdrawValida
|
||||
}
|
||||
|
||||
func (msg MsgWithdrawValidatorCommission) Route() string { return ModuleName }
|
||||
func (msg MsgWithdrawValidatorCommission) Type() string { return "withdraw_validator_rewards_all" }
|
||||
func (msg MsgWithdrawValidatorCommission) Type() string { return "withdraw_validator_commission" }
|
||||
|
||||
// Return address that must sign over msg.GetSignBytes()
|
||||
func (msg MsgWithdrawValidatorCommission) GetSigners() []sdk.AccAddress {
|
||||
|
||||
@@ -7,6 +7,6 @@ type BankKeeper interface {
|
||||
GetCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins
|
||||
|
||||
// TODO remove once governance doesn't require use of accounts
|
||||
SendCoins(ctx sdk.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) (sdk.Tags, sdk.Error)
|
||||
SendCoins(ctx sdk.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) sdk.Error
|
||||
SetSendEnabled(ctx sdk.Context, enabled bool)
|
||||
}
|
||||
|
||||
+9
-3
@@ -47,8 +47,9 @@ func handleMsgSubmitProposal(ctx sdk.Context, keeper Keeper, msg MsgSubmitPropos
|
||||
}
|
||||
|
||||
resTags := sdk.NewTags(
|
||||
tags.Proposer, []byte(msg.Proposer.String()),
|
||||
tags.ProposalID, proposalIDStr,
|
||||
tags.Category, tags.TxCategory,
|
||||
tags.Proposer, msg.Proposer.String(),
|
||||
)
|
||||
|
||||
if votingStarted {
|
||||
@@ -68,9 +69,11 @@ func handleMsgDeposit(ctx sdk.Context, keeper Keeper, msg MsgDeposit) sdk.Result
|
||||
}
|
||||
|
||||
proposalIDStr := fmt.Sprintf("%d", msg.ProposalID)
|
||||
|
||||
resTags := sdk.NewTags(
|
||||
tags.Depositor, []byte(msg.Depositor.String()),
|
||||
tags.ProposalID, proposalIDStr,
|
||||
tags.Category, tags.TxCategory,
|
||||
tags.Depositor, msg.Depositor.String(),
|
||||
)
|
||||
|
||||
if votingStarted {
|
||||
@@ -88,10 +91,13 @@ func handleMsgVote(ctx sdk.Context, keeper Keeper, msg MsgVote) sdk.Result {
|
||||
return err.Result()
|
||||
}
|
||||
|
||||
proposalIDStr := fmt.Sprintf("%d", msg.ProposalID)
|
||||
|
||||
return sdk.Result{
|
||||
Tags: sdk.NewTags(
|
||||
tags.ProposalID, proposalIDStr,
|
||||
tags.Category, tags.TxCategory,
|
||||
tags.Voter, msg.Voter.String(),
|
||||
tags.ProposalID, fmt.Sprintf("%d", msg.ProposalID),
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -382,7 +382,7 @@ func (keeper Keeper) AddDeposit(ctx sdk.Context, proposalID uint64, depositorAdd
|
||||
|
||||
// Send coins from depositor's account to DepositedCoinsAccAddr account
|
||||
// TODO: Don't use an account for this purpose; it's clumsy and prone to misuse.
|
||||
_, err := keeper.ck.SendCoins(ctx, depositorAddr, DepositedCoinsAccAddr, depositAmount)
|
||||
err := keeper.ck.SendCoins(ctx, depositorAddr, DepositedCoinsAccAddr, depositAmount)
|
||||
if err != nil {
|
||||
return err, false
|
||||
}
|
||||
@@ -426,7 +426,7 @@ func (keeper Keeper) RefundDeposits(ctx sdk.Context, proposalID uint64) {
|
||||
deposit := &Deposit{}
|
||||
keeper.cdc.MustUnmarshalBinaryLengthPrefixed(depositsIterator.Value(), deposit)
|
||||
|
||||
_, err := keeper.ck.SendCoins(ctx, DepositedCoinsAccAddr, deposit.Depositor, deposit.Amount)
|
||||
err := keeper.ck.SendCoins(ctx, DepositedCoinsAccAddr, deposit.Depositor, deposit.Amount)
|
||||
if err != nil {
|
||||
panic("should not happen")
|
||||
}
|
||||
@@ -445,7 +445,7 @@ func (keeper Keeper) DeleteDeposits(ctx sdk.Context, proposalID uint64) {
|
||||
keeper.cdc.MustUnmarshalBinaryLengthPrefixed(depositsIterator.Value(), deposit)
|
||||
|
||||
// TODO: Find a way to do this without using accounts.
|
||||
_, err := keeper.ck.SendCoins(ctx, DepositedCoinsAccAddr, BurnedDepositCoinsAccAddr, deposit.Amount)
|
||||
err := keeper.ck.SendCoins(ctx, DepositedCoinsAccAddr, BurnedDepositCoinsAccAddr, deposit.Amount)
|
||||
if err != nil {
|
||||
panic("should not happen")
|
||||
}
|
||||
|
||||
@@ -9,8 +9,10 @@ var (
|
||||
ActionProposalDropped = "proposal-dropped"
|
||||
ActionProposalPassed = "proposal-passed"
|
||||
ActionProposalRejected = "proposal-rejected"
|
||||
TxCategory = "governance"
|
||||
|
||||
Action = sdk.TagAction
|
||||
Category = sdk.TagCategory
|
||||
Proposer = "proposer"
|
||||
ProposalID = "proposal-id"
|
||||
VotingPeriodStart = "voting-period-start"
|
||||
|
||||
@@ -4,6 +4,6 @@ import sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
|
||||
// expected bank keeper
|
||||
type BankKeeper interface {
|
||||
AddCoins(ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coins) (sdk.Coins, sdk.Tags, sdk.Error)
|
||||
SubtractCoins(ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coins) (sdk.Coins, sdk.Tags, sdk.Error)
|
||||
AddCoins(ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coins) (sdk.Coins, sdk.Error)
|
||||
SubtractCoins(ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coins) (sdk.Coins, sdk.Error)
|
||||
}
|
||||
|
||||
+2
-2
@@ -22,7 +22,7 @@ func NewHandler(ibcm Mapper, ck BankKeeper) sdk.Handler {
|
||||
func handleIBCTransferMsg(ctx sdk.Context, ibcm Mapper, ck BankKeeper, msg MsgIBCTransfer) sdk.Result {
|
||||
packet := msg.IBCPacket
|
||||
|
||||
_, _, err := ck.SubtractCoins(ctx, packet.SrcAddr, packet.Coins)
|
||||
_, err := ck.SubtractCoins(ctx, packet.SrcAddr, packet.Coins)
|
||||
if err != nil {
|
||||
return err.Result()
|
||||
}
|
||||
@@ -45,7 +45,7 @@ func handleIBCReceiveMsg(ctx sdk.Context, ibcm Mapper, ck BankKeeper, msg MsgIBC
|
||||
}
|
||||
|
||||
// XXX Check that packet.Coins is valid and positive (nonzero)
|
||||
_, _, err := ck.AddCoins(ctx, packet.DestAddr, packet.Coins)
|
||||
_, err := ck.AddCoins(ctx, packet.DestAddr, packet.Coins)
|
||||
if err != nil {
|
||||
return err.Result()
|
||||
}
|
||||
|
||||
+2
-2
@@ -83,7 +83,7 @@ func newAddress() sdk.AccAddress {
|
||||
|
||||
func getCoins(ck bank.Keeper, ctx sdk.Context, addr sdk.AccAddress) (sdk.Coins, sdk.Error) {
|
||||
zero := sdk.Coins(nil)
|
||||
coins, _, err := ck.AddCoins(ctx, addr, zero)
|
||||
coins, err := ck.AddCoins(ctx, addr, zero)
|
||||
return coins, err
|
||||
}
|
||||
|
||||
@@ -97,7 +97,7 @@ func TestIBC(t *testing.T) {
|
||||
zero := sdk.Coins(nil)
|
||||
mycoins := sdk.Coins{sdk.NewInt64Coin("mycoin", 10)}
|
||||
|
||||
coins, _, err := input.bk.AddCoins(ctx, src, mycoins)
|
||||
coins, err := input.bk.AddCoins(ctx, src, mycoins)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, mycoins, coins)
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@ func handleMsgUnjail(ctx sdk.Context, msg MsgUnjail, k Keeper) sdk.Result {
|
||||
k.validatorSet.Unjail(ctx, consAddr)
|
||||
|
||||
tags := sdk.NewTags(
|
||||
tags.Category, tags.TxCategory,
|
||||
tags.Validator, msg.ValidatorAddr.String(),
|
||||
)
|
||||
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
package tags
|
||||
|
||||
import (
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
)
|
||||
|
||||
// Slashing tags
|
||||
var (
|
||||
TxCategory = "slashing"
|
||||
|
||||
Category = sdk.TagCategory
|
||||
Validator = "validator"
|
||||
)
|
||||
|
||||
@@ -81,7 +81,7 @@ func createTestInput(t *testing.T, defaults Params) (sdk.Context, bank.Keeper, s
|
||||
require.Nil(t, err)
|
||||
|
||||
for _, addr := range addrs {
|
||||
_, _, err = ck.AddCoins(ctx, sdk.AccAddress(addr), sdk.Coins{
|
||||
_, err = ck.AddCoins(ctx, sdk.AccAddress(addr), sdk.Coins{
|
||||
{sk.GetParams(ctx).BondDenom, initCoins},
|
||||
})
|
||||
}
|
||||
|
||||
@@ -77,6 +77,7 @@ func EndBlocker(ctx sdk.Context, k keeper.Keeper) ([]abci.ValidatorUpdate, sdk.T
|
||||
|
||||
resTags.AppendTags(sdk.NewTags(
|
||||
tags.Action, tags.ActionCompleteRedelegation,
|
||||
tags.Category, tags.TxCategory,
|
||||
tags.Delegator, dvvTriplet.DelegatorAddress.String(),
|
||||
tags.SrcValidator, dvvTriplet.ValidatorSrcAddress.String(),
|
||||
tags.DstValidator, dvvTriplet.ValidatorDstAddress.String(),
|
||||
@@ -142,13 +143,14 @@ func handleMsgCreateValidator(ctx sdk.Context, msg types.MsgCreateValidator, k k
|
||||
return err.Result()
|
||||
}
|
||||
|
||||
tags := sdk.NewTags(
|
||||
resTags := sdk.NewTags(
|
||||
tags.Category, tags.TxCategory,
|
||||
tags.DstValidator, msg.ValidatorAddress.String(),
|
||||
tags.Delegator, msg.DelegatorAddress.String(),
|
||||
)
|
||||
|
||||
return sdk.Result{
|
||||
Tags: tags,
|
||||
Tags: resTags,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -216,6 +218,7 @@ func handleMsgDelegate(ctx sdk.Context, msg types.MsgDelegate, k keeper.Keeper)
|
||||
}
|
||||
|
||||
resTags := sdk.NewTags(
|
||||
tags.Category, tags.TxCategory,
|
||||
tags.Delegator, msg.DelegatorAddress.String(),
|
||||
tags.DstValidator, msg.ValidatorAddress.String(),
|
||||
)
|
||||
@@ -240,6 +243,7 @@ func handleMsgUndelegate(ctx sdk.Context, msg types.MsgUndelegate, k keeper.Keep
|
||||
|
||||
finishTime := types.MsgCdc.MustMarshalBinaryLengthPrefixed(completionTime)
|
||||
resTags := sdk.NewTags(
|
||||
tags.Category, tags.TxCategory,
|
||||
tags.Delegator, msg.DelegatorAddress.String(),
|
||||
tags.SrcValidator, msg.ValidatorAddress.String(),
|
||||
tags.EndTime, completionTime.Format(time.RFC3339),
|
||||
@@ -265,6 +269,7 @@ func handleMsgBeginRedelegate(ctx sdk.Context, msg types.MsgBeginRedelegate, k k
|
||||
|
||||
finishTime := types.MsgCdc.MustMarshalBinaryLengthPrefixed(completionTime)
|
||||
resTags := sdk.NewTags(
|
||||
tags.Category, tags.TxCategory,
|
||||
tags.Delegator, msg.DelegatorAddress.String(),
|
||||
tags.SrcValidator, msg.ValidatorSrcAddress.String(),
|
||||
tags.DstValidator, msg.ValidatorDstAddress.String(),
|
||||
|
||||
@@ -131,7 +131,7 @@ func CreateTestInput(t *testing.T, isCheckTx bool, initPower int64) (sdk.Context
|
||||
pool := keeper.GetPool(ctx)
|
||||
err := error(nil)
|
||||
if !initCoins.IsZero() {
|
||||
_, _, err = ck.AddCoins(ctx, addr, sdk.Coins{
|
||||
_, err = ck.AddCoins(ctx, addr, sdk.Coins{
|
||||
{keeper.BondDenom(ctx), initCoins},
|
||||
})
|
||||
}
|
||||
|
||||
@@ -8,8 +8,10 @@ import (
|
||||
var (
|
||||
ActionCompleteUnbonding = "complete-unbonding"
|
||||
ActionCompleteRedelegation = "complete-redelegation"
|
||||
TxCategory = "staking"
|
||||
|
||||
Action = sdk.TagAction
|
||||
Category = sdk.TagCategory
|
||||
SrcValidator = sdk.TagSrcValidator
|
||||
DstValidator = sdk.TagDstValidator
|
||||
Delegator = sdk.TagDelegator
|
||||
|
||||
Reference in New Issue
Block a user