Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor(wasm): specify wasm event types #254

Merged
merged 6 commits into from
Jun 29, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 31 additions & 12 deletions x/wasm/internal/keeper/msg_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,10 @@ func (m msgServer) StoreCode(goCtx context.Context, msg *types.MsgStoreCode) (*t
ctx.EventManager().EmitEvent(sdk.NewEvent(
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
sdk.NewAttribute(types.AttributeKeySigner, msg.Sender),
sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender),
))
ctx.EventManager().EmitEvent(sdk.NewEvent(
types.EventTypeStoreCode,
sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", codeID)),
))

Expand Down Expand Up @@ -64,7 +67,10 @@ func (m msgServer) InstantiateContract(goCtx context.Context, msg *types.MsgInst
ctx.EventManager().EmitEvent(sdk.NewEvent(
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
sdk.NewAttribute(types.AttributeKeySigner, msg.Sender),
sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender),
))
ctx.EventManager().EmitEvent(sdk.NewEvent(
types.EventTypeInstantiateContract,
sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", msg.CodeID)),
sdk.NewAttribute(types.AttributeKeyContract, contractAddr.String()),
))
Expand All @@ -89,7 +95,10 @@ func (m msgServer) StoreCodeAndInstantiateContract(goCtx context.Context, msg *t
ctx.EventManager().EmitEvent(sdk.NewEvent(
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
sdk.NewAttribute(types.AttributeKeySigner, msg.Sender),
sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender),
))
ctx.EventManager().EmitEvent(sdk.NewEvent(
types.EventTypeStoreCode,
sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", codeID)),
))

Expand All @@ -106,9 +115,7 @@ func (m msgServer) StoreCodeAndInstantiateContract(goCtx context.Context, msg *t
}

ctx.EventManager().EmitEvent(sdk.NewEvent(
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
sdk.NewAttribute(types.AttributeKeySigner, msg.Sender),
types.EventTypeInstantiateContract,
sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", codeID)),
sdk.NewAttribute(types.AttributeKeyContract, contractAddr.String()),
))
Expand Down Expand Up @@ -139,7 +146,10 @@ func (m msgServer) ExecuteContract(goCtx context.Context, msg *types.MsgExecuteC
ctx.EventManager().EmitEvent(sdk.NewEvent(
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
sdk.NewAttribute(types.AttributeKeySigner, msg.Sender),
sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender),
))
ctx.EventManager().EmitEvent(sdk.NewEvent(
types.EventTypeExecuteContract,
sdk.NewAttribute(types.AttributeKeyContract, msg.Contract),
))

Expand Down Expand Up @@ -168,8 +178,12 @@ func (m msgServer) MigrateContract(goCtx context.Context, msg *types.MsgMigrateC
ctx.EventManager().EmitEvent(sdk.NewEvent(
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
sdk.NewAttribute(types.AttributeKeySigner, msg.Sender),
sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender),
))
ctx.EventManager().EmitEvent(sdk.NewEvent(
types.EventTypeMigrateContract,
brew0722 marked this conversation as resolved.
Show resolved Hide resolved
sdk.NewAttribute(types.AttributeKeyContract, msg.Contract),
sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", msg.CodeID)),
))

return &types.MsgMigrateContractResponse{
Expand Down Expand Up @@ -199,7 +213,10 @@ func (m msgServer) UpdateAdmin(goCtx context.Context, msg *types.MsgUpdateAdmin)
ctx.EventManager().EmitEvent(sdk.NewEvent(
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
sdk.NewAttribute(types.AttributeKeySigner, msg.Sender),
sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender),
))
ctx.EventManager().EmitEvent(sdk.NewEvent(
types.EventTypeUpdateAdmin,
sdk.NewAttribute(types.AttributeKeyContract, msg.Contract),
))

Expand All @@ -224,7 +241,10 @@ func (m msgServer) ClearAdmin(goCtx context.Context, msg *types.MsgClearAdmin) (
ctx.EventManager().EmitEvent(sdk.NewEvent(
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
sdk.NewAttribute(types.AttributeKeySigner, msg.Sender),
sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender),
))
ctx.EventManager().EmitEvent(sdk.NewEvent(
types.EventTypeClearAdmin,
sdk.NewAttribute(types.AttributeKeyContract, msg.Contract),
))

Expand Down Expand Up @@ -252,8 +272,7 @@ func (m msgServer) UpdateContractStatus(goCtx context.Context, msg *types.MsgUpd
sdk.NewEvent(
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
sdk.NewAttribute(types.AttributeKeySigner, msg.Sender),
sdk.NewAttribute(types.AttributeKeyContract, msg.Contract),
sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender),
),
sdk.NewEvent(
types.EventTypeUpdateContractStatus,
Expand Down
22 changes: 9 additions & 13 deletions x/wasm/internal/keeper/proposal_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,7 @@ func handleStoreCodeProposal(ctx sdk.Context, k governing, p types.StoreCodeProp
}

ourEvent := sdk.NewEvent(
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
types.EventTypeStoreCode,
sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", codeID)),
)
ctx.EventManager().EmitEvent(ourEvent)
Expand All @@ -100,8 +99,7 @@ func handleInstantiateProposal(ctx sdk.Context, k governing, p types.Instantiate
}

ourEvent := sdk.NewEvent(
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
types.EventTypeInstantiateContract,
sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", p.CodeID)),
sdk.NewAttribute(types.AttributeKeyContract, contractAddr.String()),
)
Expand All @@ -126,11 +124,10 @@ func handleMigrateProposal(ctx sdk.Context, k governing, p types.MigrateContract
if err != nil {
return err
}

ourEvent := sdk.NewEvent(
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
types.EventTypeMigrateContract,
sdk.NewAttribute(types.AttributeKeyContract, p.Contract),
sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", p.CodeID)),
)
ctx.EventManager().EmitEvent(ourEvent)

Expand Down Expand Up @@ -162,8 +159,7 @@ func handleUpdateAdminProposal(ctx sdk.Context, k governing, p types.UpdateAdmin
}

ourEvent := sdk.NewEvent(
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
types.EventTypeUpdateAdmin,
sdk.NewAttribute(types.AttributeKeyContract, p.Contract),
)
ctx.EventManager().EmitEvent(ourEvent)
Expand All @@ -182,9 +178,9 @@ func handleClearAdminProposal(ctx sdk.Context, k governing, p types.ClearAdminPr
if err := k.setContractAdmin(ctx, contractAddr, nil, nil, GovAuthorizationPolicy{}); err != nil {
return err
}

ourEvent := sdk.NewEvent(
sdk.EventTypeMessage,
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
types.EventTypeClearAdmin,
sdk.NewAttribute(types.AttributeKeyContract, p.Contract),
)
ctx.EventManager().EmitEvent(ourEvent)
Expand All @@ -204,9 +200,9 @@ func handlePinCodesProposal(ctx sdk.Context, k governing, p types.PinCodesPropos
for i, v := range p.CodeIDs {
s[i] = strconv.FormatUint(v, 10)
}

ourEvent := sdk.NewEvent(
types.EventTypePinCode,
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
sdk.NewAttribute(types.AttributeKeyCodeIDs, strings.Join(s, ",")),
)
ctx.EventManager().EmitEvent(ourEvent)
Expand All @@ -227,9 +223,9 @@ func handleUnpinCodesProposal(ctx sdk.Context, k governing, p types.UnpinCodesPr
for i, v := range p.CodeIDs {
s[i] = strconv.FormatUint(v, 10)
}

ourEvent := sdk.NewEvent(
types.EventTypeUnpinCode,
sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName),
sdk.NewAttribute(types.AttributeKeyCodeIDs, strings.Join(s, ",")),
)
ctx.EventManager().EmitEvent(ourEvent)
Expand Down
7 changes: 6 additions & 1 deletion x/wasm/internal/types/events.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
package types

const (
EventTypeStoreCode = "store_code"
EventTypeInstantiateContract = "instantiate_contract"
EventTypeExecuteContract = "execute_contract"
EventTypeMigrateContract = "migrate_contract"
EventTypeUpdateAdmin = "update_admin"
EventTypeClearAdmin = "clear_admin"
EventTypePinCode = "pin_code"
EventTypeUnpinCode = "unpin_code"
EventTypeUpdateContractStatus = "update_contract_status"
Expand All @@ -9,6 +15,5 @@ const ( // event attributes
AttributeKeyContract = "contract_address"
AttributeKeyCodeID = "code_id"
AttributeKeyCodeIDs = "code_ids"
AttributeKeySigner = "signer"
AttributeKeyContractStatus = "contract_status"
)
28 changes: 16 additions & 12 deletions x/wasm/module_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -182,11 +182,12 @@ func TestHandleInstantiate(t *testing.T) {

require.Equal(t, "link18vd8fpwxzck93qlwghaj6arh4p7c5n89fvcmzu", contractBech32Addr)
// this should be standard x/wasm init event, nothing from contract
require.Equal(t, 2, len(res.Events), prettyEvents(res.Events))
require.Equal(t, 3, len(res.Events), prettyEvents(res.Events))
assert.Equal(t, "wasm", res.Events[0].Type)
assertAttribute(t, "contract_address", contractBech32Addr, res.Events[0].Attributes[0])
assert.Equal(t, "message", res.Events[1].Type)
assertAttribute(t, "module", "wasm", res.Events[1].Attributes[0])
assert.Equal(t, "message", res.Events[1].Type)
assert.Equal(t, "instantiate_contract", res.Events[2].Type)

assertCodeList(t, q, data.ctx, 1)
assertCodeBytes(t, q, data.ctx, 1, testContract)
Expand Down Expand Up @@ -234,16 +235,16 @@ func TestHandleStoreAndInstantiate(t *testing.T) {
require.Equal(t, uint64(1), codeID)
require.Equal(t, "link18vd8fpwxzck93qlwghaj6arh4p7c5n89fvcmzu", contractBech32Addr)
// this should be standard x/wasm init event, nothing from contract
require.Equal(t, 3, len(res.Events), prettyEvents(res.Events))
require.Equal(t, 4, len(res.Events), prettyEvents(res.Events))
assert.Equal(t, "message", res.Events[0].Type)
assertAttribute(t, "module", "wasm", res.Events[0].Attributes[0])
assertAttribute(t, "code_id", "1", res.Events[0].Attributes[2])
assert.Equal(t, "wasm", res.Events[1].Type)
assertAttribute(t, "contract_address", contractBech32Addr, res.Events[1].Attributes[0])
assert.Equal(t, "message", res.Events[2].Type)
assertAttribute(t, "module", "wasm", res.Events[2].Attributes[0])
assertAttribute(t, "code_id", "1", res.Events[2].Attributes[2])
assertAttribute(t, "contract_address", contractBech32Addr, res.Events[2].Attributes[3])
assert.Equal(t, "store_code", res.Events[1].Type)
assertAttribute(t, "code_id", "1", res.Events[1].Attributes[0])
assert.Equal(t, "wasm", res.Events[2].Type)
assertAttribute(t, "contract_address", contractBech32Addr, res.Events[2].Attributes[0])
assert.Equal(t, "instantiate_contract", res.Events[3].Type)
assertAttribute(t, "code_id", "1", res.Events[3].Attributes[0])
assertAttribute(t, "contract_address", contractBech32Addr, res.Events[3].Attributes[1])

assertCodeList(t, q, data.ctx, 1)
assertCodeBytes(t, q, data.ctx, 1, testContract)
Expand Down Expand Up @@ -414,12 +415,13 @@ func TestHandleExecute(t *testing.T) {

require.Equal(t, "link18vd8fpwxzck93qlwghaj6arh4p7c5n89fvcmzu", contractBech32Addr)
// this should be standard x/wasm init event, plus a bank send event (2), with no custom contract events
require.Equal(t, 3, len(res.Events), prettyEvents(res.Events))
require.Equal(t, 4, len(res.Events), prettyEvents(res.Events))
assert.Equal(t, "transfer", res.Events[0].Type)
assert.Equal(t, "wasm", res.Events[1].Type)
assertAttribute(t, "contract_address", contractBech32Addr, res.Events[1].Attributes[0])
assert.Equal(t, "message", res.Events[2].Type)
assertAttribute(t, "module", "wasm", res.Events[2].Attributes[0])
assert.Equal(t, "instantiate_contract", res.Events[3].Type)

// ensure bob doesn't exist
bobAcct := data.acctKeeper.GetAccount(data.ctx, bob)
Expand Down Expand Up @@ -449,7 +451,7 @@ func TestHandleExecute(t *testing.T) {
assertExecuteResponse(t, res.Data, []byte{0xf0, 0x0b, 0xaa})

// this should be standard x/wasm init event, plus 2 bank send event, plus a special event from the contract
require.Equal(t, 4, len(res.Events), prettyEvents(res.Events))
require.Equal(t, 5, len(res.Events), prettyEvents(res.Events))

require.Equal(t, "transfer", res.Events[0].Type)
require.Len(t, res.Events[0].Attributes, 3)
Expand All @@ -468,6 +470,8 @@ func TestHandleExecute(t *testing.T) {
// finally, standard x/wasm tag
assert.Equal(t, "message", res.Events[3].Type)
assertAttribute(t, "module", "wasm", res.Events[3].Attributes[0])
assert.Equal(t, "execute_contract", res.Events[4].Type)
assertAttribute(t, "contract_address", contractBech32Addr, res.Events[4].Attributes[0])

// ensure bob now exists and got both payments released
bobAcct = data.acctKeeper.GetAccount(data.ctx, bob)
Expand Down