diff --git a/.cargo/config.toml b/.cargo/config.toml index 57816f1..f981e93 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,3 +1,3 @@ [alias] wasm = "build --target wasm32-unknown-unknown --release --lib" -wasm-debug = "build --target wasm32-unknown-unknown --lib" \ No newline at end of file +wasm-debug = "build --target wasm32-unknown-unknown --lib" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 84d8ebf..0c46a4b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -49,18 +49,47 @@ jobs: protoc --version - name: Cargo fetch run: cargo fetch --locked - - name: Build (all targets) - run: cargo build --workspace --all-targets --locked + - name: WASM release build + run: cargo wasm --locked - name: Tests - run: cargo test --workspace --all-features --all-targets -- --nocapture + run: cargo test -- --nocapture + + artifacts: + name: Build Artifacts + runs-on: ubuntu-latest + needs: fmt_lint + steps: + - uses: actions/checkout@v4 + - name: Install toolchain + uses: dtolnay/rust-toolchain@stable + with: + toolchain: ${{ env.RUST_VERSION }} + targets: wasm32-unknown-unknown + - name: Install protoc + run: | + sudo apt-get update + sudo apt-get install -y protobuf-compiler + protoc --version + - name: Install wasm-opt + run: cargo install wasm-opt --locked - name: WASM release build - run: cargo build -p converter --release --target wasm32-unknown-unknown --locked - - name: Artifact (wasm) + run: RUSTFLAGS="-C link-arg=-s" cargo wasm --locked + - name: Optimize WASM artifacts + run: | + mkdir artifacts + for f in target/wasm32-unknown-unknown/release/*.wasm; do + wasm-opt -Os "$f" -o "artifacts/$(basename "$f")" + done + - name: Generate checksums + run: | + cd artifacts + sha256sum -- *.wasm | tee checksums.txt + - name: Artifact (all targets) if: success() uses: actions/upload-artifact@v4 with: - name: converter-wasm - path: target/wasm32-unknown-unknown/release/*.wasm + name: converter-artifacts + path: artifacts/* coverage: name: Coverage diff --git a/Cargo.lock b/Cargo.lock index fbd68b9..ddc2516 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -277,7 +277,6 @@ dependencies = [ "rstest", "serde", "serde_json", - "strum", "strum_macros", "thiserror 2.0.16", ] @@ -1014,9 +1013,9 @@ checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] name = "manifest-std" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3963b9fecdc56e03ec20f8286d724a25faf7868f1ecd64f7ce0c2a7689eaaa02" +checksum = "8ef175fdd638088f0b871fdc72869360eca1f6cf0a76f862cce7139d70887f1d" dependencies = [ "heck", "prost", @@ -1605,15 +1604,6 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" -[[package]] -name = "strum" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" -dependencies = [ - "strum_macros", -] - [[package]] name = "strum_macros" version = "0.27.2" diff --git a/Cargo.toml b/Cargo.toml index 32751e5..f8c2669 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,38 @@ [workspace] members = [ - "converter", + "contracts/*", ] resolver = "2" + +[workspace.package] +version = "0.1.0" + +[workspace.dependencies] +bech32 = "0.11" +const_format = "0.2" +cw2 = "3" +cw-controllers = "3" +prost = "0.14.1" +cosmwasm-std = { version = "3", features = ["cosmwasm_2_2"] } +cosmwasm-schema = "3" +cw-utils = "3" +serde = { version = "1", features = ["derive"] } +cw-storage-plus = "3" +manifest-std = "0.2.0" +thiserror = "2" +cw-multi-test = { version = "3", features = ["cosmwasm_2_2"] } +rstest = "0.26" +serde_json = "1" +strum_macros = "0.27" + +[profile.release.package.converter] +codegen-units = 1 +incremental = false + +[profile.release] +rpath = false +lto = true +overflow-checks = true +opt-level = 3 +debug = false +debug-assertions = false diff --git a/contracts/converter/Cargo.toml b/contracts/converter/Cargo.toml new file mode 100644 index 0000000..9f87d01 --- /dev/null +++ b/contracts/converter/Cargo.toml @@ -0,0 +1,35 @@ +[package] +name = "converter" +version = "0.1.0" +edition = "2021" +license = "Apache-2.0" +description = "A CosmWasm contract for converting between different token standards." +repository = "https://github.com/manifest-network/manifest-contracts" +homepage = "https://manifest.network" +keywords = ["blockchain", "web3", "cosmwasm", "manifest"] + +[lib] +crate-type = ["cdylib", "rlib"] + +[dependencies] +bech32 = { workspace = true } +const_format = { workspace = true } +cw2 = { workspace = true } +cw-controllers = { workspace = true } +prost = { workspace = true } +cosmwasm-std = { workspace = true } +cosmwasm-schema = { workspace = true } +cw-utils = { workspace = true } +serde = { workspace = true } +cw-storage-plus = { workspace = true } +manifest-std = { workspace = true } +thiserror = { workspace = true } + +[dev-dependencies] +cw-multi-test = { workspace = true } +rstest = { workspace = true } +serde_json = { workspace = true } +strum_macros = { workspace = true } + +[features] +library = [] diff --git a/converter/src/consts.rs b/contracts/converter/src/consts.rs similarity index 100% rename from converter/src/consts.rs rename to contracts/converter/src/consts.rs diff --git a/converter/src/contract.rs b/contracts/converter/src/contract.rs similarity index 100% rename from converter/src/contract.rs rename to contracts/converter/src/contract.rs diff --git a/converter/src/denom.rs b/contracts/converter/src/denom.rs similarity index 100% rename from converter/src/denom.rs rename to contracts/converter/src/denom.rs diff --git a/converter/src/error.rs b/contracts/converter/src/error.rs similarity index 100% rename from converter/src/error.rs rename to contracts/converter/src/error.rs diff --git a/converter/src/lib.rs b/contracts/converter/src/lib.rs similarity index 100% rename from converter/src/lib.rs rename to contracts/converter/src/lib.rs diff --git a/converter/src/msg.rs b/contracts/converter/src/msg.rs similarity index 100% rename from converter/src/msg.rs rename to contracts/converter/src/msg.rs diff --git a/converter/src/rate.rs b/contracts/converter/src/rate.rs similarity index 100% rename from converter/src/rate.rs rename to contracts/converter/src/rate.rs diff --git a/converter/src/state.rs b/contracts/converter/src/state.rs similarity index 100% rename from converter/src/state.rs rename to contracts/converter/src/state.rs diff --git a/converter/tests/common/mod.rs b/contracts/converter/tests/common/mod.rs similarity index 100% rename from converter/tests/common/mod.rs rename to contracts/converter/tests/common/mod.rs diff --git a/converter/tests/convert.rs b/contracts/converter/tests/convert.rs similarity index 100% rename from converter/tests/convert.rs rename to contracts/converter/tests/convert.rs diff --git a/converter/tests/instantiate.rs b/contracts/converter/tests/instantiate.rs similarity index 100% rename from converter/tests/instantiate.rs rename to contracts/converter/tests/instantiate.rs diff --git a/converter/tests/query.rs b/contracts/converter/tests/query.rs similarity index 100% rename from converter/tests/query.rs rename to contracts/converter/tests/query.rs diff --git a/converter/tests/update_admin.rs b/contracts/converter/tests/update_admin.rs similarity index 100% rename from converter/tests/update_admin.rs rename to contracts/converter/tests/update_admin.rs diff --git a/converter/tests/update_config.rs b/contracts/converter/tests/update_config.rs similarity index 100% rename from converter/tests/update_config.rs rename to contracts/converter/tests/update_config.rs diff --git a/converter/Cargo.toml b/converter/Cargo.toml deleted file mode 100644 index 6511382..0000000 --- a/converter/Cargo.toml +++ /dev/null @@ -1,36 +0,0 @@ -[package] -name = "converter" -version = "0.1.0" -edition = "2021" -license = "Apache-2.0" -description = "A CosmWasm contract for converting between different token standards." -repository = "https://github.com/manifest-network/manifest-contracts" -homepage = "https://manifest.network" -keywords = ["blockchain", "web3", "cosmwasm", "manifest"] - -[lib] -crate-type = ["cdylib", "rlib"] - -[dependencies] -bech32 = "0.11.0" -const_format = "0.2" -cw2 = "3" -cw-controllers = "3" -prost = "0.14.1" -cosmwasm-std = { version = "3", features = ["cosmwasm_2_2"] } -cosmwasm-schema = "3" -cw-utils = "3" -serde = { version = "1", features = ["derive"] } -cw-storage-plus = "3" -manifest-std = "0.1.0" -thiserror = "2" - -[dev-dependencies] -cw-multi-test = { version = "3", features = ["cosmwasm_2_2"] } -rstest = "0.26" -serde_json = "1" -strum = { version = "0.27", features = ["derive"] } -strum_macros = "0.27" - -[features] -library = []