From a9b2cf253ffd595f8b310bd06b946b94a66d11a6 Mon Sep 17 00:00:00 2001 From: pixels26 Date: Wed, 24 Jun 2026 15:46:36 +0000 Subject: [PATCH] Contract Deployment: Verify Contract WASM hashes on chain #334 --- .cargo/config.toml | 8 + Cargo.lock | 668 +++++++++++++++++++++++++++++--- contracts/admin/Cargo.toml | 2 +- contracts/lifecycle/Cargo.toml | 2 +- contracts/rate-limit/Cargo.toml | 2 +- contracts/token/Cargo.toml | 2 +- contracts/token/src/lib.rs | 5 +- contracts/ttl/Cargo.toml | 2 +- contracts/vesting/Cargo.toml | 2 +- contracts/wrapper/Cargo.toml | 2 +- contracts/wrapper/src/lib.rs | 6 +- 11 files changed, 629 insertions(+), 72 deletions(-) create mode 100644 .cargo/config.toml diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000..489e024 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,8 @@ +[unstable] +build-std = ["core", "compiler_builtins", "alloc"] + +[build] +target = "wasm32v1-none" + +[target.wasm32v1-none] +rustflags = ["-C", "target-feature=+simd", "-C", "link-args=-zstack-size=32768"] diff --git a/Cargo.lock b/Cargo.lock index 47db692..58445c3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,6 +14,12 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + [[package]] name = "android_system_properties" version = "0.1.5" @@ -44,10 +50,33 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c775f0d12169cba7aae4caeb547bb6a50781c7449a8aa53793827c9ec4abf488" dependencies = [ - "ark-ec", - "ark-ff", - "ark-serialize", - "ark-std", + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-bls12-381" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3df4dcc01ff89867cd86b0da835f23c3f02738353aaee7dde7495af71363b8d5" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", +] + +[[package]] +name = "ark-bn254" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-std 0.5.0", ] [[package]] @@ -56,13 +85,34 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" dependencies = [ - "ark-ff", - "ark-poly", - "ark-serialize", - "ark-std", + "ark-ff 0.4.2", + "ark-poly 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "hashbrown 0.13.2", - "itertools", + "itertools 0.10.5", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", + "itertools 0.13.0", + "num-bigint", + "num-integer", "num-traits", "zeroize", ] @@ -73,13 +123,13 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" dependencies = [ - "ark-ff-asm", - "ark-ff-macros", - "ark-serialize", - "ark-std", + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "digest", - "itertools", + "itertools 0.10.5", "num-bigint", "num-traits", "paste", @@ -87,6 +137,26 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm 0.5.0", + "ark-ff-macros 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest", + "educe", + "itertools 0.13.0", + "num-bigint", + "num-traits", + "paste", + "zeroize", +] + [[package]] name = "ark-ff-asm" version = "0.4.2" @@ -97,6 +167,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.117", +] + [[package]] name = "ark-ff-macros" version = "0.4.2" @@ -110,27 +190,68 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "ark-poly" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" dependencies = [ - "ark-ff", - "ark-serialize", - "ark-std", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", "derivative", "hashbrown 0.13.2", ] +[[package]] +name = "ark-poly" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", +] + [[package]] name = "ark-serialize" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ - "ark-serialize-derive", - "ark-std", + "ark-serialize-derive 0.4.2", + "ark-std 0.4.0", + "digest", + "num-bigint", +] + +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-serialize-derive 0.5.0", + "ark-std 0.5.0", + "arrayvec", "digest", "num-bigint", ] @@ -146,6 +267,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-serialize-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "ark-std" version = "0.4.0" @@ -156,6 +288,22 @@ dependencies = [ "rand 0.8.6", ] +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand 0.8.6", +] + +[[package]] +name = "arrayvec" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f02882884d3e1bc524fb12c79f107f6ad0e1cfd498c536ffb494301740995dfe" + [[package]] name = "autocfg" version = "1.5.1" @@ -191,7 +339,8 @@ name = "bc-forge-admin" version = "0.1.0" dependencies = [ "bc-forge-ttl", - "soroban-sdk", + "soroban-sdk 22.0.11", + "soroban-sdk 27.0.0-rc.1", ] [[package]] @@ -199,14 +348,16 @@ name = "bc-forge-lifecycle" version = "0.1.0" dependencies = [ "bc-forge-ttl", - "soroban-sdk", + "soroban-sdk 22.0.11", + "soroban-sdk 27.0.0-rc.1", ] [[package]] name = "bc-forge-rate-limit" version = "0.1.0" dependencies = [ - "soroban-sdk", + "soroban-sdk 22.0.11", + "soroban-sdk 27.0.0-rc.1", ] [[package]] @@ -218,14 +369,15 @@ dependencies = [ "bc-forge-rate-limit", "bc-forge-ttl", "proptest", - "soroban-sdk", + "soroban-sdk 22.0.11", + "soroban-sdk 27.0.0-rc.1", ] [[package]] name = "bc-forge-ttl" version = "0.1.0" dependencies = [ - "soroban-sdk", + "soroban-sdk 27.0.0-rc.1", ] [[package]] @@ -234,7 +386,8 @@ version = "0.1.0" dependencies = [ "bc-forge-admin", "bc-forge-token", - "soroban-sdk", + "soroban-sdk 22.0.11", + "soroban-sdk 27.0.0-rc.1", ] [[package]] @@ -244,7 +397,8 @@ dependencies = [ "bc-forge-admin", "bc-forge-lifecycle", "bc-forge-token", - "soroban-sdk", + "soroban-sdk 22.0.11", + "soroban-sdk 27.0.0-rc.1", ] [[package]] @@ -292,6 +446,12 @@ version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + [[package]] name = "bytes-lit" version = "0.0.5" @@ -304,6 +464,18 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "bytes-lit" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b04f2b1d34cb428043f14aa4c853d14294532e8bbde3b6a3bc2faaaae31a1dd" +dependencies = [ + "num-bigint", + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "cc" version = "1.2.63" @@ -320,6 +492,17 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +[[package]] +name = "cfg_eval" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45565fc9416b9896014f5732ac776f810ee53a66730c17e4020c3ec064a8f88f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "chrono" version = "0.4.44" @@ -364,6 +547,17 @@ dependencies = [ "serde_json", ] +[[package]] +name = "crate-git-revision" +version = "0.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54851b5b3f24621804b1cded2820975623c205e3055d2d44031cdb1237339ac8" +dependencies = [ + "serde", + "serde_derive", + "serde_json", +] + [[package]] name = "crypto-bigint" version = "0.5.5" @@ -396,6 +590,22 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "ctor" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67773048316103656a637612c4a62477603b777d91d9c62ff2290f9cde178fdb" +dependencies = [ + "ctor-proc-macro", + "dtor", +] + +[[package]] +name = "ctor-proc-macro" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2931af7e13dc045d8e9d26afccc6fa115d64e115c9c84b1166288b46f6782c2" + [[package]] name = "curve25519-dalek" version = "4.1.3" @@ -558,6 +768,21 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" +[[package]] +name = "dtor" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "404d02eeb088a82cfd873006cb713fe411306c7d182c344905e101fb1167d301" +dependencies = [ + "dtor-proc-macro", +] + +[[package]] +name = "dtor-proc-macro" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f678cf4a922c215c63e0de95eb1ff08a958a81d47e485cf9da1e27bf6305cfa5" + [[package]] name = "dyn-clone" version = "1.0.20" @@ -602,6 +827,18 @@ dependencies = [ "zeroize", ] +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "either" version = "1.16.0" @@ -626,6 +863,26 @@ dependencies = [ "zeroize", ] +[[package]] +name = "enum-ordinalize" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "equivalent" version = "1.0.2" @@ -778,6 +1035,15 @@ dependencies = [ "subtle", ] +[[package]] +name = "hash32" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" +dependencies = [ + "byteorder", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -799,6 +1065,7 @@ version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ + "allocator-api2", "foldhash", ] @@ -808,6 +1075,16 @@ version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" +[[package]] +name = "heapless" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" +dependencies = [ + "hash32", + "stable_deref_trait", +] + [[package]] name = "heck" version = "0.5.0" @@ -912,6 +1189,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.18" @@ -981,6 +1267,17 @@ version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "113b30b4cd05f7c06868fdb2854f66a7b9fece9a48425351cd532e810d74024f" +[[package]] +name = "macro-string" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "memchr" version = "2.8.1" @@ -1305,6 +1602,17 @@ dependencies = [ "wait-timeout", ] +[[package]] +name = "schemars" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +dependencies = [ + "dyn-clone", + "serde", + "serde_json", +] + [[package]] name = "schemars" version = "0.9.0" @@ -1403,6 +1711,7 @@ dependencies = [ "hex", "indexmap 1.9.3", "indexmap 2.14.0", + "schemars 0.8.22", "schemars 0.9.0", "schemars 1.2.1", "serde_core", @@ -1478,7 +1787,19 @@ version = "22.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf2e42bf80fcdefb3aae6ff3c7101a62cf942e95320ed5b518a1705bc11c6b2f" dependencies = [ - "itertools", + "itertools 0.10.5", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "soroban-builtin-sdk-macros" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d769030e3b2c27873e9be4931decbbe79787b943d5b30e31f8c395eae83144b8" +dependencies = [ + "itertools 0.13.0", "proc-macro2", "quote", "syn 2.0.117", @@ -1491,15 +1812,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "027cd856171bfd6ad2c0ffb3b7dfe55ad7080fb3050c36ad20970f80da634472" dependencies = [ "arbitrary", - "crate-git-revision", + "crate-git-revision 0.0.6", + "ethnum", + "num-derive", + "num-traits", + "serde", + "soroban-env-macros 22.1.3", + "soroban-wasmi", + "static_assertions", + "stellar-xdr 22.1.0", + "wasmparser 0.116.1", +] + +[[package]] +name = "soroban-env-common" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa50d998c0baafcc6078cb94f5228040c7719b1608c15debc3fc78365dc22f5" +dependencies = [ + "arbitrary", + "crate-git-revision 0.0.6", "ethnum", "num-derive", "num-traits", "serde", - "soroban-env-macros", + "soroban-env-macros 27.0.0", "soroban-wasmi", "static_assertions", - "stellar-xdr", + "stellar-xdr 27.0.0", "wasmparser 0.116.1", ] @@ -1509,7 +1849,17 @@ version = "22.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a07dda1ae5220d975979b19ad4fd56bc86ec7ec1b4b25bc1c5d403f934e592e" dependencies = [ - "soroban-env-common", + "soroban-env-common 22.1.3", + "static_assertions", +] + +[[package]] +name = "soroban-env-guest" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fde1064f5e92dbcc8018ecc8e92728bf5bbff0236abaf792c6858367a6853415" +dependencies = [ + "soroban-env-common 27.0.0", "static_assertions", ] @@ -1519,10 +1869,47 @@ version = "22.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66e8b03a4191d485eab03f066336112b2a50541a7553179553dc838b986b94dd" dependencies = [ - "ark-bls12-381", - "ark-ec", - "ark-ff", - "ark-serialize", + "ark-bls12-381 0.4.0", + "ark-ec 0.4.2", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "curve25519-dalek", + "ecdsa", + "ed25519-dalek", + "elliptic-curve", + "generic-array", + "getrandom 0.2.17", + "hex-literal", + "hmac", + "k256", + "num-derive", + "num-integer", + "num-traits", + "p256", + "rand 0.8.6", + "rand_chacha 0.3.1", + "sec1", + "sha2", + "sha3", + "soroban-builtin-sdk-macros 22.1.3", + "soroban-env-common 22.1.3", + "soroban-wasmi", + "static_assertions", + "stellar-strkey 0.0.9", + "wasmparser 0.116.1", +] + +[[package]] +name = "soroban-env-host" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f47762a1b75b9ccd07558f28e1a0289ca6adec56810c581cde5cf16e329e00b9" +dependencies = [ + "ark-bls12-381 0.5.0", + "ark-bn254", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", "curve25519-dalek", "ecdsa", "ed25519-dalek", @@ -1541,11 +1928,11 @@ dependencies = [ "sec1", "sha2", "sha3", - "soroban-builtin-sdk-macros", - "soroban-env-common", + "soroban-builtin-sdk-macros 27.0.0", + "soroban-env-common 27.0.0", "soroban-wasmi", "static_assertions", - "stellar-strkey", + "stellar-strkey 0.0.13", "wasmparser 0.116.1", ] @@ -1555,12 +1942,27 @@ version = "22.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00eff744764ade3bc480e4909e3a581a240091f3d262acdce80b41f7069b2bd9" dependencies = [ - "itertools", + "itertools 0.10.5", + "proc-macro2", + "quote", + "serde", + "serde_json", + "stellar-xdr 22.1.0", + "syn 2.0.117", +] + +[[package]] +name = "soroban-env-macros" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc04b813a9e32456b37875fc41cdb05912a9e947000b9414b7985bffe07a889a" +dependencies = [ + "itertools 0.13.0", "proc-macro2", "quote", "serde", "serde_json", - "stellar-xdr", + "stellar-xdr 27.0.0", "syn 2.0.117", ] @@ -1573,8 +1975,22 @@ dependencies = [ "serde", "serde_json", "serde_with", - "soroban-env-common", - "soroban-env-host", + "soroban-env-common 22.1.3", + "soroban-env-host 22.1.3", + "thiserror", +] + +[[package]] +name = "soroban-ledger-snapshot" +version = "27.0.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2272e9ee6f44cae1f3fe38b16f83e37ae6b55d002ecd7cbd45e02fde277c5a0" +dependencies = [ + "serde", + "serde_json", + "serde_with", + "soroban-env-common 27.0.0", + "soroban-env-host 27.0.0", "thiserror", ] @@ -1585,19 +2001,43 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff18e8d7ca6d5340a211605ca2c86383bd4dfacc4f8253d72a1573974ffffe69" dependencies = [ "arbitrary", - "bytes-lit", - "ctor", + "bytes-lit 0.0.5", + "ctor 0.2.9", + "derive_arbitrary", + "ed25519-dalek", + "rand 0.8.6", + "rustc_version", + "serde", + "serde_json", + "soroban-env-guest 22.1.3", + "soroban-env-host 22.1.3", + "soroban-ledger-snapshot 22.0.11", + "soroban-sdk-macros 22.0.11", + "stellar-strkey 0.0.9", +] + +[[package]] +name = "soroban-sdk" +version = "27.0.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de4cf66a6ec501ca3bb6018e36d3293ffbcd9b83651d8ae5afa03a4c8dd02fd1" +dependencies = [ + "arbitrary", + "bytes-lit 0.0.6", + "crate-git-revision 0.0.9", + "ctor 0.5.0", "derive_arbitrary", "ed25519-dalek", "rand 0.8.6", "rustc_version", "serde", "serde_json", - "soroban-env-guest", - "soroban-env-host", - "soroban-ledger-snapshot", - "soroban-sdk-macros", - "stellar-strkey", + "soroban-env-guest 27.0.0", + "soroban-env-host 27.0.0", + "soroban-ledger-snapshot 27.0.0-rc.1", + "soroban-sdk-macros 27.0.0-rc.1", + "stellar-strkey 0.0.16", + "visibility", ] [[package]] @@ -1606,17 +2046,37 @@ version = "22.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42b205cd86b34d530db87667bd287fbb194166d79b368227fd842110a914fde8" dependencies = [ - "crate-git-revision", + "crate-git-revision 0.0.6", "darling 0.20.11", - "itertools", + "itertools 0.10.5", "proc-macro2", "quote", "rustc_version", "sha2", - "soroban-env-common", - "soroban-spec", - "soroban-spec-rust", - "stellar-xdr", + "soroban-env-common 22.1.3", + "soroban-spec 22.0.11", + "soroban-spec-rust 22.0.11", + "stellar-xdr 22.1.0", + "syn 2.0.117", +] + +[[package]] +name = "soroban-sdk-macros" +version = "27.0.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "664ecdb16404a2a973c88193ccbfe519aa44b02cd2ff838dd61ce49117a2537c" +dependencies = [ + "darling 0.20.11", + "heck", + "itertools 0.13.0", + "macro-string", + "proc-macro2", + "quote", + "sha2", + "soroban-env-common 27.0.0", + "soroban-spec 27.0.0-rc.1", + "soroban-spec-rust 27.0.0-rc.1", + "stellar-xdr 27.0.0", "syn 2.0.117", ] @@ -1627,7 +2087,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb6a16f2de28852c759f4da5f28cda54ec0d8dfa4c0e6e8cb3495234a72b0cea" dependencies = [ "base64 0.13.1", - "stellar-xdr", + "stellar-xdr 22.1.0", + "thiserror", + "wasmparser 0.116.1", +] + +[[package]] +name = "soroban-spec" +version = "27.0.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f85665c21947b7e9fff81a8e81c866e2e774040039856f75af9cb06ec75191c8" +dependencies = [ + "base64 0.22.1", + "sha2", + "stellar-xdr 27.0.0", "thiserror", "wasmparser 0.116.1", ] @@ -1642,8 +2115,24 @@ dependencies = [ "proc-macro2", "quote", "sha2", - "soroban-spec", - "stellar-xdr", + "soroban-spec 22.0.11", + "stellar-xdr 22.1.0", + "syn 2.0.117", + "thiserror", +] + +[[package]] +name = "soroban-spec-rust" +version = "27.0.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cb924883f555ca020951e861025d153657481e0a88dddec9f853e2aad76ddc9" +dependencies = [ + "prettyplease", + "proc-macro2", + "quote", + "sha2", + "soroban-spec 27.0.0-rc.1", + "stellar-xdr 27.0.0", "syn 2.0.117", "thiserror", ] @@ -1677,6 +2166,12 @@ dependencies = [ "der", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + [[package]] name = "static_assertions" version = "1.1.0" @@ -1689,11 +2184,32 @@ version = "0.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e3aa3ed00e70082cb43febc1c2afa5056b9bb3e348bbb43d0cd0aa88a611144" dependencies = [ - "crate-git-revision", + "crate-git-revision 0.0.6", "data-encoding", "thiserror", ] +[[package]] +name = "stellar-strkey" +version = "0.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee1832fb50c651ad10f734aaf5d31ca5acdfb197a6ecda64d93fcdb8885af913" +dependencies = [ + "crate-git-revision 0.0.6", + "data-encoding", +] + +[[package]] +name = "stellar-strkey" +version = "0.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "084afcb0d458c3d5d5baa2d294b18f881e62cc258ef539d8fdf68be7dbe45520" +dependencies = [ + "crate-git-revision 0.0.6", + "data-encoding", + "heapless", +] + [[package]] name = "stellar-xdr" version = "22.1.0" @@ -1702,12 +2218,31 @@ checksum = "2ce69db907e64d1e70a3dce8d4824655d154749426a6132b25395c49136013e4" dependencies = [ "arbitrary", "base64 0.13.1", - "crate-git-revision", + "crate-git-revision 0.0.6", + "escape-bytes", + "hex", + "serde", + "serde_with", + "stellar-strkey 0.0.9", +] + +[[package]] +name = "stellar-xdr" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05ff843326969bdf1ef673dcdba94c08f4a3c8f1e58d6e6ef39b1bd4f749179a" +dependencies = [ + "arbitrary", + "base64 0.22.1", + "cfg_eval", + "crate-git-revision 0.0.6", "escape-bytes", + "ethnum", "hex", "serde", "serde_with", - "stellar-strkey", + "sha2", + "stellar-strkey 0.0.13", ] [[package]] @@ -1853,6 +2388,17 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "visibility" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d674d135b4a8c1d7e813e2f8d1c9a58308aee4a680323066025e53132218bd91" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "wait-timeout" version = "0.2.1" diff --git a/contracts/admin/Cargo.toml b/contracts/admin/Cargo.toml index fe4741b..b987f21 100644 --- a/contracts/admin/Cargo.toml +++ b/contracts/admin/Cargo.toml @@ -15,7 +15,7 @@ categories = ["cryptography::cryptocurrencies", "wasm"] crate-type = ["rlib"] [dependencies] -soroban-sdk = "22.0.11" +soroban-sdk = "27.0.0-rc.1" bc-forge-ttl = { path = "../ttl" } [dev-dependencies] diff --git a/contracts/lifecycle/Cargo.toml b/contracts/lifecycle/Cargo.toml index f27b021..22dabc0 100644 --- a/contracts/lifecycle/Cargo.toml +++ b/contracts/lifecycle/Cargo.toml @@ -15,7 +15,7 @@ categories = ["cryptography::cryptocurrencies", "wasm"] crate-type = ["rlib"] [dependencies] -soroban-sdk = "22.0.11" +soroban-sdk = "27.0.0-rc.1" bc-forge-ttl = { path = "../ttl" } [dev-dependencies] diff --git a/contracts/rate-limit/Cargo.toml b/contracts/rate-limit/Cargo.toml index 253e497..3a25820 100644 --- a/contracts/rate-limit/Cargo.toml +++ b/contracts/rate-limit/Cargo.toml @@ -13,7 +13,7 @@ categories = ["cryptography::cryptocurrencies"] crate-type = ["cdylib", "rlib"] [dependencies] -soroban-sdk = "22.0.11" +soroban-sdk = "27.0.0-rc.1" [dev-dependencies] soroban-sdk = { version = "22.0.11", features = ["testutils"] } diff --git a/contracts/token/Cargo.toml b/contracts/token/Cargo.toml index 9f105dc..7cfd4d8 100644 --- a/contracts/token/Cargo.toml +++ b/contracts/token/Cargo.toml @@ -15,7 +15,7 @@ categories = ["cryptography::cryptocurrencies", "wasm"] crate-type = ["cdylib", "rlib"] [dependencies] -soroban-sdk = "22.0.11" +soroban-sdk = "27.0.0-rc.1" bc-forge-admin = { path = "../admin" } bc-forge-lifecycle = { path = "../lifecycle" } bc-forge-rate-limit = { path = "../rate-limit" } diff --git a/contracts/token/src/lib.rs b/contracts/token/src/lib.rs index 10aedfa..bb623c5 100644 --- a/contracts/token/src/lib.rs +++ b/contracts/token/src/lib.rs @@ -14,7 +14,7 @@ mod test; use bc_forge_admin as admin; use bc_forge_ttl as ttl; use soroban_sdk::token::TokenInterface; -use soroban_sdk::{contract, contracterror, contractimpl, contracttype, Address, Env, String, Vec}; +use soroban_sdk::{contract, contracterror, contractimpl, contracttype, Address, Env, MuxedAddress, String, Vec}; #[contracttype] pub struct Recipient { @@ -309,7 +309,8 @@ impl TokenInterface for BcForgeToken { Self::read_balance(&env, &id) } - fn transfer(env: Env, from: Address, to: Address, amount: i128) { + fn transfer(env: Env, from: Address, to: MuxedAddress, amount: i128) { + let to = to.address(); Self::extend_instance_ttl_for_call(&env); reentrancy_guard!(&env, "transfer_guard", { Self::panic_on_err(&env, Self::ensure_initialized(&env)); diff --git a/contracts/ttl/Cargo.toml b/contracts/ttl/Cargo.toml index 2478e3c..d496b07 100644 --- a/contracts/ttl/Cargo.toml +++ b/contracts/ttl/Cargo.toml @@ -11,4 +11,4 @@ license = "MIT" crate-type = ["rlib"] [dependencies] -soroban-sdk = "22.0.11" +soroban-sdk = "27.0.0-rc.1" diff --git a/contracts/vesting/Cargo.toml b/contracts/vesting/Cargo.toml index df13a02..b75e5d6 100644 --- a/contracts/vesting/Cargo.toml +++ b/contracts/vesting/Cargo.toml @@ -11,7 +11,7 @@ license = "MIT" crate-type = ["cdylib", "rlib"] [dependencies] -soroban-sdk = "22.0.11" +soroban-sdk = "27.0.0-rc.1" bc-forge-admin = { path = "../admin" } bc-forge-token = { path = "../token" } diff --git a/contracts/wrapper/Cargo.toml b/contracts/wrapper/Cargo.toml index cb998ec..7839acb 100644 --- a/contracts/wrapper/Cargo.toml +++ b/contracts/wrapper/Cargo.toml @@ -13,7 +13,7 @@ categories = ["cryptography::cryptocurrencies"] crate-type = ["cdylib", "rlib"] [dependencies] -soroban-sdk = "22.0.11" +soroban-sdk = "27.0.0-rc.1" bc-forge-admin = { path = "../admin" } bc-forge-lifecycle = { path = "../lifecycle" } diff --git a/contracts/wrapper/src/lib.rs b/contracts/wrapper/src/lib.rs index b480f5b..5c69dd5 100644 --- a/contracts/wrapper/src/lib.rs +++ b/contracts/wrapper/src/lib.rs @@ -21,7 +21,8 @@ mod test; use bc_forge_admin as admin; use soroban_sdk::token::TokenInterface; use soroban_sdk::{ - contract, contracterror, contractimpl, contracttype, token::TokenClient, Address, Env, String, + contract, contracterror, contractimpl, contracttype, token::TokenClient, Address, Env, + MuxedAddress, String, }; // ─── Storage Keys ──────────────────────────────────────────────────────────── @@ -442,7 +443,8 @@ impl TokenInterface for WrapperContract { Self::read_balance(&env, &id) } - fn transfer(env: Env, from: Address, to: Address, amount: i128) { + fn transfer(env: Env, from: Address, to: MuxedAddress, amount: i128) { + let to = to.address(); Self::panic_on_err(&env, Self::ensure_initialized(&env)); Self::panic_on_err(&env, Self::ensure_not_paused(&env)); from.require_auth();