elements/src/rpc
W. J. van der Laan 95d19f8c1a
Merge bitcoin/bitcoin#16807: Let validateaddress locate error in Bech32 address
88cc481092 Modify copyright header on Bech32 code (Samuel Dobson)
5599813b80 Add lots of comments to Bech32 (Samuel Dobson)
2eb5792ec7 Add release notes for validateaddress Bech32 error detection (MeshCollider)
42d6a029e5 Refactor and add more tests for validateaddress (Samuel Dobson)
c4979f77c1 Add boost tests for bech32 error detection (MeshCollider)
02a7bdee42 Add error_locations to validateaddress RPC (Samuel Dobson)
b62b67e06c Add Bech32 error location function (Samuel Dobson)
0b06e720c0 More detailed error checking for base58 addresses (Samuel Dobson)

Pull request description:

  Addresses (partially) #16779 - no GUI change in this PR

  Adds a LocateError function the bech32 library, which is then called by `validateaddress` RPC, (and then eventually from a GUI tool too, future work). I think modifying validateaddress is nicer than adding a separate RPC for this.
  Includes tests.

  Based on https://github.com/sipa/bech32/blob/master/ecc/javascript/bech32_ecc.js
  Credit to sipa for that code

ACKs for top commit:
  laanwj:
    Code review and manually tested ACK 88cc481092
  ryanofsky:
    Code review ACK 88cc481092 with caveat that I only checked the new `LocateErrors` code to try to verify it didn't have unsafe or unexpected operations or loop forever or crash. Did not try to verify behavior corresponds to the spec. In the worst case bugs here should just affect error messages not actual decoding of addresses so this seemed ok.
  w0xlt:
    tACK 88cc481

Tree-SHA512: 9c7fe9745bc7527f80a30bd4c1e3034e16b96a02cc7f6c268f91bfad08a6965a8064fe44230aa3f87e4fa3c938f662ff4446bc682c83cb48c1a3f95cf4186688
2021-11-22 13:26:01 +01:00
..
blockchain.cpp Add filename to savemempool RPC result 2021-11-09 12:47:32 -03:00
blockchain.h doc: Fix typos in endif header comments 2021-11-16 09:56:45 +01:00
client.cpp Allow lockunspent to store the lock in the wallet DB 2021-09-25 23:50:06 +12:00
client.h
external_signer.cpp doc: Fix RPC result documentation 2021-09-21 11:13:29 +02:00
mining.cpp doc: Fix incorrect C++ named args 2021-11-17 09:25:14 +01:00
mining.h rpc: create rpc/mining.h, hoist default max tries values to constant 2020-06-01 15:08:36 +02:00
misc.cpp Add error_locations to validateaddress RPC 2021-10-12 12:03:14 +13:00
net.cpp net: don't skip CJDNS from GetNetworksInfo() 2021-11-03 14:58:49 +01:00
net.h refactor: Add and use EnsureConnman in rpc code 2021-04-19 13:04:23 +02:00
protocol.h rpc: Add specific error code for "wallet already loaded" 2021-01-25 07:55:35 +01:00
rawtransaction.cpp doc: Fix incorrect C++ named args 2021-11-17 09:25:14 +01:00
rawtransaction_util.cpp [MOVEONLY] consensus: move amount.h into consensus 2021-09-30 07:41:57 +08:00
rawtransaction_util.h Change SignTransaction's input_errors to use bilingual_str 2021-07-01 12:57:53 -04:00
register.h Move external signer out of wallet module 2021-04-08 17:56:00 +02:00
request.cpp refactor: Block unsafe fs::path std::string conversion calls 2021-10-05 11:10:47 -04:00
request.h Drop JSONRPCRequest constructors after #21366 2021-04-07 04:53:26 -04:00
server.cpp refactor: Block unsafe fs::path std::string conversion calls 2021-10-05 11:10:47 -04:00
server.h [MOVEONLY] consensus: move amount.h into consensus 2021-09-30 07:41:57 +08:00
util.cpp [MOVEONLY] consensus: move amount.h into consensus 2021-09-30 07:41:57 +08:00
util.h refactor: Remove useless extern keyword 2021-05-10 09:09:24 +02:00