diff --git a/CHANGELOG.md b/CHANGELOG.md index ffa3c6279d..87a845c1ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### Features ### Improvements +* [\#81](https://github.com/Finschia/wasmd/pull/81) Apply Finschia/finschia-sdk#1063 ### Bug Fixes * [\#52](https://github.com/Finschia/wasmd/pull/52) fix cli_test error of wasmplus and add cli_test ci diff --git a/go.mod b/go.mod index 4bada80fa6..31a43e428d 100644 --- a/go.mod +++ b/go.mod @@ -3,9 +3,9 @@ module github.com/Finschia/wasmd go 1.18 require ( - github.com/Finschia/finschia-sdk v0.47.0-rc6 + github.com/Finschia/finschia-sdk v0.47.3-0.20230810063358-e669c6fe02c2 github.com/Finschia/ibc-go/v3 v3.3.3 - github.com/Finschia/ostracon v1.0.10-0.20230417090415-bc3f5693b6a1 + github.com/Finschia/ostracon v1.1.0 github.com/Finschia/wasmvm v1.1.1-0.11.2.0.20230418093236-ce70a3856778 github.com/cosmos/iavl v0.19.4 github.com/dvsekhvalnov/jose2go v1.5.0 diff --git a/go.sum b/go.sum index 8b09e11f75..f486ffd5fb 100644 --- a/go.sum +++ b/go.sum @@ -47,12 +47,12 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/Finschia/finschia-sdk v0.47.0-rc6 h1:e9DOhCsaLLD3D0+d4GhqN/oGl9tLB5ncfiddFd8Ad0Y= -github.com/Finschia/finschia-sdk v0.47.0-rc6/go.mod h1:T1eSChkSMsvtvUVwRP+RNO00nbx2ZQKzAxjtpLRQopQ= +github.com/Finschia/finschia-sdk v0.47.3-0.20230810063358-e669c6fe02c2 h1:xj1aoxPYODKR32sm7nbSworGu3nNCxkLNvDbGBeloys= +github.com/Finschia/finschia-sdk v0.47.3-0.20230810063358-e669c6fe02c2/go.mod h1:aPRyqqg+PROtpd8H4ANuiIqEEw/QgajmAUqaoIUwvT4= github.com/Finschia/ibc-go/v3 v3.3.3 h1:geNUwG7xU0vve1Rv8qATpAk59BL5thLuUcLvJ7xnkiM= github.com/Finschia/ibc-go/v3 v3.3.3/go.mod h1:YC5hldLSJQDoii3W2E9J07BVdTF7fesUQcATo5zQ248= -github.com/Finschia/ostracon v1.0.10-0.20230417090415-bc3f5693b6a1 h1:sY8xWugQvQmp4p+rvfB+SKwWZLRqptVaEE7S8O+qJwk= -github.com/Finschia/ostracon v1.0.10-0.20230417090415-bc3f5693b6a1/go.mod h1:nPRoQEOOp8FFp2XQ8b1dvfHgKNxp1Zb7i1p5yrLIgG4= +github.com/Finschia/ostracon v1.1.0 h1:ruiqngsoCz1kJ3fGLJHflcvxbJrbg7QGDTruqxgLZKc= +github.com/Finschia/ostracon v1.1.0/go.mod h1:nPRoQEOOp8FFp2XQ8b1dvfHgKNxp1Zb7i1p5yrLIgG4= github.com/Finschia/wasmvm v1.1.1-0.11.2.0.20230418093236-ce70a3856778 h1:V+iocQkc3zvpgdn+nCLZ9kPM7D7u6v2Br+EkOIhvjbY= github.com/Finschia/wasmvm v1.1.1-0.11.2.0.20230418093236-ce70a3856778/go.mod h1:uCHU7ZRQ/V+WPRXr6Ak9Uu2oe2MVeO8yGZnGKU1B3NY= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= diff --git a/x/wasm/keeper/msg_server.go b/x/wasm/keeper/msg_server.go index fe410c79d2..5c5f47e19e 100644 --- a/x/wasm/keeper/msg_server.go +++ b/x/wasm/keeper/msg_server.go @@ -29,12 +29,6 @@ func (m msgServer) StoreCode(goCtx context.Context, msg *types.MsgStoreCode) (*t return nil, sdkerrors.Wrap(err, "sender") } - ctx.EventManager().EmitEvent(sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), - sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), - )) - codeID, checksum, err := m.keeper.Create(ctx, senderAddr, msg.WASMByteCode, msg.InstantiatePermission) if err != nil { return nil, err @@ -64,12 +58,6 @@ 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(sdk.AttributeKeySender, msg.Sender), - )) - contractAddr, data, err := m.keeper.Instantiate(ctx, msg.CodeID, senderAddr, adminAddr, msg.Msg, msg.Label, msg.Funds) if err != nil { return nil, err @@ -99,11 +87,6 @@ func (m msgServer) InstantiateContract2(goCtx context.Context, msg *types.MsgIns } } - ctx.EventManager().EmitEvent(sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), - sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), - )) contractAddr, data, err := m.keeper.Instantiate2(ctx, msg.CodeID, senderAddr, adminAddr, msg.Msg, msg.Label, msg.Funds, msg.Salt, msg.FixMsg) if err != nil { return nil, err @@ -130,12 +113,6 @@ func (m msgServer) ExecuteContract(goCtx context.Context, msg *types.MsgExecuteC return nil, sdkerrors.Wrap(err, "contract") } - ctx.EventManager().EmitEvent(sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), - sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), - )) - data, err := m.keeper.Execute(ctx, contractAddr, senderAddr, msg.Msg, msg.Funds) if err != nil { return nil, err @@ -161,12 +138,6 @@ func (m msgServer) MigrateContract(goCtx context.Context, msg *types.MsgMigrateC return nil, sdkerrors.Wrap(err, "contract") } - ctx.EventManager().EmitEvent(sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), - sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), - )) - data, err := m.keeper.Migrate(ctx, contractAddr, senderAddr, msg.CodeID, msg.Msg) if err != nil { return nil, err @@ -196,12 +167,6 @@ func (m msgServer) UpdateAdmin(goCtx context.Context, msg *types.MsgUpdateAdmin) return nil, sdkerrors.Wrap(err, "new admin") } - ctx.EventManager().EmitEvent(sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), - sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), - )) - if err := m.keeper.UpdateContractAdmin(ctx, contractAddr, senderAddr, newAdminAddr); err != nil { return nil, err } @@ -224,12 +189,6 @@ func (m msgServer) ClearAdmin(goCtx context.Context, msg *types.MsgClearAdmin) ( return nil, sdkerrors.Wrap(err, "contract") } - ctx.EventManager().EmitEvent(sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), - sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), - )) - if err := m.keeper.ClearContractAdmin(ctx, contractAddr, senderAddr); err != nil { return nil, err } diff --git a/x/wasm/module_test.go b/x/wasm/module_test.go index 72b2cc6bf0..9d5087c507 100644 --- a/x/wasm/module_test.go +++ b/x/wasm/module_test.go @@ -189,12 +189,10 @@ func TestHandleInstantiate(t *testing.T) { require.Equal(t, "link14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9sgf2vn8", 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, "message", res.Events[0].Type) - assertAttribute(t, "module", "wasm", res.Events[0].Attributes[0]) - require.Equal(t, "instantiate", res.Events[1].Type) - require.Equal(t, "wasm", res.Events[2].Type) - assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[2].Attributes[0]) + require.Equal(t, 2, len(res.Events), prettyEvents(res.Events)) + require.Equal(t, "instantiate", res.Events[0].Type) + require.Equal(t, "wasm", res.Events[1].Type) + assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[1].Attributes[0]) assertCodeList(t, q, data.ctx, 1) assertCodeBytes(t, q, data.ctx, 1, testContract) @@ -249,15 +247,13 @@ func TestHandleExecute(t *testing.T) { require.Equal(t, "link14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9sgf2vn8", contractBech32Addr) // this should be standard x/wasm message event, init event, plus a bank send event (2), with no custom contract events - require.Equal(t, 6, len(res.Events), prettyEvents(res.Events)) - require.Equal(t, "message", res.Events[0].Type) - assertAttribute(t, "module", "wasm", res.Events[0].Attributes[0]) - require.Equal(t, "coin_spent", res.Events[1].Type) - require.Equal(t, "coin_received", res.Events[2].Type) - require.Equal(t, "transfer", res.Events[3].Type) - require.Equal(t, "instantiate", res.Events[4].Type) - require.Equal(t, "wasm", res.Events[5].Type) - assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[5].Attributes[0]) + require.Equal(t, 5, len(res.Events), prettyEvents(res.Events)) + require.Equal(t, "coin_spent", res.Events[0].Type) + require.Equal(t, "coin_received", res.Events[1].Type) + require.Equal(t, "transfer", res.Events[2].Type) + require.Equal(t, "instantiate", res.Events[3].Type) + require.Equal(t, "wasm", res.Events[4].Type) + assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[4].Attributes[0]) // ensure bob doesn't exist bobAcct := data.acctKeeper.GetAccount(data.ctx, bob) @@ -287,43 +283,36 @@ func TestHandleExecute(t *testing.T) { assertExecuteResponse(t, res.Data, []byte{0xf0, 0x0b, 0xaa}) // this should be standard message event, plus x/wasm init event, plus 2 bank send event, plus a special event from the contract - require.Equal(t, 10, len(res.Events), prettyEvents(res.Events)) + require.Equal(t, 9, len(res.Events), prettyEvents(res.Events)) - assert.Equal(t, "message", res.Events[0].Type) - assertAttribute(t, "module", "wasm", res.Events[0].Attributes[0]) - assert.Equal(t, "coin_spent", res.Events[1].Type) - assert.Equal(t, "coin_received", res.Events[2].Type) + assert.Equal(t, "coin_spent", res.Events[0].Type) + assert.Equal(t, "coin_received", res.Events[1].Type) - assert.Equal(t, "coin_spent", res.Events[1].Type) - assertAttribute(t, "spender", fred.String(), res.Events[1].Attributes[0]) - assert.Equal(t, "coin_received", res.Events[2].Type) - assertAttribute(t, "receiver", contractBech32Addr, res.Events[2].Attributes[0]) - require.Equal(t, "transfer", res.Events[3].Type) - require.Len(t, res.Events[3].Attributes, 3) - assertAttribute(t, "recipient", contractBech32Addr, res.Events[3].Attributes[0]) - assertAttribute(t, "sender", fred.String(), res.Events[3].Attributes[1]) - assertAttribute(t, "amount", "5000denom", res.Events[3].Attributes[2]) + require.Equal(t, "transfer", res.Events[2].Type) + require.Len(t, res.Events[2].Attributes, 3) + assertAttribute(t, "recipient", contractBech32Addr, res.Events[2].Attributes[0]) + assertAttribute(t, "sender", fred.String(), res.Events[2].Attributes[1]) + assertAttribute(t, "amount", "5000denom", res.Events[2].Attributes[2]) - assert.Equal(t, "execute", res.Events[4].Type) + assert.Equal(t, "execute", res.Events[3].Type) // custom contract event attribute - assert.Equal(t, "wasm", res.Events[5].Type) + assert.Equal(t, "wasm", res.Events[4].Type) + assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[4].Attributes[0]) + assertAttribute(t, "action", "release", res.Events[4].Attributes[1]) + // custom contract event + assert.Equal(t, "wasm-hackatom", res.Events[5].Type) assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[5].Attributes[0]) assertAttribute(t, "action", "release", res.Events[5].Attributes[1]) - // custom contract event - assert.Equal(t, "wasm-hackatom", res.Events[6].Type) - assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[6].Attributes[0]) - assertAttribute(t, "action", "release", res.Events[6].Attributes[1]) // second transfer (this without conflicting message) - assert.Equal(t, "coin_spent", res.Events[7].Type) - assertAttribute(t, "spender", contractBech32Addr, res.Events[7].Attributes[0]) - assert.Equal(t, "coin_received", res.Events[8].Type) - assertAttribute(t, "receiver", bob.String(), res.Events[8].Attributes[0]) - assert.Equal(t, "transfer", res.Events[9].Type) - assertAttribute(t, "recipient", bob.String(), res.Events[9].Attributes[0]) - assertAttribute(t, "sender", contractBech32Addr, res.Events[9].Attributes[1]) - assertAttribute(t, "amount", "105000denom", res.Events[9].Attributes[2]) + assert.Equal(t, "coin_spent", res.Events[6].Type) + assert.Equal(t, "coin_received", res.Events[7].Type) + + assert.Equal(t, "transfer", res.Events[8].Type) + assertAttribute(t, "recipient", bob.String(), res.Events[8].Attributes[0]) + assertAttribute(t, "sender", contractBech32Addr, res.Events[8].Attributes[1]) + assertAttribute(t, "amount", "105000denom", res.Events[8].Attributes[2]) // finally, standard x/wasm tag // ensure bob now exists and got both payments released diff --git a/x/wasmplus/keeper/msg_server.go b/x/wasmplus/keeper/msg_server.go index 65feaa322e..9b2d2fd895 100644 --- a/x/wasmplus/keeper/msg_server.go +++ b/x/wasmplus/keeper/msg_server.go @@ -33,12 +33,6 @@ func (m msgServer) StoreCodeAndInstantiateContract(goCtx context.Context, return nil, err } - ctx.EventManager().EmitEvent(sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), - sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), - )) - var adminAddr sdk.AccAddress if msg.Admin != "" { adminAddr, err = sdk.AccAddressFromBech32(msg.Admin) diff --git a/x/wasmplus/module_test.go b/x/wasmplus/module_test.go index d48f3843c5..99656603b9 100644 --- a/x/wasmplus/module_test.go +++ b/x/wasmplus/module_test.go @@ -264,16 +264,14 @@ func TestHandleStoreAndInstantiate(t *testing.T) { require.Equal(t, uint64(1), codeID) require.Equal(t, "link14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9sgf2vn8", contractBech32Addr) // this should be standard x/wasm init event, nothing from contract - require.Equal(t, 4, len(res.Events), prettyEvents(res.Events)) + require.Equal(t, 3, len(res.Events), prettyEvents(res.Events)) assert.Equal(t, "store_code", res.Events[0].Type) assertAttribute(t, "code_id", "1", res.Events[0].Attributes[1]) - assert.Equal(t, "message", res.Events[1].Type) - assertAttribute(t, "module", "wasm", res.Events[1].Attributes[0]) - assert.Equal(t, "instantiate", res.Events[2].Type) + assert.Equal(t, "instantiate", res.Events[1].Type) + assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[1].Attributes[0]) + assertAttribute(t, "code_id", "1", res.Events[1].Attributes[1]) + assert.Equal(t, "wasm", res.Events[2].Type) assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[2].Attributes[0]) - assertAttribute(t, "code_id", "1", res.Events[2].Attributes[1]) - assert.Equal(t, "wasm", res.Events[3].Type) - assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[3].Attributes[0]) assertCodeList(t, q, data.ctx, 1) assertCodeBytes(t, q, data.ctx, 1, testContract) @@ -421,11 +419,9 @@ func TestHandleNonPlusWasmCreate(t *testing.T) { require.NoError(t, err) assertStoreCodeResponse(t, res.Data, 1) - require.Equal(t, 2, len(res.Events), prettyEvents(res.Events)) - assert.Equal(t, "message", res.Events[0].Type) - assertAttribute(t, "module", "wasm", res.Events[0].Attributes[0]) - assert.Equal(t, "store_code", res.Events[1].Type) - assertAttribute(t, "code_id", "1", res.Events[1].Attributes[1]) + require.Equal(t, 1, len(res.Events), prettyEvents(res.Events)) + assert.Equal(t, "store_code", res.Events[0].Type) + assertAttribute(t, "code_id", "1", res.Events[0].Attributes[1]) assertCodeList(t, q, data.ctx, 1) assertCodeBytes(t, q, data.ctx, 1, testContract)