aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2024-05-23p2p, bugfix: detect addnode cjdns peers in GetAddedNodeInfo()Jon Atack
Addnode (manual) peers connected to us via the cjdns network are currently not detected by CConnman::GetAddedNodeInfo(), i.e. fConnected is always false. This causes the following issues: - RPC `getaddednodeinfo` incorrectly shows them as not connected - CConnman::ThreadOpenAddedConnections() continually retries to connect them Github-Pull: #30085 Rebased-From: 684da9707040ce25d95b2954eda50b811136d92c
2024-05-23rpc: Reword SighashFromStr error messageMarcoFalke
Github-Pull: #29870 Rebased-From: fa6ab0d020d0b1492203f7eb2ccb8051812de086
2024-05-23rpc: move UniValue in blockToJSONwillcl-ark
Without explicitly declaring the move, these UniValues get copied, causing increased memory usage. Fix this by explicitly moving the UniValue objects. Used by `rest_block` and `getblock` RPC. Github-Pull: #30094 Rebased-From: b77bad309e92f176f340598eec056eb7bff86f5f
2024-05-23sign: don't assume we are parsing a sane MiniscriptAntoine Poinsot
The script provided for signature might be externally provided, for instance by way of 'finalizepsbt'. Therefore the script might be ill-crafted, so don't assume pubkeys are always 32 bytes. Thanks to Niklas for finding this. Github-Pull: #29853 Rebased-From: 4d8d21320eba54571ff63931509cd515c3e20339
2024-05-23Fix #29767, set m_synced = true after Commit()nanlour
Github-Pull: #29776 Rebased-From: bbe82c116e72ca0638751e063bf564cd1fe5c4d5
2024-04-17Throw error if invalid parameters passed to getnetworkhashps RPC endpointJameson Lopp
Github-Pull: #28554 Rebased-From: 9ac114e5cd9d8ade3a1d9f3d76a08ff59a3f1658
2024-04-17[rpc, bugfix] Enforce maximum value for setmocktimedergoegge
Github-Pull: #29869 Rebased-From: c2e0489b7125cceaeef355fc274dd8988822fff4
2024-04-17Change Luke Dashjr seed to dashjr-list-of-p2p-nodes.usLuke Dashjr
To avoid issues with DNS blacklisting, I've setup a separate domain for my DNS seed. Github-Pull: #29691 Rebased-From: 4f273ab4360c9aa72c2feb78787e1811ab58dc16
2024-03-07fuzz: restrict fopencookie usage to Linux & FreeBSDfanquake
Should fix the GCC compilation portion of #29517: https://github.com/bitcoin/bitcoin/issues/29517#issuecomment-1973573314. See also: https://www.gnu.org/software/gnulib/manual/html_node/fopencookie.html but note that FreeBSD has supported this function since 11.x. Github-Pull: #29529 Rebased-From: 312f3381a2d3a7afb7c81b4662214d4d67b4e84a
2024-03-05wallet: Avoid updating `ReserveDestination::nIndex` when ↵UdjinM6
`GetReservedDestination` fails Github-Pull: #29510 Rebased-From: 367bb7a80cc71130995672c853d4a6e0134721d6
2024-03-05p2p: Don't consider blocks mutated if they don't connect to known prev blockGreg Sanders
Github-Pull: #29524 Rebased-From: a1fbde0ef7cf6c94d4a5181f8ceb327096713160
2024-03-05[test] IsBlockMutated unit testsdergoegge
Github-Pull: #29412 Rebased-From: d8087adc7ebd4ea05dd3843e5a92e8115fd7bbcc
2024-03-05[validation] Cache merkle root and witness commitment checksdergoegge
Slight performance improvement by avoiding duplicate work. Github-Pull: #29412 Rebased-From: 1ec6bbeb8d27d31647d1433ccb87b362f6d81f90
2024-03-05[net processing] Don't process mutated blocksdergoegge
We preemptively perform a block mutation check before further processing a block message (similar to early sanity checks on other messsage types). The main reasons for this change are as follows: - `CBlock::GetHash()` is a foot-gun without a prior mutation check, as the hash returned only commits to the header but not to the actual transactions (`CBlock::vtx`) contained in the block. - We have observed attacks that abused mutated blocks in the past, which could have been prevented by simply not processing mutated blocks (e.g. https://github.com/bitcoin/bitcoin/pull/27608). Github-Pull: #29412 Rebased-From: 49257c0304828a185c273fcb99742c54bbef0c8e
2024-03-05[validation] Merkle root malleation should be caught by IsBlockMutateddergoegge
Github-Pull: #29412 Rebased-From: 2d8495e0800f5332748cd50eaad801ff77671bba
2024-03-05[validation] Introduce IsBlockMutateddergoegge
Github-Pull: #29412 Rebased-From: 66abce1d98115e41f394bc4f4f52341960ddc839
2024-03-01[refactor] Cleanup merkle root checksdergoegge
Github-Pull: #29412 Rebased-From: e7669e1343aec4298fd30d539847963e6fa5619c
2024-03-01[validation] Isolate merkle root checksdergoegge
Github-Pull: #29412 Rebased-From: 95bddb930aa72edd40fdff52cf447202995b0dce
2024-02-28test: Drop `x` modifier in `fsbridge::fopen` call for mingw buildsHennadii Stepanov
The MinGW-w64 toolchain links executables to the old msvcrt C Runtime Library that does not support the `x` modifier for the _wfopen() function. Github-Pull: #29357 Rebased-From: d2fe90571e98e02617682561ea82acb1e2647827
2024-02-28rpc: keep .cookie if it was not generatedRoman Zeyde
Otherwise, starting bitcoind twice may cause the `.cookie` file generated by the first instance to be deleted by the second instance shutdown (after failing to obtain a lock). Github-Pull: bitcoin/bitcoin#28784 Rebased-From: 7cb9367157eb42ee06bc6fa024522cc14a80138d
2024-02-16qt: 26.1rc1 translations updateHennadii Stepanov
This change is a result if pulling the recent translations from the Transifex website using the bitcoin-maintainer-tools/update-translations.py tool. A few manual adjustments were made: - skipped removing of `bitcoin_af.ts` - skipped removing of `bitcoin_ar.ts` - skipped adding of `bitcoin_ru_RU.ts` (`bitcoin_ru.ts` is already present)
2024-01-19snapshots: don't core dump when running -checkblockindex after `loadtxoutset`Mark Friedenbach
Github-Pull: #28791 Rebased-From: cdc6ac4126b31426261605a757c52ea2dbfb2a81
2024-01-19[log] mempool loadingglozow
Log at the top before incrementing so that this log isn't printed when there's only 1 tx. Github-Pull: #29227 Rebased-From: eb78ea4eebfe150bc1746282bfdad6eb0f764e3c
2024-01-19net: create I2P sessions with both ECIES-X25519 and ElGamal encryptionJon Atack
A Bitcoin Core node may only connect to a peer destination via I2P if both sides have sessions with the same encryption type. The encryption type is a property of the session, not the destination. Sessions may support multiple encryption types. As Bitcoin Core is not currently setting the I2P encryption type when creating sessions, it is using the older default, ElGamal (type 0). This pull updates Bitcoin Core to use both ECIES-X25519 and ElGamal (types 4 and 0, respectively). This allows to connect to I2P peers with either type, and the newer, faster ECIES-X25519 will be preferred. See also the recently updated section "Signature and Encryption Types" in https://geti2p.net/en/docs/api/samv3 Thanks and credit to zzzi2p (https://github.com/zzzi2p) for reporting. Closes https://github.com/bitcoin/bitcoin/issues/29197. Github-Pull: #29200 Rebased-From: 9d728916b27e18efc6f8839770ed5ec14789fc08
2024-01-19[refactor] Add helper for iterating through mempool entriesstickies-v
Instead of reaching into the mapTx data structure, use a helper method that provides the required vector of CTxMemPoolEntry pointers. Github-Pull: #28391 Rebased-From: 453b4813ebc74859864803e9972b58e4be76a4d6
2024-01-04wallet: Fix use-after-free in WalletBatch::EraseRecordsMarcoFalke
Github-Pull: #29176 Rebased-From: faebf1df2afe207f5d2d4f73f50ac66824fe34bb
2024-01-04rpc: getwalletinfo, return wallet 'birthtime'furszy
And add coverage for it Github-Pull: #28920 Rebased-From: 1ce45baed7dd2da3f1cb85c9c25110e5537451ae
2024-01-04wallet: fix legacy spkm default birth timefurszy
To avoid scanning blocks, as assumed by a wallet with no generated keys or imported scripts, the default value for the birth time needs to be set to the maximum int64_t value. Once the first key is generated or the first script is imported, the legacy SPKM will update the birth time automatically. Github-Pull: #28920 Rebased-From: 6f497377aa17cb8a590fd7717fa8ededf4249999
2024-01-04wallet: birth time update during tx scanningfurszy
As the user could have imported a descriptor with a newer timestamp (by blindly setting 'timestamp=now'), the wallet needs to update the birth time when it detects a transaction older than the oldest descriptor timestamp. Github-Pull: #28920 Rebased-From: 75fbf444c1e13c6ba0e79a34871534c845a13849
2024-01-04refactor: rename FirstKeyTimeChanged to MaybeUpdateBirthTimefurszy
In the following-up commit, the wallet birth time will also be modified by the transactions scanning process. When a tx older than all descriptor's timestamp is detected. Github-Pull: #28920 Rebased-From: b4306e3c8db6cbaedc8845c6d21c750b39f682bf
2024-01-04fuzz: disable BnB when SFFO is enabledfurszy
Github-Pull: #28994 Rebased-From: 576bee88fd36e207b7288077626947a1fce0fc33
2024-01-04test: add coverage for BnB-SFFO restrictionfurszy
Verify the transaction creation process does not produce a BnB solution when SFFO is enabled. This is currently problematic because it could require a change output. And BnB is specialized on changeless solutions. Co-authored-by: Andrew Chow <achow101@gmail.com> Co-authored-by: Murch <murch@murch.one> Github-Pull: #28994 Rebased-From: 05e5ff194c7722b4ebc2b9309fc0bf47b3cf1df7
2024-01-04wallet: create tx, log resulting coin selection infofurszy
Useful for understanding what is going on internally when the software is running. Debug issues, and provide more accurate feedback to users. Github-Pull: #28994 Rebased-From: 0c5755761c3e544547899ad096121585dffa73df
2024-01-04wallet: skip BnB when SFFO is activeMurch
Co-authored-by: furszy <matiasfurszyfer@protonmail.com> Github-Pull: #28994 Rebased-From: 5cea25ba795d6eb9ccc721d01560783ae576af34
2024-01-04rpc: fix getrawtransaction segfaultMartin Zumsande
The crash would happen when querying a mempool transaction with verbosity=2, while pruning. Github-Pull: #29003 Rebased-From: 494a926d05df44b60b3bc1145ad2a64acf96f61b
2023-11-22p2p: do not make automatic outbound connections to addnode peersJon Atack
to allocate our limited outbound slots correctly, and to ensure addnode connections benefit from their intended protections. Our addnode logic usually connects the addnode peers before the automatic outbound logic does, but not always, as a connection race can occur. If an addnode peer disconnects us and if it was the only one from its network, there can be a race between reconnecting to it with the addnode thread, and it being picked as automatic network-specific outbound peer. Or our internet connection or router, or the addnode peer, could be temporarily offline, and then return online during the automatic outbound thread. Or we could add a new manual peer using the addnode RPC at that time. The race can be more apparent when our node doesn't know many peers, or with networks like cjdns that currently have few bitcoin peers. When an addnode peer is connected as an automatic outbound peer and is the only connection we have to a network, it can be protected by our new outbound eviction logic and persist in the "wrong role". Examples on mainnet using logging added in the same pull request: 2023-08-12T14:51:05.681743Z [opencon] [net.cpp:1949] [ThreadOpenConnections] [net:debug] Not making automatic network-specific outbound-full-relay connection to i2p peer selected for manual (addnode) connection: [geh...odq.b32.i2p]:0 2023-08-13T03:59:28.050853Z [opencon] [net.cpp:1949] [ThreadOpenConnections] [net:debug] Not making automatic block-relay-only connection to onion peer selected for manual (addnode) connection: kpg...aid.onion:8333 2023-08-13T16:21:26.979052Z [opencon] [net.cpp:1949] [ThreadOpenConnections] [net:debug] Not making automatic network-specific outbound-full-relay connection to cjdns peer selected for manual (addnode) connection: [fcc...8ce]:8333 2023-08-14T20:43:53.401271Z [opencon] [net.cpp:1949] [ThreadOpenConnections] [net:debug] Not making automatic network-specific outbound-full-relay connection to cjdns peer selected for manual (addnode) connection: [fc7...59e]:8333 2023-08-15T00:10:01.894147Z [opencon] [net.cpp:1949] [ThreadOpenConnections] [net:debug] Not making automatic feeler connection to i2p peer selected for manual (addnode) connection: geh...odq.b32.i2p:8333 Finally, there does not seem to be a reason to make block-relay or short-lived feeler connections to addnode peers, as the addnode logic will ensure we connect to them if they are up, within the addnode connection limit. Fix these issues by checking if the address is an addnode peer in our automatic outbound connection logic. Github-Pull: #28895 Rebased-From: cc627169206fe902157806d88fcaf2b05701c38d
2023-11-22pool: change memusage_test to use int64_t, add allocation checkMartin Leitner-Ankerl
If alignment of the PoolAllocator would be insufficient, then the test would fail. This also catches the issue with ARM 32bit, where int64_t is aligned to 8 bytes but void* is aligned to 4 bytes. The test adds a check to ensure the pool has allocated a minimum number of chunks Github-Pull: #28913 Rebased-From: d5b4c0b69e543de51bb37d602d488ee0949ba185
2023-11-22pool: make sure PoolAllocator uses the correct alignmentMartin Leitner-Ankerl
This changes the PoolAllocator to default the alignment to the given type. This makes the code simpler, and most importantly fixes a bug on ARM 32bit that caused OOM: The class CTxOut has a member CAmount which is an int64_t and on ARM 32bit int64_t are 8 byte aligned which is larger than the pointer alignment of 4 bytes. So for CCoinsMap to be able to use the pool, we need to use the alignment of the member instead of just alignof(void*). Github-Pull: #28913 Rebased-From: ce881bf9fcb7c30bb1fafd6ce38844f4f829452a
2023-11-14doc: rewrite explanation for -par=fanquake
The negative bound for script threads comes from the machine which generates the man pages, so may only be correct for that machine. Any other placeholder value will also be wrong for some machines. Fix this be removing the value. This also fixes help2man incorrectly bolding the value, as if it were a paramater. Closes #28850. Github-Pull: #28858 Rebased-From: d799ea26edfd63434b6d1cf55500de184dc67fac
2023-11-01gui: fix crash on selecting "Mask values" in transaction viewSebastian Falbesoner
This commits fixes a crash bug that can be caused with the following steps: - change to the "Transactions" view - right-click on an arbitrary transaction -> "Show transaction details" - close the transaction detail window again - select "Settings" -> "Mask values" The problem is that the list of opened dialogs, tracked in the member variable `m_opened_dialogs`, is only ever appended with newly opened transaction detail dialog pointers, but never removed. This leads to dangling pointers in the list, and if the "Mask values" menu item is selected, a crash is caused in the course of trying to close the opened transaction detail dialogs (see `closeOpenedDialogs()` method). Fix this by removing the pointer from the list if the corresponding widget is destroyed. Github-Pull: https://github.com/bitcoin-core/gui/pull/774 Rebased-From: e26e665f9f64a962dd56053be817cc953e714847
2023-10-31assumeutxo, blockstorage: prevent core dump on invalid hashpablomartin4btc
Github-Pull: #28698 Rebased-from: 4a5be10b928d4ed33d223972537c1cb79163e79c
2023-10-31[test] Test i2p private key constraintsVasil Dimov
Github-Pull: #28695 Rebased-From: 5cf4d266d9b1e7bd9394e7581398de5bc540ae99
2023-10-31[net] Check i2p private key constraintsdergoegge
Co-authored-by: Vasil Dimov <vd@FreeBSD.org> GitHub-Pull: #28695 Rebased-From: cf70a8d56510a5f07eff0fd773184cae14b2dcc9
2023-10-31bugfix: Mark CNoDestination and PubKeyDestination constructor explicitMarcoFalke
This should fix the bug reported in https://github.com/bitcoin/bitcoin/pull/28246#discussion_r1371640502, which caused the GUI to not detect the destination type of recipients, thus picking the wrong change destination type. Also, add missing lifetimebound attribute to a getter method. GitHub-Pull: #28728 Rebased-From: 1111475b41698260cda0f25a96c051fd18d66129
2023-10-31qt: 26.0rc2 translations updateHennadii Stepanov
2023-10-24qt: 26.0rc1 translations updateHennadii Stepanov
2023-10-23Merge bitcoin/bitcoin#28609: wallet: Reload watchonly and solvables wallets ↵Ryan Ofsky
after migration 4814e4063e674ad9b0a5c7e56059cd6a2bf9b764 test: Check tx metadata is migrated to watchonly (Andrew Chow) d616d30ea5fdfb897f8375ffd8b9f4536ae7835b wallet: Reload watchonly and solvables wallets after migration (Andrew Chow) 118f2d7d70b584eee7b89e58b5cd2d61c59a9bbf wallet: Copy all tx metadata to watchonly wallet (Andrew Chow) 9af87cf3485ce3fac553a284cde37a35d1085c25 test: Check that a failed wallet migration is cleaned up (Andrew Chow) Pull request description: Some incomplete/incorrect state as a result of migration can be mitigated/cleaned up by simply restarting the migrated wallets. We already do this for a wallet when it is migrated, but we do not for the new watchonly and solvables wallets that may be created. This PR introduces this behavior, in addition to creating those wallets initially without an attached chain. While implementing this, I noticed that not all `CWalletTx` metadata was being copied over to the watchonly wallet and so some data, such as time received, was being lost. This PR fixes this as a side effect of not having a chain attached to the watchonly wallet. A test has also been added. ACKs for top commit: ishaanam: light code review ACK 4814e4063e674ad9b0a5c7e56059cd6a2bf9b764 ryanofsky: Code review ACK 4814e4063e674ad9b0a5c7e56059cd6a2bf9b764. Just implemented the suggested orderpos, copyfrom, and path set comments since last review furszy: ACK 4814e406 Tree-SHA512: 0b992430df9f452cb252c2212df8e876613f43564fcd1dc00c6c31fa497adb84dfff6b5ef597590f9b288c5f64cb455f108fcc9b6c9d1fe9eb2c39e7f2c12a89
2023-10-23Merge bitcoin/bitcoin#28685: coinstats, assumeutxo: fix hash_serialized2 ↵Andrew Chow
calculation 4bfaad4eca01674a9c84a447a17594dc2b9a4c39 chainparams, assumeutxo: Fix signet txoutset hash (Fabian Jahr) a503cd0f0b55736743bcf8d2c46d271064772bef chainparams, assumeutxo: Fix testnet txoutset hash (Fabian Jahr) f6213929c519d0e615cacd3d6f479f1517be1662 assumeutxo: Check deserialized coins for out of range values (Fabian Jahr) 66865446a771327be9e972cdaf01154ea1bdff6d docs: Add release notes for #28685 (Fabian Jahr) cb0336817edc2b6aee2eca818f133841f613a767 scripted-diff: Rename hash_serialized_2 to hash_serialized_3 (Fabian Jahr) 351370a1d211615e3d5b158ccb0400cd79c5c085 coinstats: Fix hash_serialized2 calculation (Fabian Jahr) Pull request description: Closes #28675 The last commit demonstrates that theStack's analysis [here](https://github.com/bitcoin/bitcoin/issues/28675#issuecomment-1770389468) seems to be correct. There will be more changes needed for the rest of the test suite but the `feature_assumeutxo.py` with my additional tests pass. ACKs for top commit: achow101: ACK 4bfaad4eca01674a9c84a447a17594dc2b9a4c39 theStack: Code-review ACK 4bfaad4eca01674a9c84a447a17594dc2b9a4c39 ryanofsky: Code review ACK 4bfaad4eca01674a9c84a447a17594dc2b9a4c39 Tree-SHA512: 2f6abc92b282f7c5da46391803cf0804d13978d191d541f2509b532c538abccd0a081e46cda23d80d47206a05fa2b5d41b7ab246e6a263db7a7461d6292116ef
2023-10-23Revert "gui: provide wallet controller context to wallet actions"Hennadii Stepanov
This reverts commit 7066e8996d0ac090535cc97cdcb54a219986460f.
2023-10-23Merge bitcoin/bitcoin#28693: build: Include `config/bitcoin-config.h` ↵fanquake
explicitly in `util/trace.h` 6bdff429ec17eae4138c3af1e21de3ec46f4ab13 build: Include `config/bitcoin-config.h` explicitly in `util/trace.h` (Hennadii Stepanov) Pull request description: The `ENABLE_TRACING` macro is expected to be defined in the `config/bitcoin-config.h` header. Therefore, the current code is error-prone as it depends on whether the `config/bitcoin-config.h` header was included before or not. This bug was noticed while working on CMake [stuff](https://github.com/hebasto/bitcoin/pull/37). ACKs for top commit: fanquake: ACK 6bdff429ec17eae4138c3af1e21de3ec46f4ab13 Tree-SHA512: 22c4fdeb51628814050eb99a83db4268a4f3106207eeef918a07214bbc52f2b22490f6b05fcb96216f147afa4197c51102503738131e2583e750b6d195747a49