Background
Protocol 28 has three CAPs under consideration (final inclusion decision expected 7/28 per the P28 timeline). This epic tracks the work needed to ensure Hubble decodes the new XDR correctly and existing models/processors don't silently break or drop data.
CAP-0083 — Vote to drop the transaction set (Accepted)
CAP-0085 — Externally managed contract executables (Final Comment Period)
CAP-0086 — Sparse map host functions (Final Comment Period; At Risk for not Making Scope)
Slack: #protocol-28
Update 7/28: CAP-0084 (muxed contract addresses) will not be ready for Protocol 28 and has been removed from this epic. It does not block crossmint/mgi (Slack announcement).
Impact summary: CAP-0083 and CAP-0086 should be no-ops (though please confirm that we don't parse the transaction set); CAP-0085 incurs minor changes with a new ContractExecutable and SCVal type.
XDR Impact
New types/arms across the three CAPs:
StellarValueType gains STELLAR_VALUE_EMPTY_TX_SET = 2, a new ext arm on StellarValue (proposedValue struct) in LedgerHeader.scpValue (CAP-0083)
ContractExecutableType gains CONTRACT_EXECUTABLE_EXTERNAL_REF = 2 with new ContractExecutableExternalRef struct; SCValType gains SCV_EXECUTABLE_TAG = 22 with SCString payload (CAP-0085)
- CAP-0086 has no XDR changes (new host functions only)
Primary risk: any code path that XDR-decodes LedgerCloseMeta, an SCVal, or a contract instance entry will error on the new union arms unless the SDK is bumped. Everything else is verification.
Upgrade checklist
Background
Protocol 28 has three CAPs under consideration (final inclusion decision expected 7/28 per the P28 timeline). This epic tracks the work needed to ensure Hubble decodes the new XDR correctly and existing models/processors don't silently break or drop data.
CAP-0083 — Vote to drop the transaction set (Accepted)
CAP-0085 — Externally managed contract executables (Final Comment Period)
CAP-0086 — Sparse map host functions (Final Comment Period; At Risk for not Making Scope)
Slack: #protocol-28
Update 7/28: CAP-0084 (muxed contract addresses) will not be ready for Protocol 28 and has been removed from this epic. It does not block crossmint/mgi (Slack announcement).
Impact summary: CAP-0083 and CAP-0086 should be no-ops (though please confirm that we don't parse the transaction set); CAP-0085 incurs minor changes with a new
ContractExecutableandSCValtype.XDR Impact
New types/arms across the three CAPs:
StellarValueTypegainsSTELLAR_VALUE_EMPTY_TX_SET = 2, a new ext arm onStellarValue(proposedValuestruct) inLedgerHeader.scpValue(CAP-0083)ContractExecutableTypegainsCONTRACT_EXECUTABLE_EXTERNAL_REF = 2with newContractExecutableExternalRefstruct;SCValTypegainsSCV_EXECUTABLE_TAG = 22withSCStringpayload (CAP-0085)Primary risk: any code path that XDR-decodes
LedgerCloseMeta, anSCVal, or a contract instance entry will error on the new union arms unless the SDK is bumped. Everything else is verification.Upgrade checklist
go-stellar-sdkversion andgo-stellar-xdr-jsonlibraries instellar-etlstellar-dbtraw models for new fields