Bitcoin Core Github
42 subscribers
124K links
Download Telegram
👋 Sjors's pull request is ready for review: "Make (Read/Write)BinaryFile work with char vector"
(https://github.com/bitcoin/bitcoin/pull/29229)
🤔 naumenkogs reviewed a pull request: "test/BIP324: functional tests for v2 P2P encryption"
(https://github.com/bitcoin/bitcoin/pull/24748#pullrequestreview-1838102663)
Some low-level feedback for now, mostly nits. I will do high-level review against the BIP shortly.
💬 naumenkogs commented on pull request "test/BIP324: functional tests for v2 P2P encryption":
(https://github.com/bitcoin/bitcoin/pull/24748#discussion_r1462877634)
c950386eaaf41ec096606de81a3a60b278b156f0
nit: since `v2transport` is named exactly the same in addconnection and as an init flag, perhaps either specify where exactly to see, or have extended description in both places ("adding v2transport connections requires v2transport init flag to be set."). Current version is kinda confusing.
💬 naumenkogs commented on pull request "test/BIP324: functional tests for v2 P2P encryption":
(https://github.com/bitcoin/bitcoin/pull/24748#discussion_r1462899288)
9b6425ce0fb74b40e12f92b704a41feec23cd754
nit: "at least one byte" is confusing... what if it's half-a-byte? Sounds like that would be ignored, but i assume it won't be.
💬 naumenkogs commented on pull request "test/BIP324: functional tests for v2 P2P encryption":
(https://github.com/bitcoin/bitcoin/pull/24748#discussion_r1462920200)
9b6425ce0fb74b40e12f92b704a41feec23cd754

nit: might be cleaner this way
```
received_prefix_len = 0
while received_prefix_len < 16:
byte = response.read(1)
# return b"" if we need to receive more bytes
if not byte:
return received_prefix_len, b""
received_prefix_len += len(byte)
if byte != v1_prefix[received_prefix_len - 1]:
return received_prefix_len, self.generate_keypair_an
...
💬 naumenkogs commented on pull request "test/BIP324: functional tests for v2 P2P encryption":
(https://github.com/bitcoin/bitcoin/pull/24748#discussion_r1462949568)
9a2050275573eae31c5dc14fefedb612e951d0b8

do you mind adding a comment for what happened here?
💬 naumenkogs commented on pull request "test/BIP324: functional tests for v2 P2P encryption":
(https://github.com/bitcoin/bitcoin/pull/24748#discussion_r1462953624)
what does this mean?
💬 naumenkogs commented on pull request "test/BIP324: functional tests for v2 P2P encryption":
(https://github.com/bitcoin/bitcoin/pull/24748#discussion_r1462964155)
why `on_connection_send_msg` is not sent here on reconnect (the new condition)?
💬 vasild commented on pull request "fuzz: extend ConsumeNetAddr() to return I2P and CJDNS addresses":
(https://github.com/bitcoin/bitcoin/pull/26859#issuecomment-1905788444)
`790f0cb60d...b851c5385d`: rebase and adjust `fuzz/banman.cpp` due to https://github.com/bitcoin/bitcoin/pull/26859#pullrequestreview-1833881229.

> is the CJDNS address from ConsumeNetAddr always valid

Yes, I think so. Anyway, for safety wrt future changes I added `IsValid()` to the check. That is - omit lookup for valid CJDNS addresses.
💬 Sjors commented on pull request "Make (Read/Write)BinaryFile work with char vector, use AutoFile":
(https://github.com/bitcoin/bitcoin/pull/29229#issuecomment-1905800964)
I tried find some existing code that use the `std::vector<unsigned char>` variant. Didn't find it at first glance. It seems we almost always know what size to expect.

So that might be a good reason to kill that variant and only support loading an std::string of unknown size for now.
💬 maflcko commented on pull request "Make (Read/Write)BinaryFile work with char vector, use AutoFile":
(https://github.com/bitcoin/bitcoin/pull/29229#discussion_r1463138328)
```suggestion
try {
AutoFile{fsbridge::fopen(filename, "wb")} << Span{data};
```

nit: Can be written shorter
🤔 shaavan reviewed a pull request: "init: handle empty settings file gracefully"
(https://github.com/bitcoin/bitcoin/pull/29144#pullrequestreview-1838611173)
Code review ACK e9014042a6bed8c16cc9a31fc35cb709d4b3c766

After our discussions in [this](https://github.com/bitcoin/bitcoin/pull/29144#discussion_r1450404094) comment thread, I believe the changes in this PR are complete and are implemented adequately.
💬 Sjors commented on pull request "Make (Read/Write)BinaryFile work with char vector, use AutoFile":
(https://github.com/bitcoin/bitcoin/pull/29229#discussion_r1463183042)
Took me a while to wrap my head around the various calls involved, but I guess the nullptr check is handled in `read()`, which is called by the various `ser_read...` functions in `seralize.h`, which is called by the `Unserialize` implementations, which is called by `<<`.
💬 Sjors commented on pull request "Make (Read/Write)BinaryFile work with char vector, use AutoFile":
(https://github.com/bitcoin/bitcoin/pull/29229#discussion_r1463199231)
On the read side I'm keeping the explicit nullptr check for now, so I don't have to catch `fs::file_size` failure.
💬 Sjors commented on pull request "Make (Read/Write)BinaryFile work with char vector, use AutoFile":
(https://github.com/bitcoin/bitcoin/pull/29229#discussion_r1463205250)
At the point `WriteBinaryFile` is so small you might as well have the called do the try - catch. But might as well keep if around as long as `ReadBinaryFile` can't be made smaller.
💬 furszy commented on pull request "p2p: adaptive connections services flags":
(https://github.com/bitcoin/bitcoin/pull/28170#discussion_r1463274709)
> > CConMan cannot access the chain state, the sync progress, in-flight block requests
>
> I don't see how the connection opening logic needs access to any of those things.

I believe that we are not in sync regarding the distinction between (1) the logic for deciding whether to connect to a specific address and (2) the thread/process responsible for opening such a connection. The former requires access to that contextual information; its usage is behind the `extra_block_relay` and `try_ano
...
💬 instagibbs commented on pull request "Mempool util: Add RBF diagram checks for single chunks against clusters of size 2":
(https://github.com/bitcoin/bitcoin/pull/29242#discussion_r1463281056)
direct_conflicts and all_conflicts. Does that help?
🤔 furszy reviewed a pull request: "p2p: adaptive connections services flags"
(https://github.com/bitcoin/bitcoin/pull/28170#pullrequestreview-1838790146)
> Ok, fine. Then, just a comments nit, the recently added comments "Per BIP159, safety buffer" and "BIP159 connections safety window" better be removed? Because that is not "A safety buffer of 144 blocks to handle chain reorganizations"?

Sure @vasild. Updated. Thanks! [Small diff](https://github.com/bitcoin/bitcoin/compare/6c6348b936d303a3aaadc1bcede183e451f025d8..27f260aa6e04f82dad78e9a06d58927546143a27).
💬 instagibbs commented on pull request "Mempool util: Add RBF diagram checks for single chunks against clusters of size 2":
(https://github.com/bitcoin/bitcoin/pull/29242#discussion_r1463285858)
direct_conflicts -> the set of transactions that have at least one input conflicting with a proposed transaction.
all_conflicts -> Everything that would be evicted by the proposed transaction

I'll touch this up a bit but this is the nomenclature elsewhere
💬 hebasto commented on pull request "build: always set `-g -O2` in `CORE_CXXFLAGS`":
(https://github.com/bitcoin/bitcoin/pull/29205#issuecomment-1906078874)
> > While always overriding Autotools' defaults, are there any particular reasons not using -O3 instead of -O2?
>
> AFAIK `-O3` isn't safe.

How?

FWIW, `-O3` is used by default in CMake for "Release" builds.
📝 Sjors opened a pull request: "CKey: add Unserialize"
(https://github.com/bitcoin/bitcoin/pull/29295)
In #28983 I need to read and write two private keys to/from disk that are used by Stratum v2 peers to (optionally) authenticate us.

For the write part, I initially just put the key data into a `std::vector<unsigned char>` and then used a modified version of `WriteBinaryFile`. But @vasild pointed out in #29229 that:

> `CKey` stores sensitive data and takes care to wipe it from memory when freed. In #28983 `Read/WriteBinaryData()` is used in a way that defeats that - the sensitive data will
...