You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Leave the impl for BlockHeader (which is used by the functionary in a
couple of places) (though I'd also like to delete this), the impls for
the hash types (which are manually implemented and have regression
tests), and the confidential stuff (which are also manually implemented
and fairly straightforward).
But for Transaction and PSET these impls are untenable. They are:
* based on serde-derives (though 'manually' through the serde_struct_impl
macro) of extremely complicated and fragile types, exposing implementation
details and probably bypassing invariants on deserialization
* not specified or documented anywhere
* have very poor error messages on deserialization
* not tested anywhere (not a single test broke with this change!!)
If people are depending on these, we should provide some sort of compat
crate/module. We can wait until they are trying to upgrade rust-elements
and file complaints to do this. I'm skeptical that anybody *is*, given
the above problems, at least not on purpose.
If people want serde impls but don't need backward compatibility, we
can provide that via the bitcoin-consensus-encoding crate, which will
have general-purpose "serde-encode consensus objects in hex/bytes"
adaptors in an upcoming version.
0 commit comments