|
1 | 1 | package keeper
|
2 | 2 |
|
3 | 3 | import (
|
| 4 | + "encoding/json" |
4 | 5 | "time"
|
5 | 6 |
|
6 | 7 | wasmvmtypes "github.com/CosmWasm/wasmvm/v2/types"
|
@@ -29,11 +30,21 @@ func (k Keeper) OnOpenChannel(
|
29 | 30 | msg wasmvmtypes.IBCChannelOpenMsg,
|
30 | 31 | ) (string, error) {
|
31 | 32 | defer telemetry.MeasureSince(time.Now(), "wasm", "contract", "ibc-open-channel")
|
32 |
| - _, codeInfo, prefixStore, err := k.contractInstance(ctx, contractAddr) |
| 33 | + contractInfo, codeInfo, prefixStore, err := k.contractInstance(ctx, contractAddr) |
33 | 34 | if err != nil {
|
34 | 35 | return "", err
|
35 | 36 | }
|
36 | 37 |
|
| 38 | + sdkCtx := sdk.UnwrapSDKContext(ctx) |
| 39 | + sdkCtx, discount := k.checkDiscountEligibility(sdkCtx, codeInfo.CodeHash, k.IsPinnedCode(ctx, contractInfo.CodeID)) |
| 40 | + msgBz, err := json.Marshal(msg) // this is not great |
| 41 | + if err != nil { |
| 42 | + // this should never happen, as we just built this message |
| 43 | + return "", errorsmod.Wrap(types.ErrInvalidMsg, err.Error()) |
| 44 | + } |
| 45 | + setupCost := k.gasRegister.SetupContractCost(discount, len(msgBz)) |
| 46 | + sdkCtx.GasMeter().ConsumeGas(setupCost, "Loading CosmWasm module: ibc-open-channel") |
| 47 | + |
37 | 48 | env := types.NewEnv(ctx, contractAddr)
|
38 | 49 | querier := k.newQueryHandler(ctx, contractAddr)
|
39 | 50 |
|
@@ -78,6 +89,16 @@ func (k Keeper) OnConnectChannel(
|
78 | 89 | return err
|
79 | 90 | }
|
80 | 91 |
|
| 92 | + sdkCtx := sdk.UnwrapSDKContext(ctx) |
| 93 | + sdkCtx, discount := k.checkDiscountEligibility(sdkCtx, codeInfo.CodeHash, k.IsPinnedCode(ctx, contractInfo.CodeID)) |
| 94 | + msgBz, err := json.Marshal(msg) // this is not great |
| 95 | + if err != nil { |
| 96 | + // this should never happen, as we just built this message |
| 97 | + return errorsmod.Wrap(types.ErrInvalidMsg, err.Error()) |
| 98 | + } |
| 99 | + setupCost := k.gasRegister.SetupContractCost(discount, len(msgBz)) |
| 100 | + sdkCtx.GasMeter().ConsumeGas(setupCost, "Loading CosmWasm module: ibc-connect-channel") |
| 101 | + |
81 | 102 | env := types.NewEnv(ctx, contractAddr)
|
82 | 103 | querier := k.newQueryHandler(ctx, contractAddr)
|
83 | 104 |
|
@@ -116,6 +137,16 @@ func (k Keeper) OnCloseChannel(
|
116 | 137 | return err
|
117 | 138 | }
|
118 | 139 |
|
| 140 | + sdkCtx := sdk.UnwrapSDKContext(ctx) |
| 141 | + sdkCtx, discount := k.checkDiscountEligibility(sdkCtx, codeInfo.CodeHash, k.IsPinnedCode(ctx, contractInfo.CodeID)) |
| 142 | + msgBz, err := json.Marshal(msg) // this is not great |
| 143 | + if err != nil { |
| 144 | + // this should never happen, as we just built this message |
| 145 | + return errorsmod.Wrap(types.ErrInvalidMsg, err.Error()) |
| 146 | + } |
| 147 | + setupCost := k.gasRegister.SetupContractCost(discount, len(msgBz)) |
| 148 | + sdkCtx.GasMeter().ConsumeGas(setupCost, "Loading CosmWasm module: ibc-close-channel") |
| 149 | + |
119 | 150 | params := types.NewEnv(ctx, contractAddr)
|
120 | 151 | querier := k.newQueryHandler(ctx, contractAddr)
|
121 | 152 |
|
@@ -153,6 +184,16 @@ func (k Keeper) OnRecvPacket(
|
153 | 184 | return nil, err
|
154 | 185 | }
|
155 | 186 |
|
| 187 | + sdkCtx := sdk.UnwrapSDKContext(ctx) |
| 188 | + sdkCtx, discount := k.checkDiscountEligibility(sdkCtx, codeInfo.CodeHash, k.IsPinnedCode(ctx, contractInfo.CodeID)) |
| 189 | + msgBz, err := json.Marshal(msg) // this is not great |
| 190 | + if err != nil { |
| 191 | + // this should never happen, as we just built this message |
| 192 | + return nil, errorsmod.Wrap(types.ErrInvalidMsg, err.Error()) |
| 193 | + } |
| 194 | + setupCost := k.gasRegister.SetupContractCost(discount, len(msgBz)) |
| 195 | + sdkCtx.GasMeter().ConsumeGas(setupCost, "Loading CosmWasm module: ibc-recv-packet") |
| 196 | + |
156 | 197 | env := types.NewEnv(ctx, contractAddr)
|
157 | 198 | querier := k.newQueryHandler(ctx, contractAddr)
|
158 | 199 |
|
@@ -226,6 +267,16 @@ func (k Keeper) OnAckPacket(
|
226 | 267 | return err
|
227 | 268 | }
|
228 | 269 |
|
| 270 | + sdkCtx := sdk.UnwrapSDKContext(ctx) |
| 271 | + sdkCtx, discount := k.checkDiscountEligibility(sdkCtx, codeInfo.CodeHash, k.IsPinnedCode(ctx, contractInfo.CodeID)) |
| 272 | + msgBz, err := json.Marshal(msg) // this is not great |
| 273 | + if err != nil { |
| 274 | + // this should never happen, as we just built this message |
| 275 | + return errorsmod.Wrap(types.ErrInvalidMsg, err.Error()) |
| 276 | + } |
| 277 | + setupCost := k.gasRegister.SetupContractCost(discount, len(msgBz)) |
| 278 | + sdkCtx.GasMeter().ConsumeGas(setupCost, "Loading CosmWasm module: ibc-ack-packet") |
| 279 | + |
229 | 280 | env := types.NewEnv(ctx, contractAddr)
|
230 | 281 | querier := k.newQueryHandler(ctx, contractAddr)
|
231 | 282 |
|
@@ -261,6 +312,16 @@ func (k Keeper) OnTimeoutPacket(
|
261 | 312 | return err
|
262 | 313 | }
|
263 | 314 |
|
| 315 | + sdkCtx := sdk.UnwrapSDKContext(ctx) |
| 316 | + sdkCtx, discount := k.checkDiscountEligibility(sdkCtx, codeInfo.CodeHash, k.IsPinnedCode(ctx, contractInfo.CodeID)) |
| 317 | + msgBz, err := json.Marshal(msg) // this is not great |
| 318 | + if err != nil { |
| 319 | + // this should never happen, as we just built this message |
| 320 | + return errorsmod.Wrap(types.ErrInvalidMsg, err.Error()) |
| 321 | + } |
| 322 | + setupCost := k.gasRegister.SetupContractCost(discount, len(msgBz)) |
| 323 | + sdkCtx.GasMeter().ConsumeGas(setupCost, "Loading CosmWasm module: ibc-timeout-packet") |
| 324 | + |
264 | 325 | env := types.NewEnv(ctx, contractAddr)
|
265 | 326 | querier := k.newQueryHandler(ctx, contractAddr)
|
266 | 327 |
|
@@ -295,6 +356,16 @@ func (k Keeper) IBCSourceCallback(
|
295 | 356 | return err
|
296 | 357 | }
|
297 | 358 |
|
| 359 | + sdkCtx := sdk.UnwrapSDKContext(ctx) |
| 360 | + sdkCtx, discount := k.checkDiscountEligibility(sdkCtx, codeInfo.CodeHash, k.IsPinnedCode(ctx, contractInfo.CodeID)) |
| 361 | + msgBz, err := json.Marshal(msg) // this is not great |
| 362 | + if err != nil { |
| 363 | + // this should never happen, as we just built this message |
| 364 | + return errorsmod.Wrap(types.ErrInvalidMsg, err.Error()) |
| 365 | + } |
| 366 | + setupCost := k.gasRegister.SetupContractCost(discount, len(msgBz)) |
| 367 | + sdkCtx.GasMeter().ConsumeGas(setupCost, "Loading CosmWasm module: ibc-source-chain-callback") |
| 368 | + |
298 | 369 | env := types.NewEnv(ctx, contractAddr)
|
299 | 370 | querier := k.newQueryHandler(ctx, contractAddr)
|
300 | 371 |
|
@@ -329,6 +400,16 @@ func (k Keeper) IBCDestinationCallback(
|
329 | 400 | return err
|
330 | 401 | }
|
331 | 402 |
|
| 403 | + sdkCtx := sdk.UnwrapSDKContext(ctx) |
| 404 | + sdkCtx, discount := k.checkDiscountEligibility(sdkCtx, codeInfo.CodeHash, k.IsPinnedCode(ctx, contractInfo.CodeID)) |
| 405 | + msgBz, err := json.Marshal(msg) // this is not great |
| 406 | + if err != nil { |
| 407 | + // this should never happen, as we just built this message |
| 408 | + return errorsmod.Wrap(types.ErrInvalidMsg, err.Error()) |
| 409 | + } |
| 410 | + setupCost := k.gasRegister.SetupContractCost(discount, len(msgBz)) |
| 411 | + sdkCtx.GasMeter().ConsumeGas(setupCost, "Loading CosmWasm module: ibc-destination-chain-callback") |
| 412 | + |
332 | 413 | env := types.NewEnv(ctx, contractAddr)
|
333 | 414 | querier := k.newQueryHandler(ctx, contractAddr)
|
334 | 415 |
|
|
0 commit comments