Skip to content

Commit

Permalink
refactor(wasm): specify wasm event types (#254)
Browse files Browse the repository at this point in the history
* refactor: specify wasm event types

* refactor: separate to common events and custom wasm events

- Change wasm(AttributesKeySigner) to common(AttributesKeySender)
- Remove duplicated the AttributeKeyContract in EventTypeUpdateContractStatus and EventTypeMessage

* chore: lint fix

* refactor: add the event attribute 'CodeID' when migrate

* refactor: remove duplicated common events in StoreAndInstantiate

It will be merged one event when calling StringEvents.Flatten()

* refactor: remove emit common events in proposal handler

no need common event, because it is not executed by msg.
  • Loading branch information
brew0722 authored Jun 29, 2021
1 parent 14faa32 commit 3178493
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 38 deletions.
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,
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

0 comments on commit 3178493

Please sign in to comment.