Store contract response in event (#535)

* Store contract response in event

* Review feedback
This commit is contained in:
Alexander Peters
2021-06-14 08:57:04 +02:00
committed by GitHub
parent f8e39bf5cd
commit 1ada14ed52
4 changed files with 26 additions and 8 deletions

View File

@@ -2,6 +2,7 @@ package keeper
import (
"context"
"encoding/hex"
"fmt"
"github.com/CosmWasm/wasmd/x/wasm/types"
sdk "github.com/cosmos/cosmos-sdk/types"
@@ -66,6 +67,7 @@ func (m msgServer) InstantiateContract(goCtx context.Context, msg *types.MsgInst
sdk.NewAttribute(types.AttributeKeySigner, msg.Sender),
sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", msg.CodeID)),
sdk.NewAttribute(types.AttributeKeyContract, contractAddr.String()),
sdk.NewAttribute(types.AttributeResultDataHex, hex.EncodeToString(data)),
))
return &types.MsgInstantiateContractResponse{
@@ -95,6 +97,7 @@ func (m msgServer) ExecuteContract(goCtx context.Context, msg *types.MsgExecuteC
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
sdk.NewAttribute(types.AttributeKeySigner, msg.Sender),
sdk.NewAttribute(types.AttributeKeyContract, msg.Contract),
sdk.NewAttribute(types.AttributeResultDataHex, hex.EncodeToString(data)),
))
return &types.MsgExecuteContractResponse{
@@ -122,7 +125,9 @@ func (m msgServer) MigrateContract(goCtx context.Context, msg *types.MsgMigrateC
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
sdk.NewAttribute(types.AttributeKeySigner, msg.Sender),
sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", msg.CodeID)),
sdk.NewAttribute(types.AttributeKeyContract, msg.Contract),
sdk.NewAttribute(types.AttributeResultDataHex, hex.EncodeToString(data)),
))
return &types.MsgMigrateContractResponse{

View File

@@ -1,6 +1,7 @@
package keeper
import (
"encoding/hex"
"fmt"
"github.com/CosmWasm/wasmd/x/wasm/types"
sdk "github.com/cosmos/cosmos-sdk/types"
@@ -84,7 +85,7 @@ func handleInstantiateProposal(ctx sdk.Context, k types.ContractOpsKeeper, p typ
return sdkerrors.Wrap(err, "admin")
}
contractAddr, _, err := k.Instantiate(ctx, p.CodeID, runAsAddr, adminAddr, p.InitMsg, p.Label, p.Funds)
contractAddr, data, err := k.Instantiate(ctx, p.CodeID, runAsAddr, adminAddr, p.InitMsg, p.Label, p.Funds)
if err != nil {
return err
}
@@ -94,6 +95,7 @@ func handleInstantiateProposal(ctx sdk.Context, k types.ContractOpsKeeper, p typ
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", p.CodeID)),
sdk.NewAttribute(types.AttributeKeyContract, contractAddr.String()),
sdk.NewAttribute(types.AttributeResultDataHex, hex.EncodeToString(data)),
)
ctx.EventManager().EmitEvent(ourEvent)
return nil
@@ -112,7 +114,7 @@ func handleMigrateProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.M
if err != nil {
return sdkerrors.Wrap(err, "run as address")
}
_, err = k.Migrate(ctx, contractAddr, runAsAddr, p.CodeID, p.MigrateMsg)
data, err := k.Migrate(ctx, contractAddr, runAsAddr, p.CodeID, p.MigrateMsg)
if err != nil {
return err
}
@@ -120,7 +122,9 @@ func handleMigrateProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.M
ourEvent := sdk.NewEvent(
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", p.CodeID)),
sdk.NewAttribute(types.AttributeKeyContract, p.Contract),
sdk.NewAttribute(types.AttributeResultDataHex, hex.EncodeToString(data)),
)
ctx.EventManager().EmitEvent(ourEvent)
return nil

View File

@@ -86,6 +86,7 @@ func TestInstantiateProposal(t *testing.T) {
p.Admin = otherAddress.String()
p.Label = "testing"
})
em := sdk.NewEventManager()
// when stored
storedProposal, err := govKeeper.SubmitProposal(ctx, src)
@@ -93,7 +94,7 @@ func TestInstantiateProposal(t *testing.T) {
// and proposal execute
handler := govKeeper.Router().GetRoute(storedProposal.ProposalRoute())
err = handler(ctx, storedProposal.GetContent())
err = handler(ctx.WithEventManager(em), storedProposal.GetContent())
require.NoError(t, err)
// then
@@ -113,6 +114,9 @@ func TestInstantiateProposal(t *testing.T) {
Msg: src.InitMsg,
}}
assert.Equal(t, expHistory, wasmKeeper.GetContractHistory(ctx, contractAddr))
// and event
require.Len(t, em.Events(), 2, "%#v", em.Events())
require.Len(t, em.Events()[1].Attributes, 4)
}
func TestMigrateProposal(t *testing.T) {
@@ -161,13 +165,15 @@ func TestMigrateProposal(t *testing.T) {
RunAs: otherAddress.String(),
}
em := sdk.NewEventManager()
// when stored
storedProposal, err := govKeeper.SubmitProposal(ctx, &src)
require.NoError(t, err)
// and proposal execute
handler := govKeeper.Router().GetRoute(storedProposal.ProposalRoute())
err = handler(ctx, storedProposal.GetContent())
err = handler(ctx.WithEventManager(em), storedProposal.GetContent())
require.NoError(t, err)
// then
@@ -188,7 +194,9 @@ func TestMigrateProposal(t *testing.T) {
Msg: src.MigrateMsg,
}}
assert.Equal(t, expHistory, wasmKeeper.GetContractHistory(ctx, contractAddr))
// and events emitted
require.Len(t, em.Events(), 2)
require.Len(t, em.Events()[1].Attributes, 4)
}
func TestAdminProposals(t *testing.T) {

View File

@@ -5,7 +5,8 @@ const (
EventTypeUnpinCode = "unpin_code"
)
const ( // event attributes
AttributeKeyContract = "contract_address"
AttributeKeyCodeID = "code_id"
AttributeKeySigner = "signer"
AttributeKeyContract = "contract_address"
AttributeKeyCodeID = "code_id"
AttributeKeySigner = "signer"
AttributeResultDataHex = "result"
)