Skip to content

Commit

Permalink
update to v0.50
Browse files Browse the repository at this point in the history
  • Loading branch information
tubackkhoa committed Jan 15, 2024
2 parents 1a664e8 + a2719c0 commit 04faa13
Show file tree
Hide file tree
Showing 24 changed files with 386 additions and 856 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,6 @@ dependency-graph.png
*.out
*.synctex.gz
contract_tests/*

# blockchain state
.oraid
25 changes: 12 additions & 13 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,6 @@ import (
"github.com/cosmos/cosmos-sdk/std"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
"github.com/cosmos/cosmos-sdk/types/msgservice"
"github.com/cosmos/cosmos-sdk/version"
"github.com/cosmos/cosmos-sdk/x/auth"
"github.com/cosmos/cosmos-sdk/x/auth/ante"
Expand Down Expand Up @@ -896,18 +895,18 @@ func NewWasmApp(
// upgrade.
app.setPostHandler()

// At startup, after all modules have been registered, check that all proto
// annotations are correct.
protoFiles, err := proto.MergedRegistry()
if err != nil {
panic(err)
}
err = msgservice.ValidateProtoAnnotations(protoFiles)
if err != nil {
// Once we switch to using protoreflect-based antehandlers, we might
// want to panic here instead of logging a warning.
_, _ = fmt.Fprintln(os.Stderr, err.Error())
}
// // At startup, after all modules have been registered, check that all proto
// // annotations are correct.
// protoFiles, err := proto.MergedRegistry()
// if err != nil {
// panic(err)
// }
// err = msgservice.ValidateProtoAnnotations(protoFiles)
// if err != nil {
// // Once we switch to using protoreflect-based antehandlers, we might
// // want to panic here instead of logging a warning.
// _, _ = fmt.Fprintln(os.Stderr, err.Error())
// }

if loadLatest {
if err := app.LoadLatestVersion(); err != nil {
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/reflect_helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ func MustExecViaStargateReflectContract[T sdkMessageType](t *testing.T, chain *i
bz, err := chain.Codec.Marshal(m)
require.NoError(t, err)
vmMsgs[i] = wasmvmtypes.CosmosMsg{
Stargate: &wasmvmtypes.StargateMsg{
Any: &wasmvmtypes.AnyMsg{
TypeURL: sdk.MsgTypeURL(m),
Value: bz,
},
Expand Down
24 changes: 14 additions & 10 deletions x/wasm/ibc_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ func TestOnChanOpenInitVersion(t *testing.T) {
for name, spec := range specs {
t.Run(name, func(t *testing.T) {
myContract := &wasmtesting.MockIBCContractCallbacks{
IBCChannelOpenFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCChannelOpenMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBC3ChannelOpenResponse, uint64, error) {
return spec.contractRsp, 0, nil
IBCChannelOpenFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCChannelOpenMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCChannelOpenResult, uint64, error) {
return &wasmvmtypes.IBCChannelOpenResult{Ok: spec.contractRsp}, 0, nil
},
}
var (
Expand Down Expand Up @@ -110,8 +110,8 @@ func TestOnChanOpenTryVersion(t *testing.T) {
for name, spec := range specs {
t.Run(name, func(t *testing.T) {
myContract := &wasmtesting.MockIBCContractCallbacks{
IBCChannelOpenFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCChannelOpenMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBC3ChannelOpenResponse, uint64, error) {
return spec.contractRsp, 0, nil
IBCChannelOpenFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCChannelOpenMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCChannelOpenResult, uint64, error) {
return &wasmvmtypes.IBCChannelOpenResult{Ok: spec.contractRsp}, 0, nil
},
}
var (
Expand Down Expand Up @@ -249,11 +249,13 @@ type captureAckTestContractEngine struct {
// NewCaptureAckTestContractEngine constructor
func NewCaptureAckTestContractEngine() *captureAckTestContractEngine {
m := wasmtesting.NewIBCContractMockWasmEngine(&wasmtesting.MockIBCContractCallbacks{
IBCChannelOpenFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCChannelOpenMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBC3ChannelOpenResponse, uint64, error) {
return &wasmvmtypes.IBC3ChannelOpenResponse{}, 0, nil
IBCChannelOpenFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCChannelOpenMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCChannelOpenResult, uint64, error) {
return &wasmvmtypes.IBCChannelOpenResult{Ok: &wasmvmtypes.IBC3ChannelOpenResponse{}}, 0, nil
},
IBCChannelConnectFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCChannelConnectMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) {
return &wasmvmtypes.IBCBasicResponse{}, 0, nil
IBCChannelConnectFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCChannelConnectMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResult, uint64, error) {
return &wasmvmtypes.IBCBasicResult{
Ok: &wasmvmtypes.IBCBasicResponse{},
}, 0, nil
},
})
return &captureAckTestContractEngine{m}
Expand All @@ -274,9 +276,11 @@ func (x *captureAckTestContractEngine) SubmitIBCPacket(t *testing.T, path *wasmi
}
// capture acknowledgement
var gotAck []byte
x.MockWasmEngine.IBCPacketAckFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCPacketAckMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) {
x.MockWasmEngine.IBCPacketAckFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCPacketAckMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResult, uint64, error) {
gotAck = msg.Acknowledgement.Data
return &wasmvmtypes.IBCBasicResponse{}, 0, nil
return &wasmvmtypes.IBCBasicResult{
Ok: &wasmvmtypes.IBCBasicResponse{},
}, 0, nil
}

// start the process
Expand Down
39 changes: 27 additions & 12 deletions x/wasm/keeper/keeper.go
Original file line number Diff line number Diff line change
Expand Up @@ -319,10 +319,15 @@ func (k Keeper) instantiate(
gas := k.runtimeGasForContract(sdkCtx)
res, gasUsed, err := k.wasmVM.Instantiate(codeInfo.CodeHash, env, info, initMsg, vmStore, cosmwasmAPI, querier, k.gasMeter(sdkCtx), gas, costJSONDeserialization)
k.consumeRuntimeGas(sdkCtx, gasUsed)

if err != nil {
return nil, nil, errorsmod.Wrap(types.ErrInstantiateFailed, err.Error())
}

if len(res.Err) > 0 {
return nil, nil, errorsmod.Wrap(types.ErrInstantiateFailed, res.Err)
}

// persist instance first
createdAt := types.NewAbsoluteTxPosition(sdkCtx)
contractInfo := types.NewContractInfo(codeID, creator, admin, label, createdAt)
Expand Down Expand Up @@ -366,10 +371,6 @@ func (k Keeper) instantiate(

sdkCtx = types.WithSubMsgAuthzPolicy(sdkCtx, authPolicy.SubMessageAuthorizationPolicy(types.AuthZActionInstantiate))

if len(res.Err) > 0 {
return nil, nil, fmt.Errorf(res.Err)
}

data, err := k.handleContractResponse(sdkCtx, contractAddress, contractInfo.IBCPortID, res.Ok.Messages, res.Ok.Attributes, res.Ok.Data, res.Ok.Events)
if err != nil {
return nil, nil, errorsmod.Wrap(err, "dispatch")
Expand Down Expand Up @@ -405,19 +406,20 @@ func (k Keeper) execute(ctx context.Context, contractAddress, caller sdk.AccAddr
gas := k.runtimeGasForContract(sdkCtx)
res, gasUsed, execErr := k.wasmVM.Execute(codeInfo.CodeHash, env, info, msg, prefixStore, cosmwasmAPI, querier, k.gasMeter(sdkCtx), gas, costJSONDeserialization)
k.consumeRuntimeGas(sdkCtx, gasUsed)

if execErr != nil {
return nil, errorsmod.Wrap(types.ErrExecuteFailed, execErr.Error())
}

if len(res.Err) > 0 {
return nil, errorsmod.Wrap(types.ErrExecuteFailed, res.Err)
}

sdkCtx.EventManager().EmitEvent(sdk.NewEvent(
types.EventTypeExecute,
sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddress.String()),
))

if len(res.Err) > 0 {
return nil, fmt.Errorf(res.Err)
}

data, err := k.handleContractResponse(sdkCtx, contractAddress, contractInfo.IBCPortID, res.Ok.Messages, res.Ok.Attributes, res.Ok.Data, res.Ok.Events)
if err != nil {
return nil, errorsmod.Wrap(err, "dispatch")
Expand Down Expand Up @@ -486,6 +488,11 @@ func (k Keeper) migrate(
if err != nil {
return nil, errorsmod.Wrap(types.ErrMigrationFailed, err.Error())
}

if len(res.Err) > 0 {
return nil, errorsmod.Wrap(types.ErrMigrationFailed, res.Err)
}

// delete old secondary index entry
err = k.removeFromContractCodeSecondaryIndex(ctx, contractAddress, k.mustGetLastContractHistoryEntry(sdkCtx, contractAddress))
if err != nil {
Expand All @@ -510,7 +517,7 @@ func (k Keeper) migrate(
))

sdkCtx = types.WithSubMsgAuthzPolicy(sdkCtx, authZ.SubMessageAuthorizationPolicy(types.AuthZActionMigrateContract))
data, err := k.handleContractResponse(sdkCtx, contractAddress, contractInfo.IBCPortID, res.Messages, res.Attributes, res.Data, res.Events)
data, err := k.handleContractResponse(sdkCtx, contractAddress, contractInfo.IBCPortID, res.Ok.Messages, res.Ok.Attributes, res.Ok.Data, res.Ok.Events)
if err != nil {
return nil, errorsmod.Wrap(err, "dispatch")
}
Expand Down Expand Up @@ -549,13 +556,17 @@ func (k Keeper) Sudo(ctx context.Context, contractAddress sdk.AccAddress, msg []
return nil, errorsmod.Wrap(types.ErrExecuteFailed, execErr.Error())
}

if len(res.Err) > 0 {
return nil, errorsmod.Wrap(types.ErrExecuteFailed, res.Err)
}

sdkCtx.EventManager().EmitEvent(sdk.NewEvent(
types.EventTypeSudo,
sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddress.String()),
))

// sudo submessages are executed with the default authorization policy
data, err := k.handleContractResponse(sdkCtx, contractAddress, contractInfo.IBCPortID, res.Messages, res.Attributes, res.Data, res.Events)
data, err := k.handleContractResponse(sdkCtx, contractAddress, contractInfo.IBCPortID, res.Ok.Messages, res.Ok.Attributes, res.Ok.Data, res.Ok.Events)
if err != nil {
return nil, errorsmod.Wrap(err, "dispatch")
}
Expand Down Expand Up @@ -586,12 +597,16 @@ func (k Keeper) reply(ctx sdk.Context, contractAddress sdk.AccAddress, reply was
return nil, errorsmod.Wrap(types.ErrExecuteFailed, execErr.Error())
}

if len(res.Err) > 0 {
return nil, errorsmod.Wrap(types.ErrExecuteFailed, res.Err)
}

ctx.EventManager().EmitEvent(sdk.NewEvent(
types.EventTypeReply,
sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddress.String()),
))

data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res.Messages, res.Attributes, res.Data, res.Events)
data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res.Ok.Messages, res.Ok.Attributes, res.Ok.Data, res.Ok.Events)
if err != nil {
return nil, errorsmod.Wrap(err, "dispatch")
}
Expand Down Expand Up @@ -768,7 +783,7 @@ func (k Keeper) QuerySmart(ctx context.Context, contractAddr sdk.AccAddress, req
if qErr != nil {
return nil, errorsmod.Wrap(types.ErrQueryFailed, qErr.Error())
}
return queryResult, nil
return queryResult.Ok, nil
}

func checkAndIncreaseQueryStackSize(ctx context.Context, maxQueryStackSize uint32) (sdk.Context, error) {
Expand Down
Loading

0 comments on commit 04faa13

Please sign in to comment.