Background
Protocol 26 includes 6 CAPs that introduce new ledger behavior, host functions, and network config changes. This epic tracks work needed to ensure Hubble captures the new data correctly and existing models don't silently break.
XDR changes
XDR changes applied in go-stellar-sdk
CAPs in scope:
- CAP-73 — SAC can now create trustlines and G-accounts via XLM transfer
- CAP-77 — Validator vote can freeze specific ledger keys
- CAP-78 — Contracts can cap their own TTL extension limit
- CAP-79 — New host functions to convert strkey strings ↔ Address/MuxedAddress objects
- CAP-80 — BN254 MSM + modular arithmetic host functions (ZK prover building blocks)
- CAP-82 — Checked (overflow-safe) variants of 256-bit integer arithmetic host functions
CAP-73 — SAC G-account & trustline creation
SAC can now create classic accounts and trustlines entries as a side effect of a contract transfer, not just via create_account / change_trust ops. Existing processors may silently miss these or misattribute them.
account and trustline entries from SACs are the same as existing account and trustline entires (in theory)
In theory there won't be any code changes for this CAP
In testnet/mainnet, confirm the above is true
CAP-77 — Frozen ledger keys (code changes to config_settings)
Frozen keys are distinct from evicted keys — they're inaccessible by validator governance, not TTL expiry. Need to make sure we don't conflate them in the data model.
There are new result codes/errors for when a frozen entry accessed.
The list of frozen keys will be held within config_settings as seen in the XDR changes. The generated xdr changes can be seen in go-stellar-sdk protocol-next branch
CAP-78 — Max TTL extension cap
Low-risk but affects TTL analytics semantics. In theory there is no code change needed for this
CAP-79 — Strkey host functions
Mostly a dev ergonomics change. Low data risk but decoded fields may look different.
New host functions added. Can be checked the same way as in CAP-78 above
CAP-80 — BN254 MSM + modular arithmetic
No new ledger entry types. Mainly a cost model and volume watch item.
No code changes. No downstream impact in dbt/omni
CAP-82 — Checked 256-bit arithmetic
Minimal impact. New error codes may appear in failed transactions.
No code changes
New host functions added. Can be checked the same way as in CAP-78 above. I doubt we'd need to check these host functions though
Upgrade checklist
Background
Protocol 26 includes 6 CAPs that introduce new ledger behavior, host functions, and network config changes. This epic tracks work needed to ensure Hubble captures the new data correctly and existing models don't silently break.
XDR changes
XDR changes applied in go-stellar-sdk
CAPs in scope:
CAP-73 — SAC G-account & trustline creation
SAC can now create classic
accountsandtrustlinesentries as a side effect of a contract transfer, not just viacreate_account/change_trustops. Existing processors may silently miss these or misattribute them.account and trustline entries from SACs are the same as existing account and trustline entires (in theory)
In theory there won't be any code changes for this CAP
In testnet/mainnet, confirm the above is true
TransformAccount: verify it ingestsledger_entry_change = 0(Created) entries regardless of originating op typeTransformSignersTransformTrustlineaccountsandtrustlinesrows created this way have correctledger_entry_change,last_modified_ledger, andsponsorvalues populatedhistory_contract_events— confirm SAC transfer events that spawn classic entries are captured and the causal chain is intact (note onlytransferevents emit events. Trustline creation does not emit an event)create_accountop orchange_trustop)CAP-77 — Frozen ledger keys (code changes to config_settings)
Frozen keys are distinct from evicted keys — they're inaccessible by validator governance, not TTL expiry. Need to make sure we don't conflate them in the data model.
There are new result codes/errors for when a frozen entry accessed.
The list of frozen keys will be held within config_settings as seen in the XDR changes. The generated xdr changes can be seen in go-stellar-sdk protocol-next branch
config_settingsto handle new frozen keys within theConfigSettingEntrystructCAP-78 — Max TTL extension cap
Low-risk but affects TTL analytics semantics. In theory there is no code change needed for this
parameterscolumn inhistory_operationsas seen in the operations transform codeCAP-79 — Strkey host functions
Mostly a dev ergonomics change. Low data risk but decoded fields may look different.
New host functions added. Can be checked the same way as in CAP-78 above
topics_decodedanddata_decodedinhistory_contract_eventspost-upgrade — addresses may now appear as G.../M.../C... strings rather than raw bytes in contracts using these host functionskey_decoded/value_decodedincontract_dataMuxedAddressObjecthost object type introduced alongside thisCAP-80 — BN254 MSM + modular arithmetic
No new ledger entry types. Mainly a cost model and volume watch item.
No code changes. No downstream impact in dbt/omni
CAP-82 — Checked 256-bit arithmetic
Minimal impact. New error codes may appear in failed transactions.
No code changes
New host functions added. Can be checked the same way as in CAP-78 above. I doubt we'd need to check these host functions though
Upgrade checklist