📝 waketraindev opened a pull request: "Added test coverage for qt gui#901 console history filter"
(https://github.com/bitcoin-core/gui/pull/910)
Add test coverage for the QT rpc console newly added filtered commands in #901
(https://github.com/bitcoin-core/gui/pull/910)
Add test coverage for the QT rpc console newly added filtered commands in #901
💬 A-Manning commented on pull request "rest: Query predecessor headers using negative count param":
(https://github.com/bitcoin/bitcoin/pull/33752#issuecomment-3498636613)
@stickies-v Updated to handle the case where the requested block header is no longer in the active chain.
(https://github.com/bitcoin/bitcoin/pull/33752#issuecomment-3498636613)
@stickies-v Updated to handle the case where the requested block header is no longer in the active chain.
💬 kevkevinpal commented on pull request "test: skip interface_ipc if python version is freethreaded and PYTHON_GIL=0 is not set":
(https://github.com/bitcoin/bitcoin/pull/33795#issuecomment-3498642865)
I went with the suggestion to suppress the warning here [4ab4fd7](https://github.com/bitcoin/bitcoin/pull/33795/commits/4ab4fd76dd861d84715079aa9118519d14362894)
Not sure how verbose you want me to be with the `message` I can make it more exact to the message in the error if wanted
(https://github.com/bitcoin/bitcoin/pull/33795#issuecomment-3498642865)
I went with the suggestion to suppress the warning here [4ab4fd7](https://github.com/bitcoin/bitcoin/pull/33795/commits/4ab4fd76dd861d84715079aa9118519d14362894)
Not sure how verbose you want me to be with the `message` I can make it more exact to the message in the error if wanted
💬 l0rinc commented on pull request "refactor: Return uint64_t from GetSerializeSize":
(https://github.com/bitcoin/bitcoin/pull/33724#issuecomment-3498693076)
ACK fa6c0bedd33ac7ad27454adaf9522fd27bef6ea3
I have recreated the change locally (see https://github.com/bitcoin/bitcoin/pull/33724#pullrequestreview-3393067389), my only objection was that I would like the methods to return the values in the same type as how we're storing them, otherwise it's confusing to know when it's okay to store them in 32 bits and when in 64 - but with the operations (e.g. multiplication) we could more easily tell if they're close to the threshold or not since they're
...
(https://github.com/bitcoin/bitcoin/pull/33724#issuecomment-3498693076)
ACK fa6c0bedd33ac7ad27454adaf9522fd27bef6ea3
I have recreated the change locally (see https://github.com/bitcoin/bitcoin/pull/33724#pullrequestreview-3393067389), my only objection was that I would like the methods to return the values in the same type as how we're storing them, otherwise it's confusing to know when it's okay to store them in 32 bits and when in 64 - but with the operations (e.g. multiplication) we could more easily tell if they're close to the threshold or not since they're
...
👋 waketraindev's pull request is ready for review: "Added test coverage for qt gui#901 console history filter"
(https://github.com/bitcoin-core/gui/pull/910)
(https://github.com/bitcoin-core/gui/pull/910)
👋 waketraindev's pull request is ready for review: "Comment out sensitive console commands in history to prevent re-execution"
(https://github.com/bitcoin-core/gui/pull/909)
(https://github.com/bitcoin-core/gui/pull/909)
💬 l0rinc commented on pull request "validation: fetch block inputs on parallel threads >20% faster IBD":
(https://github.com/bitcoin/bitcoin/pull/31132#discussion_r2500222372)
I'm not sure I understand why, what's the difference between *two threads working while main is waiting* vs *one thread working and main also working*?
Where does the difference come from (especially given that the work is not fully cpu-bound)?
(https://github.com/bitcoin/bitcoin/pull/31132#discussion_r2500222372)
I'm not sure I understand why, what's the difference between *two threads working while main is waiting* vs *one thread working and main also working*?
Where does the difference come from (especially given that the work is not fully cpu-bound)?
💬 andrewtoth commented on pull request "validation: fetch block inputs on parallel threads >20% faster IBD":
(https://github.com/bitcoin/bitcoin/pull/31132#discussion_r2500300779)
> two threads working while main is waiting vs one thread working and main also working?
It would be two threads working while main is waiting vs two threads working and main also working? So the latter has 3 threads working vs 2 threads working. If using `-par=3` this is the case. 50% more work is done in parallel.
(https://github.com/bitcoin/bitcoin/pull/31132#discussion_r2500300779)
> two threads working while main is waiting vs one thread working and main also working?
It would be two threads working while main is waiting vs two threads working and main also working? So the latter has 3 threads working vs 2 threads working. If using `-par=3` this is the case. 50% more work is done in parallel.
💬 w0xlt commented on pull request "[kernel] Expose `CheckTransaction` consensus validation function":
(https://github.com/bitcoin/bitcoin/pull/33796#issuecomment-3498877580)
> I am not sure how useful this check by itself is … what is the purpose served from surfacing the context‑free checks, but not the others?
The new API intentionally exposes only the context‑free consensus predicate (`consensus/tx_check::CheckTransaction`) so callers can **fail fast** on malformed transactions without needing a kernel context, UTXO set, or policy knobs.
This gives library users (indexers, gateways, alternative mempool layers, etc.) a **cheap pre‑filter** to catch structura
...
(https://github.com/bitcoin/bitcoin/pull/33796#issuecomment-3498877580)
> I am not sure how useful this check by itself is … what is the purpose served from surfacing the context‑free checks, but not the others?
The new API intentionally exposes only the context‑free consensus predicate (`consensus/tx_check::CheckTransaction`) so callers can **fail fast** on malformed transactions without needing a kernel context, UTXO set, or policy knobs.
This gives library users (indexers, gateways, alternative mempool layers, etc.) a **cheap pre‑filter** to catch structura
...
💬 maflcko commented on pull request "refactor: Return uint64_t from GetSerializeSize":
(https://github.com/bitcoin/bitcoin/pull/33724#discussion_r2500379088)
(resolved this conversation, and most of the others, but I am happy to review follow-ups, if there are any)
(https://github.com/bitcoin/bitcoin/pull/33724#discussion_r2500379088)
(resolved this conversation, and most of the others, but I am happy to review follow-ups, if there are any)
🤔 maflcko requested changes to a pull request: "test: skip interface_ipc if python version is freethreaded and PYTHON_GIL=0 is not set"
(https://github.com/bitcoin/bitcoin/pull/33795#pullrequestreview-3429988977)
not sure about this
(https://github.com/bitcoin/bitcoin/pull/33795#pullrequestreview-3429988977)
not sure about this
💬 maflcko commented on pull request "test: skip interface_ipc if python version is freethreaded and PYTHON_GIL=0 is not set":
(https://github.com/bitcoin/bitcoin/pull/33795#discussion_r2500400726)
not sure. This seems to go in the wrong direction. It disables a legit? warning without any reason why disabling it would be safe or is even desirable. See https://github.com/bitcoin/bitcoin/issues/33582#issuecomment-3386064377 and https://github.com/bitcoin/bitcoin/pull/33795#issuecomment-3495381887
The correct fix would be to just require the GIL
(https://github.com/bitcoin/bitcoin/pull/33795#discussion_r2500400726)
not sure. This seems to go in the wrong direction. It disables a legit? warning without any reason why disabling it would be safe or is even desirable. See https://github.com/bitcoin/bitcoin/issues/33582#issuecomment-3386064377 and https://github.com/bitcoin/bitcoin/pull/33795#issuecomment-3495381887
The correct fix would be to just require the GIL
🤔 mzumsande reviewed a pull request: "net: option to disallow v1 connection on ipv4 and ipv6 peers"
(https://github.com/bitcoin/bitcoin/pull/30951#pullrequestreview-3429992454)
> deny v1 incoming (only allow v2 incoming) which is a problem if this is widely adopted because then old nodes that do not support v2 will have a hard time finding peers to connect to and will be subject to eclipse from an attacker who runs many v1-accepting nodes.
I still don't find the reason for tying it to `-listen=0` instead of also disallowing v1 inbounds compelling. Yes, if everyone disabled v1 incoming peers that could lead to v1 nodes being eclipsed. But with the suggested approach,
...
(https://github.com/bitcoin/bitcoin/pull/30951#pullrequestreview-3429992454)
> deny v1 incoming (only allow v2 incoming) which is a problem if this is widely adopted because then old nodes that do not support v2 will have a hard time finding peers to connect to and will be subject to eclipse from an attacker who runs many v1-accepting nodes.
I still don't find the reason for tying it to `-listen=0` instead of also disallowing v1 inbounds compelling. Yes, if everyone disabled v1 incoming peers that could lead to v1 nodes being eclipsed. But with the suggested approach,
...
💬 l0rinc commented on pull request "validation: fetch block inputs on parallel threads >20% faster IBD":
(https://github.com/bitcoin/bitcoin/pull/31132#discussion_r2500406322)
So why not just do the work that `par` defined and leave main asleep, wouldn't that be simpler while basically achieving exactly the same?
(https://github.com/bitcoin/bitcoin/pull/31132#discussion_r2500406322)
So why not just do the work that `par` defined and leave main asleep, wouldn't that be simpler while basically achieving exactly the same?
💬 andrewtoth commented on pull request "validation: fetch block inputs on parallel threads >20% faster IBD":
(https://github.com/bitcoin/bitcoin/pull/31132#discussion_r2500437404)
No because we would have to insert all entries into temp cache at the end, instead of parallelizing that work as well. That was the previous implementation where we waited for every thread to be done and then inserted everything in series before exiting.
Now, the main thread does both. It inserts while others are fetching, but if it inserts fast enough where it is waiting for new entries it will also fetch entries.
(https://github.com/bitcoin/bitcoin/pull/31132#discussion_r2500437404)
No because we would have to insert all entries into temp cache at the end, instead of parallelizing that work as well. That was the previous implementation where we waited for every thread to be done and then inserted everything in series before exiting.
Now, the main thread does both. It inserts while others are fetching, but if it inserts fast enough where it is waiting for new entries it will also fetch entries.
💬 ryanofsky commented on pull request "test: skip interface_ipc if python version is freethreaded and PYTHON_GIL=0 is not set":
(https://github.com/bitcoin/bitcoin/pull/33795#discussion_r2500447299)
> The correct fix would be to just require the GIL
That's right, the text of the warning (from #33582) states "The global interpreter lock (GIL) has been enabled to load module 'capnp.lib.capnp'", so my understanding is when this test is run, the GIL is enabled and the test succeeds, except there is a spurious warning at the end which causes the test runner to fail.
So to me it seems like a good fix is disable the warning, since we know about it and are expecting it, and there not a good r
...
(https://github.com/bitcoin/bitcoin/pull/33795#discussion_r2500447299)
> The correct fix would be to just require the GIL
That's right, the text of the warning (from #33582) states "The global interpreter lock (GIL) has been enabled to load module 'capnp.lib.capnp'", so my understanding is when this test is run, the GIL is enabled and the test succeeds, except there is a spurious warning at the end which causes the test runner to fail.
So to me it seems like a good fix is disable the warning, since we know about it and are expecting it, and there not a good r
...
🤔 janb84 reviewed a pull request: "kernel: Introduce C header API"
(https://github.com/bitcoin/bitcoin/pull/30595#pullrequestreview-3430058931)
Post merge ACK 6c7a34f3b0bd39ef7a1520aac56e12f78e5cc969
To test this PR I made a dotnet wrapper for libbitcoinkernel and that went pretty smooth, no major issues.
(https://github.com/bitcoin/bitcoin/pull/30595#pullrequestreview-3430058931)
Post merge ACK 6c7a34f3b0bd39ef7a1520aac56e12f78e5cc969
To test this PR I made a dotnet wrapper for libbitcoinkernel and that went pretty smooth, no major issues.
💬 andrewtoth commented on pull request "validation: fetch block inputs on parallel threads >20% faster IBD":
(https://github.com/bitcoin/bitcoin/pull/31132#discussion_r2500462588)
On a system with 15 worker threads + main, it is likely that main will not be waiting much. The other 15 threads are busy setting newly fetch coins to ready so that the main thread can continuously read `true` for the ready flags.
On a system with only 3 worker threads + main, it is likely that the 3 worker threads will not be able to fetch and set ready coins fast enough where the main thread does not have to wait. For instance all 3 threads are fetching from disk, and the main thread reads th
...
(https://github.com/bitcoin/bitcoin/pull/31132#discussion_r2500462588)
On a system with 15 worker threads + main, it is likely that main will not be waiting much. The other 15 threads are busy setting newly fetch coins to ready so that the main thread can continuously read `true` for the ready flags.
On a system with only 3 worker threads + main, it is likely that the 3 worker threads will not be able to fetch and set ready coins fast enough where the main thread does not have to wait. For instance all 3 threads are fetching from disk, and the main thread reads th
...
💬 maflcko commented on pull request "test: skip interface_ipc if python version is freethreaded and PYTHON_GIL=0 is not set":
(https://github.com/bitcoin/bitcoin/pull/33795#discussion_r2500471963)
> > The correct fix would be to just require the GIL
>
> That's right, the text of the warning (from #33582) states "The global interpreter lock (GIL) has been enabled to load module 'capnp.lib.capnp'", so my understanding is when this test is run, the GIL is enabled and the test succeeds, except there is a spurious warning at the end which causes the test runner to fail.
Ok, this was not clear at all to me. It would be good to at least document, so that code-readers don't have to `git bla
...
(https://github.com/bitcoin/bitcoin/pull/33795#discussion_r2500471963)
> > The correct fix would be to just require the GIL
>
> That's right, the text of the warning (from #33582) states "The global interpreter lock (GIL) has been enabled to load module 'capnp.lib.capnp'", so my understanding is when this test is run, the GIL is enabled and the test succeeds, except there is a spurious warning at the end which causes the test runner to fail.
Ok, this was not clear at all to me. It would be good to at least document, so that code-readers don't have to `git bla
...
💬 maflcko commented on pull request "util: Allow `Assert` (et al.) in contexts without __func__":
(https://github.com/bitcoin/bitcoin/pull/33785#discussion_r2500488831)
> There are 2 places in `validation.cpp` where `STR_INTERNAL_BUG` could be used too, but I suppose you didn't because it (afaik) requires us to abandon the compile time format string checking?
I think all format strings should be checked at compile time, even with `STR_INTERNAL_BUG`. I think `STR_INTERNAL_BUG` can't be used in the validation places, because `STR_INTERNAL_BUG` includes raw newlines and those are discouraged from logging. Though, it only happens on internal bugs anyway, so I ca
...
(https://github.com/bitcoin/bitcoin/pull/33785#discussion_r2500488831)
> There are 2 places in `validation.cpp` where `STR_INTERNAL_BUG` could be used too, but I suppose you didn't because it (afaik) requires us to abandon the compile time format string checking?
I think all format strings should be checked at compile time, even with `STR_INTERNAL_BUG`. I think `STR_INTERNAL_BUG` can't be used in the validation places, because `STR_INTERNAL_BUG` includes raw newlines and those are discouraged from logging. Though, it only happens on internal bugs anyway, so I ca
...