add category tags (#4049)

Closes: #3774
This commit is contained in:
Federico Kunze
2019-04-09 13:55:01 +01:00
committed by Alessio Treglia
parent d742b9e6ef
commit 2cd2289a11
38 changed files with 243 additions and 170 deletions
@@ -0,0 +1 @@
#4049 update tag MsgWithdrawValidatorCommission to match type
@@ -0,0 +1 @@
#3774 add category tag to transactions for ease of filtering
+15 -4
View File
@@ -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 -5
View File
@@ -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} |
+17 -17
View File
@@ -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} |
+22 -19
View File
@@ -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} |
+5 -4
View File
@@ -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} |
+38 -31
View File
@@ -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
+1
View File
@@ -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
View File
@@ -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
View File
@@ -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
}
+5 -5
View File
@@ -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())
-10
View File
@@ -1,10 +0,0 @@
package bank
// Tag keys and values
var (
TagActionUndelegateCoins = []byte("undelegateCoins")
TagActionDelegateCoins = []byte("delegateCoins")
TagKeyRecipient = "recipient"
TagKeySender = "sender"
)
+17
View File
@@ -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"
)
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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,
}
}
+1 -1
View File
@@ -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
}
}
+1 -1
View File
@@ -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
}
+1 -1
View File
@@ -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)
}
}
+1 -1
View File
@@ -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
}
}
+1 -1
View File
@@ -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)
+3 -1
View File
@@ -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
)
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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 {
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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")
}
+2
View File
@@ -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"
+2 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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)
+1
View File
@@ -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(),
)
+7
View File
@@ -1,6 +1,13 @@
package tags
import (
sdk "github.com/cosmos/cosmos-sdk/types"
)
// Slashing tags
var (
TxCategory = "slashing"
Category = sdk.TagCategory
Validator = "validator"
)
+1 -1
View File
@@ -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},
})
}
+7 -2
View File
@@ -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(),
+1 -1
View File
@@ -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},
})
}
+2
View File
@@ -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