📝 mzumsande opened a pull request: "p2p: Restrict self-advertisements with privacy networks to avoid fingerprinting"
(https://github.com/bitcoin/bitcoin/pull/27411)
The current logic for self-advertisements works such that we detect as many local addresses as we can, and then, using the scoring matrix from `CNetAddr::GetReachabilityFrom()`, self-advertise with the address that fits best to our peer.
It is in general not hard for our peers to distinguish our self-advertisements from other addrs we send them, because we self-advertise every ~24h and because the first addr we send over a connection is likely our self-advertisement.
`GetReachabilityFrom()`
...
(https://github.com/bitcoin/bitcoin/pull/27411)
The current logic for self-advertisements works such that we detect as many local addresses as we can, and then, using the scoring matrix from `CNetAddr::GetReachabilityFrom()`, self-advertise with the address that fits best to our peer.
It is in general not hard for our peers to distinguish our self-advertisements from other addrs we send them, because we self-advertise every ~24h and because the first addr we send over a connection is likely our self-advertisement.
`GetReachabilityFrom()`
...
📝 mzumsande converted_to_draft a pull request: "p2p: Restrict self-advertisements with privacy networks to avoid fingerprinting"
(https://github.com/bitcoin/bitcoin/pull/27411)
The current logic for self-advertisements works such that we detect as many local addresses as we can, and then, using the scoring matrix from `CNetAddr::GetReachabilityFrom()`, self-advertise with the address that fits best to our peer.
It is in general not hard for our peers to distinguish our self-advertisements from other addrs we send them, because we self-advertise every ~24h and because the first addr we send over a connection is likely our self-advertisement.
`GetReachabilityFrom()`
...
(https://github.com/bitcoin/bitcoin/pull/27411)
The current logic for self-advertisements works such that we detect as many local addresses as we can, and then, using the scoring matrix from `CNetAddr::GetReachabilityFrom()`, self-advertise with the address that fits best to our peer.
It is in general not hard for our peers to distinguish our self-advertisements from other addrs we send them, because we self-advertise every ~24h and because the first addr we send over a connection is likely our self-advertisement.
`GetReachabilityFrom()`
...
💬 mzumsande commented on pull request "p2p: Don't require services from `ADDR_FETCH` peers":
(https://github.com/bitcoin/bitcoin/pull/26343#issuecomment-1494908602)
closing, there doesn't seem to be much interest and even though I still think it could make sense, it's certainly not critical.
(https://github.com/bitcoin/bitcoin/pull/26343#issuecomment-1494908602)
closing, there doesn't seem to be much interest and even though I still think it could make sense, it's certainly not critical.
✅ mzumsande closed a pull request: "p2p: Don't require services from `ADDR_FETCH` peers"
(https://github.com/bitcoin/bitcoin/pull/26343)
(https://github.com/bitcoin/bitcoin/pull/26343)
💬 furszy commented on pull request "wallet, gui: bugfix, getAvailableBalance skips selected coins":
(https://github.com/bitcoin/bitcoin/pull/26699#discussion_r1156408310)
Was remembering why I left it unhandled:
And it was because this cannot happen. `FetchSelectedInputs` fails only if any of the selected coins are not solvable or invalid. And we set the selected coins via the coin control dialog, which is loaded from the wallet's available UTXOs, which are always valid.
(https://github.com/bitcoin/bitcoin/pull/26699#discussion_r1156408310)
Was remembering why I left it unhandled:
And it was because this cannot happen. `FetchSelectedInputs` fails only if any of the selected coins are not solvable or invalid. And we set the selected coins via the coin control dialog, which is loaded from the wallet's available UTXOs, which are always valid.
💬 furszy commented on pull request "wallet, gui: bugfix, getAvailableBalance skips selected coins":
(https://github.com/bitcoin/bitcoin/pull/26699#discussion_r1156411543)
Sure. Doesn't hurt to add a comment.
(https://github.com/bitcoin/bitcoin/pull/26699#discussion_r1156411543)
Sure. Doesn't hurt to add a comment.
💬 furszy commented on pull request "wallet, gui: bugfix, getAvailableBalance skips selected coins":
(https://github.com/bitcoin/bitcoin/pull/26699#discussion_r1156423239)
np about creating a gui issue for this.
still, I'm not fan of the link to this particular line because this isn't the only place that has to be modified to introduce the feature. Plus, code changes over time, so the issue could easily get behind, which would mean more maintenance burden for us.
(https://github.com/bitcoin/bitcoin/pull/26699#discussion_r1156423239)
np about creating a gui issue for this.
still, I'm not fan of the link to this particular line because this isn't the only place that has to be modified to introduce the feature. Plus, code changes over time, so the issue could easily get behind, which would mean more maintenance burden for us.
💬 furszy commented on pull request "wallet, gui: bugfix, getAvailableBalance skips selected coins":
(https://github.com/bitcoin/bitcoin/pull/26699#discussion_r1156424730)
pushed
(https://github.com/bitcoin/bitcoin/pull/26699#discussion_r1156424730)
pushed
💬 furszy commented on pull request "wallet, gui: bugfix, getAvailableBalance skips selected coins":
(https://github.com/bitcoin/bitcoin/pull/26699#discussion_r1156424958)
pushed
(https://github.com/bitcoin/bitcoin/pull/26699#discussion_r1156424958)
pushed
💬 furszy commented on pull request "wallet, gui: bugfix, getAvailableBalance skips selected coins":
(https://github.com/bitcoin/bitcoin/pull/26699#issuecomment-1494936715)
Feedback tackled. Thanks Sjors.
Only a comment change, [diff](https://github.com/bitcoin/bitcoin/compare/86b43c78ecd5a68b5569b1c2a7b2696b1f70ef21..68eed5df8656bed1be6526b014e58d3123102b03).
(https://github.com/bitcoin/bitcoin/pull/26699#issuecomment-1494936715)
Feedback tackled. Thanks Sjors.
Only a comment change, [diff](https://github.com/bitcoin/bitcoin/compare/86b43c78ecd5a68b5569b1c2a7b2696b1f70ef21..68eed5df8656bed1be6526b014e58d3123102b03).
📝 brunoerg opened a pull request: "logging, net: add ASN from peers on logs "
(https://github.com/bitcoin/bitcoin/pull/27412)
When using `-asmap`, you can check the ASN assigned to the peers only with the RPC command `getpeerinfo` (check `mapped_as` field), however, it's not possible to check it in logs (e.g. see in logs the ASN of the peers when a new outbound peer has been connected). This PR adds a new flag `-logasmap`, when set will include the peers' ASN in debug output. The apporach is so similar to `-logips`.
Obs: Open this primarily to chase some Concept ACK, I've been using this on my node to facilitate to
...
(https://github.com/bitcoin/bitcoin/pull/27412)
When using `-asmap`, you can check the ASN assigned to the peers only with the RPC command `getpeerinfo` (check `mapped_as` field), however, it's not possible to check it in logs (e.g. see in logs the ASN of the peers when a new outbound peer has been connected). This PR adds a new flag `-logasmap`, when set will include the peers' ASN in debug output. The apporach is so similar to `-logips`.
Obs: Open this primarily to chase some Concept ACK, I've been using this on my node to facilitate to
...
💬 furszy commented on pull request "reduce cs_main scope, guard block index 'nFile' under a local mutex":
(https://github.com/bitcoin/bitcoin/pull/27006#discussion_r1156452551)
> Are you sure these are protected by cs_main, is it?
The members' write process, not the read. If the read would be protected by `cs_main`, this PR wouldn't make any sense :p.
The two places are: the `CBlockIndex` creation time and `CBlockIndex` pruning time.
Still, those `cs_main` locks can also be removed in a follow-up PR. I haven't removed them here because they require further changes.
Not sure if I'm understanding your concern here. You are thinking on a race in-between `GetFile
...
(https://github.com/bitcoin/bitcoin/pull/27006#discussion_r1156452551)
> Are you sure these are protected by cs_main, is it?
The members' write process, not the read. If the read would be protected by `cs_main`, this PR wouldn't make any sense :p.
The two places are: the `CBlockIndex` creation time and `CBlockIndex` pruning time.
Still, those `cs_main` locks can also be removed in a follow-up PR. I haven't removed them here because they require further changes.
Not sure if I'm understanding your concern here. You are thinking on a race in-between `GetFile
...
💬 sipsorcery commented on pull request "Fixes compile errors in MSVC build #27332":
(https://github.com/bitcoin/bitcoin/pull/27335#issuecomment-1494973574)
tACK 28436965b6422bd92d23033a5ddbd60a6c183cd7.
The version pinning is nice. It was badly missed feature when we first started relying on vcpkg. We pinned the version of vcpkg instead but individual package pinning should be more flexible.
(https://github.com/bitcoin/bitcoin/pull/27335#issuecomment-1494973574)
tACK 28436965b6422bd92d23033a5ddbd60a6c183cd7.
The version pinning is nice. It was badly missed feature when we first started relying on vcpkg. We pinned the version of vcpkg instead but individual package pinning should be more flexible.
👋 brunoerg's pull request is ready for review: "logging, net: add ASN from peers on logs"
(https://github.com/bitcoin/bitcoin/pull/27412)
(https://github.com/bitcoin/bitcoin/pull/27412)
💬 hebasto commented on pull request "build: Add CMake-based build system":
(https://github.com/bitcoin/bitcoin/pull/25797#issuecomment-1494989972)
Rebased due to the conflict with bitcoin/bitcoin#27254.
All CI tasks are :green_circle:
Guix builds:
```
aa34dfbb1956fa04b56efa3cbbc798d75f62141787ea01e28796c3c7fc1743d4 guix-build-7f09e7118a59/output/aarch64-linux-gnu/SHA256SUMS.part
a7ceb4b814eb41558c5b8dcbe57e443505dac96181b9727fac235197ed729ef8 guix-build-7f09e7118a59/output/aarch64-linux-gnu/bitcoin-7f09e7118a59-aarch64-linux-gnu-debug.tar.gz
b336955cf07c04c69cc03040fab63a5c862c7eb984ae56ddbec9b45345f1af99 guix-build-7f09e7118
...
(https://github.com/bitcoin/bitcoin/pull/25797#issuecomment-1494989972)
Rebased due to the conflict with bitcoin/bitcoin#27254.
All CI tasks are :green_circle:
Guix builds:
```
aa34dfbb1956fa04b56efa3cbbc798d75f62141787ea01e28796c3c7fc1743d4 guix-build-7f09e7118a59/output/aarch64-linux-gnu/SHA256SUMS.part
a7ceb4b814eb41558c5b8dcbe57e443505dac96181b9727fac235197ed729ef8 guix-build-7f09e7118a59/output/aarch64-linux-gnu/bitcoin-7f09e7118a59-aarch64-linux-gnu-debug.tar.gz
b336955cf07c04c69cc03040fab63a5c862c7eb984ae56ddbec9b45345f1af99 guix-build-7f09e7118
...
💬 jonatack commented on pull request "logging, net: add ASN from peers on logs":
(https://github.com/bitcoin/bitcoin/pull/27412#discussion_r1156464266)
Would there be any downside to not adding a config option and just logging the asmap if it is non-zero?
(https://github.com/bitcoin/bitcoin/pull/27412#discussion_r1156464266)
Would there be any downside to not adding a config option and just logging the asmap if it is non-zero?
👍 aureleoules approved a pull request: "wallet: coin selection, don't return results that exceed the max allowed weight"
(https://github.com/bitcoin/bitcoin/pull/26720)
ACK 1284223691127e76135a46d251c52416104f0ff1 - I verified the tests are correct and the code looks good to me.
Sidenote, It seems this chunk of code is unused.
<details>
<summary>Unused code</summary>
```diff
diff --git a/src/wallet/coinselection.cpp b/src/wallet/coinselection.cpp
index 92d33bd38..26405d63a 100644
--- a/src/wallet/coinselection.cpp
+++ b/src/wallet/coinselection.cpp
@@ -448,13 +448,6 @@ void OutputGroupTypeMap::Push(const OutputGroup& group, OutputType type, bool in
...
(https://github.com/bitcoin/bitcoin/pull/26720)
ACK 1284223691127e76135a46d251c52416104f0ff1 - I verified the tests are correct and the code looks good to me.
Sidenote, It seems this chunk of code is unused.
<details>
<summary>Unused code</summary>
```diff
diff --git a/src/wallet/coinselection.cpp b/src/wallet/coinselection.cpp
index 92d33bd38..26405d63a 100644
--- a/src/wallet/coinselection.cpp
+++ b/src/wallet/coinselection.cpp
@@ -448,13 +448,6 @@ void OutputGroupTypeMap::Push(const OutputGroup& group, OutputType type, bool in
...
💬 aureleoules commented on pull request "wallet: coin selection, don't return results that exceed the max allowed weight":
(https://github.com/bitcoin/bitcoin/pull/26720#discussion_r1156435700)
1284223691127e76135a46d251c52416104f0ff1 (same below)
> If an if only has a single-statement then-clause, it can appear on the same line as the if, without braces. In every other case, braces are required, and the then and else clauses must appear correctly indented on a new line.
https://github.com/bitcoin/bitcoin/blob/master/doc/developer-notes.md#coding-style-c
```suggestion
} else {
append_error(bnb_result);
}
```
(https://github.com/bitcoin/bitcoin/pull/26720#discussion_r1156435700)
1284223691127e76135a46d251c52416104f0ff1 (same below)
> If an if only has a single-statement then-clause, it can appear on the same line as the if, without braces. In every other case, braces are required, and the then and else clauses must appear correctly indented on a new line.
https://github.com/bitcoin/bitcoin/blob/master/doc/developer-notes.md#coding-style-c
```suggestion
} else {
append_error(bnb_result);
}
```
💬 aureleoules commented on pull request "wallet: coin selection, don't return results that exceed the max allowed weight":
(https://github.com/bitcoin/bitcoin/pull/26720#discussion_r1156451001)
nit: Maybe rename the variable to `max_inputs_weight` to make it clearer?
(https://github.com/bitcoin/bitcoin/pull/26720#discussion_r1156451001)
nit: Maybe rename the variable to `max_inputs_weight` to make it clearer?
💬 aureleoules commented on pull request "wallet: coin selection, don't return results that exceed the max allowed weight":
(https://github.com/bitcoin/bitcoin/pull/26720#discussion_r1156453195)
fd8cf58d736ed9614f46b4f5b3c92f71ff9c46d4
nit
```suggestion
const int operator() (const OutputGroup& group1, const OutputGroup& group2)
```
(https://github.com/bitcoin/bitcoin/pull/26720#discussion_r1156453195)
fd8cf58d736ed9614f46b4f5b3c92f71ff9c46d4
nit
```suggestion
const int operator() (const OutputGroup& group1, const OutputGroup& group2)
```