Commit Graph

5 Commits

Author SHA1 Message Date
niftynei
6371a49ee3 psbt: sort maps before serializing, to stabilize comparison
Our psbt input/output comparison functions use serialization to compare
the things, but if there's a map with things in it and the map isn't
sorted exactly the same, it's highly likely you'll mark an identical inputs
as different.

To fix this, we sort all the input/output maps before linearizing them.
2020-08-18 11:08:44 +09:30
niftynei
9b1b05617f psbt: use platform-independent serialization for psbt fields
portability for the win

Suggested-By: @jgriffiths
2020-08-18 11:08:44 +09:30
niftynei
973456ce23 psbt: assertion for index in bounds 2020-08-18 11:08:44 +09:30
niftynei
722fa1df6c psbt-utils: ignore the 'unknown' map for input + output comparison
There's no stable ordering on unknown serialization, so linearizing
identical but mis-ordered unknown data will lead to 'wrong' results.
Instead, we just ignore any data that's in the psbt unknown struct.

There's probably also problems here with other PSBT maps. Really, this
needs a finer grained comparison function .... fuck
2020-08-18 11:08:44 +09:30
niftynei
c0d0272eac psbt-common: shared psbt utilities
includes facilities for
  - sorting psbt inputs by serial_id
  - sorting psbt outputs by serial_id
  - adding a serial_id
  - getting a serial_id
  - finding the diffset between two psbts
  - adding a max_len to a psbt input
  - getting a max_len from a psbt input
2020-08-18 11:08:44 +09:30