Skip to content

Protocol 30 (CAP-0084) - #5472

Merged
sisuresh merged 4 commits into
stellar:masterfrom
sisuresh:p30-cap-0084-validate
Sep 29, 2026
Merged

sisuresh merged 4 commits into
stellar:masterfrom
sisuresh:p30-cap-0084-validate

Conversation

@sisuresh

@sisuresh sisuresh commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

Changes

  • p30 host (rs-soroban-env#1700 169890d5 (merged), 30.0.0) as WIP_SOROBAN_PROTOCOL: vnext-only, no next; CAP_0084_MUXED_CONTRACT only under vnext; SAC transfer to muxed contract tests; LCM in test-lcm-next/InvokeHostFunctionTests.
  • p29 stand-in host (rs-soroban-env cb32250d, 29.0.0) in ALL_SOROBAN_PROTOCOLS; CURRENT_LEDGER_PROTOCOL_VERSION 29 (vnext 30); protocol-curr/xdr ee040cd6; current-tier goldens and protocol-30 ledger-close-meta refs recorded.
  • stellar-quorum-analyzer → Bump stellar-xdr to 28.0.0 stellar-quorum-analyzer#27 3a023060 (rs-stellar-xdr a9c9750e, same XDR hashes as the p29 host), so non-vnext startup passes the XDR identity check.

Deferred

  • The 28→29 bump and p29 host stand in for the internal protocol-29 release; swap for it when it lands.

Upstream: stellar/stellar-xdr#307, stellar/rs-stellar-xdr#592, stellar/rs-soroban-env#1700, stellar/stellar-quorum-analyzer#27. Supersedes #5337.

@sisuresh
sisuresh force-pushed the p30-cap-0084-validate branch from 99d1d47 to e8a5e6d Compare September 26, 2026 00:20
@sisuresh sisuresh changed the title SPIKE: Protocol 30 (CAP-0084) Protocol 30 (CAP-0084) Sep 28, 2026
Adds the protocol-30 host (rs-soroban-env#1700) as a vnext-only WIP host, with
CAP_0084_MUXED_CONTRACT defined only in vnext builds, and SAC transfer tests to
muxed contracts. Protocol 29 is an internal release, so a stand-in p29 host at
rs-soroban-env main becomes the current host and CURRENT_LEDGER_PROTOCOL_VERSION
moves to 29. stellar-quorum-analyzer moves to stellar#27 so non-vnext startup passes
the XDR identity check.
Muxed accounts (M...) and, under CAP_0084_MUXED_CONTRACT, muxed contracts
(W...) can be stored as contract data values but rendered as "UNKNOWN".
Re-recorded for protocols 29 (current) and 30 (next) with --capture-lcm
(stellar#5435), plus the protocol-30 ledger-close-meta reference files.
@sisuresh
sisuresh force-pushed the p30-cap-0084-validate branch from 890f729 to 387990e Compare September 28, 2026 21:49
@sisuresh
sisuresh marked this pull request as ready for review September 28, 2026 21:49
Copilot AI balanced review requested due to automatic review settings September 28, 2026 21:49

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Generated XDR headers can remain stale after switching CAP-0084 configuration because they do not depend on the regenerated Makefile.

Review effort: Balanced
Findings: 1 Medium severity

Open (1)
What changed in this PR

Introduces protocol 30 CAP-0084 support while promoting protocol 29 to current.

Changes:

  • Adds protocol 29/30 Soroban hosts and dispatch.
  • Implements muxed-contract encoding, hashing, serialization, and SAC tests.
  • Regenerates protocol 29/30 TxMeta and LCM goldens.
File Description
.gitmodules Registers p29/p30 hosts.
Cargo.lock Locks updated Rust dependencies.
common.mk, configure.ac, src/​Makefile.am Configures CAP-0084 and host builds.
src/​crypto/​StrKey.h, src/​ledger/​LedgerHashUtils.h Supports muxed-contract identifiers.
src/​main/​Config.cpp, src/​main/​main.cpp Advances protocols and validates XDR identity.
src/​protocol-curr/​xdr Updates current XDR definitions.
src/​rust/​Cargo.toml, src/​rust/​soroban/​p29, src/​rust/​soroban/​p30 Adds pinned hosts.
src/​rust/​src/​dep-trees/​* Records host dependency trees.
src/​rust/​src/​soroban_module_cache.rs, soroban_proto_all.rs Dispatches and caches p29/p30 hosts.
src/​transactions/​test/​* Tests muxed-contract SAC transfers.
src/​util/​ProtocolVersion.h, XDRCereal.cpp, xdrquery/​* Adds protocol and utility support.
src/​testdata/​*protocol-30.json Adds protocol-30 metadata references.
test-tx-meta-baseline-{current,next}/​* Regenerates transaction metadata goldens.
test-lcm-{current,next}/​* Regenerates LCM indexes and XDR goldens.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/Makefile.am Outdated

@graydon graydon left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

couple nits but basically ok. I'll be around for a while if you need a quick re-review rubber stamp.

Comment thread src/transactions/test/InvokeHostFunctionTests.cpp
Comment thread src/transactions/test/SorobanTxTestUtils.cpp Outdated
Comment thread src/transactions/test/SorobanTxTestUtils.cpp Outdated
Comment thread src/Makefile.am Outdated
Comment thread src/Makefile.am Outdated
Regenerate XDR headers when the Makefile changes, keep the commented-out
module-cache adjustment, move the CAP-0084 guard into demuxContractAddress,
and drop p27 from fastdev.
Copilot AI review requested due to automatic review settings September 29, 2026 01:35

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🔵 Needs a closer look

It changes protocol-critical C++/Rust/XDR integration and extensive binary golden data, requiring final human validation.

Review effort: Balanced
Findings: None

Resolved since last review (1)

@sisuresh
sisuresh added this pull request to the merge queue Sep 29, 2026
Merged via the queue into stellar:master with commit 73f2bdd Sep 29, 2026
57 of 58 checks passed
@sisuresh
sisuresh deleted the p30-cap-0084-validate branch September 29, 2026 04:15
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.

3 participants