Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
30 changes: 16 additions & 14 deletions .github/workflows/horizon.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,31 +6,33 @@ on:
pull_request:

jobs:
integration-p27-pkg:
name: Integration tests (P27)
integration-p28-pkg:
name: Integration tests (P28)
uses: ./.github/workflows/integration-tests.yml
with:
protocol_version: '27'
# The P27 leg runs the NEW core and rpc builds at protocol 27 — the point
# is verifying the updated binaries still serve the previous protocol
# (the real configuration during the upgrade window), not re-testing
# already-shipped versions against each other.
protocol_version: '28'
core_deb_version: '28.0.0-3494.a9b861321.jammy~buildtests'
core_docker_img: 'stellar/stellar-core:28.0.0-3494.a9b861321.jammy'
stellar_rpc_docker_img: 'stellar/stellar-rpc:28.0.0'
# The full go/postgres matrix runs only on pushes to main since they're
# non-blocking and happen in the background. Everyday PRs get the single
# non-blocking and happen in the background. Everyday PRs get the single
# latest-go/latest-pg job.
full_matrix: ${{ github.event_name == 'push' }}

integration-p28-pkg:
name: Integration tests (P28)
integration-p29-src:
name: Integration tests (P29, core from source)
uses: ./.github/workflows/integration-tests.yml
with:
protocol_version: '28'
core_deb_version: '28.0.0-3494.a9b861321.jammy~buildtests'
core_docker_img: 'stellar/stellar-core:28.0.0-3494.a9b861321.jammy'
stellar_rpc_docker_img: 'stellar/stellar-rpc:28.0.0'
protocol_version: '29'
# CAP-0088 is unmerged (stellar-core#5423) and no -vnext image or deb is
# built from it, so build core from the PR head. Dockerfile.testing
# configures --enable-next-protocol-version-unsafe-for-production, which
# is what makes protocol 29 reachable.
core_git_ref: 'refs/pull/5423/head'
# No protocol-29 stellar-rpc image exists. Empty keeps the EnableStellarRPC
# suites AMBER; a P28 RPC bundles a captive-core that cannot ingest P29 and
# would hang every such test until the 75m suite timeout.
stellar_rpc_docker_img: ''
full_matrix: ${{ github.event_name == 'push' }}

# integration-p28-src:
Expand Down
7 changes: 7 additions & 0 deletions .github/workflows/integration-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,13 @@ jobs:

- name: Pull and set Stellar RPC image
run: |
# Leave the env var unset when no image is configured so NewTest()'s
# AMBER skip fires instead of the compose default silently supplying a
# previous-protocol RPC.
if [[ -z "$STELLAR_RPC_DOCKER_IMG" ]]; then
echo "::warning::no stellar-rpc image configured; EnableStellarRPC suites will skip"
exit 0
fi
docker pull "$STELLAR_RPC_DOCKER_IMG"
echo HORIZON_INTEGRATION_TESTS_STELLAR_RPC_DOCKER_IMG="$STELLAR_RPC_DOCKER_IMG" >> $GITHUB_ENV

Expand Down
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ file. This project adheres to [Semantic Versioning](http://semver.org/).

## Unreleased

### Added
- Added Protocol 29 (CAP-0088, millisecond-resolution close times) ingestion support and bumped `MaxSupportedProtocolVersion` to 29. Decoding of the new `STELLAR_VALUE_SIGNED_MS` / `STELLAR_VALUE_EMPTY_TX_SET_MS` `StellarValue.ext` arms comes from the regenerated `go-stellar-sdk` XDR ([go-stellar-sdk#5998](https://github.com/stellar/go-stellar-sdk/pull/5998)). Horizon keeps reporting whole-second close times from `StellarValue.closeTime`; `closeTimeMs` is not exposed.
- `TestCoreLCMIngestion` fixtures re-baselined from stellar-core's `test-lcm-next` ([stellar-core#5423](https://github.com/stellar/stellar-core/pull/5423)), adding `BumpSequenceTests`, `ClaimableBalanceTests` and `HerderTests`.

## 28.0.0

**This release adds support for Protocol 28.**
Expand Down
2 changes: 2 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -170,3 +170,5 @@ require (
google.golang.org/protobuf v1.36.10
gopkg.in/yaml.v3 v3.0.1 // indirect
)

replace github.com/stellar/go-stellar-sdk => github.com/sisuresh/go v0.0.0-20260831185642-e66bca6a6fff
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -413,6 +413,8 @@ github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c h1:aqg5Vm5dwtvL+Yg
github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c/go.mod h1:owqhoLW1qZoYLZzLnBw+QkPP9WZnjlSWihhxAJC1+/M=
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-20260831185642-e66bca6a6fff h1:l0Vj8dJ8ApGGat4SxqxQYV1b0ZaNXX92hl/h6wxEXIA=
github.com/sisuresh/go v0.0.0-20260831185642-e66bca6a6fff/go.mod h1:YTYl7/zFt7oIX5Y4WRgL+3d2upWQDLywlHunZ4fOxvc=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
Expand All @@ -429,8 +431,6 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
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/stellar/go-stellar-sdk v0.7.2 h1:LTO860ulPKRmsKgxGTAf8APL2nFtVvRKClhw2unGhyY=
github.com/stellar/go-stellar-sdk v0.7.2/go.mod h1:YTYl7/zFt7oIX5Y4WRgL+3d2upWQDLywlHunZ4fOxvc=
github.com/stellar/go-xdr v0.0.0-20260806060815-dc590f17552a h1:40YIhQusSioBKDW5Tr+YdjoXphcVeu7eXUS2ibMQBTs=
github.com/stellar/go-xdr v0.0.0-20260806060815-dc590f17552a/go.mod h1:If+U9Z1W5xU97VrOgJandQT+2dN7/iOpkCrxBJEyF80=
github.com/stellar/throttled v2.2.3-0.20190823235211-89d75816f59d+incompatible h1:jMXXAcz6xTarGDQ4VtVbtERogcmDQw4RaE85Cr9CgoQ=
Expand Down
2 changes: 1 addition & 1 deletion internal/ingest/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ import (
const (
// MaxSupportedProtocolVersion defines the maximum supported version of
// the Stellar protocol.
MaxSupportedProtocolVersion uint32 = 28
MaxSupportedProtocolVersion uint32 = 29

// CurrentVersion reflects the latest version of the ingestion
// algorithm. This value is stored in KV store and is used to decide
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,9 +1,23 @@
{
"02426fcd1b6a0dbe" : "sponsor_future_reserves-protocol_version_28-already_sponsored",
"124577e8c014e46f" : "sponsor_future_reserves-protocol_version_28-add_sponsored_entry_before_adding_first_sponsored_signer",
"17846470c1f6514e" : "sponsor_future_reserves-protocol_version_29-add_sponsored_entry_before_adding_first_sponsored_signer",
"2f7cc6c5797d6418" : "sponsor_future_reserves-protocol_version_28-sponsorships_with_precondition_that_uses_v3_extension",
"370cbe2630300593" : "sponsor_future_reserves-protocol_version_29-sponsored_account_is_sponsoring",
"3b6d924921f59f9f" : "sponsor_future_reserves-protocol_version_26-add_sponsored_entry_before_adding_first_sponsored_signer",
"3ca9bd46788ce395" : "sponsor_future_reserves-protocol_version_28-sponsoring_account_is_sponsored",
"3cb8cdd0c21fcfb1" : "sponsor_future_reserves-protocol_version_26-sponsoring_account_is_sponsored",
"3e67985b8288fe60" : "sponsor_future_reserves-protocol_version_29-sponsorships_with_precondition_that_uses_v3_extension",
"476ba4fadb58a1ac" : "sponsor_future_reserves-protocol_version_28-success",
"507604981827c989" : "sponsor_future_reserves-protocol_version_26-already_sponsored",
"55fe0b9b963a80eb" : "sponsor_future_reserves-protocol_version_29-success",
"5a61e6aac9038144" : "sponsor_future_reserves-protocol_version_26-success",
"9a006fdecc334584" : "sponsor_future_reserves-protocol_version_29-bad_sponsorship",
"9bc0a679d6d62183" : "sponsor_future_reserves-protocol_version_26-bad_sponsorship",
"aec15f4898b342da" : "sponsor_future_reserves-protocol_version_28-sponsored_account_is_sponsoring",
"cfce0d762a751c3f" : "sponsor_future_reserves-protocol_version_29-already_sponsored",
"e55c615e3d4d0fb9" : "sponsor_future_reserves-protocol_version_26-sponsored_account_is_sponsoring",
"e9b0303fe49e8211" : "sponsor_future_reserves-protocol_version_26-sponsorships_with_precondition_that_uses_v3_extension"
"e657a64b555a35d5" : "sponsor_future_reserves-protocol_version_28-bad_sponsorship",
"e9b0303fe49e8211" : "sponsor_future_reserves-protocol_version_26-sponsorships_with_precondition_that_uses_v3_extension",
"f67dddbf03bfbdf7" : "sponsor_future_reserves-protocol_version_29-sponsoring_account_is_sponsored"
}
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"6f12ba9dcc4d94b5" : "minSeqAge_under_sub-second_ledgers-whole-second_ledger_one_second_later-_age_requirement_met",
"ec87ead884eb240e" : "minSeqAge_under_sub-second_ledgers-sub-second_ledger_in_the_same_whole_second-_age_still_0"
}
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"485fad410224186e" : "claimable_balance_absBefore_under_sub-second_ledgers-claim_in_the_next_second_fails",
"c7f98e15890f11ba" : "claimable_balance_absBefore_under_sub-second_ledgers-claim_within_the_same_second_succeeds"
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
3 changes: 3 additions & 0 deletions internal/ingest/testdata/test-lcms/HerderTests/index.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"370dd5e0af5cfa8d" : "network_externalizes_empty-tx-set_on_missing_value"
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading
Loading