I'll need more time to actually review this, but it's clear that the API is not what you'd expect.
IBD testing done
update per my last comment; we can't properly test 64 byte ECDSA here,
but we can test the multisig length check banning.
Discussions with @Fabien make it clear that this is pretty ugly behaviour, and I've forwarded this problem to Core to see if they have some solutions in mind. https://github.com/bitcoin/bitcoin/issues/16220
add TODO comments to aid in clean backporting one day (when Core figures out
how they want to fix this)
Add an exception for the crypto/ctaes/ctaes.c include in crypto.aes.cpp.
This is a 5% performance increase, not a regression. Anyway, I discard it.
keep functional test same name to allow diff to show properly
Removed #include <amount.h> from core_io.h and changed ValueFromAmount() to pass amount by value rather than pass by reference.
developer notes are missing.
(Also I find it a bit odd that we have a known error that triggers UNKNOWN_ERROR (this is because it works by throwing an exception instead of doing the usual s_error mechanism). Would be good to make it clearer, but that can be a separate diff.)
Removed extra include in core_write.cpp and bracketed include in core_io.h.
Fri, Jun 14
You prevent any inlining here. This is why you get 5% perf regression. Don't do this.
- Added sanity checks at various steps in the seed updating process
- Added basic error checking
- Added ability to skip one set of seeds if it fails
Calculate descendant maximum thoroughly
This was the state of Core when this backport was landed: https://github.com/instagibbs/bitcoin/blob/666597798c07d9df06681be63d2b2f51f0d5ca8a/src/wallet/rpcwallet.cpp
The important point to note is the array on line 2997. The difference from our code right now comes from an out of order backport here: https://reviews.bitcoinabc.org/D1986. The original PR for D1986 was landed in Core on March 22, 2018. The PR for this patch was originally landed in Core on March 1, 2017.
Core does not have getlabeladdress, getreceivedbylabel, listreceivedbylabel, setlabel. Reading some of the discussion related to this PR (https://github.com/bitcoin/bitcoin/pull/9894, https://github.com/bitcoin/bitcoin/pull/11536, and https://github.com/bitcoin/bitcoin/pull/12892), it appears the RPCs went from label to account in Core:
Don't filter c files.
I ran the benchmark from D3341 and get the following results:
- There is no obvious performance difference using Clang 6.0.0
- There is a low performance improvement with GCC 7.4.0 (~5%)