From 5a67e4beca843bc337b20d3039c223dfb3b29196 Mon Sep 17 00:00:00 2001 From: Rano | Ranadeep Date: Mon, 29 Apr 2024 18:05:46 +0200 Subject: [PATCH] impl: use `Payable` trait (#153) * changes for impl Payable * update impl Payable args * use ModuleId * use StateItemEncoder and StateItemDecoder * update mocks * rm unused import * use symlinked constants.json * use ibc_transfer module id * fn compute_module_address * use module address * update compute_module_address * update ChainStateConfig * impl Debug and Clone separately * use custom clone method * fix clippy * fix tests * bump sov-sdk rev * fix compile * update cargo lockfile * update sov-sdk-wip rev in nix flake * update nix-flake lockfile * update comment --- Cargo.lock | 335 +++++++++++++----------- constants.json | 34 +-- flake.lock | 22 +- flake.nix | 2 +- mocks/src/configs.rs | 2 +- mocks/src/sovereign/rollup.rs | 6 +- mocks/src/sovereign/runtime/config.rs | 68 ++++- mocks/src/tests/transfer.rs | 14 +- modules/sov-ibc-transfer/src/context.rs | 30 ++- modules/sov-ibc-transfer/src/lib.rs | 12 +- modules/sov-ibc-transfer/src/utils.rs | 17 ++ modules/sov-ibc/src/codec.rs | 31 ++- modules/sov-ibc/src/lib.rs | 6 +- modules/sov-ibc/src/rpc/helpers.rs | 2 +- vendor/sovereign-sdk | 2 +- 15 files changed, 326 insertions(+), 257 deletions(-) mode change 100644 => 120000 constants.json diff --git a/Cargo.lock b/Cargo.lock index e63a4e87..96ce1c7b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -150,7 +150,7 @@ dependencies = [ "argh_shared", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -436,18 +436,18 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] name = "async-trait" -version = "0.1.79" +version = "0.1.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" +checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -458,7 +458,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -707,7 +707,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -928,7 +928,7 @@ checksum = "4da9a32f3fed317401fa3c862968128267c3106685286e15d5aaa3d7389c2f60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -959,12 +959,13 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.92" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2678b2e3449475e95b0aa6f9b506a28e61b3dc8996592b983695e8ebb58a8b41" +checksum = "d32a725bc159af97c3e629873bb9f88fb8cf8a4867175f76dc987815ea07c83b" dependencies = [ "jobserver", "libc", + "once_cell", ] [[package]] @@ -1088,7 +1089,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -1232,9 +1233,9 @@ dependencies = [ [[package]] name = "cosmwasm-crypto" -version = "1.5.3" +version = "1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9934c79e58d9676edfd592557dee765d2a6ef54c09d5aa2edb06156b00148966" +checksum = "e6b4c3f9c4616d6413d4b5fc4c270a4cc32a374b9be08671e80e1a019f805d8f" dependencies = [ "digest 0.10.7", "ecdsa", @@ -1246,18 +1247,18 @@ dependencies = [ [[package]] name = "cosmwasm-derive" -version = "1.5.3" +version = "1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5e72e330bd3bdab11c52b5ecbdeb6a8697a004c57964caeb5d876f0b088b3c" +checksum = "c586ced10c3b00e809ee664a895025a024f60d65d34fe4c09daed4a4db68a3f3" dependencies = [ "syn 1.0.109", ] [[package]] name = "cosmwasm-schema" -version = "1.5.3" +version = "1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3e3a2136e2a60e8b6582f5dffca5d1a683ed77bf38537d330bc1dfccd69010" +checksum = "8467874827d384c131955ff6f4d47d02e72a956a08eb3c0ff24f8c903a5517b4" dependencies = [ "cosmwasm-schema-derive", "schemars", @@ -1268,9 +1269,9 @@ dependencies = [ [[package]] name = "cosmwasm-schema-derive" -version = "1.5.3" +version = "1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5d803bea6bd9ed61bd1ee0b4a2eb09ee20dbb539cc6e0b8795614d20952ebb1" +checksum = "f6db85d98ac80922aef465e564d5b21fa9cfac5058cb62df7f116c3682337393" dependencies = [ "proc-macro2", "quote", @@ -1279,9 +1280,9 @@ dependencies = [ [[package]] name = "cosmwasm-std" -version = "1.5.3" +version = "1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef8666e572a3a2519010dde88c04d16e9339ae751b56b2bb35081fe3f7d6be74" +checksum = "712fe58f39d55c812f7b2c84e097cdede3a39d520f89b6dc3153837e31741927" dependencies = [ "base64 0.21.7", "bech32 0.9.1", @@ -1301,9 +1302,9 @@ dependencies = [ [[package]] name = "cosmwasm-vm" -version = "1.5.3" +version = "1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "011bc44b0d617f440ea509b38e543437511a196c6e2a0ebd3425edd912902fb2" +checksum = "faf59efc75d03bb757612998e6b839675bff844871a7c9ec9f52ad4093f665cd" dependencies = [ "bitflags 1.3.2", "bytecheck", @@ -1534,7 +1535,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -1570,7 +1571,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -1581,7 +1582,7 @@ checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" dependencies = [ "darling_core", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -1591,7 +1592,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "lock_api", "once_cell", "parking_lot_core", @@ -1599,15 +1600,15 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" [[package]] name = "data-encoding-macro" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20c01c06f5f429efdf2bae21eb67c28b3df3cf85b7dd2d8ef09c0838dac5d33e" +checksum = "f1559b6cba622276d6d63706db152618eeb15b89b3e4041446b05876e352e639" dependencies = [ "data-encoding", "data-encoding-macro-internal", @@ -1615,9 +1616,9 @@ dependencies = [ [[package]] name = "data-encoding-macro-internal" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0047d07f2c89b17dd631c80450d69841a6b5d7fb17278cbc43d7e4cfcf2576f3" +checksum = "332d754c0af53bc87c108fed664d121ecf59207ec4196041f04d6ab9002ad33f" dependencies = [ "data-encoding", "syn 1.0.109", @@ -1713,7 +1714,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -1838,9 +1839,9 @@ dependencies = [ [[package]] name = "either" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" +checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" [[package]] name = "elf" @@ -1905,7 +1906,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -1926,7 +1927,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -1984,9 +1985,9 @@ checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" [[package]] name = "fastrand" -version = "2.0.2" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "fastrlp" @@ -2030,9 +2031,9 @@ dependencies = [ [[package]] name = "fiat-crypto" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c007b1ae3abe1cb6f85a16305acd418b7ca6343b953633fee2b76d8f108b830f" +checksum = "38793c55593b33412e3ae40c2c9781ffaa6f438f6f8c10f24e71846fbd7ae01e" [[package]] name = "fixed-hash" @@ -2054,9 +2055,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.28" +version = "1.0.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +checksum = "4556222738635b7a3417ae6130d8f52201e45a0c4d1a907f0826383adb5f85e7" dependencies = [ "crc32fast", "miniz_oxide", @@ -2155,7 +2156,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -2374,9 +2375,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hdrhistogram" @@ -2968,7 +2969,7 @@ source = "git+https://github.com/cosmos/ibc-rs.git?rev=d5e3887770#d5e3887770d357 dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -3128,7 +3129,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.14.5", ] [[package]] @@ -3224,9 +3225,9 @@ dependencies = [ [[package]] name = "jobserver" -version = "0.1.28" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6" +checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" dependencies = [ "libc", ] @@ -3444,7 +3445,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -3478,7 +3479,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" dependencies = [ "cfg-if", - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] @@ -3532,9 +3533,9 @@ checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -3813,7 +3814,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -3914,9 +3915,9 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" dependencies = [ "lock_api", "parking_lot_core", @@ -3924,15 +3925,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.52.5", ] [[package]] @@ -3949,9 +3950,9 @@ checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" [[package]] name = "peg" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "400bcab7d219c38abf8bd7cc2054eb9bbbd4312d66f6a5557d572a203f646f61" +checksum = "8a625d12ad770914cbf7eff6f9314c3ef803bfe364a1b20bc36ddf56673e71e5" dependencies = [ "peg-macros", "peg-runtime", @@ -3959,9 +3960,9 @@ dependencies = [ [[package]] name = "peg-macros" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46e61cce859b76d19090f62da50a9fe92bab7c2a5f09e183763559a2ac392c90" +checksum = "f241d42067ed3ab6a4fece1db720838e1418f36d868585a27931f95d6bc03582" dependencies = [ "peg-runtime", "proc-macro2", @@ -3970,9 +3971,9 @@ dependencies = [ [[package]] name = "peg-runtime" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36bae92c60fa2398ce4678b98b2c4b5a7c61099961ca1fa305aec04a9ad28922" +checksum = "e3aeb8f54c078314c2065ee649a7241f46b9d8e418e1a9581ba0546657d7aa3a" [[package]] name = "percent-encoding" @@ -4018,7 +4019,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -4063,12 +4064,12 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "prettyplease" -version = "0.2.17" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d3928fb5db768cb86f891ff014f0144589297e3c6a1aba6ed7cecfdace270c7" +checksum = "5ac2cf0f2e4f42b49f5ffd07dae8d746508ef7526c13940e5f524012ae6c6550" dependencies = [ "proc-macro2", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -4137,9 +4138,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.79" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" dependencies = [ "unicode-ident", ] @@ -4208,7 +4209,7 @@ checksum = "80b776a1b2dc779f5ee0641f8ade0125bc1298dd41a9a0c16d8bd57b42d222b1" dependencies = [ "bytes", "heck 0.5.0", - "itertools 0.10.5", + "itertools 0.12.1", "log", "multimap", "once_cell", @@ -4217,7 +4218,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.58", + "syn 2.0.60", "tempfile", ] @@ -4228,10 +4229,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19de2de2a00075bf566bee3bd4db014b11587e84184d3f7a791bc17f1a8e9e48" dependencies = [ "anyhow", - "itertools 0.10.5", + "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -4372,11 +4373,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", ] [[package]] @@ -4890,9 +4891,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.32" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ "bitflags 2.5.0", "errno", @@ -4903,9 +4904,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.10" +version = "0.21.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", "ring", @@ -5023,9 +5024,9 @@ dependencies = [ [[package]] name = "schemars" -version = "0.8.16" +version = "0.8.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" +checksum = "7f55c82c700538496bdc329bb4918a81f87cc8888811bd123cf325a0f2f8d309" dependencies = [ "dyn-clone", "schemars_derive", @@ -5035,14 +5036,14 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.16" +version = "0.8.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" +checksum = "83263746fe5e32097f06356968a077f96089739c927a61450efa069905eec108" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 1.0.109", + "syn 2.0.60", ] [[package]] @@ -5148,9 +5149,9 @@ checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" [[package]] name = "serde" -version = "1.0.197" +version = "1.0.199" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "0c9f6e76df036c77cd94996771fb40db98187f096dd0b9af39c6c6e452ba966a" dependencies = [ "serde_derive", ] @@ -5204,31 +5205,31 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.199" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "11bd257a6541e141e42ca6d24ae26f7714887b47e89aa739099104c7e4d3b7fc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] name = "serde_derive_internals" -version = "0.26.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" +checksum = "330f01ce65a3a5fe59a60c82f3c9a024b573b8a6e875bd233fe5f934e71d54e3" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.60", ] [[package]] name = "serde_json" -version = "1.0.115" +version = "1.0.116" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd" +checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" dependencies = [ "itoa", "ryu", @@ -5243,7 +5244,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -5341,9 +5342,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ "libc", ] @@ -5393,9 +5394,9 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", "windows-sys 0.52.0", @@ -5548,6 +5549,7 @@ dependencies = [ "serde_json", "sov-modules-api", "sov-state", + "thiserror", "tracing", ] @@ -5596,6 +5598,7 @@ name = "sov-db" version = "0.3.0" dependencies = [ "anyhow", + "async-trait", "bincode", "borsh", "byteorder", @@ -5604,7 +5607,6 @@ dependencies = [ "rockbound", "rocksdb", "serde", - "sov-modules-core", "sov-rollup-interface", "tokio", ] @@ -5763,12 +5765,14 @@ dependencies = [ "anyhow", "bincode", "borsh", + "digest 0.10.7", "ed25519-dalek", "hex", "rand", "serde", "sha2 0.10.8", "sov-rollup-interface", + "thiserror", ] [[package]] @@ -5800,6 +5804,7 @@ name = "sov-modules-core" version = "0.3.0" dependencies = [ "anyhow", + "async-trait", "bech32 0.11.0", "borsh", "derivative", @@ -5811,6 +5816,7 @@ dependencies = [ "schemars", "serde", "sha2 0.10.8", + "sov-db", "sov-rollup-interface", "thiserror", ] @@ -5822,6 +5828,7 @@ dependencies = [ "anyhow", "bech32 0.11.0", "borsh", + "hex", "jsonrpsee", "proc-macro2", "quote", @@ -5878,6 +5885,7 @@ dependencies = [ "sov-bank", "sov-modules-api", "sov-state", + "thiserror", ] [[package]] @@ -5968,9 +5976,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.58" +version = "2.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" +checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" dependencies = [ "proc-macro2", "quote", @@ -6239,27 +6247,27 @@ checksum = "c8f546451eaa38373f549093fe9fd05e7d2bade739e2ddf834b9968621d60107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] name = "thiserror" -version = "1.0.58" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.58" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -6351,7 +6359,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -6422,7 +6430,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.9", + "toml_edit 0.22.12", ] [[package]] @@ -6447,15 +6455,15 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.9" +version = "0.22.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4" +checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" dependencies = [ "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.6", + "winnow 0.6.7", ] [[package]] @@ -6495,7 +6503,7 @@ dependencies = [ "proc-macro2", "prost-build", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -6583,7 +6591,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -6652,22 +6660,22 @@ dependencies = [ [[package]] name = "typed-builder" -version = "0.18.1" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444d8748011b93cb168770e8092458cb0f8854f931ff82fdf6ddfbd72a9c933e" +checksum = "77739c880e00693faef3d65ea3aad725f196da38b22fdc7ea6ded6e1ce4d3add" dependencies = [ "typed-builder-macro", ] [[package]] name = "typed-builder-macro" -version = "0.18.1" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "563b3b88238ec95680aef36bdece66896eaa7ce3c0f1b4f39d38fb2435261352" +checksum = "1f718dfaf347dcb5b983bfc87608144b0bad87970aebcbea5ce44d2a30c08e63" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -6697,7 +6705,7 @@ checksum = "ac73887f47b9312552aa90ef477927ff014d63d1920ca8037c6c1951eab64bb1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -6859,7 +6867,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", "wasm-bindgen-shared", ] @@ -6916,7 +6924,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -6949,7 +6957,7 @@ checksum = "b7f89739351a2e03cb94beb799d47fb2cac01759b40ec441f7de39b00cbf7ef0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -7157,11 +7165,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" dependencies = [ - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -7198,7 +7206,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.5", ] [[package]] @@ -7218,17 +7226,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" dependencies = [ - "windows_aarch64_gnullvm 0.52.4", - "windows_aarch64_msvc 0.52.4", - "windows_i686_gnu 0.52.4", - "windows_i686_msvc 0.52.4", - "windows_x86_64_gnu 0.52.4", - "windows_x86_64_gnullvm 0.52.4", - "windows_x86_64_msvc 0.52.4", + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", ] [[package]] @@ -7239,9 +7248,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" [[package]] name = "windows_aarch64_msvc" @@ -7257,9 +7266,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" [[package]] name = "windows_i686_gnu" @@ -7275,9 +7284,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" [[package]] name = "windows_i686_msvc" @@ -7293,9 +7308,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" [[package]] name = "windows_x86_64_gnu" @@ -7311,9 +7326,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" [[package]] name = "windows_x86_64_gnullvm" @@ -7323,9 +7338,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" [[package]] name = "windows_x86_64_msvc" @@ -7341,9 +7356,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.4" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" [[package]] name = "winnow" @@ -7356,9 +7371,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0c976aaaa0e1f90dbb21e9587cdaf1d9679a1cde8875c0d6bd83ab96a208352" +checksum = "14b9415ee827af173ebb3f15f9083df5a122eb93572ec28741fb153356ea2578" dependencies = [ "memchr", ] @@ -7399,7 +7414,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] @@ -7419,7 +7434,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.60", ] [[package]] diff --git a/constants.json b/constants.json deleted file mode 100644 index 7e98e84c..00000000 --- a/constants.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "comment": "Sovereign SDK constants", - "gas": { - "Bank": { - "create_token": [ - 4, - 4 - ], - "transfer": [ - 5, - 5 - ], - "burn": [ - 2, - 2 - ], - "mint": [ - 2, - 2 - ], - "freeze": [ - 1, - 1 - ] - } - }, - "constants": { - "DEFERRED_SLOTS_COUNT": 2, - "GAS_TOKEN_ID": "token_1rwrh8gn2py0dl4vv65twgctmlwck6esm2as9dftumcw89kqqn3nqrduss6", - "GAS_TX_FIXED_COST": [0, 0], - "GAS_TX_COST_PER_BYTE": [0, 0] - } -} diff --git a/constants.json b/constants.json new file mode 120000 index 00000000..83705edf --- /dev/null +++ b/constants.json @@ -0,0 +1 @@ +vendor/sovereign-sdk/constants.json \ No newline at end of file diff --git a/flake.lock b/flake.lock index 97c996c8..ec16193d 100644 --- a/flake.lock +++ b/flake.lock @@ -38,11 +38,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1712757991, - "narHash": "sha256-kR7C7Fqt3JP40h0mzmSZeWI5pk1iwqj4CSeGjnUbVHc=", + "lastModified": 1714314149, + "narHash": "sha256-yNAevSKF4krRWacmLUsLK7D7PlfuY3zF0lYnGYNi9vQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d6b3ddd253c578a7ab98f8011e59990f21dc3932", + "rev": "cf8cc1201be8bc71b7cbbbdaf349b22f4f99c7ae", "type": "github" }, "original": { @@ -82,11 +82,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1712801594, - "narHash": "sha256-KZJnVw3TdfDyUhvClzgy3IEoC9tRhvG0yM+lHfqAm34=", + "lastModified": 1714356894, + "narHash": "sha256-W6Mss7AG6bnFT1BqRApHXvLXBrFOu7V0+EUe9iML30s=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "35ebec41fcdeeae8e012e7d62ba153a13645227f", + "rev": "d9b44509b4064f0a3fc9c7c92a603861f52fbedc", "type": "github" }, "original": { @@ -98,16 +98,16 @@ "sovereign-sdk-src": { "flake": false, "locked": { - "lastModified": 1711704165, - "narHash": "sha256-bmOvCxA6paFllm58AaxWRvLvyWhtM+Q/nAyyGIvVS3A=", + "lastModified": 1714386414, + "narHash": "sha256-Kuqyak82tSkhljNcjcch1rx2PwlfRf9+dhDEansvR58=", "ref": "refs/heads/nightly", - "rev": "20bfd68c8c740b447d51eb50381b5590102258bb", - "revCount": 911, + "rev": "63fa5f110ebb323100ff740e6b152ba42a6ae84c", + "revCount": 977, "type": "git", "url": "ssh://git@github.com/informalsystems/sovereign-sdk-wip" }, "original": { - "rev": "20bfd68c8c740b447d51eb50381b5590102258bb", + "rev": "63fa5f110ebb323100ff740e6b152ba42a6ae84c", "type": "git", "url": "ssh://git@github.com/informalsystems/sovereign-sdk-wip" } diff --git a/flake.nix b/flake.nix index 4f1ebde2..477c936e 100644 --- a/flake.nix +++ b/flake.nix @@ -8,7 +8,7 @@ sovereign-sdk-src = { flake = false; - url = git+ssh://git@github.com/informalsystems/sovereign-sdk-wip?rev=20bfd68c8c740b447d51eb50381b5590102258bb; + url = git+ssh://git@github.com/informalsystems/sovereign-sdk-wip?rev=63fa5f110ebb323100ff740e6b152ba42a6ae84c; }; }; diff --git a/mocks/src/configs.rs b/mocks/src/configs.rs index 99575135..f2b82287 100644 --- a/mocks/src/configs.rs +++ b/mocks/src/configs.rs @@ -75,7 +75,7 @@ impl TestSetupConfig { pub fn kernel_genesis_config(&self) -> BasicKernelGenesisConfig { BasicKernelGenesisConfig { - chain_state: self.rollup_genesis_config.chain_state_config.clone(), + chain_state: self.rollup_genesis_config.cloned_chain_state_config(), } } diff --git a/mocks/src/sovereign/rollup.rs b/mocks/src/sovereign/rollup.rs index 33c3d35a..4e95a7e6 100644 --- a/mocks/src/sovereign/rollup.rs +++ b/mocks/src/sovereign/rollup.rs @@ -7,7 +7,7 @@ use std::sync::{Arc, Mutex}; use ibc_client_tendermint::types::Header; use ibc_core::client::types::Height; use ibc_core::host::types::identifiers::ChainId; -use sov_bank::{CallMessage as BankCallMessage, TokenConfig, TokenId}; +use sov_bank::{CallMessage as BankCallMessage, Payable, TokenConfig, TokenId}; use sov_celestia_client::types::client_message::test_util::dummy_sov_header; use sov_celestia_client::types::client_message::SovTmHeader; use sov_consensus_state_tracker::{ConsensusStateTracker, HasConsensusState}; @@ -144,12 +144,12 @@ where } /// Returns the balance of a user for a given token - pub fn get_balance_of(&self, user_address: S::Address, token_id: TokenId) -> u64 { + pub fn get_balance_of(&self, user_address: &S::Address, token_id: TokenId) -> u64 { let mut working_set: WorkingSet = WorkingSet::new(self.prover_storage()); self.runtime() .bank - .get_balance_of(user_address, token_id, &mut working_set) + .get_balance_of(user_address.as_token_holder(), token_id, &mut working_set) .unwrap() } diff --git a/mocks/src/sovereign/runtime/config.rs b/mocks/src/sovereign/runtime/config.rs index e2137e11..d064638c 100644 --- a/mocks/src/sovereign/runtime/config.rs +++ b/mocks/src/sovereign/runtime/config.rs @@ -1,3 +1,4 @@ +use std::fmt; use std::time::{SystemTime, UNIX_EPOCH}; use sov_bank::{BankConfig, GasTokenConfig}; @@ -5,8 +6,9 @@ use sov_chain_state::ChainStateConfig; use sov_ibc::ExampleModuleConfig; use sov_ibc_transfer::TransferConfig; use sov_modules_api::utils::generate_address as gen_address_generic; -use sov_modules_api::{Gas, GasArray, Spec}; +use sov_modules_api::{Spec, Zkvm}; use sov_rollup_interface::da::Time; +use sov_rollup_interface::zk::CodeCommitment; /// The default initial slot height. pub const DEFAULT_INIT_HEIGHT: u64 = 1; @@ -23,7 +25,6 @@ pub const DEFAULT_GAS_TOKEN_NAME: &str = "sov-gas-token"; /// The default salt. pub const DEFAULT_SALT: u64 = 0; -#[derive(Clone, Debug)] pub struct RollupGenesisConfig { pub chain_state_config: ChainStateConfig, pub bank_config: BankConfig, @@ -31,6 +32,58 @@ pub struct RollupGenesisConfig { pub ibc_transfer_config: TransferConfig, } +impl RollupGenesisConfig { + pub fn cloned_chain_state_config(&self) -> ChainStateConfig { + ChainStateConfig { + current_time: self.chain_state_config.current_time.clone(), + genesis_da_height: self.chain_state_config.genesis_da_height, + inner_code_commitment: self.chain_state_config.inner_code_commitment.clone(), + outer_code_commitment: self.chain_state_config.outer_code_commitment.clone(), + } + } +} + +impl Clone for RollupGenesisConfig { + fn clone(&self) -> Self { + Self { + chain_state_config: self.cloned_chain_state_config(), + bank_config: self.bank_config.clone(), + ibc_config: self.ibc_config.clone(), + ibc_transfer_config: self.ibc_transfer_config.clone(), + } + } +} + +impl fmt::Debug for RollupGenesisConfig +where + ::CodeCommitment: fmt::Debug, + ::CodeCommitment: fmt::Debug, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("RollupGenesisConfig") + .field( + "chain_state_config.current_time", + &self.chain_state_config.current_time, + ) + .field( + "chain_state_config.inner_code_commitment", + &self.chain_state_config.inner_code_commitment, + ) + .field( + "chain_state_config.outer_code_commitment", + &self.chain_state_config.outer_code_commitment, + ) + .field( + "chain_state_config.genesis_da_height", + &self.chain_state_config.genesis_da_height, + ) + .field("bank_config", &self.bank_config) + .field("ibc_config", &self.ibc_config) + .field("ibc_transfer_config", &self.ibc_transfer_config) + .finish() + } +} + impl RollupGenesisConfig { pub fn new( chain_state_config: ChainStateConfig, @@ -77,10 +130,13 @@ pub fn create_chain_state_config() -> ChainStateConfig { ChainStateConfig { current_time: Time::from_secs(seconds.try_into().unwrap()), - gas_price_blocks_depth: 10, - gas_price_maximum_elasticity: 1, - initial_gas_price: <::Gas as Gas>::Price::ZEROED, - minimum_gas_price: <::Gas as Gas>::Price::ZEROED, + genesis_da_height: 0, + // These are for `MockCodeCommitment`, works with `MockZkVerifier`, which + // is being used in `DefaultSpec`. These may fail for other zk verifiers. + inner_code_commitment: ::CodeCommitment::decode([0u8; 32].as_slice()) + .unwrap(), + outer_code_commitment: ::CodeCommitment::decode([0u8; 32].as_slice()) + .unwrap(), } } diff --git a/mocks/src/tests/transfer.rs b/mocks/src/tests/transfer.rs index 925b7fbd..1ba2a030 100644 --- a/mocks/src/tests/transfer.rs +++ b/mocks/src/tests/transfer.rs @@ -48,7 +48,7 @@ async fn test_escrow_unescrow_on_sov() { let sender_balance = rly .src_chain_ctx() .service() - .get_balance_of(cfg.sov_address, gas_token.token_id); + .get_balance_of(&cfg.sov_address, gas_token.token_id); assert_eq!(sender_balance, expected_sender_balance); @@ -100,7 +100,7 @@ async fn test_escrow_unescrow_on_sov() { let fake_token_sender_initial_balance = rly .src_chain_ctx() .service() - .get_balance_of(cfg.sov_address, fake_token_id); + .get_balance_of(&cfg.sov_address, fake_token_id); let msg_transfer_on_sov = rly.build_msg_transfer_for_sov(&cfg); @@ -116,14 +116,14 @@ async fn test_escrow_unescrow_on_sov() { let gas_token_sender_balance = rly .src_chain_ctx() .service() - .get_balance_of(cfg.sov_address, gas_token.token_id); + .get_balance_of(&cfg.sov_address, gas_token.token_id); assert_eq!(gas_token_sender_balance, expected_sender_balance); let fake_token_sender_balance = rly .src_chain_ctx() .service() - .get_balance_of(cfg.sov_address, fake_token_id); + .get_balance_of(&cfg.sov_address, fake_token_id); assert_eq!( fake_token_sender_balance, @@ -256,7 +256,7 @@ async fn test_mint_burn_on_sov() { let receiver_balance = rly .src_chain_ctx() .service() - .get_balance_of(cfg.sov_address, minted_token_id); + .get_balance_of(&cfg.sov_address, minted_token_id); let mut expected_receiver_balance = cfg.amount * 2; @@ -307,7 +307,7 @@ async fn test_mint_burn_on_sov() { let receiver_balance = rly .src_chain_ctx() .service() - .get_balance_of(cfg.sov_address, minted_token_id); + .get_balance_of(&cfg.sov_address, minted_token_id); expected_receiver_balance -= cfg.amount; @@ -339,7 +339,7 @@ async fn test_mint_burn_on_sov() { let receiver_balance = rly .src_chain_ctx() .service() - .get_balance_of(cfg.sov_address, minted_token_id); + .get_balance_of(&cfg.sov_address, minted_token_id); assert_eq!(receiver_balance, expected_receiver_balance); } diff --git a/modules/sov-ibc-transfer/src/context.rs b/modules/sov-ibc-transfer/src/context.rs index 05c25825..279f7e66 100644 --- a/modules/sov-ibc-transfer/src/context.rs +++ b/modules/sov-ibc-transfer/src/context.rs @@ -22,12 +22,12 @@ use ibc_core::host::types::identifiers::{ChannelId, ConnectionId, PortId}; use ibc_core::primitives::Signer; use ibc_core::router::module::Module; use ibc_core::router::types::module::ModuleExtras; -use sov_bank::{Coins, TokenId}; +use sov_bank::{Coins, IntoPayable, Payable, TokenId}; use sov_modules_api::{Context, Spec, WorkingSet}; use uint::FromDecStrErr; use super::IbcTransfer; -use crate::utils::compute_escrow_address; +use crate::utils::{compute_escrow_address, compute_module_address}; /// Using a different salt will result in a different token address. Since /// ICS-20 tokens coming from other chains are guaranteed to have unique names, @@ -160,13 +160,17 @@ impl<'ws, S: Spec> IbcTransferContext<'ws, S> { fn validate_balance( &self, token_id: TokenId, - address: S::Address, + address: &S::Address, amount: Amount, ) -> Result { let sender_balance: u64 = self .ibc_transfer .bank - .get_balance_of(address, token_id, *self.working_set.borrow_mut()) + .get_balance_of( + address.as_token_holder(), + token_id, + *self.working_set.borrow_mut(), + ) .ok_or(TokenTransferError::Other(format!( "No balance for token with ID: '{token_id}'" )))?; @@ -193,11 +197,11 @@ impl<'ws, S: Spec> IbcTransferContext<'ws, S> { fn create_token( &self, token_name: String, - minter_address: S::Address, + minter_address: &S::Address, ) -> Result { // Make sure to use `ibc_transfer` address as the sender let context = Context::new( - self.ibc_transfer.address.clone(), + compute_module_address::(self.ibc_transfer.id.as_bytes()), self.sdk_context.sequencer().clone(), self.sdk_context.visible_slot_number(), ); @@ -209,8 +213,8 @@ impl<'ws, S: Spec> IbcTransferContext<'ws, S> { token_name.clone(), SALT, 0, - minter_address, - vec![self.ibc_transfer.address.clone()], + minter_address.as_token_holder(), + vec![self.ibc_transfer.id.to_payable()], &context, &mut self.working_set.borrow_mut(), ) @@ -306,7 +310,7 @@ where let minted_token_id = self.get_ibc_token_id(coin)?; - self.validate_balance(minted_token_id, account.address.clone(), coin.amount)?; + self.validate_balance(minted_token_id, &account.address, coin.amount)?; Ok(()) } @@ -329,7 +333,7 @@ where let token_id = self.get_native_token_id(coin, port_id, channel_id)?; - self.validate_balance(token_id, from_account.address.clone(), coin.amount)?; + self.validate_balance(token_id, &from_account.address, coin.amount)?; Ok(()) } @@ -359,7 +363,7 @@ where let escrow_address = self.obtain_escrow_address(port_id, channel_id); - self.validate_balance(token_id, escrow_address, coin.amount)?; + self.validate_balance(token_id, &escrow_address, coin.amount)?; Ok(()) } @@ -377,7 +381,7 @@ impl<'ws, S: Spec> TokenTransferExecutionContext for IbcTransferContext<'ws, S> // create a new token and store in the maps let token_id = match self.get_ibc_token_id(coin) { Ok(token_id) => token_id, - Err(_) => self.create_token(coin.denom.to_string(), account.address.clone())?, + Err(_) => self.create_token(coin.denom.to_string(), &account.address)?, }; // 2. mint tokens @@ -391,7 +395,7 @@ impl<'ws, S: Spec> TokenTransferExecutionContext for IbcTransferContext<'ws, S> .mint( &sdk_coins, &account.address, - &self.ibc_transfer.address, + self.ibc_transfer.id.to_payable(), &mut self.working_set.borrow_mut(), ) .map_err(|err| TokenTransferError::Other(err.to_string()))?; diff --git a/modules/sov-ibc-transfer/src/lib.rs b/modules/sov-ibc-transfer/src/lib.rs index c910188f..1373118e 100644 --- a/modules/sov-ibc-transfer/src/lib.rs +++ b/modules/sov-ibc-transfer/src/lib.rs @@ -7,7 +7,7 @@ use ibc_core::handler::types::events::IbcEvent; use ibc_core::host::types::identifiers::{ChannelId, PortId}; use serde::{Deserialize, Serialize}; use sov_bank::TokenId; -use sov_modules_api::{Context, Error, Module, ModuleInfo, Spec, StateMap, WorkingSet}; +use sov_modules_api::{Context, Error, Module, ModuleId, ModuleInfo, Spec, StateMap, WorkingSet}; #[cfg(feature = "native")] mod rpc; @@ -20,9 +20,9 @@ pub struct TransferConfig {} #[cfg_attr(feature = "native", derive(sov_modules_api::ModuleCallJsonSchema))] #[derive(ModuleInfo, Clone)] pub struct IbcTransfer { - /// Address of the module. - #[address] - address: S::Address, + /// Id of the module. + #[id] + pub id: ModuleId, /// Reference to the Bank module. #[module] @@ -77,8 +77,6 @@ impl Module for IbcTransfer { impl core::fmt::Debug for IbcTransfer { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { // FIXME: put real values here, or remove `Debug` requirement from router::Module - f.debug_struct("Transfer") - .field("address", &self.address) - .finish() + f.debug_struct("Transfer").field("id", &self.id).finish() } } diff --git a/modules/sov-ibc-transfer/src/utils.rs b/modules/sov-ibc-transfer/src/utils.rs index 793f669c..a070201e 100644 --- a/modules/sov-ibc-transfer/src/utils.rs +++ b/modules/sov-ibc-transfer/src/utils.rs @@ -20,3 +20,20 @@ pub fn compute_escrow_address(port_id: &PortId, channel_id: &ChannelId) escrow_account_bytes.into() } + +pub fn compute_module_address(module_id_bytes: &[u8]) -> S::Address { + let escrow_account_bytes: [u8; 32] = { + let mut hasher = ::Hasher::new(); + hasher.update(b"module"); + hasher.update([0]); + hasher.update(module_id_bytes); + hasher.update([0]); + hasher.update(VERSION); + hasher.update([0]); + + let hash = hasher.finalize(); + *hash.as_ref() + }; + + escrow_account_bytes.into() +} diff --git a/modules/sov-ibc/src/codec.rs b/modules/sov-ibc/src/codec.rs index 3ee1ab8c..56c5204f 100644 --- a/modules/sov-ibc/src/codec.rs +++ b/modules/sov-ibc/src/codec.rs @@ -6,7 +6,7 @@ use ibc_core::channel::types::commitment::{AcknowledgementCommitment, PacketComm use ibc_core::primitives::proto::Protobuf; use prost::Message; use sov_state::codec::BorshCodec; -use sov_state::storage::{StateCodec, StateItemCodec}; +use sov_state::storage::{StateCodec, StateItemDecoder, StateItemEncoder}; #[derive(Default, Clone)] pub struct ProtobufCodec { @@ -14,17 +14,24 @@ pub struct ProtobufCodec { _raw: PhantomData, } -impl StateItemCodec for ProtobufCodec +impl StateItemEncoder for ProtobufCodec where V: Protobuf, V::Error: Display, Raw: From + Message + Default, { - type Error = Error; - fn encode(&self, value: &V) -> Vec { value.clone().encode_vec() } +} + +impl StateItemDecoder for ProtobufCodec +where + V: Protobuf, + V::Error: Display, + Raw: From + Message + Default, +{ + type Error = Error; fn try_decode(&self, bytes: &[u8]) -> Result { Protobuf::decode_vec(bytes).map_err(|e| { @@ -55,12 +62,14 @@ pub struct PacketCommitmentCodec { borsh_codec: BorshCodec, } -impl StateItemCodec for PacketCommitmentCodec { - type Error = Error; - +impl StateItemEncoder for PacketCommitmentCodec { fn encode(&self, commitment: &PacketCommitment) -> Vec { commitment.clone().into_vec() } +} + +impl StateItemDecoder for PacketCommitmentCodec { + type Error = Error; fn try_decode(&self, bytes: &[u8]) -> Result { Ok(PacketCommitment::from(bytes.to_vec())) @@ -86,12 +95,14 @@ pub struct AcknowledgementCommitmentCodec { borsh_codec: BorshCodec, } -impl StateItemCodec for AcknowledgementCommitmentCodec { - type Error = Error; - +impl StateItemEncoder for AcknowledgementCommitmentCodec { fn encode(&self, commitment: &AcknowledgementCommitment) -> Vec { commitment.clone().into_vec() } +} + +impl StateItemDecoder for AcknowledgementCommitmentCodec { + type Error = Error; fn try_decode(&self, bytes: &[u8]) -> Result { Ok(AcknowledgementCommitment::from(bytes.to_vec())) diff --git a/modules/sov-ibc/src/lib.rs b/modules/sov-ibc/src/lib.rs index 36161258..5e08a90e 100644 --- a/modules/sov-ibc/src/lib.rs +++ b/modules/sov-ibc/src/lib.rs @@ -34,7 +34,7 @@ use sov_celestia_client::client_state::ClientState as HostClientState; use sov_celestia_client::consensus_state::ConsensusState as HostConsensusState; use sov_ibc_transfer::IbcTransfer; use sov_modules_api::{ - Context, Error, ModuleInfo, Spec, StateMap, StateValue, StateVec, WorkingSet, + Context, Error, ModuleId, ModuleInfo, Spec, StateMap, StateValue, StateVec, WorkingSet, }; #[derive(Debug, Clone, Serialize, Deserialize, Eq, PartialEq)] @@ -49,8 +49,8 @@ pub struct ExampleModuleConfig {} #[derive(ModuleInfo, Clone)] #[cfg_attr(feature = "native", derive(sov_modules_api::ModuleCallJsonSchema))] pub struct Ibc { - #[address] - pub address: S::Address, + #[id] + pub id: ModuleId, #[module] transfer: IbcTransfer, diff --git a/modules/sov-ibc/src/rpc/helpers.rs b/modules/sov-ibc/src/rpc/helpers.rs index ef5e9e40..512c39dc 100644 --- a/modules/sov-ibc/src/rpc/helpers.rs +++ b/modules/sov-ibc/src/rpc/helpers.rs @@ -7,7 +7,7 @@ use ibc_core::host::ValidationContext; use jsonrpsee::core::RpcResult; use sov_ibc_transfer::to_jsonrpsee_error; use sov_modules_api::{Spec, StateMap, WorkingSet}; -use sov_state::storage::{StateCodec, StateItemCodec}; +use sov_state::storage::{StateCodec, StateItemCodec, StateItemDecoder}; use crate::context::IbcContext; use crate::Ibc; diff --git a/vendor/sovereign-sdk b/vendor/sovereign-sdk index 20bfd68c..63fa5f11 160000 --- a/vendor/sovereign-sdk +++ b/vendor/sovereign-sdk @@ -1 +1 @@ -Subproject commit 20bfd68c8c740b447d51eb50381b5590102258bb +Subproject commit 63fa5f110ebb323100ff740e6b152ba42a6ae84c