Skip to content

SPIKE: Protocol 28 (CAP-0084) - #306

Closed
sisuresh wants to merge 2 commits into
stellar:mainfrom
sisuresh:p28-cap-0084
Closed

sisuresh wants to merge 2 commits into
stellar:mainfrom
sisuresh:p28-cap-0084

Conversation

@sisuresh

Copy link
Copy Markdown
Contributor

Changes

  • Add SC_ADDRESS_TYPE_MUXED_CONTRACT enum arm + MuxedContract { uint64 id; ContractID contractId; } struct + SCAddress union arm to Stellar-contract.x, all gated behind #ifdef CAP_0084_MUXED_CONTRACT, mirroring the existing MuxedEd25519Account muxed-account pattern.
  • Gated, so the new types appear only in the next branch (built --all-features) and stay out of curr until core bumps max protocol to 28. curr/next regenerate automatically on merge — not edited here.

Flag-token contract (downstream)

This repo is the root of the chain — no upstream. The ifdef token CAP_0084_MUXED_CONTRACT is the verbatim contract for every downstream:

  • cargo feature (rs-stellar-xdr / rs-soroban-env / js-xdr-json): cap_0084_muxed_contract
  • XDR_FEATURES / xfile preprocess --features (go-stellar-sdk / js-stellar-base): CAP_0084_MUXED_CONTRACT

A mismatched/truncated token silently strips the new types downstream.

Verification

Local stellar-xdr xfile preprocess: arm absent with no features (curr); all three arms present and file parses with --features CAP_0084_MUXED_CONTRACT.

Deferred

  • Downstream PRs (rs-stellar-xdr, rs-soroban-env/-sdk, stellar-core, go-stellar-sdk, horizon, rpc, js-stellar-base/-sdk, js-stellar-xdr-json, laboratory, docker) pin this PR's head SHA — opened by their own per-repo passes.

CAP-0084: stellar/stellar-protocol#1968

Add SC_ADDRESS_TYPE_MUXED_CONTRACT arm and MuxedContract struct to
SCAddress, gated behind #ifdef CAP_0084_MUXED_CONTRACT, mirroring the
existing MuxedEd25519Account muxed-account pattern. Appears only in the
`next` branch until core bumps the max supported protocol to 28.

CAP-0084 (Muxed Contract Addresses):
stellar/stellar-protocol#1968
@sisuresh

Copy link
Copy Markdown
Contributor Author

Downstream: stellar/rs-stellar-xdr#549 regenerates the Rust codec against this PR's head (7b56181), gated behind cap_0084_muxed_contract.

@sisuresh

Copy link
Copy Markdown
Contributor Author

Downstream (Protocol 28 / CAP-0084): go-stellar-sdk stellar/go-stellar-sdk#5960 pins this commit (7b56181).

@sisuresh

sisuresh commented Jul 2, 2026

Copy link
Copy Markdown
Contributor Author

Closing — this stack will be regenerated from scratch by the automated protocol-release flow.

@sisuresh sisuresh closed this Jul 2, 2026
@sisuresh
sisuresh deleted the p28-cap-0084 branch July 2, 2026 23:52
sisuresh added a commit to sisuresh/rs-soroban-env that referenced this pull request Jul 21, 2026
Pin stellar-xdr to rs-stellar-xdr#549 (CAP-0084, fork rev 7b46a60d, crate
v28.0.0). Gate all CAP-0084 host code and tests on a dedicated
cap_0084_muxed_contract cargo feature (forwarding to next for the proto-28
meta and to stellar-xdr/cap_0084_muxed_contract for the XDR variant), NOT the
umbrella next, so the CAP can be pulled pre-release independently. Route
ScAddress::MuxedContract through the existing MuxedAddressObject vehicle; SAC
transfer de-muxes; mint is cfg-split via a single method with a cfg'd
MintDestination alias. Muxed addresses stay prohibited as storage keys. No new
host functions; no env version bump (protocol 28 already reported under next).

TEMP: deny.toml allows the sisuresh git source for the SPIKE pin.

Upstream: stellar/rs-stellar-xdr#549 -> stellar/stellar-xdr#306
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