From 5029e1dde07bff84a1f11f7f915051aefa8aa06d Mon Sep 17 00:00:00 2001 From: "Felix C. Morency" <1102868+fmorency@users.noreply.github.com> Date: Tue, 9 Sep 2025 15:10:46 -0400 Subject: [PATCH 1/5] chore: wasm opt --- .cargo/config.toml | 5 ++- .github/workflows/ci.yml | 35 +++++++++++++++--- Cargo.lock | 14 ++------ Cargo.toml | 35 +++++++++++++++++- contracts/converter/Cargo.toml | 35 ++++++++++++++++++ .../converter}/src/consts.rs | 0 .../converter}/src/contract.rs | 0 .../converter}/src/denom.rs | 0 .../converter}/src/error.rs | 0 {converter => contracts/converter}/src/lib.rs | 0 {converter => contracts/converter}/src/msg.rs | 0 .../converter}/src/rate.rs | 0 .../converter}/src/state.rs | 0 .../converter}/tests/common/mod.rs | 0 .../converter}/tests/convert.rs | 0 .../converter}/tests/instantiate.rs | 0 .../converter}/tests/query.rs | 0 .../converter}/tests/update_admin.rs | 0 .../converter}/tests/update_config.rs | 0 converter/Cargo.toml | 36 ------------------- 20 files changed, 106 insertions(+), 54 deletions(-) create mode 100644 contracts/converter/Cargo.toml rename {converter => contracts/converter}/src/consts.rs (100%) rename {converter => contracts/converter}/src/contract.rs (100%) rename {converter => contracts/converter}/src/denom.rs (100%) rename {converter => contracts/converter}/src/error.rs (100%) rename {converter => contracts/converter}/src/lib.rs (100%) rename {converter => contracts/converter}/src/msg.rs (100%) rename {converter => contracts/converter}/src/rate.rs (100%) rename {converter => contracts/converter}/src/state.rs (100%) rename {converter => contracts/converter}/tests/common/mod.rs (100%) rename {converter => contracts/converter}/tests/convert.rs (100%) rename {converter => contracts/converter}/tests/instantiate.rs (100%) rename {converter => contracts/converter}/tests/query.rs (100%) rename {converter => contracts/converter}/tests/update_admin.rs (100%) rename {converter => contracts/converter}/tests/update_config.rs (100%) delete mode 100644 converter/Cargo.toml diff --git a/.cargo/config.toml b/.cargo/config.toml index 57816f1..92e7650 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,3 +1,6 @@ [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" + +[build] +rustflags = ["-C", "link-arg=-s"] # strip symbols to reduce wasm size \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 84d8ebf..75f6aed 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -54,13 +54,40 @@ jobs: - name: Tests run: cargo test --workspace --all-features --all-targets -- --nocapture - name: WASM release build - run: cargo build -p converter --release --target wasm32-unknown-unknown --locked - - name: Artifact (wasm) + run: cargo build --release --target wasm32-unknown-unknown --locked + + 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 --release --workspace --all-targets --locked + - name: Optimize WASM artifacts + run: | + mkdir artifacts + for f in target/wasm32-unknown-unknown/release/*.wasm; do + wasm-opt -Oz "$f" -o "artifacts/$(basename "$f")" + done + - 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 = [] From e72d02caefb44f7b5bca802d96be0fe75ae91d30 Mon Sep 17 00:00:00 2001 From: "Felix C. Morency" <1102868+fmorency@users.noreply.github.com> Date: Tue, 9 Sep 2025 15:14:51 -0400 Subject: [PATCH 2/5] fix: use Os --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 75f6aed..100ddb6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -80,7 +80,7 @@ jobs: run: | mkdir artifacts for f in target/wasm32-unknown-unknown/release/*.wasm; do - wasm-opt -Oz "$f" -o "artifacts/$(basename "$f")" + wasm-opt -Os "$f" -o "artifacts/$(basename "$f")" done - name: Artifact (all targets) if: success() From 1e4b5a81bc0c3df86fe6b64efd61cd7aa01abb01 Mon Sep 17 00:00:00 2001 From: "Felix C. Morency" <1102868+fmorency@users.noreply.github.com> Date: Tue, 9 Sep 2025 15:17:16 -0400 Subject: [PATCH 3/5] ci: generate checksum --- .github/workflows/ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 100ddb6..58b190f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -82,6 +82,10 @@ jobs: 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 From 8832035dd24f9a7d9cd235de2fbe4d84602b964f Mon Sep 17 00:00:00 2001 From: "Felix C. Morency" <1102868+fmorency@users.noreply.github.com> Date: Tue, 9 Sep 2025 16:02:57 -0400 Subject: [PATCH 4/5] fix: wasm build --- .github/workflows/ci.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 58b190f..229ae7e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -49,12 +49,10 @@ jobs: protoc --version - name: Cargo fetch run: cargo fetch --locked - - name: Build (all targets) - run: cargo build --workspace --all-targets --locked - - name: Tests - run: cargo test --workspace --all-features --all-targets -- --nocapture - name: WASM release build - run: cargo build --release --target wasm32-unknown-unknown --locked + run: cargo wasm --locked + - name: Tests + run: cargo test -- --nocapture artifacts: name: Build Artifacts @@ -75,7 +73,7 @@ jobs: - name: Install wasm-opt run: cargo install wasm-opt --locked - name: WASM release build - run: cargo build --release --workspace --all-targets --locked + run: cargo wasm --locked - name: Optimize WASM artifacts run: | mkdir artifacts From 9123f2a212e7e872b0fbf3133ac5ab9ca449ebc9 Mon Sep 17 00:00:00 2001 From: "Felix C. Morency" <1102868+fmorency@users.noreply.github.com> Date: Tue, 9 Sep 2025 16:10:59 -0400 Subject: [PATCH 5/5] fix: flags --- .cargo/config.toml | 3 --- .github/workflows/ci.yml | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index 92e7650..f981e93 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,6 +1,3 @@ [alias] wasm = "build --target wasm32-unknown-unknown --release --lib" wasm-debug = "build --target wasm32-unknown-unknown --lib" - -[build] -rustflags = ["-C", "link-arg=-s"] # strip symbols to reduce wasm size \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 229ae7e..0c46a4b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -73,7 +73,7 @@ jobs: - name: Install wasm-opt run: cargo install wasm-opt --locked - name: WASM release build - run: cargo wasm --locked + run: RUSTFLAGS="-C link-arg=-s" cargo wasm --locked - name: Optimize WASM artifacts run: | mkdir artifacts