diff --git a/Cargo.lock b/Cargo.lock index 27b9961..e36ba75 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -44,7 +44,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -65,7 +65,7 @@ checksum = "7c7db3d5a9718568e4cf4a537cfd7070e6e6ff7481510d0237fb529ac850f6d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -143,9 +143,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.14" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", @@ -158,33 +158,33 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -342,14 +342,14 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] name = "async-signal" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "794f185324c2f00e771cd9f1ae8b5ac68be2ca7abb129a87afd6e86d228bc54d" +checksum = "dfb3634b73397aa844481f814fad23bbf07fdb0eabec10f2eb95e58944b1ec32" dependencies = [ "async-io 2.3.3", "async-lock 3.4.0", @@ -382,7 +382,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -399,7 +399,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -426,7 +426,6 @@ dependencies = [ "anyhow", "hex 0.4.3", "near-contract-standards", - "near-gas", "near-plugins", "near-sdk", "near-workspaces", @@ -649,7 +648,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", "syn_derive", ] @@ -713,9 +712,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.1" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" [[package]] name = "bytesize" @@ -758,9 +757,9 @@ dependencies = [ [[package]] name = "cargo-near" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8776b38372bc29e069d2797a9a6ebd7d55da456c5b3b3acf35b2a93ba8894b6" +checksum = "6e6951d3f90db15d9d68e4437b874688873ffee9473cb1da69e5644c5b550582" dependencies = [ "atty", "bs58 0.5.1", @@ -848,9 +847,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.5" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324c74f2155653c90b04f25b2a47a8a631360cb908f92a772695f430c7e31052" +checksum = "504bdec147f2cc13c8b57ed9401fd8a147cc66b67ad5cb241394244f2c947549" dependencies = [ "jobserver", "libc", @@ -901,9 +900,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.9" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64acc1846d54c1fe936a78dc189c34e28d3f5afc348403f28ecf53660b9b8462" +checksum = "0fbb260a053428790f3de475e304ff84cdbc4face759ea7a3e64c1edd938a7fc" dependencies = [ "clap_builder", "clap_derive", @@ -911,9 +910,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.9" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8393d67ba2e7bfaf28a23458e4e2b543cc73a99595511eb207fdb8aede942" +checksum = "64b17d7ea74e9f833c7dbf2cbe4fb12ff26783eda4782a8975b72f895c9b4d99" dependencies = [ "anstream", "anstyle", @@ -923,21 +922,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.8" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bac35c6dafb060fd4d275d9a4ffae97917c13a6327903a8be2153cd964f7085" +checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] name = "clap_lex" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "color-eyre" @@ -968,9 +967,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "colored" @@ -1098,7 +1097,7 @@ dependencies = [ "bitflags 1.3.2", "crossterm_winapi", "libc", - "mio", + "mio 0.8.11", "parking_lot", "signal-hook", "signal-hook-mio", @@ -1198,7 +1197,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -1246,7 +1245,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -1268,7 +1267,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core 0.20.10", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -1309,7 +1308,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -1322,7 +1321,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -1395,9 +1394,9 @@ checksum = "f0bc8fbe9441c17c9f46f75dfe27fa1ddb6c68a461ccaed0481419219d4f10d3" [[package]] name = "dunce" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "dyn-clone" @@ -1493,7 +1492,7 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -1514,14 +1513,14 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] name = "env_filter" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea" +checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" dependencies = [ "log", "regex", @@ -1529,9 +1528,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.3" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b35839ba51819680ba087cd351788c9a3c476841207e0b8cee0b04722343b9" +checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" dependencies = [ "anstream", "anstyle", @@ -1654,9 +1653,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.30" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920" dependencies = [ "crc32fast", "miniz_oxide", @@ -1801,7 +1800,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -1918,7 +1917,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.2.6", + "indexmap 2.3.0", "slab", "tokio", "tokio-util", @@ -1937,7 +1936,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.2.6", + "indexmap 2.3.0", "slab", "tokio", "tokio-util", @@ -2213,9 +2212,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" +checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" dependencies = [ "bytes", "futures-channel", @@ -2295,9 +2294,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" dependencies = [ "equivalent", "hashbrown 0.14.5", @@ -2435,9 +2434,9 @@ dependencies = [ [[package]] name = "is_terminal_polyfill" -version = "1.70.0" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itertools" @@ -2465,9 +2464,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] @@ -2562,9 +2561,9 @@ checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libloading" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e310b3a6b5907f99202fcdb4960ff45b93735d7c7d96b760fcff8db2dc0e103d" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if 1.0.0", "windows-targets 0.52.6", @@ -2723,6 +2722,18 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "mio" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "wasi", + "windows-sys 0.52.0", +] + [[package]] name = "miow" version = "0.3.7" @@ -2848,7 +2859,7 @@ checksum = "0a47ae519ceed7636e3d9328fd7d1bcbda9a28eccee73315e0a3139e99aa1232" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -2924,7 +2935,7 @@ dependencies = [ "textwrap", "thiserror", "tokio", - "toml 0.8.14", + "toml 0.8.19", "tracing", "tracing-indicatif", "tracing-subscriber", @@ -3191,7 +3202,7 @@ checksum = "cf41b149dcc1f5a35d6a96fbcd8c28c92625c05b52025a72ee7378c72bcd68ce" dependencies = [ "quote", "serde", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -3202,7 +3213,7 @@ checksum = "73c7f0f12f426792dd2c9d83df43d73c3b15d80f6e99e8d0e16ff3e024d0f9ba" dependencies = [ "near-rpc-error-core", "serde", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -3271,14 +3282,14 @@ dependencies = [ "serde_json", "strum 0.26.3", "strum_macros 0.26.4", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] name = "near-socialdb-client" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce6219bcc96bcfc79bb3cc24f6e9bba223628f3b74f3d8bde69cafb2635eb05" +checksum = "f73f20e836368bc9a26536fd9d636aefa2860696da7691095eb9e65ae32bfa55" dependencies = [ "color-eyre", "near-crypto", @@ -3317,9 +3328,9 @@ dependencies = [ [[package]] name = "near-token" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b68f3f8a2409f72b43efdbeff8e820b81e70824c49fee8572979d789d1683fb" +checksum = "f3b497804ec8f603fd11edc3d3b7b19f07c0beb9fe47c8a536eea1867097fd40" dependencies = [ "borsh", "interactive-clap", @@ -3582,16 +3593,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi 0.3.9", - "libc", -] - [[package]] name = "number_prefix" version = "0.4.0" @@ -3632,9 +3633,9 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.64" +version = "0.10.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" dependencies = [ "bitflags 2.6.0", "cfg-if 1.0.0", @@ -3653,7 +3654,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -3673,9 +3674,9 @@ dependencies = [ [[package]] name = "openssl-sys" -version = "0.9.102" +version = "0.9.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" dependencies = [ "cc", "libc", @@ -3766,9 +3767,9 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "ordered-float" -version = "4.2.1" +version = "4.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ff2cf528c6c03d9ed653d6c4ce1dc0582dc4af309790ad92f07c1cd551b0be" +checksum = "4a91171844676f8c7990ce64959210cd2eaef32c2612c50f9fae9f8aaa6065a6" dependencies = [ "num-traits", ] @@ -3896,7 +3897,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -3967,9 +3968,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" [[package]] name = "powerfmt" @@ -3979,9 +3980,12 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "precomputed-hash" @@ -4119,7 +4123,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -4233,9 +4237,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.5" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", @@ -4447,9 +4451,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.11" +version = "0.23.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4828ea528154ae444e5a642dbb7d5623354030dc9822b83fd9bb79683c7399d0" +checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" dependencies = [ "log", "once_cell", @@ -4462,9 +4466,9 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" dependencies = [ "base64 0.22.1", "rustls-pki-types", @@ -4472,15 +4476,15 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" +checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" [[package]] name = "rustls-webpki" -version = "0.102.5" +version = "0.102.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a6fccd794a42c2c105b513a2f62bc3fd8f3ba57a4593677ceb0bd035164d78" +checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" dependencies = [ "ring", "rustls-pki-types", @@ -4538,7 +4542,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -4570,7 +4574,7 @@ checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -4666,7 +4670,7 @@ checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -4677,16 +4681,17 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] name = "serde_json" -version = "1.0.120" +version = "1.0.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" +checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -4699,14 +4704,14 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] name = "serde_spanned" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ "serde", ] @@ -4733,7 +4738,7 @@ dependencies = [ "chrono", "hex 0.4.3", "indexmap 1.9.3", - "indexmap 2.2.6", + "indexmap 2.3.0", "serde", "serde_derive", "serde_json", @@ -4750,7 +4755,7 @@ dependencies = [ "darling 0.20.10", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -4759,7 +4764,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.3.0", "itoa", "ryu", "serde", @@ -4853,12 +4858,12 @@ dependencies = [ [[package]] name = "signal-hook-mio" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" +checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" dependencies = [ "libc", - "mio", + "mio 0.8.11", "signal-hook", ] @@ -4934,7 +4939,7 @@ checksum = "0eb01866308440fc64d6c44d9e86c5cc17adfe33c4d6eed55da9145044d0ffc1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -5045,7 +5050,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -5109,9 +5114,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.71" +version = "2.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462" +checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" dependencies = [ "proc-macro2", "quote", @@ -5127,7 +5132,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -5182,14 +5187,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.10.1" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ "cfg-if 1.0.0", "fastrand 2.1.0", + "once_cell", "rustix 0.38.34", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -5216,22 +5222,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.62" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2675633b1499176c2dff06b0856a27976a8f9d436737b4cf4f312d4d91d8bbb" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.62" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d20468752b09f49e909e55a5d338caa8bedf615594e9d80bc4c565d30faf798c" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -5292,21 +5298,20 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.38.0" +version = "1.39.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" +checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" dependencies = [ "backtrace", "bytes", "libc", - "mio", - "num_cpus", + "mio 1.0.1", "parking_lot", "pin-project-lite", "signal-hook-registry", "socket2 0.5.7", "tokio-macros", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -5321,13 +5326,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -5397,21 +5402,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.14" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.15", + "toml_edit 0.22.20", ] [[package]] name = "toml_datetime" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] @@ -5422,7 +5427,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.3.0", "toml_datetime", "winnow 0.5.40", ] @@ -5433,22 +5438,22 @@ version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.3.0", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.15" +version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59a3a72298453f564e2b111fa896f8d07fabb36f51f06d7e875fc5e0b5a3ef1" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.3.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.13", + "winnow 0.6.18", ] [[package]] @@ -5541,7 +5546,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -5785,9 +5790,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "vt100" @@ -5874,7 +5879,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", "wasm-bindgen-shared", ] @@ -5908,7 +5913,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5934,7 +5939,7 @@ dependencies = [ "ahash 0.8.11", "bitflags 2.6.0", "hashbrown 0.14.5", - "indexmap 2.2.6", + "indexmap 2.3.0", "semver", "serde", ] @@ -5998,11 +6003,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -6038,6 +6043,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -6170,9 +6184,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.13" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" dependencies = [ "memchr", ] @@ -6219,9 +6233,9 @@ dependencies = [ [[package]] name = "xml-rs" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" +checksum = "539a77ee7c0de333dcc6da69b177380a0b81e0dacfa4f7344c465a36871ee601" [[package]] name = "zbus" @@ -6295,6 +6309,7 @@ version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] @@ -6306,7 +6321,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.71", + "syn 2.0.72", ] [[package]] @@ -6375,7 +6390,7 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" dependencies = [ - "zstd-safe 7.2.0", + "zstd-safe 7.2.1", ] [[package]] @@ -6390,18 +6405,18 @@ dependencies = [ [[package]] name = "zstd-safe" -version = "7.2.0" +version = "7.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa556e971e7b568dc775c136fc9de8c779b1c2fc3a63defaafadffdbd3181afa" +checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059" dependencies = [ "zstd-sys", ] [[package]] name = "zstd-sys" -version = "2.0.12+zstd.1.5.6" +version = "2.0.13+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a4e40c320c3cb459d9a9ff6de98cff88f4751ee9275d140e2be94a2b74e4c13" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" dependencies = [ "cc", "pkg-config", diff --git a/Cargo.toml b/Cargo.toml index f858fd4..cc55acc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,8 +3,8 @@ name = "aurora-controller-factory" authors = ["Aurora Labs "] version = "0.1.0" edition = "2021" -homepage = "https://github.com/aurora-is-near/aurora-factory" -repository = "https://github.com/aurora-is-near/aurora-factory" +homepage = "https://github.com/aurora-is-near/aurora-controller-factory" +repository = "https://github.com/aurora-is-near/aurora-controller-factory" license = "CC0-1.0" readme = "README.md" publish = false @@ -22,7 +22,6 @@ anyhow = "1" hex = "0.4" near-sdk = "5.2" near-contract-standards = "5.2" -near-gas = "0.2" near-plugins = { git = "https://github.com/aleksuss/near-plugins.git", rev = "a1393df" } semver = { version = "1", features = ["serde"] } serde = { version = "1", features = ["derive"] } diff --git a/res/aurora-mainnet-silo-3.4.0.wasm b/res/aurora-mainnet-silo-3.4.0.wasm index 8a57a15..c5bcad8 100755 Binary files a/res/aurora-mainnet-silo-3.4.0.wasm and b/res/aurora-mainnet-silo-3.4.0.wasm differ diff --git a/res/aurora-mainnet-silo-3.5.0.wasm b/res/aurora-mainnet-silo-3.5.0.wasm index 7356ded..9133aa1 100755 Binary files a/res/aurora-mainnet-silo-3.5.0.wasm and b/res/aurora-mainnet-silo-3.5.0.wasm differ diff --git a/rust-toolchain b/rust-toolchain index 447620a..6372b5f 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1,4 +1,4 @@ [toolchain] -channel = "1.76.0" +channel = "1.79.0" components = ["clippy", "rustfmt"] targets = ["wasm32-unknown-unknown"] diff --git a/src/bin/to_borsh.rs b/src/bin/to_borsh.rs new file mode 100644 index 0000000..4d75a39 --- /dev/null +++ b/src/bin/to_borsh.rs @@ -0,0 +1,8 @@ +fn main() -> anyhow::Result<()> { + let data = + std::fs::read("target/wasm32-unknown-unknown/release/aurora_controller_factory.wasm")?; + let borsh = near_sdk::borsh::to_vec(&data)?; + std::fs::write("res/aurora-controller-factory.wasm", borsh)?; + + Ok(()) +} diff --git a/src/lib.rs b/src/lib.rs index ce34e0d..173984e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,3 @@ -use crate::event::Event; -use crate::types::{DeploymentInfo, FunctionCallArgs, ReleaseInfo, Version}; -use near_gas::NearGas; use near_plugins::{ access_control, access_control_any, AccessControlRole, AccessControllable, Ownable, Pausable, Upgradable, @@ -11,10 +8,13 @@ use near_sdk::serde::{Deserialize, Serialize}; use near_sdk::serde_json::{json, Value}; use near_sdk::store::IterableMap; use near_sdk::{ - env, ext_contract, near, AccountId, NearToken, PanicOnDefault, Promise, PromiseResult, - PublicKey, + env, ext_contract, near, require, AccountId, Gas, NearToken, PanicOnDefault, Promise, + PromiseResult, PublicKey, }; +use crate::event::Event; +use crate::types::{DeploymentInfo, FunctionCallArgs, ReleaseInfo, UpgradeArgs, Version}; + mod event; mod keys; #[cfg(test)] @@ -23,17 +23,20 @@ pub mod types; pub mod utils; /// Gas needed for initialization deployed contract. -const NEW_GAS: NearGas = NearGas::from_tgas(100); +const NEW_GAS: Gas = Gas::from_tgas(100); + +/// Gas needed to upgrade contract (except a gas for the migration state). +const UPGRADE_GAS: Gas = Gas::from_tgas(130); -/// Gas needed to upgrade contract. -const UPGRADE_GAS: NearGas = NearGas::from_tgas(230); +/// Gas needed to upgrade contract (except a gas for the migration state). +const UPGRADE_GAS_NO_MIGRATION_GAS: Gas = Gas::from_tgas(180); /// Gas needed to call the `add_deployment` callback. -const ADD_DEPLOYMENT_GAS: NearGas = NearGas::from_tgas(5); +const ADD_DEPLOYMENT_GAS: Gas = Gas::from_tgas(5); /// Amount of gas used by `delegate_pause` in the controller contract /// without taking into account the gas consumed by the promise. -const OUTER_DELEGATE_PAUSE_GAS: NearGas = NearGas::from_tgas(10); +const OUTER_DELEGATE_PAUSE_GAS: Gas = Gas::from_tgas(10); /// Allowed pause methods. const ALLOWED_PAUSE_METHODS: &[&str] = &["pause_contract", "pa_pause_feature"]; @@ -55,7 +58,7 @@ pub enum Role { Updater, } -/// +/// Controller contract for deploying and upgrading contracts. #[derive(Ownable, PanicOnDefault, Pausable, Upgradable)] #[ownable] #[access_control(role_type(Role))] @@ -175,9 +178,9 @@ impl AuroraControllerFactory { downgrade_hash: Option, description: Option, ) { - assert!( + require!( self.releases.get(&hash).is_none(), - "release info for hash: {hash} is already exist" + "release info for the hash is already exist" ); let release_info = ReleaseInfo { @@ -279,9 +282,9 @@ impl AuroraControllerFactory { blob_hash: Option, ) -> Promise { // Check that the `new_contract_id` wasn't used for another contract before. - assert!( + require!( self.deployments.get(&new_contract_id).is_none(), - "{new_contract_id} is already deployed" + format!("{new_contract_id} is already deployed") ); let blob_hash = blob_hash @@ -323,9 +326,9 @@ impl AuroraControllerFactory { NEW_GAS, ) .then( - ext_self::ext(env::current_account_id()) + Self::ext(env::current_account_id()) .with_static_gas(ADD_DEPLOYMENT_GAS) - .update_deployment_info(new_contract_id, &deployment_info), + .update_deployment_info(new_contract_id, deployment_info), ) } @@ -366,14 +369,36 @@ impl AuroraControllerFactory { /// Upgrades a contract with account id and provided or the latest hash. #[access_control_any(roles(Role::DAO, Role::Updater))] - pub fn upgrade(&mut self, contract_id: AccountId, hash: Option) -> Promise { - self.upgrade_internal(contract_id, hash, false, Event::Upgrade) + pub fn upgrade( + &mut self, + contract_id: AccountId, + hash: Option, + state_migration_gas: Option, + ) -> Promise { + self.upgrade_internal( + contract_id, + hash, + false, + state_migration_gas, + Event::Upgrade, + ) } /// Upgrades a contract with account id and provided hash without checking version. #[access_control_any(roles(Role::DAO))] - pub fn unrestricted_upgrade(&mut self, contract_id: AccountId, hash: String) -> Promise { - self.upgrade_internal(contract_id, Some(hash), true, Event::UnrestrictedUpgrade) + pub fn unrestricted_upgrade( + &mut self, + contract_id: AccountId, + hash: String, + state_migration_gas: Option, + ) -> Promise { + self.upgrade_internal( + contract_id, + Some(hash), + true, + state_migration_gas, + Event::UnrestrictedUpgrade, + ) } /// Downgrades the contract with account id. @@ -407,7 +432,13 @@ impl AuroraControllerFactory { event::emit(Event::Downgrade, &event_metadata); deployment_info.update(downgrade_hash, downgrade_release_info.version.clone()); - upgrade_promise(contract_id, blob.clone(), deployment_info) + + let args = UpgradeArgs { + code: blob.clone(), + state_migration_gas: None, + }; + + Self::upgrade_promise(contract_id, args, deployment_info) } } @@ -417,6 +448,7 @@ impl AuroraControllerFactory { contract_id: AccountId, hash: Option, skip_version_check: bool, + state_migration_gas: Option, event: Event, ) -> Promise { let hash = hash @@ -431,11 +463,12 @@ impl AuroraControllerFactory { panic!("contract with account id: {contract_id} hasn't been deployed") }); - assert!( + require!( release_info.version > deployment_info.version || skip_version_check, - "upgradable version: {} should be higher than the deployed version: {}", - release_info.version, - deployment_info.version + format!( + "upgradable version: {} should be higher than the deployed version: {}", + release_info.version, deployment_info.version + ) ); let event_metadata = json!({"contract_id": &contract_id, "release_info": &release_info}); @@ -448,32 +481,41 @@ impl AuroraControllerFactory { event::emit(event, &event_metadata); deployment_info.update(hash, release_info.version.clone()); - upgrade_promise(contract_id, blob.clone(), deployment_info) + + let args = UpgradeArgs { + code: blob.clone(), + state_migration_gas, + }; + + Self::upgrade_promise(contract_id, args, deployment_info) } -} -#[ext_contract(ext_self)] -pub trait ExtAuroraControllerFactory { - /// Callback which adds or overwrites deployment info after successful contract deployment, - /// upgrading or downgrading. - fn update_deployment_info(&mut self, contract_id: AccountId, deployment_info: &DeploymentInfo); + fn upgrade_promise( + contract_id: AccountId, + args: UpgradeArgs, + deployment_info: &DeploymentInfo, + ) -> Promise { + ext_aurora::ext(contract_id.clone()) + .with_static_gas( + args.state_migration_gas + .map_or(UPGRADE_GAS_NO_MIGRATION_GAS, |gas| { + UPGRADE_GAS.saturating_add(Gas::from_gas(gas)) + }), + ) + .upgrade(args.code, args.state_migration_gas) + .then( + Self::ext(env::current_account_id()) + .with_static_gas(ADD_DEPLOYMENT_GAS) + .update_deployment_info(contract_id, deployment_info.clone()), + ) + } } -fn upgrade_promise( - contract_id: AccountId, - blob: Vec, - deployment_info: &DeploymentInfo, -) -> Promise { - Promise::new(contract_id.clone()) - .function_call( - "upgrade".to_string(), - blob, - NearToken::from_near(0), - UPGRADE_GAS, - ) - .then( - ext_self::ext(env::current_account_id()) - .with_static_gas(ADD_DEPLOYMENT_GAS) - .update_deployment_info(contract_id, deployment_info), - ) +#[ext_contract(ext_aurora)] +pub trait ExtAurora { + fn upgrade( + &mut self, + #[serializer(borsh)] code: Vec, + #[serializer(borsh)] state_migration_gas: Option, + ); } diff --git a/src/tests/mod.rs b/src/tests/mod.rs index 88bdbf8..3f83e83 100644 --- a/src/tests/mod.rs +++ b/src/tests/mod.rs @@ -3,7 +3,9 @@ mod sdk; // Tests in this module are used `near-workspaces-rs`. mod workspace; -pub const HASH_3_4_0: &str = "9316bf4c7aa0913f26ef8eebdcb11f3c63bb88c65eb717abfec8ade1b707620c"; -pub const HASH_3_5_0: &str = "45f97119f38321864f1815c0e8a88753086f5433f6681810faf049d73d7de4b1"; +pub const HASH_3_4_0: &str = "c8f8468675bc1de2b12eb6a11819be20e91a1ae169fa6f10d997a6fd19f84bf9"; +pub const HASH_3_5_0: &str = "85b781eabb3b39e7f975bd803c6c7e80fe8dff78724c6c204a7eaf9f0cefbcbf"; pub const BLOB_3_4_0: &[u8] = include_bytes!("../../res/aurora-mainnet-silo-3.4.0.wasm"); pub const BLOB_3_5_0: &[u8] = include_bytes!("../../res/aurora-mainnet-silo-3.5.0.wasm"); + +pub const MIGRATION_GAS: u64 = 50_000_000_000_000; // 50 TGas diff --git a/src/tests/workspace/delegate.rs b/src/tests/workspace/delegate.rs index a1bcfc8..626727e 100644 --- a/src/tests/workspace/delegate.rs +++ b/src/tests/workspace/delegate.rs @@ -1,13 +1,14 @@ -use super::utils; -use crate::tests::{BLOB_3_4_0, HASH_3_4_0}; -use crate::types::FunctionCallArgs; -use near_gas::NearGas; use near_sdk::near; use near_sdk::serde_json::json; +use near_sdk::Gas; use near_workspaces::types::NearToken; use near_workspaces::{Account, AccountId, Contract}; use std::str::FromStr; +use super::utils; +use crate::tests::{BLOB_3_4_0, HASH_3_4_0}; +use crate::types::FunctionCallArgs; + #[tokio::test] async fn test_delegate_execution() { let (factory_owner, factory, contract_id) = create_factory().await; @@ -20,14 +21,14 @@ async fn test_delegate_execution() { function_name: "set_owner".to_string(), arguments: near_sdk::borsh::to_vec(&contract_id).map(Into::into).unwrap(), amount: NearToken::from_near(0), - gas: NearGas::from_tgas(5) + gas: Gas::from_tgas(5) }] })) .max_gas() .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let bytes = factory_owner .call(&contract_id, "get_owner") @@ -58,8 +59,7 @@ async fn test_delegate_pause() { .transact() .await .unwrap(); - dbg!(&result); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner .call(&contract_id, "set_owner") @@ -89,7 +89,7 @@ async fn create_factory() -> (Account, Contract, AccountId) { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner .call(factory.id(), "add_release_blob") @@ -98,7 +98,7 @@ async fn create_factory() -> (Account, Contract, AccountId) { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let contract_id: AccountId = "aurora-1.factory-owner.test.near".parse().unwrap(); let init_args = json!({ @@ -120,7 +120,7 @@ async fn create_factory() -> (Account, Contract, AccountId) { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); (factory_owner, factory, contract_id) } diff --git a/src/tests/workspace/deploy.rs b/src/tests/workspace/deploy.rs index 1305d2d..2d907cd 100644 --- a/src/tests/workspace/deploy.rs +++ b/src/tests/workspace/deploy.rs @@ -1,11 +1,12 @@ -use super::utils; -use crate::tests::{BLOB_3_4_0, BLOB_3_5_0, HASH_3_4_0, HASH_3_5_0}; -use crate::types::DeploymentInfo; use near_sdk::serde_json::json; use near_workspaces::types::NearToken; use near_workspaces::AccountId; use std::collections::BTreeMap; +use super::utils; +use crate::tests::{BLOB_3_4_0, BLOB_3_5_0, HASH_3_4_0, HASH_3_5_0, MIGRATION_GAS}; +use crate::types::DeploymentInfo; + #[tokio::test] async fn test_deploy_contract() { let (factory_owner, factory, _) = utils::crate_factory().await.unwrap(); @@ -28,7 +29,7 @@ async fn test_deploy_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner .call(factory.id(), "add_release_blob") @@ -37,7 +38,7 @@ async fn test_deploy_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let new_contract_id: AccountId = "aurora.factory-owner.test.near".parse().unwrap(); let result = factory_owner @@ -58,8 +59,7 @@ async fn test_deploy_contract() { .transact() .await .unwrap(); - dbg!(&result); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let deployments: Vec = factory_owner .view(factory.id(), "get_deployments") @@ -98,7 +98,7 @@ async fn test_deploy_more_than_one_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner .call(factory.id(), "add_release_blob") @@ -107,7 +107,7 @@ async fn test_deploy_more_than_one_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let new_1_contract_id: AccountId = "aurora-1.factory-owner.test.near".parse().unwrap(); let init_args_1 = json!({ @@ -129,7 +129,7 @@ async fn test_deploy_more_than_one_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let deploy_time_1 = worker .view_block() .block_hash(result.unwrap().outcome().block_hash) @@ -148,7 +148,7 @@ async fn test_deploy_more_than_one_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner .call(factory.id(), "add_release_blob") @@ -157,7 +157,7 @@ async fn test_deploy_more_than_one_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let new_2_contract_id: AccountId = "aurora-2.factory-owner.test.near".parse().unwrap(); let init_args_2 = json!({ @@ -180,7 +180,7 @@ async fn test_deploy_more_than_one_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let deploy_time_2 = worker .view_block() .block_hash(result.unwrap().outcome().block_hash) @@ -248,7 +248,7 @@ async fn test_add_deployment_info_for_existed_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); silo_contract }; @@ -272,7 +272,7 @@ async fn test_add_deployment_info_for_existed_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); } let result = factory_owner @@ -286,7 +286,7 @@ async fn test_add_deployment_info_for_existed_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner .call(factory.id(), "add_release_blob") @@ -295,18 +295,19 @@ async fn test_add_deployment_info_for_existed_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner .call(factory.id(), "upgrade") .args_json(json!({ - "contract_id": silo_contract.id() + "contract_id": silo_contract.id(), + "state_migration_gas": MIGRATION_GAS })) .max_gas() .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); // Check that the version has been changed to 3.5.0. let result = factory_owner.view(silo_contract.id(), "get_version").await; diff --git a/src/tests/workspace/downgrade.rs b/src/tests/workspace/downgrade.rs index 9b9c57e..f70cdd0 100644 --- a/src/tests/workspace/downgrade.rs +++ b/src/tests/workspace/downgrade.rs @@ -1,10 +1,11 @@ -use super::utils; -use crate::tests::{BLOB_3_4_0, BLOB_3_5_0, HASH_3_4_0, HASH_3_5_0}; -use crate::types::DeploymentInfo; use near_sdk::serde_json::json; use near_workspaces::types::NearToken; use near_workspaces::AccountId; +use super::utils; +use crate::tests::{BLOB_3_4_0, BLOB_3_5_0, HASH_3_4_0, HASH_3_5_0}; +use crate::types::DeploymentInfo; + #[tokio::test] async fn test_downgrade_contract() { let (factory_owner, factory, _) = utils::crate_factory().await.unwrap(); @@ -20,7 +21,7 @@ async fn test_downgrade_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner .call(factory.id(), "add_release_blob") @@ -29,7 +30,7 @@ async fn test_downgrade_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner .call(factory.id(), "add_release_info") @@ -42,8 +43,7 @@ async fn test_downgrade_contract() { .transact() .await .unwrap(); - dbg!(&result); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner .call(factory.id(), "add_release_blob") @@ -52,7 +52,7 @@ async fn test_downgrade_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let new_contract_id: AccountId = "aurora.factory-owner.test.near".parse().unwrap(); @@ -94,7 +94,7 @@ async fn test_downgrade_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner.view(&new_contract_id, "get_version").await; let version = String::from_utf8(result.unwrap().result).unwrap(); assert_eq!(version.trim_end(), "3.4.0"); diff --git a/src/tests/workspace/release.rs b/src/tests/workspace/release.rs index 0cdc3c9..022dd74 100644 --- a/src/tests/workspace/release.rs +++ b/src/tests/workspace/release.rs @@ -1,6 +1,7 @@ +use near_sdk::serde_json::json; + use super::utils; use crate::types::ReleaseInfo; -use near_sdk::serde_json::json; #[tokio::test] async fn test_add_new_release() { @@ -17,7 +18,7 @@ async fn test_add_new_release() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner .call(factory.id(), "add_release_info") diff --git a/src/tests/workspace/upgrade.rs b/src/tests/workspace/upgrade.rs index 492efc1..270ba42 100644 --- a/src/tests/workspace/upgrade.rs +++ b/src/tests/workspace/upgrade.rs @@ -1,9 +1,10 @@ -use super::utils; -use crate::tests::{BLOB_3_4_0, BLOB_3_5_0, HASH_3_4_0, HASH_3_5_0}; use near_sdk::serde_json::json; use near_workspaces::types::NearToken; use near_workspaces::AccountId; +use super::utils; +use crate::tests::{BLOB_3_4_0, BLOB_3_5_0, HASH_3_4_0, HASH_3_5_0, MIGRATION_GAS}; + #[tokio::test] async fn test_upgrade_contract() { let (factory_owner, factory, _) = utils::crate_factory().await.unwrap(); @@ -18,7 +19,7 @@ async fn test_upgrade_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner .call(factory.id(), "add_release_blob") @@ -27,7 +28,7 @@ async fn test_upgrade_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let new_contract_id: AccountId = "aurora.factory-owner.test.near".parse().unwrap(); let result = factory_owner @@ -48,7 +49,7 @@ async fn test_upgrade_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner .call(factory.id(), "add_release_info") @@ -61,7 +62,7 @@ async fn test_upgrade_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner .call(factory.id(), "add_release_blob") @@ -70,16 +71,16 @@ async fn test_upgrade_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner .call(factory.id(), "upgrade") - .args_json((&new_contract_id, HASH_3_5_0)) + .args_json((&new_contract_id, HASH_3_5_0, MIGRATION_GAS)) .max_gas() .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner.view(&new_contract_id, "get_version").await; let version = String::from_utf8(result.unwrap().result).unwrap(); @@ -100,7 +101,7 @@ async fn test_upgrade_contract_to_previous_version() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner .call(factory.id(), "add_release_blob") @@ -109,7 +110,7 @@ async fn test_upgrade_contract_to_previous_version() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let new_contract_id: AccountId = "aurora.factory-owner.test.near".parse().unwrap(); let result = factory_owner @@ -130,7 +131,7 @@ async fn test_upgrade_contract_to_previous_version() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner .call(factory.id(), "add_release_info") @@ -143,7 +144,7 @@ async fn test_upgrade_contract_to_previous_version() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner .call(factory.id(), "add_release_blob") @@ -152,11 +153,11 @@ async fn test_upgrade_contract_to_previous_version() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner .call(factory.id(), "upgrade") - .args_json((&new_contract_id, HASH_3_4_0)) + .args_json((&new_contract_id, HASH_3_4_0, MIGRATION_GAS)) .max_gas() .transact() .await @@ -183,7 +184,7 @@ async fn test_unrestricted_upgrade_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner .call(factory.id(), "add_release_blob") @@ -192,7 +193,7 @@ async fn test_unrestricted_upgrade_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let new_contract_id: AccountId = "aurora.factory-owner.test.near".parse().unwrap(); let result = factory_owner @@ -213,7 +214,7 @@ async fn test_unrestricted_upgrade_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner .call(factory.id(), "add_release_info") @@ -226,7 +227,7 @@ async fn test_unrestricted_upgrade_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner .call(factory.id(), "add_release_blob") @@ -235,17 +236,16 @@ async fn test_unrestricted_upgrade_contract() { .transact() .await .unwrap(); - assert!(result.is_success()); + assert!(result.is_success(), "{result:#?}"); let result = factory_owner .call(factory.id(), "unrestricted_upgrade") - .args_json((&new_contract_id, HASH_3_4_0)) + .args_json((&new_contract_id, HASH_3_4_0, MIGRATION_GAS)) .max_gas() .transact() .await .unwrap(); - assert!(result.is_success()); - + assert!(result.is_success(), "{result:#?}"); // Check that the version has been changed to 3.4.0. let result = factory_owner.view(&new_contract_id, "get_version").await; let version = String::from_utf8(result.unwrap().result).unwrap(); diff --git a/src/tests/workspace/utils.rs b/src/tests/workspace/utils.rs index 51bf0b6..00f55ff 100644 --- a/src/tests/workspace/utils.rs +++ b/src/tests/workspace/utils.rs @@ -1,9 +1,10 @@ -use crate::Role; use near_sdk::serde_json::json; use near_workspaces::network::Sandbox; use near_workspaces::types::NearToken; use near_workspaces::{Account, AccountId, Contract, Worker}; +use crate::Role; + const FACTORY_OWNER: &str = "factory-owner"; const AURORA_FACTORY_CONTRACT_PATH: &str = "target/wasm32-unknown-unknown/release/aurora_controller_factory.wasm"; diff --git a/src/types.rs b/src/types.rs index 55de1a4..c14f388 100644 --- a/src/types.rs +++ b/src/types.rs @@ -1,8 +1,7 @@ -use near_gas::NearGas; use near_sdk::borsh::{BorshDeserialize, BorshSerialize}; use near_sdk::json_types::Base64VecU8; use near_sdk::serde::{Deserialize, Serialize}; -use near_sdk::{near, NearToken}; +use near_sdk::{near, Gas, NearToken}; use std::collections::BTreeMap; use std::fmt::{Display, Formatter}; use std::io::{Read, Write}; @@ -96,7 +95,14 @@ pub struct FunctionCallArgs { pub function_name: String, pub arguments: Base64VecU8, pub amount: NearToken, - pub gas: NearGas, + pub gas: Gas, +} + +#[derive(Debug)] +#[near(serializers = [borsh])] +pub struct UpgradeArgs { + pub code: Vec, + pub state_migration_gas: Option, } #[test]