Skip to content

SPIKE: Protocol 28 (CAP-0084)#5337

Draft
sisuresh wants to merge 6 commits into
stellar:masterfrom
sisuresh:p28-cap-0084
Draft

SPIKE: Protocol 28 (CAP-0084)#5337
sisuresh wants to merge 6 commits into
stellar:masterfrom
sisuresh:p28-cap-0084

Conversation

@sisuresh

@sisuresh sisuresh commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Protocol 28 / CAP-0084 (Muxed Contract Addresses) — muxed contract address support in core (SAC transfer to muxed contract; de-mux to underlying contract).

Changes

  • Re-pinned host submodule src/rust/soroban/p27 to rs-soroban-env Instrument garbage collection process #1700 head b5fdf26e; xdr submodule at stellar-xdr#307 787382ef.
  • C++ tests: makeMuxedContractAddress helper; "transfer to muxed contract (CAP-0084)" section.

Deferred

  • Full C++ build + test-tx-meta-baseline-next re-record → CI/follow-up (not run this pass).
  • XDRFieldResolver renders muxed-contract as "UNKNOWN" in --query (like other non-account/contract arms).

Upstream

sisuresh added 5 commits June 26, 2026 21:58
Add protocol 28 / CAP-0084 (muxed contract addresses) to the vnext build.

Soroban host:
- Add the src/rust/soroban/p28 rs-soroban-env submodule (CAP-0084 host) with
  its .gitmodules entry, and wire it into the multi-soroban rlib build
  (src/Makefile.am, src/rust/Cargo.toml, Cargo.lock, soroban_proto_all.rs).
- soroban_module_cache.rs: add a separate p28 protocol-specific module cache
  (the next protocol is a real WIP host, not an alias of p27).

XDR / address handling (gated on CAP_0084_MUXED_CONTRACT):
- Bump the src/protocol-curr/xdr submodule to the CAP-0084 .x.
- Hash and JSON-serialize the new SC_ADDRESS_TYPE_MUXED_CONTRACT arm
  (LedgerHashUtils.h, XDRCereal.cpp).
- Wire the CAP_0084_MUXED_CONTRACT feature flag (configure.ac, common.mk,
  src/Makefile.am); enabled with
  --enable-next-protocol-version-unsafe-for-production.

Tests:
- SorobanTxTestUtils: makeMuxedContractAddress helper + de-muxing of
  MUXED_CONTRACT to the underlying contract in transfer invocations.
- InvokeHostFunctionTests: new muxed-contract transfer/mint sections in the
  "Stellar asset contract transfer with CAP-67 address types" test; update
  "Module cache across protocol versions" to account for p28's separate
  module cache (next protocol now adds to the module-cache entry count).
- Re-record test-tx-meta-baseline-next/InvokeHostFunctionTests.json and add
  the p28 cargo dep-tree expectation.

SPIKE: depends on unmerged upstream rs-soroban-env / rs-stellar-xdr / stellar-xdr.
@sisuresh

sisuresh commented Jul 3, 2026

Copy link
Copy Markdown
Contributor Author

…b035c0

389ee9e accidentally re-pinned src/rust/soroban/p27 to the CAP-0084 host
(b5fdf26e) instead of p28. Restore p27 to the released baseline b03d2563f
(matches master) — p27 must never carry protocol-28 work.

Advance the p28 WIP host submodule + Cargo.toml/Cargo.lock to 26b035c0, which
gates CAP-0084 on the per-cap leaf feature cap_0084_muxed_contract (aggregated
by the umbrella `next` feature). Regenerate p28-expect.txt (stellar-xdr
cf7fdedf) and update the Makefile.am comment to match the new gating.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant