[package] name = "cosmwasm-std" version = { workspace = true } authors = ["Ethan Frey "] description = "Standard library for Wasm based smart contracts on Cosmos blockchains" repository = { workspace = true } edition = { workspace = true } license = { workspace = true } readme = "README.md" [package.metadata.docs.rs] features = ["cosmwasm_3_0", "staking", "stargate", "ibc2"] [features] default = ["exports", "iterator", "std"] # Enable if this cosmwasm-std is the primary version of cosmwas-std used in the contract. This # adds exports and imports needed for basic communication between contract and VM. exports = [] std = [] # iterator allows us to iterate over all DB items in a given range # optional as some merkle stores (like tries) don't support this # given Ethereum 1.0, 2.0, Substrate, and other major projects use Tries # we keep this optional, to allow possible future integration (or different Cosmos Backends) iterator = [] # staking exposes bindings to a required staking module in the runtime, via new # CosmosMsg types, and new QueryRequest types. This should only be enabled on contracts # that require these types, so other contracts can be used on systems with eg. PoA consensus staking = [] # stargate enables stargate-dependent messages and queries, like raw protobuf messages # as well as ibc-related functionality stargate = [] # ibc2 enables ibc2-dependent messages, entrypoints and queries ibc2 = [] # This feature makes `BankQuery::Supply` available for the contract to call, but requires # the host blockchain to run CosmWasm `1.1.0` or higher. cosmwasm_1_1 = [] # This feature makes `GovMsg::VoteWeighted` available for the contract to call, but requires # the host blockchain to run CosmWasm `1.2.0` or higher. cosmwasm_1_2 = ["cosmwasm_1_1"] # This feature makes `BankQuery::DenomMetadata` available for the contract to call, but requires # the host blockchain to run CosmWasm `1.3.0` or higher. cosmwasm_1_3 = ["cosmwasm_1_2"] # Together with the `iterator` feature this enables additional imports for more # efficient iteration over DB keys or values. # It also makes `DistributionQuery::{DelegationRewards, DelegationTotalRewards, DelegatorValidators}` # available for the contract to call. # It requires the host blockchain to run CosmWasm `1.4.0` or higher. cosmwasm_1_4 = ["cosmwasm_1_3"] # This enables functionality that is only available on 2.0 chains. # It adds `CosmosMsg::Any`, replacing `CosmosMsg::Stargate`. It also adds `QueryRequest::Grpc`. cosmwasm_2_0 = ["cosmwasm_1_4"] # This enables functionality that is only available on 2.1 chains. # It adds verification and key recovery for the secp256r1 elliptic curve. cosmwasm_2_1 = ["cosmwasm_2_0"] # This enables functionality that is only available on 2.2 chains. # It adds `IbcMsg::PayPacketFee` and `IbcMsg::PayPacketFeeAsync`. cosmwasm_2_2 = ["cosmwasm_2_1"] # This enables functionality that is only available on 3.0 chains. # It adds `WasmQuery::RawRange`. cosmwasm_3_0 = ["cosmwasm_2_2"] [dependencies] base64 = "0.22.0" bnum = "0.11.0" cosmwasm-core = { workspace = true } cosmwasm-derive = { workspace = true } cw-schema = { workspace = true } derive_more = { version = "2.0.1", default-features = false, features = ["debug"] } hex = "0.4" schemars = { workspace = true } sha2 = "0.10.3" serde = { workspace = true, features = ["std"] } serde_json = "1.0.140" static_assertions = "1.1.0" thiserror = "1.0.26" rmp-serde = "1.3.0" [target.'cfg(not(target_arch = "wasm32"))'.dependencies] bech32 = "0.11.0" cosmwasm-crypto = { workspace = true } rand_core = { version = "0.6.4", features = ["getrandom"] } [dev-dependencies] cosmwasm-core = { workspace = true } cosmwasm-schema = { workspace = true } # The chrono dependency is only used in an example, which Rust compiles for us. If this causes trouble, remove it. chrono = { version = "0.4", default-features = false, features = ["alloc", "std"] } crc32fast = "1.3.2" hex-literal = "0.4.1" paste = "1.0.15" proptest = { version = "1.5.0", default-features = false, features = ["attr-macro", "std"] }