diff --git a/.gitignore b/.gitignore index 11a6ad6f..0f71f74c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /target +/contracts .idea/ target-path diff --git a/Cargo.lock b/Cargo.lock index 9b90cdf1..b860e18a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -418,7 +418,7 @@ dependencies = [ "tendermint-proto 0.34.0", "tendermint-rpc", "tokio", - "toml 0.8.2", + "toml 0.8.6", "tonic", "tonic-reflection", "tower", @@ -743,9 +743,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.6" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d04704f56c2cde07f43e8e2c154b43f216dc5c92fc98ada720177362f953b956" +checksum = "ac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17b" dependencies = [ "clap_builder", "clap_derive", @@ -753,9 +753,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.6" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e231faeaca65ebd1ea3c737966bf858971cd38c3849107aa3ea7de90a804e45" +checksum = "c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663" dependencies = [ "anstream", "anstyle", @@ -766,9 +766,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.4.2" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" dependencies = [ "heck", "proc-macro2", @@ -778,9 +778,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "colorchoice" @@ -1011,9 +1011,9 @@ dependencies = [ [[package]] name = "curve25519-dalek-derive" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fdaf97f4804dcebfa5862639bc9ce4121e82140bec2a987ac5140294865b5b" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", @@ -1346,9 +1346,9 @@ dependencies = [ [[package]] name = "fiat-crypto" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0870c84016d4b481be5c9f323c24f65e31e901ae618f0e80f4308fb00de1d2d" +checksum = "a481586acf778f1b1455424c343f71124b048ffa5f4fc3f8f6ae9dc432dcb3c7" [[package]] name = "fixed-hash" @@ -1632,7 +1632,7 @@ dependencies = [ "indexmap 1.9.3", "slab", "tokio", - "tokio-util 0.7.9", + "tokio-util 0.7.10", "tracing", ] @@ -1760,7 +1760,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.9", + "socket2 0.4.10", "tokio", "tower-service", "tracing", @@ -1769,9 +1769,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http", @@ -1996,9 +1996,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "itertools" @@ -2057,18 +2057,18 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" dependencies = [ "wasm-bindgen", ] [[package]] name = "jsonrpsee" -version = "0.20.2" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de902baa44bf34a58b1a4906f8b840d7d60dcec5f41fe08b4dbc14cf9efa821c" +checksum = "affdc52f7596ccb2d7645231fc6163bb314630c989b64998f3699a28b4d5d4dc" dependencies = [ "jsonrpsee-client-transport", "jsonrpsee-core", @@ -2084,9 +2084,9 @@ dependencies = [ [[package]] name = "jsonrpsee-client-transport" -version = "0.20.2" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58d9851f8f5653e0433a898e9032bde4910b35d625bd9dcf33ef6e36e7c3d456" +checksum = "b5b005c793122d03217da09af68ba9383363caa950b90d3436106df8cabce935" dependencies = [ "futures-channel", "futures-util", @@ -2099,7 +2099,7 @@ dependencies = [ "thiserror", "tokio", "tokio-rustls", - "tokio-util 0.7.9", + "tokio-util 0.7.10", "tracing", "url", "webpki-roots", @@ -2107,9 +2107,9 @@ dependencies = [ [[package]] name = "jsonrpsee-core" -version = "0.20.2" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51f45d37af23707750136379f6799e76ebfcf2d425ec4e36d0deb7921da5e65c" +checksum = "da2327ba8df2fdbd5e897e2b5ed25ce7f299d345b9736b6828814c3dbd1fd47b" dependencies = [ "anyhow", "async-lock", @@ -2133,9 +2133,9 @@ dependencies = [ [[package]] name = "jsonrpsee-http-client" -version = "0.20.2" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02308562f2e8162a32f8d6c3dc19c29c858d5d478047c886a5c3c25b5f7fa868" +checksum = "5f80c17f62c7653ce767e3d7288b793dfec920f97067ceb189ebdd3570f2bc20" dependencies = [ "async-trait", "hyper", @@ -2153,9 +2153,9 @@ dependencies = [ [[package]] name = "jsonrpsee-proc-macros" -version = "0.20.2" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26b3675a943d083d0bf6e367ec755dccec56c41888afa13b191c1c4ff87c652" +checksum = "29110019693a4fa2dbda04876499d098fa16d70eba06b1e6e2b3f1b251419515" dependencies = [ "heck", "proc-macro-crate 1.1.3", @@ -2166,9 +2166,9 @@ dependencies = [ [[package]] name = "jsonrpsee-server" -version = "0.20.2" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ed2bec9c76cee118c27138cc1c877938bcaa01207a5d902b80dbfc60466bc9c" +checksum = "82c39a00449c9ef3f50b84fc00fc4acba20ef8f559f07902244abf4c15c5ab9c" dependencies = [ "futures-util", "http", @@ -2182,16 +2182,16 @@ dependencies = [ "thiserror", "tokio", "tokio-stream", - "tokio-util 0.7.9", + "tokio-util 0.7.10", "tower", "tracing", ] [[package]] name = "jsonrpsee-types" -version = "0.20.2" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05eaff23af19f10ba6fbb76519bed6da4d3b9bbaef13d39b7c2b6c14e532d27e" +checksum = "5be0be325642e850ed0bdff426674d2e66b2b7117c9be23a7caef68a2902b7d9" dependencies = [ "anyhow", "beef", @@ -2203,9 +2203,9 @@ dependencies = [ [[package]] name = "jsonrpsee-wasm-client" -version = "0.20.2" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7ae1c71afe02a21713e197438f1bcfaa171c3dfe533b9505a0990cb8297779e" +checksum = "7c7cbb3447cf14fd4d2f407c3cc96e6c9634d5440aa1fbed868a31f3c02b27f0" dependencies = [ "jsonrpsee-client-transport", "jsonrpsee-core", @@ -2214,9 +2214,9 @@ dependencies = [ [[package]] name = "jsonrpsee-ws-client" -version = "0.20.2" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd34d3ab8c09f02fd4c432f256bc8b143b616b222b03050f941ee53f0e8d7b24" +checksum = "bca9cb3933ccae417eb6b08c3448eb1cb46e39834e5b503e395e5e5bd08546c0" dependencies = [ "http", "jsonrpsee-client-transport", @@ -2376,9 +2376,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" dependencies = [ "libc", "wasi", @@ -2712,9 +2712,9 @@ checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "platforms" -version = "3.1.2" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4503fa043bf02cee09a9582e9554b4c6403b2ef55e4612e96561d294419429f8" +checksum = "14e6ab3f592e6fb464fc9712d8d6e6912de6473954635fd76a589d832cffcbb0" [[package]] name = "ppv-lite86" @@ -3068,17 +3068,16 @@ dependencies = [ [[package]] name = "ring" -version = "0.16.20" +version = "0.17.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +checksum = "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b" dependencies = [ "cc", + "getrandom", "libc", - "once_cell", "spin", "untrusted", - "web-sys", - "winapi", + "windows-sys", ] [[package]] @@ -3196,9 +3195,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.7" +version = "0.21.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" +checksum = "446e14c5cda4f3f30fe71863c34ec70f5ac79d6087097ad0bb433e1be5edf04c" dependencies = [ "log", "ring", @@ -3229,9 +3228,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.101.6" +version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c7d5dece342910d9ba34d259310cae3e0154b873b35408b787b59bce53d34fe" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ "ring", "untrusted", @@ -3299,9 +3298,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sct" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ "ring", "untrusted", @@ -3456,9 +3455,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" +checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80" dependencies = [ "serde", ] @@ -3588,9 +3587,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" dependencies = [ "libc", "winapi", @@ -3598,9 +3597,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" dependencies = [ "libc", "windows-sys", @@ -3649,8 +3648,10 @@ dependencies = [ "celestia-proto", "celestia-types", "derive_more", + "hex", "ibc", "ibc-proto", + "ics08-wasm", "ics23 0.11.0", "prost 0.12.1", "schemars", @@ -3660,6 +3661,7 @@ dependencies = [ "tendermint-light-client-verifier 0.32.0", "tendermint-proto 0.32.0", "thiserror", + "typed-builder", ] [[package]] @@ -3669,7 +3671,6 @@ dependencies = [ "cosmwasm-schema", "cosmwasm-std", "derive_more", - "getrandom", "ibc", "ibc-proto", "ics08-wasm", @@ -3883,9 +3884,9 @@ dependencies = [ [[package]] name = "spin" -version = "0.5.2" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] name = "spki" @@ -4287,7 +4288,7 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.4", + "socket2 0.5.5", "tokio-macros", "windows-sys", ] @@ -4350,9 +4351,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" dependencies = [ "bytes", "futures-core", @@ -4374,9 +4375,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.2" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" +checksum = "8ff9e3abce27ee2c9a37f9ad37238c1bdd4e789c84ba37df76aa4d528f5072cc" dependencies = [ "serde", "serde_spanned", @@ -4386,18 +4387,18 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.20.2" +version = "0.20.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" dependencies = [ "indexmap 2.0.2", "serde", @@ -4461,7 +4462,7 @@ dependencies = [ "rand", "slab", "tokio", - "tokio-util 0.7.9", + "tokio-util 0.7.10", "tower-layer", "tower-service", "tracing", @@ -4533,12 +4534,12 @@ dependencies = [ [[package]] name = "tracing-log" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" dependencies = [ - "lazy_static", "log", + "once_cell", "tracing-core", ] @@ -4562,6 +4563,26 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +[[package]] +name = "typed-builder" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e47c0496149861b7c95198088cbf36645016b1a0734cf350c50e2a38e070f38a" +dependencies = [ + "typed-builder-macro", +] + +[[package]] +name = "typed-builder-macro" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "982ee4197351b5c9782847ef5ec1fdcaf50503fb19d68f9771adae314e72b492" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.38", +] + [[package]] name = "typenum" version = "1.17.0" @@ -4627,9 +4648,9 @@ checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" [[package]] name = "untrusted" -version = "0.7.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" @@ -4699,9 +4720,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -4709,9 +4730,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217" dependencies = [ "bumpalo", "log", @@ -4724,9 +4745,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.37" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +checksum = "9afec9963e3d0994cac82455b2b3502b81a7f40f9a0d32181f7528d9f4b43e02" dependencies = [ "cfg-if", "js-sys", @@ -4736,9 +4757,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4746,9 +4767,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907" dependencies = [ "proc-macro2", "quote", @@ -4759,15 +4780,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b" [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85" dependencies = [ "js-sys", "wasm-bindgen", @@ -4890,9 +4911,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winnow" -version = "0.5.17" +version = "0.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3b801d0e0a6726477cc207f60162da452f3a95adb368399bef20a946e06f65c" +checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" dependencies = [ "memchr", ] diff --git a/Cargo.toml b/Cargo.toml index 4b69fdee..c0aac14c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,4 @@ [workspace] -resolver = "2" members = [ "clients/ics08-wasm", "clients/sov-celestia", @@ -8,6 +7,7 @@ members = [ "modules/sov-ibc-transfer", "mocks", ] +resolver = "2" [workspace.package] version = "0.1.0" diff --git a/Makefile b/Makefile index 959aeda4..87e368c4 100644 --- a/Makefile +++ b/Makefile @@ -3,18 +3,6 @@ help: ## Display this help message @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) -build: ## Build the the project - @cargo build - -clean: ## Cleans compiled - @cargo clean - -test-legacy: ## Runs test suite with output from tests printed - @cargo test -- --nocapture -Zunstable-options --report-time - -test: ## Runs test suite using next test - @cargo nextest run --workspace --all-features - install-dev-tools: ## Installs all necessary cargo helpers cargo install cargo-llvm-cov cargo install cargo-hack @@ -24,6 +12,25 @@ install-dev-tools: ## Installs all necessary cargo helpers cargo install cargo-risczero cargo risczero install +build: ## Build the the entire project + @cargo build + +build-sov-celestia-cw: ## Build the WASM file for the sov-celestia-cw light client + @echo "Building the WASM file for the sov-celestia-cw light client" + @RUSTFLAGS='-C link-arg=-s' cargo build -p sov-celestia-client-cw --target wasm32-unknown-unknown --release --lib --locked + @mkdir -p contracts + @cp target/wasm32-unknown-unknown/release/sov_celestia_client_cw.wasm contracts/ + +optimize-contracts: ## Optimize WASM files in contracts directory + @echo "Optimizing WASM files..." + @for wasm_file in contracts/*.wasm; do \ + optimized_file="contracts/$$(basename $$wasm_file .wasm).opt.wasm"; \ + wasm-opt "$$wasm_file" -o "$$optimized_file" -Os; \ + done + +clean: ## Cleans compiled + @cargo clean + lint: ## cargo check and clippy. Skip clippy on guest code since it's not supported by risc0 ## fmt first, because it's the cheapest cargo +nightly fmt --all --check @@ -35,17 +42,17 @@ lint-fix: ## cargo fmt, fix and clippy. Skip clippy on guest code since it's no cargo fix --allow-dirty CI_SKIP_GUEST_BUILD=1 cargo clippy --fix --allow-dirty +find-unused-deps: ## Prints unused dependencies for project. Note: requires nightly + cargo udeps --all-targets --all-features + check-features: ## Checks that project compiles with all combinations of features. default is not needed because we never check `cfg(default)`, we only use it as an alias. cargo hack check --workspace --feature-powerset --exclude-features default -check-fuzz: ## Checks that fuzz member compiles - $(MAKE) -C fuzz check - -find-unused-deps: ## Prints unused dependencies for project. Note: requires nightly - cargo udeps --all-targets --all-features +test-legacy: ## Runs test suite with output from tests printed + @cargo test -- --nocapture -Zunstable-options --report-time -find-flaky-tests: ## Runs tests over and over to find if there's flaky tests - flaky-finder -j16 -r320 --continue "cargo test -- --nocapture" +test: ## Runs test suite using next test + @cargo nextest run --workspace --all-features coverage: ## Coverage in lcov format cargo llvm-cov --locked --lcov --output-path lcov.info @@ -53,8 +60,8 @@ coverage: ## Coverage in lcov format coverage-html: ## Coverage in HTML format cargo llvm-cov --locked --all-features --html -dry-run-publish: - yq '.[]' packages_to_publish.yml | xargs -I _ cargo publish --allow-dirty --dry-run -p _ - docs: ## Generates documentation locally cargo doc --open + +dry-run-publish: + yq '.[]' packages_to_publish.yml | xargs -I _ cargo publish --allow-dirty --dry-run -p _ diff --git a/clients/ics08-wasm/Cargo.toml b/clients/ics08-wasm/Cargo.toml index fff53f2f..e65b84d7 100644 --- a/clients/ics08-wasm/Cargo.toml +++ b/clients/ics08-wasm/Cargo.toml @@ -5,7 +5,6 @@ authors = { workspace = true } license = { workspace = true } rust-version = { workspace = true } edition = { workspace = true } -resolver = "2" [dependencies] # external dependencies diff --git a/clients/ics08-wasm/src/lib.rs b/clients/ics08-wasm/src/lib.rs index e8ee8cda..d81b53c6 100644 --- a/clients/ics08-wasm/src/lib.rs +++ b/clients/ics08-wasm/src/lib.rs @@ -18,6 +18,8 @@ pub mod client_message; pub mod client_state; pub mod consensus_state; pub mod msg; + +#[cfg(feature = "cosmwasm")] pub mod serializer; pub type Bytes = Vec; diff --git a/clients/ics08-wasm/src/serializer.rs b/clients/ics08-wasm/src/serializer.rs index 49fe693f..847aa885 100644 --- a/clients/ics08-wasm/src/serializer.rs +++ b/clients/ics08-wasm/src/serializer.rs @@ -1,5 +1,9 @@ +use alloc::string::String; +use alloc::vec::Vec; + use base64::prelude::BASE64_STANDARD; use base64::Engine; +use serde::de::Error; use serde::{Deserialize, Deserializer, Serialize, Serializer}; pub struct Base64; @@ -14,7 +18,7 @@ impl Base64 { let base64 = String::deserialize(deserializer)?; let bytes = BASE64_STANDARD .decode(base64.as_bytes()) - .map_err(serde::de::Error::custom)?; + .map_err(Error::custom)?; Ok(bytes) } diff --git a/clients/sov-celestia-cw/Cargo.toml b/clients/sov-celestia-cw/Cargo.toml index 9e169af3..65ea951e 100644 --- a/clients/sov-celestia-cw/Cargo.toml +++ b/clients/sov-celestia-cw/Cargo.toml @@ -8,7 +8,6 @@ rust-version = { workspace = true } version = { workspace = true } readme = "README.md" publish = false -resolver = "2" [lib] crate-type = ["cdylib", "rlib"] @@ -20,7 +19,6 @@ prost = { workspace = true, default-features = false } serde = { workspace = true, features = ["derive"] } serde_json = { package = "serde-json-wasm", version = "1.0.0" , default-features = false, optional = true } thiserror = { version = "1.0.31" } -getrandom = { version = "0.2", features = ["js"] } # ibc dependencies ibc = { workspace = true } diff --git a/clients/sov-celestia/Cargo.toml b/clients/sov-celestia/Cargo.toml index ab616ba5..92470b60 100644 --- a/clients/sov-celestia/Cargo.toml +++ b/clients/sov-celestia/Cargo.toml @@ -8,7 +8,6 @@ rust-version = { workspace = true } version = { workspace = true } readme = "README.md" publish = false -resolver = "2" [dependencies] # external dependencies @@ -20,12 +19,15 @@ schemars = { workspace = true, optional = true } serde = { workspace = true, features = ["derive"], optional = true } serde_json = { package = "serde-json-wasm", version = "1.0.0" , default-features = false, optional = true } thiserror = { version = "1.0.31" } +typed-builder = { version = "0.18.0", optional = true } # ibc dependencies ibc = { workspace = true } ibc-proto = { version = "0.37.1", default-features = false } ics23 = {version = "0.11", default-features = false } +ics08-wasm = { path = "../ics08-wasm", default-features = false, features = ["cosmwasm"] } +# DA layer dependencies tendermint = { git = "https://github.com/eigerco/celestia-tendermint-rs.git", rev = "1f8b574", default-features = false } tendermint-proto = { git = "https://github.com/eigerco/celestia-tendermint-rs.git", rev = "1f8b574" } tendermint-light-client-verifier = { git = "https://github.com/eigerco/celestia-tendermint-rs.git", rev = "1f8b574" } @@ -33,6 +35,10 @@ tendermint-light-client-verifier = { git = "https://github.com/eigerco/celestia- celestia-proto = { git = "https://github.com/eigerco/celestia-node-rs.git", rev = "1fa61eb" } celestia-types = { git = "https://github.com/eigerco/celestia-node-rs.git", rev = "1fa61eb", default-features = false } +[dev-dependencies] +typed-builder = "0.18.0" +hex = "0.4.3" + [features] default = ["std"] std = [ @@ -51,9 +57,9 @@ serde = [ "dep:serde", "serde_json", ] - json-schema = [ "ibc/schema", "ibc-proto/json-schema", "dep:schemars", -] \ No newline at end of file +] +test-utils = ["dep:typed-builder"] \ No newline at end of file diff --git a/clients/sov-celestia/src/client_state/definition.rs b/clients/sov-celestia/src/client_state/definition.rs index 7b231c53..feea7f12 100644 --- a/clients/sov-celestia/src/client_state/definition.rs +++ b/clients/sov-celestia/src/client_state/definition.rs @@ -294,3 +294,59 @@ impl From for Any { } } } + +#[cfg(any(test, feature = "test-utils"))] +pub mod test_util { + use ics08_wasm::client_state::ClientState as WasmClientState; + + use super::*; + use crate::Bytes; + + #[derive(typed_builder::TypedBuilder, Debug)] + pub struct ClientStateConfig { + pub chain_id: ChainId, + #[builder(default)] + pub trust_level: TrustThreshold, + #[builder(default = Duration::from_secs(64000))] + pub trusting_period: Duration, + #[builder(default = Duration::from_secs(128000))] + pub unbonding_period: Duration, + #[builder(default = Duration::from_millis(3000))] + max_clock_drift: Duration, + pub latest_height: Height, + #[builder(default)] + pub proof_specs: ProofSpecs, + #[builder(default)] + pub upgrade_path: Vec, + #[builder(default = AllowUpdate { after_expiry: false, after_misbehaviour: false })] + allow_update: AllowUpdate, + } + + impl TryFrom for ClientState { + type Error = Error; + + fn try_from(config: ClientStateConfig) -> Result { + ClientState::new( + config.chain_id, + config.trust_level, + config.trusting_period, + config.unbonding_period, + config.max_clock_drift, + config.latest_height, + config.proof_specs, + config.upgrade_path, + config.allow_update, + ) + } + } + + impl ClientState { + pub fn into_wasm(&self, code_hash: Bytes) -> WasmClientState { + WasmClientState { + data: Any::from(self.clone()).value, + code_hash, + latest_height: self.latest_height, + } + } + } +} diff --git a/clients/sov-celestia/src/consensus_state/definition.rs b/clients/sov-celestia/src/consensus_state/definition.rs index fbe6be4c..b23bc56c 100644 --- a/clients/sov-celestia/src/consensus_state/definition.rs +++ b/clients/sov-celestia/src/consensus_state/definition.rs @@ -162,3 +162,18 @@ impl ConsensusStateTrait for ConsensusState { >::encode_vec(self).unwrap() } } + +#[cfg(any(test, feature = "test-utils"))] +pub mod test_util { + use ics08_wasm::consensus_state::ConsensusState as WasmConsensusState; + + use super::*; + + impl ConsensusState { + pub fn into_wasm(&self) -> WasmConsensusState { + WasmConsensusState { + data: Any::from(self.clone()).value, + } + } + } +} diff --git a/mocks/Cargo.toml b/mocks/Cargo.toml index 8a850672..c4ad45ed 100644 --- a/mocks/Cargo.toml +++ b/mocks/Cargo.toml @@ -8,7 +8,6 @@ rust-version = { workspace = true } version = { workspace = true } readme = "README.md" publish = false -resolver = "2" [dependencies] # external dependencies diff --git a/modules/sov-ibc-transfer/Cargo.toml b/modules/sov-ibc-transfer/Cargo.toml index 6cebaa1e..06a673f4 100644 --- a/modules/sov-ibc-transfer/Cargo.toml +++ b/modules/sov-ibc-transfer/Cargo.toml @@ -8,7 +8,6 @@ rust-version = { workspace = true } version = { workspace = true } readme = "README.md" publish = false -resolver = "2" [dependencies] # external dependencies diff --git a/modules/sov-ibc/Cargo.toml b/modules/sov-ibc/Cargo.toml index ea6500e6..d1087e2b 100644 --- a/modules/sov-ibc/Cargo.toml +++ b/modules/sov-ibc/Cargo.toml @@ -8,7 +8,6 @@ rust-version = { workspace = true } version = { workspace = true } readme = "README.md" publish = false -resolver = "2" [dependencies] # external dependencies