Commit Graph

15499 Commits

Author SHA1 Message Date
str4d 4b5111f48b
Merge pull request #5284 from adityapk00/taddr_fix
Sort taddr txns by txindex in addition to height
2021-09-03 11:48:18 +01:00
Aditya Kulkarni 89c449aa51 Sort taddr txns by txindex in addition to height 2021-09-02 10:34:51 -07:00
str4d 2cee089697
Merge pull request #5283 from str4d/fix-v5-tx-format
Fix v5 transaction format
2021-09-02 03:23:44 +01:00
str4d 64bb89d5ce
Merge pull request #5286 from str4d/dependabot-actions
CI: Add Dependabot config to keep Actions up-to-date
2021-09-01 15:13:35 +01:00
Jack Grigg 0728c0958a CI: Add Dependabot config to keep Actions up-to-date 2021-09-01 01:08:05 +01:00
Jack Grigg 7896a52015 test: Use correct field of getnetworkinfo to read protocol version
I tested the NU5 components of this PR by locally setting the protocol
version to 170014. I forgot to check that without that override, the
test would skip the NU5 checks. The reason it defaulted to NU5 is that
the test was reading the client version 4040150, which is indeed not
less than the NU5 protocol version ^_^;;
2021-09-01 01:00:26 +01:00
str4d df6574b07d
Merge pull request #5280 from nuttycom/bug/set_best_chain_wallet_lock
Lock the wallet in SetBestChainINTERNAL
2021-08-31 21:46:09 +01:00
str4d 75d78b70d1
Fix typos
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2021-08-31 19:56:25 +01:00
Marshall Gaucher 4d999dd66d
Merge pull request #5279 from str4d/ci-lints
Tweaks to CI lints
2021-08-30 19:50:08 -07:00
Jack Grigg f270449441 Parse consensus branch ID when reading v5 transaction format 2021-08-28 00:44:22 +01:00
Jack Grigg 3c826db594 Separate the consensus and internal consistency checks for branch ID 2021-08-28 00:44:22 +01:00
Jack Grigg 5670111880 Print `nConsensusBranchId` in `CTransaction::ToString` 2021-08-28 00:44:22 +01:00
Jack Grigg 804a99a93a builder: Generate v5 transactions from NU5 activation 2021-08-28 00:44:22 +01:00
Jack Grigg 4c1c5f479d test: Add NU5 test cases to existing RPC tests 2021-08-27 15:31:04 +01:00
Kris Nuttycombe eb4c538dcc Lock the wallet in SetBestChainINTERNAL
This mitigates a potential race condition between mutation of
`mapWallet` and writes to the wallet database that can result
in the state of the databse becoming inconsistent with the in-memory
set of transactions.
2021-08-25 11:46:58 -06:00
Homu a496afd9c2 Auto merge of #5251 - nuttycom:manual_incrementalmerkletree_ser, r=str4d
Use manual serialization for Merkle frontiers rather than bincode.
2021-08-24 23:23:34 +00:00
Kris Nuttycombe b8e86ddc44 Fix clippy complaints. 2021-08-24 09:54:01 -06:00
Kris Nuttycombe a61318ec85 Use manual serialization for Merkle frontiers rather than bincode. 2021-08-24 09:47:04 -06:00
Jack Grigg 91bcb3dfa5 lint: Add missing include guards 2021-08-24 16:06:53 +01:00
Jack Grigg 41efe647de lint: remove duplicate include 2021-08-24 16:05:55 +01:00
Jack Grigg ba7aaf1e7c CI: Ignore errors from general lints we don't yet have passing
Once we have made the necessary backports or changes to get these lints
to pass, we can remove the corresponding ignores to prevent regression.
2021-08-24 16:02:34 +01:00
Homu 4e93c62368 Auto merge of #5266 - daira:zip339, r=daira
ZIP 339 support

Depends on https://github.com/zcash/librustzcash/pull/424 .

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2021-08-23 20:41:11 +00:00
Daira Hopwood fc3ea09b89 Avoid need to cast away const in the C caller of zip339_free_phrase.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2021-08-20 02:41:56 +01:00
Daira Hopwood ac54e56665 Update unified address test data to take account of HRPs in padding (https://github.com/zcash/librustzcash/pull/419).
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2021-08-19 21:07:53 +01:00
Daira Hopwood 5475b17ae9 Cargo.toml: use librustzcash after the merge of https://github.com/zcash/librustzcash/pull/424 .
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2021-08-19 21:07:53 +01:00
Homu cf9a0799b4 Auto merge of #5275 - str4d:zip-239-prep-4, r=str4d
ZIP 239 preparations 4

Cherry-picked from the following upstream PRs:
- bitcoin/bitcoin#5913
  - Replaces zcash/zcash#3111.
  - Includes an extra commit included by upstream in the merge outside the PR.
- bitcoin/bitcoin#6519
- bitcoin/bitcoin#7179
- bitcoin/bitcoin#7853
- bitcoin/bitcoin#7960
2021-08-17 18:34:39 +00:00
Jack Grigg e0f210f4fc test: Fix pyflakes warnings 2021-08-17 18:50:54 +01:00
Homu 56b5f95897 Auto merge of #5274 - str4d:zip-239-prep-3, r=str4d
ZIP 239 preparations 3

Cherry-picked from the following upstream PRs:
- bitcoin/bitcoin#8080
- bitcoin/bitcoin#8082
- bitcoin/bitcoin#8126
- bitcoin/bitcoin#7910
  - This is the unsquashed version of bitcoin/bitcoin#8149
  - We take three cleanup commits to the protocol / `CInv` code.
- bitcoin/bitcoin#8822
- bitcoin/bitcoin#8880
  - Excluding the first commit (we don't have the comment it fixes yet).
- bitcoin/bitcoin#19322
2021-08-17 17:19:24 +00:00
Homu 88d8867381 Auto merge of #5278 - daira:boost-download-url, r=str4d
Update URL for Boost source download (from dl.bintray.com to boostorg.jfrog.io)

Co-authored-by: Taylor Hornby <taylor@electriccoin.co>
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2021-08-17 10:22:25 +00:00
Daira Hopwood 49d4bccf51 Update URL for Boost source download (from dl.bintray.com to boostorg.jfrog.io).
Co-authored-by: Taylor Hornby <taylor@electriccoin.co>
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2021-08-16 21:10:54 +01:00
Daira Hopwood 52ed61157f ZIP 339 support.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2021-08-13 21:09:35 +01:00
Jack Grigg 1e352c108c test: Print reject reason if RPC test block rejected instead of accepted 2021-08-13 16:49:46 +01:00
Suhas Daftuar d477208a28 Only use AddInventoryKnown for transactions
filterInventoryKnown is only used when relaying transactions,
so stop adding block hashes to the filter.

(cherry picked from commit bitcoin/bitcoin@383fc10ebb)

Zcash: Excludes comment change, as bitcoin/bitcoin#7129 has not been
backported  yet.
2021-08-13 16:49:46 +01:00
MarcoFalke b67c86abdb [qa] py2: Unfiddle strings into bytes explicitly
(cherry picked from commit bitcoin/bitcoin@faa41ee204)

Zcash: Excluding RPC tests or framework code we don't have.
2021-08-13 16:49:46 +01:00
Wladimir J. van der Laan d9cb6b89b0 test: Add basic test for `reject` code
Extend P2P test framework to make it possible to expect reject
codes for transactions and blocks.

(cherry picked from commit bitcoin/bitcoin@20411903d7)
2021-08-13 16:49:46 +01:00
Wladimir J. van der Laan 873c6c1295 net: Fix sent reject messages for blocks and transactions
Ever since we #5913 have been sending invalid reject messages
for transactions and blocks.

(cherry picked from commit bitcoin/bitcoin@9fc6ed6003)
2021-08-13 16:24:09 +01:00
Wladimir J. van der Laan 25e125a5d3 Move mempool rejections to new debug category
Move mempool rejections to debug category `mempoolrej`, to make it possible
to show them without enabling the entire category `mempool` which is
high volume.

(cherry picked from commit bitcoin/bitcoin@7f1f8f5edf)
2021-08-13 16:24:09 +01:00
Wladimir J. van der Laan 7c6f2c5da6 Add information to errors in ConnectBlock, CheckBlock
Add detailed state information to the errors, as it is no longer being
logged downstream.

Also add the state information to mempool rejection debug message in
ProcessMessages.

(cherry picked from commit bitcoin/bitcoin@66daed5e1b)
2021-08-13 16:24:09 +01:00
Wladimir J. van der Laan abdef34b33 Remove most logging from transaction validation
Remove unnecessary direct logging in CheckTransaction,
AcceptToMemoryPool, CheckTxInputs, CScriptCheck::operator()

All status information should be returned in the CValidationState.
Relevant debug information is also added to the CValidationState using
the recently introduced debug message.

Do keep the "BUG! PLEASE REPORT THIS! ConnectInputs failed against MANDATORY but not STANDARD flags"
error as it is meant to appear as bug in the log.

(cherry picked from commit bitcoin/bitcoin@6cab808272)
2021-08-13 16:24:09 +01:00
Wladimir J. van der Laan 3a5474e3f3 Add function to convert CValidationState to a human-readable message
It is necessary to be able to concisely log a validation state.
Convert CValidationState to a human-readable message for logging.

(cherry picked from commit 9003c7cdd88402986e48ec126258fc10d6742fc7)
2021-08-13 16:24:09 +01:00
Wladimir J. van der Laan aa97bd1c60 Introduce REJECT_INTERNAL codes for local AcceptToMempool errors
Add status codes specific to AcceptToMempool procession of transactions.
These can never happen due to block validation, and must never be sent
over the P2P network. Add assertions where appropriate.

(cherry picked from commit bitcoin/bitcoin@dc58258adf)
2021-08-13 16:24:09 +01:00
Wladimir J. van der Laan 36c70c01a1 Add debug message to CValidationState for optional extra information
Add a field `strDebugMessage` which can be passed to DoS or Invalid,
and queried using GetDebugMessage() to add extra troubleshooting
information to the validation state.

(cherry picked from commit bitcoin/bitcoin@fbf44e6f3e)
2021-08-13 16:24:09 +01:00
Wladimir J. van der Laan e65733e032 Add assertion and cast before sending reject code
This gets rid of a warning. Add an assertion to make sure that the
reject code is in the correct range for the network protocol
(if it is outside the range it must be a bug)

(cherry picked from commit bitcoin/bitcoin@5922b6774e)
2021-08-13 16:09:59 +01:00
Shaul Kfir 55d4948207 Add absurdly high fee message to validation state (for RPC propagation)
(cherry picked from commit bitcoin/bitcoin@a651403e09)
2021-08-13 16:09:59 +01:00
John Newbery 8469683eb6 [net] split PushInventory()
PushInventory() is currently called with a CInv object, which can be a
MSG_TX or MSG_BLOCK. PushInventory() only uses the type to determine
whether to add the hash to setInventoryTxToSend or
vInventoryBlockToSend.

Since the caller always knows what type of inventory they're pushing,
the CInv is wastefully constructed and thrown away, and tx/block relay
is being split out, we split the function into PushTxInventory() and
PushBlockInventory().

(cherry picked from commit bitcoin/bitcoin@f52d403b81)

Zcash: Adjusted to account for bitcoin/bitcoin#15759 not having been
backported.
2021-08-13 15:42:04 +01:00
Wladimir J. van der Laan 85a87aa679 protocol.h: Make enums in GetDataMsg concrete values
This concretizes the numbers and adds a comment to make it clear that
these numbers are fixed by the protocol, and may avoid people forgetting
to claim numbers in the future (e.g. issue #8500).

Also gets rid of a weird unused `MSG_TYPE_MAX` in the middle of the
enumeration (thanks @paveljanik for noticing).

(cherry picked from commit bitcoin/bitcoin@1df311118d)
2021-08-13 15:42:04 +01:00
Wladimir J. van der Laan 68453f5b15 protocol.h: Move MESSAGE_START_SIZE into CMessageHeader
Also move the enum to the top, and remove a deceptive TODO
comment.

(cherry picked from commit bitcoin/bitcoin@2c09a5209a)
2021-08-13 15:42:04 +01:00
Wladimir J. van der Laan 56115ccc3c net: Hardcode protocol sizes and use fixed-size types
The P2P network uses a fixed protocol, these sizes shouldn't change
based on what happens to be the architecture.

(cherry picked from commit bitcoin/bitcoin@305087bdf6)
2021-08-13 15:42:04 +01:00
Wladimir J. van der Laan e5bef4962b net: Consistent checksum handling
In principle, the checksums of P2P packets are simply 4-byte blobs which
are the first four bytes of SHA256(SHA256(payload)).

Currently they are handled as little-endian 32-bit integers half of the
time, as blobs the other half, sometimes copying the one to the other,
resulting in somewhat confused code.

This PR changes the handling to be consistent both at packet creation
and receiving, making it (I think) easier to understand.

(cherry picked from commit bitcoin/bitcoin@41e58faf04)
2021-08-13 15:42:04 +01:00
Alex Morcos 6d8962b055 tidy up CInv::GetCommand
(cherry picked from commit sipa/bitcoin@97d7402c2c)
2021-08-13 15:42:04 +01:00