diff --git a/Cargo.lock b/Cargo.lock index 194cfaed..e732150b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -15,7 +15,7 @@ dependencies = [ [[package]] name = "adder" version = "0.0.0" -source = "git+https://github.com/multiversx/mx-contracts-rs?rev=64e8926#64e892655f9c59b2aafe07800af61d0fa41c6ddc" +source = "git+https://github.com/multiversx/mx-contracts-rs?rev=8df9f67#8df9f67a397f89c89f35ca69d53c0d9e7c683dcb" dependencies = [ "multiversx-sc", ] @@ -46,9 +46,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.11" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5" +checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" dependencies = [ "anstyle", "anstyle-parse", @@ -94,9 +94,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.79" +version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" +checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1" [[package]] name = "arrayvec" @@ -131,12 +131,6 @@ version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - [[package]] name = "bech32" version = "0.9.1" @@ -150,8 +144,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93f2635620bf0b9d4576eb7bb9a38a55df78bd1205d26fa994b25911a69f212f" dependencies = [ "bitcoin_hashes", - "rand", - "rand_core", + "rand 0.8.5", + "rand_core 0.6.4", "serde", "unicode-normalization", ] @@ -174,6 +168,15 @@ version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -224,9 +227,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.9.0" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c48f0051a4b4c5e0b6d365cd04af53aeaa209e3cc15ec2cdb69e73cc87fbd0dc" +checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" dependencies = [ "memchr", "serde", @@ -234,9 +237,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "8ea184aa71bb362a1157c896979544cc23974e08fd265f29ea96b59f0b4a555b" [[package]] name = "byteorder" @@ -252,12 +255,9 @@ checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "cc" -version = "1.0.83" +version = "1.0.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" -dependencies = [ - "libc", -] +checksum = "02f341c093d19155a6e41631ce5971aac4e9a868262212153124c15fa22d1cdc" [[package]] name = "cfg-if" @@ -267,9 +267,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clap" -version = "4.5.0" +version = "4.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80c21025abd42669a92efc996ef13cfb2c5c627858421ea58d5c3b331a6c134f" +checksum = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da" dependencies = [ "clap_builder", "clap_derive", @@ -277,9 +277,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.0" +version = "4.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "458bf1f341769dfcf849846f65dffdf9146daa56bcd2a47cb4e1de9915567c99" +checksum = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb" dependencies = [ "anstream", "anstyle", @@ -327,12 +327,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2382f75942f4b3be3690fe4f86365e9c853c1587d6ee58212cebf6e2a9ccd101" -[[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - [[package]] name = "convert_case" version = "0.6.0" @@ -378,9 +372,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" dependencies = [ "cfg-if", ] @@ -422,40 +416,24 @@ dependencies = [ [[package]] name = "curve25519-dalek" -version = "4.1.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89b8c6a2e4b1f45971ad09761aafb85514a84744b67a95e32c3cc1352d1f65c" +checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" dependencies = [ - "cfg-if", - "cpufeatures", - "curve25519-dalek-derive", - "digest", - "fiat-crypto", - "platforms", - "rustc_version", + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", "subtle", "zeroize", ] [[package]] -name = "curve25519-dalek-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "der" -version = "0.7.8" +name = "digest" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "const-oid", - "zeroize", + "generic-array", ] [[package]] @@ -464,32 +442,31 @@ version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer", + "block-buffer 0.10.4", "crypto-common", "subtle", ] [[package]] name = "ed25519" -version = "2.2.3" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" dependencies = [ - "pkcs8", "signature", ] [[package]] name = "ed25519-dalek" -version = "2.1.1" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" dependencies = [ "curve25519-dalek", "ed25519", + "rand 0.7.3", "serde", - "sha2", - "subtle", + "sha2 0.9.9", "zeroize", ] @@ -575,12 +552,6 @@ dependencies = [ "multiversx-sc-scenario", ] -[[package]] -name = "fiat-crypto" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1676f435fc1dadde4d03e43f5d62b259e1ce5f40bd4ffb21db2b42ebe59c1382" - [[package]] name = "flate2" version = "1.0.28" @@ -679,6 +650,17 @@ dependencies = [ "version_check", ] +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + [[package]] name = "getrandom" version = "0.2.12" @@ -688,7 +670,7 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "wasm-bindgen", ] @@ -744,9 +726,9 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c62115964e08cb8039170eb33c1d0e2388a256930279edca206fff675f82c3" +checksum = "379dada1584ad501b383485dd706b8afb7a70fcbc7f4da7d780638a5a6124a60" [[package]] name = "hex" @@ -766,7 +748,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest", + "digest 0.10.7", ] [[package]] @@ -985,7 +967,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.48.0", ] @@ -1021,12 +1003,16 @@ dependencies = [ "esdt-safe", "eth-address", "fee-estimator-module", + "hex", + "hex-literal", "max-bridged-amount-module", "multi-transfer-esdt", "multiversx-price-aggregator-sc", "multiversx-sc", "multiversx-sc-modules", "multiversx-sc-scenario", + "num-bigint", + "num-traits", "token-module", "transaction", "tx-batch-module", @@ -1042,9 +1028,9 @@ dependencies = [ [[package]] name = "multiversx-chain-scenario-format" -version = "0.21.1" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dfc2b1dc76af14c24145672c2779474046ab44ef56bac82a58844328f4b4d2e" +checksum = "7a9190bdd56300e801e7793fc4ee7dc0c76c1149aac019da8c71cc58254966fe" dependencies = [ "bech32", "hex", @@ -1057,11 +1043,12 @@ dependencies = [ [[package]] name = "multiversx-chain-vm" -version = "0.7.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75459864359798406a45a7bb2ed221d623b2e39484ec3e4ac6d23167bfc50b33" +checksum = "a363734a77774f4095fad6f49c6772b82edd833ed47a7c1ca87db18f68ccfffd" dependencies = [ "bitflags 2.4.2", + "colored", "ed25519-dalek", "hex", "hex-literal", @@ -1069,9 +1056,9 @@ dependencies = [ "multiversx-chain-vm-executor", "num-bigint", "num-traits", - "rand", + "rand 0.8.5", "rand_seeder", - "sha2", + "sha2 0.10.8", "sha3", ] @@ -1083,22 +1070,22 @@ checksum = "b59072fa0624b55ae5ae3fa6bfa91515bbeb4ac440214bc4a509e2c8806d6e9f" [[package]] name = "multiversx-price-aggregator-sc" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8de03c6796bd16c39cafafd13da688d9f64d30965866d1c0d0badd2071235f9" +checksum = "9732ac8bc0ac8e745fc5f6b4c65205111d3b38dde3c2d6593df9105c95b5fcf5" dependencies = [ "arrayvec", - "getrandom", + "getrandom 0.2.12", "multiversx-sc", "multiversx-sc-modules", - "rand", + "rand 0.8.5", ] [[package]] name = "multiversx-sc" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c94b173dc5ff0e157f767275fe6b7a1b4d2ad343bef7b66cd22a6353e016b93" +checksum = "40b69a83a9423be4b543edee969205aa43ef4397c48b965a65bad857e022db5c" dependencies = [ "bitflags 2.4.2", "hex-literal", @@ -1109,9 +1096,9 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.3" +version = "0.18.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19908153158c03df4582af08f47c0eb39fb52a7dff4736b301a66acbbb9955d3" +checksum = "1da6db65170105c9495848c5e4ba388abb1f9201ff2ca362056c9328f36b7760" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -1120,9 +1107,9 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.3" +version = "0.18.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3b03b43f9cad320992f54ed162de2ed63e3ec83ed01361e57ee9c1865fba5a2" +checksum = "631c4d4b37fc94659c8d6cf559c21b68c68899095201de2e1b779fccad7b0b03" dependencies = [ "hex", "proc-macro2", @@ -1132,9 +1119,9 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b78945957036c281ad6ee21bb5120dcefa2017688adf43ec94e3e7c982efb09" +checksum = "d5fe6400e2f4e57f7c9c00ad76108794aa962657cf62b4d4f49b99f02d9a6ba5" dependencies = [ "hex", "proc-macro2", @@ -1145,9 +1132,9 @@ dependencies = [ [[package]] name = "multiversx-sc-meta" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c8250fd72b78dff76fd3789078aee3dec2524ca37250c645dcb2b1bf067551e" +checksum = "12dec6cc0735acb48fce290b367c9d22684103055f00a7dec057840fc134973d" dependencies = [ "clap", "colored", @@ -1161,28 +1148,29 @@ dependencies = [ "reqwest", "ruplacer", "rustc_version", + "semver", "serde", "serde_json", "toml", - "wasmparser 0.118.1", + "wasmparser", "wasmprinter", "zip", ] [[package]] name = "multiversx-sc-modules" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c63ffaba95e630ff75981e2f5f50da64f523219b52f484234c66f3adc248885f" +checksum = "187d4110d6625208467512d5191e7490a534389e3ad1e00ccd68f8b4f01a9194" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-scenario" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3aa2644018c85caf3cc39a130961e39bd719ff3d75751b60a7394d6eace1c847" +checksum = "b71bc382a5ba02deb9452ec29453806c176200ee5d0e5c7c948f52dc84181382" dependencies = [ "base64", "bech32", @@ -1202,15 +1190,15 @@ dependencies = [ "pathdiff", "serde", "serde_json", - "sha2", + "sha2 0.10.8", "tokio", ] [[package]] name = "multiversx-sdk" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f86d0da66ca2eb334414786a287010bb669b8d815a7d3b690d629a04b86bb80" +checksum = "46d709ddf46c50a407ce4b90ff487e854926d47f80de6abfe4a4adca3eaa7964" dependencies = [ "anyhow", "base64", @@ -1221,12 +1209,12 @@ dependencies = [ "itertools", "pbkdf2", "pem", - "rand", + "rand 0.8.5", "reqwest", "serde", "serde_json", "serde_repr", - "sha2", + "sha2 0.10.8", "sha3", "tokio", "zeroize", @@ -1281,9 +1269,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg", ] @@ -1313,11 +1301,17 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + [[package]] name = "openssl" -version = "0.10.63" +version = "0.10.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c9d69dd87a29568d4d017cfe8ec518706046a05184e5aea92d0af890b803c8" +checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" dependencies = [ "bitflags 2.4.2", "cfg-if", @@ -1347,9 +1341,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.99" +version = "0.9.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e1bf214306098e4832460f797824c05d25aacdf896f64a985fb0fd992454ae" +checksum = "dda2b0f344e78efc2facf7d195d098df0dd72151b26ab98da807afc26c198dff" dependencies = [ "cc", "libc", @@ -1392,7 +1386,7 @@ version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" dependencies = [ - "digest", + "digest 0.10.7", ] [[package]] @@ -1423,27 +1417,11 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - [[package]] name = "pkg-config" -version = "0.3.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb" - -[[package]] -name = "platforms" -version = "3.3.0" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626dec3cac7cc0e1577a2ec3fc496277ec2baa084bebad95bb6fdbfae235f84c" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "ppv-lite86" @@ -1479,6 +1457,19 @@ dependencies = [ "nibble_vec", ] +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + [[package]] name = "rand" version = "0.8.5" @@ -1486,8 +1477,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", ] [[package]] @@ -1497,7 +1498,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", ] [[package]] @@ -1506,7 +1516,16 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.12", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", ] [[package]] @@ -1515,7 +1534,7 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf2890aaef0aa82719a50e808de264f9484b74b442e1a3a0e5ee38243ac40bdb" dependencies = [ - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -1649,9 +1668,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" [[package]] name = "same-file" @@ -1702,24 +1721,24 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.21" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" -version = "1.0.196" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.196" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", @@ -1728,9 +1747,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.113" +version = "1.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79" +checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" dependencies = [ "indexmap", "itoa", @@ -1770,6 +1789,19 @@ dependencies = [ "serde", ] +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + [[package]] name = "sha2" version = "0.10.8" @@ -1778,7 +1810,7 @@ checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", - "digest", + "digest 0.10.7", ] [[package]] @@ -1787,7 +1819,7 @@ version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ - "digest", + "digest 0.10.7", "keccak", ] @@ -1802,12 +1834,9 @@ dependencies = [ [[package]] name = "signature" -version = "2.2.0" +version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" -dependencies = [ - "rand_core", -] +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" [[package]] name = "slab" @@ -1826,22 +1855,12 @@ checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "socket2" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" dependencies = [ "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der", + "windows-sys 0.52.0", ] [[package]] @@ -1896,9 +1915,9 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.10.0" +version = "3.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if", "fastrand", @@ -2008,9 +2027,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.4" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c9ffdf896f8daaabf9b66ba8e77ea1ed5ed0f72821b398aba62352e95062951" +checksum = "2c1b5fd4128cc8d3e0cb74d4ed9a9cc7c7284becd4df68f5f940e1ad123606f6" dependencies = [ "indexmap", "serde", @@ -2148,6 +2167,12 @@ dependencies = [ "try-lock", ] +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -2222,19 +2247,9 @@ checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" [[package]] name = "wasmparser" -version = "0.118.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ee9723b928e735d53000dec9eae7b07a60e490c85ab54abb66659fc61bfcd9" -dependencies = [ - "indexmap", - "semver", -] - -[[package]] -name = "wasmparser" -version = "0.121.1" +version = "0.121.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99ffe16b4aa1ebab8724f61c9ee38cd5481c89caf10bf1a5af9eab8f0c2e6c05" +checksum = "9dbe55c8f9d0dbd25d9447a5a889ff90c0cc3feaa7395310d3d826b2c703eaab" dependencies = [ "bitflags 2.4.2", "indexmap", @@ -2243,12 +2258,12 @@ dependencies = [ [[package]] name = "wasmprinter" -version = "0.2.79" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4a76a9228f2e6653f0b3d912b2f3a9b6ac79c690e5642c9ee2dfd914c545cf0" +checksum = "60e73986a6b7fdfedb7c5bf9e7eb71135486507c8fbc4c0c42cffcb6532988b7" dependencies = [ "anyhow", - "wasmparser 0.121.1", + "wasmparser", ] [[package]] @@ -2307,7 +2322,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.3", ] [[package]] @@ -2327,17 +2342,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "d380ba1dc7187569a8a9e91ed34b8ccfc33123bbacb8c0aed2d1ad7f3ef2dc5f" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.3", + "windows_aarch64_msvc 0.52.3", + "windows_i686_gnu 0.52.3", + "windows_i686_msvc 0.52.3", + "windows_x86_64_gnu 0.52.3", + "windows_x86_64_gnullvm 0.52.3", + "windows_x86_64_msvc 0.52.3", ] [[package]] @@ -2348,9 +2363,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" +version = "0.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "68e5dcfb9413f53afd9c8f86e56a7b4d86d9a2fa26090ea2dc9e40fba56c6ec6" [[package]] name = "windows_aarch64_msvc" @@ -2360,9 +2375,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" +version = "0.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "8dab469ebbc45798319e69eebf92308e541ce46760b49b18c6b3fe5e8965b30f" [[package]] name = "windows_i686_gnu" @@ -2372,9 +2387,9 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.0" +version = "0.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "2a4e9b6a7cac734a8b4138a4e1044eac3404d8326b6c0f939276560687a033fb" [[package]] name = "windows_i686_msvc" @@ -2384,9 +2399,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.0" +version = "0.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "28b0ec9c422ca95ff34a78755cfa6ad4a51371da2a5ace67500cf7ca5f232c58" [[package]] name = "windows_x86_64_gnu" @@ -2396,9 +2411,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "704131571ba93e89d7cd43482277d6632589b18ecf4468f591fbae0a8b101614" [[package]] name = "windows_x86_64_gnullvm" @@ -2408,9 +2423,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "42079295511643151e98d61c38c0acc444e52dd42ab456f7ccfd5152e8ecf21c" [[package]] name = "windows_x86_64_msvc" @@ -2420,15 +2435,15 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.0" +version = "0.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "0770833d60a970638e989b3fa9fd2bb1aaadcf88963d1659fd7d9990196ed2d6" [[package]] name = "winnow" -version = "0.5.39" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5389a154b01683d28c77f8f68f49dea75f0a4da32557a58f68ee51ebba472d29" +checksum = "7a4191c47f15cc3ec71fcb4913cb83d58def65dd3787610213c649283b5ce178" dependencies = [ "memchr", ] @@ -2448,6 +2463,20 @@ name = "zeroize" version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] [[package]] name = "zip" diff --git a/bridge-proxy/Cargo.toml b/bridge-proxy/Cargo.toml index e49bc945..1b57af77 100644 --- a/bridge-proxy/Cargo.toml +++ b/bridge-proxy/Cargo.toml @@ -2,7 +2,7 @@ name = "bridge-proxy" version = "0.0.0" authors = ["Costin CarabaČ™ "] -edition = "2018" +edition = "2021" publish = false [lib] @@ -15,17 +15,17 @@ path = "../common/transaction" path = "../common/eth-address" [dependencies.multiversx-sc] -version = "=0.46.1" +version = "=0.47.4" [dependencies.multiversx-sc-modules] -version = "0.46.1" +version = "=0.47.4" -[dependencies.adder] +[dev-dependencies.adder] git = "https://github.com/multiversx/mx-contracts-rs" -rev = "64e8926" +rev = "8df9f67" [dev-dependencies] num-bigint = "0.4.2" [dev-dependencies.multiversx-sc-scenario] -version = "=0.46.1" +version = "=0.47.4" diff --git a/bridge-proxy/meta/Cargo.toml b/bridge-proxy/meta/Cargo.toml index c06ab5f6..e7e184bd 100644 --- a/bridge-proxy/meta/Cargo.toml +++ b/bridge-proxy/meta/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "bridge-proxy-meta" version = "0.0.0" -edition = "2018" +edition = "2021" publish = false authors = ["you"] @@ -11,4 +11,4 @@ authors = ["you"] path = ".." [dependencies.multiversx-sc-meta] -version = "=0.46.1" +version = "=0.47.4" diff --git a/bridge-proxy/tests/bridge_proxy_blackbox_test.rs b/bridge-proxy/tests/bridge_proxy_blackbox_test.rs index d3d93981..ae4865a4 100644 --- a/bridge-proxy/tests/bridge_proxy_blackbox_test.rs +++ b/bridge-proxy/tests/bridge_proxy_blackbox_test.rs @@ -27,7 +27,7 @@ use multiversx_sc_scenario::{ }; use eth_address::*; -use transaction::{CallData, EthTransaction, EthTransactionPayment}; +use transaction::{call_data::CallData, EthTransaction, EthTransactionPayment}; const BRIDGE_TOKEN_ID: &[u8] = b"BRIDGE-123456"; const GAS_LIMIT: u64 = 1_000_000; diff --git a/bridge-proxy/wasm/Cargo.lock b/bridge-proxy/wasm/Cargo.lock index 03578cb9..5c7a8d84 100644 --- a/bridge-proxy/wasm/Cargo.lock +++ b/bridge-proxy/wasm/Cargo.lock @@ -2,14 +2,6 @@ # It is not intended for manual editing. version = 3 -[[package]] -name = "adder" -version = "0.0.0" -source = "git+https://github.com/multiversx/mx-contracts-rs?rev=64e8926#64e892655f9c59b2aafe07800af61d0fa41c6ddc" -dependencies = [ - "multiversx-sc", -] - [[package]] name = "arrayvec" version = "0.7.4" @@ -24,15 +16,14 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" [[package]] name = "bridge-proxy" version = "0.0.0" dependencies = [ - "adder", "eth-address", "multiversx-sc", "multiversx-sc-modules", @@ -74,9 +65,9 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c94b173dc5ff0e157f767275fe6b7a1b4d2ad343bef7b66cd22a6353e016b93" +checksum = "40b69a83a9423be4b543edee969205aa43ef4397c48b965a65bad857e022db5c" dependencies = [ "bitflags", "hex-literal", @@ -87,9 +78,9 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.3" +version = "0.18.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19908153158c03df4582af08f47c0eb39fb52a7dff4736b301a66acbbb9955d3" +checksum = "1da6db65170105c9495848c5e4ba388abb1f9201ff2ca362056c9328f36b7760" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -97,9 +88,9 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.3" +version = "0.18.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3b03b43f9cad320992f54ed162de2ed63e3ec83ed01361e57ee9c1865fba5a2" +checksum = "631c4d4b37fc94659c8d6cf559c21b68c68899095201de2e1b779fccad7b0b03" dependencies = [ "hex", "proc-macro2", @@ -109,9 +100,9 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b78945957036c281ad6ee21bb5120dcefa2017688adf43ec94e3e7c982efb09" +checksum = "d5fe6400e2f4e57f7c9c00ad76108794aa962657cf62b4d4f49b99f02d9a6ba5" dependencies = [ "hex", "proc-macro2", @@ -122,18 +113,18 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c63ffaba95e630ff75981e2f5f50da64f523219b52f484234c66f3adc248885f" +checksum = "187d4110d6625208467512d5191e7490a534389e3ad1e00ccd68f8b4f01a9194" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9579f40c00da56a5a68e010ff851fa48ac7b9c6a16ad4314795cb32d889d9e78" +checksum = "304900b34dfae6fd5baddd4c98345f1b7fa7e839257dac961023733be40dd81e" dependencies = [ "multiversx-sc", ] @@ -158,9 +149,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.74" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2de98502f212cfcea8d0bb305bd0f49d7ebdd75b64ba0a68f937d888f4e0d6db" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] @@ -186,15 +177,15 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.2" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "syn" -version = "2.0.46" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89456b690ff72fddcecf231caedbe615c59480c93358a93dfae7fc29e3ebbf0e" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", diff --git a/bridge-proxy/wasm/Cargo.toml b/bridge-proxy/wasm/Cargo.toml index b6e7e9db..4f3d19b0 100644 --- a/bridge-proxy/wasm/Cargo.toml +++ b/bridge-proxy/wasm/Cargo.toml @@ -7,7 +7,7 @@ [package] name = "bridge-proxy-wasm" version = "0.0.0" -edition = "2018" +edition = "2021" publish = false [lib] @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "=0.46.1" +version = "=0.47.4" [workspace] members = ["."] diff --git a/bridged-tokens-wrapper/Cargo.toml b/bridged-tokens-wrapper/Cargo.toml index ab856c22..925a3c42 100644 --- a/bridged-tokens-wrapper/Cargo.toml +++ b/bridged-tokens-wrapper/Cargo.toml @@ -2,7 +2,7 @@ name = "bridged-tokens-wrapper" version = "0.0.0" authors = ["Alin Cruceat "] -edition = "2018" +edition = "2021" publish = false [lib] @@ -12,10 +12,10 @@ path = "src/lib.rs" path = "../common/transaction" [dependencies.multiversx-sc] -version = "=0.46.1" +version = "=0.47.4" [dependencies.multiversx-sc-modules] -version = "=0.46.1" +version = "=0.47.4" [dev-dependencies.multiversx-sc-scenario] -version = "=0.46.1" +version = "=0.47.4" diff --git a/bridged-tokens-wrapper/meta/Cargo.toml b/bridged-tokens-wrapper/meta/Cargo.toml index 20bc3bb9..4e297958 100644 --- a/bridged-tokens-wrapper/meta/Cargo.toml +++ b/bridged-tokens-wrapper/meta/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "bridged-tokens-wrapper-meta" version = "0.0.0" -edition = "2018" +edition = "2021" publish = false [dependencies.bridged-tokens-wrapper] path = ".." [dependencies.multiversx-sc-meta] -version = "=0.46.1" +version = "=0.47.4" default-features = false diff --git a/bridged-tokens-wrapper/wasm/Cargo.lock b/bridged-tokens-wrapper/wasm/Cargo.lock index 5cf7dda8..aba51263 100644 --- a/bridged-tokens-wrapper/wasm/Cargo.lock +++ b/bridged-tokens-wrapper/wasm/Cargo.lock @@ -64,9 +64,9 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "multiversx-sc" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c94b173dc5ff0e157f767275fe6b7a1b4d2ad343bef7b66cd22a6353e016b93" +checksum = "40b69a83a9423be4b543edee969205aa43ef4397c48b965a65bad857e022db5c" dependencies = [ "bitflags", "hex-literal", @@ -77,9 +77,9 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.3" +version = "0.18.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19908153158c03df4582af08f47c0eb39fb52a7dff4736b301a66acbbb9955d3" +checksum = "1da6db65170105c9495848c5e4ba388abb1f9201ff2ca362056c9328f36b7760" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -87,9 +87,9 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.3" +version = "0.18.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3b03b43f9cad320992f54ed162de2ed63e3ec83ed01361e57ee9c1865fba5a2" +checksum = "631c4d4b37fc94659c8d6cf559c21b68c68899095201de2e1b779fccad7b0b03" dependencies = [ "hex", "proc-macro2", @@ -99,9 +99,9 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b78945957036c281ad6ee21bb5120dcefa2017688adf43ec94e3e7c982efb09" +checksum = "d5fe6400e2f4e57f7c9c00ad76108794aa962657cf62b4d4f49b99f02d9a6ba5" dependencies = [ "hex", "proc-macro2", @@ -112,18 +112,18 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c63ffaba95e630ff75981e2f5f50da64f523219b52f484234c66f3adc248885f" +checksum = "187d4110d6625208467512d5191e7490a534389e3ad1e00ccd68f8b4f01a9194" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9579f40c00da56a5a68e010ff851fa48ac7b9c6a16ad4314795cb32d889d9e78" +checksum = "304900b34dfae6fd5baddd4c98345f1b7fa7e839257dac961023733be40dd81e" dependencies = [ "multiversx-sc", ] @@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.76" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] @@ -176,9 +176,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.12.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2593d31f82ead8df961d8bd23a64c2ccf2eb5dd34b0a34bfb4dd54011c72009e" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "syn" diff --git a/bridged-tokens-wrapper/wasm/Cargo.toml b/bridged-tokens-wrapper/wasm/Cargo.toml index d81df939..2e219919 100644 --- a/bridged-tokens-wrapper/wasm/Cargo.toml +++ b/bridged-tokens-wrapper/wasm/Cargo.toml @@ -7,7 +7,7 @@ [package] name = "bridged-tokens-wrapper-wasm" version = "0.0.0" -edition = "2018" +edition = "2021" publish = false [lib] @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "=0.46.1" +version = "=0.47.4" [workspace] members = ["."] diff --git a/common/eth-address/Cargo.toml b/common/eth-address/Cargo.toml index eddaedbf..a82960d5 100644 --- a/common/eth-address/Cargo.toml +++ b/common/eth-address/Cargo.toml @@ -2,10 +2,10 @@ name = "eth-address" version = "0.0.0" authors = ["dorin-iancu "] -edition = "2018" +edition = "2021" [lib] path = "src/lib.rs" [dependencies.multiversx-sc] -version = "=0.46.1" +version = "=0.47.4" diff --git a/common/fee-estimator-module/Cargo.toml b/common/fee-estimator-module/Cargo.toml index 1f20278f..06852624 100644 --- a/common/fee-estimator-module/Cargo.toml +++ b/common/fee-estimator-module/Cargo.toml @@ -2,10 +2,10 @@ name = "fee-estimator-module" version = "0.0.0" authors = ["dorin-iancu "] -edition = "2018" +edition = "2021" [dependencies.multiversx-sc] -version = "=0.46.1" +version = "=0.47.4" [dev-dependencies.multiversx-sc-scenario] -version = "=0.46.1" +version = "=0.47.4" diff --git a/common/max-bridged-amount-module/Cargo.toml b/common/max-bridged-amount-module/Cargo.toml index fabecaf7..242283b1 100644 --- a/common/max-bridged-amount-module/Cargo.toml +++ b/common/max-bridged-amount-module/Cargo.toml @@ -2,10 +2,10 @@ name = "max-bridged-amount-module" version = "0.0.0" authors = ["dorin-iancu "] -edition = "2018" +edition = "2021" [dependencies.multiversx-sc] -version = "=0.46.1" +version = "=0.47.4" [dev-dependencies.multiversx-sc-scenario] -version = "=0.46.1" +version = "=0.47.4" diff --git a/common/token-module/Cargo.toml b/common/token-module/Cargo.toml index 72681320..e5c4b97c 100644 --- a/common/token-module/Cargo.toml +++ b/common/token-module/Cargo.toml @@ -2,13 +2,13 @@ name = "token-module" version = "0.0.0" authors = ["dorin-iancu "] -edition = "2018" +edition = "2021" [dependencies.fee-estimator-module] path = "../fee-estimator-module" [dependencies.multiversx-sc] -version = "=0.46.1" +version = "=0.47.4" [dev-dependencies.multiversx-sc-scenario] -version = "=0.46.1" +version = "=0.47.4" diff --git a/common/token-module/src/lib.rs b/common/token-module/src/lib.rs index 51af8595..6e0c3810 100644 --- a/common/token-module/src/lib.rs +++ b/common/token-module/src/lib.rs @@ -170,8 +170,8 @@ pub trait TokenModule: fee_estimator_module::FeeEstimatorModule { #[only_owner] #[endpoint(setAccumulatedBurnedTokens)] - fn set_accumulated_burned_tokens(&self, token_id: &TokenIdentifier, value: BigUint) { - self.accumulated_burned_tokens(token_id).set_if_empty(value); + fn set_accumulated_burned_tokens(&self, token_id: TokenIdentifier, value: BigUint) { + self.accumulated_burned_tokens(&token_id).set_if_empty(value); } // storage diff --git a/common/transaction/Cargo.toml b/common/transaction/Cargo.toml index ee59a631..4efa9f28 100644 --- a/common/transaction/Cargo.toml +++ b/common/transaction/Cargo.toml @@ -2,7 +2,7 @@ name = "transaction" version = "0.0.0" authors = ["dorin-iancu "] -edition = "2018" +edition = "2021" [lib] path = "src/lib.rs" @@ -11,4 +11,4 @@ path = "src/lib.rs" path = "../eth-address" [dependencies.multiversx-sc] -version = "=0.46.1" +version = "=0.47.4" diff --git a/common/transaction/src/call_data.rs b/common/transaction/src/call_data.rs new file mode 100644 index 00000000..f651d5be --- /dev/null +++ b/common/transaction/src/call_data.rs @@ -0,0 +1,74 @@ +use multiversx_sc::codec::{DefaultErrorHandler, NestedEncodeOutput}; + +use crate::custom_buffer::AlwaysTopEncodedBuffer; + +multiversx_sc::imports!(); +multiversx_sc::derive_imports!(); + +#[derive(TypeAbi, Clone, ManagedVecItem, Default)] +pub struct CallData { + pub endpoint: ManagedBuffer, + pub gas_limit: u64, + pub args: ManagedVec>, +} + +impl TopEncode for CallData { + fn top_encode(&self, output: O) -> Result<(), codec::EncodeError> + where + O: codec::TopEncodeOutput, + { + let mut nested_encode_output = output.start_nested_encode(); + self.dep_encode(&mut nested_encode_output) + } +} + +impl NestedEncode for CallData { + fn dep_encode(&self, dest: &mut O) -> Result<(), codec::EncodeError> { + let endpoint_len_u8 = self.endpoint.len() as u8; + dest.push_byte(endpoint_len_u8); + + let endpoint_buffer = AlwaysTopEncodedBuffer::new(self.endpoint.clone()); + endpoint_buffer.dep_encode(dest)?; + + let gas_limit_u32 = self.gas_limit as u32; + gas_limit_u32.dep_encode(dest)?; + + let args_len_u8 = self.args.len() as u8; + dest.push_byte(args_len_u8); + + for arg in &self.args { + arg.dep_encode(dest)?; + } + + Result::Ok(()) + } +} + +impl NestedDecode for CallData { + fn dep_decode(input: &mut I) -> Result { + let mut temp_buffer = [0u8; u8::MAX as usize + 1]; + let endpoint_len_u8 = u8::dep_decode(input)?; + input.read_into( + &mut temp_buffer[0..endpoint_len_u8 as usize], + DefaultErrorHandler, + )?; + let endpoint_name = + ManagedBuffer::new_from_bytes(&temp_buffer[0..endpoint_len_u8 as usize]); + + let gas_limit_u32 = u32::dep_decode(input)?; + let gas_limit = gas_limit_u32 as u64; + + let args_len_u8 = u8::dep_decode(input)?; + let mut args = ManagedVec::new(); + for _ in 0..args_len_u8 { + let arg = ManagedBuffer::dep_decode(input)?; + args.push(arg); + } + + core::result::Result::Ok(Self { + endpoint: endpoint_name, + gas_limit, + args, + }) + } +} diff --git a/common/transaction/src/custom_buffer.rs b/common/transaction/src/custom_buffer.rs new file mode 100644 index 00000000..fe235de5 --- /dev/null +++ b/common/transaction/src/custom_buffer.rs @@ -0,0 +1,38 @@ +multiversx_sc::imports!(); +multiversx_sc::derive_imports!(); + +pub struct AlwaysTopEncodedBuffer { + buffer: ManagedBuffer, +} + +impl AlwaysTopEncodedBuffer { + #[inline(always)] + pub fn new(buffer: ManagedBuffer) -> Self { + Self { buffer } + } +} + +impl TopEncode for AlwaysTopEncodedBuffer { + fn top_encode(&self, output: O) -> Result<(), codec::EncodeError> + where + O: codec::TopEncodeOutput, + { + self.buffer.top_encode(output) + } +} + +impl NestedEncode for AlwaysTopEncodedBuffer { + fn dep_encode( + &self, + dest: &mut O, + ) -> Result<(), codec::EncodeError> { + let mut output_buffer = ManagedBuffer::::new(); + self.buffer.top_encode(&mut output_buffer)?; + + let mut output_buffer_bytes = [0u8; u8::MAX as usize + 1]; + let slice_ref = output_buffer.load_to_byte_array(&mut output_buffer_bytes); + dest.write(slice_ref); + + Result::Ok(()) + } +} diff --git a/common/transaction/src/lib.rs b/common/transaction/src/lib.rs index 11a6a501..5a97e331 100644 --- a/common/transaction/src/lib.rs +++ b/common/transaction/src/lib.rs @@ -3,7 +3,11 @@ multiversx_sc::imports!(); multiversx_sc::derive_imports!(); +use call_data::CallData; use eth_address::EthAddress; + +pub mod call_data; +pub mod custom_buffer; pub mod transaction_status; // revert protection @@ -25,24 +29,7 @@ pub type TxAsMultiValue = MultiValue6< pub type PaymentsVec = ManagedVec>; pub type TxBatchSplitInFields = MultiValue2>>; -#[derive(NestedEncode, NestedDecode, TypeAbi, Clone, ManagedVecItem)] -pub struct CallData { - pub endpoint: ManagedBuffer, - pub gas_limit: u64, - pub args: ManagedVec>, -} - -impl Default for CallData { - #[inline] - fn default() -> Self { - Self { - endpoint: ManagedBuffer::new(), - gas_limit: 0, - args: ManagedVec::new(), - } - } -} -#[derive(TopDecode, TopEncode, NestedEncode, NestedDecode, TypeAbi, Clone, ManagedVecItem)] +#[derive(TopEncode, TopDecode, NestedEncode, NestedDecode, TypeAbi, Clone, ManagedVecItem)] pub struct EthTransaction { pub from: EthAddress, pub to: ManagedAddress, diff --git a/common/tx-batch-module/Cargo.toml b/common/tx-batch-module/Cargo.toml index e162c9ef..2df040aa 100644 --- a/common/tx-batch-module/Cargo.toml +++ b/common/tx-batch-module/Cargo.toml @@ -2,13 +2,13 @@ name = "tx-batch-module" version = "0.0.0" authors = ["dorin-iancu "] -edition = "2018" +edition = "2021" [dependencies.multiversx-sc] -version = "=0.46.1" +version = "=0.47.4" [dependencies.transaction] path = "../transaction" [dev-dependencies.multiversx-sc-scenario] -version = "=0.46.1" +version = "=0.47.4" diff --git a/common/tx-batch-module/src/lib.rs b/common/tx-batch-module/src/lib.rs index 545a4cca..6be4a5aa 100644 --- a/common/tx-batch-module/src/lib.rs +++ b/common/tx-batch-module/src/lib.rs @@ -10,6 +10,8 @@ use tx_batch_mapper::TxBatchMapper; pub mod batch_status; pub mod tx_batch_mapper; +pub const FIRST_BATCH_ID: u64 = 1; + #[multiversx_sc::module] pub trait TxBatchModule { // endpoints - owner-only diff --git a/esdt-safe/Cargo.toml b/esdt-safe/Cargo.toml index e28716b2..56fe91eb 100644 --- a/esdt-safe/Cargo.toml +++ b/esdt-safe/Cargo.toml @@ -2,7 +2,7 @@ name = "esdt-safe" version = "0.0.0" authors = ["you"] -edition = "2018" +edition = "2021" publish = false [lib] @@ -27,13 +27,13 @@ path = "../common/tx-batch-module" path = "../common/max-bridged-amount-module" [dependencies.multiversx-price-aggregator-sc] -version = "=0.46.1" +version = "=0.47.4" [dependencies.multiversx-sc] -version = "=0.46.1" +version = "=0.47.4" [dependencies.multiversx-sc-modules] -version = "=0.46.1" +version = "=0.47.4" [dev-dependencies.multiversx-sc-scenario] -version = "=0.46.1" +version = "=0.47.4" diff --git a/esdt-safe/meta/Cargo.toml b/esdt-safe/meta/Cargo.toml index b9843ee8..bb0c30cf 100644 --- a/esdt-safe/meta/Cargo.toml +++ b/esdt-safe/meta/Cargo.toml @@ -2,7 +2,7 @@ name = "esdt-safe-meta" version = "0.0.0" authors = ["you"] -edition = "2018" +edition = "2021" publish = false [dev-dependencies] @@ -11,5 +11,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "=0.46.1" +version = "=0.47.4" default-features = false diff --git a/esdt-safe/src/lib.rs b/esdt-safe/src/lib.rs index 3adf6ae8..c42bd855 100644 --- a/esdt-safe/src/lib.rs +++ b/esdt-safe/src/lib.rs @@ -9,6 +9,7 @@ use core::convert::TryFrom; use eth_address::*; use fee_estimator_module::GWEI_STRING; use transaction::{transaction_status::TransactionStatus, Transaction}; +use tx_batch_module::FIRST_BATCH_ID; const DEFAULT_MAX_TX_BATCH_SIZE: usize = 10; const DEFAULT_MAX_TX_BATCH_BLOCK_DURATION: u64 = 100; // ~10 minutes @@ -29,17 +30,16 @@ pub trait EsdtSafe: #[init] fn init(&self, fee_estimator_contract_address: ManagedAddress, eth_tx_gas_limit: BigUint) { self.fee_estimator_contract_address() - .set(&fee_estimator_contract_address); - self.eth_tx_gas_limit().set(ð_tx_gas_limit); + .set(fee_estimator_contract_address); + self.eth_tx_gas_limit().set(eth_tx_gas_limit); - self.max_tx_batch_size() - .set_if_empty(DEFAULT_MAX_TX_BATCH_SIZE); + self.max_tx_batch_size().set(DEFAULT_MAX_TX_BATCH_SIZE); self.max_tx_batch_block_duration() - .set_if_empty(DEFAULT_MAX_TX_BATCH_BLOCK_DURATION); + .set(DEFAULT_MAX_TX_BATCH_BLOCK_DURATION); // batch ID 0 is considered invalid - self.first_batch_id().set_if_empty(1); - self.last_batch_id().set_if_empty(1); + self.first_batch_id().set(FIRST_BATCH_ID); + self.last_batch_id().set(FIRST_BATCH_ID); // set ticker for "GWEI" let gwei_token_id = TokenIdentifier::from(GWEI_STRING); @@ -50,25 +50,7 @@ pub trait EsdtSafe: } #[upgrade] - fn upgrade(&self, fee_estimator_contract_address: ManagedAddress, eth_tx_gas_limit: BigUint) { - self.fee_estimator_contract_address() - .set(&fee_estimator_contract_address); - self.eth_tx_gas_limit().set(ð_tx_gas_limit); - - self.max_tx_batch_size() - .set_if_empty(DEFAULT_MAX_TX_BATCH_SIZE); - self.max_tx_batch_block_duration() - .set_if_empty(DEFAULT_MAX_TX_BATCH_BLOCK_DURATION); - - // batch ID 0 is considered invalid - self.first_batch_id().set_if_empty(1); - self.last_batch_id().set_if_empty(1); - - // set ticker for "GWEI" - let gwei_token_id = TokenIdentifier::from(GWEI_STRING); - self.token_ticker(&gwei_token_id) - .set(gwei_token_id.as_managed_buffer()); - + fn upgrade(&self) { self.set_paused(true); } @@ -116,7 +98,7 @@ pub trait EsdtSafe: } } TransactionStatus::Rejected => { - let addr = ManagedAddress::try_from(tx.from).unwrap(); + let addr = unsafe { ManagedAddress::try_from(tx.from).unwrap_unchecked() }; self.mark_refund(&addr, &tx.token_identifier, &tx.amount); } _ => { diff --git a/esdt-safe/wasm/Cargo.lock b/esdt-safe/wasm/Cargo.lock index 0a747d15..bd9927ab 100644 --- a/esdt-safe/wasm/Cargo.lock +++ b/esdt-safe/wasm/Cargo.lock @@ -22,9 +22,9 @@ checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "8ea184aa71bb362a1157c896979544cc23974e08fd265f29ea96b59f0b4a555b" [[package]] name = "cfg-if" @@ -102,18 +102,18 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "js-sys" -version = "0.3.67" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1" +checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" dependencies = [ "wasm-bindgen", ] [[package]] name = "libc" -version = "0.2.152" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "log" @@ -130,9 +130,9 @@ dependencies = [ [[package]] name = "multiversx-price-aggregator-sc" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8de03c6796bd16c39cafafd13da688d9f64d30965866d1c0d0badd2071235f9" +checksum = "9732ac8bc0ac8e745fc5f6b4c65205111d3b38dde3c2d6593df9105c95b5fcf5" dependencies = [ "arrayvec", "getrandom", @@ -143,9 +143,9 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c94b173dc5ff0e157f767275fe6b7a1b4d2ad343bef7b66cd22a6353e016b93" +checksum = "40b69a83a9423be4b543edee969205aa43ef4397c48b965a65bad857e022db5c" dependencies = [ "bitflags", "hex-literal", @@ -156,9 +156,9 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.3" +version = "0.18.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19908153158c03df4582af08f47c0eb39fb52a7dff4736b301a66acbbb9955d3" +checksum = "1da6db65170105c9495848c5e4ba388abb1f9201ff2ca362056c9328f36b7760" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -166,9 +166,9 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.3" +version = "0.18.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3b03b43f9cad320992f54ed162de2ed63e3ec83ed01361e57ee9c1865fba5a2" +checksum = "631c4d4b37fc94659c8d6cf559c21b68c68899095201de2e1b779fccad7b0b03" dependencies = [ "hex", "proc-macro2", @@ -178,9 +178,9 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b78945957036c281ad6ee21bb5120dcefa2017688adf43ec94e3e7c982efb09" +checksum = "d5fe6400e2f4e57f7c9c00ad76108794aa962657cf62b4d4f49b99f02d9a6ba5" dependencies = [ "hex", "proc-macro2", @@ -191,18 +191,18 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c63ffaba95e630ff75981e2f5f50da64f523219b52f484234c66f3adc248885f" +checksum = "187d4110d6625208467512d5191e7490a534389e3ad1e00ccd68f8b4f01a9194" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9579f40c00da56a5a68e010ff851fa48ac7b9c6a16ad4314795cb32d889d9e78" +checksum = "304900b34dfae6fd5baddd4c98345f1b7fa7e839257dac961023733be40dd81e" dependencies = [ "multiversx-sc", ] @@ -350,9 +350,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406" +checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -360,9 +360,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd" +checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" dependencies = [ "bumpalo", "log", @@ -375,9 +375,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999" +checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -385,9 +385,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7" +checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" dependencies = [ "proc-macro2", "quote", @@ -398,6 +398,6 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b" +checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" diff --git a/esdt-safe/wasm/Cargo.toml b/esdt-safe/wasm/Cargo.toml index 715b12fa..44838454 100644 --- a/esdt-safe/wasm/Cargo.toml +++ b/esdt-safe/wasm/Cargo.toml @@ -7,7 +7,7 @@ [package] name = "esdt-safe-wasm" version = "0.0.0" -edition = "2018" +edition = "2021" publish = false [lib] @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "=0.46.1" +version = "=0.47.4" [workspace] members = ["."] diff --git a/multi-transfer-esdt/Cargo.toml b/multi-transfer-esdt/Cargo.toml index 0474448e..a817aa20 100644 --- a/multi-transfer-esdt/Cargo.toml +++ b/multi-transfer-esdt/Cargo.toml @@ -2,7 +2,7 @@ name = "multi-transfer-esdt" version = "0.0.0" authors = ["you"] -edition = "2018" +edition = "2021" publish = false [lib] @@ -33,10 +33,10 @@ path = "../esdt-safe" path = "../common/token-module" [dependencies.multiversx-sc] -version = "=0.46.1" +version = "=0.47.4" [dependencies.multiversx-sc-modules] -version = "=0.46.1" +version = "=0.47.4" [dev-dependencies.multiversx-sc-scenario] -version = "=0.46.1" +version = "=0.47.4" diff --git a/multi-transfer-esdt/meta/Cargo.toml b/multi-transfer-esdt/meta/Cargo.toml index 087f2e6a..abaf7520 100644 --- a/multi-transfer-esdt/meta/Cargo.toml +++ b/multi-transfer-esdt/meta/Cargo.toml @@ -2,7 +2,7 @@ name = "multi-transfer-esdt-meta" version = "0.0.0" authors = ["you"] -edition = "2018" +edition = "2021" publish = false [dev-dependencies] @@ -11,5 +11,5 @@ publish = false path = ".." [dependencies.multiversx-sc-meta] -version = "=0.46.1" +version = "=0.47.4" default-features = false diff --git a/multi-transfer-esdt/scenarios/batch_transfer_both_executed.scen.json b/multi-transfer-esdt/scenarios/batch_transfer_both_executed.scen.json index b8368ec4..6ce8b5af 100644 --- a/multi-transfer-esdt/scenarios/batch_transfer_both_executed.scen.json +++ b/multi-transfer-esdt/scenarios/batch_transfer_both_executed.scen.json @@ -15,8 +15,8 @@ "function": "batchTransferEsdtToken", "arguments": [ "1", - "0x0102030405060708091011121314151617181920|address:user1|nested:str:BRIDGE-123456|biguint:100,200|u64:1|0x01|nested:str:data|u64:10000000|u32:0", - "0x0102030405060708091011121314151617181920|address:user2|nested:str:WRAPPED-123456|biguint:500|u64:2|0x01|nested:str:data|u64:10000000|u32:0" + "0x0102030405060708091011121314151617181920|address:user1|nested:str:BRIDGE-123456|biguint:100,200|u64:1|0x01|u8:4|str:data|u32:10000000|u8:0", + "0x0102030405060708091011121314151617181920|address:user2|nested:str:WRAPPED-123456|biguint:500|u64:2|0x01|u8:4|str:data|u32:10000000|u8:0" ], "gasLimit": "50,000,000", "gasPrice": "0" diff --git a/multi-transfer-esdt/scenarios/batch_transfer_both_failed.scen.json b/multi-transfer-esdt/scenarios/batch_transfer_both_failed.scen.json index 6b3b18f7..e183e4bd 100644 --- a/multi-transfer-esdt/scenarios/batch_transfer_both_failed.scen.json +++ b/multi-transfer-esdt/scenarios/batch_transfer_both_failed.scen.json @@ -16,7 +16,7 @@ "arguments": [ "1", "0x0102030405060708091011121314151617181920|sc:multi_transfer_esdt|nested:str:BRIDGE-123456|biguint:100,200|u64:1||0x0", - "0x0102030405060708091011121314151617181920|sc:multi_transfer_esdt|nested:str:WRAPPED-123456|biguint:100,500|u64:2||0x01|nested:str:data|u64:90|u32:0" + "0x0102030405060708091011121314151617181920|sc:multi_transfer_esdt|nested:str:WRAPPED-123456|biguint:100,500|u64:2||0x01|u8:4|str:data|u32:90|u8:0" ], "gasLimit": "50,000,000", "gasPrice": "0" @@ -40,14 +40,12 @@ "expect": { "out": [ "1", - "0", "1", "0x0102030405060708091011121314151617181920", "sc:multi_transfer_esdt", "str:BRIDGE-123456", "100,200", - "0", "2", "0x0102030405060708091011121314151617181920", @@ -74,14 +72,12 @@ "message": "", "out": [ "1", - "0", "1", "0x0102030405060708091011121314151617181920", "sc:multi_transfer_esdt", "str:BRIDGE-123456", "100,200", - "0", "2", "0x0102030405060708091011121314151617181920", diff --git a/multi-transfer-esdt/scenarios/batch_transfer_one_executed_one_failed.scen.json b/multi-transfer-esdt/scenarios/batch_transfer_one_executed_one_failed.scen.json index 2b080673..d549227f 100644 --- a/multi-transfer-esdt/scenarios/batch_transfer_one_executed_one_failed.scen.json +++ b/multi-transfer-esdt/scenarios/batch_transfer_one_executed_one_failed.scen.json @@ -15,7 +15,7 @@ "function": "batchTransferEsdtToken", "arguments": [ "1", - "0x0102030405060708091011121314151617181920|address:user1|nested:str:BRIDGE-123456|biguint:100,200|u64:1||0x01|nested:str:data|u64:10000000|u32:0", + "0x0102030405060708091011121314151617181920|address:user1|nested:str:BRIDGE-123456|biguint:100,200|u64:1||0x01|u8:4|str:data|u32:10000000|u8:0", "0x0102030405060708091011121314151617181920|sc:multi_transfer_esdt|nested:str:WRAPPED-123456|biguint:500|u64:2||0x0" ], "gasLimit": "50,000,000", @@ -64,4 +64,4 @@ } } ] -} \ No newline at end of file +} diff --git a/multi-transfer-esdt/scenarios/batch_transfer_to_frozen_account.scen.json b/multi-transfer-esdt/scenarios/batch_transfer_to_frozen_account.scen.json index 19a7f35f..0a87010e 100644 --- a/multi-transfer-esdt/scenarios/batch_transfer_to_frozen_account.scen.json +++ b/multi-transfer-esdt/scenarios/batch_transfer_to_frozen_account.scen.json @@ -35,8 +35,8 @@ "function": "batchTransferEsdtToken", "arguments": [ "1", - "0x0102030405060708091011121314151617181920|address:user1|nested:str:BRIDGE-123456|biguint:100,200|u64:1||0x01|nested:str:data|u64:10000000|u32:0", - "0x0102030405060708091011121314151617181920|address:frozen_user|nested:str:BRIDGE-123456|biguint:500|u64:2||0x01|nested:str:data|u64:10000000|u32:0" + "0x0102030405060708091011121314151617181920|address:user1|nested:str:BRIDGE-123456|biguint:100,200|u64:1||0x01|u8:4|str:data|u32:10000000|u8:0", + "0x0102030405060708091011121314151617181920|address:frozen_user|nested:str:BRIDGE-123456|biguint:500|u64:2||0x01|u8:4|str:data|u32:10000000|u8:0" ], "gasLimit": "50,000,000", "gasPrice": "0" @@ -84,4 +84,4 @@ } } ] -} \ No newline at end of file +} diff --git a/multi-transfer-esdt/scenarios/batch_transfer_with_wrapping.scen.json b/multi-transfer-esdt/scenarios/batch_transfer_with_wrapping.scen.json index 3f3e31de..4ca9afb0 100644 --- a/multi-transfer-esdt/scenarios/batch_transfer_with_wrapping.scen.json +++ b/multi-transfer-esdt/scenarios/batch_transfer_with_wrapping.scen.json @@ -284,9 +284,9 @@ "function": "batchTransferEsdtToken", "arguments": [ "1", - "0x0102030405060708091011121314151617181920|address:user1|nested:str:BRIDGE-123456|biguint:100,200|u64:1||0x01|nested:str:data|u64:10000000|u32:0", - "0x0102030405060708091011121314151617181920|address:user2|nested:str:USDC-aaaaaa|biguint:500,000,000,000,000|u64:2||0x01|nested:str:data|u64:10000000|u32:0", - "0x0102030405060708091011121314151617181920|address:user1|nested:str:USDC-cccccc|biguint:1,000,000,000,000,000|u64:3||0x01|nested:str:data|u64:10000000|u32:0" + "0x0102030405060708091011121314151617181920|address:user1|nested:str:BRIDGE-123456|biguint:100,200|u64:1||0x01|u8:4|str:data|u32:10000000|u8:0", + "0x0102030405060708091011121314151617181920|address:user2|nested:str:USDC-aaaaaa|biguint:500,000,000,000,000|u64:2||0x01|u8:4|str:data|u32:10000000|u8:0", + "0x0102030405060708091011121314151617181920|address:user1|nested:str:USDC-cccccc|biguint:1,000,000,000,000,000|u64:3||0x01|u8:4|str:data|u32:10000000|u8:0" ], "gasLimit": "50,000,000", "gasPrice": "0" @@ -346,4 +346,4 @@ } } ] -} \ No newline at end of file +} diff --git a/multi-transfer-esdt/scenarios/setup_accounts.scen.json b/multi-transfer-esdt/scenarios/setup_accounts.scen.json index f893a190..c43778c1 100644 --- a/multi-transfer-esdt/scenarios/setup_accounts.scen.json +++ b/multi-transfer-esdt/scenarios/setup_accounts.scen.json @@ -330,4 +330,4 @@ } } ] -} \ No newline at end of file +} diff --git a/multi-transfer-esdt/scenarios/transfer_fail_mint_burn_not_allowed.scen.json b/multi-transfer-esdt/scenarios/transfer_fail_mint_burn_not_allowed.scen.json index be7aebf1..d1f305e7 100644 --- a/multi-transfer-esdt/scenarios/transfer_fail_mint_burn_not_allowed.scen.json +++ b/multi-transfer-esdt/scenarios/transfer_fail_mint_burn_not_allowed.scen.json @@ -36,7 +36,7 @@ "function": "batchTransferEsdtToken", "arguments": [ "1", - "0x0102030405060708091011121314151617181920|address:user1|nested:str:BRIDGE-123456|biguint:100,200|u64:1||0x01|nested:str:data|u64:10000000|u32:0" + "0x0102030405060708091011121314151617181920|address:user1|nested:str:BRIDGE-123456|biguint:100,200|u64:1||0x01|u8:4|str:data|u32:10000000|u8:0" ], "gasLimit": "50,000,000", "gasPrice": "0" @@ -62,4 +62,4 @@ } } ] -} \ No newline at end of file +} diff --git a/multi-transfer-esdt/scenarios/transfer_ok.scen.json b/multi-transfer-esdt/scenarios/transfer_ok.scen.json index 01630df1..2789911b 100644 --- a/multi-transfer-esdt/scenarios/transfer_ok.scen.json +++ b/multi-transfer-esdt/scenarios/transfer_ok.scen.json @@ -15,7 +15,7 @@ "function": "batchTransferEsdtToken", "arguments": [ "1", - "0x0102030405060708091011121314151617181920|address:user1|nested:str:BRIDGE-123456|biguint:100,200|u64:1||0x01|nested:str:data|u64:10000000|u32:0" + "0x0102030405060708091011121314151617181920|address:user1|nested:str:BRIDGE-123456|biguint:100,200|u64:1||0x01|u8:4|str:data|u32:10000000|u8:0" ], "gasLimit": "50,000,000", "gasPrice": "0" diff --git a/multi-transfer-esdt/scenarios/two_transfers_same_token.scen.json b/multi-transfer-esdt/scenarios/two_transfers_same_token.scen.json index 01d65316..83caf18b 100644 --- a/multi-transfer-esdt/scenarios/two_transfers_same_token.scen.json +++ b/multi-transfer-esdt/scenarios/two_transfers_same_token.scen.json @@ -15,8 +15,8 @@ "function": "batchTransferEsdtToken", "arguments": [ "1", - "0x0102030405060708091011121314151617181920|address:user1|nested:str:BRIDGE-123456|biguint:100,200|u64:1||0x01|nested:str:data|u64:10000000|u32:0", - "0x0102030405060708091011121314151617181920|address:user1|nested:str:BRIDGE-123456|biguint:100,200|u64:2||0x01|nested:str:data|u64:10000000|u32:0" + "0x0102030405060708091011121314151617181920|address:user1|nested:str:BRIDGE-123456|biguint:100,200|u64:1||0x01|u8:4|str:data|u32:10000000|u8:0", + "0x0102030405060708091011121314151617181920|address:user1|nested:str:BRIDGE-123456|biguint:100,200|u64:2||0x01|u8:4|str:data|u32:10000000|u8:0" ], "gasLimit": "50,000,000", "gasPrice": "0" diff --git a/multi-transfer-esdt/src/lib.rs b/multi-transfer-esdt/src/lib.rs index 9d887a3a..9fabd1f3 100644 --- a/multi-transfer-esdt/src/lib.rs +++ b/multi-transfer-esdt/src/lib.rs @@ -4,12 +4,15 @@ multiversx_sc::imports!(); use token_module::ProxyTrait as OtherProxyTrait; use transaction::{ - EthTransaction, EthTransactionPayment, PaymentsVec, Transaction, TxBatchSplitInFields, + call_data::CallData, EthTransaction, EthTransactionPayment, PaymentsVec, Transaction, + TxBatchSplitInFields, }; +use tx_batch_module::FIRST_BATCH_ID; const DEFAULT_MAX_TX_BATCH_SIZE: usize = 10; const DEFAULT_MAX_TX_BATCH_BLOCK_DURATION: u64 = u64::MAX; const MIN_GAS_LIMIT_FOR_SC_CALL: u64 = 10_000_000; +const MAX_GAS_LIMIT_FOR_SC_CALL: u64 = 600_000_000; #[multiversx_sc::contract] pub trait MultiTransferEsdt: @@ -17,25 +20,16 @@ pub trait MultiTransferEsdt: { #[init] fn init(&self) { - self.max_tx_batch_size() - .set_if_empty(DEFAULT_MAX_TX_BATCH_SIZE); + self.max_tx_batch_size().set(DEFAULT_MAX_TX_BATCH_SIZE); self.max_tx_batch_block_duration() - .set_if_empty(DEFAULT_MAX_TX_BATCH_BLOCK_DURATION); + .set(DEFAULT_MAX_TX_BATCH_BLOCK_DURATION); // batch ID 0 is considered invalid - self.first_batch_id().set_if_empty(1); - self.last_batch_id().set_if_empty(1); + self.first_batch_id().set(FIRST_BATCH_ID); + self.last_batch_id().set(FIRST_BATCH_ID); } #[upgrade] - fn upgrade(&self) { - self.max_tx_batch_size() - .set_if_empty(DEFAULT_MAX_TX_BATCH_SIZE); - self.max_tx_batch_block_duration() - .set_if_empty(DEFAULT_MAX_TX_BATCH_BLOCK_DURATION); - // batch ID 0 is considered invalid - self.first_batch_id().set_if_empty(1); - self.last_batch_id().set_if_empty(1); - } + fn upgrade(&self) {} #[only_owner] #[endpoint(batchTransferEsdtToken)] @@ -53,6 +47,7 @@ pub trait MultiTransferEsdt: for eth_tx in transfers { let mut must_refund = false; + let is_dest_sc = self.blockchain().is_smart_contract(ð_tx.to); if eth_tx.to.is_zero() { self.transfer_failed_invalid_destination(batch_id, eth_tx.tx_nonce); @@ -63,16 +58,17 @@ pub trait MultiTransferEsdt: } else if self.is_account_same_shard_frozen(sc_shard, ð_tx.to, ð_tx.token_id) { self.transfer_failed_frozen_destination_account(batch_id, eth_tx.tx_nonce); must_refund = true; - } else if self.blockchain().is_smart_contract(ð_tx.to) - { + } else if is_dest_sc { match ð_tx.call_data { Some(call_data) => { - if call_data.gas_limit < MIN_GAS_LIMIT_FOR_SC_CALL { + if self.must_refund_tx_with_call_data(call_data) { must_refund = true; } } None => must_refund = true, } + } else if is_dest_sc && eth_tx.call_data.is_some() { + must_refund = true; } if must_refund { @@ -87,7 +83,7 @@ pub trait MultiTransferEsdt: .mint_token(ð_tx.token_id, ð_tx.amount) .execute_on_dest_context(); - if minted_token.amount == BigUint::zero() { + if minted_token.amount == 0 { let refund_tx = self.convert_to_refund_tx(eth_tx); refund_tx_list.push(refund_tx); @@ -97,7 +93,7 @@ pub trait MultiTransferEsdt: // emit event before the actual transfer so we don't have to save the tx_nonces as well self.transfer_performed_event(batch_id, eth_tx.tx_nonce); - valid_tx_list.push(eth_tx.clone()); + valid_tx_list.push(eth_tx); valid_payments_list.push(minted_token); } @@ -181,8 +177,23 @@ pub trait MultiTransferEsdt: self.add_multiple_tx_to_batch(&refund_tx_list); } + // private + fn must_refund_tx_with_call_data(&self, call_data: &CallData) -> bool { + if call_data.gas_limit < MIN_GAS_LIMIT_FOR_SC_CALL + || call_data.gas_limit > MAX_GAS_LIMIT_FOR_SC_CALL + { + return true; + } + + if call_data.endpoint.len() > u8::MAX as usize { + return true; + } + + call_data.args.len() > u8::MAX as usize + } + fn convert_to_refund_tx(&self, eth_tx: EthTransaction) -> Transaction { Transaction { block_nonce: self.blockchain().get_block_nonce(), @@ -275,6 +286,7 @@ pub trait MultiTransferEsdt: } // storage + #[view(getWrappingContractAddress)] #[storage_mapper("wrappingContractAddress")] fn wrapping_contract_address(&self) -> SingleValueMapper; diff --git a/multi-transfer-esdt/tests/multi_transfer_blackbox_test.rs b/multi-transfer-esdt/tests/multi_transfer_blackbox_test.rs deleted file mode 100644 index 3d445c3d..00000000 --- a/multi-transfer-esdt/tests/multi_transfer_blackbox_test.rs +++ /dev/null @@ -1,372 +0,0 @@ -#![allow(unused)] - -use bridge_proxy::{config::ProxyTrait as _, ProxyTrait as _}; -use bridged_tokens_wrapper::ProxyTrait as _; -use esdt_safe::{EsdtSafe, ProxyTrait as _}; -use multi_transfer_esdt::ProxyTrait as _; - -use multiversx_sc::{ - api::{HandleConstraints, ManagedTypeApi}, - codec::{ - multi_types::{MultiValueVec, OptionalValue}, - Empty, - }, - storage::mappers::SingleValue, - types::{ - Address, BigUint, CodeMetadata, ManagedAddress, ManagedBuffer, ManagedByteArray, - ManagedVec, MultiValueEncoded, TokenIdentifier, - }, -}; -use multiversx_sc_modules::pause::ProxyTrait; -use multiversx_sc_scenario::{ - api::{StaticApi, VMHooksApi}, - scenario_format::interpret_trait::{InterpretableFrom, InterpreterContext}, - scenario_model::*, - ContractInfo, DebugApi, ScenarioWorld, -}; - -use eth_address::*; -use token_module::ProxyTrait as _; -use transaction::{CallData, EthTransaction, EthTransactionPayment}; - -const BRIDGE_TOKEN_ID: &[u8] = b"BRIDGE-123456"; -const BRIDGE_TOKEN_ID_EXPR: &str = "str:BRIDGE-123456"; - -const USER_ETHEREUM_ADDRESS: &[u8] = b"0x0102030405060708091011121314151617181920"; - -const GAS_LIMIT: u64 = 100_000_000; - -const MULTI_TRANSFER_PATH_EXPR: &str = "file:output/multi-transfer-esdt.wasm"; -const BRIDGE_PROXY_PATH_EXPR: &str = "file:../bridge-proxy/output/bridge-proxy.wasm"; -const ESDT_SAFE_PATH_EXPR: &str = "file:../esdt-safe/output/esdt-safe.wasm"; -const BRIDGED_TOKENS_WRAPPER_PATH_EXPR: &str = - "file:../bridged-tokens-wrapper/output/bridged-tokens-wrapper.wasm"; -const PRICE_AGGREGATOR_PATH_EXPR: &str = "file:../price-aggregator/price-aggregator.wasm"; - -const MULTI_TRANSFER_ADDRESS_EXPR: &str = "sc:multi_transfer"; -const BRIDGE_PROXY_ADDRESS_EXPR: &str = "sc:bridge_proxy"; -const ESDT_SAFE_ADDRESS_EXPR: &str = "sc:esdt_safe"; -const BRIDGED_TOKENS_WRAPPER_ADDRESS_EXPR: &str = "sc:bridged_tokens_wrapper"; -const PRICE_AGGREGATOR_ADDRESS_EXPR: &str = "sc:price_aggregator"; - -const ORACLE_ADDRESS_EXPR: &str = "address:oracle"; -const OWNER_ADDRESS_EXPR: &str = "address:owner"; - -const ESDT_SAFE_ETH_TX_GAS_LIMIT: u64 = 150_000; - -const BALANCE: &str = "2,000,000"; - -fn world() -> ScenarioWorld { - let mut blockchain = ScenarioWorld::new(); - - blockchain.register_contract( - MULTI_TRANSFER_PATH_EXPR, - multi_transfer_esdt::ContractBuilder, - ); - blockchain.register_contract(BRIDGE_PROXY_PATH_EXPR, bridge_proxy::ContractBuilder); - - blockchain.register_contract(ESDT_SAFE_PATH_EXPR, esdt_safe::ContractBuilder); - - blockchain.register_contract( - BRIDGED_TOKENS_WRAPPER_PATH_EXPR, - bridged_tokens_wrapper::ContractBuilder, - ); - - blockchain -} - -type MultiTransferContract = ContractInfo>; -type BridgeProxyContract = ContractInfo>; -type EsdtSafeContract = ContractInfo>; -type BridgedTokensWrapperContract = ContractInfo>; - -struct MultiTransferTestState { - world: ScenarioWorld, - owner: AddressValue, - user1: AddressValue, - user2: AddressValue, - eth_user: EthAddress, - multi_transfer: MultiTransferContract, - bridge_proxy: BridgeProxyContract, - esdt_safe: EsdtSafeContract, - bridged_tokens_wrapper: BridgedTokensWrapperContract, -} - -impl MultiTransferTestState { - fn setup() -> Self { - let world = world(); - let ic = &world.interpreter_context(); - - let mut state: MultiTransferTestState = MultiTransferTestState { - world, - owner: "address:owner".into(), - user1: "address:user1".into(), - user2: "address:user2".into(), - eth_user: EthAddress { - raw_addr: ManagedByteArray::default(), - }, - multi_transfer: MultiTransferContract::new("sc:multi_transfer"), - bridge_proxy: BridgeProxyContract::new("sc:bridge_proxy"), - esdt_safe: EsdtSafeContract::new("sc:esdt_safe"), - bridged_tokens_wrapper: BridgedTokensWrapperContract::new("sc:bridged_tokens_wrapper"), - }; - - let multi_transfer_code = state.world.code_expression(MULTI_TRANSFER_PATH_EXPR); - let bridge_proxy_code = state.world.code_expression(BRIDGE_PROXY_PATH_EXPR); - let esdt_safe_code = state.world.code_expression(ESDT_SAFE_PATH_EXPR); - let bridged_tokens_wrapper_code = state - .world - .code_expression(BRIDGED_TOKENS_WRAPPER_PATH_EXPR); - - let roles = vec![ - "ESDTRoleLocalMint".to_string(), - "ESDTRoleLocalBurn".to_string(), - ]; - - state.world.set_state_step( - SetStateStep::new() - .put_account( - &state.owner, - Account::new() - .nonce(1) - .balance(BALANCE) - .esdt_balance(BRIDGE_TOKEN_ID_EXPR, BALANCE), - ) - .put_account(&state.user1, Account::new().nonce(1)) - .new_address(&state.owner, 1, MULTI_TRANSFER_ADDRESS_EXPR) - .new_address(&state.owner, 2, BRIDGE_PROXY_ADDRESS_EXPR) - .new_address(&state.owner, 3, ESDT_SAFE_ADDRESS_EXPR) - .put_account( - ESDT_SAFE_ADDRESS_EXPR, - Account::new() - .code(&esdt_safe_code) - .owner(&state.owner) - .esdt_roles(BRIDGE_TOKEN_ID_EXPR, roles) - .esdt_balance(BRIDGE_TOKEN_ID_EXPR, "1_000"), - ) - .new_address(&state.owner, 4, BRIDGED_TOKENS_WRAPPER_ADDRESS_EXPR), - ); - state - } - - fn multi_transfer_deploy(&mut self) -> &mut Self { - self.world.sc_deploy( - ScDeployStep::new() - .from(self.owner.clone()) - .code(self.world.code_expression(MULTI_TRANSFER_PATH_EXPR)) - .call(self.multi_transfer.init()), - ); - - self - } - - fn bridge_proxy_deploy(&mut self) -> &mut Self { - self.world.sc_deploy( - ScDeployStep::new() - .from(self.owner.clone()) - .code(self.world.code_expression(BRIDGE_PROXY_PATH_EXPR)) - .call(self.bridge_proxy.init(self.multi_transfer.to_address())), - ); - - self - } - - fn safe_deploy(&mut self, price_aggregator_contract_address: Address) -> &mut Self { - self.world.sc_call( - ScCallStep::new().from(self.owner.clone()).call( - self.esdt_safe - .upgrade(ManagedAddress::zero(), ESDT_SAFE_ETH_TX_GAS_LIMIT), - ), - ); - - self - } - - fn bridged_tokens_wrapper_deploy(&mut self) -> &mut Self { - self.world.sc_deploy( - ScDeployStep::new() - .from(self.owner.clone()) - .code(self.world.code_expression(BRIDGED_TOKENS_WRAPPER_PATH_EXPR)) - .call(self.bridged_tokens_wrapper.init()), - ); - - self - } - - fn config_multi_transfer(&mut self) { - self.world - .sc_call( - ScCallStep::new() - .from(self.owner.clone()) - .to(&self.multi_transfer) - .call( - self.multi_transfer.set_wrapping_contract_address( - self.bridged_tokens_wrapper.to_address(), - ), - ), - ) - .sc_call( - ScCallStep::new() - .from(self.owner.clone()) - .to(&self.multi_transfer) - .call( - self.multi_transfer - .set_bridge_proxy_contract_address(self.bridge_proxy.to_address()), - ), - ) - .sc_call( - ScCallStep::new() - .from(self.owner.clone()) - .to(&self.multi_transfer) - .call( - self.multi_transfer - .set_esdt_safe_contract_address(self.esdt_safe.to_address()), - ), - ) - .sc_call( - ScCallStep::new() - .from(self.owner.clone()) - .to(&self.esdt_safe) - .call( - self.esdt_safe - .set_multi_transfer_contract_address(self.multi_transfer.to_address()), - ), - ) - .sc_call( - ScCallStep::new() - .from(self.owner.clone()) - .to(&self.esdt_safe) - .call(self.esdt_safe.add_token_to_whitelist( - TokenIdentifier::from_esdt_bytes("BRIDGE-123456"), - "BRIDGE", - true, - BigUint::from(ESDT_SAFE_ETH_TX_GAS_LIMIT), - )), - ) - .sc_call( - ScCallStep::new() - .from(self.owner.clone()) - .to(&self.esdt_safe) - .call(self.esdt_safe.set_accumulated_burned_tokens( - TokenIdentifier::from_esdt_bytes("BRIDGE-123456"), - BigUint::from(1_000u64), - )), - ); - } -} - -#[test] -fn basic_setup_test() { - let mut test: MultiTransferTestState = MultiTransferTestState::setup(); - let bridge_token_id_expr = "str:BRIDGE-123456"; // when specifying the token transfer - - test.multi_transfer_deploy(); - test.bridge_proxy_deploy(); - test.safe_deploy(Address::zero()); - test.bridged_tokens_wrapper_deploy(); - test.config_multi_transfer(); - - test.world.set_state_step(SetStateStep::new().put_account( - &test.owner, - Account::new().esdt_balance(bridge_token_id_expr, 1_000u64), - )); - - let eth_tx = EthTransaction { - from: test.eth_user, - to: ManagedAddress::from_address(&test.user1.value), - token_id: TokenIdentifier::from_esdt_bytes(BRIDGE_TOKEN_ID), - amount: BigUint::from(500u64), - tx_nonce: 1u64, - call_data: Some(CallData { - endpoint: ManagedBuffer::from("data"), - gas_limit: GAS_LIMIT, - args: ManagedVec::new(), - }), - }; - - test.world.check_state_step( - CheckStateStep::new().put_account( - &test.multi_transfer, - CheckAccount::new() - .check_storage("str:bridgeProxyContractAddress", "sc:bridge_proxy") - .check_storage("str:lastBatchId", "0x01") - .check_storage("str:wrappingContractAddress", "sc:bridged_tokens_wrapper") - .check_storage("str:maxTxBatchBlockDuration", "0xffffffffffffffff") - .check_storage("str:maxTxBatchSize", "10") - .check_storage("str:firstBatchId", "0x01") - .check_storage("str:esdtSafeContractAddress", "sc:esdt_safe"), - ), - ); -} - -#[test] -fn basic_transfer_test() { - let mut test: MultiTransferTestState = MultiTransferTestState::setup(); - let token_amount = BigUint::from(500u64); - - test.multi_transfer_deploy(); - test.bridge_proxy_deploy(); - test.safe_deploy(Address::zero()); - test.bridged_tokens_wrapper_deploy(); - test.config_multi_transfer(); - - let eth_tx = EthTransaction { - from: test.eth_user, - to: ManagedAddress::from_address(&test.user1.value), - token_id: TokenIdentifier::from_esdt_bytes(BRIDGE_TOKEN_ID), - amount: token_amount.clone(), - tx_nonce: 1u64, - call_data: Some(CallData { - endpoint: ManagedBuffer::from("data"), - gas_limit: GAS_LIMIT, - args: ManagedVec::new(), - }), - }; - - test.world.check_state_step( - CheckStateStep::new().put_account( - &test.multi_transfer, - CheckAccount::new() - .check_storage("str:bridgeProxyContractAddress", "sc:bridge_proxy") - .check_storage("str:lastBatchId", "0x01") - .check_storage("str:wrappingContractAddress", "sc:bridged_tokens_wrapper") - .check_storage("str:maxTxBatchBlockDuration", "0xffffffffffffffff") - .check_storage("str:maxTxBatchSize", "10") - .check_storage("str:firstBatchId", "0x01") - .check_storage("str:esdtSafeContractAddress", "sc:esdt_safe"), - ), - ); - - let mut transfers = MultiValueEncoded::new(); - transfers.push(eth_tx); - - test.world.sc_call( - ScCallStep::new() - .from(&test.owner) - .to(&test.esdt_safe) - .call(test.esdt_safe.unpause_endpoint()), - ); - - test.world.sc_call( - ScCallStep::new() - .from(&test.owner) - .to(&test.bridged_tokens_wrapper) - .call(test.bridged_tokens_wrapper.unpause_endpoint()), - ); - - test.world.sc_call( - ScCallStep::new() - .from(&test.owner) - .to(&test.multi_transfer) - .call( - test.multi_transfer - .batch_transfer_esdt_token(1u32, transfers), - ), - ); - - test.world - .check_state_step(CheckStateStep::new().put_account( - test.user1, - CheckAccount::new().esdt_balance(BRIDGE_TOKEN_ID_EXPR, token_amount), - )); -} diff --git a/multi-transfer-esdt/wasm/Cargo.lock b/multi-transfer-esdt/wasm/Cargo.lock index ed6b3d82..aeb5b043 100644 --- a/multi-transfer-esdt/wasm/Cargo.lock +++ b/multi-transfer-esdt/wasm/Cargo.lock @@ -2,14 +2,6 @@ # It is not intended for manual editing. version = 3 -[[package]] -name = "adder" -version = "0.0.0" -source = "git+https://github.com/multiversx/mx-contracts-rs?rev=64e8926#64e892655f9c59b2aafe07800af61d0fa41c6ddc" -dependencies = [ - "multiversx-sc", -] - [[package]] name = "arrayvec" version = "0.7.4" @@ -32,7 +24,6 @@ checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" name = "bridge-proxy" version = "0.0.0" dependencies = [ - "adder", "eth-address", "multiversx-sc", "multiversx-sc-modules", @@ -50,9 +41,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "8ea184aa71bb362a1157c896979544cc23974e08fd265f29ea96b59f0b4a555b" [[package]] name = "cfg-if" @@ -174,9 +165,9 @@ dependencies = [ [[package]] name = "multiversx-price-aggregator-sc" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8de03c6796bd16c39cafafd13da688d9f64d30965866d1c0d0badd2071235f9" +checksum = "9732ac8bc0ac8e745fc5f6b4c65205111d3b38dde3c2d6593df9105c95b5fcf5" dependencies = [ "arrayvec", "getrandom", @@ -187,9 +178,9 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c94b173dc5ff0e157f767275fe6b7a1b4d2ad343bef7b66cd22a6353e016b93" +checksum = "40b69a83a9423be4b543edee969205aa43ef4397c48b965a65bad857e022db5c" dependencies = [ "bitflags", "hex-literal", @@ -200,9 +191,9 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.3" +version = "0.18.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19908153158c03df4582af08f47c0eb39fb52a7dff4736b301a66acbbb9955d3" +checksum = "1da6db65170105c9495848c5e4ba388abb1f9201ff2ca362056c9328f36b7760" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -210,9 +201,9 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.3" +version = "0.18.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3b03b43f9cad320992f54ed162de2ed63e3ec83ed01361e57ee9c1865fba5a2" +checksum = "631c4d4b37fc94659c8d6cf559c21b68c68899095201de2e1b779fccad7b0b03" dependencies = [ "hex", "proc-macro2", @@ -222,9 +213,9 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b78945957036c281ad6ee21bb5120dcefa2017688adf43ec94e3e7c982efb09" +checksum = "d5fe6400e2f4e57f7c9c00ad76108794aa962657cf62b4d4f49b99f02d9a6ba5" dependencies = [ "hex", "proc-macro2", @@ -235,18 +226,18 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c63ffaba95e630ff75981e2f5f50da64f523219b52f484234c66f3adc248885f" +checksum = "187d4110d6625208467512d5191e7490a534389e3ad1e00ccd68f8b4f01a9194" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9579f40c00da56a5a68e010ff851fa48ac7b9c6a16ad4314795cb32d889d9e78" +checksum = "304900b34dfae6fd5baddd4c98345f1b7fa7e839257dac961023733be40dd81e" dependencies = [ "multiversx-sc", ] @@ -262,9 +253,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg", ] diff --git a/multi-transfer-esdt/wasm/Cargo.toml b/multi-transfer-esdt/wasm/Cargo.toml index f23aa765..751f371f 100644 --- a/multi-transfer-esdt/wasm/Cargo.toml +++ b/multi-transfer-esdt/wasm/Cargo.toml @@ -7,7 +7,7 @@ [package] name = "multi-transfer-esdt-wasm" version = "0.0.0" -edition = "2018" +edition = "2021" publish = false [lib] @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "=0.46.1" +version = "=0.47.4" [workspace] members = ["."] diff --git a/multi-transfer-esdt/wasm/Cargo1.lock b/multi-transfer-esdt/wasm/Cargo1.lock deleted file mode 100644 index 582d24db..00000000 --- a/multi-transfer-esdt/wasm/Cargo1.lock +++ /dev/null @@ -1,446 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "adder" -version = "0.0.0" -source = "git+https://github.com/multiversx/mx-contracts-rs?rev=64e8926#64e892655f9c59b2aafe07800af61d0fa41c6ddc" -dependencies = [ - "multiversx-sc", -] - -[[package]] -name = "arrayvec" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - -[[package]] -name = "bitflags" -version = "2.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" - -[[package]] -name = "bridge-proxy" -version = "0.0.0" -dependencies = [ - "adder", - "eth-address", - "multiversx-sc", - "transaction", -] - -[[package]] -name = "bridged-tokens-wrapper" -version = "0.0.0" -dependencies = [ - "multiversx-sc", - "multiversx-sc-modules", - "transaction", -] - -[[package]] -name = "bumpalo" -version = "3.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "endian-type" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" - -[[package]] -name = "esdt-safe" -version = "0.0.0" -dependencies = [ - "eth-address", - "fee-estimator-module", - "max-bridged-amount-module", - "multiversx-price-aggregator-sc", - "multiversx-sc", - "multiversx-sc-modules", - "token-module", - "transaction", - "tx-batch-module", -] - -[[package]] -name = "eth-address" -version = "0.0.0" -dependencies = [ - "multiversx-sc", -] - -[[package]] -name = "fee-estimator-module" -version = "0.0.0" -dependencies = [ - "multiversx-sc", -] - -[[package]] -name = "getrandom" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" - -[[package]] -name = "js-sys" -version = "0.3.68" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "libc" -version = "0.2.153" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" - -[[package]] -name = "log" -version = "0.4.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" - -[[package]] -name = "max-bridged-amount-module" -version = "0.0.0" -dependencies = [ - "multiversx-sc", -] - -[[package]] -name = "multi-transfer-esdt" -version = "0.0.0" -dependencies = [ - "bridge-proxy", - "bridged-tokens-wrapper", - "esdt-safe", - "eth-address", - "max-bridged-amount-module", - "multiversx-sc", - "multiversx-sc-modules", - "token-module", - "transaction", - "tx-batch-module", -] - -[[package]] -name = "multi-transfer-esdt-wasm" -version = "0.0.0" -dependencies = [ - "multi-transfer-esdt", - "multiversx-sc-wasm-adapter", -] - -[[package]] -name = "multiversx-price-aggregator-sc" -version = "0.46.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8de03c6796bd16c39cafafd13da688d9f64d30965866d1c0d0badd2071235f9" -dependencies = [ - "arrayvec", - "getrandom", - "multiversx-sc", - "multiversx-sc-modules", - "rand", -] - -[[package]] -name = "multiversx-sc" -version = "0.46.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c94b173dc5ff0e157f767275fe6b7a1b4d2ad343bef7b66cd22a6353e016b93" -dependencies = [ - "bitflags", - "hex-literal", - "multiversx-sc-codec", - "multiversx-sc-derive", - "num-traits", -] - -[[package]] -name = "multiversx-sc-codec" -version = "0.18.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19908153158c03df4582af08f47c0eb39fb52a7dff4736b301a66acbbb9955d3" -dependencies = [ - "arrayvec", - "multiversx-sc-codec-derive", -] - -[[package]] -name = "multiversx-sc-codec-derive" -version = "0.18.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3b03b43f9cad320992f54ed162de2ed63e3ec83ed01361e57ee9c1865fba5a2" -dependencies = [ - "hex", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "multiversx-sc-derive" -version = "0.46.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b78945957036c281ad6ee21bb5120dcefa2017688adf43ec94e3e7c982efb09" -dependencies = [ - "hex", - "proc-macro2", - "quote", - "radix_trie", - "syn", -] - -[[package]] -name = "multiversx-sc-modules" -version = "0.46.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c63ffaba95e630ff75981e2f5f50da64f523219b52f484234c66f3adc248885f" -dependencies = [ - "multiversx-sc", -] - -[[package]] -name = "multiversx-sc-wasm-adapter" -version = "0.46.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9579f40c00da56a5a68e010ff851fa48ac7b9c6a16ad4314795cb32d889d9e78" -dependencies = [ - "multiversx-sc", -] - -[[package]] -name = "nibble_vec" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" -dependencies = [ - "smallvec", -] - -[[package]] -name = "num-traits" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" -dependencies = [ - "autocfg", -] - -[[package]] -name = "once_cell" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" - -[[package]] -name = "ppv-lite86" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" - -[[package]] -name = "proc-macro2" -version = "1.0.78" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "radix_trie" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" -dependencies = [ - "endian-type", - "nibble_vec", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] - -[[package]] -name = "smallvec" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" - -[[package]] -name = "syn" -version = "2.0.48" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "token-module" -version = "0.0.0" -dependencies = [ - "fee-estimator-module", - "multiversx-sc", -] - -[[package]] -name = "transaction" -version = "0.0.0" -dependencies = [ - "eth-address", - "multiversx-sc", -] - -[[package]] -name = "tx-batch-module" -version = "0.0.0" -dependencies = [ - "multiversx-sc", - "transaction", -] - -[[package]] -name = "unicode-ident" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasm-bindgen" -version = "0.2.91" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.91" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.91" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.91" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.91" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" diff --git a/multisig/Cargo.toml b/multisig/Cargo.toml index 219b55ea..fae7bf58 100644 --- a/multisig/Cargo.toml +++ b/multisig/Cargo.toml @@ -2,7 +2,7 @@ name = "multisig" version = "0.0.0" authors = ["Andrei Marinica , Dorin Iancu "] -edition = "2018" +edition = "2021" publish = false [lib] @@ -33,13 +33,19 @@ path = "../esdt-safe" path = "../multi-transfer-esdt" [dependencies.multiversx-sc] -version = "=0.46.1" +version = "=0.47.4" [dependencies.multiversx-price-aggregator-sc] -version = "=0.46.1" +version = "=0.47.4" [dependencies.multiversx-sc-modules] -version = "=0.46.1" +version = "=0.47.4" [dev-dependencies.multiversx-sc-scenario] -version = "=0.46.1" +version = "=0.47.4" + +[dev-dependencies] +num-bigint = "0.4.2" +num-traits = "0.2" +hex = "0.4" +hex-literal = "0.4.1" diff --git a/multisig/meta/Cargo.toml b/multisig/meta/Cargo.toml index 04d26911..364ac94e 100644 --- a/multisig/meta/Cargo.toml +++ b/multisig/meta/Cargo.toml @@ -2,12 +2,12 @@ name = "multisig-meta" version = "0.0.0" authors = ["Andrei Marinica , Dorin Iancu "] -edition = "2018" +edition = "2021" publish = false [dependencies.multisig] path = ".." [dependencies.multiversx-sc-meta] -version = "=0.46.1" +version = "=0.47.4" default-features = false diff --git a/multisig/scenarios/ethereum_to_multiversx_tx_batch_ok.scen.json b/multisig/scenarios/ethereum_to_multiversx_tx_batch_ok.scen.json index b3e63255..80de5a10 100644 --- a/multisig/scenarios/ethereum_to_multiversx_tx_batch_ok.scen.json +++ b/multisig/scenarios/ethereum_to_multiversx_tx_batch_ok.scen.json @@ -15,8 +15,8 @@ "function": "proposeMultiTransferEsdtBatch", "arguments": [ "1", - "0x0102030405060708091011121314151617181920", "address:user", "str:WEGLD-123456", "76,000,000,000", "1", "0x01|nested:str:data|u64:20000000|u32:0", - "0x0102030405060708091011121314151617181920", "address:user", "str:ETH-123456", "76,000,000,000", "2", "0x01|nested:str:data|u64:20000000|u32:0" + "0x0102030405060708091011121314151617181920", "address:user", "str:WEGLD-123456", "76,000,000,000", "1", "0x01|u8:4|str:data|u32:20000000|u8:0", + "0x0102030405060708091011121314151617181920", "address:user", "str:ETH-123456", "76,000,000,000", "2", "0x01|u8:4|str:data|u32:20000000|u8:0" ], "gasLimit": "50,000,000", "gasPrice": "0" @@ -49,7 +49,7 @@ "3-token_id": "nested:str:WEGLD-123456", "4-amount": "biguint:76,000,000,000", "5-tx_nonce": "u64:1", - "6-call_data": "0x01|nested:str:data|u64:20000000|u32:0" + "6-call_data": "0x01|u8:4|str:data|u32:20000000|u8:0" }, { "1-from": "0x0102030405060708091011121314151617181920", @@ -57,7 +57,7 @@ "3-token_id": "nested:str:ETH-123456", "4-amount": "biguint:76,000,000,000", "5-tx_nonce": "u64:2", - "6-call_data": "0x01|nested:str:data|u64:20000000|u32:0" + "6-call_data": "0x01|u8:4|str:data|u32:20000000|u8:0" } ] }, diff --git a/multisig/scenarios/ethereum_to_multiversx_tx_batch_rejected.scen.json b/multisig/scenarios/ethereum_to_multiversx_tx_batch_rejected.scen.json index 742b3511..dcbba67f 100644 --- a/multisig/scenarios/ethereum_to_multiversx_tx_batch_rejected.scen.json +++ b/multisig/scenarios/ethereum_to_multiversx_tx_batch_rejected.scen.json @@ -20,13 +20,13 @@ "str:WEGLD-123456", "76,000,000,000", "str:data", - "0x01|nested:str:data|u64:2,000,000|u32:0", + "0x01|u8:4|str:data|u32:20000000|u8:0", "0x0102030405060708091011121314151617181920", "sc:egld_esdt_swap", "str:ETH-123456", "76,000,000,000", "u64:2", - "0x01|nested:str:data|u64:2,000,000|u32:0" + "0x01|u8:4|str:data|u32:20000000|u8:0" ], "gasLimit": "50,000,000", "gasPrice": "0" @@ -54,13 +54,13 @@ "str:WEGLD-123456", "76,000,000,000", "u64:2", - "0x01|nested:str:data|u64:2,000,000|u32:0", + "0x01|u8:4|str:data|u32:20000000|u8:0", "0x0102030405060708091011121314151617181920", "sc:egld_esdt_swap", "str:ETH-123456", "76,000,000,000", "u64:3", - "0x01|nested:str:data|u64:2,000,000|u32:0" + "0x01|u8:4|str:data|u32:20000000|u8:0" ], "gasLimit": "50,000,000", "gasPrice": "0" @@ -88,13 +88,13 @@ "str:WEGLD-123456", "76,000,000,000", "u64:1", - "0x01|nested:str:data|u64:2,000,000|u32:0", + "0x01|u8:4|str:data|u32:5,000,000|u8:0", "0x0102030405060708091011121314151617181920", "sc:egld_esdt_swap", "str:ETH-123456", "76,000,000,000", "u64:2", - "0x01|nested:str:data|u64:2,000,000|u32:0" + "0x01|u8:4|str:data|u32:5,000,000|u8:0" ], "gasLimit": "50,000,000", "gasPrice": "0" @@ -127,7 +127,7 @@ "3-token_id": "nested:str:WEGLD-123456", "4-amount": "biguint:76,000,000,000", "5-tx_id": "u64:1", - "6-call_data": "0x01|nested:str:data|u64:2,000,000|u32:0" + "6-call_data": "0x01|u8:4|str:data|u32:5,000,000|u8:0" }, { "1-from": "0x0102030405060708091011121314151617181920", @@ -135,7 +135,7 @@ "3-token_id": "nested:str:ETH-123456", "4-amount": "biguint:76,000,000,000", "5-tx_id": "u64:2", - "6-call_data": "0x01|nested:str:data|u64:2,000,000|u32:0" + "6-call_data": "0x01|u8:4|str:data|u32:5,000,000|u8:0" } ] }, diff --git a/multisig/src/lib.rs b/multisig/src/lib.rs index 39c658ea..d309b413 100644 --- a/multisig/src/lib.rs +++ b/multisig/src/lib.rs @@ -1,13 +1,13 @@ #![no_std] #![allow(clippy::too_many_arguments)] -mod action; -mod multisig_general; -mod queries; -mod setup; -mod storage; -mod user_role; -mod util; +pub mod action; +pub mod multisig_general; +pub mod queries; +pub mod setup; +pub mod storage; +pub mod user_role; +pub mod util; use action::Action; use token_module::{AddressPercentagePair, INVALID_PERCENTAGE_SUM_OVER_ERR_MSG, PERCENTAGE_TOTAL}; @@ -57,8 +57,7 @@ pub trait Multisig: }); require!(!duplicates, "duplicate board member"); - self.num_board_members() - .update(|nr_board_members| *nr_board_members += board_len); + self.num_board_members().set(board_len); self.change_quorum(quorum); require!( @@ -130,7 +129,8 @@ pub trait Multisig: /// before being allowed to sign actions #[payable("EGLD")] #[endpoint] - fn stake(&self, #[payment] payment: BigUint) { + fn stake(&self) { + let payment = self.call_value().egld_value().clone_value(); let caller = self.blockchain().get_caller(); let caller_role = self.user_role(&caller); require!( diff --git a/multisig/tests/multisig_rust_test.rs b/multisig/tests/multisig_rust_test.rs new file mode 100644 index 00000000..d8b2858e --- /dev/null +++ b/multisig/tests/multisig_rust_test.rs @@ -0,0 +1,113 @@ +#![allow(deprecated)] + +pub mod multisig_setup; +use eth_address::EthAddress; +use multisig::multisig_general::MultisigGeneralModule; +use multisig::Multisig; +use multisig_setup::*; +use multiversx_sc::types::{ManagedByteArray, ManagedVec, MultiValueEncoded}; +use multiversx_sc_scenario::{ + managed_address, managed_biguint, managed_buffer, managed_token_id, rust_biguint, +}; +use transaction::call_data::CallData; + +#[test] +fn setup_test() { + let _ = MultisigSetup::new( + multiversx_price_aggregator_sc::contract_obj, + esdt_safe::contract_obj, + multi_transfer_esdt::contract_obj, + multisig::contract_obj, + ); +} + +#[test] +fn eth_to_mx_transfer_both_rejected_test() { + let mut setup = MultisigSetup::new( + multiversx_price_aggregator_sc::contract_obj, + esdt_safe::contract_obj, + multi_transfer_esdt::contract_obj, + multisig::contract_obj, + ); + + let dest_sc = setup.b_mock.create_sc_account( + &rust_biguint!(0), + Some(&setup.owner_addr), + esdt_safe::contract_obj, + "other esdt safe wasm path", + ); + + setup + .b_mock + .execute_tx( + &setup.relayer_1, + &setup.multisig_wrapper, + &rust_biguint!(0), + |sc| { + let mut transfers = MultiValueEncoded::new(); + let user_eth_addr = EthAddress { + raw_addr: ManagedByteArray::new_from_bytes(&[ + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + ]), + }; + transfers.push( + ( + user_eth_addr.clone(), + managed_address!(dest_sc.address_ref()), + managed_token_id!(WEGLD_TOKEN_ID), + managed_biguint!(76_000_000_000), + 1, + Some(CallData { + endpoint: managed_buffer!(b"data"), + gas_limit: 5_000_000, + args: ManagedVec::new(), + }), + ) + .into(), + ); + transfers.push( + ( + user_eth_addr, + managed_address!(dest_sc.address_ref()), + managed_token_id!(ETH_TOKEN_ID), + managed_biguint!(76_000_000_000), + 2, + Some(CallData { + endpoint: managed_buffer!(b"data"), + gas_limit: 5_000_000, + args: ManagedVec::new(), + }), + ) + .into(), + ); + + let action_id = sc.propose_multi_transfer_esdt_batch(1, transfers); + assert_eq!(action_id, 1); + }, + ) + .assert_ok(); + + setup + .b_mock + .execute_tx( + &setup.relayer_2, + &setup.multisig_wrapper, + &rust_biguint!(0), + |sc| { + sc.sign(1); + }, + ) + .assert_ok(); + + setup + .b_mock + .execute_tx( + &setup.relayer_1, + &setup.multisig_wrapper, + &rust_biguint!(0), + |sc| { + sc.perform_action_endpoint(1); + }, + ) + .assert_ok(); +} diff --git a/multisig/tests/multisig_setup/mod.rs b/multisig/tests/multisig_setup/mod.rs new file mode 100644 index 00000000..b00ba92d --- /dev/null +++ b/multisig/tests/multisig_setup/mod.rs @@ -0,0 +1,335 @@ +use esdt_safe::EsdtSafe; +use multi_transfer_esdt::MultiTransferEsdt; +use multisig::Multisig; +use multiversx_price_aggregator_sc::PriceAggregator; +use multiversx_sc::{ + codec::multi_types::OptionalValue, + types::{Address, EsdtLocalRole, MultiValueEncoded}, +}; +use multiversx_sc_modules::{pause::PauseModule, staking::StakingModule}; +use multiversx_sc_scenario::{ + managed_address, managed_biguint, managed_buffer, managed_egld_token_id, managed_token_id, + rust_biguint, + whitebox_legacy::{BlockchainStateWrapper, ContractObjWrapper}, + DebugApi, +}; +use token_module::TokenModule; +use tx_batch_module::TxBatchModule; + +pub static WEGLD_TOKEN_ID: &[u8] = b"WEGLD-123456"; +pub static ETH_TOKEN_ID: &[u8] = b"ETH-123456"; +pub static GWEI_TOKEN_ID: &[u8] = b"GWEI"; +pub static BRIDGE_TOKEN_ID: &[u8] = b"BRIDGE"; + +pub const ETH_TX_GAS_LIMIT: u64 = 150_000; +pub const STAKE_AMOUNT: u64 = 1_000; + +pub struct MultisigSetup< + PriceAggregatorBuilder, + EsdtSafeBuilder, + MultiTransferBuilder, + MultisigBuilder, +> where + PriceAggregatorBuilder: + 'static + Copy + Fn() -> multiversx_price_aggregator_sc::ContractObj, + EsdtSafeBuilder: 'static + Copy + Fn() -> esdt_safe::ContractObj, + MultiTransferBuilder: 'static + Copy + Fn() -> multi_transfer_esdt::ContractObj, + MultisigBuilder: 'static + Copy + Fn() -> multisig::ContractObj, +{ + pub b_mock: BlockchainStateWrapper, + pub owner_addr: Address, + pub price_agg_wrapper: ContractObjWrapper< + multiversx_price_aggregator_sc::ContractObj, + PriceAggregatorBuilder, + >, + pub esdt_safe_wrapper: ContractObjWrapper, EsdtSafeBuilder>, + pub multi_transfer_wrapper: + ContractObjWrapper, MultiTransferBuilder>, + pub multisig_wrapper: ContractObjWrapper, MultisigBuilder>, + pub relayer_1: Address, + pub relayer_2: Address, + pub user: Address, +} + +impl + MultisigSetup +where + PriceAggregatorBuilder: + 'static + Copy + Fn() -> multiversx_price_aggregator_sc::ContractObj, + EsdtSafeBuilder: 'static + Copy + Fn() -> esdt_safe::ContractObj, + MultiTransferBuilder: 'static + Copy + Fn() -> multi_transfer_esdt::ContractObj, + MultisigBuilder: 'static + Copy + Fn() -> multisig::ContractObj, +{ + pub fn new( + price_aggregator_builder: PriceAggregatorBuilder, + esdt_safe_builder: EsdtSafeBuilder, + multi_transfer_builder: MultiTransferBuilder, + multisig_builder: MultisigBuilder, + ) -> Self { + let rust_zero = rust_biguint!(0); + let mut b_mock = BlockchainStateWrapper::new(); + let owner_addr = b_mock.create_user_account(&rust_zero); + + let mut oracles = Vec::with_capacity(5); + for _ in 0..5 { + let oracle = b_mock.create_user_account(&rust_biguint!(100)); + oracles.push(oracle); + } + + // Price Aggregator setup + + let price_agg_wrapper = b_mock.create_sc_account( + &rust_zero, + Some(&owner_addr), + price_aggregator_builder, + "price aggregator wasm path", + ); + b_mock + .execute_tx(&owner_addr, &price_agg_wrapper, &rust_zero, |sc| { + let mut oracles_managed = MultiValueEncoded::new(); + for oracle in &oracles { + oracles_managed.push(managed_address!(oracle)); + } + + sc.init( + managed_egld_token_id!(), + managed_biguint!(20), + managed_biguint!(10), + 3, + 3, + oracles_managed, + ); + + sc.set_pair_decimals( + managed_buffer!(GWEI_TOKEN_ID), + managed_buffer!(BRIDGE_TOKEN_ID), + 6, + ); + sc.set_pair_decimals( + managed_buffer!(GWEI_TOKEN_ID), + managed_buffer!(WEGLD_TOKEN_ID), + 6, + ); + + sc.unpause_endpoint(); + }) + .assert_ok(); + + for oracle in oracles.iter().take(2) { + b_mock + .execute_tx(oracle, &price_agg_wrapper, &rust_biguint!(100), |sc| { + sc.stake(); + }) + .assert_ok(); + } + + for oracle in oracles.iter().take(2) { + b_mock + .execute_tx(oracle, &price_agg_wrapper, &rust_zero, |sc| { + sc.submit( + managed_buffer!(GWEI_TOKEN_ID), + managed_buffer!(BRIDGE_TOKEN_ID), + 0, + managed_biguint!(10), + 6, + ); + }) + .assert_ok(); + } + + b_mock + .execute_tx(&oracles[0], &price_agg_wrapper, &rust_zero, |sc| { + sc.submit( + managed_buffer!(GWEI_TOKEN_ID), + managed_buffer!(BRIDGE_TOKEN_ID), + 0, + managed_biguint!(1), + 6, + ); + }) + .assert_ok(); + + b_mock + .execute_tx(&oracles[0], &price_agg_wrapper, &rust_zero, |sc| { + sc.submit( + managed_buffer!(GWEI_TOKEN_ID), + managed_buffer!(WEGLD_TOKEN_ID), + 0, + managed_biguint!(10), + 6, + ); + }) + .assert_ok(); + + // Create multisig wrapper first - needed for the other contracts + + let multisig_wrapper = b_mock.create_sc_account( + &rust_zero, + Some(&owner_addr), + multisig_builder, + "multisig wasm path", + ); + + // Esdt Safe setup + + let esdt_safe_wrapper = b_mock.create_sc_account( + &rust_zero, + Some(multisig_wrapper.address_ref()), + esdt_safe_builder, + "esdt safe wasm path", + ); + + let multi_transfer_wrapper = b_mock.create_sc_account( + &rust_zero, + Some(multisig_wrapper.address_ref()), + multi_transfer_builder, + "multi-transfer wasm path", + ); + + b_mock + .execute_tx( + multisig_wrapper.address_ref(), + &esdt_safe_wrapper, + &rust_zero, + |sc| { + sc.init( + managed_address!(price_agg_wrapper.address_ref()), + managed_biguint!(ETH_TX_GAS_LIMIT), + ); + + sc.set_multi_transfer_contract_address(OptionalValue::Some(managed_address!( + multi_transfer_wrapper.address_ref() + ))); + + sc.add_token_to_whitelist( + managed_token_id!(WEGLD_TOKEN_ID), + managed_buffer!(b"WEGLD"), + true, + OptionalValue::Some(managed_biguint!(500_000)), + ); + sc.add_token_to_whitelist( + managed_token_id!(ETH_TOKEN_ID), + managed_buffer!(b"ETH"), + true, + OptionalValue::Some(managed_biguint!(500_000)), + ); + + sc.set_accumulated_burned_tokens( + managed_token_id!(WEGLD_TOKEN_ID), + managed_biguint!(500_000_000_000), + ); + sc.set_accumulated_burned_tokens( + managed_token_id!(ETH_TOKEN_ID), + managed_biguint!(500_000_000_000), + ); + + sc.set_max_tx_batch_block_duration(100); + }, + ) + .assert_ok(); + + b_mock.set_esdt_local_roles( + esdt_safe_wrapper.address_ref(), + WEGLD_TOKEN_ID, + &[EsdtLocalRole::Mint, EsdtLocalRole::Burn], + ); + b_mock.set_esdt_local_roles( + esdt_safe_wrapper.address_ref(), + ETH_TOKEN_ID, + &[EsdtLocalRole::Mint, EsdtLocalRole::Burn], + ); + + // Multi-Transfer setup + + b_mock + .execute_tx( + multisig_wrapper.address_ref(), + &multi_transfer_wrapper, + &rust_zero, + |sc| { + sc.init(); + + sc.set_max_tx_batch_block_duration(3_600); + sc.set_esdt_safe_contract_address(OptionalValue::Some(managed_address!( + esdt_safe_wrapper.address_ref() + ))); + }, + ) + .assert_ok(); + + b_mock.set_esdt_local_roles( + multi_transfer_wrapper.address_ref(), + WEGLD_TOKEN_ID, + &[EsdtLocalRole::Mint], + ); + b_mock.set_esdt_local_roles( + multi_transfer_wrapper.address_ref(), + ETH_TOKEN_ID, + &[EsdtLocalRole::Mint], + ); + + // Multisig setup + + let relayer_1 = b_mock.create_user_account(&rust_zero); + let relayer_2 = b_mock.create_user_account(&rust_zero); + let user = b_mock.create_user_account(&rust_zero); + + b_mock.set_egld_balance(&relayer_1, &rust_biguint!(STAKE_AMOUNT)); + b_mock.set_egld_balance(&relayer_2, &rust_biguint!(STAKE_AMOUNT)); + b_mock.set_esdt_balance(&user, WEGLD_TOKEN_ID, &rust_biguint!(100_000_000_000)); + b_mock.set_esdt_balance(&user, ETH_TOKEN_ID, &rust_biguint!(200_000_000_000)); + + b_mock + .execute_tx(&owner_addr, &multisig_wrapper, &rust_zero, |sc| { + let mut board = MultiValueEncoded::new(); + board.push(managed_address!(&relayer_1)); + board.push(managed_address!(&relayer_2)); + + sc.init( + managed_address!(esdt_safe_wrapper.address_ref()), + managed_address!(multi_transfer_wrapper.address_ref()), + managed_biguint!(STAKE_AMOUNT), + managed_biguint!(500), + 2, + board, + ); + + sc.unpause_endpoint(); + }) + .assert_ok(); + + b_mock + .execute_tx( + &relayer_1, + &multisig_wrapper, + &rust_biguint!(STAKE_AMOUNT), + |sc| { + sc.stake(); + }, + ) + .assert_ok(); + + b_mock + .execute_tx( + &relayer_2, + &multisig_wrapper, + &rust_biguint!(STAKE_AMOUNT), + |sc| { + sc.stake(); + }, + ) + .assert_ok(); + + Self { + b_mock, + owner_addr, + price_agg_wrapper, + esdt_safe_wrapper, + multi_transfer_wrapper, + multisig_wrapper, + relayer_1, + relayer_2, + user, + } + } +} diff --git a/multisig/wasm/Cargo.lock b/multisig/wasm/Cargo.lock index 75b77a5c..7db728f1 100644 --- a/multisig/wasm/Cargo.lock +++ b/multisig/wasm/Cargo.lock @@ -2,14 +2,6 @@ # It is not intended for manual editing. version = 3 -[[package]] -name = "adder" -version = "0.0.0" -source = "git+https://github.com/multiversx/mx-contracts-rs?rev=64e8926#64e892655f9c59b2aafe07800af61d0fa41c6ddc" -dependencies = [ - "multiversx-sc", -] - [[package]] name = "arrayvec" version = "0.7.4" @@ -32,7 +24,6 @@ checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" name = "bridge-proxy" version = "0.0.0" dependencies = [ - "adder", "eth-address", "multiversx-sc", "multiversx-sc-modules", @@ -50,9 +41,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "8ea184aa71bb362a1157c896979544cc23974e08fd265f29ea96b59f0b4a555b" [[package]] name = "cfg-if" @@ -122,18 +113,18 @@ checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "js-sys" -version = "0.3.67" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1" +checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" dependencies = [ "wasm-bindgen", ] [[package]] name = "libc" -version = "0.2.152" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "log" @@ -191,9 +182,9 @@ dependencies = [ [[package]] name = "multiversx-price-aggregator-sc" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8de03c6796bd16c39cafafd13da688d9f64d30965866d1c0d0badd2071235f9" +checksum = "9732ac8bc0ac8e745fc5f6b4c65205111d3b38dde3c2d6593df9105c95b5fcf5" dependencies = [ "arrayvec", "getrandom", @@ -204,9 +195,9 @@ dependencies = [ [[package]] name = "multiversx-sc" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c94b173dc5ff0e157f767275fe6b7a1b4d2ad343bef7b66cd22a6353e016b93" +checksum = "40b69a83a9423be4b543edee969205aa43ef4397c48b965a65bad857e022db5c" dependencies = [ "bitflags", "hex-literal", @@ -217,9 +208,9 @@ dependencies = [ [[package]] name = "multiversx-sc-codec" -version = "0.18.3" +version = "0.18.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19908153158c03df4582af08f47c0eb39fb52a7dff4736b301a66acbbb9955d3" +checksum = "1da6db65170105c9495848c5e4ba388abb1f9201ff2ca362056c9328f36b7760" dependencies = [ "arrayvec", "multiversx-sc-codec-derive", @@ -227,9 +218,9 @@ dependencies = [ [[package]] name = "multiversx-sc-codec-derive" -version = "0.18.3" +version = "0.18.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3b03b43f9cad320992f54ed162de2ed63e3ec83ed01361e57ee9c1865fba5a2" +checksum = "631c4d4b37fc94659c8d6cf559c21b68c68899095201de2e1b779fccad7b0b03" dependencies = [ "hex", "proc-macro2", @@ -239,9 +230,9 @@ dependencies = [ [[package]] name = "multiversx-sc-derive" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b78945957036c281ad6ee21bb5120dcefa2017688adf43ec94e3e7c982efb09" +checksum = "d5fe6400e2f4e57f7c9c00ad76108794aa962657cf62b4d4f49b99f02d9a6ba5" dependencies = [ "hex", "proc-macro2", @@ -252,18 +243,18 @@ dependencies = [ [[package]] name = "multiversx-sc-modules" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c63ffaba95e630ff75981e2f5f50da64f523219b52f484234c66f3adc248885f" +checksum = "187d4110d6625208467512d5191e7490a534389e3ad1e00ccd68f8b4f01a9194" dependencies = [ "multiversx-sc", ] [[package]] name = "multiversx-sc-wasm-adapter" -version = "0.46.1" +version = "0.47.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9579f40c00da56a5a68e010ff851fa48ac7b9c6a16ad4314795cb32d889d9e78" +checksum = "304900b34dfae6fd5baddd4c98345f1b7fa7e839257dac961023733be40dd81e" dependencies = [ "multiversx-sc", ] @@ -300,9 +291,9 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" -version = "1.0.76" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] @@ -358,9 +349,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.12.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2593d31f82ead8df961d8bd23a64c2ccf2eb5dd34b0a34bfb4dd54011c72009e" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "syn" @@ -411,9 +402,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406" +checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -421,9 +412,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd" +checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" dependencies = [ "bumpalo", "log", @@ -436,9 +427,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999" +checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -446,9 +437,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7" +checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" dependencies = [ "proc-macro2", "quote", @@ -459,6 +450,6 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b" +checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" diff --git a/multisig/wasm/Cargo.toml b/multisig/wasm/Cargo.toml index 3c0c1285..8c5fbc83 100644 --- a/multisig/wasm/Cargo.toml +++ b/multisig/wasm/Cargo.toml @@ -7,7 +7,7 @@ [package] name = "multisig-wasm" version = "0.0.0" -edition = "2018" +edition = "2021" publish = false [lib] @@ -25,7 +25,7 @@ overflow-checks = false path = ".." [dependencies.multiversx-sc-wasm-adapter] -version = "=0.46.1" +version = "=0.47.4" [workspace] members = ["."]