github stellar/go horizon-v2.17.0
Horizon v2.17.0

This is a promotion of the v2.17.0 release candidate with two additional changes. The following changelog summarizes changes since the last stable version, v2.16.1.

Upgrading to this version from <= v2.8.3 will trigger a state rebuild. During this process (which will take at least 10 minutes), Horizon will not ingest new ledgers.

New features

Support for Protocol 19 (4340):

  • Account records can now contain two new, optional fields:
    "sequence_ledger": 0, // uint32 ledger number
    "sequence_time": "0"  // uint64 unix time in seconds, as a string

The absence of these fields indicates that the account hasn't taken any actions since prior to the Protocol 19 release. Note that they'll either be both present or both absent.

  • Transaction records can now contain the following optional object:
    "preconditions": {
      "timebounds": {
        "min_time": "0",  // uint64 unix time in seconds, as a string
        "max_time": "0"   // as above
      },
      "ledgerbounds": {
        "min_ledger": 0,  // uint32 ledger number
        "max_ledger": 0   // as above
      },
      "min_account_sequence": "0",          // int64 sequence number, as a string
      "min_account_sequence_age": "0",      // uint64 unix time in seconds, as a string
      "min_account_sequence_ledger_gap": 0, // uint32 ledger count

      "extra_signers": [] // list of signers as StrKeys
    }

All of the top-level fields within this object are also optional. However, the "ledgerbounds" object will always have at least its min_ledger field set.

Note that the existing "valid_before_time" and "valid_after_time" fields on the top-level object will be identical in value to the "preconditions.timebounds.min_time" and "preconditions.timebounds.min_time" fields, respectively, if those exist. The "valid_before_time" and "valid_after_time" fields are now considered deprecated and will be removed in Horizon v3.0.0.

DB Schema Migration

The migration makes the following schema changes:

  • adds new, optional columns to the history_transactions table related to the new preconditions
  • adds new, optional columns to the accounts table related to the new account extension
  • amends the signer column of the accounts_signers table to allow signers of arbitrary length

This migration does not back-fill, so it should execute quickly.

Deprecations

The following fields on transaction records have been deprecated and will be removed in a future version:

  • "valid_before" and "valid_after"

These fields are now represented by preconditions.timebounds.min_time and preconditions.timebounds.max_time as strings that are int64 UNIX timestamps in seconds.

Full Diff: horizon-v2.16.1...horizon-v2.17.0
Full Changelog: services/horizon/CHANGELOG.md

Don't miss a new go release

NewReleases is sending notifications on new releases.