Bitcoin Core Github
43 subscribers
123K links
Download Telegram
📝 romanz opened a pull request: "rest: fetch spent transaction outputs by blockhash"
(https://github.com/bitcoin/bitcoin/pull/32540)
Today, it is possible to fetch a block's spent prevouts in order to build an external index by using the `/rest/block/HASH.json` endpoint. However, its performance is low due to JSON serialization overhead.

We can significantly optimize it by adding a new REST endpoint, using a binary response format:

```
$ ab -k -c 1 -n 100 http://localhost:8332/rest/block/00000000000000000002a7c4c1e48d76c5a37902165a270156b7a8d72728a054.json
Document Length: 1634536 bytes
Requests per second:
...
📝 romanz opened a pull request: "index: store per-block transaction locations for efficient lookups"
(https://github.com/bitcoin/bitcoin/pull/32541)
Currently, electrs and other indexers are used to maintain a map between an address/scripthash to the list of the relevant transactions.

However, in order to fetch those transactions from bitcoind, electrs relies on reading the whole block and post-filtering for a specific transaction [1]. Other indexers use a `txindex` to fetch a transaction using its txid [2,3,4].

The above approach has significant storage and CPU overhead, since the `txid` is a pseudo-random 32-byte value.

This PR is
...
💬 maflcko commented on pull request "Remove legacy `Parse(U)Int*`":
(https://github.com/bitcoin/bitcoin/pull/32520#discussion_r2094035676)
thx, added a new commit on top with you as co-author
💬 maflcko commented on pull request "Remove legacy `Parse(U)Int*`":
(https://github.com/bitcoin/bitcoin/pull/32520#discussion_r2094038039)
consensus rules aren't architecture or compiler-dependent, so I used uint32_t instead
💬 maflcko commented on pull request "Remove legacy `Parse(U)Int*`":
(https://github.com/bitcoin/bitcoin/pull/32520#discussion_r2094039002)
(same)
💬 maflcko commented on pull request "Remove legacy `Parse(U)Int*`":
(https://github.com/bitcoin/bitcoin/pull/32520#discussion_r2094039205)
thx, added some fuzz
🤔 hebasto reviewed a pull request: "Update leveldb subtree to latest upstream"
(https://github.com/bitcoin/bitcoin/pull/32534#pullrequestreview-2848184300)
My Guix build:
```
aarch64
a12f2290f4e5267f2ba9ad9da0d95e7990ea3e5772d7658a133d607a25afe7b4 guix-build-7015052eba23/output/aarch64-linux-gnu/SHA256SUMS.part
6232c5017a17753b33c62f32def946a72f70ce63b76b55dc9a8fa8c8e75229fe guix-build-7015052eba23/output/aarch64-linux-gnu/bitcoin-7015052eba23-aarch64-linux-gnu-debug.tar.gz
c702cf46c5c463ccd08ec97f3858cf1a1ce612e0c92836f6dedc94d1f6ad16f3 guix-build-7015052eba23/output/aarch64-linux-gnu/bitcoin-7015052eba23-aarch64-linux-gnu.tar.gz
a0e2e6f5
...
👋 TheCharlatan's pull request is ready for review: "build: Introduce internal kernel library"
(https://github.com/bitcoin/bitcoin/pull/28690)
💬 TheCharlatan commented on pull request "build: Introduce internal kernel library":
(https://github.com/bitcoin/bitcoin/pull/28690#issuecomment-2888226479)
Undrafting this again after some recent discussions on splitting the kernel library out in the future.
👍 hebasto approved a pull request: "Update leveldb subtree to latest upstream"
(https://github.com/bitcoin/bitcoin/pull/32534#pullrequestreview-2848190649)
ACK 7015052eba23368539dcd1a9b4217ce1cacd2999, I've updated the `leveldb` subtree locally and got zero diff with this branch.
🚀 hebasto merged a pull request: "Update leveldb subtree to latest upstream"
(https://github.com/bitcoin/bitcoin/pull/32534)
💬 maflcko commented on issue "intermittent issue in rpc_signer.py (enumeratesigners timeout)":
(https://github.com/bitcoin/bitcoin/issues/32524#issuecomment-2888230805)
I've created 50 runs and they all passed: https://cirrus-ci.com/task/5325312260571136 So I guess this is related. I'll try to get the gdb bt next.
💬 maflcko commented on issue "intermittent issue in rpc_signer.py (enumeratesigners timeout)":
(https://github.com/bitcoin/bitcoin/issues/32524#issuecomment-2888234312)
In the meantime, I place my bet that this is a gcc-11 upstream bug 🤞
💬 Talej commented on pull request "doc: corrected lockunspent rpc quoting":
(https://github.com/bitcoin/bitcoin/pull/31275#issuecomment-2888238933)
> @Talej Can you rebase this?

All done!
🚀 fanquake merged a pull request: "scripted-diff: Remove unused leading newline in RPC docs"
(https://github.com/bitcoin/bitcoin/pull/32514)
🚀 fanquake merged a pull request: "test: Remove legacy wallet RPC overloads"
(https://github.com/bitcoin/bitcoin/pull/32452)
💬 TheCharlatan commented on pull request "index: store per-block transaction locations for efficient lookups":
(https://github.com/bitcoin/bitcoin/pull/32541#issuecomment-2888253440)
Concept ACK

Can you add the schema of the index and the expected arguments for the REST API to the pull request description? I was a bit confused at first if this now exposes the file position, but if I read it correctly now, this just allows querying a transaction by its index in the block.
💬 TheCharlatan commented on pull request "blocks: avoid recomputing block header hash in `ReadBlock`":
(https://github.com/bitcoin/bitcoin/pull/32487#discussion_r2094072165)
Is there really a scenario where we could be reading a block, but not have its block index entry? Maybe this should just be an `Assume` instead.
💬 romanz commented on pull request "index: store per-block transaction locations for efficient lookups":
(https://github.com/bitcoin/bitcoin/pull/32541#issuecomment-2888263760)
> Concept ACK

Thanks!

> Can you add the schema of the index and the expected arguments for the REST API to the pull request description?

Sure - updated in https://github.com/bitcoin/bitcoin/pull/32541#issue-3070502385.
💬 hebasto commented on issue "Unit tests incompatible with `qt5ct` or `qt5-style-plugins`":
(https://github.com/bitcoin-core/gui/issues/630#issuecomment-2888264275)
Closing due to recent upgrade to Qt 6.

Feel free to reopen with updated details.