From 48cd6329a79b30113a760fbd0c0b534beda567f7 Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Sat, 27 Jun 2026 00:00:26 -0700 Subject: [PATCH 1/5] =?UTF-8?q?SPIKE:=20Protocol=2028=20(CAP-0084)=20?= =?UTF-8?q?=E2=80=94=20pin=20rs-stellar-xdr#549,=20cap=5F0084=5Fmuxed=5Fco?= =?UTF-8?q?ntract?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pin stellar-xdr git dep to rs-stellar-xdr#549 head (7b46a60d914c1e5befd6a2d2c50d2fdf7e5eb1f0) with the per-cap feature cap_0084_muxed_contract (+ cap_0083). xdr submodule = stellar-xdr#306 (7b561814…). Branch rebuilt on current main (v27.0.0). Add the CAP-0084 MuxedContract and StellarValueProposedValue variants to the tests/tests.rs type list to match #549's generated TypeVariant list. --- Cargo.lock | 20 +++++++++++++++----- Cargo.toml | 18 +++++++++++++----- tests/tests.rs | 2 ++ 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b049ac4..98ccab9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -116,6 +116,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-common" version = "0.1.6" @@ -537,19 +548,18 @@ version = "0.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee1832fb50c651ad10f734aaf5d31ca5acdfb197a6ecda64d93fcdb8885af913" dependencies = [ - "crate-git-revision", + "crate-git-revision 0.0.6", "data-encoding", ] [[package]] name = "stellar-xdr" -version = "27.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ff843326969bdf1ef673dcdba94c08f4a3c8f1e58d6e6ef39b1bd4f749179a" +version = "28.0.0" +source = "git+https://github.com/stellar/rs-stellar-xdr?rev=7b46a60d914c1e5befd6a2d2c50d2fdf7e5eb1f0#7b46a60d914c1e5befd6a2d2c50d2fdf7e5eb1f0" dependencies = [ "base64", "cfg_eval", - "crate-git-revision", + "crate-git-revision 0.0.9", "escape-bytes", "ethnum", "hex", diff --git a/Cargo.toml b/Cargo.toml index 1c174aa..301a2f6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,11 +21,16 @@ console_error_panic_hook = { version = "0.1.7", optional = true } # TODO: For use with generating native values. # serde-wasm-bindgen = "0.6.5" +# Protocol 28 (CAP-0084) pre-release: per-cap-feature layout, no 'curr' module. +# Pinned to rs-stellar-xdr#549 (7b46a60d914c1e5befd6a2d2c50d2fdf7e5eb1f0), whose +# xdr submodule is stellar-xdr#306 head (7b5618146590e15d2e250538dccbc7c89ac55c58). +# cap_0083 + cap_0084_muxed_contract enable the muxed-contract-address +# (SC_ADDRESS_TYPE_MUXED_CONTRACT) arm on the SCAddress union, mirroring CAP-0083 gating. [dependencies.stellar-xdr] -version = "27.0.0" -features = ["std", "base64", "serde", "serde_json", "schemars", "type_enum"] -# git = "https://github.com/stellar/rs-stellar-xdr" -# rev = "89a8bcde36aeda551cb0e3f9aa3e9fcf315fe1cc" +version = "28.0.0" +git = "https://github.com/stellar/rs-stellar-xdr" +rev = "7b46a60d914c1e5befd6a2d2c50d2fdf7e5eb1f0" +features = ["std", "type_enum", "cap_0083", "cap_0084_muxed_contract", "base64", "serde", "serde_json", "schemars"] [dev-dependencies] wasm-bindgen-test = "0.3.34" @@ -42,4 +47,7 @@ strip = "symbols" debug-assertions = false [package.metadata.wasm-pack.profile.release] -wasm-opt = ["-O", "--enable-bulk-memory"] +# wasm-opt disabled — local binaryen may reject the bulk-memory ops emitted by +# the rs-stellar-xdr @ 7b46a60 pre-release dep. Output is unoptimized but +# functionally correct. Re-enable once the pinned rev lands a release build. +wasm-opt = false diff --git a/tests/tests.rs b/tests/tests.rs index 0fc2094..0d5ecdf 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -113,6 +113,7 @@ fn list_of_types() { "ContractExecutable", "ScAddressType", "MuxedEd25519Account", + "MuxedContract", "ScAddress", "ScVec", "ScMap", @@ -219,6 +220,7 @@ fn list_of_types() { "LedgerCloseValueSignature", "StellarValue", "StellarValueExt", + "StellarValueProposedValue", "LedgerHeaderFlags", "LedgerHeaderExtensionV1", "LedgerHeaderExtensionV1Ext", From 8ddcd43ae9d8bae9c58286cb56211bef74950efb Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Wed, 1 Jul 2026 13:16:08 -0700 Subject: [PATCH 2/5] deny.toml: allow rs-stellar-xdr git source + skip crate-git-revision dup (SPIKE) The p28-cap-0084 SPIKE pins stellar-xdr to a git rev of rs-stellar-xdr#549, which cargo-deny's `sources` check rejects (unknown-git) and whose newer crate-git-revision (0.0.9) collides with stellar-strkey's 0.0.6 under the `bans` duplicate check. Add SPIKE-only allow-git + skip entries; revert both when rs-stellar-xdr releases and the pin flips from git= to version=. --- deny.toml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/deny.toml b/deny.toml index a120660..df20a20 100644 --- a/deny.toml +++ b/deny.toml @@ -35,8 +35,9 @@ allow = [ ] deny = [ ] -skip = [ -] +# SPIKE (p28-cap-0084): git-pinned stellar-xdr pulls crate-git-revision 0.0.9 while +# crates.io stellar-strkey pulls 0.0.6. Remove when the pin flips to version=. +skip = [{ name = "crate-git-revision", version = "0.0.6" }] skip-tree = [ ] @@ -44,7 +45,9 @@ skip-tree = [ unknown-registry = "deny" unknown-git = "deny" allow-registry = ["https://github.com/rust-lang/crates.io-index"] -allow-git = [] +# SPIKE (p28-cap-0084): stellar-xdr is git-pinned to rs-stellar-xdr#549 until it +# releases on crates.io. Revert to allow-git = [] when the pin flips to version=. +allow-git = ["https://github.com/stellar/rs-stellar-xdr"] [sources.allow-org] github = [] From c0ff6d9b1aef917c356e8a7e0a3cb8298c022726 Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Wed, 1 Jul 2026 15:23:04 -0700 Subject: [PATCH 3/5] Bump rs-stellar-xdr to 8f826caa (drop #304 comment) --- Cargo.lock | 2 +- Cargo.toml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 98ccab9..d8f629d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -555,7 +555,7 @@ dependencies = [ [[package]] name = "stellar-xdr" version = "28.0.0" -source = "git+https://github.com/stellar/rs-stellar-xdr?rev=7b46a60d914c1e5befd6a2d2c50d2fdf7e5eb1f0#7b46a60d914c1e5befd6a2d2c50d2fdf7e5eb1f0" +source = "git+https://github.com/stellar/rs-stellar-xdr?rev=8f826caa99f3b4c55e4d958eb5b6a9a1dbbf9873#8f826caa99f3b4c55e4d958eb5b6a9a1dbbf9873" dependencies = [ "base64", "cfg_eval", diff --git a/Cargo.toml b/Cargo.toml index 301a2f6..3966316 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,14 +22,14 @@ console_error_panic_hook = { version = "0.1.7", optional = true } # serde-wasm-bindgen = "0.6.5" # Protocol 28 (CAP-0084) pre-release: per-cap-feature layout, no 'curr' module. -# Pinned to rs-stellar-xdr#549 (7b46a60d914c1e5befd6a2d2c50d2fdf7e5eb1f0), whose -# xdr submodule is stellar-xdr#306 head (7b5618146590e15d2e250538dccbc7c89ac55c58). +# Pinned to rs-stellar-xdr#549 (8f826caa99f3b4c55e4d958eb5b6a9a1dbbf9873), whose +# xdr submodule is stellar-xdr#306 head (787382ef2099cca168ca1cb282730d6b7b9e2f16). # cap_0083 + cap_0084_muxed_contract enable the muxed-contract-address # (SC_ADDRESS_TYPE_MUXED_CONTRACT) arm on the SCAddress union, mirroring CAP-0083 gating. [dependencies.stellar-xdr] version = "28.0.0" git = "https://github.com/stellar/rs-stellar-xdr" -rev = "7b46a60d914c1e5befd6a2d2c50d2fdf7e5eb1f0" +rev = "8f826caa99f3b4c55e4d958eb5b6a9a1dbbf9873" features = ["std", "type_enum", "cap_0083", "cap_0084_muxed_contract", "base64", "serde", "serde_json", "schemars"] [dev-dependencies] From 3b8c8eb62c81757e72aa4c613bc12a5a576a346e Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Thu, 2 Jul 2026 17:40:46 -0700 Subject: [PATCH 4/5] Re-pin rs-stellar-xdr to #552 head cf7fdedf (CAP-0084 SPIKE) --- Cargo.lock | 2 +- Cargo.toml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d8f629d..946af03 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -555,7 +555,7 @@ dependencies = [ [[package]] name = "stellar-xdr" version = "28.0.0" -source = "git+https://github.com/stellar/rs-stellar-xdr?rev=8f826caa99f3b4c55e4d958eb5b6a9a1dbbf9873#8f826caa99f3b4c55e4d958eb5b6a9a1dbbf9873" +source = "git+https://github.com/sisuresh/rs-stellar-xdr?rev=cf7fdedf7ca95fccf45c82e6829d14637c9b5e4c#cf7fdedf7ca95fccf45c82e6829d14637c9b5e4c" dependencies = [ "base64", "cfg_eval", diff --git a/Cargo.toml b/Cargo.toml index 3966316..79550b6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,14 +22,14 @@ console_error_panic_hook = { version = "0.1.7", optional = true } # serde-wasm-bindgen = "0.6.5" # Protocol 28 (CAP-0084) pre-release: per-cap-feature layout, no 'curr' module. -# Pinned to rs-stellar-xdr#549 (8f826caa99f3b4c55e4d958eb5b6a9a1dbbf9873), whose +# Pinned to rs-stellar-xdr#552 (cf7fdedf7ca95fccf45c82e6829d14637c9b5e4c), whose # xdr submodule is stellar-xdr#306 head (787382ef2099cca168ca1cb282730d6b7b9e2f16). # cap_0083 + cap_0084_muxed_contract enable the muxed-contract-address # (SC_ADDRESS_TYPE_MUXED_CONTRACT) arm on the SCAddress union, mirroring CAP-0083 gating. [dependencies.stellar-xdr] version = "28.0.0" -git = "https://github.com/stellar/rs-stellar-xdr" -rev = "8f826caa99f3b4c55e4d958eb5b6a9a1dbbf9873" +git = "https://github.com/sisuresh/rs-stellar-xdr" +rev = "cf7fdedf7ca95fccf45c82e6829d14637c9b5e4c" features = ["std", "type_enum", "cap_0083", "cap_0084_muxed_contract", "base64", "serde", "serde_json", "schemars"] [dev-dependencies] From cc185b7201a968565244de53d700549250d5007b Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Thu, 2 Jul 2026 21:14:22 -0700 Subject: [PATCH 5/5] deny.toml: allow sisuresh/rs-stellar-xdr git source to match pin (SPIKE) --- deny.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deny.toml b/deny.toml index df20a20..b51070b 100644 --- a/deny.toml +++ b/deny.toml @@ -45,9 +45,9 @@ skip-tree = [ unknown-registry = "deny" unknown-git = "deny" allow-registry = ["https://github.com/rust-lang/crates.io-index"] -# SPIKE (p28-cap-0084): stellar-xdr is git-pinned to rs-stellar-xdr#549 until it +# SPIKE (p28-cap-0084): stellar-xdr is git-pinned to rs-stellar-xdr#552 (fork) until it # releases on crates.io. Revert to allow-git = [] when the pin flips to version=. -allow-git = ["https://github.com/stellar/rs-stellar-xdr"] +allow-git = ["https://github.com/sisuresh/rs-stellar-xdr"] [sources.allow-org] github = []