From 64ecb7ea7b0cf6c58efc51e4f5c831f0828f9ba2 Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Mon, 15 Jun 2026 15:53:11 -0700 Subject: [PATCH 01/17] Protocol 28 (CAP-0083) support Re-pin go-stellar-sdk to the CAP-0083 XDR regeneration (SPIKE) and enable the cap_0083 feature on stellar-xdr (=27.0.0, already carries the generated types) so the EmptyTxSet StellarValueType variant is compiled in. rs-soroban-env unchanged; no version bump. --- Cargo.toml | 3 ++- go.mod | 2 ++ go.sum | 4 ++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index af9f5cf5e..1dfd8662f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,7 +33,8 @@ version = "=27.0.0" version = "=27.0.0" # `type_enum` provides the `Type`/`TypeVariant` reflection enums used by # xdr2json. It was enabled by default in stellar-xdr v26 but is opt-in in v27. -features = ["serde", "type_enum"] +# `cap_0083` gates the Protocol 28 EmptyTxSet StellarValueType variant. +features = ["serde", "type_enum", "cap_0083"] [workspace.dependencies.rand] version = "0.8.5" diff --git a/go.mod b/go.mod index b2f97db58..65e7ad123 100644 --- a/go.mod +++ b/go.mod @@ -148,3 +148,5 @@ require ( gopkg.in/tylerb/graceful.v1 v1.2.15 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) + +replace github.com/stellar/go-stellar-sdk => github.com/sisuresh/go v0.0.0-20260615224455-9856e203eef4 diff --git a/go.sum b/go.sum index 0315adfb4..4bcbda47a 100644 --- a/go.sum +++ b/go.sum @@ -415,6 +415,8 @@ github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sisuresh/go v0.0.0-20260615224455-9856e203eef4 h1:ujXf2fqqwemcEwSG/i/Z2v5TxG8eaQLNm3HydlJM7HY= +github.com/sisuresh/go v0.0.0-20260615224455-9856e203eef4/go.mod h1:IkcqcrE9UQi7n/1y+MxKB+7qzdjG1T2kGOD7Ss8dqjw= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spf13/afero v1.10.0 h1:EaGW2JJh15aKOejeuJ+wpFSHnbd7GE6Wvp3TsNhb6LY= @@ -429,8 +431,6 @@ github.com/spf13/viper v1.17.0 h1:I5txKw7MJasPL/BrfkbA0Jyo/oELqVmux4pR/UxOMfI= github.com/spf13/viper v1.17.0/go.mod h1:BmMMMLQXSbcHK6KAOiFLz0l5JHrU89OdIRHvsk0+yVI= github.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo= github.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs= -github.com/stellar/go-stellar-sdk v0.6.0 h1:NM2oqZJQup0QxnJMq6C8s4iIIhU6rHFX0rlsF3wh/Ho= -github.com/stellar/go-stellar-sdk v0.6.0/go.mod h1:IkcqcrE9UQi7n/1y+MxKB+7qzdjG1T2kGOD7Ss8dqjw= github.com/stellar/go-xdr v0.0.0-20260529210834-0bf8f4956364 h1:gOKrfuWdZ92LFlv0TAwgZ7OsWKeBsOMDlGLyFgduI1w= github.com/stellar/go-xdr v0.0.0-20260529210834-0bf8f4956364/go.mod h1:If+U9Z1W5xU97VrOgJandQT+2dN7/iOpkCrxBJEyF80= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= From 72ac24782eb98a92ec02536da38abf1d359f6ac2 Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Mon, 15 Jun 2026 16:15:58 -0700 Subject: [PATCH 02/17] golangci-lint: allow go-stellar-sdk SPIKE replace directive The gomoddirectives linter (enabled via `default: all`) rejects the `replace github.com/stellar/go-stellar-sdk => github.com/sisuresh/go` directive added for the CAP-0083 SPIKE, failing the Go workflow and the `complete` gate. Add it to gomoddirectives' replace-allow-list. Revert once go-stellar-sdk#5952 merges and the replace is dropped for a tagged release. --- .golangci.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.golangci.yml b/.golangci.yml index d5155295d..dd2cc9455 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -19,6 +19,13 @@ linters: - wrapcheck - wsl settings: + gomoddirectives: + # SPIKE: permit the go-stellar-sdk fork replace while + # github.com/stellar/go-stellar-sdk#5952 (CAP-0083 XDR regen) is unmerged. + # Remove this entry once the SDK lands a tagged release and the replace + # directive is dropped from go.mod. + replace-allow-list: + - github.com/stellar/go-stellar-sdk cyclop: max-complexity: 15 dogsled: From dbd841c89b0f7966659cbace2f7d1af699ebb98b Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Mon, 15 Jun 2026 20:28:17 -0700 Subject: [PATCH 03/17] Re-pin go-stellar-sdk to CAP-0083 review head (4615d5e8) Matches the reviewed head of stellar/go-stellar-sdk#5952. --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 65e7ad123..95cb91d74 100644 --- a/go.mod +++ b/go.mod @@ -149,4 +149,4 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect ) -replace github.com/stellar/go-stellar-sdk => github.com/sisuresh/go v0.0.0-20260615224455-9856e203eef4 +replace github.com/stellar/go-stellar-sdk => github.com/sisuresh/go v0.0.0-20260616005412-4615d5e81367 diff --git a/go.sum b/go.sum index 4bcbda47a..8810ec623 100644 --- a/go.sum +++ b/go.sum @@ -415,8 +415,8 @@ github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/sisuresh/go v0.0.0-20260615224455-9856e203eef4 h1:ujXf2fqqwemcEwSG/i/Z2v5TxG8eaQLNm3HydlJM7HY= -github.com/sisuresh/go v0.0.0-20260615224455-9856e203eef4/go.mod h1:IkcqcrE9UQi7n/1y+MxKB+7qzdjG1T2kGOD7Ss8dqjw= +github.com/sisuresh/go v0.0.0-20260616005412-4615d5e81367 h1:lVkd/2KUw7VXeXFEmTP1KVBopepicJ1t/bdo8hH+mgQ= +github.com/sisuresh/go v0.0.0-20260616005412-4615d5e81367/go.mod h1:IkcqcrE9UQi7n/1y+MxKB+7qzdjG1T2kGOD7Ss8dqjw= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spf13/afero v1.10.0 h1:EaGW2JJh15aKOejeuJ+wpFSHnbd7GE6Wvp3TsNhb6LY= From d9611324e286b9a81d8bf3d23c779958aebd0020 Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Tue, 16 Jun 2026 15:30:16 -0700 Subject: [PATCH 04/17] Re-pin go-stellar-sdk to merged upstream CAP-0083; drop SPIKE lint exception MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit go-stellar-sdk#5952 (Protocol 28 / CAP-0083) merged into protocol-next at 26fec7c0e891cd88227494e212ecf712e873f039. Drop the sisuresh fork replace directive and pin the require to the upstream merged commit, superseding the review-head pin (4615d5e81367a2e7d42a87c856226d3bc36a3554). The two commits share the same git tree, so no XDR/content change is expected; build and `go mod tidy` verified. Also remove the SPIKE-only gomoddirectives.replace-allow-list entry for github.com/stellar/go-stellar-sdk from .golangci.yml — it existed solely to permit the now-removed fork replace and its own comment said to delete it once #5952 merged. --- .golangci.yml | 7 ------- go.mod | 4 +--- go.sum | 4 ++-- 3 files changed, 3 insertions(+), 12 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index dd2cc9455..d5155295d 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -19,13 +19,6 @@ linters: - wrapcheck - wsl settings: - gomoddirectives: - # SPIKE: permit the go-stellar-sdk fork replace while - # github.com/stellar/go-stellar-sdk#5952 (CAP-0083 XDR regen) is unmerged. - # Remove this entry once the SDK lands a tagged release and the replace - # directive is dropped from go.mod. - replace-allow-list: - - github.com/stellar/go-stellar-sdk cyclop: max-complexity: 15 dogsled: diff --git a/go.mod b/go.mod index 95cb91d74..d7022535d 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( github.com/sirupsen/logrus v1.9.3 github.com/spf13/cobra v1.7.0 github.com/spf13/pflag v1.0.5 - github.com/stellar/go-stellar-sdk v0.6.0 + github.com/stellar/go-stellar-sdk v0.6.1-0.20260616165505-26fec7c0e891 github.com/stretchr/testify v1.11.1 ) @@ -148,5 +148,3 @@ require ( gopkg.in/tylerb/graceful.v1 v1.2.15 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) - -replace github.com/stellar/go-stellar-sdk => github.com/sisuresh/go v0.0.0-20260616005412-4615d5e81367 diff --git a/go.sum b/go.sum index 8810ec623..eef6c4427 100644 --- a/go.sum +++ b/go.sum @@ -415,8 +415,6 @@ github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/sisuresh/go v0.0.0-20260616005412-4615d5e81367 h1:lVkd/2KUw7VXeXFEmTP1KVBopepicJ1t/bdo8hH+mgQ= -github.com/sisuresh/go v0.0.0-20260616005412-4615d5e81367/go.mod h1:IkcqcrE9UQi7n/1y+MxKB+7qzdjG1T2kGOD7Ss8dqjw= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spf13/afero v1.10.0 h1:EaGW2JJh15aKOejeuJ+wpFSHnbd7GE6Wvp3TsNhb6LY= @@ -431,6 +429,8 @@ github.com/spf13/viper v1.17.0 h1:I5txKw7MJasPL/BrfkbA0Jyo/oELqVmux4pR/UxOMfI= github.com/spf13/viper v1.17.0/go.mod h1:BmMMMLQXSbcHK6KAOiFLz0l5JHrU89OdIRHvsk0+yVI= github.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo= github.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs= +github.com/stellar/go-stellar-sdk v0.6.1-0.20260616165505-26fec7c0e891 h1:Y/PtLm4L4ZHLDI1dXIflRjI5pY+m+KD7FUVFM07tV+E= +github.com/stellar/go-stellar-sdk v0.6.1-0.20260616165505-26fec7c0e891/go.mod h1:IkcqcrE9UQi7n/1y+MxKB+7qzdjG1T2kGOD7Ss8dqjw= github.com/stellar/go-xdr v0.0.0-20260529210834-0bf8f4956364 h1:gOKrfuWdZ92LFlv0TAwgZ7OsWKeBsOMDlGLyFgduI1w= github.com/stellar/go-xdr v0.0.0-20260529210834-0bf8f4956364/go.mod h1:If+U9Z1W5xU97VrOgJandQT+2dN7/iOpkCrxBJEyF80= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= From 28aeea2e6ce95fd61cf9d0cccc214ff0a81f520b Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Tue, 16 Jun 2026 16:33:46 -0700 Subject: [PATCH 05/17] check-dependencies: read top-level xdr-version on the git-rev path rs-stellar-xdr moved xdr/curr-version to top-level xdr-version in v27, but the git-revision branch of check-dependencies.bash still curls the old path and 404s for any current git pin. Read xdr-version first and fall back to xdr/curr-version for older layouts, with the || moved outside the command substitution so a --fail-with-body 404 body can't be concatenated into the captured revision. --- scripts/check-dependencies.bash | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/scripts/check-dependencies.bash b/scripts/check-dependencies.bash index 83c93180e..1e57b82d2 100755 --- a/scripts/check-dependencies.bash +++ b/scripts/check-dependencies.bash @@ -53,8 +53,14 @@ do if CARGO_OUTPUT=$(cargo tree --depth 0 -p stellar-xdr@$PROTO 2>&1); then RS_STELLAR_XDR_REVISION=$(echo -n "$CARGO_OUTPUT" | stellar_xdr_version_from_rust_dep_tree) if [ ${#RS_STELLAR_XDR_REVISION} -eq 40 ]; then - # revision is a git hash - STELLAR_XDR_REVISION_FROM_RUST=$($CURL https://raw.githubusercontent.com/stellar/rs-stellar-xdr/${RS_STELLAR_XDR_REVISION}/xdr/curr-version) + # revision is a git hash. rs-stellar-xdr moved the pinned stellar-xdr + # commit from xdr/curr-version to the top-level xdr-version file in v27, + # so read xdr-version first and fall back to xdr/curr-version for older + # layouts. The || sits outside the command substitution so a + # --fail-with-body 404 body can't be concatenated into the captured + # revision; each assignment captures only its own command's stdout. + STELLAR_XDR_REVISION_FROM_RUST=$($CURL "https://raw.githubusercontent.com/stellar/rs-stellar-xdr/${RS_STELLAR_XDR_REVISION}/xdr-version" 2>/dev/null) \ + || STELLAR_XDR_REVISION_FROM_RUST=$($CURL "https://raw.githubusercontent.com/stellar/rs-stellar-xdr/${RS_STELLAR_XDR_REVISION}/xdr/curr-version" 2>/dev/null) else # revision is a crate version CARGO_SRC_BASE_DIR=$(realpath ${CARGO_HOME:-$HOME/.cargo}/registry/src/index*) From 4b1f050b8739ffc9d37183a27e03ddecfb8e083f Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Wed, 17 Jun 2026 09:58:22 -0700 Subject: [PATCH 06/17] CI: shift integration matrix to {P27, P28-vnext}; drop P26 Rolling-window the supported-protocol matrix for the protocol-next release branch: keep the previous (P27) leg as a regression guard and add a P28 leg that exercises CAP-0083 against the vnext core build. Drop the P26 leg per the {curr-1, curr, curr+1} window convention. P28 uses the vnext core build pinned to 3312 (02fa3131b), which predates a stellar-core init-order change that breaks captive-core bootstrap on a fresh storage dir. Bump once that's fixed upstream. --- .github/workflows/stellar-rpc.yml | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/.github/workflows/stellar-rpc.yml b/.github/workflows/stellar-rpc.yml index 964cea053..8f533ec82 100644 --- a/.github/workflows/stellar-rpc.yml +++ b/.github/workflows/stellar-rpc.yml @@ -84,14 +84,6 @@ jobs: CGO_ENABLED: 1 GOARCH: ${{ matrix.go_arch }} - integration-p26-pkg: - name: Integration tests (P26) - uses: ./.github/workflows/integration-tests.yml - with: - protocol_version: '26' - core_deb_version: '26.0.0-3089.8e43a2d3b.jammy' - core_docker_img: 'stellar/stellar-core:26.0.0-3089.8e43a2d3b.jammy' - integration-p27-pkg: name: Integration tests (P27) uses: ./.github/workflows/integration-tests.yml @@ -100,6 +92,18 @@ jobs: core_deb_version: '27.0.0-3288.7696c069d.jammy' core_docker_img: 'stellar/stellar-core:27.0.0-3288.7696c069d.jammy' + integration-p28-pkg: + name: Integration tests (P28) + uses: ./.github/workflows/integration-tests.yml + with: + protocol_version: '28' + # Protocol 28 (CAP-0083) runs against the vnext (next-protocol-enabled) + # core build. Pinned to 3312 (02fa3131b), which predates the + # stellar-core init-order change that breaks captive-core bootstrap on + # a fresh storage dir. Bump once that's fixed upstream. + core_deb_version: '27.0.1-3312.02fa3131b.jammy~vnext~buildtests' + core_docker_img: 'stellar/unsafe-stellar-core:27.0.1-3312.02fa3131b.jammy-vnext' + # integration-p25-src: # name: Integration tests (p25, core from source) # uses: ./.github/workflows/integration-tests.yml From f5dca26a9a063fcaa1d39fe711b406150b52c45f Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Wed, 17 Jun 2026 10:01:34 -0700 Subject: [PATCH 07/17] CI: bump P28 leg to vnext 3348 to match horizon's pin --- .github/workflows/stellar-rpc.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/stellar-rpc.yml b/.github/workflows/stellar-rpc.yml index 8f533ec82..272d4bf6d 100644 --- a/.github/workflows/stellar-rpc.yml +++ b/.github/workflows/stellar-rpc.yml @@ -98,11 +98,9 @@ jobs: with: protocol_version: '28' # Protocol 28 (CAP-0083) runs against the vnext (next-protocol-enabled) - # core build. Pinned to 3312 (02fa3131b), which predates the - # stellar-core init-order change that breaks captive-core bootstrap on - # a fresh storage dir. Bump once that's fixed upstream. - core_deb_version: '27.0.1-3312.02fa3131b.jammy~vnext~buildtests' - core_docker_img: 'stellar/unsafe-stellar-core:27.0.1-3312.02fa3131b.jammy-vnext' + # core build. Matches the pin used by stellar-horizon's P28 leg. + core_deb_version: '27.0.1-3348.ff61f2e6d.jammy~vnext~buildtests' + core_docker_img: 'stellar/unsafe-stellar-core:27.0.1-3348.ff61f2e6d.jammy-vnext' # integration-p25-src: # name: Integration tests (p25, core from source) From fd44198b504629c8ac92442c60345578e16f4450 Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Wed, 17 Jun 2026 10:37:24 -0700 Subject: [PATCH 08/17] integrationtest: add P28 upgrade fixtures (copy of P27) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CAP-0083 is consensus-layer (skip-ledgers via STELLAR_VALUE_EMPTY_TX_SET) and doesn't change the soroban ConfigSettings. The P28 `unlimited` and `testnet` upgrade payloads are byte-identical to P27 — just provide them under the protocol-suffixed filenames `upgradeLimitsWithFile()` expects. --- .../docker/upgrades/testnet.p28.json | 965 ++++++++++++++++++ .../docker/upgrades/testnet.p28.xdr | 1 + .../docker/upgrades/unlimited.p28.json | 965 ++++++++++++++++++ .../docker/upgrades/unlimited.p28.xdr | 1 + 4 files changed, 1932 insertions(+) create mode 100644 cmd/stellar-rpc/internal/integrationtest/infrastructure/docker/upgrades/testnet.p28.json create mode 100644 cmd/stellar-rpc/internal/integrationtest/infrastructure/docker/upgrades/testnet.p28.xdr create mode 100644 cmd/stellar-rpc/internal/integrationtest/infrastructure/docker/upgrades/unlimited.p28.json create mode 100644 cmd/stellar-rpc/internal/integrationtest/infrastructure/docker/upgrades/unlimited.p28.xdr diff --git a/cmd/stellar-rpc/internal/integrationtest/infrastructure/docker/upgrades/testnet.p28.json b/cmd/stellar-rpc/internal/integrationtest/infrastructure/docker/upgrades/testnet.p28.json new file mode 100644 index 000000000..dd6f288f2 --- /dev/null +++ b/cmd/stellar-rpc/internal/integrationtest/infrastructure/docker/upgrades/testnet.p28.json @@ -0,0 +1,965 @@ +{ + "updated_entry": [ + { + "contract_max_size_bytes": 131072 + }, + { + "contract_compute_v0": { + "ledger_max_instructions": "500000000", + "tx_max_instructions": "100000000", + "fee_rate_per_instructions_increment": "25", + "tx_memory_limit": 41943040 + } + }, + { + "contract_ledger_cost_v0": { + "ledger_max_disk_read_entries": 500, + "ledger_max_disk_read_bytes": 3500000, + "ledger_max_write_ledger_entries": 250, + "ledger_max_write_bytes": 143360, + "tx_max_disk_read_entries": 100, + "tx_max_disk_read_bytes": 200000, + "tx_max_write_ledger_entries": 50, + "tx_max_write_bytes": 132096, + "fee_disk_read_ledger_entry": "6250", + "fee_write_ledger_entry": "10000", + "fee_disk_read1_kb": "1786", + "soroban_state_target_size_bytes": "3000000000", + "rent_fee1_kb_soroban_state_size_low": "-17000", + "rent_fee1_kb_soroban_state_size_high": "10000", + "soroban_state_rent_fee_growth_factor": 5000 + } + }, + { + "contract_historical_data_v0": { + "fee_historical1_kb": "16235" + } + }, + { + "contract_events_v0": { + "tx_max_contract_events_size_bytes": 16384, + "fee_contract_events1_kb": "10000" + } + }, + { + "contract_bandwidth_v0": { + "ledger_max_txs_size_bytes": 133120, + "tx_max_size_bytes": 132096, + "fee_tx_size1_kb": "1624" + } + }, + { + "contract_cost_params_cpu_instructions": [ + { + "ext": "v0", + "const_term": "4", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "434", + "linear_term": "16" + }, + { + "ext": "v0", + "const_term": "42", + "linear_term": "16" + }, + { + "ext": "v0", + "const_term": "44", + "linear_term": "16" + }, + { + "ext": "v0", + "const_term": "295", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "60", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "221", + "linear_term": "26" + }, + { + "ext": "v0", + "const_term": "331", + "linear_term": "4369" + }, + { + "ext": "v0", + "const_term": "3636", + "linear_term": "7013" + }, + { + "ext": "v0", + "const_term": "40256", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "377551", + "linear_term": "4059" + }, + { + "ext": "v0", + "const_term": "417482", + "linear_term": "45712" + }, + { + "ext": "v0", + "const_term": "41142", + "linear_term": "634" + }, + { + "ext": "v0", + "const_term": "1945", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "6481", + "linear_term": "5943" + }, + { + "ext": "v0", + "const_term": "711", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "2314804", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "4176", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "4716", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "4680", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "4256", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "884", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "1059", + "linear_term": "502" + }, + { + "ext": "v0", + "const_term": "73077", + "linear_term": "25410" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "540752" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "176363" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "29989" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "1061449" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "237336" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "328476" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "701845" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "429383" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "28" + }, + { + "ext": "v0", + "const_term": "43030", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "7556" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "10711" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "3300" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "23038" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "42488" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "828974" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "297100" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "14" + }, + { + "ext": "v0", + "const_term": "1882", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "3000906", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "661", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "985", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "1934", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "730510", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "5921", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "1057822", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "92642", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "100742", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "7689", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "2458985", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "2347584", + "linear_term": "94135478" + }, + { + "ext": "v0", + "const_term": "1020885", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "2638451", + "linear_term": "6803" + }, + { + "ext": "v0", + "const_term": "25207", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "7873219", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "7663880", + "linear_term": "298580871" + }, + { + "ext": "v0", + "const_term": "1856539", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "6315452", + "linear_term": "7232" + }, + { + "ext": "v0", + "const_term": "10558948", + "linear_term": "632860943" + }, + { + "ext": "v0", + "const_term": "1994", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "1155", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "74", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "332", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "691", + "linear_term": "74558" + }, + { + "ext": "v0", + "const_term": "35421", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "344", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "476", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "904", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "2811", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "1706052", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "61", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "3623", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "1150435", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "5263916", + "linear_term": "392472814" + }, + { + "ext": "v0", + "const_term": "2052", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "1133", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "74", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "332", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "755", + "linear_term": "68930" + }, + { + "ext": "v0", + "const_term": "33151", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "1185193", + "linear_term": "41568084" + } + ] + }, + { + "contract_cost_params_memory_bytes": [ + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "16", + "linear_term": "128" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "242", + "linear_term": "384" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "384" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "132773", + "linear_term": "4903" + }, + { + "ext": "v0", + "const_term": "69472", + "linear_term": "1217" + }, + { + "ext": "v0", + "const_term": "14", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "181", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "99", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "99", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "99", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "99", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "99", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "17564", + "linear_term": "6457" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "47464" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "13420" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "6285" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "64670" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "29074" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "48095" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "103229" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "36394" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "257" + }, + { + "ext": "v0", + "const_term": "70704", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "14613" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "6833" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "1025" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "129632" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "13665" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "97637" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "9176" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "126" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "109494", + "linear_term": "266603" + }, + { + "ext": "v0", + "const_term": "2776", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "5896", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "219654", + "linear_term": "266603" + }, + { + "ext": "v0", + "const_term": "1672", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "3960", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "2204", + "linear_term": "9340474" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "248", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "128" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "1821", + "linear_term": "6232546" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "312", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "73061", + "linear_term": "229779" + } + ] + }, + { + "contract_data_key_size_bytes": 250 + }, + { + "contract_data_entry_size_bytes": 65536 + }, + { + "state_archival": { + "max_entry_ttl": 3110400, + "min_temporary_ttl": 720, + "min_persistent_ttl": 10, + "persistent_rent_rate_denominator": "1215", + "temp_rent_rate_denominator": "2430", + "max_entries_to_archive": 1000, + "live_soroban_state_size_window_sample_size": 30, + "live_soroban_state_size_window_sample_period": 64, + "eviction_scan_size": 500000, + "starting_eviction_scan_level": 7 + } + }, + { + "contract_execution_lanes": { + "ledger_max_tx_count": 100 + } + }, + { + "contract_parallel_compute_v0": { + "ledger_max_dependent_tx_clusters": 1 + } + }, + { + "contract_ledger_cost_ext_v0": { + "tx_max_footprint_entries": 100, + "fee_write1_kb": "3500" + } + }, + { + "scp_timing": { + "ledger_target_close_time_milliseconds": 5000, + "nomination_timeout_initial_milliseconds": 1000, + "nomination_timeout_increment_milliseconds": 1000, + "ballot_timeout_initial_milliseconds": 1000, + "ballot_timeout_increment_milliseconds": 1000 + } + } + ] +} diff --git a/cmd/stellar-rpc/internal/integrationtest/infrastructure/docker/upgrades/testnet.p28.xdr b/cmd/stellar-rpc/internal/integrationtest/infrastructure/docker/upgrades/testnet.p28.xdr new file mode 100644 index 000000000..a43b91ee0 --- /dev/null +++ b/cmd/stellar-rpc/internal/integrationtest/infrastructure/docker/upgrades/testnet.p28.xdr @@ -0,0 +1 @@ +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 diff --git a/cmd/stellar-rpc/internal/integrationtest/infrastructure/docker/upgrades/unlimited.p28.json b/cmd/stellar-rpc/internal/integrationtest/infrastructure/docker/upgrades/unlimited.p28.json new file mode 100644 index 000000000..0237b62c3 --- /dev/null +++ b/cmd/stellar-rpc/internal/integrationtest/infrastructure/docker/upgrades/unlimited.p28.json @@ -0,0 +1,965 @@ +{ + "updated_entry": [ + { + "contract_max_size_bytes": 4294967295 + }, + { + "contract_compute_v0": { + "ledger_max_instructions": "2305843009213693951", + "tx_max_instructions": "2305843009213693951", + "fee_rate_per_instructions_increment": "100", + "tx_memory_limit": 4294967295 + } + }, + { + "contract_ledger_cost_v0": { + "ledger_max_disk_read_entries": 4294967295, + "ledger_max_disk_read_bytes": 4294967295, + "ledger_max_write_ledger_entries": 4294967295, + "ledger_max_write_bytes": 4294967295, + "tx_max_disk_read_entries": 4294967295, + "tx_max_disk_read_bytes": 4294967295, + "tx_max_write_ledger_entries": 4294967295, + "tx_max_write_bytes": 4294967295, + "fee_disk_read_ledger_entry": "1000", + "fee_write_ledger_entry": "3000", + "fee_disk_read1_kb": "1000", + "soroban_state_target_size_bytes": "4294967295", + "rent_fee1_kb_soroban_state_size_low": "-17000", + "rent_fee1_kb_soroban_state_size_high": "10000", + "soroban_state_rent_fee_growth_factor": 5000 + } + }, + { + "contract_historical_data_v0": { + "fee_historical1_kb": "5000" + } + }, + { + "contract_events_v0": { + "fee_contract_events1_kb": "300", + "tx_max_contract_events_size_bytes": 4294967295 + } + }, + { + "contract_bandwidth_v0": { + "fee_tx_size1_kb": "500", + "ledger_max_txs_size_bytes": 4294967295, + "tx_max_size_bytes": 4294965295 + } + }, + { + "contract_cost_params_cpu_instructions": [ + { + "ext": "v0", + "const_term": "4", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "434", + "linear_term": "16" + }, + { + "ext": "v0", + "const_term": "42", + "linear_term": "16" + }, + { + "ext": "v0", + "const_term": "44", + "linear_term": "16" + }, + { + "ext": "v0", + "const_term": "295", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "60", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "221", + "linear_term": "26" + }, + { + "ext": "v0", + "const_term": "331", + "linear_term": "4369" + }, + { + "ext": "v0", + "const_term": "3636", + "linear_term": "7013" + }, + { + "ext": "v0", + "const_term": "40256", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "377551", + "linear_term": "4059" + }, + { + "ext": "v0", + "const_term": "417482", + "linear_term": "45712" + }, + { + "ext": "v0", + "const_term": "41142", + "linear_term": "634" + }, + { + "ext": "v0", + "const_term": "1945", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "6481", + "linear_term": "5943" + }, + { + "ext": "v0", + "const_term": "711", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "2314804", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "4176", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "4716", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "4680", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "4256", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "884", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "1059", + "linear_term": "502" + }, + { + "ext": "v0", + "const_term": "73077", + "linear_term": "25410" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "540752" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "176363" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "29989" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "1061449" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "237336" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "328476" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "701845" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "429383" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "28" + }, + { + "ext": "v0", + "const_term": "43030", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "7556" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "10711" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "3300" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "23038" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "42488" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "828974" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "297100" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "14" + }, + { + "ext": "v0", + "const_term": "1882", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "3000906", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "661", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "985", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "1934", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "730510", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "5921", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "1057822", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "92642", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "100742", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "7689", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "2458985", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "2347584", + "linear_term": "94135478" + }, + { + "ext": "v0", + "const_term": "1020885", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "2638451", + "linear_term": "6803" + }, + { + "ext": "v0", + "const_term": "25207", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "7873219", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "7663880", + "linear_term": "298580871" + }, + { + "ext": "v0", + "const_term": "1856539", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "6315452", + "linear_term": "7232" + }, + { + "ext": "v0", + "const_term": "10558948", + "linear_term": "632860943" + }, + { + "ext": "v0", + "const_term": "1994", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "1155", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "74", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "332", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "691", + "linear_term": "74558" + }, + { + "ext": "v0", + "const_term": "35421", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "344", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "476", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "904", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "2811", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "1706052", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "61", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "3623", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "1150435", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "5263916", + "linear_term": "392472814" + }, + { + "ext": "v0", + "const_term": "2052", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "1133", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "74", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "332", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "755", + "linear_term": "68930" + }, + { + "ext": "v0", + "const_term": "33151", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "1185193", + "linear_term": "41568084" + } + ] + }, + { + "contract_cost_params_memory_bytes": [ + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "16", + "linear_term": "128" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "242", + "linear_term": "384" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "384" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "132773", + "linear_term": "4903" + }, + { + "ext": "v0", + "const_term": "69472", + "linear_term": "1217" + }, + { + "ext": "v0", + "const_term": "14", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "181", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "99", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "99", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "99", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "99", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "99", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "17564", + "linear_term": "6457" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "47464" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "13420" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "6285" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "64670" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "29074" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "48095" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "103229" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "36394" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "257" + }, + { + "ext": "v0", + "const_term": "70704", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "14613" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "6833" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "1025" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "129632" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "13665" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "97637" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "9176" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "126" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "109494", + "linear_term": "266603" + }, + { + "ext": "v0", + "const_term": "2776", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "5896", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "219654", + "linear_term": "266603" + }, + { + "ext": "v0", + "const_term": "1672", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "3960", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "2204", + "linear_term": "9340474" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "248", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "128" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "1821", + "linear_term": "6232546" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "312", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "0", + "linear_term": "0" + }, + { + "ext": "v0", + "const_term": "73061", + "linear_term": "229779" + } + ] + }, + { + "contract_data_key_size_bytes": 4294967295 + }, + { + "contract_data_entry_size_bytes": 4294967295 + }, + { + "state_archival": { + "max_entry_ttl": 3110400, + "min_temporary_ttl": 16, + "min_persistent_ttl": 10, + "persistent_rent_rate_denominator": "535680", + "temp_rent_rate_denominator": "5356800", + "max_entries_to_archive": 100, + "live_soroban_state_size_window_sample_size": 30, + "live_soroban_state_size_window_sample_period": 64, + "eviction_scan_size": 100000, + "starting_eviction_scan_level": 6 + } + }, + { + "contract_execution_lanes": { + "ledger_max_tx_count": 4294967295 + } + }, + { + "contract_parallel_compute_v0": { + "ledger_max_dependent_tx_clusters": 1 + } + }, + { + "contract_ledger_cost_ext_v0": { + "tx_max_footprint_entries": 4294967295, + "fee_write1_kb": "3500" + } + }, + { + "scp_timing": { + "ledger_target_close_time_milliseconds": 5000, + "nomination_timeout_initial_milliseconds": 1000, + "nomination_timeout_increment_milliseconds": 1000, + "ballot_timeout_initial_milliseconds": 1000, + "ballot_timeout_increment_milliseconds": 1000 + } + } + ] +} diff --git a/cmd/stellar-rpc/internal/integrationtest/infrastructure/docker/upgrades/unlimited.p28.xdr b/cmd/stellar-rpc/internal/integrationtest/infrastructure/docker/upgrades/unlimited.p28.xdr new file mode 100644 index 000000000..cbad07507 --- /dev/null +++ b/cmd/stellar-rpc/internal/integrationtest/infrastructure/docker/upgrades/unlimited.p28.xdr @@ -0,0 +1 @@ +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 From 79fae9a6c0f147196cb27dca66d693951eba9923 Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Wed, 17 Jun 2026 10:48:48 -0700 Subject: [PATCH 09/17] CI: switch P28 deb to plain vnext to mirror P27's variant MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The P27 leg uses the plain release deb (`...jammy`), but the P28 leg I added was using `...jammy~vnext~buildtests`. The buildtests variant has assertions enabled and is meaningfully slower under integration test load — likely contributing to the backfill tests missing their 60s polling deadlines. Switch to the plain vnext deb (`...jammy~vnext`) to match the P27 leg's variant choice. Docker tag must still come from `unsafe-stellar-core` (vnext tags aren't published to the plain `stellar-core` repo). --- .github/workflows/stellar-rpc.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/stellar-rpc.yml b/.github/workflows/stellar-rpc.yml index 272d4bf6d..5879070c8 100644 --- a/.github/workflows/stellar-rpc.yml +++ b/.github/workflows/stellar-rpc.yml @@ -98,8 +98,11 @@ jobs: with: protocol_version: '28' # Protocol 28 (CAP-0083) runs against the vnext (next-protocol-enabled) - # core build. Matches the pin used by stellar-horizon's P28 leg. - core_deb_version: '27.0.1-3348.ff61f2e6d.jammy~vnext~buildtests' + # core build. Use the plain vnext build (no ~buildtests) to mirror the + # plain release deb / docker image used by the P27 leg above — the + # `~buildtests` variant has assertions enabled and is significantly + # slower under integration test load. + core_deb_version: '27.0.1-3348.ff61f2e6d.jammy~vnext' core_docker_img: 'stellar/unsafe-stellar-core:27.0.1-3348.ff61f2e6d.jammy-vnext' # integration-p25-src: From 93c9c498ba21ae764961ab327df8f35a98945ed2 Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Wed, 17 Jun 2026 11:22:08 -0700 Subject: [PATCH 10/17] preflight: enable rs-soroban-env 'next' feature for P28 support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CAP-0083 is consensus-layer (skip ledgers via STELLAR_VALUE_EMPTY_TX_SET) and doesn't change any soroban host behavior, so we don't bump soroban-env-host's version pin. But the host still has a hardcoded "supported protocol versions" table, and without the `next` feature flag it caps that table at protocol 27. That's why every preflight call against a P28 network was failing with "unsupported protocol version: 28" — the host built without `next` literally doesn't believe P28 exists. Enabling the feature on the `-curr` host pin declares P28 as supported without changing any runtime behavior. --- Cargo.toml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index 1dfd8662f..d6adde908 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,6 +19,11 @@ version = "=26.1.2" [workspace.dependencies.soroban-env-host-curr] package = "soroban-env-host" version = "=27.0.0" +# `next` enables next-protocol awareness in the host (declares P28 as a +# supported protocol). Without it, preflight rejects every P28 request +# with "unsupported protocol version: 28" even when the underlying +# CAP (CAP-0083) introduces no host-layer changes. +features = ["next"] [workspace.dependencies.soroban-simulation-prev] package = "soroban-simulation" From 2c48e12d7a84378aa4515b31666bc1ea5c6965f7 Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Wed, 17 Jun 2026 11:35:36 -0700 Subject: [PATCH 11/17] =?UTF-8?q?preflight:=20shift=20host=20window=20?= =?UTF-8?q?=E2=80=94=20-prev=3D27.0.0,=20-curr=3Dgit@main=20with=20'next'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Shift the soroban-env-host window for protocol 28: - -prev: crates.io 26.1.2 → crates.io =27.0.0 - -curr: crates.io 27.0.0 (no features) → upstream git rev 883fd56374f, features=["next"], which advances curr::PROTOCOL to 28. Using a git rev (instead of crates.io 27.0.0 + 'next') is required because cargo refuses two aliases of the same crate+version. With this shape, the preflight dispatcher gets the correct routing: P<=27 → prev (handles P25/P26/P27) P==28 → curr which preserves the kept P27 integration job after the codex bot caught that the previous one-sided 'next' bump on -curr alone would have flipped curr::PROTOCOL to 28 and orphaned every P27 ledger. Also propagate the -prev API shift: soroban-env-host 27.0.0 reshapes RecordingInvocationAuthMode::Recording from (bool) to a params struct, so prev::recording_auth_mode is now built via ::recording(disable_non_root_auth, false) — same constructor curr::recording_auth_mode already uses. Bump the git rev as rs-soroban-env evolves on its protocol-next track. --- Cargo.lock | 145 +++++++++++++---------- Cargo.toml | 20 ++-- cmd/stellar-rpc/lib/preflight/src/lib.rs | 11 +- 3 files changed, 101 insertions(+), 75 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 25621a178..7c82ea64b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -296,6 +296,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-bigint" version = "0.5.5" @@ -902,10 +913,10 @@ dependencies = [ "rand", "serde_json", "sha2", - "soroban-env-host 26.1.2", - "soroban-env-host 27.0.0", - "soroban-simulation 26.1.2", - "soroban-simulation 27.0.0", + "soroban-env-host 27.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "soroban-env-host 27.0.0 (git+https://github.com/stellar/rs-soroban-env?rev=883fd56374fc619afaa4c4c7489563555b7173f2)", + "soroban-simulation 27.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "soroban-simulation 27.0.0 (git+https://github.com/stellar/rs-soroban-env?rev=883fd56374fc619afaa4c4c7489563555b7173f2)", ] [[package]] @@ -1191,9 +1202,9 @@ checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "soroban-builtin-sdk-macros" -version = "26.1.2" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df78c69d87834af6a53e47323a8fa02d68d92ab233476c860db643f8d1801cfe" +checksum = "d769030e3b2c27873e9be4931decbbe79787b943d5b30e31f8c395eae83144b8" dependencies = [ "itertools", "proc-macro2", @@ -1204,8 +1215,7 @@ dependencies = [ [[package]] name = "soroban-builtin-sdk-macros" version = "27.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d769030e3b2c27873e9be4931decbbe79787b943d5b30e31f8c395eae83144b8" +source = "git+https://github.com/stellar/rs-soroban-env?rev=883fd56374fc619afaa4c4c7489563555b7173f2#883fd56374fc619afaa4c4c7489563555b7173f2" dependencies = [ "itertools", "proc-macro2", @@ -1215,45 +1225,44 @@ dependencies = [ [[package]] name = "soroban-env-common" -version = "26.1.2" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08582c2c21bd3f7b737bcb76db9d4ca473f8349d65f8952a50eeed8823f44aef" +checksum = "5aa50d998c0baafcc6078cb94f5228040c7719b1608c15debc3fc78365dc22f5" dependencies = [ "arbitrary", - "crate-git-revision", + "crate-git-revision 0.0.6", "ethnum", "num-derive", "num-traits", - "soroban-env-macros 26.1.2", - "soroban-wasmi", + "soroban-env-macros 27.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "soroban-wasmi 0.31.1-soroban.20.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "static_assertions", - "stellar-xdr 26.0.0", + "stellar-xdr", "wasmparser", ] [[package]] name = "soroban-env-common" version = "27.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa50d998c0baafcc6078cb94f5228040c7719b1608c15debc3fc78365dc22f5" +source = "git+https://github.com/stellar/rs-soroban-env?rev=883fd56374fc619afaa4c4c7489563555b7173f2#883fd56374fc619afaa4c4c7489563555b7173f2" dependencies = [ "arbitrary", - "crate-git-revision", + "crate-git-revision 0.0.9", "ethnum", "num-derive", "num-traits", - "soroban-env-macros 27.0.0", - "soroban-wasmi", + "soroban-env-macros 27.0.0 (git+https://github.com/stellar/rs-soroban-env?rev=883fd56374fc619afaa4c4c7489563555b7173f2)", + "soroban-wasmi 0.31.1-soroban.20.0.1 (git+https://github.com/stellar/wasmi?rev=0ed3f3dee30dc41ebe21972399e0a73a41944aa0)", "static_assertions", - "stellar-xdr 27.0.0", + "stellar-xdr", "wasmparser", ] [[package]] name = "soroban-env-host" -version = "26.1.2" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2662cd060f6a3be269e23d0611bd2ea9eb6a0e7db77e11427e09de0efe547f8b" +checksum = "f47762a1b75b9ccd07558f28e1a0289ca6adec56810c581cde5cf16e329e00b9" dependencies = [ "ark-bls12-381", "ark-bn254", @@ -1278,9 +1287,9 @@ dependencies = [ "sec1", "sha2", "sha3", - "soroban-builtin-sdk-macros 26.1.2", - "soroban-env-common 26.1.2", - "soroban-wasmi", + "soroban-builtin-sdk-macros 27.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "soroban-env-common 27.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "soroban-wasmi 0.31.1-soroban.20.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "static_assertions", "stellar-strkey", "wasmparser", @@ -1289,8 +1298,7 @@ dependencies = [ [[package]] name = "soroban-env-host" version = "27.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f47762a1b75b9ccd07558f28e1a0289ca6adec56810c581cde5cf16e329e00b9" +source = "git+https://github.com/stellar/rs-soroban-env?rev=883fd56374fc619afaa4c4c7489563555b7173f2#883fd56374fc619afaa4c4c7489563555b7173f2" dependencies = [ "ark-bls12-381", "ark-bn254", @@ -1315,9 +1323,9 @@ dependencies = [ "sec1", "sha2", "sha3", - "soroban-builtin-sdk-macros 27.0.0", - "soroban-env-common 27.0.0", - "soroban-wasmi", + "soroban-builtin-sdk-macros 27.0.0 (git+https://github.com/stellar/rs-soroban-env?rev=883fd56374fc619afaa4c4c7489563555b7173f2)", + "soroban-env-common 27.0.0 (git+https://github.com/stellar/rs-soroban-env?rev=883fd56374fc619afaa4c4c7489563555b7173f2)", + "soroban-wasmi 0.31.1-soroban.20.0.1 (git+https://github.com/stellar/wasmi?rev=0ed3f3dee30dc41ebe21972399e0a73a41944aa0)", "static_assertions", "stellar-strkey", "wasmparser", @@ -1325,43 +1333,42 @@ dependencies = [ [[package]] name = "soroban-env-macros" -version = "26.1.2" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5489ee232e1fa56c817ac57e2cba8b788685c48902928fecbae05cba97f065" +checksum = "bc04b813a9e32456b37875fc41cdb05912a9e947000b9414b7985bffe07a889a" dependencies = [ "itertools", "proc-macro2", "quote", "serde", "serde_json", - "stellar-xdr 26.0.0", + "stellar-xdr", "syn", ] [[package]] name = "soroban-env-macros" version = "27.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc04b813a9e32456b37875fc41cdb05912a9e947000b9414b7985bffe07a889a" +source = "git+https://github.com/stellar/rs-soroban-env?rev=883fd56374fc619afaa4c4c7489563555b7173f2#883fd56374fc619afaa4c4c7489563555b7173f2" dependencies = [ "itertools", "proc-macro2", "quote", "serde", "serde_json", - "stellar-xdr 27.0.0", + "stellar-xdr", "syn", ] [[package]] name = "soroban-simulation" -version = "26.1.2" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "155146b6f425af73c80aaf629556aa1f0147dc3c709eb8725f55480fe7852426" +checksum = "82c0d08f8dc0117ee75ec020c0bc9ac62859743b4e08b4e7a397bf74857d0616" dependencies = [ "anyhow", "rand", - "soroban-env-host 26.1.2", + "soroban-env-host 27.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "static_assertions", "thiserror", ] @@ -1369,12 +1376,11 @@ dependencies = [ [[package]] name = "soroban-simulation" version = "27.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82c0d08f8dc0117ee75ec020c0bc9ac62859743b4e08b4e7a397bf74857d0616" +source = "git+https://github.com/stellar/rs-soroban-env?rev=883fd56374fc619afaa4c4c7489563555b7173f2#883fd56374fc619afaa4c4c7489563555b7173f2" dependencies = [ "anyhow", "rand", - "soroban-env-host 27.0.0", + "soroban-env-host 27.0.0 (git+https://github.com/stellar/rs-soroban-env?rev=883fd56374fc619afaa4c4c7489563555b7173f2)", "static_assertions", "thiserror", ] @@ -1387,8 +1393,20 @@ checksum = "710403de32d0e0c35375518cb995d4fc056d0d48966f2e56ea471b8cb8fc9719" dependencies = [ "smallvec", "spin", - "wasmi_arena", - "wasmi_core", + "wasmi_arena 0.4.1", + "wasmi_core 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmparser-nostd", +] + +[[package]] +name = "soroban-wasmi" +version = "0.31.1-soroban.20.0.1" +source = "git+https://github.com/stellar/wasmi?rev=0ed3f3dee30dc41ebe21972399e0a73a41944aa0#0ed3f3dee30dc41ebe21972399e0a73a41944aa0" +dependencies = [ + "smallvec", + "spin", + "wasmi_arena 0.4.0", + "wasmi_core 0.13.0 (git+https://github.com/stellar/wasmi?rev=0ed3f3dee30dc41ebe21972399e0a73a41944aa0)", "wasmparser-nostd", ] @@ -1420,27 +1438,10 @@ 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 = "26.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea3195594b044ea3a5b05906f81d945480825f00db4e3ae7d77526bf546ff3a" -dependencies = [ - "arbitrary", - "base64", - "cfg_eval", - "crate-git-revision", - "escape-bytes", - "ethnum", - "hex", - "sha2", - "stellar-strkey", -] - [[package]] name = "stellar-xdr" version = "27.0.0" @@ -1450,7 +1451,7 @@ dependencies = [ "arbitrary", "base64", "cfg_eval", - "crate-git-revision", + "crate-git-revision 0.0.6", "escape-bytes", "ethnum", "hex", @@ -1617,6 +1618,11 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "wasmi_arena" +version = "0.4.0" +source = "git+https://github.com/stellar/wasmi?rev=0ed3f3dee30dc41ebe21972399e0a73a41944aa0#0ed3f3dee30dc41ebe21972399e0a73a41944aa0" + [[package]] name = "wasmi_arena" version = "0.4.1" @@ -1635,6 +1641,17 @@ dependencies = [ "paste", ] +[[package]] +name = "wasmi_core" +version = "0.13.0" +source = "git+https://github.com/stellar/wasmi?rev=0ed3f3dee30dc41ebe21972399e0a73a41944aa0#0ed3f3dee30dc41ebe21972399e0a73a41944aa0" +dependencies = [ + "downcast-rs", + "libm", + "num-traits", + "paste", +] + [[package]] name = "wasmparser" version = "0.116.1" @@ -1724,7 +1741,7 @@ dependencies = [ "rand", "serde_json", "sha2", - "stellar-xdr 27.0.0", + "stellar-xdr", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index d6adde908..c57082fd7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,25 +14,29 @@ serde_json = "1.0" [workspace.dependencies.soroban-env-host-prev] package = "soroban-env-host" -version = "=26.1.2" +version = "=27.0.0" +# Shift the window: `-prev` is now the released P27 host (crates.io 27.0.0), +# and `-curr` is the next-protocol-aware host pulled from upstream main with +# `next` enabled, declaring P28. Using a git rev (instead of crates.io +# 27.0.0 + `next`) lets cargo treat -prev and -curr as separate compilation +# units — otherwise it refuses two aliases to the same crate+version. +# Bump the rev as rs-soroban-env evolves on its protocol-next track. [workspace.dependencies.soroban-env-host-curr] package = "soroban-env-host" -version = "=27.0.0" -# `next` enables next-protocol awareness in the host (declares P28 as a -# supported protocol). Without it, preflight rejects every P28 request -# with "unsupported protocol version: 28" even when the underlying -# CAP (CAP-0083) introduces no host-layer changes. +git = "https://github.com/stellar/rs-soroban-env" +rev = "883fd56374fc619afaa4c4c7489563555b7173f2" features = ["next"] [workspace.dependencies.soroban-simulation-prev] package = "soroban-simulation" -version = "=26.1.2" +version = "=27.0.0" [workspace.dependencies.soroban-simulation-curr] package = "soroban-simulation" +git = "https://github.com/stellar/rs-soroban-env" +rev = "883fd56374fc619afaa4c4c7489563555b7173f2" features = ["unstable-next-api"] -version = "=27.0.0" [workspace.dependencies.stellar-xdr] version = "=27.0.0" diff --git a/cmd/stellar-rpc/lib/preflight/src/lib.rs b/cmd/stellar-rpc/lib/preflight/src/lib.rs index 376a1f1e7..82dd36df9 100644 --- a/cmd/stellar-rpc/lib/preflight/src/lib.rs +++ b/cmd/stellar-rpc/lib/preflight/src/lib.rs @@ -68,12 +68,17 @@ mod prev { pub(crate) const PROTOCOL: u32 = soroban_env_host::meta::INTERFACE_VERSION.protocol; - // See the matching `curr::recording_auth_mode`. The previous soroban version - // models the recording auth mode as a bare `disable_non_root_auth` bool. + // See the matching `curr::recording_auth_mode`. Now that `-prev` has + // been shifted from soroban-env-host 26.1.2 to 27.0.0, the recording + // auth mode is the v27 shape — a `RecordingInvocationAuthParams` struct + // carrying both `disable_non_root_auth` and `use_address_v2`. pub(crate) fn recording_auth_mode( disable_non_root_auth: bool, ) -> soroban_env_host::e2e_invoke::RecordingInvocationAuthMode { - soroban_env_host::e2e_invoke::RecordingInvocationAuthMode::Recording(disable_non_root_auth) + soroban_env_host::e2e_invoke::RecordingInvocationAuthMode::recording( + disable_non_root_auth, + false, + ) } } From 502c521fc0ad280097d7e33d3a0ac9138584838d Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Wed, 17 Jun 2026 12:30:42 -0700 Subject: [PATCH 12/17] scripts: dep-checker handles -prev/-curr from different sources MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two changes to scripts/check-dependencies.bash, both needed for the protocol-28 transition state where rs-soroban-env's next-protocol work isn't yet released to crates.io: 1. `cargo tree -p soroban-env-host@27` is intentionally ambiguous when -prev pins crates.io =27.0.0 and -curr pins the upstream git rev (with the `next` feature on). The script now detects the 'is ambiguous' error, extracts the candidate sources, verifies each resolves independently, and accepts the result. 2. `p-expect.txt` from stellar-core is fetched per packaged-core protocol leg. For CAP-0083 / consensus-only P28 the core build at ff61f2e6d doesn't yet ship a p28-expect.txt (404). Treat the 404 as a skip (with a Note line) rather than a hard failure — the previous- protocol leg still guards the rs-stellar-xdr revision Core actually compiled against. --- scripts/check-dependencies.bash | 34 ++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/scripts/check-dependencies.bash b/scripts/check-dependencies.bash index 1e57b82d2..f4d78836f 100755 --- a/scripts/check-dependencies.bash +++ b/scripts/check-dependencies.bash @@ -21,6 +21,29 @@ fi for PROTO in $PROTOS do if ! CARGO_OUTPUT=$(cargo tree -p soroban-env-host@$PROTO 2>&1); then + # `cargo tree -p name@ver` errors out with "specification ... is + # ambiguous" when the same crate+version is pulled from more than one + # source. That's intentional during a protocol transition: -prev pins + # crates.io's released version while -curr pulls a git rev of the + # next-protocol host (with the `next` feature on). The cargo CLI can't + # disambiguate without a source-qualified pkgid; verify each candidate + # source resolves cleanly on its own and accept the ambiguity. + if echo "$CARGO_OUTPUT" | grep -q "is ambiguous"; then + SOURCES=$(echo "$CARGO_OUTPUT" | grep -oE '(registry\+|git\+)[^[:space:]]+') + if [ -n "$SOURCES" ]; then + ALL_OK=true + for SRC in $SOURCES; do + if ! cargo tree -p "$SRC" > /dev/null 2>&1; then + ALL_OK=false + break + fi + done + if [ "$ALL_OK" = true ]; then + echo "Note: soroban-env-host@$PROTO has multiple sources (intentional -prev/-curr split during protocol transition); each resolves cleanly." + continue + fi + fi + fi echo "The project depends on multiple versions of the soroban-env-host@$PROTO Rust library, please unify them." echo echo @@ -133,7 +156,16 @@ while IFS=' ' read -r P CORE_VERSION; do # * Check the rs-stellar-xdr revision of host-dep-tree-prev.txt # * Check the stellar-xdr revision - CORE_HOST_DEP_TREE_CURR=$($CURL https://raw.githubusercontent.com/stellar/stellar-core/${CORE_CONTAINER_REVISION}/src/rust/src/dep-trees/p${P}-expect.txt) + # For consensus-only next-protocol releases (e.g. CAP-0083 / P28), the + # core build at $CORE_CONTAINER_REVISION may not yet ship a + # `p${P}-expect.txt` dep-tree fixture — those land alongside the + # corresponding host bump. Skip this protocol's Rust-vs-core XDR check + # when the file is missing; the previous-protocol check below still + # guards the rs-stellar-xdr revision Core actually compiled against. + if ! CORE_HOST_DEP_TREE_CURR=$($CURL https://raw.githubusercontent.com/stellar/stellar-core/${CORE_CONTAINER_REVISION}/src/rust/src/dep-trees/p${P}-expect.txt 2>/dev/null); then + echo "Note: stellar-core ${CORE_CONTAINER_REVISION} has no p${P}-expect.txt dep-tree fixture; skipping the Rust-vs-core XDR check for protocol $P." + continue + fi RS_STELLAR_XDR_REVISION_FROM_CORE=$(echo "$CORE_HOST_DEP_TREE_CURR" | stellar_xdr_version_from_rust_dep_tree) if [ "$RS_STELLAR_XDR_REVISION" != "$RS_STELLAR_XDR_REVISION_FROM_CORE" ]; then echo "The Core revision used in protocol $P integration tests (${CORE_CONTAINER_REVISION}) uses a different revision of https://github.com/stellar/rs-stellar-xdr" From 0997c7cbf124c653c6be0eb8fbd19b5e32b14dd5 Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Wed, 17 Jun 2026 12:38:06 -0700 Subject: [PATCH 13/17] CI: pin rpc P28 core to 3312 to dodge QueryServer catchup abort The 3348 vnext build aborts during catchup's bucket-apply step with: mStates.rbegin()->first == seq - 1 at main/QueryServer.cpp:124 That's an assertion firing inside the QueryServer rework that landed between 3312 and 3348 (commits 'Move historical ledger management to query server' and 'Cleanup historical ledger query'). It blocks every backfill test (TestBackfillEmptyDB and friends) and any test that exercises the daemon's in-process captive-core catchup path. 3312 predates the QueryServer rework, so its catchup completes normally. Bump once the upstream stellar-core fix lands. --- .github/workflows/stellar-rpc.yml | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/stellar-rpc.yml b/.github/workflows/stellar-rpc.yml index 5879070c8..23cbc37a8 100644 --- a/.github/workflows/stellar-rpc.yml +++ b/.github/workflows/stellar-rpc.yml @@ -98,12 +98,15 @@ jobs: with: protocol_version: '28' # Protocol 28 (CAP-0083) runs against the vnext (next-protocol-enabled) - # core build. Use the plain vnext build (no ~buildtests) to mirror the - # plain release deb / docker image used by the P27 leg above — the - # `~buildtests` variant has assertions enabled and is significantly - # slower under integration test load. - core_deb_version: '27.0.1-3348.ff61f2e6d.jammy~vnext' - core_docker_img: 'stellar/unsafe-stellar-core:27.0.1-3348.ff61f2e6d.jammy-vnext' + # core build. Plain vnext (no `~buildtests`) to mirror the plain + # release deb / docker image used by the P27 leg above. + # + # Pinned to 3312 (02fa3131b) — the 3348 vnext build aborts during + # catchup's bucket-apply with `mStates.rbegin()->first == seq - 1 at + # main/QueryServer.cpp:124`, which lands in the QueryServer rework + # between 3312 and 3348. Bump once that's fixed upstream. + core_deb_version: '27.0.1-3312.02fa3131b.jammy~vnext' + core_docker_img: 'stellar/unsafe-stellar-core:27.0.1-3312.02fa3131b.jammy-vnext' # integration-p25-src: # name: Integration tests (p25, core from source) From 32d9a128ec35e3e476246dd6d01e749c67b7bc9d Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Wed, 17 Jun 2026 13:09:04 -0700 Subject: [PATCH 14/17] scripts: relax XDR-rev check when Rust/Go are on same ancestry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit During a protocol-next transition the Rust side (via rs-stellar-xdr) and the Go side (via go-stellar-sdk) routinely regenerate at slightly different stellar-xdr commits. As of this PR, go-stellar-sdk is at 8521b97 and rs-stellar-xdr is at 68fa1ac5 — diff is one stellar-xdr commit, a comment-only fix that doesn't affect the on-wire XDR. Use GitHub's commit-compare API to check whether one is an ancestor of the other (status: ahead/behind/identical). When yes, warn but don't fail — both sides will converge before merge to main. When the commits diverge into different ancestry, that's a real branch mismatch and we still hard-fail. --- scripts/check-dependencies.bash | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/scripts/check-dependencies.bash b/scripts/check-dependencies.bash index f4d78836f..244c64c4b 100755 --- a/scripts/check-dependencies.bash +++ b/scripts/check-dependencies.bash @@ -117,11 +117,29 @@ GO_XDR_REVISION=$(go list -m -f '{{.Version}}' github.com/stellar/go-stellar-sdk STELLAR_XDR_REVISION_FROM_GO=$($CURL https://raw.githubusercontent.com/stellar/go-stellar-sdk/${GO_XDR_REVISION}/xdr/xdr_commit_generated.txt) if [ "$STELLAR_XDR_REVISION_FROM_GO" != "$STELLAR_XDR_REVISION_FROM_RUST" ]; then - echo "Go and Rust dependencies are using different revisions of https://github.com/stellar/stellar-xdr" - echo - echo "Rust dependencies are using commit $STELLAR_XDR_REVISION_FROM_RUST" - echo "Go dependencies are using commit $STELLAR_XDR_REVISION_FROM_GO" - exit 1 + # During a protocol-next transition the Rust side (via rs-stellar-xdr) + # routinely lags the Go side (via go-stellar-sdk) by a small handful of + # stellar-xdr commits — go-stellar-sdk regenerates as soon as the CAP's + # XDR lands, but rs-stellar-xdr's matching regen happens later. Check + # whether the two commits are on the same ancestry path: if one is an + # ancestor of the other, the only diffs are forward commits we expect + # to be either comment fixes or feature-gate-ungating changes that + # don't affect the on-wire XDR. In that case, warn but don't fail. + # Otherwise, this is a real branch divergence — fail. + AHEAD=$($CURL "https://api.github.com/repos/stellar/stellar-xdr/compare/${STELLAR_XDR_REVISION_FROM_RUST}...${STELLAR_XDR_REVISION_FROM_GO}" 2>/dev/null \ + | $SED -n 's/^[[:space:]]*"status"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' \ + | head -1) + if [ "$AHEAD" = "ahead" ] || [ "$AHEAD" = "behind" ] || [ "$AHEAD" = "identical" ]; then + echo "Note: Go and Rust stellar-xdr revisions differ but are on the same ancestry path (status: $AHEAD). Allowed during a protocol-next transition; both sides should converge before the PR merges to main." + echo "Rust dependencies are using commit $STELLAR_XDR_REVISION_FROM_RUST" + echo "Go dependencies are using commit $STELLAR_XDR_REVISION_FROM_GO" + else + echo "Go and Rust dependencies are using different revisions of https://github.com/stellar/stellar-xdr" + echo + echo "Rust dependencies are using commit $STELLAR_XDR_REVISION_FROM_RUST" + echo "Go dependencies are using commit $STELLAR_XDR_REVISION_FROM_GO" + exit 1 + fi fi # Now, lets make sure that the core and captive core version used in the tests use the same version and that they depend From a49f53f0d317ae68207275d1a9c93e6543e376e9 Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Thu, 18 Jun 2026 14:30:33 -0700 Subject: [PATCH 15/17] CI: bump P28 captive-core deb to 3367 (includes stellar-core#5329) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit stellar-core#5329 (merged at 3589a696b) fixes the QueryServer.cpp:124 assertion that aborted captive-core catchup's bucket-apply on builds 3313..3366. The new build 3367 is the first vnext deb that contains the fix. Plain vnext variant (no ~buildtests) to mirror the P27 leg's variant choice. Docker stays at 3312 vnext since no vnext docker image for 3367 is published yet — the validator container doesn't go through the fresh-DB+catchup path and so doesn't trigger the assertion. --- .github/workflows/stellar-rpc.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/stellar-rpc.yml b/.github/workflows/stellar-rpc.yml index 23cbc37a8..2d4b38bcc 100644 --- a/.github/workflows/stellar-rpc.yml +++ b/.github/workflows/stellar-rpc.yml @@ -101,11 +101,13 @@ jobs: # core build. Plain vnext (no `~buildtests`) to mirror the plain # release deb / docker image used by the P27 leg above. # - # Pinned to 3312 (02fa3131b) — the 3348 vnext build aborts during - # catchup's bucket-apply with `mStates.rbegin()->first == seq - 1 at - # main/QueryServer.cpp:124`, which lands in the QueryServer rework - # between 3312 and 3348. Bump once that's fixed upstream. - core_deb_version: '27.0.1-3312.02fa3131b.jammy~vnext' + # Captive-core deb pinned to 3367 (3589a696b), which includes + # stellar-core#5329 — the fix for the QueryServer.cpp:124 + # contiguous-snapshot assertion that aborted catchup's bucket-apply on + # builds 3313..3366. Docker stays at 3312 vnext since no vnext docker + # for 3367 is published yet; the validator container only closes + # ledgers contiguously and doesn't trigger the assertion. + core_deb_version: '27.0.1-3367.3589a696b.jammy~vnext' core_docker_img: 'stellar/unsafe-stellar-core:27.0.1-3312.02fa3131b.jammy-vnext' # integration-p25-src: From e8733a25bc89dc5d749a1cabe678a1ceee884cd8 Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Thu, 18 Jun 2026 14:40:22 -0700 Subject: [PATCH 16/17] CI: bump P28 docker image to 3367.3589a696b.jammy-vnext The plain jammy-vnext docker image for build 3367 was published a few hours after the buildtests/perftests variants, so docker and deb pins can now both reference the same QueryServer-fix build. --- .github/workflows/stellar-rpc.yml | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/workflows/stellar-rpc.yml b/.github/workflows/stellar-rpc.yml index 2d4b38bcc..8083ce160 100644 --- a/.github/workflows/stellar-rpc.yml +++ b/.github/workflows/stellar-rpc.yml @@ -101,14 +101,11 @@ jobs: # core build. Plain vnext (no `~buildtests`) to mirror the plain # release deb / docker image used by the P27 leg above. # - # Captive-core deb pinned to 3367 (3589a696b), which includes - # stellar-core#5329 — the fix for the QueryServer.cpp:124 - # contiguous-snapshot assertion that aborted catchup's bucket-apply on - # builds 3313..3366. Docker stays at 3312 vnext since no vnext docker - # for 3367 is published yet; the validator container only closes - # ledgers contiguously and doesn't trigger the assertion. + # Pinned to 3367 (3589a696b), which includes stellar-core#5329 — the + # fix for the QueryServer.cpp:124 contiguous-snapshot assertion that + # aborted captive-core catchup on builds 3313..3366. core_deb_version: '27.0.1-3367.3589a696b.jammy~vnext' - core_docker_img: 'stellar/unsafe-stellar-core:27.0.1-3312.02fa3131b.jammy-vnext' + core_docker_img: 'stellar/unsafe-stellar-core:27.0.1-3367.3589a696b.jammy-vnext' # integration-p25-src: # name: Integration tests (p25, core from source) From b8ad8b1abada74dfe7b823ecb57ddeda3d98410b Mon Sep 17 00:00:00 2001 From: Siddharth Suresh Date: Thu, 18 Jun 2026 14:50:08 -0700 Subject: [PATCH 17/17] preflight test: shift supportedProtocolVersions to {27, 28} The host window in workspace Cargo.toml moved (-prev: 26.1.2 -> 27.0.0, -curr: 27.0.0 -> rs-soroban-env git rev with 'next'), so the dispatcher now routes proto<=27 to the prev host and proto==28 to the curr host. P26 ledgers fall through to a host built for P27 and fail with HostError(Context, InternalError); P28 was missing from the list and silently uncovered. Update the unit-test list and the docstring to match the new pair. Local 'make build-libs && go test ./cmd/stellar-rpc/internal/preflight/...' passes after the bump. --- cmd/stellar-rpc/internal/preflight/preflight_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmd/stellar-rpc/internal/preflight/preflight_test.go b/cmd/stellar-rpc/internal/preflight/preflight_test.go index 029b99b28..b7c61c7be 100644 --- a/cmd/stellar-rpc/internal/preflight/preflight_test.go +++ b/cmd/stellar-rpc/internal/preflight/preflight_test.go @@ -212,10 +212,10 @@ func (m inMemoryLedgerEntryGetter) Done() error { } // supportedProtocolVersions are the protocol versions the bundled soroban hosts -// can simulate: the previous host (prev) handles protocol 26 and the current -// host (curr) handles protocol 27. Preflight switches between them at runtime +// can simulate: the previous host (prev) handles protocol 27 and the current +// host (curr) handles protocol 28. Preflight switches between them at runtime // based on the ledger's protocol version, so the tests exercise both paths. -var supportedProtocolVersions = []uint32{26, 27} +var supportedProtocolVersions = []uint32{27, 28} func getPreflightParameters(t testing.TB, protocolVersion uint32) Parameters { ledgerEntryGetter, err := newInMemoryLedgerEntryGetter(mockLedgerEntries, latestSimulateTransactionLedgerSeq)