Repository navigation
Conversation
|
Suggested fix: add I did NOT change this. It predates CAP-0088, and CAP-0088 scope requires |
Adds the SC_ADDRESS_TYPE_MUXED_CONTRACT arm of SCAddress. Also picks up the widened contract spec name limits from upstream.
Adds the W... muxed contract strkey (vectors from rs-stellar-strkey@80085faa) and handles the new ScAddress arm in String() and Equals().
Match stellar-core stellar#5472's protocol-curr/xdr. Only CAP-0087 ifdef'd cost types differ from 01741cb6, and they stay disabled.
Contract balances aren't derivable from contractData, so C... holders were already skipped; W... addresses are contracts too.
A CAP-0084 muxed contract destination is recorded on contract_credited the way account_muxed/account_muxed_id record a muxed account.
stellar-xdr main ungates CAP-0084, CAP-0087 and CAP-0088 (stellar#319, stellar#320, stellar#321), so XDR_FEATURES is now empty. This brings in the CAP-0088 millisecond close-time StellarValue arms, without which no ledger after the P30 upgrade decodes, and the CAP-0087 ML-DSA cost types. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The 'bad checksum' W vector differed from a valid address only in the unused padding bit, so it was rejected as non-canonical before the CRC was checked. Keep it as a non-canonical case and add a vector with a real CRC mismatch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A SAC transfer to a muxed destination (CAP-0067 M, CAP-0084 W) carries
{amount, to_muxed_id} as its data. parseBalanceChangeEvent only accepted a
bare i128 and, because an earlier assignment had cleared err, returned a
zero amount with a nil error. Read the amount from the map form and return
ErrNotBalanceChangeEvent when there is no amount.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
NodeID and Signature read only the SIGNED arm. Read the signature from the CAP-0088 millisecond arms (SIGNED_MS, EMPTY_TX_SET_MS), which every ledger after the Protocol 30 upgrade uses, and from the CAP-0083 EMPTY_TX_SET arm, which was previously missed so empty ledgers returned an error. Based on stellar#5998, rebased onto the stellar-xdr@4f524bba regeneration and renamed to the upstream TimePointMs type. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Changes
ingest/ledger:NodeIDandSignatureread the close-value signature from every signedStellarValuearm:STELLAR_VALUE_SIGNED_MSandSTELLAR_VALUE_EMPTY_TX_SET_MS, which every ledger after the Protocol 30 upgrade usesSTELLAR_VALUE_EMPTY_TX_SET(CAP-0083), which was previously missed, so ledgers closed with an empty transaction set returned an error and no signatureCloseTimeand its consumers are unchanged; no millisecond fields are exposed.The XDR regeneration this PR originally carried (stellar-xdr
03cbf40c,XDR_FEATURES=MS_CLOSE_TIME,TimePointMilliseconds) is replaced by #6015's regeneration from stellar-xdr4f524bba. That commit ungates CAP-0088 and uses the upstreamTimePointMsname.Stacked on #6015; shows its commits until it merges.
Out-of-scope observations
ingest/ledger/ledger_test.goledgerTestInput()setsGeneralizedTransactionSet{V: 0}, an invalid discriminant, so the fixture cannot be marshalled. Not fixed here; the tests exerciseNodeID/Signaturedirectly and round-tripScpValuealone.