The doc of `Transaction::deserialize_with_legacy_asset_lock_framing` said
it is for callers that must keep accepting "the asset locks that earlier
releases of this crate accepted". That overstates it. Releases up to
v0.44.0 also read a type 8 payload below version 3, and this decoder
sends type 8 below version 3 to `deserialize`, as Dash Core reads no
payload there. A maintainer told that the framing must never change
could read the old sentence as a reason to restore that.
The doc now states the gate (type 8 at a version of at least 3 as an
`i16`, and type 8 below it goes to `deserialize`), says it keeps the
payload framing of earlier releases, says it is not deprecated because
its callers have nothing to move to, names the state transition
signature, and says which shared decoders it still relies on.
No code change.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Doc-only follow-up to #1167. It makes the doc of
Transaction::deserialize_with_legacy_asset_lock_framingmatch what the function does.The problem
The doc said the function is for callers that must keep accepting "the asset locks that earlier releases of this crate accepted". That overstates it:
i16, which is where Dash Core reads a payload. Type 8 below version 3 goes todeserialize.A maintainer told that the framing must never change could read the old sentence as a reason to restore
version != 0.The change
In
dash/src/blockdata/transaction/legacy_asset_lock.rs, comments only:deserialize;The version 1/2 gap
This doc only describes the gap; it changes nothing about it. Platform binaries on pins before #1155 read type 8 at version 1 or 2 as an asset lock, and this decoder does not. The independent review of dashpay/platform#5403, which uses the same gate, covered this case: Dash Core never ChainLocks or InstantSend-locks such a transaction, so every pin refuses such a proof unpaid.
Testing
No code change.
cargo fmt --all -- --check,RUSTDOCFLAGS=-D warnings cargo doc -p dashcore --all-features --no-depsand the 46 tests indash/tests/legacy_asset_lock.rspass.🤖 Generated with Claude Code
Summary by CodeRabbit
PR Hygiene ·
6ab586e/self-revieweddash/src/blockdata/transaction/legacy_asset_lock.rs) — QuantumExplorer or ZocoLini or xdustinfaceWhen every merge requirement is met, the
PR Hygienecheck passes. Reviewer limits do not block merging; other required GitHub checks and protections still apply.