Repository: CosmWasm/cosmwasm
Pull request #1805 (2023-08-03 15:15:20)

Code Generator for Go Types
This adds a code generator for the Go types we need in `wasmvm`. It uses `cosmwasm-schema` to generate json schema from a type and traverses that to generate Go code from it.
I'm open to refactoring recommendations. Some of it is a bit messy (though that's mostly because of the `schemars` api and the many cases that have to be covered)


Patch:
diff --git a/Cargo.lock b/Cargo.lock
index a768a5576..a82590b17 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2,6 +2,16 @@
 # It is not intended for manual editing.
 version = 3
 
+[[package]]
+name = "Inflector"
+version = "0.11.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3"
+dependencies = [
+ "lazy_static",
+ "regex",
+]
+
 [[package]]
 name = "addr2line"
 version = "0.19.0"
@@ -159,9 +169,9 @@ dependencies = [
 
 [[package]]
 name = "base16ct"
-version = "0.2.0"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
+checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce"
 
 [[package]]
 name = "base64"
@@ -723,9 +733,9 @@ dependencies = [
 
 [[package]]
 name = "crypto-bigint"
-version = "0.5.2"
+version = "0.4.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15"
+checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef"
 dependencies = [
  "generic-array",
  "rand_core 0.6.4",
@@ -776,7 +786,7 @@ dependencies = [
  "ident_case",
  "proc-macro2",
  "quote",
- "syn 2.0.16",
+ "syn 2.0.28",
 ]
 
 [[package]]
@@ -787,7 +797,7 @@ checksum = "29a358ff9f12ec09c3e61fef9b5a9902623a695a46a917b07f269bff1445611a"
 dependencies = [
  "darling_core",
  "quote",
- "syn 2.0.16",
+ "syn 2.0.28",
 ]
 
 [[package]]
@@ -805,9 +815,9 @@ dependencies = [
 
 [[package]]
 name = "der"
-version = "0.7.7"
+version = "0.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946"
+checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de"
 dependencies = [
  "const-oid",
  "zeroize",
@@ -846,7 +856,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f"
 dependencies = [
  "block-buffer 0.10.4",
- "const-oid",
  "crypto-common",
  "subtle",
 ]
@@ -891,16 +900,14 @@ dependencies = [
 
 [[package]]
 name = "ecdsa"
-version = "0.16.7"
+version = "0.14.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0997c976637b606099b9985693efa3581e84e41f5c11ba5255f88711058ad428"
+checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c"
 dependencies = [
  "der",
- "digest 0.10.6",
  "elliptic-curve",
  "rfc6979",
  "signature",
- "spki",
 ]
 
 [[package]]
@@ -926,12 +933,13 @@ checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
 
 [[package]]
 name = "elliptic-curve"
-version = "0.13.5"
+version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b"
+checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3"
 dependencies = [
  "base16ct",
  "crypto-bigint",
+ "der",
  "digest 0.10.6",
  "ff",
  "generic-array",
@@ -987,7 +995,7 @@ dependencies = [
  "darling",
  "proc-macro2",
  "quote",
- "syn 2.0.16",
+ "syn 2.0.28",
 ]
 
 [[package]]
@@ -1028,9 +1036,9 @@ dependencies = [
 
 [[package]]
 name = "ff"
-version = "0.13.0"
+version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
+checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160"
 dependencies = [
  "rand_core 0.6.4",
  "subtle",
@@ -1089,7 +1097,6 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
 dependencies = [
  "typenum",
  "version_check",
- "zeroize",
 ]
 
 [[package]]
@@ -1126,11 +1133,23 @@ version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
 
+[[package]]
+name = "go-gen"
+version = "0.1.0"
+dependencies = [
+ "Inflector",
+ "anyhow",
+ "cosmwasm-schema",
+ "cosmwasm-std",
+ "indenter",
+ "schemars",
+]
+
 [[package]]
 name = "group"
-version = "0.13.0"
+version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
+checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7"
 dependencies = [
  "ff",
  "rand_core 0.6.4",
@@ -1213,6 +1232,12 @@ dependencies = [
  "unicode-normalization",
 ]
 
+[[package]]
+name = "indenter"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683"
+
 [[package]]
 name = "indexmap"
 version = "1.9.3"
@@ -1281,16 +1306,14 @@ dependencies = [
 
 [[package]]
 name = "k256"
-version = "0.13.1"
+version = "0.11.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc"
+checksum = "72c1e0b51e7ec0a97369623508396067a486bd0cbed95a2659a4b863d28cfc8b"
 dependencies = [
  "cfg-if",
  "ecdsa",
  "elliptic-curve",
- "once_cell",
  "sha2 0.10.6",
- "signature",
 ]
 
 [[package]]
@@ -1479,9 +1502,9 @@ checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
 
 [[package]]
 name = "pkcs8"
-version = "0.10.2"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
+checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba"
 dependencies = [
  "der",
  "spki",
@@ -1578,9 +1601,9 @@ dependencies = [
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.57"
+version = "1.0.66"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4ec6d5fe0b140acb27c9a0444118cf55bfbb4e0b259739429abb4521dd67c16"
+checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"
 dependencies = [
  "unicode-ident",
 ]
@@ -1607,9 +1630,9 @@ dependencies = [
 
 [[package]]
 name = "quote"
-version = "1.0.27"
+version = "1.0.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f4f29d145265ec1c483c7c654450edde0bfe043d3938d6972630663356d9500"
+checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965"
 dependencies = [
  "proc-macro2",
 ]
@@ -1754,12 +1777,13 @@ dependencies = [
 
 [[package]]
 name = "rfc6979"
-version = "0.4.0"
+version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2"
+checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb"
 dependencies = [
+ "crypto-bigint",
  "hmac",
- "subtle",
+ "zeroize",
 ]
 
 [[package]]
@@ -1864,9 +1888,9 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b"
 
 [[package]]
 name = "sec1"
-version = "0.7.3"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc"
+checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928"
 dependencies = [
  "base16ct",
  "der",
@@ -1884,9 +1908,9 @@ checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed"
 
 [[package]]
 name = "serde"
-version = "1.0.163"
+version = "1.0.180"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2113ab51b87a539ae008b5c6c02dc020ffa39afd2d83cffcb3f4eb2722cebec2"
+checksum = "0ea67f183f058fe88a4e3ec6e2788e003840893b91bac4559cabedd00863b3ed"
 dependencies = [
  "serde_derive",
 ]
@@ -1913,13 +1937,13 @@ dependencies = [
 
 [[package]]
 name = "serde_derive"
-version = "1.0.163"
+version = "1.0.180"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e"
+checksum = "24e744d7782b686ab3b73267ef05697159cc0e5abbed3f47f9933165e5219036"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.16",
+ "syn 2.0.28",
 ]
 
 [[package]]
@@ -1935,9 +1959,9 @@ dependencies = [
 
 [[package]]
 name = "serde_json"
-version = "1.0.96"
+version = "1.0.104"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1"
+checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c"
 dependencies = [
  "itoa",
  "ryu",
@@ -1970,9 +1994,9 @@ dependencies = [
 
 [[package]]
 name = "signature"
-version = "2.1.0"
+version = "1.6.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500"
+checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c"
 dependencies = [
  "digest 0.10.6",
  "rand_core 0.6.4",
@@ -1998,9 +2022,9 @@ checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
 
 [[package]]
 name = "spki"
-version = "0.7.2"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a"
+checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b"
 dependencies = [
  "base64ct",
  "der",
@@ -2037,9 +2061,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.16"
+version = "2.0.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a6f671d4b5ffdb8eadec19c0ae67fe2639df8684bd7bc4b83d986b8db549cf01"
+checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -2100,7 +2124,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.16",
+ "syn 2.0.28",
 ]
 
 [[package]]
@@ -2148,7 +2172,7 @@ checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.16",
+ "syn 2.0.28",
 ]
 
 [[package]]
@@ -2268,7 +2292,7 @@ dependencies = [
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.16",
+ "syn 2.0.28",
  "wasm-bindgen-shared",
 ]
 
@@ -2313,7 +2337,7 @@ checksum = "e128beba882dd1eb6200e1dc92ae6c5dbaa4311aa7bb211ca035779e5efc39f8"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.16",
+ "syn 2.0.28",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
diff --git a/contracts/burner/Cargo.lock b/contracts/burner/Cargo.lock
index 7e1cbbaf4..1028e65b4 100644
--- a/contracts/burner/Cargo.lock
+++ b/contracts/burner/Cargo.lock
@@ -57,9 +57,9 @@ dependencies = [
 
 [[package]]
 name = "base16ct"
-version = "0.2.0"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
+checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce"
 
 [[package]]
 name = "base64"
@@ -174,9 +174,9 @@ checksum = "591ff76ca0691bd91c1b0b5b987e5cf93b21ec810ad96665c5a569c60846dd93"
 
 [[package]]
 name = "const-oid"
-version = "0.9.4"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "795bc6e66a8e340f075fcf6227e417a2dc976b92b91f3cdc778bb858778b6747"
+checksum = "722e23542a15cea1f65d4a1419c4cfd7a26706c70871a13a04238ca3f40f1661"
 
 [[package]]
 name = "corosensei"
@@ -195,10 +195,10 @@ dependencies = [
 name = "cosmwasm-crypto"
 version = "1.3.1"
 dependencies = [
- "digest 0.10.7",
+ "digest 0.10.3",
  "ed25519-zebra",
  "k256",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "thiserror",
 ]
 
@@ -426,12 +426,12 @@ dependencies = [
 
 [[package]]
 name = "crypto-bigint"
-version = "0.5.2"
+version = "0.4.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15"
+checksum = "9f2b443d17d49dad5ef0ede301c3179cc923b8822f3393b4d2c28c269dd4a122"
 dependencies = [
  "generic-array",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
  "zeroize",
 ]
@@ -509,9 +509,9 @@ dependencies = [
 
 [[package]]
 name = "der"
-version = "0.7.7"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946"
+checksum = "13dd2ae565c0a381dde7fade45fce95984c568bdcb4700a4fdbe3175e0380b2f"
 dependencies = [
  "const-oid",
  "zeroize",
@@ -539,12 +539,11 @@ dependencies = [
 
 [[package]]
 name = "digest"
-version = "0.10.7"
+version = "0.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
 dependencies = [
  "block-buffer 0.10.2",
- "const-oid",
  "crypto-common",
  "subtle",
 ]
@@ -583,16 +582,14 @@ dependencies = [
 
 [[package]]
 name = "ecdsa"
-version = "0.16.8"
+version = "0.14.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4"
+checksum = "3bd46e0c364655e5baf2f5e99b603e7a09905da9966d7928d7470af393b28670"
 dependencies = [
  "der",
- "digest 0.10.7",
  "elliptic-curve",
  "rfc6979",
  "signature",
- "spki",
 ]
 
 [[package]]
@@ -603,7 +600,7 @@ checksum = "403ef3e961ab98f0ba902771d29f842058578bb1ce7e3c59dad5a6a93e784c69"
 dependencies = [
  "curve25519-dalek",
  "hex",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "serde",
  "sha2 0.9.5",
  "thiserror",
@@ -618,18 +615,19 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
 
 [[package]]
 name = "elliptic-curve"
-version = "0.13.5"
+version = "0.12.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b"
+checksum = "c47abd0a791d2ac0c7aa1118715f85b83689e4522c4e3a244e159d4fc9848a8d"
 dependencies = [
  "base16ct",
  "crypto-bigint",
- "digest 0.10.7",
+ "der",
+ "digest 0.10.3",
  "ff",
  "generic-array",
  "group",
  "pkcs8",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "sec1",
  "subtle",
  "zeroize",
@@ -684,11 +682,11 @@ checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
 
 [[package]]
 name = "ff"
-version = "0.13.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
+checksum = "df689201f395c6b90dfe87127685f8dbfc083a5e779e613575d8bd7314300c3e"
 dependencies = [
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
 ]
 
@@ -724,13 +722,12 @@ dependencies = [
 
 [[package]]
 name = "generic-array"
-version = "0.14.7"
+version = "0.14.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817"
 dependencies = [
  "typenum",
  "version_check",
- "zeroize",
 ]
 
 [[package]]
@@ -774,12 +771,12 @@ dependencies = [
 
 [[package]]
 name = "group"
-version = "0.13.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
+checksum = "7391856def869c1c81063a03457c676fbcd419709c3dfb33d8d319de484b154d"
 dependencies = [
  "ff",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
 ]
 
@@ -813,7 +810,7 @@ version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
 dependencies = [
- "digest 0.10.7",
+ "digest 0.10.3",
 ]
 
 [[package]]
@@ -859,16 +856,14 @@ dependencies = [
 
 [[package]]
 name = "k256"
-version = "0.13.1"
+version = "0.11.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc"
+checksum = "2c8a5a96d92d849c4499d99461da81c9cdc1467418a8ed2aaeb407e8d85940ed"
 dependencies = [
  "cfg-if",
  "ecdsa",
  "elliptic-curve",
- "once_cell",
  "sha2 0.10.3",
- "signature",
 ]
 
 [[package]]
@@ -1024,9 +1019,9 @@ checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443"
 
 [[package]]
 name = "pkcs8"
-version = "0.10.2"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
+checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba"
 dependencies = [
  "der",
  "spki",
@@ -1105,9 +1100,9 @@ dependencies = [
 
 [[package]]
 name = "rand_core"
-version = "0.6.4"
+version = "0.6.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
 dependencies = [
  "getrandom 0.2.3",
 ]
@@ -1181,12 +1176,13 @@ dependencies = [
 
 [[package]]
 name = "rfc6979"
-version = "0.4.0"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2"
+checksum = "88c86280f057430a52f4861551b092a01b419b8eacefc7c995eacb9dc132fe32"
 dependencies = [
+ "crypto-bigint",
  "hmac",
- "subtle",
+ "zeroize",
 ]
 
 [[package]]
@@ -1265,9 +1261,9 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b"
 
 [[package]]
 name = "sec1"
-version = "0.7.3"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc"
+checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928"
 dependencies = [
  "base16ct",
  "der",
@@ -1360,17 +1356,17 @@ checksum = "899bf02746a2c92bf1053d9327dadb252b01af1f81f90cdb902411f518bc7215"
 dependencies = [
  "cfg-if",
  "cpufeatures 0.2.2",
- "digest 0.10.7",
+ "digest 0.10.3",
 ]
 
 [[package]]
 name = "signature"
-version = "2.1.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500"
+checksum = "f054c6c1a6e95179d6f23ed974060dcefb2d9388bb7256900badad682c499de4"
 dependencies = [
- "digest 0.10.7",
- "rand_core 0.6.4",
+ "digest 0.10.3",
+ "rand_core 0.6.3",
 ]
 
 [[package]]
@@ -1393,9 +1389,9 @@ checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
 
 [[package]]
 name = "spki"
-version = "0.7.2"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a"
+checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b"
 dependencies = [
  "base64ct",
  "der",
diff --git a/contracts/crypto-verify/Cargo.lock b/contracts/crypto-verify/Cargo.lock
index 4c68c2184..880b8d3b8 100644
--- a/contracts/crypto-verify/Cargo.lock
+++ b/contracts/crypto-verify/Cargo.lock
@@ -57,9 +57,9 @@ dependencies = [
 
 [[package]]
 name = "base16ct"
-version = "0.2.0"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
+checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce"
 
 [[package]]
 name = "base64"
@@ -163,9 +163,9 @@ checksum = "591ff76ca0691bd91c1b0b5b987e5cf93b21ec810ad96665c5a569c60846dd93"
 
 [[package]]
 name = "const-oid"
-version = "0.9.4"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "795bc6e66a8e340f075fcf6227e417a2dc976b92b91f3cdc778bb858778b6747"
+checksum = "722e23542a15cea1f65d4a1419c4cfd7a26706c70871a13a04238ca3f40f1661"
 
 [[package]]
 name = "corosensei"
@@ -184,10 +184,10 @@ dependencies = [
 name = "cosmwasm-crypto"
 version = "1.3.1"
 dependencies = [
- "digest 0.10.7",
+ "digest 0.10.3",
  "ed25519-zebra",
  "k256",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "thiserror",
 ]
 
@@ -415,12 +415,12 @@ dependencies = [
 
 [[package]]
 name = "crypto-bigint"
-version = "0.5.2"
+version = "0.4.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15"
+checksum = "9f2b443d17d49dad5ef0ede301c3179cc923b8822f3393b4d2c28c269dd4a122"
 dependencies = [
  "generic-array",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
  "zeroize",
 ]
@@ -514,9 +514,9 @@ dependencies = [
 
 [[package]]
 name = "der"
-version = "0.7.7"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946"
+checksum = "13dd2ae565c0a381dde7fade45fce95984c568bdcb4700a4fdbe3175e0380b2f"
 dependencies = [
  "const-oid",
  "zeroize",
@@ -544,12 +544,11 @@ dependencies = [
 
 [[package]]
 name = "digest"
-version = "0.10.7"
+version = "0.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
 dependencies = [
  "block-buffer 0.10.2",
- "const-oid",
  "crypto-common",
  "subtle",
 ]
@@ -588,16 +587,14 @@ dependencies = [
 
 [[package]]
 name = "ecdsa"
-version = "0.16.8"
+version = "0.14.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4"
+checksum = "3bd46e0c364655e5baf2f5e99b603e7a09905da9966d7928d7470af393b28670"
 dependencies = [
  "der",
- "digest 0.10.7",
  "elliptic-curve",
  "rfc6979",
  "signature",
- "spki",
 ]
 
 [[package]]
@@ -608,7 +605,7 @@ checksum = "403ef3e961ab98f0ba902771d29f842058578bb1ce7e3c59dad5a6a93e784c69"
 dependencies = [
  "curve25519-dalek",
  "hex",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "serde",
  "sha2 0.9.5",
  "thiserror",
@@ -623,18 +620,19 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
 
 [[package]]
 name = "elliptic-curve"
-version = "0.13.5"
+version = "0.12.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b"
+checksum = "c47abd0a791d2ac0c7aa1118715f85b83689e4522c4e3a244e159d4fc9848a8d"
 dependencies = [
  "base16ct",
  "crypto-bigint",
- "digest 0.10.7",
+ "der",
+ "digest 0.10.3",
  "ff",
  "generic-array",
  "group",
  "pkcs8",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "sec1",
  "subtle",
  "zeroize",
@@ -689,11 +687,11 @@ checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
 
 [[package]]
 name = "ff"
-version = "0.13.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
+checksum = "df689201f395c6b90dfe87127685f8dbfc083a5e779e613575d8bd7314300c3e"
 dependencies = [
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
 ]
 
@@ -729,13 +727,12 @@ dependencies = [
 
 [[package]]
 name = "generic-array"
-version = "0.14.7"
+version = "0.14.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817"
 dependencies = [
  "typenum",
  "version_check",
- "zeroize",
 ]
 
 [[package]]
@@ -779,12 +776,12 @@ dependencies = [
 
 [[package]]
 name = "group"
-version = "0.13.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
+checksum = "7391856def869c1c81063a03457c676fbcd419709c3dfb33d8d319de484b154d"
 dependencies = [
  "ff",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
 ]
 
@@ -824,7 +821,7 @@ version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
 dependencies = [
- "digest 0.10.7",
+ "digest 0.10.3",
 ]
 
 [[package]]
@@ -870,16 +867,14 @@ dependencies = [
 
 [[package]]
 name = "k256"
-version = "0.13.1"
+version = "0.11.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc"
+checksum = "2c8a5a96d92d849c4499d99461da81c9cdc1467418a8ed2aaeb407e8d85940ed"
 dependencies = [
  "cfg-if",
  "ecdsa",
  "elliptic-curve",
- "once_cell",
  "sha2 0.10.3",
- "signature",
 ]
 
 [[package]]
@@ -1041,9 +1036,9 @@ checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443"
 
 [[package]]
 name = "pkcs8"
-version = "0.10.2"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
+checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba"
 dependencies = [
  "der",
  "spki",
@@ -1122,9 +1117,9 @@ dependencies = [
 
 [[package]]
 name = "rand_core"
-version = "0.6.4"
+version = "0.6.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
 dependencies = [
  "getrandom 0.2.3",
 ]
@@ -1198,12 +1193,13 @@ dependencies = [
 
 [[package]]
 name = "rfc6979"
-version = "0.4.0"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2"
+checksum = "88c86280f057430a52f4861551b092a01b419b8eacefc7c995eacb9dc132fe32"
 dependencies = [
+ "crypto-bigint",
  "hmac",
- "subtle",
+ "zeroize",
 ]
 
 [[package]]
@@ -1298,9 +1294,9 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b"
 
 [[package]]
 name = "sec1"
-version = "0.7.3"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc"
+checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928"
 dependencies = [
  "base16ct",
  "der",
@@ -1393,7 +1389,7 @@ checksum = "899bf02746a2c92bf1053d9327dadb252b01af1f81f90cdb902411f518bc7215"
 dependencies = [
  "cfg-if",
  "cpufeatures 0.2.2",
- "digest 0.10.7",
+ "digest 0.10.3",
 ]
 
 [[package]]
@@ -1402,18 +1398,18 @@ version = "0.10.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0a31480366ec990f395a61b7c08122d99bd40544fdb5abcfc1b06bb29994312c"
 dependencies = [
- "digest 0.10.7",
+ "digest 0.10.3",
  "keccak",
 ]
 
 [[package]]
 name = "signature"
-version = "2.1.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500"
+checksum = "f054c6c1a6e95179d6f23ed974060dcefb2d9388bb7256900badad682c499de4"
 dependencies = [
- "digest 0.10.7",
- "rand_core 0.6.4",
+ "digest 0.10.3",
+ "rand_core 0.6.3",
 ]
 
 [[package]]
@@ -1436,9 +1432,9 @@ checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
 
 [[package]]
 name = "spki"
-version = "0.7.2"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a"
+checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b"
 dependencies = [
  "base64ct",
  "der",
diff --git a/contracts/cyberpunk/Cargo.lock b/contracts/cyberpunk/Cargo.lock
index deb603271..7c71e28ba 100644
--- a/contracts/cyberpunk/Cargo.lock
+++ b/contracts/cyberpunk/Cargo.lock
@@ -69,9 +69,9 @@ dependencies = [
 
 [[package]]
 name = "base16ct"
-version = "0.2.0"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
+checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce"
 
 [[package]]
 name = "base64"
@@ -192,9 +192,9 @@ checksum = "591ff76ca0691bd91c1b0b5b987e5cf93b21ec810ad96665c5a569c60846dd93"
 
 [[package]]
 name = "const-oid"
-version = "0.9.4"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "795bc6e66a8e340f075fcf6227e417a2dc976b92b91f3cdc778bb858778b6747"
+checksum = "722e23542a15cea1f65d4a1419c4cfd7a26706c70871a13a04238ca3f40f1661"
 
 [[package]]
 name = "constant_time_eq"
@@ -219,10 +219,10 @@ dependencies = [
 name = "cosmwasm-crypto"
 version = "1.3.1"
 dependencies = [
- "digest 0.10.7",
+ "digest 0.10.3",
  "ed25519-zebra",
  "k256",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "thiserror",
 ]
 
@@ -450,12 +450,12 @@ dependencies = [
 
 [[package]]
 name = "crypto-bigint"
-version = "0.5.2"
+version = "0.4.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15"
+checksum = "9f2b443d17d49dad5ef0ede301c3179cc923b8822f3393b4d2c28c269dd4a122"
 dependencies = [
  "generic-array",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
  "zeroize",
 ]
@@ -545,9 +545,9 @@ dependencies = [
 
 [[package]]
 name = "der"
-version = "0.7.7"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946"
+checksum = "13dd2ae565c0a381dde7fade45fce95984c568bdcb4700a4fdbe3175e0380b2f"
 dependencies = [
  "const-oid",
  "zeroize",
@@ -575,12 +575,11 @@ dependencies = [
 
 [[package]]
 name = "digest"
-version = "0.10.7"
+version = "0.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
 dependencies = [
  "block-buffer 0.10.2",
- "const-oid",
  "crypto-common",
  "subtle",
 ]
@@ -619,16 +618,14 @@ dependencies = [
 
 [[package]]
 name = "ecdsa"
-version = "0.16.8"
+version = "0.14.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4"
+checksum = "3bd46e0c364655e5baf2f5e99b603e7a09905da9966d7928d7470af393b28670"
 dependencies = [
  "der",
- "digest 0.10.7",
  "elliptic-curve",
  "rfc6979",
  "signature",
- "spki",
 ]
 
 [[package]]
@@ -639,7 +636,7 @@ checksum = "403ef3e961ab98f0ba902771d29f842058578bb1ce7e3c59dad5a6a93e784c69"
 dependencies = [
  "curve25519-dalek",
  "hex",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "serde",
  "sha2 0.9.5",
  "thiserror",
@@ -654,18 +651,19 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
 
 [[package]]
 name = "elliptic-curve"
-version = "0.13.5"
+version = "0.12.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b"
+checksum = "c47abd0a791d2ac0c7aa1118715f85b83689e4522c4e3a244e159d4fc9848a8d"
 dependencies = [
  "base16ct",
  "crypto-bigint",
- "digest 0.10.7",
+ "der",
+ "digest 0.10.3",
  "ff",
  "generic-array",
  "group",
  "pkcs8",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "sec1",
  "subtle",
  "zeroize",
@@ -750,11 +748,11 @@ dependencies = [
 
 [[package]]
 name = "ff"
-version = "0.13.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
+checksum = "df689201f395c6b90dfe87127685f8dbfc083a5e779e613575d8bd7314300c3e"
 dependencies = [
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
 ]
 
@@ -790,13 +788,12 @@ dependencies = [
 
 [[package]]
 name = "generic-array"
-version = "0.14.7"
+version = "0.14.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817"
 dependencies = [
  "typenum",
  "version_check",
- "zeroize",
 ]
 
 [[package]]
@@ -840,12 +837,12 @@ dependencies = [
 
 [[package]]
 name = "group"
-version = "0.13.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
+checksum = "7391856def869c1c81063a03457c676fbcd419709c3dfb33d8d319de484b154d"
 dependencies = [
  "ff",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
 ]
 
@@ -885,7 +882,7 @@ version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
 dependencies = [
- "digest 0.10.7",
+ "digest 0.10.3",
 ]
 
 [[package]]
@@ -951,16 +948,14 @@ dependencies = [
 
 [[package]]
 name = "k256"
-version = "0.13.1"
+version = "0.11.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc"
+checksum = "2c8a5a96d92d849c4499d99461da81c9cdc1467418a8ed2aaeb407e8d85940ed"
 dependencies = [
  "cfg-if",
  "ecdsa",
  "elliptic-curve",
- "once_cell",
  "sha2 0.10.3",
- "signature",
 ]
 
 [[package]]
@@ -1122,9 +1117,9 @@ checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443"
 
 [[package]]
 name = "pkcs8"
-version = "0.10.2"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
+checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba"
 dependencies = [
  "der",
  "spki",
@@ -1203,9 +1198,9 @@ dependencies = [
 
 [[package]]
 name = "rand_core"
-version = "0.6.4"
+version = "0.6.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
 dependencies = [
  "getrandom 0.2.3",
 ]
@@ -1279,12 +1274,13 @@ dependencies = [
 
 [[package]]
 name = "rfc6979"
-version = "0.4.0"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2"
+checksum = "88c86280f057430a52f4861551b092a01b419b8eacefc7c995eacb9dc132fe32"
 dependencies = [
+ "crypto-bigint",
  "hmac",
- "subtle",
+ "zeroize",
 ]
 
 [[package]]
@@ -1389,9 +1385,9 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b"
 
 [[package]]
 name = "sec1"
-version = "0.7.3"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc"
+checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928"
 dependencies = [
  "base16ct",
  "der",
@@ -1484,17 +1480,17 @@ checksum = "899bf02746a2c92bf1053d9327dadb252b01af1f81f90cdb902411f518bc7215"
 dependencies = [
  "cfg-if",
  "cpufeatures 0.2.2",
- "digest 0.10.7",
+ "digest 0.10.3",
 ]
 
 [[package]]
 name = "signature"
-version = "2.1.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500"
+checksum = "f054c6c1a6e95179d6f23ed974060dcefb2d9388bb7256900badad682c499de4"
 dependencies = [
- "digest 0.10.7",
- "rand_core 0.6.4",
+ "digest 0.10.3",
+ "rand_core 0.6.3",
 ]
 
 [[package]]
@@ -1517,9 +1513,9 @@ checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
 
 [[package]]
 name = "spki"
-version = "0.7.2"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a"
+checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b"
 dependencies = [
  "base64ct",
  "der",
diff --git a/contracts/floaty/Cargo.lock b/contracts/floaty/Cargo.lock
index 62796eab9..720ec4979 100644
--- a/contracts/floaty/Cargo.lock
+++ b/contracts/floaty/Cargo.lock
@@ -57,9 +57,9 @@ dependencies = [
 
 [[package]]
 name = "base16ct"
-version = "0.2.0"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
+checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce"
 
 [[package]]
 name = "base64"
@@ -163,9 +163,9 @@ checksum = "591ff76ca0691bd91c1b0b5b987e5cf93b21ec810ad96665c5a569c60846dd93"
 
 [[package]]
 name = "const-oid"
-version = "0.9.4"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "795bc6e66a8e340f075fcf6227e417a2dc976b92b91f3cdc778bb858778b6747"
+checksum = "722e23542a15cea1f65d4a1419c4cfd7a26706c70871a13a04238ca3f40f1661"
 
 [[package]]
 name = "corosensei"
@@ -184,10 +184,10 @@ dependencies = [
 name = "cosmwasm-crypto"
 version = "1.3.1"
 dependencies = [
- "digest 0.10.7",
+ "digest 0.10.3",
  "ed25519-zebra",
  "k256",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "thiserror",
 ]
 
@@ -415,12 +415,12 @@ dependencies = [
 
 [[package]]
 name = "crypto-bigint"
-version = "0.5.2"
+version = "0.4.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15"
+checksum = "9f2b443d17d49dad5ef0ede301c3179cc923b8822f3393b4d2c28c269dd4a122"
 dependencies = [
  "generic-array",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
  "zeroize",
 ]
@@ -498,9 +498,9 @@ dependencies = [
 
 [[package]]
 name = "der"
-version = "0.7.7"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946"
+checksum = "13dd2ae565c0a381dde7fade45fce95984c568bdcb4700a4fdbe3175e0380b2f"
 dependencies = [
  "const-oid",
  "zeroize",
@@ -528,12 +528,11 @@ dependencies = [
 
 [[package]]
 name = "digest"
-version = "0.10.7"
+version = "0.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
 dependencies = [
  "block-buffer 0.10.2",
- "const-oid",
  "crypto-common",
  "subtle",
 ]
@@ -572,16 +571,14 @@ dependencies = [
 
 [[package]]
 name = "ecdsa"
-version = "0.16.8"
+version = "0.14.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4"
+checksum = "3bd46e0c364655e5baf2f5e99b603e7a09905da9966d7928d7470af393b28670"
 dependencies = [
  "der",
- "digest 0.10.7",
  "elliptic-curve",
  "rfc6979",
  "signature",
- "spki",
 ]
 
 [[package]]
@@ -592,7 +589,7 @@ checksum = "403ef3e961ab98f0ba902771d29f842058578bb1ce7e3c59dad5a6a93e784c69"
 dependencies = [
  "curve25519-dalek",
  "hex",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "serde",
  "sha2 0.9.5",
  "thiserror",
@@ -607,18 +604,19 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
 
 [[package]]
 name = "elliptic-curve"
-version = "0.13.5"
+version = "0.12.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b"
+checksum = "c47abd0a791d2ac0c7aa1118715f85b83689e4522c4e3a244e159d4fc9848a8d"
 dependencies = [
  "base16ct",
  "crypto-bigint",
- "digest 0.10.7",
+ "der",
+ "digest 0.10.3",
  "ff",
  "generic-array",
  "group",
  "pkcs8",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "sec1",
  "subtle",
  "zeroize",
@@ -673,11 +671,11 @@ checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
 
 [[package]]
 name = "ff"
-version = "0.13.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
+checksum = "df689201f395c6b90dfe87127685f8dbfc083a5e779e613575d8bd7314300c3e"
 dependencies = [
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
 ]
 
@@ -725,13 +723,12 @@ dependencies = [
 
 [[package]]
 name = "generic-array"
-version = "0.14.7"
+version = "0.14.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817"
 dependencies = [
  "typenum",
  "version_check",
- "zeroize",
 ]
 
 [[package]]
@@ -775,12 +772,12 @@ dependencies = [
 
 [[package]]
 name = "group"
-version = "0.13.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
+checksum = "7391856def869c1c81063a03457c676fbcd419709c3dfb33d8d319de484b154d"
 dependencies = [
  "ff",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
 ]
 
@@ -814,7 +811,7 @@ version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
 dependencies = [
- "digest 0.10.7",
+ "digest 0.10.3",
 ]
 
 [[package]]
@@ -860,16 +857,14 @@ dependencies = [
 
 [[package]]
 name = "k256"
-version = "0.13.1"
+version = "0.11.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc"
+checksum = "2c8a5a96d92d849c4499d99461da81c9cdc1467418a8ed2aaeb407e8d85940ed"
 dependencies = [
  "cfg-if",
  "ecdsa",
  "elliptic-curve",
- "once_cell",
  "sha2 0.10.3",
- "signature",
 ]
 
 [[package]]
@@ -1025,9 +1020,9 @@ checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443"
 
 [[package]]
 name = "pkcs8"
-version = "0.10.2"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
+checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba"
 dependencies = [
  "der",
  "spki",
@@ -1106,9 +1101,9 @@ dependencies = [
 
 [[package]]
 name = "rand_core"
-version = "0.6.4"
+version = "0.6.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
 dependencies = [
  "getrandom 0.2.3",
 ]
@@ -1182,12 +1177,13 @@ dependencies = [
 
 [[package]]
 name = "rfc6979"
-version = "0.4.0"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2"
+checksum = "88c86280f057430a52f4861551b092a01b419b8eacefc7c995eacb9dc132fe32"
 dependencies = [
+ "crypto-bigint",
  "hmac",
- "subtle",
+ "zeroize",
 ]
 
 [[package]]
@@ -1266,9 +1262,9 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b"
 
 [[package]]
 name = "sec1"
-version = "0.7.3"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc"
+checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928"
 dependencies = [
  "base16ct",
  "der",
@@ -1361,17 +1357,17 @@ checksum = "899bf02746a2c92bf1053d9327dadb252b01af1f81f90cdb902411f518bc7215"
 dependencies = [
  "cfg-if",
  "cpufeatures 0.2.2",
- "digest 0.10.7",
+ "digest 0.10.3",
 ]
 
 [[package]]
 name = "signature"
-version = "2.1.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500"
+checksum = "f054c6c1a6e95179d6f23ed974060dcefb2d9388bb7256900badad682c499de4"
 dependencies = [
- "digest 0.10.7",
- "rand_core 0.6.4",
+ "digest 0.10.3",
+ "rand_core 0.6.3",
 ]
 
 [[package]]
@@ -1394,9 +1390,9 @@ checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
 
 [[package]]
 name = "spki"
-version = "0.7.2"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a"
+checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b"
 dependencies = [
  "base64ct",
  "der",
diff --git a/contracts/hackatom/Cargo.lock b/contracts/hackatom/Cargo.lock
index cfc8fda3f..ed7746c87 100644
--- a/contracts/hackatom/Cargo.lock
+++ b/contracts/hackatom/Cargo.lock
@@ -57,9 +57,9 @@ dependencies = [
 
 [[package]]
 name = "base16ct"
-version = "0.2.0"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
+checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce"
 
 [[package]]
 name = "base64"
@@ -163,9 +163,9 @@ checksum = "591ff76ca0691bd91c1b0b5b987e5cf93b21ec810ad96665c5a569c60846dd93"
 
 [[package]]
 name = "const-oid"
-version = "0.9.4"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "795bc6e66a8e340f075fcf6227e417a2dc976b92b91f3cdc778bb858778b6747"
+checksum = "722e23542a15cea1f65d4a1419c4cfd7a26706c70871a13a04238ca3f40f1661"
 
 [[package]]
 name = "corosensei"
@@ -184,10 +184,10 @@ dependencies = [
 name = "cosmwasm-crypto"
 version = "1.3.1"
 dependencies = [
- "digest 0.10.7",
+ "digest 0.10.3",
  "ed25519-zebra",
  "k256",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "thiserror",
 ]
 
@@ -415,12 +415,12 @@ dependencies = [
 
 [[package]]
 name = "crypto-bigint"
-version = "0.5.2"
+version = "0.4.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15"
+checksum = "9f2b443d17d49dad5ef0ede301c3179cc923b8822f3393b4d2c28c269dd4a122"
 dependencies = [
  "generic-array",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
  "zeroize",
 ]
@@ -498,9 +498,9 @@ dependencies = [
 
 [[package]]
 name = "der"
-version = "0.7.7"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946"
+checksum = "13dd2ae565c0a381dde7fade45fce95984c568bdcb4700a4fdbe3175e0380b2f"
 dependencies = [
  "const-oid",
  "zeroize",
@@ -528,12 +528,11 @@ dependencies = [
 
 [[package]]
 name = "digest"
-version = "0.10.7"
+version = "0.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
 dependencies = [
  "block-buffer 0.10.2",
- "const-oid",
  "crypto-common",
  "subtle",
 ]
@@ -572,16 +571,14 @@ dependencies = [
 
 [[package]]
 name = "ecdsa"
-version = "0.16.8"
+version = "0.14.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4"
+checksum = "3bd46e0c364655e5baf2f5e99b603e7a09905da9966d7928d7470af393b28670"
 dependencies = [
  "der",
- "digest 0.10.7",
  "elliptic-curve",
  "rfc6979",
  "signature",
- "spki",
 ]
 
 [[package]]
@@ -592,7 +589,7 @@ checksum = "403ef3e961ab98f0ba902771d29f842058578bb1ce7e3c59dad5a6a93e784c69"
 dependencies = [
  "curve25519-dalek",
  "hex",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "serde",
  "sha2 0.9.5",
  "thiserror",
@@ -607,18 +604,19 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
 
 [[package]]
 name = "elliptic-curve"
-version = "0.13.5"
+version = "0.12.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b"
+checksum = "c47abd0a791d2ac0c7aa1118715f85b83689e4522c4e3a244e159d4fc9848a8d"
 dependencies = [
  "base16ct",
  "crypto-bigint",
- "digest 0.10.7",
+ "der",
+ "digest 0.10.3",
  "ff",
  "generic-array",
  "group",
  "pkcs8",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "sec1",
  "subtle",
  "zeroize",
@@ -673,11 +671,11 @@ checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
 
 [[package]]
 name = "ff"
-version = "0.13.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
+checksum = "df689201f395c6b90dfe87127685f8dbfc083a5e779e613575d8bd7314300c3e"
 dependencies = [
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
 ]
 
@@ -713,13 +711,12 @@ dependencies = [
 
 [[package]]
 name = "generic-array"
-version = "0.14.7"
+version = "0.14.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817"
 dependencies = [
  "typenum",
  "version_check",
- "zeroize",
 ]
 
 [[package]]
@@ -763,12 +760,12 @@ dependencies = [
 
 [[package]]
 name = "group"
-version = "0.13.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
+checksum = "7391856def869c1c81063a03457c676fbcd419709c3dfb33d8d319de484b154d"
 dependencies = [
  "ff",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
 ]
 
@@ -815,7 +812,7 @@ version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
 dependencies = [
- "digest 0.10.7",
+ "digest 0.10.3",
 ]
 
 [[package]]
@@ -861,16 +858,14 @@ dependencies = [
 
 [[package]]
 name = "k256"
-version = "0.13.1"
+version = "0.11.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc"
+checksum = "2c8a5a96d92d849c4499d99461da81c9cdc1467418a8ed2aaeb407e8d85940ed"
 dependencies = [
  "cfg-if",
  "ecdsa",
  "elliptic-curve",
- "once_cell",
  "sha2 0.10.3",
- "signature",
 ]
 
 [[package]]
@@ -1026,9 +1021,9 @@ checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443"
 
 [[package]]
 name = "pkcs8"
-version = "0.10.2"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
+checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba"
 dependencies = [
  "der",
  "spki",
@@ -1107,9 +1102,9 @@ dependencies = [
 
 [[package]]
 name = "rand_core"
-version = "0.6.4"
+version = "0.6.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
 dependencies = [
  "getrandom 0.2.3",
 ]
@@ -1183,12 +1178,13 @@ dependencies = [
 
 [[package]]
 name = "rfc6979"
-version = "0.4.0"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2"
+checksum = "88c86280f057430a52f4861551b092a01b419b8eacefc7c995eacb9dc132fe32"
 dependencies = [
+ "crypto-bigint",
  "hmac",
- "subtle",
+ "zeroize",
 ]
 
 [[package]]
@@ -1267,9 +1263,9 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b"
 
 [[package]]
 name = "sec1"
-version = "0.7.3"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc"
+checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928"
 dependencies = [
  "base16ct",
  "der",
@@ -1362,17 +1358,17 @@ checksum = "899bf02746a2c92bf1053d9327dadb252b01af1f81f90cdb902411f518bc7215"
 dependencies = [
  "cfg-if",
  "cpufeatures 0.2.2",
- "digest 0.10.7",
+ "digest 0.10.3",
 ]
 
 [[package]]
 name = "signature"
-version = "2.1.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500"
+checksum = "f054c6c1a6e95179d6f23ed974060dcefb2d9388bb7256900badad682c499de4"
 dependencies = [
- "digest 0.10.7",
- "rand_core 0.6.4",
+ "digest 0.10.3",
+ "rand_core 0.6.3",
 ]
 
 [[package]]
@@ -1395,9 +1391,9 @@ checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
 
 [[package]]
 name = "spki"
-version = "0.7.2"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a"
+checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b"
 dependencies = [
  "base64ct",
  "der",
diff --git a/contracts/ibc-reflect-send/Cargo.lock b/contracts/ibc-reflect-send/Cargo.lock
index e9dd223ca..d9ac52237 100644
--- a/contracts/ibc-reflect-send/Cargo.lock
+++ b/contracts/ibc-reflect-send/Cargo.lock
@@ -57,9 +57,9 @@ dependencies = [
 
 [[package]]
 name = "base16ct"
-version = "0.2.0"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
+checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce"
 
 [[package]]
 name = "base64"
@@ -163,9 +163,9 @@ checksum = "591ff76ca0691bd91c1b0b5b987e5cf93b21ec810ad96665c5a569c60846dd93"
 
 [[package]]
 name = "const-oid"
-version = "0.9.4"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "795bc6e66a8e340f075fcf6227e417a2dc976b92b91f3cdc778bb858778b6747"
+checksum = "722e23542a15cea1f65d4a1419c4cfd7a26706c70871a13a04238ca3f40f1661"
 
 [[package]]
 name = "corosensei"
@@ -184,10 +184,10 @@ dependencies = [
 name = "cosmwasm-crypto"
 version = "1.3.1"
 dependencies = [
- "digest 0.10.7",
+ "digest 0.10.3",
  "ed25519-zebra",
  "k256",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "thiserror",
 ]
 
@@ -415,12 +415,12 @@ dependencies = [
 
 [[package]]
 name = "crypto-bigint"
-version = "0.5.2"
+version = "0.4.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15"
+checksum = "9f2b443d17d49dad5ef0ede301c3179cc923b8822f3393b4d2c28c269dd4a122"
 dependencies = [
  "generic-array",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
  "zeroize",
 ]
@@ -498,9 +498,9 @@ dependencies = [
 
 [[package]]
 name = "der"
-version = "0.7.7"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946"
+checksum = "13dd2ae565c0a381dde7fade45fce95984c568bdcb4700a4fdbe3175e0380b2f"
 dependencies = [
  "const-oid",
  "zeroize",
@@ -528,12 +528,11 @@ dependencies = [
 
 [[package]]
 name = "digest"
-version = "0.10.7"
+version = "0.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
 dependencies = [
  "block-buffer 0.10.2",
- "const-oid",
  "crypto-common",
  "subtle",
 ]
@@ -572,16 +571,14 @@ dependencies = [
 
 [[package]]
 name = "ecdsa"
-version = "0.16.8"
+version = "0.14.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4"
+checksum = "3bd46e0c364655e5baf2f5e99b603e7a09905da9966d7928d7470af393b28670"
 dependencies = [
  "der",
- "digest 0.10.7",
  "elliptic-curve",
  "rfc6979",
  "signature",
- "spki",
 ]
 
 [[package]]
@@ -592,7 +589,7 @@ checksum = "403ef3e961ab98f0ba902771d29f842058578bb1ce7e3c59dad5a6a93e784c69"
 dependencies = [
  "curve25519-dalek",
  "hex",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "serde",
  "sha2 0.9.5",
  "thiserror",
@@ -607,18 +604,19 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
 
 [[package]]
 name = "elliptic-curve"
-version = "0.13.5"
+version = "0.12.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b"
+checksum = "c47abd0a791d2ac0c7aa1118715f85b83689e4522c4e3a244e159d4fc9848a8d"
 dependencies = [
  "base16ct",
  "crypto-bigint",
- "digest 0.10.7",
+ "der",
+ "digest 0.10.3",
  "ff",
  "generic-array",
  "group",
  "pkcs8",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "sec1",
  "subtle",
  "zeroize",
@@ -673,11 +671,11 @@ checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
 
 [[package]]
 name = "ff"
-version = "0.13.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
+checksum = "df689201f395c6b90dfe87127685f8dbfc083a5e779e613575d8bd7314300c3e"
 dependencies = [
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
 ]
 
@@ -713,13 +711,12 @@ dependencies = [
 
 [[package]]
 name = "generic-array"
-version = "0.14.7"
+version = "0.14.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817"
 dependencies = [
  "typenum",
  "version_check",
- "zeroize",
 ]
 
 [[package]]
@@ -763,12 +760,12 @@ dependencies = [
 
 [[package]]
 name = "group"
-version = "0.13.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
+checksum = "7391856def869c1c81063a03457c676fbcd419709c3dfb33d8d319de484b154d"
 dependencies = [
  "ff",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
 ]
 
@@ -802,7 +799,7 @@ version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
 dependencies = [
- "digest 0.10.7",
+ "digest 0.10.3",
 ]
 
 [[package]]
@@ -859,16 +856,14 @@ dependencies = [
 
 [[package]]
 name = "k256"
-version = "0.13.1"
+version = "0.11.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc"
+checksum = "2c8a5a96d92d849c4499d99461da81c9cdc1467418a8ed2aaeb407e8d85940ed"
 dependencies = [
  "cfg-if",
  "ecdsa",
  "elliptic-curve",
- "once_cell",
  "sha2 0.10.3",
- "signature",
 ]
 
 [[package]]
@@ -1024,9 +1019,9 @@ checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443"
 
 [[package]]
 name = "pkcs8"
-version = "0.10.2"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
+checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba"
 dependencies = [
  "der",
  "spki",
@@ -1105,9 +1100,9 @@ dependencies = [
 
 [[package]]
 name = "rand_core"
-version = "0.6.4"
+version = "0.6.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
 dependencies = [
  "getrandom 0.2.3",
 ]
@@ -1181,12 +1176,13 @@ dependencies = [
 
 [[package]]
 name = "rfc6979"
-version = "0.4.0"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2"
+checksum = "88c86280f057430a52f4861551b092a01b419b8eacefc7c995eacb9dc132fe32"
 dependencies = [
+ "crypto-bigint",
  "hmac",
- "subtle",
+ "zeroize",
 ]
 
 [[package]]
@@ -1265,9 +1261,9 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b"
 
 [[package]]
 name = "sec1"
-version = "0.7.3"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc"
+checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928"
 dependencies = [
  "base16ct",
  "der",
@@ -1360,17 +1356,17 @@ checksum = "899bf02746a2c92bf1053d9327dadb252b01af1f81f90cdb902411f518bc7215"
 dependencies = [
  "cfg-if",
  "cpufeatures 0.2.2",
- "digest 0.10.7",
+ "digest 0.10.3",
 ]
 
 [[package]]
 name = "signature"
-version = "2.1.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500"
+checksum = "f054c6c1a6e95179d6f23ed974060dcefb2d9388bb7256900badad682c499de4"
 dependencies = [
- "digest 0.10.7",
- "rand_core 0.6.4",
+ "digest 0.10.3",
+ "rand_core 0.6.3",
 ]
 
 [[package]]
@@ -1393,9 +1389,9 @@ checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
 
 [[package]]
 name = "spki"
-version = "0.7.2"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a"
+checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b"
 dependencies = [
  "base64ct",
  "der",
diff --git a/contracts/ibc-reflect/Cargo.lock b/contracts/ibc-reflect/Cargo.lock
index 3c3499416..013c20bb9 100644
--- a/contracts/ibc-reflect/Cargo.lock
+++ b/contracts/ibc-reflect/Cargo.lock
@@ -57,9 +57,9 @@ dependencies = [
 
 [[package]]
 name = "base16ct"
-version = "0.2.0"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
+checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce"
 
 [[package]]
 name = "base64"
@@ -163,9 +163,9 @@ checksum = "591ff76ca0691bd91c1b0b5b987e5cf93b21ec810ad96665c5a569c60846dd93"
 
 [[package]]
 name = "const-oid"
-version = "0.9.4"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "795bc6e66a8e340f075fcf6227e417a2dc976b92b91f3cdc778bb858778b6747"
+checksum = "722e23542a15cea1f65d4a1419c4cfd7a26706c70871a13a04238ca3f40f1661"
 
 [[package]]
 name = "corosensei"
@@ -184,10 +184,10 @@ dependencies = [
 name = "cosmwasm-crypto"
 version = "1.3.1"
 dependencies = [
- "digest 0.10.7",
+ "digest 0.10.3",
  "ed25519-zebra",
  "k256",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "thiserror",
 ]
 
@@ -415,12 +415,12 @@ dependencies = [
 
 [[package]]
 name = "crypto-bigint"
-version = "0.5.2"
+version = "0.4.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15"
+checksum = "9f2b443d17d49dad5ef0ede301c3179cc923b8822f3393b4d2c28c269dd4a122"
 dependencies = [
  "generic-array",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
  "zeroize",
 ]
@@ -498,9 +498,9 @@ dependencies = [
 
 [[package]]
 name = "der"
-version = "0.7.7"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946"
+checksum = "13dd2ae565c0a381dde7fade45fce95984c568bdcb4700a4fdbe3175e0380b2f"
 dependencies = [
  "const-oid",
  "zeroize",
@@ -528,12 +528,11 @@ dependencies = [
 
 [[package]]
 name = "digest"
-version = "0.10.7"
+version = "0.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
 dependencies = [
  "block-buffer 0.10.2",
- "const-oid",
  "crypto-common",
  "subtle",
 ]
@@ -572,16 +571,14 @@ dependencies = [
 
 [[package]]
 name = "ecdsa"
-version = "0.16.8"
+version = "0.14.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4"
+checksum = "3bd46e0c364655e5baf2f5e99b603e7a09905da9966d7928d7470af393b28670"
 dependencies = [
  "der",
- "digest 0.10.7",
  "elliptic-curve",
  "rfc6979",
  "signature",
- "spki",
 ]
 
 [[package]]
@@ -592,7 +589,7 @@ checksum = "403ef3e961ab98f0ba902771d29f842058578bb1ce7e3c59dad5a6a93e784c69"
 dependencies = [
  "curve25519-dalek",
  "hex",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "serde",
  "sha2 0.9.5",
  "thiserror",
@@ -607,18 +604,19 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
 
 [[package]]
 name = "elliptic-curve"
-version = "0.13.5"
+version = "0.12.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b"
+checksum = "c47abd0a791d2ac0c7aa1118715f85b83689e4522c4e3a244e159d4fc9848a8d"
 dependencies = [
  "base16ct",
  "crypto-bigint",
- "digest 0.10.7",
+ "der",
+ "digest 0.10.3",
  "ff",
  "generic-array",
  "group",
  "pkcs8",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "sec1",
  "subtle",
  "zeroize",
@@ -673,11 +671,11 @@ checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
 
 [[package]]
 name = "ff"
-version = "0.13.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
+checksum = "df689201f395c6b90dfe87127685f8dbfc083a5e779e613575d8bd7314300c3e"
 dependencies = [
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
 ]
 
@@ -713,13 +711,12 @@ dependencies = [
 
 [[package]]
 name = "generic-array"
-version = "0.14.7"
+version = "0.14.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817"
 dependencies = [
  "typenum",
  "version_check",
- "zeroize",
 ]
 
 [[package]]
@@ -763,12 +760,12 @@ dependencies = [
 
 [[package]]
 name = "group"
-version = "0.13.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
+checksum = "7391856def869c1c81063a03457c676fbcd419709c3dfb33d8d319de484b154d"
 dependencies = [
  "ff",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
 ]
 
@@ -802,7 +799,7 @@ version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
 dependencies = [
- "digest 0.10.7",
+ "digest 0.10.3",
 ]
 
 [[package]]
@@ -859,16 +856,14 @@ dependencies = [
 
 [[package]]
 name = "k256"
-version = "0.13.1"
+version = "0.11.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc"
+checksum = "2c8a5a96d92d849c4499d99461da81c9cdc1467418a8ed2aaeb407e8d85940ed"
 dependencies = [
  "cfg-if",
  "ecdsa",
  "elliptic-curve",
- "once_cell",
  "sha2 0.10.3",
- "signature",
 ]
 
 [[package]]
@@ -1024,9 +1019,9 @@ checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443"
 
 [[package]]
 name = "pkcs8"
-version = "0.10.2"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
+checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba"
 dependencies = [
  "der",
  "spki",
@@ -1105,9 +1100,9 @@ dependencies = [
 
 [[package]]
 name = "rand_core"
-version = "0.6.4"
+version = "0.6.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
 dependencies = [
  "getrandom 0.2.3",
 ]
@@ -1181,12 +1176,13 @@ dependencies = [
 
 [[package]]
 name = "rfc6979"
-version = "0.4.0"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2"
+checksum = "88c86280f057430a52f4861551b092a01b419b8eacefc7c995eacb9dc132fe32"
 dependencies = [
+ "crypto-bigint",
  "hmac",
- "subtle",
+ "zeroize",
 ]
 
 [[package]]
@@ -1265,9 +1261,9 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b"
 
 [[package]]
 name = "sec1"
-version = "0.7.3"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc"
+checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928"
 dependencies = [
  "base16ct",
  "der",
@@ -1360,17 +1356,17 @@ checksum = "899bf02746a2c92bf1053d9327dadb252b01af1f81f90cdb902411f518bc7215"
 dependencies = [
  "cfg-if",
  "cpufeatures 0.2.2",
- "digest 0.10.7",
+ "digest 0.10.3",
 ]
 
 [[package]]
 name = "signature"
-version = "2.1.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500"
+checksum = "f054c6c1a6e95179d6f23ed974060dcefb2d9388bb7256900badad682c499de4"
 dependencies = [
- "digest 0.10.7",
- "rand_core 0.6.4",
+ "digest 0.10.3",
+ "rand_core 0.6.3",
 ]
 
 [[package]]
@@ -1393,9 +1389,9 @@ checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
 
 [[package]]
 name = "spki"
-version = "0.7.2"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a"
+checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b"
 dependencies = [
  "base64ct",
  "der",
diff --git a/contracts/queue/Cargo.lock b/contracts/queue/Cargo.lock
index 19deeaa35..0d496d4ed 100644
--- a/contracts/queue/Cargo.lock
+++ b/contracts/queue/Cargo.lock
@@ -57,9 +57,9 @@ dependencies = [
 
 [[package]]
 name = "base16ct"
-version = "0.2.0"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
+checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce"
 
 [[package]]
 name = "base64"
@@ -163,9 +163,9 @@ checksum = "591ff76ca0691bd91c1b0b5b987e5cf93b21ec810ad96665c5a569c60846dd93"
 
 [[package]]
 name = "const-oid"
-version = "0.9.4"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "795bc6e66a8e340f075fcf6227e417a2dc976b92b91f3cdc778bb858778b6747"
+checksum = "722e23542a15cea1f65d4a1419c4cfd7a26706c70871a13a04238ca3f40f1661"
 
 [[package]]
 name = "corosensei"
@@ -184,10 +184,10 @@ dependencies = [
 name = "cosmwasm-crypto"
 version = "1.3.1"
 dependencies = [
- "digest 0.10.7",
+ "digest 0.10.3",
  "ed25519-zebra",
  "k256",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "thiserror",
 ]
 
@@ -415,12 +415,12 @@ dependencies = [
 
 [[package]]
 name = "crypto-bigint"
-version = "0.5.2"
+version = "0.4.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15"
+checksum = "9f2b443d17d49dad5ef0ede301c3179cc923b8822f3393b4d2c28c269dd4a122"
 dependencies = [
  "generic-array",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
  "zeroize",
 ]
@@ -498,9 +498,9 @@ dependencies = [
 
 [[package]]
 name = "der"
-version = "0.7.7"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946"
+checksum = "13dd2ae565c0a381dde7fade45fce95984c568bdcb4700a4fdbe3175e0380b2f"
 dependencies = [
  "const-oid",
  "zeroize",
@@ -528,12 +528,11 @@ dependencies = [
 
 [[package]]
 name = "digest"
-version = "0.10.7"
+version = "0.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
 dependencies = [
  "block-buffer 0.10.2",
- "const-oid",
  "crypto-common",
  "subtle",
 ]
@@ -572,16 +571,14 @@ dependencies = [
 
 [[package]]
 name = "ecdsa"
-version = "0.16.8"
+version = "0.14.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4"
+checksum = "3bd46e0c364655e5baf2f5e99b603e7a09905da9966d7928d7470af393b28670"
 dependencies = [
  "der",
- "digest 0.10.7",
  "elliptic-curve",
  "rfc6979",
  "signature",
- "spki",
 ]
 
 [[package]]
@@ -592,7 +589,7 @@ checksum = "403ef3e961ab98f0ba902771d29f842058578bb1ce7e3c59dad5a6a93e784c69"
 dependencies = [
  "curve25519-dalek",
  "hex",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "serde",
  "sha2 0.9.5",
  "thiserror",
@@ -607,18 +604,19 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
 
 [[package]]
 name = "elliptic-curve"
-version = "0.13.5"
+version = "0.12.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b"
+checksum = "c47abd0a791d2ac0c7aa1118715f85b83689e4522c4e3a244e159d4fc9848a8d"
 dependencies = [
  "base16ct",
  "crypto-bigint",
- "digest 0.10.7",
+ "der",
+ "digest 0.10.3",
  "ff",
  "generic-array",
  "group",
  "pkcs8",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "sec1",
  "subtle",
  "zeroize",
@@ -673,11 +671,11 @@ checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
 
 [[package]]
 name = "ff"
-version = "0.13.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
+checksum = "df689201f395c6b90dfe87127685f8dbfc083a5e779e613575d8bd7314300c3e"
 dependencies = [
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
 ]
 
@@ -713,13 +711,12 @@ dependencies = [
 
 [[package]]
 name = "generic-array"
-version = "0.14.7"
+version = "0.14.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817"
 dependencies = [
  "typenum",
  "version_check",
- "zeroize",
 ]
 
 [[package]]
@@ -763,12 +760,12 @@ dependencies = [
 
 [[package]]
 name = "group"
-version = "0.13.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
+checksum = "7391856def869c1c81063a03457c676fbcd419709c3dfb33d8d319de484b154d"
 dependencies = [
  "ff",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
 ]
 
@@ -802,7 +799,7 @@ version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
 dependencies = [
- "digest 0.10.7",
+ "digest 0.10.3",
 ]
 
 [[package]]
@@ -848,16 +845,14 @@ dependencies = [
 
 [[package]]
 name = "k256"
-version = "0.13.1"
+version = "0.11.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc"
+checksum = "2c8a5a96d92d849c4499d99461da81c9cdc1467418a8ed2aaeb407e8d85940ed"
 dependencies = [
  "cfg-if",
  "ecdsa",
  "elliptic-curve",
- "once_cell",
  "sha2 0.10.3",
- "signature",
 ]
 
 [[package]]
@@ -1013,9 +1008,9 @@ checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443"
 
 [[package]]
 name = "pkcs8"
-version = "0.10.2"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
+checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba"
 dependencies = [
  "der",
  "spki",
@@ -1105,9 +1100,9 @@ dependencies = [
 
 [[package]]
 name = "rand_core"
-version = "0.6.4"
+version = "0.6.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
 dependencies = [
  "getrandom 0.2.3",
 ]
@@ -1181,12 +1176,13 @@ dependencies = [
 
 [[package]]
 name = "rfc6979"
-version = "0.4.0"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2"
+checksum = "88c86280f057430a52f4861551b092a01b419b8eacefc7c995eacb9dc132fe32"
 dependencies = [
+ "crypto-bigint",
  "hmac",
- "subtle",
+ "zeroize",
 ]
 
 [[package]]
@@ -1265,9 +1261,9 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b"
 
 [[package]]
 name = "sec1"
-version = "0.7.3"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc"
+checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928"
 dependencies = [
  "base16ct",
  "der",
@@ -1360,17 +1356,17 @@ checksum = "899bf02746a2c92bf1053d9327dadb252b01af1f81f90cdb902411f518bc7215"
 dependencies = [
  "cfg-if",
  "cpufeatures 0.2.2",
- "digest 0.10.7",
+ "digest 0.10.3",
 ]
 
 [[package]]
 name = "signature"
-version = "2.1.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500"
+checksum = "f054c6c1a6e95179d6f23ed974060dcefb2d9388bb7256900badad682c499de4"
 dependencies = [
- "digest 0.10.7",
- "rand_core 0.6.4",
+ "digest 0.10.3",
+ "rand_core 0.6.3",
 ]
 
 [[package]]
@@ -1393,9 +1389,9 @@ checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
 
 [[package]]
 name = "spki"
-version = "0.7.2"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a"
+checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b"
 dependencies = [
  "base64ct",
  "der",
diff --git a/contracts/reflect/Cargo.lock b/contracts/reflect/Cargo.lock
index b7c980313..254fd7ce3 100644
--- a/contracts/reflect/Cargo.lock
+++ b/contracts/reflect/Cargo.lock
@@ -57,9 +57,9 @@ dependencies = [
 
 [[package]]
 name = "base16ct"
-version = "0.2.0"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
+checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce"
 
 [[package]]
 name = "base64"
@@ -163,9 +163,9 @@ checksum = "591ff76ca0691bd91c1b0b5b987e5cf93b21ec810ad96665c5a569c60846dd93"
 
 [[package]]
 name = "const-oid"
-version = "0.9.4"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "795bc6e66a8e340f075fcf6227e417a2dc976b92b91f3cdc778bb858778b6747"
+checksum = "722e23542a15cea1f65d4a1419c4cfd7a26706c70871a13a04238ca3f40f1661"
 
 [[package]]
 name = "corosensei"
@@ -184,10 +184,10 @@ dependencies = [
 name = "cosmwasm-crypto"
 version = "1.3.1"
 dependencies = [
- "digest 0.10.7",
+ "digest 0.10.3",
  "ed25519-zebra",
  "k256",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "thiserror",
 ]
 
@@ -415,12 +415,12 @@ dependencies = [
 
 [[package]]
 name = "crypto-bigint"
-version = "0.5.2"
+version = "0.4.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15"
+checksum = "9f2b443d17d49dad5ef0ede301c3179cc923b8822f3393b4d2c28c269dd4a122"
 dependencies = [
  "generic-array",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
  "zeroize",
 ]
@@ -498,9 +498,9 @@ dependencies = [
 
 [[package]]
 name = "der"
-version = "0.7.7"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946"
+checksum = "13dd2ae565c0a381dde7fade45fce95984c568bdcb4700a4fdbe3175e0380b2f"
 dependencies = [
  "const-oid",
  "zeroize",
@@ -528,12 +528,11 @@ dependencies = [
 
 [[package]]
 name = "digest"
-version = "0.10.7"
+version = "0.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
 dependencies = [
  "block-buffer 0.10.2",
- "const-oid",
  "crypto-common",
  "subtle",
 ]
@@ -572,16 +571,14 @@ dependencies = [
 
 [[package]]
 name = "ecdsa"
-version = "0.16.8"
+version = "0.14.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4"
+checksum = "3bd46e0c364655e5baf2f5e99b603e7a09905da9966d7928d7470af393b28670"
 dependencies = [
  "der",
- "digest 0.10.7",
  "elliptic-curve",
  "rfc6979",
  "signature",
- "spki",
 ]
 
 [[package]]
@@ -592,7 +589,7 @@ checksum = "403ef3e961ab98f0ba902771d29f842058578bb1ce7e3c59dad5a6a93e784c69"
 dependencies = [
  "curve25519-dalek",
  "hex",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "serde",
  "sha2 0.9.5",
  "thiserror",
@@ -607,18 +604,19 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
 
 [[package]]
 name = "elliptic-curve"
-version = "0.13.5"
+version = "0.12.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b"
+checksum = "c47abd0a791d2ac0c7aa1118715f85b83689e4522c4e3a244e159d4fc9848a8d"
 dependencies = [
  "base16ct",
  "crypto-bigint",
- "digest 0.10.7",
+ "der",
+ "digest 0.10.3",
  "ff",
  "generic-array",
  "group",
  "pkcs8",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "sec1",
  "subtle",
  "zeroize",
@@ -673,11 +671,11 @@ checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
 
 [[package]]
 name = "ff"
-version = "0.13.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
+checksum = "df689201f395c6b90dfe87127685f8dbfc083a5e779e613575d8bd7314300c3e"
 dependencies = [
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
 ]
 
@@ -713,13 +711,12 @@ dependencies = [
 
 [[package]]
 name = "generic-array"
-version = "0.14.7"
+version = "0.14.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817"
 dependencies = [
  "typenum",
  "version_check",
- "zeroize",
 ]
 
 [[package]]
@@ -763,12 +760,12 @@ dependencies = [
 
 [[package]]
 name = "group"
-version = "0.13.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
+checksum = "7391856def869c1c81063a03457c676fbcd419709c3dfb33d8d319de484b154d"
 dependencies = [
  "ff",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
 ]
 
@@ -802,7 +799,7 @@ version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
 dependencies = [
- "digest 0.10.7",
+ "digest 0.10.3",
 ]
 
 [[package]]
@@ -848,16 +845,14 @@ dependencies = [
 
 [[package]]
 name = "k256"
-version = "0.13.1"
+version = "0.11.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc"
+checksum = "2c8a5a96d92d849c4499d99461da81c9cdc1467418a8ed2aaeb407e8d85940ed"
 dependencies = [
  "cfg-if",
  "ecdsa",
  "elliptic-curve",
- "once_cell",
  "sha2 0.10.3",
- "signature",
 ]
 
 [[package]]
@@ -1013,9 +1008,9 @@ checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443"
 
 [[package]]
 name = "pkcs8"
-version = "0.10.2"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
+checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba"
 dependencies = [
  "der",
  "spki",
@@ -1094,9 +1089,9 @@ dependencies = [
 
 [[package]]
 name = "rand_core"
-version = "0.6.4"
+version = "0.6.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
 dependencies = [
  "getrandom 0.2.3",
 ]
@@ -1182,12 +1177,13 @@ dependencies = [
 
 [[package]]
 name = "rfc6979"
-version = "0.4.0"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2"
+checksum = "88c86280f057430a52f4861551b092a01b419b8eacefc7c995eacb9dc132fe32"
 dependencies = [
+ "crypto-bigint",
  "hmac",
- "subtle",
+ "zeroize",
 ]
 
 [[package]]
@@ -1266,9 +1262,9 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b"
 
 [[package]]
 name = "sec1"
-version = "0.7.3"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc"
+checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928"
 dependencies = [
  "base16ct",
  "der",
@@ -1361,17 +1357,17 @@ checksum = "899bf02746a2c92bf1053d9327dadb252b01af1f81f90cdb902411f518bc7215"
 dependencies = [
  "cfg-if",
  "cpufeatures 0.2.2",
- "digest 0.10.7",
+ "digest 0.10.3",
 ]
 
 [[package]]
 name = "signature"
-version = "2.1.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500"
+checksum = "f054c6c1a6e95179d6f23ed974060dcefb2d9388bb7256900badad682c499de4"
 dependencies = [
- "digest 0.10.7",
- "rand_core 0.6.4",
+ "digest 0.10.3",
+ "rand_core 0.6.3",
 ]
 
 [[package]]
@@ -1394,9 +1390,9 @@ checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
 
 [[package]]
 name = "spki"
-version = "0.7.2"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a"
+checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b"
 dependencies = [
  "base64ct",
  "der",
diff --git a/contracts/staking/Cargo.lock b/contracts/staking/Cargo.lock
index b7a24d316..f15f15c87 100644
--- a/contracts/staking/Cargo.lock
+++ b/contracts/staking/Cargo.lock
@@ -57,9 +57,9 @@ dependencies = [
 
 [[package]]
 name = "base16ct"
-version = "0.2.0"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
+checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce"
 
 [[package]]
 name = "base64"
@@ -163,9 +163,9 @@ checksum = "591ff76ca0691bd91c1b0b5b987e5cf93b21ec810ad96665c5a569c60846dd93"
 
 [[package]]
 name = "const-oid"
-version = "0.9.4"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "795bc6e66a8e340f075fcf6227e417a2dc976b92b91f3cdc778bb858778b6747"
+checksum = "722e23542a15cea1f65d4a1419c4cfd7a26706c70871a13a04238ca3f40f1661"
 
 [[package]]
 name = "corosensei"
@@ -184,10 +184,10 @@ dependencies = [
 name = "cosmwasm-crypto"
 version = "1.3.1"
 dependencies = [
- "digest 0.10.7",
+ "digest 0.10.3",
  "ed25519-zebra",
  "k256",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "thiserror",
 ]
 
@@ -415,12 +415,12 @@ dependencies = [
 
 [[package]]
 name = "crypto-bigint"
-version = "0.5.2"
+version = "0.4.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15"
+checksum = "9f2b443d17d49dad5ef0ede301c3179cc923b8822f3393b4d2c28c269dd4a122"
 dependencies = [
  "generic-array",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
  "zeroize",
 ]
@@ -498,9 +498,9 @@ dependencies = [
 
 [[package]]
 name = "der"
-version = "0.7.7"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946"
+checksum = "13dd2ae565c0a381dde7fade45fce95984c568bdcb4700a4fdbe3175e0380b2f"
 dependencies = [
  "const-oid",
  "zeroize",
@@ -528,12 +528,11 @@ dependencies = [
 
 [[package]]
 name = "digest"
-version = "0.10.7"
+version = "0.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
 dependencies = [
  "block-buffer 0.10.2",
- "const-oid",
  "crypto-common",
  "subtle",
 ]
@@ -578,16 +577,14 @@ dependencies = [
 
 [[package]]
 name = "ecdsa"
-version = "0.16.8"
+version = "0.14.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4"
+checksum = "3bd46e0c364655e5baf2f5e99b603e7a09905da9966d7928d7470af393b28670"
 dependencies = [
  "der",
- "digest 0.10.7",
  "elliptic-curve",
  "rfc6979",
  "signature",
- "spki",
 ]
 
 [[package]]
@@ -598,7 +595,7 @@ checksum = "403ef3e961ab98f0ba902771d29f842058578bb1ce7e3c59dad5a6a93e784c69"
 dependencies = [
  "curve25519-dalek",
  "hex",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "serde",
  "sha2 0.9.5",
  "thiserror",
@@ -613,18 +610,19 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
 
 [[package]]
 name = "elliptic-curve"
-version = "0.13.5"
+version = "0.12.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b"
+checksum = "c47abd0a791d2ac0c7aa1118715f85b83689e4522c4e3a244e159d4fc9848a8d"
 dependencies = [
  "base16ct",
  "crypto-bigint",
- "digest 0.10.7",
+ "der",
+ "digest 0.10.3",
  "ff",
  "generic-array",
  "group",
  "pkcs8",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "sec1",
  "subtle",
  "zeroize",
@@ -679,11 +677,11 @@ checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
 
 [[package]]
 name = "ff"
-version = "0.13.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
+checksum = "df689201f395c6b90dfe87127685f8dbfc083a5e779e613575d8bd7314300c3e"
 dependencies = [
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
 ]
 
@@ -719,13 +717,12 @@ dependencies = [
 
 [[package]]
 name = "generic-array"
-version = "0.14.7"
+version = "0.14.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817"
 dependencies = [
  "typenum",
  "version_check",
- "zeroize",
 ]
 
 [[package]]
@@ -769,12 +766,12 @@ dependencies = [
 
 [[package]]
 name = "group"
-version = "0.13.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
+checksum = "7391856def869c1c81063a03457c676fbcd419709c3dfb33d8d319de484b154d"
 dependencies = [
  "ff",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
 ]
 
@@ -808,7 +805,7 @@ version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
 dependencies = [
- "digest 0.10.7",
+ "digest 0.10.3",
 ]
 
 [[package]]
@@ -854,16 +851,14 @@ dependencies = [
 
 [[package]]
 name = "k256"
-version = "0.13.1"
+version = "0.11.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc"
+checksum = "2c8a5a96d92d849c4499d99461da81c9cdc1467418a8ed2aaeb407e8d85940ed"
 dependencies = [
  "cfg-if",
  "ecdsa",
  "elliptic-curve",
- "once_cell",
  "sha2 0.10.3",
- "signature",
 ]
 
 [[package]]
@@ -1019,9 +1014,9 @@ checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443"
 
 [[package]]
 name = "pkcs8"
-version = "0.10.2"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
+checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba"
 dependencies = [
  "der",
  "spki",
@@ -1100,9 +1095,9 @@ dependencies = [
 
 [[package]]
 name = "rand_core"
-version = "0.6.4"
+version = "0.6.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
 dependencies = [
  "getrandom 0.2.3",
 ]
@@ -1176,12 +1171,13 @@ dependencies = [
 
 [[package]]
 name = "rfc6979"
-version = "0.4.0"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2"
+checksum = "88c86280f057430a52f4861551b092a01b419b8eacefc7c995eacb9dc132fe32"
 dependencies = [
+ "crypto-bigint",
  "hmac",
- "subtle",
+ "zeroize",
 ]
 
 [[package]]
@@ -1260,9 +1256,9 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b"
 
 [[package]]
 name = "sec1"
-version = "0.7.3"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc"
+checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928"
 dependencies = [
  "base16ct",
  "der",
@@ -1355,17 +1351,17 @@ checksum = "899bf02746a2c92bf1053d9327dadb252b01af1f81f90cdb902411f518bc7215"
 dependencies = [
  "cfg-if",
  "cpufeatures 0.2.2",
- "digest 0.10.7",
+ "digest 0.10.3",
 ]
 
 [[package]]
 name = "signature"
-version = "2.1.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500"
+checksum = "f054c6c1a6e95179d6f23ed974060dcefb2d9388bb7256900badad682c499de4"
 dependencies = [
- "digest 0.10.7",
- "rand_core 0.6.4",
+ "digest 0.10.3",
+ "rand_core 0.6.3",
 ]
 
 [[package]]
@@ -1409,9 +1405,9 @@ dependencies = [
 
 [[package]]
 name = "spki"
-version = "0.7.2"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a"
+checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b"
 dependencies = [
  "base64ct",
  "der",
diff --git a/contracts/virus/Cargo.lock b/contracts/virus/Cargo.lock
index eefca37c5..18f94c037 100644
--- a/contracts/virus/Cargo.lock
+++ b/contracts/virus/Cargo.lock
@@ -57,9 +57,9 @@ dependencies = [
 
 [[package]]
 name = "base16ct"
-version = "0.2.0"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
+checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce"
 
 [[package]]
 name = "base64"
@@ -163,9 +163,9 @@ checksum = "591ff76ca0691bd91c1b0b5b987e5cf93b21ec810ad96665c5a569c60846dd93"
 
 [[package]]
 name = "const-oid"
-version = "0.9.4"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "795bc6e66a8e340f075fcf6227e417a2dc976b92b91f3cdc778bb858778b6747"
+checksum = "722e23542a15cea1f65d4a1419c4cfd7a26706c70871a13a04238ca3f40f1661"
 
 [[package]]
 name = "corosensei"
@@ -184,10 +184,10 @@ dependencies = [
 name = "cosmwasm-crypto"
 version = "1.3.1"
 dependencies = [
- "digest 0.10.7",
+ "digest 0.10.3",
  "ed25519-zebra",
  "k256",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "thiserror",
 ]
 
@@ -415,12 +415,12 @@ dependencies = [
 
 [[package]]
 name = "crypto-bigint"
-version = "0.5.2"
+version = "0.4.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15"
+checksum = "9f2b443d17d49dad5ef0ede301c3179cc923b8822f3393b4d2c28c269dd4a122"
 dependencies = [
  "generic-array",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
  "zeroize",
 ]
@@ -498,9 +498,9 @@ dependencies = [
 
 [[package]]
 name = "der"
-version = "0.7.7"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946"
+checksum = "13dd2ae565c0a381dde7fade45fce95984c568bdcb4700a4fdbe3175e0380b2f"
 dependencies = [
  "const-oid",
  "zeroize",
@@ -528,12 +528,11 @@ dependencies = [
 
 [[package]]
 name = "digest"
-version = "0.10.7"
+version = "0.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
 dependencies = [
  "block-buffer 0.10.2",
- "const-oid",
  "crypto-common",
  "subtle",
 ]
@@ -572,16 +571,14 @@ dependencies = [
 
 [[package]]
 name = "ecdsa"
-version = "0.16.8"
+version = "0.14.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4"
+checksum = "3bd46e0c364655e5baf2f5e99b603e7a09905da9966d7928d7470af393b28670"
 dependencies = [
  "der",
- "digest 0.10.7",
  "elliptic-curve",
  "rfc6979",
  "signature",
- "spki",
 ]
 
 [[package]]
@@ -592,7 +589,7 @@ checksum = "403ef3e961ab98f0ba902771d29f842058578bb1ce7e3c59dad5a6a93e784c69"
 dependencies = [
  "curve25519-dalek",
  "hex",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "serde",
  "sha2 0.9.5",
  "thiserror",
@@ -607,18 +604,19 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
 
 [[package]]
 name = "elliptic-curve"
-version = "0.13.5"
+version = "0.12.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b"
+checksum = "c47abd0a791d2ac0c7aa1118715f85b83689e4522c4e3a244e159d4fc9848a8d"
 dependencies = [
  "base16ct",
  "crypto-bigint",
- "digest 0.10.7",
+ "der",
+ "digest 0.10.3",
  "ff",
  "generic-array",
  "group",
  "pkcs8",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "sec1",
  "subtle",
  "zeroize",
@@ -673,11 +671,11 @@ checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
 
 [[package]]
 name = "ff"
-version = "0.13.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
+checksum = "df689201f395c6b90dfe87127685f8dbfc083a5e779e613575d8bd7314300c3e"
 dependencies = [
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
 ]
 
@@ -713,13 +711,12 @@ dependencies = [
 
 [[package]]
 name = "generic-array"
-version = "0.14.7"
+version = "0.14.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817"
 dependencies = [
  "typenum",
  "version_check",
- "zeroize",
 ]
 
 [[package]]
@@ -763,12 +760,12 @@ dependencies = [
 
 [[package]]
 name = "group"
-version = "0.13.0"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
+checksum = "7391856def869c1c81063a03457c676fbcd419709c3dfb33d8d319de484b154d"
 dependencies = [
  "ff",
- "rand_core 0.6.4",
+ "rand_core 0.6.3",
  "subtle",
 ]
 
@@ -802,7 +799,7 @@ version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
 dependencies = [
- "digest 0.10.7",
+ "digest 0.10.3",
 ]
 
 [[package]]
@@ -848,16 +845,14 @@ dependencies = [
 
 [[package]]
 name = "k256"
-version = "0.13.1"
+version = "0.11.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc"
+checksum = "2c8a5a96d92d849c4499d99461da81c9cdc1467418a8ed2aaeb407e8d85940ed"
 dependencies = [
  "cfg-if",
  "ecdsa",
  "elliptic-curve",
- "once_cell",
  "sha2 0.10.3",
- "signature",
 ]
 
 [[package]]
@@ -1013,9 +1008,9 @@ checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443"
 
 [[package]]
 name = "pkcs8"
-version = "0.10.2"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
+checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba"
 dependencies = [
  "der",
  "spki",
@@ -1094,9 +1089,9 @@ dependencies = [
 
 [[package]]
 name = "rand_core"
-version = "0.6.4"
+version = "0.6.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
 dependencies = [
  "getrandom 0.2.3",
 ]
@@ -1170,12 +1165,13 @@ dependencies = [
 
 [[package]]
 name = "rfc6979"
-version = "0.4.0"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2"
+checksum = "88c86280f057430a52f4861551b092a01b419b8eacefc7c995eacb9dc132fe32"
 dependencies = [
+ "crypto-bigint",
  "hmac",
- "subtle",
+ "zeroize",
 ]
 
 [[package]]
@@ -1254,9 +1250,9 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b"
 
 [[package]]
 name = "sec1"
-version = "0.7.3"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc"
+checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928"
 dependencies = [
  "base16ct",
  "der",
@@ -1349,17 +1345,17 @@ checksum = "899bf02746a2c92bf1053d9327dadb252b01af1f81f90cdb902411f518bc7215"
 dependencies = [
  "cfg-if",
  "cpufeatures 0.2.2",
- "digest 0.10.7",
+ "digest 0.10.3",
 ]
 
 [[package]]
 name = "signature"
-version = "2.1.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500"
+checksum = "f054c6c1a6e95179d6f23ed974060dcefb2d9388bb7256900badad682c499de4"
 dependencies = [
- "digest 0.10.7",
- "rand_core 0.6.4",
+ "digest 0.10.3",
+ "rand_core 0.6.3",
 ]
 
 [[package]]
@@ -1382,9 +1378,9 @@ checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
 
 [[package]]
 name = "spki"
-version = "0.7.2"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a"
+checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b"
 dependencies = [
  "base64ct",
  "der",
diff --git a/packages/crypto/Cargo.toml b/packages/crypto/Cargo.toml
index ca632e023..78a2e2069 100644
--- a/packages/crypto/Cargo.toml
+++ b/packages/crypto/Cargo.toml
@@ -19,7 +19,7 @@ backtraces = []
 bench = false
 
 [dependencies]
-k256 = { version = "0.13.1", features = ["ecdsa"] }
+k256 = { version = "0.11.1", features = ["ecdsa"] }
 ed25519-zebra = "3"
 digest = "0.10"
 rand_core = { version = "0.6", features = ["getrandom"] }
diff --git a/packages/crypto/benches/main.rs b/packages/crypto/benches/main.rs
index ce4b8d2eb..f3509cebf 100644
--- a/packages/crypto/benches/main.rs
+++ b/packages/crypto/benches/main.rs
@@ -8,6 +8,7 @@ use serde::Deserialize;
 // Crypto stuff
 use digest::Digest;
 use k256::ecdsa::SigningKey; // type alias
+use k256::elliptic_curve::sec1::ToEncodedPoint;
 use sha2::Sha256;
 
 use cosmwasm_crypto::{
@@ -94,7 +95,7 @@ fn bench_crypto(c: &mut Criterion) {
         let r_s = hex!("99e71a99cb2270b8cac5254f9e99b6210c6c10224a1579cf389ef88b20a1abe9129ff05af364204442bdb53ab6f18a99ab48acc9326fa689f228040429e3ca66");
         let recovery_param: u8 = 0;
 
-        let expected = SigningKey::from_bytes(&private_key.into())
+        let expected = SigningKey::from_bytes(&private_key)
             .unwrap()
             .verifying_key()
             .to_encoded_point(false)
diff --git a/packages/crypto/src/secp256k1.rs b/packages/crypto/src/secp256k1.rs
index d77f71181..0b57d507c 100644
--- a/packages/crypto/src/secp256k1.rs
+++ b/packages/crypto/src/secp256k1.rs
@@ -1,7 +1,9 @@
 use digest::{Digest, Update}; // trait
 use k256::{
-    ecdsa::signature::DigestVerifier,             // traits
-    ecdsa::{RecoveryId, Signature, VerifyingKey}, // type aliases
+    ecdsa::recoverable,
+    ecdsa::signature::{DigestVerifier, Signature as _}, // traits
+    ecdsa::{Signature, VerifyingKey},                   // type aliases
+    elliptic_curve::sec1::ToEncodedPoint,
 };
 
 use crate::errors::{CryptoError, CryptoResult};
@@ -50,8 +52,8 @@ pub fn secp256k1_verify(
     // Already hashed, just build Digest container
     let message_digest = Identity256::new().chain(message_hash);
 
-    let mut signature = Signature::from_bytes(&signature.into())
-        .map_err(|e| CryptoError::generic_err(e.to_string()))?;
+    let mut signature =
+        Signature::from_bytes(&signature).map_err(|e| CryptoError::generic_err(e.to_string()))?;
 
     // High-S signatures require normalization since our verification implementation
     // rejects them by default. If we had a verifier that does not restrict to
@@ -104,20 +106,19 @@ pub fn secp256k1_recover_pubkey(
     let message_hash = read_hash(message_hash)?;
     let signature = read_signature(signature)?;
 
-    // params other than 0 and 1 are explicitly not supported
-    let id = match recovery_param {
-        0 => RecoveryId::new(false, false),
-        1 => RecoveryId::new(true, false),
-        _ => return Err(CryptoError::invalid_recovery_param()),
-    };
+    let id =
+        recoverable::Id::new(recovery_param).map_err(|_| CryptoError::invalid_recovery_param())?;
 
     // Compose extended signature
-    let signature = Signature::from_bytes(&signature.into())
+    let signature =
+        Signature::from_bytes(&signature).map_err(|e| CryptoError::generic_err(e.to_string()))?;
+    let extended_signature = recoverable::Signature::new(&signature, id)
         .map_err(|e| CryptoError::generic_err(e.to_string()))?;
 
     // Recover
     let message_digest = Identity256::new().chain(message_hash);
-    let pubkey = VerifyingKey::recover_from_digest(message_digest, &signature, id)
+    let pubkey = extended_signature
+        .recover_verifying_key_from_digest(message_digest)
         .map_err(|e| CryptoError::generic_err(e.to_string()))?;
     let encoded: Vec<u8> = pubkey.to_encoded_point(false).as_bytes().into();
     Ok(encoded)
@@ -182,6 +183,7 @@ mod tests {
         ecdsa::signature::DigestSigner, // trait
         ecdsa::SigningKey,              // type alias
         elliptic_curve::rand_core::OsRng,
+        elliptic_curve::sec1::ToEncodedPoint,
     };
     use serde::Deserialize;
     use sha2::Sha256;
@@ -235,7 +237,7 @@ mod tests {
         // Verification (uncompressed public key)
         assert!(secp256k1_verify(
             &message_hash,
-            signature.to_bytes().as_slice(),
+            signature.as_bytes(),
             public_key.to_encoded_point(false).as_bytes()
         )
         .unwrap());
@@ -243,7 +245,7 @@ mod tests {
         // Verification (compressed public key)
         assert!(secp256k1_verify(
             &message_hash,
-            signature.to_bytes().as_slice(),
+            signature.as_bytes(),
             public_key.to_encoded_point(true).as_bytes()
         )
         .unwrap());
@@ -252,7 +254,7 @@ mod tests {
         let bad_message_hash = Sha256::new().chain(MSG).chain("\0").finalize();
         assert!(!secp256k1_verify(
             &bad_message_hash,
-            signature.to_bytes().as_slice(),
+            signature.as_bytes(),
             public_key.to_encoded_point(false).as_bytes()
         )
         .unwrap());
@@ -262,7 +264,7 @@ mod tests {
         let other_public_key = VerifyingKey::from(&other_secret_key);
         assert!(!secp256k1_verify(
             &message_hash,
-            signature.to_bytes().as_slice(),
+            signature.as_bytes(),
             other_public_key.to_encoded_point(false).as_bytes()
         )
         .unwrap());
@@ -328,7 +330,7 @@ mod tests {
         {
             let private_key =
                 hex!("3c9229289a6125f7fdf1885a77bb12c37a8d3b4962d936f7e3084dece32a3ca1");
-            let expected = SigningKey::from_bytes(&private_key.into())
+            let expected = SigningKey::from_bytes(&private_key)
                 .unwrap()
                 .verifying_key()
                 .to_encoded_point(false)
diff --git a/packages/go-gen/Cargo.toml b/packages/go-gen/Cargo.toml
new file mode 100644
index 000000000..89b1ae471
--- /dev/null
+++ b/packages/go-gen/Cargo.toml
@@ -0,0 +1,15 @@
+[package]
+name = "go-gen"
+authors = ["Christoph Otter <chris@confio.gmbh>"]
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+schemars = "0.8.3"
+cosmwasm-std = { path = "../std", version = "1.3.1", features = ["cosmwasm_1_3", "staking", "stargate", "ibc3"] }
+cosmwasm-schema = { path = "../schema", version = "1.3.1" }
+anyhow = "1"
+Inflector = "0.11.4"
+indenter = "0.3.3"
diff --git a/packages/go-gen/README.md b/packages/go-gen/README.md
new file mode 100644
index 000000000..07d242a15
--- /dev/null
+++ b/packages/go-gen/README.md
@@ -0,0 +1,21 @@
+# JsonSchema Go Type Generator
+
+This is an internal utility to generate Go types from `cosmwasm-std`'s query
+response types. These types can then be used in
+[wasmvm](https://github.com/CosmWasm/wasmvm).
+
+## Usage
+
+Adjust the query / response type you want to generate in `src/main.rs` and run:
+`cargo run -p go-gen`
+
+## Limitations
+
+Only basic structs and enums are supported. Tuples and enum variants with 0 or
+more than 1 parameters don't work, for example.
+
+## License
+
+This package is part of the cosmwasm repository, licensed under the Apache
+License 2.0 (see [NOTICE](https://github.com/CosmWasm/cosmwasm/blob/main/NOTICE)
+and [LICENSE](https://github.com/CosmWasm/cosmwasm/blob/main/LICENSE)).
diff --git a/packages/go-gen/src/go.rs b/packages/go-gen/src/go.rs
new file mode 100644
index 000000000..faead10df
--- /dev/null
+++ b/packages/go-gen/src/go.rs
@@ -0,0 +1,237 @@
+use std::fmt::{self, Display, Write};
+
+use indenter::indented;
+use inflector::Inflector;
+
+use crate::utils::replace_acronyms;
+
+pub struct GoStruct {
+    pub name: String,
+    pub docs: Option<String>,
+    pub fields: Vec<GoField>,
+}
+
+impl Display for GoStruct {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        // generate documentation
+        format_docs(f, self.docs.as_deref())?;
+        // generate type
+        writeln!(f, "type {} struct {{", self.name)?;
+        // generate fields
+        {
+            let mut f = indented(f);
+            for field in &self.fields {
+                writeln!(f, "{}", field)?;
+            }
+        }
+        f.write_char('}')?;
+        Ok(())
+    }
+}
+
+pub struct GoField {
+    /// The name of the field in Rust (snake_case)
+    pub rust_name: String,
+    /// The documentation of the field
+    pub docs: Option<String>,
+    /// The type of the field
+    pub ty: GoType,
+}
+
+impl Display for GoField {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        // documentation
+        format_docs(f, self.docs.as_deref())?;
+        // {field} {type} `json:"{field}"`
+        write!(
+            f,
+            "{} {} `json:\"{}",
+            replace_acronyms(self.rust_name.to_pascal_case()),
+            self.ty,
+            self.rust_name
+        )?;
+        if self.ty.is_nullable {
+            f.write_str(",omitempty")?;
+        }
+        f.write_str("\"`")
+    }
+}
+
+pub struct GoType {
+    /// The name of the type in Go
+    pub name: String,
+    /// Whether the type should be nullable
+    /// This will add `omitempty` to the json tag and use a pointer type if
+    /// the type is not a basic type
+    pub is_nullable: bool,
+}
+
+impl GoType {
+    pub fn is_basic_type(&self) -> bool {
+        const BASIC_GO_TYPES: &[&str] = &[
+            "string",
+            "bool",
+            "int",
+            "int8",
+            "int16",
+            "int32",
+            "int64",
+            "uint",
+            "uint8",
+            "uint16",
+            "uint32",
+            "uint64",
+            "float32",
+            "float64",
+            "byte",
+            "rune",
+            "uintptr",
+            "complex64",
+            "complex128",
+        ];
+        BASIC_GO_TYPES.contains(&&*self.name)
+    }
+}
+
+impl Display for GoType {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        if self.is_nullable && !self.is_basic_type() {
+            // if the type is nullable and not a basic type, use a pointer
+            f.write_char('*')?;
+        }
+        f.write_str(&self.name)
+    }
+}
+
+fn format_docs(f: &mut fmt::Formatter, docs: Option<&str>) -> fmt::Result {
+    if let Some(docs) = docs {
+        for line in docs.lines() {
+            f.write_str("// ")?;
+            f.write_str(line)?;
+            f.write_char('\n')?;
+        }
+    }
+    Ok(())
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn go_type_display_works() {
+        let ty = GoType {
+            name: "string".to_string(),
+            is_nullable: true,
+        };
+        let ty2 = GoType {
+            name: "string".to_string(),
+            is_nullable: false,
+        };
+        assert_eq!(format!("{}", ty), "string");
+        assert_eq!(format!("{}", ty2), "string");
+
+        let ty = GoType {
+            name: "FooBar".to_string(),
+            is_nullable: true,
+        };
+        assert_eq!(format!("{}", ty), "*FooBar");
+        let ty = GoType {
+            name: "FooBar".to_string(),
+            is_nullable: false,
+        };
+        assert_eq!(format!("{}", ty), "FooBar");
+    }
+
+    #[test]
+    fn go_field_display_works() {
+        let field = GoField {
+            rust_name: "foo_bar".to_string(),
+            docs: None,
+            ty: GoType {
+                name: "string".to_string(),
+                is_nullable: true,
+            },
+        };
+        assert_eq!(
+            format!("{}", field),
+            "FooBar string `json:\"foo_bar,omitempty\"`"
+        );
+
+        let field = GoField {
+            rust_name: "foo_bar".to_string(),
+            docs: None,
+            ty: GoType {
+                name: "string".to_string(),
+                is_nullable: false,
+            },
+        };
+        assert_eq!(format!("{}", field), "FooBar string `json:\"foo_bar\"`");
+
+        let field = GoField {
+            rust_name: "foo_bar".to_string(),
+            docs: None,
+            ty: GoType {
+                name: "FooBar".to_string(),
+                is_nullable: true,
+            },
+        };
+        assert_eq!(
+            format!("{}", field),
+            "FooBar *FooBar `json:\"foo_bar,omitempty\"`"
+        );
+    }
+
+    #[test]
+    fn go_field_docs_display_works() {
+        let field = GoField {
+            rust_name: "foo_bar".to_string(),
+            docs: Some("foo_bar is a test field".to_string()),
+            ty: GoType {
+                name: "string".to_string(),
+                is_nullable: true,
+            },
+        };
+        assert_eq!(
+            format!("{}", field),
+            "// foo_bar is a test field\nFooBar string `json:\"foo_bar,omitempty\"`"
+        );
+    }
+
+    #[test]
+    fn go_type_def_display_works() {
+        let ty = GoStruct {
+            name: "FooBar".to_string(),
+            docs: None,
+            fields: vec![GoField {
+                rust_name: "foo_bar".to_string(),
+                docs: None,
+                ty: GoType {
+                    name: "string".to_string(),
+                    is_nullable: true,
+                },
+            }],
+        };
+        assert_eq!(
+            format!("{}", ty),
+            "type FooBar struct {\n    FooBar string `json:\"foo_bar,omitempty\"`\n}"
+        );
+
+        let ty = GoStruct {
+            name: "FooBar".to_string(),
+            docs: Some("FooBar is a test struct".to_string()),
+            fields: vec![GoField {
+                rust_name: "foo_bar".to_string(),
+                docs: None,
+                ty: GoType {
+                    name: "string".to_string(),
+                    is_nullable: true,
+                },
+            }],
+        };
+        assert_eq!(
+            format!("{}", ty),
+            "// FooBar is a test struct\ntype FooBar struct {\n    FooBar string `json:\"foo_bar,omitempty\"`\n}"
+        );
+    }
+}
diff --git a/packages/go-gen/src/main.rs b/packages/go-gen/src/main.rs
new file mode 100644
index 000000000..7688db187
--- /dev/null
+++ b/packages/go-gen/src/main.rs
@@ -0,0 +1,466 @@
+use anyhow::{bail, ensure, Context, Result};
+use go::*;
+use inflector::cases::pascalcase::to_pascal_case;
+use schema::{documentation, schema_object_type, SchemaExt, TypeContext};
+use schemars::schema::{ObjectValidation, RootSchema, Schema, SchemaObject};
+use std::fmt::Write;
+use utils::replace_acronyms;
+
+mod go;
+mod schema;
+mod utils;
+
+fn main() -> Result<()> {
+    let root = cosmwasm_schema::schema_for!(cosmwasm_std::BankQuery);
+
+    let code = generate_go(root)?;
+    println!("{}", code);
+
+    Ok(())
+}
+
+/// Generates the Go code for the given schema
+fn generate_go(root: RootSchema) -> Result<String> {
+    let title = replace_acronyms(
+        root.schema
+            .metadata
+            .as_ref()
+            .and_then(|m| m.title.as_ref())
+            .context("failed to get type name")?,
+    );
+
+    let mut types = vec![];
+    build_type(&title, &root.schema, &mut types)
+        .with_context(|| format!("failed to generate {title}"))?;
+
+    // go through additional definitions
+    for (name, additional_type) in &root.definitions {
+        additional_type
+            .object()
+            .map(|def| build_type(&replace_acronyms(name), def, &mut types))
+            .and_then(|r| r)
+            .context("failed to generate additional definitions")?;
+    }
+    let mut code = String::new();
+    for ty in types {
+        writeln!(&mut code, "{ty}")?;
+    }
+
+    Ok(code)
+}
+
+/// Generates Go structs for the given schema and adds them to `structs`.
+/// This will add more than one struct if the schema contains object types (anonymous structs).
+fn build_type(name: &str, schema: &SchemaObject, structs: &mut Vec<GoStruct>) -> Result<()> {
+    if schema::custom_type_of(name).is_some() {
+        // ignore custom types
+        return Ok(());
+    }
+
+    // first detect if we have a struct or enum
+    if let Some(obj) = schema.object.as_ref() {
+        let strct = build_struct(name, schema, obj, structs)
+            .map(Some)
+            .with_context(|| format!("failed to generate struct '{name}'"))?;
+        if let Some(strct) = strct {
+            structs.push(strct);
+        }
+    } else if let Some(variants) = schema::enum_variants(schema) {
+        let strct = build_enum(name, schema, variants, structs)
+            .map(Some)
+            .with_context(|| format!("failed to generate enum '{name}'"))?;
+        if let Some(strct) = strct {
+            structs.push(strct);
+        }
+    } else {
+        anyhow::bail!("failed to determine type for '{name}'");
+    }
+
+    Ok(())
+}
+
+/// Creates a Go struct for the given schema object and returns it.
+/// This will also add any additional structs to `additional_structs` (but not the returned one).
+pub fn build_struct(
+    name: &str,
+    strct: &SchemaObject,
+    obj: &ObjectValidation,
+    additional_structs: &mut Vec<GoStruct>,
+) -> Result<GoStruct> {
+    let docs = documentation(strct);
+
+    // go through all fields
+    let fields = obj.properties.iter().map(|(field, ty)| {
+        // get schema object
+        let schema = ty
+            .object()
+            .with_context(|| format!("expected schema object for field {field}"))?;
+        // extract type from schema object
+        let ty = schema_object_type(schema, TypeContext::new(name, field), additional_structs)
+            .with_context(|| format!("failed to get type of field '{field}'"))?;
+        Ok(GoField {
+            rust_name: field.clone(),
+            docs: documentation(schema),
+            ty,
+        })
+    });
+    let fields = fields.collect::<Result<Vec<_>>>()?;
+
+    Ok(GoStruct {
+        name: to_pascal_case(name),
+        docs,
+        fields,
+    })
+}
+
+/// Creates a Go struct for the given schema object and returns it.
+/// This will also add any additional structs to `additional_structs` (but not the returned one).
+pub fn build_enum<'a>(
+    name: &str,
+    enm: &SchemaObject,
+    variants: impl Iterator<Item = &'a Schema>,
+    additional_structs: &mut Vec<GoStruct>,
+) -> Result<GoStruct> {
+    let docs = documentation(enm);
+
+    // go through all fields
+    let fields = variants.map(|v| {
+        // get schema object
+        let v = v
+            .object()
+            .with_context(|| format!("expected schema object for enum variants of {name}"))?;
+
+        // analyze the variant
+        let variant_field = build_enum_variant(v, name, additional_structs)
+            .context("failed to extract enum variant")?;
+
+        anyhow::Ok(variant_field)
+    });
+    let fields = fields.collect::<Result<Vec<_>>>()?;
+
+    Ok(GoStruct {
+        name: name.to_string(),
+        docs,
+        fields,
+    })
+}
+
+/// Tries to extract the name and type of the given enum variant and returns it as a `GoField`.
+pub fn build_enum_variant(
+    schema: &SchemaObject,
+    enum_name: &str,
+    additional_structs: &mut Vec<GoStruct>,
+) -> Result<GoField> {
+    // for variants without inner data, there is an entry in `enum_variants`
+    // we are not interested in that case, so we error out
+    if let Some(values) = &schema.enum_values {
+        bail!(
+            "enum variants {} without inner data not supported",
+            values
+                .iter()
+                .map(|v| v.to_string())
+                .collect::<Vec<_>>()
+                .join(", ")
+        );
+    }
+
+    let docs = documentation(schema);
+
+    // for variants with inner data, there is an object validation entry with a single property
+    // we extract the type of that property
+    let properties = &schema
+        .object
+        .as_ref()
+        .context("expected object validation for enum variant")?
+        .properties;
+    ensure!(
+        properties.len() == 1,
+        "expected exactly one property in enum variant"
+    );
+    // we can unwrap here, because we checked the length above
+    let (name, schema) = properties.first_key_value().unwrap();
+    let GoType { name: ty, .. } = schema_object_type(
+        schema.object()?,
+        TypeContext::new(enum_name, name),
+        additional_structs,
+    )?;
+
+    Ok(GoField {
+        rust_name: name.to_string(),
+        docs,
+        ty: GoType {
+            name: ty,
+            is_nullable: true, // always nullable
+        },
+    })
+}
+
+#[cfg(test)]
+mod tests {
+    use cosmwasm_schema::cw_serde;
+    use cosmwasm_std::{Binary, Empty, HexBinary, Uint128};
+
+    use super::*;
+
+    fn assert_code_eq(actual: String, expected: &str) {
+        let actual_no_ws = actual.split_whitespace().collect::<Vec<_>>();
+        let expected_no_ws = expected.split_whitespace().collect::<Vec<_>>();
+
+        assert!(
+            actual_no_ws == expected_no_ws,
+            "assertion failed: `(actual == expected)`\nactual:\n`{}`,\nexpected:\n`\"{}\"`",
+            actual,
+            expected
+        );
+    }
+
+    fn assert_code_eq_ignore_docs(actual: String, expected: &str) {
+        let actual_filtered = actual
+            .lines()
+            .map(|line| line.split("//").next().unwrap()) // ignore comments
+            .flat_map(|line| line.split_whitespace())
+            .collect::<Vec<_>>();
+        let expected_filtered = expected
+            .lines()
+            .map(|line| line.split("//").next().unwrap()) // ignore comments
+            .flat_map(|line| line.split_whitespace())
+            .collect::<Vec<_>>();
+
+        assert!(
+            actual_filtered == expected_filtered,
+            "assertion failed: `(actual == expected)`\nactual:\n`{}`,\nexpected:\n`\"{}\"`",
+            actual,
+            expected
+        );
+    }
+
+    #[test]
+    fn special_types() {
+        #[cw_serde]
+        struct SpecialTypes {
+            binary: Binary,
+            nested_binary: Vec<Option<Binary>>,
+            hex_binary: HexBinary,
+            uint128: Uint128,
+        }
+
+        let schema = schemars::schema_for!(SpecialTypes);
+        let code = generate_go(schema).unwrap();
+
+        assert_code_eq(
+            code,
+            r#"
+            type SpecialTypes struct {
+                Binary []byte `json:"binary"`
+                HexBinary Checksum `json:"hex_binary"`
+                NestedBinary []*[]byte `json:"nested_binary"`
+                Uint128 string `json:"uint128"`
+            }"#,
+        );
+    }
+
+    #[test]
+    fn integers() {
+        #[cw_serde]
+        struct Integers {
+            a: u64,
+            b: i64,
+            c: u32,
+            d: i32,
+            e: u8,
+            f: i8,
+            g: u16,
+            h: i16,
+        }
+
+        let schema = schemars::schema_for!(Integers);
+        let code = generate_go(schema).unwrap();
+
+        assert_code_eq(
+            code,
+            r#"
+            type Integers struct {
+                A uint64 `json:"a"`
+                B int64 `json:"b"`
+                C uint32 `json:"c"`
+                D int32 `json:"d"`
+                E uint8 `json:"e"`
+                F int8 `json:"f"`
+                G uint16 `json:"g"`
+                H int16 `json:"h"`
+            }"#,
+        );
+
+        #[cw_serde]
+        struct U128 {
+            a: u128,
+        }
+        #[cw_serde]
+        struct I128 {
+            a: i128,
+        }
+        let schema = schemars::schema_for!(U128);
+        assert!(generate_go(schema)
+            .unwrap_err()
+            .root_cause()
+            .to_string()
+            .contains("unsupported integer format: uint128"));
+        let schema = schemars::schema_for!(I128);
+        assert!(generate_go(schema)
+            .unwrap_err()
+            .root_cause()
+            .to_string()
+            .contains("unsupported integer format: int128"));
+    }
+
+    #[test]
+    fn empty() {
+        #[cw_serde]
+        struct Empty {}
+
+        let schema = schemars::schema_for!(Empty);
+        let code = generate_go(schema).unwrap();
+        assert_code_eq(code, "type Empty struct { }");
+    }
+
+    /// Compares the generated code for a given type with the code in the corresponding file in
+    /// `tests/`.
+    /// The file name is derived from the type name by replacing `::` with `__` and adding `.go`.
+    macro_rules! compare_codes {
+        ($name:ty) => {{
+            let filename = stringify!($name).replace("::", "__");
+            let generated = generate_go(cosmwasm_schema::schema_for!($name)).unwrap();
+            let expected = std::fs::read_to_string(format!("tests/{}.go", filename)).unwrap();
+
+            assert_code_eq_ignore_docs(generated, &expected);
+        }};
+    }
+
+    #[test]
+    fn responses_work() {
+        // bank
+        compare_codes!(cosmwasm_std::SupplyResponse);
+        compare_codes!(cosmwasm_std::BalanceResponse);
+        // compare_codes!(cosmwasm_std::AllBalanceResponse); // has different name in wasmvm
+        compare_codes!(cosmwasm_std::DenomMetadataResponse);
+        // compare_codes!(cosmwasm_std::AllDenomMetadataResponse); // uses `[]byte` instead of `*[]byte`
+        // staking
+        compare_codes!(cosmwasm_std::BondedDenomResponse);
+        compare_codes!(cosmwasm_std::AllDelegationsResponse);
+        compare_codes!(cosmwasm_std::DelegationResponse);
+        compare_codes!(cosmwasm_std::AllValidatorsResponse);
+        // compare_codes!(cosmwasm_std::ValidatorResponse); // does not use "omitempty" for `Validator` field
+        // distribution
+        compare_codes!(cosmwasm_std::DelegatorWithdrawAddressResponse);
+        // wasm
+        compare_codes!(cosmwasm_std::ContractInfoResponse);
+        // compare_codes!(cosmwasm_std::CodeInfoResponse); // TODO: Checksum type and "omitempty"
+    }
+
+    #[test]
+    fn nested_enum_works() {
+        #[cw_serde]
+        struct Inner {
+            a: String,
+        }
+
+        #[cw_serde]
+        enum MyEnum {
+            A(Inner),
+            B(String),
+            C { a: String },
+        }
+
+        let schema = schemars::schema_for!(MyEnum);
+        let code = generate_go(schema).unwrap();
+        assert_code_eq(
+            code,
+            r#"
+            type CEnum struct {
+                A string `json:"a"`
+            }
+            type MyEnum struct {
+                A *Inner `json:"a,omitempty"`
+                B string `json:"b,omitempty"`
+                C *CEnum `json:"c,omitempty"`
+            }
+            type Inner struct {
+                A string `json:"a"`
+            }
+            "#,
+        );
+
+        #[cw_serde]
+        enum ShouldFail1 {
+            A(),
+        }
+        #[cw_serde]
+        enum ShouldFail2 {
+            A,
+        }
+        let schema = schemars::schema_for!(ShouldFail1);
+        assert!(generate_go(schema)
+            .unwrap_err()
+            .root_cause()
+            .to_string()
+            .contains("array type with non-singular item type is not supported"));
+        let schema = schemars::schema_for!(ShouldFail2);
+        assert!(generate_go(schema)
+            .unwrap_err()
+            .root_cause()
+            .to_string()
+            .contains("failed to determine type for 'ShouldFail2'"));
+    }
+
+    #[test]
+    fn queries_work() {
+        // compare_codes!(cosmwasm_std::QueryRequest<Empty>); // omit for now because it's huge
+        // just assert that it compiles
+        generate_go(cosmwasm_schema::schema_for!(
+            cosmwasm_std::QueryRequest<Empty>
+        ))
+        .unwrap();
+        // TODO: PageRequest.Key uses "omitempty" and no *
+        // compare_codes!(cosmwasm_std::BankQuery);
+        compare_codes!(cosmwasm_std::StakingQuery);
+        compare_codes!(cosmwasm_std::DistributionQuery);
+        compare_codes!(cosmwasm_std::IbcQuery);
+        compare_codes!(cosmwasm_std::WasmQuery);
+    }
+
+    #[test]
+    fn array_item_type_works() {
+        #[cw_serde]
+        struct A {
+            a: Vec<Vec<Vec<Option<Option<B>>>>>,
+        }
+        #[cw_serde]
+        struct B {}
+
+        // example json:
+        // A { a: vec![vec![vec![None, Some(Some(B {})), Some(None)]]] }
+        // => {"a":[[[null,{},null]]]}
+        let code = generate_go(cosmwasm_schema::schema_for!(A)).unwrap();
+        assert_code_eq(
+            code,
+            r#"
+            type A struct {
+                A [][][]*B `json:"a"`
+            }
+            type B struct { }"#,
+        );
+
+        #[cw_serde]
+        struct C {
+            c: Vec<Vec<Vec<Option<Option<String>>>>>,
+        }
+        let code = generate_go(cosmwasm_schema::schema_for!(C)).unwrap();
+        assert_code_eq(
+            code,
+            r#"
+            type C struct {
+                C [][][]*string `json:"c"`
+            }"#,
+        );
+    }
+}
diff --git a/packages/go-gen/src/schema.rs b/packages/go-gen/src/schema.rs
new file mode 100644
index 000000000..22e6fd7c9
--- /dev/null
+++ b/packages/go-gen/src/schema.rs
@@ -0,0 +1,275 @@
+use anyhow::{bail, ensure, Context, Result};
+
+use inflector::Inflector;
+use schemars::schema::{InstanceType, Schema, SchemaObject, SingleOrVec};
+
+use crate::{
+    go::{GoField, GoStruct, GoType},
+    utils::{replace_acronyms, suffixes},
+};
+
+pub trait SchemaExt {
+    /// Returns a reference to the contained schema object,
+    /// or an error if the schema is not an object.
+    fn object(&self) -> anyhow::Result<&SchemaObject>;
+}
+
+impl SchemaExt for Schema {
+    fn object(&self) -> anyhow::Result<&SchemaObject> {
+        match self {
+            Schema::Object(o) => Ok(o),
+            _ => bail!("expected schema object"),
+        }
+    }
+}
+
+/// Returns the schemas of the variants of this enum, if it is an enum.
+/// Returns `None` if the schema is not an enum.
+pub fn enum_variants(schema: &SchemaObject) -> Option<impl Iterator<Item = &Schema>> {
+    Some(schema.subschemas.as_ref()?.one_of.as_ref()?.iter())
+}
+
+/// Returns the Go type for the given schema object and whether it is nullable.
+/// May also add additional structs to the given `Vec` that need to be generated for this type.
+pub fn schema_object_type(
+    schema: &SchemaObject,
+    type_context: TypeContext,
+    additional_structs: &mut Vec<GoStruct>,
+) -> Result<GoType> {
+    let mut is_nullable = is_null(schema);
+
+    // if it has a title, use that
+    let ty = if let Some(title) = schema.metadata.as_ref().and_then(|m| m.title.as_ref()) {
+        replace_custom_type(title)
+    } else if let Some(reference) = &schema.reference {
+        // if it has a reference, strip the path and use that
+        replace_custom_type(
+            reference
+                .split('/')
+                .last()
+                .expect("split should always return at least one item"),
+        )
+    } else if let Some(t) = &schema.instance_type {
+        type_from_instance_type(schema, type_context, t, additional_structs)?
+    } else if let Some(subschemas) = schema.subschemas.as_ref().and_then(|s| s.any_of.as_ref()) {
+        // check if one of them is null
+        let nullable = nullable_type(subschemas)?;
+        if let Some(non_null) = nullable {
+            ensure!(subschemas.len() == 2, "multiple subschemas in anyOf");
+            is_nullable = true;
+            // extract non-null type
+            let GoType { name, .. } =
+                schema_object_type(non_null, type_context, additional_structs)?;
+            replace_custom_type(&name)
+        } else {
+            subschema_type(subschemas, type_context, additional_structs)
+                .context("failed to get type of anyOf subschemas")?
+        }
+    } else if let Some(subschemas) = schema
+        .subschemas
+        .as_ref()
+        .and_then(|s| s.all_of.as_ref().or(s.one_of.as_ref()))
+    {
+        subschema_type(subschemas, type_context, additional_structs)
+            .context("failed to get type of allOf subschemas")?
+    } else {
+        bail!("no type for schema found: {:?}", schema);
+    };
+
+    Ok(GoType {
+        name: ty,
+        is_nullable,
+    })
+}
+
+/// Tries to extract the type of the non-null variant of an anyOf schema.
+///
+/// Returns `Ok(None)` if the type is not nullable.
+pub fn nullable_type(subschemas: &[Schema]) -> Result<Option<&SchemaObject>, anyhow::Error> {
+    let (found_null, nullable_type): (bool, Option<&SchemaObject>) = subschemas
+        .iter()
+        .fold(Ok((false, None)), |result: Result<_>, subschema| {
+            result.and_then(|(nullable, not_null)| {
+                let subschema = subschema.object()?;
+                if is_null(subschema) {
+                    Ok((true, not_null))
+                } else {
+                    Ok((nullable, Some(subschema)))
+                }
+            })
+        })
+        .context("failed to get anyOf subschemas")?;
+
+    Ok(if found_null { nullable_type } else { None })
+}
+
+/// The context for type extraction
+#[derive(Clone, Copy, Debug)]
+pub struct TypeContext<'a> {
+    /// The struct name
+    struct_name: &'a str,
+    /// The name of the field in the parent struct
+    field: &'a str,
+}
+
+impl<'a> TypeContext<'a> {
+    pub fn new(parent: &'a str, field: &'a str) -> Self {
+        Self {
+            struct_name: parent,
+            field,
+        }
+    }
+}
+
+/// Tries to extract a type name from the given instance type.
+///
+/// Fails for unsupported instance types or integer formats.
+pub fn type_from_instance_type(
+    schema: &SchemaObject,
+    type_context: TypeContext,
+    t: &SingleOrVec<InstanceType>,
+    additional_structs: &mut Vec<GoStruct>,
+) -> Result<String> {
+    // if it has an instance type, use that
+    Ok(if t.contains(&InstanceType::String) {
+        "string".to_string()
+    } else if t.contains(&InstanceType::Number) {
+        "float64".to_string()
+    } else if t.contains(&InstanceType::Integer) {
+        const AVAILABLE_INTS: &[&str] = &[
+            "uint8", "int8", "uint16", "int16", "uint32", "int32", "uint64", "int64",
+        ];
+        let format = schema.format.as_deref().unwrap_or("int64");
+        if AVAILABLE_INTS.contains(&format) {
+            format.to_string()
+        } else {
+            bail!("unsupported integer format: {}", format);
+        }
+    } else if t.contains(&InstanceType::Boolean) {
+        "bool".to_string()
+    } else if t.contains(&InstanceType::Object) {
+        // generate a new struct for this object
+        // struct_name should be in PascalCase, so we detect the last word and use that as
+        // the suffix for the new struct name
+        let suffix = suffixes(type_context.struct_name)
+            .rev()
+            .find(|s| s.starts_with(char::is_uppercase))
+            .unwrap_or(type_context.struct_name);
+        let new_struct_name = format!(
+            "{}{suffix}",
+            replace_acronyms(type_context.field.to_pascal_case())
+        );
+
+        let fields = schema
+            .object
+            .as_ref()
+            .context("expected object validation")?
+            .properties
+            .iter()
+            .map(|(name, schema)| {
+                let schema = schema.object()?;
+                let ty = schema_object_type(
+                    schema,
+                    TypeContext::new(&new_struct_name, name),
+                    additional_structs,
+                )?;
+                Ok(GoField {
+                    rust_name: name.to_string(),
+                    docs: documentation(schema),
+                    ty,
+                })
+            })
+            .collect::<Result<Vec<_>>>()?;
+
+        let strct = GoStruct {
+            name: new_struct_name.clone(),
+            docs: None,
+            fields,
+        };
+        additional_structs.push(strct);
+
+        new_struct_name
+    } else if t.contains(&InstanceType::Array) {
+        // get type of items
+        let item_type = array_item_type(schema, type_context, additional_structs)
+            .context("failed to get array item type")?;
+
+        // for nullable array item types, we have to use a pointer type, even for basic types,
+        // so we can pass null as elements
+        // otherwise they would just be omitted from the array
+        replace_custom_type(&if item_type.is_nullable {
+            format!("[]*{}", item_type.name)
+        } else {
+            format!("[]{}", item_type.name)
+        })
+    } else {
+        unreachable!("instance type should be one of the above")
+    })
+}
+
+/// Extract the type of the items of an array.
+///
+/// This fails if the given schema object is not an array,
+/// has multiple item types or other errors occur during type extraction of
+/// the underlying schema.
+pub fn array_item_type(
+    schema: &SchemaObject,
+    type_context: TypeContext,
+    additional_structs: &mut Vec<GoStruct>,
+) -> Result<GoType> {
+    match schema.array.as_ref().and_then(|a| a.items.as_ref()) {
+        Some(SingleOrVec::Single(array_validation)) => {
+            schema_object_type(array_validation.object()?, type_context, additional_structs)
+        }
+        _ => bail!("array type with non-singular item type is not supported"),
+    }
+}
+
+/// Tries to extract a type name from the given subschemas.
+///
+/// This fails if there are multiple subschemas or other errors occur
+/// during subschema type extraction.
+pub fn subschema_type(
+    subschemas: &[Schema],
+    type_context: TypeContext,
+    additional_structs: &mut Vec<GoStruct>,
+) -> Result<String> {
+    ensure!(
+        subschemas.len() == 1,
+        "multiple subschemas are not supported"
+    );
+    let subschema = &subschemas[0];
+    let GoType { name, .. } =
+        schema_object_type(subschema.object()?, type_context, additional_structs)?;
+    Ok(replace_custom_type(&name))
+}
+
+pub fn is_null(schema: &SchemaObject) -> bool {
+    schema
+        .instance_type
+        .as_ref()
+        .map_or(false, |s| s.contains(&InstanceType::Null))
+}
+
+pub fn documentation(schema: &SchemaObject) -> Option<String> {
+    schema.metadata.as_ref()?.description.as_ref().cloned()
+}
+
+/// Maps special types to their Go equivalents.
+/// If the given type is not a special type, returns `None`.
+pub fn custom_type_of(ty: &str) -> Option<&str> {
+    match ty {
+        "Uint128" => Some("string"),
+        "Binary" => Some("[]byte"),
+        "HexBinary" => Some("Checksum"),
+        "Addr" => Some("string"),
+        "Decimal" => Some("string"),
+        _ => None,
+    }
+}
+
+pub fn replace_custom_type(ty: &str) -> String {
+    custom_type_of(ty)
+        .map(|ty| ty.to_string())
+        .unwrap_or_else(|| ty.to_string())
+}
diff --git a/packages/go-gen/src/utils.rs b/packages/go-gen/src/utils.rs
new file mode 100644
index 000000000..fab616c7e
--- /dev/null
+++ b/packages/go-gen/src/utils.rs
@@ -0,0 +1,80 @@
+/// An iterator that returns all suffixes of a string, excluding the empty string.
+///
+/// It starts with the full string and ends with the last character.
+/// It is a double-ended iterator and can be reversed.
+pub fn suffixes(s: &str) -> impl Iterator<Item = &str> + DoubleEndedIterator {
+    s.char_indices().map(|(pos, _)| &s[pos..])
+}
+
+/// Replaces common pascal-case acronyms with their uppercase counterparts.
+pub fn replace_acronyms(ty: impl Into<String>) -> String {
+    let mut ty = ty.into();
+    replace_word_in_place(&mut ty, "Url", "URL");
+    replace_word_in_place(&mut ty, "Uri", "URI");
+    replace_word_in_place(&mut ty, "Id", "ID");
+    replace_word_in_place(&mut ty, "Ibc", "IBC");
+    ty
+}
+
+fn replace_word_in_place(haystack: &mut String, from: &str, to: &str) {
+    assert_eq!(from.len(), to.len(), "from and to must be the same length");
+    let mut start = 0;
+    while let Some(pos) = haystack[start..].find(from) {
+        let begin = start + pos;
+        let end = start + pos + from.len();
+        let next_char = haystack.chars().nth(end);
+        match next_char {
+            Some(next_char) if next_char.is_ascii_lowercase() => {}
+            _ => {
+                // if the next character is uppercase or any non-ascii char or
+                // there is no next char, it's a full word
+                haystack.replace_range(begin..end, to);
+            }
+        }
+        start = end;
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    #[should_panic = "from and to must be the same length"]
+    fn replace_in_place_different_lengths() {
+        let mut s = "foo".to_string();
+        replace_word_in_place(&mut s, "foo", "barbar");
+    }
+
+    #[test]
+    fn replace_in_place_multiple_works() {
+        let mut s = "FooFooFooFooFoo".to_string();
+        replace_word_in_place(&mut s, "Foo", "bar");
+        assert_eq!(s, "barbarbarbarbar");
+    }
+
+    #[test]
+    fn replace_in_place_single_works() {
+        let mut s = "foo".to_string();
+        replace_word_in_place(&mut s, "foo", "bar");
+        assert_eq!(s, "bar");
+    }
+
+    #[test]
+    fn replace_word_in_place_part() {
+        let mut s = "Foofoo".to_string();
+        replace_word_in_place(&mut s, "Foo", "Bar");
+        // should not replace, because it's not a full word
+        assert_eq!(s, "Foofoo");
+    }
+
+    #[test]
+    fn replace_acronyms_works() {
+        assert_eq!(replace_acronyms("MyIdentity"), "MyIdentity");
+        assert_eq!(replace_acronyms("MyIdentityId"), "MyIdentityID");
+        assert_eq!(replace_acronyms("MyUri"), "MyURI");
+        assert_eq!(replace_acronyms("Url"), "URL");
+        assert_eq!(replace_acronyms("A"), "A");
+        assert_eq!(replace_acronyms("Url🦦"), "URL🦦");
+    }
+}


Test patch:
diff --git a/packages/go-gen/tests/cosmwasm_std__AllBalanceResponse.go b/packages/go-gen/tests/cosmwasm_std__AllBalanceResponse.go
new file mode 100644
index 000000000..8d1ea8136
--- /dev/null
+++ b/packages/go-gen/tests/cosmwasm_std__AllBalanceResponse.go
@@ -0,0 +1,10 @@
+// AllBalancesResponse is the expected response to AllBalancesQuery
+type AllBalancesResponse struct {
+	Amount []Coin `json:"amount"` // in wasmvm, there is an alias for `[]Coin`
+}
+
+// Coin is a string representation of the sdk.Coin type (more portable than sdk.Int)
+type Coin struct {
+	Amount string `json:"amount"` // string encoing of decimal value, eg. "12.3456"
+	Denom  string `json:"denom"`  // type, eg. "ATOM"
+}
diff --git a/packages/go-gen/tests/cosmwasm_std__AllDelegationsResponse.go b/packages/go-gen/tests/cosmwasm_std__AllDelegationsResponse.go
new file mode 100644
index 000000000..ccebdbcd3
--- /dev/null
+++ b/packages/go-gen/tests/cosmwasm_std__AllDelegationsResponse.go
@@ -0,0 +1,16 @@
+// AllDelegationsResponse is the expected response to AllDelegationsQuery
+type AllDelegationsResponse struct {
+	Delegations []Delegation `json:"delegations"` // in wasmvm, there is an alias for `[]Delegation`
+}
+
+// Coin is a string representation of the sdk.Coin type (more portable than sdk.Int)
+type Coin struct {
+	Amount string `json:"amount"` // string encoing of decimal value, eg. "12.3456"
+	Denom  string `json:"denom"`  // type, eg. "ATOM"
+}
+
+type Delegation struct {
+	Amount    Coin   `json:"amount"`
+	Delegator string `json:"delegator"`
+	Validator string `json:"validator"`
+}
diff --git a/packages/go-gen/tests/cosmwasm_std__AllDenomMetadataResponse.go b/packages/go-gen/tests/cosmwasm_std__AllDenomMetadataResponse.go
new file mode 100644
index 000000000..d61cf12f3
--- /dev/null
+++ b/packages/go-gen/tests/cosmwasm_std__AllDenomMetadataResponse.go
@@ -0,0 +1,51 @@
+type AllDenomMetadataResponse struct {
+	Metadata []DenomMetadata `json:"metadata"`
+	// NextKey is the key to be passed to PageRequest.key to
+	// query the next page most efficiently. It will be empty if
+	// there are no more results.
+	NextKey []byte `json:"next_key,omitempty"`
+}
+
+// Replicating the cosmos-sdk bank module Metadata type
+type DenomMetadata struct {
+	// Base represents the base denom (should be the DenomUnit with exponent = 0).
+	Base string `json:"base"`
+	// DenomUnits represents the list of DenomUnits for a given coin
+	DenomUnits  []DenomUnit `json:"denom_units"`
+	Description string      `json:"description"`
+	// Display indicates the suggested denom that should be
+	// displayed in clients.
+	Display string `json:"display"`
+	// Name defines the name of the token (eg: Cosmos Atom)
+	//
+	// Since: cosmos-sdk 0.43
+	Name string `json:"name"`
+	// Symbol is the token symbol usually shown on exchanges (eg: ATOM). This can
+	// be the same as the display.
+	//
+	// Since: cosmos-sdk 0.43
+	Symbol string `json:"symbol"`
+	// URI to a document (on or off-chain) that contains additional information. Optional.
+	//
+	// Since: cosmos-sdk 0.46
+	URI string `json:"uri"`
+	// URIHash is a sha256 hash of a document pointed by URI. It's used to verify that
+	// the document didn't change. Optional.
+	//
+	// Since: cosmos-sdk 0.46
+	URIHash string `json:"uri_hash"`
+}
+
+// Replicating the cosmos-sdk bank module DenomUnit type
+type DenomUnit struct {
+	// Aliases is a list of string aliases for the given denom
+	Aliases []string `json:"aliases"`
+	// Denom represents the string name of the given denom unit (e.g uatom).
+	Denom string `json:"denom"`
+	// Exponent represents power of 10 exponent that one must
+	// raise the base_denom to in order to equal the given DenomUnit's denom
+	// 1 denom = 10^exponent base_denom
+	// (e.g. with a base_denom of uatom, one can create a DenomUnit of 'atom' with
+	// exponent = 6, thus: 1 atom = 10^6 uatom).
+	Exponent uint32 `json:"exponent"`
+}
diff --git a/packages/go-gen/tests/cosmwasm_std__AllValidatorsResponse.go b/packages/go-gen/tests/cosmwasm_std__AllValidatorsResponse.go
new file mode 100644
index 000000000..9280eda05
--- /dev/null
+++ b/packages/go-gen/tests/cosmwasm_std__AllValidatorsResponse.go
@@ -0,0 +1,14 @@
+// AllValidatorsResponse is the expected response to AllValidatorsQuery
+type AllValidatorsResponse struct {
+	Validators []Validator `json:"validators"` // in wasmvm, there is an alias for `[]Validator`
+}
+
+type Validator struct {
+	Address string `json:"address"`
+	// decimal string, eg "0.02"
+	Commission string `json:"commission"`
+	// decimal string, eg "0.02"
+	MaxChangeRate string `json:"max_change_rate"`
+	// decimal string, eg "0.02"
+	MaxCommission string `json:"max_commission"`
+}
\ No newline at end of file
diff --git a/packages/go-gen/tests/cosmwasm_std__BalanceResponse.go b/packages/go-gen/tests/cosmwasm_std__BalanceResponse.go
new file mode 100644
index 000000000..a8735fd00
--- /dev/null
+++ b/packages/go-gen/tests/cosmwasm_std__BalanceResponse.go
@@ -0,0 +1,10 @@
+// BalanceResponse is the expected response to BalanceQuery
+type BalanceResponse struct {
+	Amount Coin `json:"amount"`
+}
+
+// Coin is a string representation of the sdk.Coin type (more portable than sdk.Int)
+type Coin struct {
+	Amount string `json:"amount"` // string encoing of decimal value, eg. "12.3456"
+	Denom  string `json:"denom"`  // type, eg. "ATOM"
+}
diff --git a/packages/go-gen/tests/cosmwasm_std__BankQuery.go b/packages/go-gen/tests/cosmwasm_std__BankQuery.go
new file mode 100644
index 000000000..ef7729af8
--- /dev/null
+++ b/packages/go-gen/tests/cosmwasm_std__BankQuery.go
@@ -0,0 +1,43 @@
+type SupplyQuery struct {
+	Denom string `json:"denom"`
+}
+
+type BalanceQuery struct {
+	Address string `json:"address"`
+	Denom   string `json:"denom"`
+}
+
+type AllBalancesQuery struct {
+	Address string `json:"address"`
+}
+
+type DenomMetadataQuery struct {
+	Denom string `json:"denom"`
+}
+
+type AllDenomMetadataQuery struct {
+	// Pagination is an optional argument.
+	// Default pagination will be used if this is omitted
+	Pagination *PageRequest `json:"pagination,omitempty"`
+}
+
+type BankQuery struct {
+	Supply           *SupplyQuery           `json:"supply,omitempty"`
+	Balance          *BalanceQuery          `json:"balance,omitempty"`
+	AllBalances      *AllBalancesQuery      `json:"all_balances,omitempty"`
+	DenomMetadata    *DenomMetadataQuery    `json:"denom_metadata,omitempty"`
+	AllDenomMetadata *AllDenomMetadataQuery `json:"all_denom_metadata,omitempty"`
+}
+
+// Simplified version of the cosmos-sdk PageRequest type
+type PageRequest struct {
+	// Key is a value returned in PageResponse.next_key to begin
+	// querying the next page most efficiently. Only one of offset or key
+	// should be set.
+	Key []byte `json:"key"`
+	// Limit is the total number of results to be returned in the result page.
+	// If left empty it will default to a value to be set by each app.
+	Limit uint32 `json:"limit"`
+	// Reverse is set to true if results are to be returned in the descending order.
+	Reverse bool `json:"reverse"`
+}
\ No newline at end of file
diff --git a/packages/go-gen/tests/cosmwasm_std__BondedDenomResponse.go b/packages/go-gen/tests/cosmwasm_std__BondedDenomResponse.go
new file mode 100644
index 000000000..cb16d2273
--- /dev/null
+++ b/packages/go-gen/tests/cosmwasm_std__BondedDenomResponse.go
@@ -0,0 +1,3 @@
+type BondedDenomResponse struct {
+	Denom string `json:"denom"`
+}
\ No newline at end of file
diff --git a/packages/go-gen/tests/cosmwasm_std__CodeInfoResponse.go b/packages/go-gen/tests/cosmwasm_std__CodeInfoResponse.go
new file mode 100644
index 000000000..1173e9e7f
--- /dev/null
+++ b/packages/go-gen/tests/cosmwasm_std__CodeInfoResponse.go
@@ -0,0 +1,5 @@
+type CodeInfoResponse struct {
+	Checksum Checksum `json:"checksum,omitempty"`
+	CodeID   uint64   `json:"code_id"`
+	Creator  string   `json:"creator"`
+}
diff --git a/packages/go-gen/tests/cosmwasm_std__ContractInfoResponse.go b/packages/go-gen/tests/cosmwasm_std__ContractInfoResponse.go
new file mode 100644
index 000000000..55ae866f5
--- /dev/null
+++ b/packages/go-gen/tests/cosmwasm_std__ContractInfoResponse.go
@@ -0,0 +1,9 @@
+type ContractInfoResponse struct {
+	// Set to the admin who can migrate contract, if any
+	Admin   string `json:"admin,omitempty"`
+	CodeID  uint64 `json:"code_id"`
+	Creator string `json:"creator"`
+	// Set if the contract is IBC enabled
+	IBCPort string `json:"ibc_port,omitempty"`
+	Pinned  bool   `json:"pinned"`
+}
\ No newline at end of file
diff --git a/packages/go-gen/tests/cosmwasm_std__DelegationResponse.go b/packages/go-gen/tests/cosmwasm_std__DelegationResponse.go
new file mode 100644
index 000000000..9dcac82df
--- /dev/null
+++ b/packages/go-gen/tests/cosmwasm_std__DelegationResponse.go
@@ -0,0 +1,18 @@
+// DelegationResponse is the expected response to DelegationsQuery
+type DelegationResponse struct {
+	Delegation *FullDelegation `json:"delegation,omitempty"`
+}
+
+// Coin is a string representation of the sdk.Coin type (more portable than sdk.Int)
+type Coin struct {
+	Amount string `json:"amount"` // string encoing of decimal value, eg. "12.3456"
+	Denom  string `json:"denom"`  // type, eg. "ATOM"
+}
+
+type FullDelegation struct {
+	AccumulatedRewards []Coin `json:"accumulated_rewards"` // in wasmvm, there is an alias for `[]Coin`
+	Amount             Coin   `json:"amount"`
+	CanRedelegate      Coin   `json:"can_redelegate"`
+	Delegator          string `json:"delegator"`
+	Validator          string `json:"validator"`
+}
\ No newline at end of file
diff --git a/packages/go-gen/tests/cosmwasm_std__DelegatorWithdrawAddressResponse.go b/packages/go-gen/tests/cosmwasm_std__DelegatorWithdrawAddressResponse.go
new file mode 100644
index 000000000..0e46ed30e
--- /dev/null
+++ b/packages/go-gen/tests/cosmwasm_std__DelegatorWithdrawAddressResponse.go
@@ -0,0 +1,3 @@
+type DelegatorWithdrawAddressResponse struct {
+    WithdrawAddress string `json:"withdraw_address"`
+}
diff --git a/packages/go-gen/tests/cosmwasm_std__DenomMetadataResponse.go b/packages/go-gen/tests/cosmwasm_std__DenomMetadataResponse.go
new file mode 100644
index 000000000..a75ddaf21
--- /dev/null
+++ b/packages/go-gen/tests/cosmwasm_std__DenomMetadataResponse.go
@@ -0,0 +1,47 @@
+type DenomMetadataResponse struct {
+	Metadata DenomMetadata `json:"metadata"`
+}
+
+// Replicating the cosmos-sdk bank module Metadata type
+type DenomMetadata struct {
+	// Base represents the base denom (should be the DenomUnit with exponent = 0).
+	Base string `json:"base"`
+	// DenomUnits represents the list of DenomUnits for a given coin
+	DenomUnits  []DenomUnit `json:"denom_units"`
+	Description string      `json:"description"`
+	// Display indicates the suggested denom that should be
+	// displayed in clients.
+	Display string `json:"display"`
+	// Name defines the name of the token (eg: Cosmos Atom)
+	//
+	// Since: cosmos-sdk 0.43
+	Name string `json:"name"`
+	// Symbol is the token symbol usually shown on exchanges (eg: ATOM). This can
+	// be the same as the display.
+	//
+	// Since: cosmos-sdk 0.43
+	Symbol string `json:"symbol"`
+	// URI to a document (on or off-chain) that contains additional information. Optional.
+	//
+	// Since: cosmos-sdk 0.46
+	URI string `json:"uri"`
+	// URIHash is a sha256 hash of a document pointed by URI. It's used to verify that
+	// the document didn't change. Optional.
+	//
+	// Since: cosmos-sdk 0.46
+	URIHash string `json:"uri_hash"`
+}
+
+// Replicating the cosmos-sdk bank module DenomUnit type
+type DenomUnit struct {
+	// Aliases is a list of string aliases for the given denom
+	Aliases []string `json:"aliases"`
+	// Denom represents the string name of the given denom unit (e.g uatom).
+	Denom string `json:"denom"`
+	// Exponent represents power of 10 exponent that one must
+	// raise the base_denom to in order to equal the given DenomUnit's denom
+	// 1 denom = 10^exponent base_denom
+	// (e.g. with a base_denom of uatom, one can create a DenomUnit of 'atom' with
+	// exponent = 6, thus: 1 atom = 10^6 uatom).
+	Exponent uint32 `json:"exponent"`
+}
\ No newline at end of file
diff --git a/packages/go-gen/tests/cosmwasm_std__DistributionQuery.go b/packages/go-gen/tests/cosmwasm_std__DistributionQuery.go
new file mode 100644
index 000000000..79b541a7a
--- /dev/null
+++ b/packages/go-gen/tests/cosmwasm_std__DistributionQuery.go
@@ -0,0 +1,8 @@
+
+type DelegatorWithdrawAddressQuery struct {
+	DelegatorAddress string `json:"delegator_address"`
+}
+
+type DistributionQuery struct {
+	DelegatorWithdrawAddress *DelegatorWithdrawAddressQuery `json:"delegator_withdraw_address,omitempty"`
+}
\ No newline at end of file
diff --git a/packages/go-gen/tests/cosmwasm_std__IbcQuery.go b/packages/go-gen/tests/cosmwasm_std__IbcQuery.go
new file mode 100644
index 000000000..0bf4e30fa
--- /dev/null
+++ b/packages/go-gen/tests/cosmwasm_std__IbcQuery.go
@@ -0,0 +1,25 @@
+type PortIDQuery struct {
+}
+
+// ListChannelsQuery is an IBCQuery that lists all channels that are bound to a given port.
+// If `PortID` is unset, this list all channels bound to the contract's port.
+// Returns a `ListChannelsResponse`.
+// This is the counterpart of [IbcQuery::ListChannels](https://github.com/CosmWasm/cosmwasm/blob/v0.14.0-beta1/packages/std/src/ibc.rs#L70-L73).
+type ListChannelsQuery struct {
+	// optional argument
+	PortID string `json:"port_id,omitempty"`
+}
+
+type ChannelQuery struct {
+	ChannelID string `json:"channel_id"`
+	// optional argument
+	PortID string `json:"port_id,omitempty"`
+}
+
+// IBCQuery defines a query request from the contract into the chain.
+// This is the counterpart of [IbcQuery](https://github.com/CosmWasm/cosmwasm/blob/v0.14.0-beta1/packages/std/src/ibc.rs#L61-L83).
+type IBCQuery struct {
+	PortID       *PortIDQuery       `json:"port_id,omitempty"`
+	ListChannels *ListChannelsQuery `json:"list_channels,omitempty"`
+	Channel      *ChannelQuery      `json:"channel,omitempty"`
+}
diff --git a/packages/go-gen/tests/cosmwasm_std__StakingQuery.go b/packages/go-gen/tests/cosmwasm_std__StakingQuery.go
new file mode 100644
index 000000000..a9667033f
--- /dev/null
+++ b/packages/go-gen/tests/cosmwasm_std__StakingQuery.go
@@ -0,0 +1,27 @@
+type BondedDenomQuery struct { // does not exist in wasmvm, but is an anonymous struct instead
+}
+
+type AllDelegationsQuery struct {
+	Delegator string `json:"delegator"`
+}
+
+type DelegationQuery struct {
+	Delegator string `json:"delegator"`
+	Validator string `json:"validator"`
+}
+
+type AllValidatorsQuery struct {
+}
+
+type ValidatorQuery struct {
+	/// Address is the validator's address (e.g. cosmosvaloper1...)
+	Address string `json:"address"`
+}
+
+type StakingQuery struct {
+	BondedDenom    *BondedDenomQuery    `json:"bonded_denom,omitempty"`
+	AllDelegations *AllDelegationsQuery `json:"all_delegations,omitempty"`
+	Delegation     *DelegationQuery     `json:"delegation,omitempty"`
+	AllValidators  *AllValidatorsQuery  `json:"all_validators,omitempty"`
+	Validator      *ValidatorQuery      `json:"validator,omitempty"`
+}
\ No newline at end of file
diff --git a/packages/go-gen/tests/cosmwasm_std__SupplyResponse.go b/packages/go-gen/tests/cosmwasm_std__SupplyResponse.go
new file mode 100644
index 000000000..c87e3dc2b
--- /dev/null
+++ b/packages/go-gen/tests/cosmwasm_std__SupplyResponse.go
@@ -0,0 +1,10 @@
+// SupplyResponse is the expected response to SupplyQuery
+type SupplyResponse struct {
+	Amount Coin `json:"amount"`
+}
+
+// Coin is a string representation of the sdk.Coin type (more portable than sdk.Int)
+type Coin struct {
+	Amount string `json:"amount"` // string encoing of decimal value, eg. "12.3456"
+	Denom  string `json:"denom"`  // type, eg. "ATOM"
+}
\ No newline at end of file
diff --git a/packages/go-gen/tests/cosmwasm_std__ValidatorResponse.go b/packages/go-gen/tests/cosmwasm_std__ValidatorResponse.go
new file mode 100644
index 000000000..21c24134e
--- /dev/null
+++ b/packages/go-gen/tests/cosmwasm_std__ValidatorResponse.go
@@ -0,0 +1,14 @@
+// ValidatorResponse is the expected response to ValidatorQuery
+type ValidatorResponse struct {
+	Validator *Validator `json:"validator"` // serializes to `null` when unset which matches Rust's Option::None serialization
+}
+
+type Validator struct {
+	Address string `json:"address"`
+	// decimal string, eg "0.02"
+	Commission string `json:"commission"`
+	// decimal string, eg "0.02"
+	MaxChangeRate string `json:"max_change_rate"`
+	// decimal string, eg "0.02"
+	MaxCommission string `json:"max_commission"`
+}
diff --git a/packages/go-gen/tests/cosmwasm_std__WasmQuery.go b/packages/go-gen/tests/cosmwasm_std__WasmQuery.go
new file mode 100644
index 000000000..84f3f453c
--- /dev/null
+++ b/packages/go-gen/tests/cosmwasm_std__WasmQuery.go
@@ -0,0 +1,30 @@
+
+// SmartQuery response is raw bytes ([]byte)
+type SmartQuery struct {
+	// Bech32 encoded sdk.AccAddress of the contract
+	ContractAddr string `json:"contract_addr"`
+	Msg          []byte `json:"msg"`
+}
+
+// RawQuery response is raw bytes ([]byte)
+type RawQuery struct {
+	// Bech32 encoded sdk.AccAddress of the contract
+	ContractAddr string `json:"contract_addr"`
+	Key          []byte `json:"key"`
+}
+
+type ContractInfoQuery struct {
+	// Bech32 encoded sdk.AccAddress of the contract
+	ContractAddr string `json:"contract_addr"`
+}
+
+type CodeInfoQuery struct {
+	CodeID uint64 `json:"code_id"`
+}
+
+type WasmQuery struct {
+	Smart        *SmartQuery        `json:"smart,omitempty"`
+	Raw          *RawQuery          `json:"raw,omitempty"`
+	ContractInfo *ContractInfoQuery `json:"contract_info,omitempty"`
+	CodeInfo     *CodeInfoQuery     `json:"code_info,omitempty"`
+}
\ No newline at end of file