osmosis-labs / osmosis

The AMM Laboratory
https://app.osmosis.zone
Apache License 2.0
892 stars 593 forks source link

[Bug]: Missing CosmWasm capabilities for `v2.x` #8758

Closed CyberHoward closed 4 weeks ago

CyberHoward commented 1 month ago

What happened?

We're running into the following error when deploying cosmwasm 2.x contracts to testnet.

Wasm contract requires unavailable capabilities: {\"cosmwasm_1_3\"}

I brought the error up to Confio first to ensure it's not a CW issue: https://discord.com/channels/737637324434833438/737640672680607764/1290615644785737779

Quoting Reece:

Does osmosis app.go have cosmwasm_1_3 capabilities? they should wasmapp.AllCapabilities() when registering the wasmkeeper.NewKeeper if not possible its on Osmosis side (your contract may require 2.0 & 1.3?)

When enabling feature cosmwasm_2_0 it recursively enables all the previous features, hence all of the capabilities must be enabled.

Osmosis Version

26.0.0 (testnet)

How to reproduce?

Create a smart-contract with cosmwasm-std import that enables the 2.x features.

[dependencies]
cosmwasm-std = { version = "2.0.0", features = ["cosmwasm_2_0"] }

Then compile that contract and attempt to upload it to testnet. I did not explicitly check mainnet for this bug.

mattverse commented 1 month ago

hey @CyberHoward Can you tell me more about the steps to test this? I think we have a fix for this but I'm not sure of the specific steps to replicate the bug that you have had

CyberHoward commented 1 month ago

I'm not sure which step is unclear to you or which tooling you're used to using to replicate the issue in the easiest way.

I'm assuming you're used to using beaker, in which case you can set up the scaffold of your reproduction with it and update the imports of the contract to use a cosmwasm_std version 2.0.0 or up and enabling the cosmwasm_2_0 feature.

I.e. change https://github.com/osmosis-labs/beaker/blob/fc046f8fe9d8baecdd76404b57b31f5a4e100301/examples/scripting-cookbook/contracts/calculator/Cargo.toml#L44 to

cosmwasm-std = { version = "2.0.0", features = ["cosmwasm_2_0"] }

Then compile the contract and try to upload it to testnet. You should get the err that we are getting.

Edit: You can also attempt to upload one of our wasms using a UI: Wasm: https://github.com/AbstractSDK/abstract/blob/develop/v2/framework/artifacts/abstract_ans_host.wasm Upload using celatone: https://celatone.osmosis.zone/osmo-test-5/upload

image
bekauz commented 1 month ago

ran into the same issue. I believe having cosmwasm_1_4 feature is enough to trigger this as well.

PaddyMc commented 4 weeks ago

This is now fixed in main, closing this issue