Skip to content

Commit d078d40

Browse files
authored
Merge pull request #2065 from CosmWasm/run-cosmwasm-check-in-ci
Run cosmwasm-check in CI and add cosmwasm_2_1 feature
2 parents 8a30e33 + 2aeeb6e commit d078d40

File tree

5 files changed

+54
-19
lines changed

5 files changed

+54
-19
lines changed

.circleci/config.yml

+43-13
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ orbs:
66

77
commands:
88
check_contract:
9+
parameters:
10+
min_version:
11+
type: string
12+
skip_cosmwasm_check:
13+
type: boolean
14+
default: false
915
steps:
1016
- run:
1117
name: Add wasm32 target
@@ -22,7 +28,17 @@ commands:
2228
- run:
2329
name: Build wasm binary
2430
command: cargo wasm --locked
25-
# After wasm build to ensure target/wasm32-unknown-unknown/release/<contract>.wasm exists
31+
- when:
32+
condition:
33+
not: << parameters.skip_cosmwasm_check >>
34+
steps:
35+
- run:
36+
name: Run cosmwasm-check (<< parameters.min_version >>)
37+
command: |
38+
cargo install cosmwasm-check@~<< parameters.min_version >> --locked --force
39+
cosmwasm-check --version
40+
cosmwasm-check target/wasm32-unknown-unknown/release/*.wasm
41+
# Run clippy after wasm build to ensure target/wasm32-unknown-unknown/release/<contract>.wasm exists
2642
- run:
2743
name: Clippy
2844
command: cargo clippy --all-targets -- -D warnings
@@ -472,7 +488,8 @@ jobs:
472488
- restore_cache:
473489
keys:
474490
- cargocache-v2-contract_burner-rust:1.73-{{ checksum "Cargo.lock" }}
475-
- check_contract
491+
- check_contract:
492+
min_version: "1.4"
476493
- save_cache:
477494
paths:
478495
- /usr/local/cargo/registry
@@ -499,7 +516,10 @@ jobs:
499516
- restore_cache:
500517
keys:
501518
- cargocache-v2-contract_crypto_verify-rust:1.73-{{ checksum "Cargo.lock" }}
502-
- check_contract
519+
# TODO: Enable this once 2.1 has been released to crates.io
520+
- check_contract:
521+
min_version: "2.1"
522+
skip_cosmwasm_check: true
503523
- save_cache:
504524
paths:
505525
- /usr/local/cargo/registry
@@ -526,7 +546,8 @@ jobs:
526546
- restore_cache:
527547
keys:
528548
- cargocache-v2-contract_cyberpunk-rust:1.73-{{ checksum "Cargo.lock" }}
529-
- check_contract
549+
- check_contract:
550+
min_version: "1.3"
530551
- save_cache:
531552
paths:
532553
- /usr/local/cargo/registry
@@ -553,7 +574,8 @@ jobs:
553574
- restore_cache:
554575
keys:
555576
- cargocache-v2-contract_hackatom-rust:1.73-{{ checksum "Cargo.lock" }}
556-
- check_contract
577+
- check_contract:
578+
min_version: "1.4"
557579
- save_cache:
558580
paths:
559581
- /usr/local/cargo/registry
@@ -580,7 +602,8 @@ jobs:
580602
- restore_cache:
581603
keys:
582604
- cargocache-v2-contract_ibc_reflect-rust:1.73-{{ checksum "Cargo.lock" }}
583-
- check_contract
605+
- check_contract:
606+
min_version: "2.0"
584607
- save_cache:
585608
paths:
586609
- /usr/local/cargo/registry
@@ -607,7 +630,8 @@ jobs:
607630
- restore_cache:
608631
keys:
609632
- cargocache-v2-contract_ibc_reflect_send-rust:1.73-{{ checksum "Cargo.lock" }}
610-
- check_contract
633+
- check_contract:
634+
min_version: "1.4"
611635
- save_cache:
612636
paths:
613637
- /usr/local/cargo/registry
@@ -634,7 +658,8 @@ jobs:
634658
- restore_cache:
635659
keys:
636660
- cargocache-v2-contract_floaty-rust:1.73-{{ checksum "Cargo.lock" }}
637-
- check_contract
661+
- check_contract:
662+
min_version: "1.4"
638663
- save_cache:
639664
paths:
640665
- /usr/local/cargo/registry
@@ -661,7 +686,8 @@ jobs:
661686
- restore_cache:
662687
keys:
663688
- cargocache-v2-contract_queue-rust:1.73-{{ checksum "Cargo.lock" }}
664-
- check_contract
689+
- check_contract:
690+
min_version: "1.4"
665691
- save_cache:
666692
paths:
667693
- /usr/local/cargo/registry
@@ -688,7 +714,8 @@ jobs:
688714
- restore_cache:
689715
keys:
690716
- cargocache-v2-contract_reflect-rust:1.73-{{ checksum "Cargo.lock" }}
691-
- check_contract
717+
- check_contract:
718+
min_version: "2.0"
692719
- save_cache:
693720
paths:
694721
- /usr/local/cargo/registry
@@ -715,7 +742,8 @@ jobs:
715742
- restore_cache:
716743
keys:
717744
- cargocache-v2-contract_staking-rust:1.73-{{ checksum "Cargo.lock" }}
718-
- check_contract
745+
- check_contract:
746+
min_version: "1.4"
719747
- save_cache:
720748
paths:
721749
- /usr/local/cargo/registry
@@ -742,7 +770,8 @@ jobs:
742770
- restore_cache:
743771
keys:
744772
- cargocache-v2-contract_virus-rust:1.73-{{ checksum "Cargo.lock" }}
745-
- check_contract
773+
- check_contract:
774+
min_version: "1.4"
746775
- save_cache:
747776
paths:
748777
- /usr/local/cargo/registry
@@ -769,7 +798,8 @@ jobs:
769798
- restore_cache:
770799
keys:
771800
- cargocache-v2-contract_empty-rust:1.73-{{ checksum "Cargo.lock" }}
772-
- check_contract
801+
- check_contract:
802+
min_version: "2.0"
773803
- save_cache:
774804
paths:
775805
- /usr/local/cargo/registry

.github/workflows/ci.yml

+3-5
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,12 @@ jobs:
2929
working-directory: ./contracts/hackatom
3030
steps:
3131
- name: Checkout sources
32-
uses: actions/checkout@v2
32+
uses: actions/checkout@v4
3333
- name: Install Rust
34-
uses: actions-rs/toolchain@v1
34+
uses: dtolnay/rust-toolchain@master
3535
with:
3636
toolchain: 1.73.0
37-
target: wasm32-unknown-unknown
38-
profile: minimal
39-
override: true
37+
targets: wasm32-unknown-unknown
4038
- name: Build hackatom wasm
4139
run: cargo wasm --locked
4240
- name: Unit Test hackatom

contracts/crypto-verify/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ cranelift = ["cosmwasm-vm/cranelift"]
3030

3131
[dependencies]
3232
cosmwasm-schema = { path = "../../packages/schema" }
33-
cosmwasm-std = { path = "../../packages/std", features = ["iterator"] }
33+
cosmwasm-std = { path = "../../packages/std", features = ["cosmwasm_2_1", "iterator"] }
3434
hex = "0.4"
3535
rlp = "0.5"
3636
schemars = "0.8.12"

packages/std/Cargo.toml

+3
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ cosmwasm_1_4 = ["cosmwasm_1_3"]
4949
# This enables functionality that is only available on 2.0 chains.
5050
# It adds `CosmosMsg::Any`, replacing `CosmosMsg::Stargate`. It also adds `QueryRequest::Grpc`.
5151
cosmwasm_2_0 = ["cosmwasm_1_4"]
52+
# This enables functionality that is only available on 2.1 chains.
53+
# It adds verification and key recovery for the secp256r1 elliptic curve.
54+
cosmwasm_2_1 = ["cosmwasm_2_0"]
5255

5356
[dependencies]
5457
base64 = "0.21.0"

packages/std/src/imports.rs

+4
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,10 @@ extern "C" {
6262
/// secp256r1 ECDSA parametrization.
6363
/// Returns 0 on verification success, 1 on verification failure, and values
6464
/// greater than 1 in case of error.
65+
#[cfg(feature = "cosmwasm_2_1")]
6566
fn secp256r1_verify(message_hash_ptr: u32, signature_ptr: u32, public_key_ptr: u32) -> u32;
6667

68+
#[cfg(feature = "cosmwasm_2_1")]
6769
fn secp256r1_recover_pubkey(
6870
message_hash_ptr: u32,
6971
signature_ptr: u32,
@@ -419,6 +421,7 @@ impl Api for ExternalApi {
419421
}
420422
}
421423

424+
#[cfg(feature = "cosmwasm_2_1")]
422425
fn secp256r1_verify(
423426
&self,
424427
message_hash: &[u8],
@@ -445,6 +448,7 @@ impl Api for ExternalApi {
445448
}
446449
}
447450

451+
#[cfg(feature = "cosmwasm_2_1")]
448452
fn secp256r1_recover_pubkey(
449453
&self,
450454
message_hash: &[u8],

0 commit comments

Comments
 (0)