Protocol 28 Support - #915
Merged
Merged
Conversation
Protocol 28 (CAP-0083)
…w-list go-stellar-sdk#5965 (Protocol 28 / CAP-0085) merged to protocol-next as 82df7643786e0f8e4f82f4d36e522af8c45bf101. Drop the sisuresh/go fork replace, pin the merged commit (v0.6.1-0.20260722220414-82df7643786e), and remove the paired .golangci.yml gomoddirectives replace-allow-list (now-empty stanza deleted). Rust preflight pins (merged rs-soroban-env / rs-stellar-xdr) unchanged.
The merged CAP-0085 rs-soroban-env commit (88cadc3) advanced its baseline:
the default (non-next) build now declares protocol 28, while 'next' declares
protocol 29. The preflight dispatches by exact protocol number
(proto == curr::PROTOCOL), so with 'next' enabled curr::PROTOCOL was 29 and
ledgers at protocol 28 were rejected ('unsupported protocol version: 28',
TestGetPreflight/protocol_28). Drop the 'next' feature so curr::PROTOCOL == 28.
CAP-0085 XDR types are unaffected — the host pins stellar-xdr with
cap_0085_executable_ref in its own workspace, independent of 'next'.
Verified locally: make build-libs + go test ./.../preflight TestGetPreflight* pass.
…host
The P28 integration leg was failing with ScecExceededLimit ('operation
instructions exceeds amount specified') because the previous core image
(27.0.1-3367.3589a696b) predated rs-soroban-env#1702's cost-model update, so
apply-time metering diverged from the preflight's simulation. Repin to
27.1.1-3444.0e3d3d955.jammy-vnext: a vnext build of stellar-core master that
includes CAP-85 core support (stellar-core#5358) and whose src/rust/soroban/p28
submodule is 88cadc32 — the exact rs-soroban-env commit soroban-env-host-curr
pins. Host commit now matches on both sides, so the cost models agree.
Docker manifest + jammy~vnext deb both verified present in the registry/apt pool.
Protocol 28 (CAP-0085)
* Protocol 28 GA: crates.io host/xdr pins, GA core CI legs, SDK P28 One commit for the coupled pin set (check-dependencies.bash cross-validates Cargo.toml, go.mod, and the workflow core pins): - soroban-env-host/simulation-curr: git 88cadc32 → crates.io =28.0.0 (cut from rs-soroban-env v28.0.0/ba37ea5f, the exact commit core 28.0.0 bundles as src/rust/soroban/p28); -prev → =27.0.1 (final P27 patch) - stellar-xdr: git a90de0c → =28.0.0; cap_0083/cap_0085_executable_ref feature gates dropped (both CAPs ship ungated); serde+type_enum kept - CI legs: P27+P28 both on stellar/stellar-core:28.0.0-3486.2332980a1.jammy (vnext/unsafe pins retired) - go.mod: go-stellar-sdk → v0.6.1-0.20260803175255-2b16db0ecd45 (P28 GA merge commit) - MaxSupportedProtocolVersion 27 → 28; CHANGELOG v28.0.0 * flip: SDK v0.7.0 (released), CI images via unsafe-stellar-core v0.7.0 was cut on the GA merge commit, so the pseudo-version pin becomes the real tag. CI legs pin stellar/unsafe-stellar-core for the GA build — the stellar/stellar-core repo lags the release; the swap back happens in the release PR once the GA-repo image exists. * flip: soroban-env-host/simulation-curr → =28.0.1 Patch release over v28.0.0: same host commit core 28.0.0 bundles (ba37ea5f) plus an ed25519-dalek version-constraint fix (rs-soroban-env#1706). No metering change — simulation/apply coherence unaffected. * CHANGELOG: match repo entry style --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Conflict resolutions: - CHANGELOG.md: v28.0.0 section interleaved above main's v27.1.x entries - go.mod/go.sum: main's dependency bumps + go-stellar-sdk v0.7.0, re-tidied - preflight lib.rs: prev::make_recording_auth_mode now PASSES THROUGH use_upgraded_auth — prev rotated to soroban-env-host 27.x, which supports AddressV2 credentials (main's version targeted the 26-era single-arg API and would not compile; protocol-next's hardcoded false, which would have silently broken UseUpgradedAuth simulation on protocol-27 ledgers) - preflight_test.go: the 'silently ignored on prev' test encoded the 26-era-prev contract and hardcoded protocol 26 (no bundled host anymore); updated to assert the flag is honored on the prev (27) host Train: stellar/go-stellar-sdk#5967 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
31 tasks
There was a problem hiding this comment.
Pull request overview
Adds GA support for Protocol 28 across dependencies, preflight simulation, integration infrastructure, and release documentation.
Changes:
- Rotates Rust/Go dependencies to Protocol 28 releases.
- Updates preflight behavior and tests for Protocol 27/28 hosts.
- Adds Protocol 28 integration fixtures and CI coverage.
Reviewed changes
Copilot reviewed 8 out of 14 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
.github/workflows/stellar-rpc.yml |
Adds P28 and updates P27 integration legs. |
CHANGELOG.md |
Documents the v28.0.0 release. |
Cargo.lock |
Locks updated Protocol 27/28 Rust dependencies. |
Cargo.toml |
Pins P28 current and P27 previous hosts/XDR. |
cmd/stellar-rpc/internal/integrationtest/infrastructure/docker/upgrades/testnet.p28.json |
Renames the testnet configuration fixture for P28. |
cmd/stellar-rpc/internal/integrationtest/infrastructure/docker/upgrades/testnet.p28.xdr |
Renames the encoded testnet fixture for P28. |
cmd/stellar-rpc/internal/integrationtest/infrastructure/docker/upgrades/unlimited.p28.json |
Renames the unlimited configuration fixture for P28. |
cmd/stellar-rpc/internal/integrationtest/infrastructure/docker/upgrades/unlimited.p28.xdr |
Renames the encoded unlimited fixture for P28. |
cmd/stellar-rpc/internal/integrationtest/infrastructure/test.go |
Raises the maximum supported protocol to 28. |
cmd/stellar-rpc/internal/preflight/preflight_test.go |
Updates host coverage and upgraded-auth testing. |
cmd/stellar-rpc/lib/preflight/src/lib.rs |
Passes upgraded-auth mode through the P27 host. |
go.mod |
Upgrades go-stellar-sdk to v0.7.0. |
go.sum |
Updates Go dependency checksums. |
scripts/check-dependencies.bash |
Supports old and new XDR revision-file layouts. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
karthikiyer56
approved these changes
Aug 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Merges protocol-next into main for the Protocol 28 GA. Part of the release train (stellar/go-stellar-sdk#5967).
Contents
MaxSupportedProtocolVersion28, CHANGELOG v28.0.0prev::make_recording_auth_modenow passesuse_upgraded_auththrough — prev is env-host 27.x which supports AddressV2 credentials; neither parent's version was correct for the rotated prevUseUpgradedAuthprev-protocol test updated accordingly (old one hardcoded protocol 26, which no longer has a bundled host)Merge instructions
Merge commit please (train convention — keeps protocol-next an ancestor of main; the v28.0.0 tag later lands on a main-reachable commit).
Notes
stellar/unsafe-stellar-core(GA-repo images still unpublished); the swap tostellar/stellar-corehappens in the release PR, gated on the image existing.build-libs, preflight/methods/xdr2json suites, andcheck-dependencies.bashgreen locally on the merged tree.🤖 Generated with Claude Code