Archive of the libbitcoin Slack #general channel.
--version now loads the store (if present) to pull the schema version...
Database is started. Version Information... boost................ 1.91.0 secp256k1............ internal openssl (tls)........ libbitcoin tls 1.3 libbitcoin-system.... 4.0.9996 952eb134 libbitcoin-database.. 4.0.4499 52fd956b libbitcoin-network... 4.0.7173 48092f1e libbitcoin-node...... 4.0.4100 43278b8b libbitcoin-server.... 4.0.3086 f09be940 compiled schema...... 4.0.2 database schema...... 4.0.2 Please wait while database is stopping... Database stopped successfully in 7 secs.

2026-09-30T17:45:54Z.6 Failed to accept private native connection, tls alert certificate unknown 2026-09-30T17:45:54Z.6 Failed to accept private native connection, tls alert certificate unknown 2026-09-30T17:45:54Z.6 Failed to accept private native connection, tls alert certificate unknown 2026-09-30T17:45:54Z.6 Failed to accept private native connection, tls alert certificate unknown 2026-09-30T17:45:54Z.6 Failed to accept private native connection, tls alert certificate unknown 2026-09-30T17:45:54Z.6 Failed to accept private native connection, tls alert certificate unknown
certificate_unknown (46) itself. That error only appears when the peer sends a fatal alert during the handshake, which server::handle_alert (server.cpp:434) records as a received failure. So the browser got your certificate, checked it, decided not to trust it, and closed the handshake.Option-cuda=true will run on a machine with no GPU or no NVIDIA driver, and fall back to the CPU. So we can presumably make the binaries GPU portable at least for CUDA initially.commas in integers now work (just commas, not localized).full validation down to 16GB and milestone down to 8GB, even with tx index and spender index turned off in bc. And the bigger the machine, the greater the advantage. Wait until you see the compact blocks numbers :).sha (or crypto on Arm) and avx2. The rest still displays but won't pause the start or warn.--enable-avx2--enable-avx512--enable-shani--enable-cuda for compilation along with a test --enable-cuda variant for macos/linux/macos-arm64/linux-arm64-Denable-shani=<ON/OFF> Use Intel SHA Extensions.
Default: OFF
-Denable-sha512=<ON/OFF> Use Intel SHA512 Extensions (implies AVX2).
Default: OFF
-Denable-aesni=<ON/OFF> Use Intel AES-NI and PCLMULQDQ intrinsics.
Default: OFF
-Denable-vaes=<ON/OFF> Use Intel VAES and VPCLMULQDQ intrinsics (implies AES-NI and AVX2).
Default: OFF
-Denable-avx512ifma=<ON/OFF> Use Intel AVX512 IFMA intrinsics (implies AVX512VL).
Default: OFF
-Denable-avx512=<ON/OFF> Use Intel AVX512 intrinsics.
Default: OFF
-Denable-avxifma=<ON/OFF> Use Intel AVX IFMA intrinsics (implies AVX2).
Default: OFF
-Denable-avx2=<ON/OFF> Use Intel AVX2 intrinsics.
Default: OFF
-Denable-sse41=<ON/OFF> Use SSE4.1 hardware instructions.
Default: OFF
-Denable-sha=<ON/OFF> Use ARM SHA1/SHA256 Extensions.
Default: OFF
-Denable-sha3=<ON/OFF> Use ARM SHA3 Extensions for SHA512.
Default: OFF
-Denable-aes=<ON/OFF> Use ARM AES and PMULL Extensions.
Default: OFF
-Dwith-secp256k1=<ON/OFF> Use bitcoin-core/secp256k1 library.
Default: OFF
-Denable-cuda=<ON/OFF> Use cuda (gpu) batch signature verification.Use SSE4.1 hardware instructions.
Use Intel SSE4.1 hardware instructions.
boost................ 1.86.0 secp256k1............ internal openssl (tls)........ libbitcoin tls 1.3 libbitcoin-system.... 4.0.10066 f89f1c56 libbitcoin-database.. 4.0.4508 f3378db9 libbitcoin-network... 4.0.7195 596e1957 libbitcoin-node...... 4.0.4117 dc2d2bfa libbitcoin-server.... 4.0.3122 91bf6df9 compiled schema...... 4.0.2 Hardware configuration (arm64)... crypto...... platform:0 compiled:1. sha3........ platform:1 compiled:1. neon........ platform:1 compiled:1. cuda........ platform:0 compiled:1. cuda ecc.... platform:0 enabled:0. opencl...... platform:0. metal....... platform:1.
********************** Preparing to build libbitcoin-system ********************** Initializing 'obj'... configure options: -Dwith-tests:BOOL=OFF -Dwith-examples:BOOL=OFF -Denable-cuda=ON -Dwith-tests=OFF -DCMAKE_INSTALL_PREFIX=/Users/runner/work/libbitcoin-server/libbitcoin-server/prefix -DCMAKE_PREFIX_PATH=/Users/runner/work/libbitcoin-server/libbitcoin-server/prefix -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -- The C compiler identification is AppleClang 21.0.0.21000101 -- The CXX compiler identification is AppleClang 21.0.0.21000101 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/clang - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/clang++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Performing Test HAS_FLAG_WALL -- Performing Test HAS_FLAG_WALL - Success -- Performing Test HAS_FLAG_WEXTRA -- Performing Test HAS_FLAG_WEXTRA - Success -- Performing Test HAS_FLAG_WNO-REORDER -- Performing Test HAS_FLAG_WNO-REORDER - Success -- Performing Test HAS_FLAG_WNO-MISSING-FIELD-INITIALIZERS -- Performing Test HAS_FLAG_WNO-MISSING-FIELD-INITIALIZERS - Success -- Performing Test HAS_FLAG_WNO-MISSING-BRACES -- Performing Test HAS_FLAG_WNO-MISSING-BRACES - Success -- Performing Test HAS_FLAG_WNO-COMMENT -- Performing Test HAS_FLAG_WNO-COMMENT - Success -- Performing Test HAS_FLAG_WNO-DEPRECATED-COPY -- Performing Test HAS_FLAG_WNO-DEPRECATED-COPY - Success -- Performing Test HAS_FLAG_WNO-IGNORED-ATTRIBUTES -- Performing Test HAS_FLAG_WNO-IGNORED-ATTRIBUTES - Success -- Performing Test HAS_FLAG_WNO-LONG-LONG -- Performing Test HAS_FLAG_WNO-LONG-LONG - Success -- Performing Test HAS_FLAG_FSTACK-PROTECTOR-ALL -- Performing Test HAS_FLAG_FSTACK-PROTECTOR-ALL - Success -- Configuring done (4.0s) -- Generating done (0.1s) -- Build files have been written to: /Users/runner/work/libbitcoin-server/libbitcoin-server/libbitcoin-system/obj -- Cache values Boost_DIR:PATH=/Users/runner/work/libbitcoin-server/libbitcoin-server/prefix/lib/cmake/Boost-1.86.0 CMAKE_ADDR2LINE:FILEPATH=CMAKE_ADDR2LINE-NOTFOUND CMAKE_AR:FILEPATH=/usr/bin/ar CMAKE_BUILD_TYPE:STRING=Release CMAKE_COLOR_MAKEFILE:BOOL=ON CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/clang++ CMAKE_CXX_FLAGS:STRING=-O3 CMAKE_CXX_FLAGS_DEBUG:STRING=-g CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG CMAKE_C_COMPILER:FILEPATH=/usr/bin/clang CMAKE_C_FLAGS:STRING=-O3 CMAKE_C_FLAGS_DEBUG:STRING=-g CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND CMAKE_EXE_LINKER_FLAGS:STRING= CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= CMAKE_INSTALL_BINDIR:PATH=bin CMAKE_INSTALL_DATADIR:PATH= CMAKE_INSTALL_DATAROOTDIR:PATH=share CMAKE_INSTALL_DOCDIR:PATH= CMAKE_INSTALL_INCLUDEDIR:PATH=include CMAKE_INSTALL_INFODIR:PATH= CMAKE_INSTALL_LIBDIR:PATH=lib CMAKE_INSTALL_LIBEXECDIR:PATH=libexec CMAKE_INSTALL_LOCALEDIR:PATH= CMAKE_INSTALL_LOCALSTATEDIR:PATH=var CMAKE_INSTALL_MANDIR:PATH= CMAKE_INSTALL_NAME_TOOL:FILEPATH=/usr/bin/install_name_tool CMAKE_INSTALL_OLDINCLUDEDIR:PATH=/usr/include CMAKE_INSTALL_PREFIX:PATH=/Users/runner/work/libbitcoin-server/libbitcoin-server/prefix CMAKE_INSTALL_RUNSTATEDIR:PATH= CMAKE_INSTALL_SBINDIR:PATH=sbin CMAKE_INSTALL_SHAREDSTATEDIR:PATH=com CMAKE_INSTALL_SYSCONFDIR:PATH=etc CMAKE_LINKER:FILEPATH=/usr/bin/ld CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make CMAKE_MODULE_LINKER_FLAGS:STRING= CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= CMAKE_NM:FILEPATH=/usr/bin/nm CMAKE_OBJCOPY:FILEPATH=CMAKE_OBJCOPY-NOTFOUND CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump CMAKE_OSX_ARCHITECTURES:STRING= CMAKE_OSX_DEPLOYMENT_TARGET:STRING= CMAKE_OSX_SYSROOT:STRING= CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib CMAKE_READELF:FILEPATH=CMAKE_READELF-NOTFOUND CMAKE_SHARED_LINKER_FLAGS:STRING= CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= CMAKE_SKIP_INSTALL_RPATH:BOOL=NO CMAKE_SKIP_RPATH:BOOL=NO CMAKE_STATIC_LINKER_FLAGS:STRING= CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= CMAKE_STRIP:FILEPATH=/usr/bin/strip CMAKE_TAPI:FILEPATH=/Applications/Xcode_26.6.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/tapi CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE GIT_EXECUTABLE:FILEPATH=/opt/homebrew/bin/git boost_container_DIR:PATH=/Users/runner/work/libbitcoin-server/libbitcoin-server/prefix/lib/cmake/boost_container-1.86.0 boost_headers_DIR:PATH=/Users/runner/work/libbitcoin-server/libbitcoin-server/prefix/lib/cmake/boost_headers-1.86.0 boost_json_DIR:PATH=/Users/runner/work/libbitcoin-server/libbitcoin-server/prefix/lib/cmake/boost_json-1.86.0 boost_program_options_DIR:PATH=/Users/runner/work/libbitcoin-server/libbitcoin-server/prefix/lib/cmake/boost_program_options-1.86.0 boost_unit_test_framework_DIR:PATH=/Users/runner/work/libbitcoin-server/libbitcoin-server/prefix/lib/cmake/boost_unit_test_framework-1.86.0 boost_url_DIR:PATH=/Users/runner/work/libbitcoin-server/libbitcoin-server/prefix/lib/cmake/boost_url-1.86.0 enable-aes:BOOL=OFF enable-aesni:BOOL=OFF enable-avx2:BOOL=OFF enable-avx512:BOOL=OFF enable-avx512ifma:BOOL=OFF enable-avxifma:BOOL=OFF enable-cuda:BOOL=ON enable-sha:BOOL=OFF enable-sha3:BOOL=OFF enable-sha512:BOOL=OFF enable-shani:BOOL=OFF enable-sse41:BOOL=OFF enable-vaes:BOOL=OFF with-examples:BOOL=OFF with-secp256k1:BOOL=OFF with-tests:BOOL=OFF
--settings dump so that default values in the message text are derived from the actual values at the time of the parse.Bitcoin Core 32.0rc2 is running on the Pi5 (Jennings). There was work in this version (not in the current release which I previously ran) to "prefetch" utxos for the one block currently being validated, using a persistent threadpool that grabs from LevelDB utxos that would be a cache miss upon validation hitting the utxo store. This has been advertised as a significant performance increase, which I don't think will hold up.
71 mins full validation to 950k on its native secp256k1 and cuda integration. The previous record is 63 mins from late July. The latest code has a small additional cost for header DoS protection, some changes to mmap, slightly different hashmap load factor configuration, and an outs table increased by 15GB (for address indexing, even when the index/head is off). Our validation is actually faster, the difference is resulting from the 15GB of extra writes. So I'll optimize out that column when it's not being used. I set address index off for this run to get the fair comparison against the record run, which pre-dates the address index optimization into the outs table.constant time everywhere a secret is touched on the CPU — scan key, tweaks, nonces, secrets, shared secrets — at the cost above; verify unchanged; GPU explicitly exempt (server scanning scenario). github.com/libbitcoin/libbitcoin-system/pull/2069compact blocks finally reviewed, tested and merged - though I haven't spent any time with it in operation.silent payments fully integrated. @josie’s system PR for all of the necessary primitives went in, the tables and most of the sparrow (frigate) interface were done a while back. Now that the secp/cuda stuff is fully integrated, it was easy to integrate and optimize the scanning. Blazing fast on single thread CPU at 71,500 rows/sec, (using avx512-ifma acceleration). And on GPU at 27,500,000 rows/sec.

21 minutes to the 950k baseline milestone time of 25 minutes, so 46 mins total. A big part of that is I/O, which will be largely eliminated with the block view read optimization, which will also benefit full validation and client filters.server.version returned sparrow-server 1.4blockchain.silentpayments.subscribe accepted the BIP352 test-vector scan secret and spend key, echoing the sp1 address with start height 0 and label 019 seconds later with progress 1.0 and an empty history9 seconds is the device-bound figure for the full index on shelly and 19 seconds included paging the columns in.
Third SP query (verify)...
Third scan: 9 seconds again, empty history, same reply. The warm figure is stable at 9 seconds for the full index, so that is the number for shelly's device on this store.[peer] enable_compact = true
Validated pooled block [970030] of (3512) txs in (73643) usecs. Validated full block [970031] of (2890) txs in (282545) usecs.
tx pool, there is pool-based fee data, so I've updated the fee estimator. This should now produce the equivalent of the Core estimations, though I haven't pushed it yet.
Also I've added the wtxidrelay protocol, though it's missing a wtxid index into the pool table, which is currently indexed only in the other direction (tx_link -> pool_link). This will require a second table head for a single table, and all are temporary. So a little more work to do on that. Given that this is optional, and fills only when current, it has no impact on IBD times.
I've also found I can collapse all but two of the columns in all of the SoA tables, so that will get simpler and slightly more efficient, just a mechanical refactor.[node] compact_timeout_seconds = 60 compact_missing_percent = 50
libbitcoin ?
Even if I know folks have different viewpoint on the necessity and rational of each fix, at worst they can be implemented each one individually.
Willing to either go to implement some parts, or at least to review it in libbitcoin and that way to check more the BIP.Binary linkage information: ======================================== File: candidate/bs-musl-x64-avx512-shani candidate/bs-musl-x64-avx512-shani: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-musl-x86_64.so.1, BuildID[sha1]=7da6507aefcb8fa7d8ff4a9a447dd036f9a2a070, stripped --- No dynamic dependencies (likely fully static) --- /lib/ld-musl-x86_64.so.1 (0x746103bdb000) libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x746101b57000) libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x746103ba7000) libc.musl-x86_64.so.1 => /lib/ld-musl-x86_64.so.1 (0x746103bdb000) --- ELF dynamic section (readelf -d) --- 0x0000000000000001 (NEEDED) Shared library: [libstdc++.so.6] 0x0000000000000001 (NEEDED) Shared library: [libgcc_s.so.1] 0x0000000000000001 (NEEDED) Shared library: [libc.musl-x86_64.so.1] 0x000000000000001d (RUNPATH) Library runpath: [/home/runner/work/libbitcoin-server/libbitcoin-server/prefix/lib]
15.4x longer to achieve that same level of indexation, and doesn't support address indexation.tx pool (unconfirmed tx index, wtxid index, and validation/confirmation metadata) was formerly dropped at prune time, effectively resetting it at each restart, while using the index for optimizing the catch-up sync. That is now updated so that the pool is pruned on a row-by-row basis so that confirmed txs and txs that conflict with confirmed txs and children of conflicting txs are selectively dropped from the index. This can later be set up to operate on demand while running. The only limit to the size of the tx pool record count is disk space.Lopp's annual node benchmark machine (since 2017) and am running identical scenarios using Core v32 and BS latest. I had to build Core without shani because it picks it up from the machine unconditionally otherwise, and the target doesn't have shani. That review work typically starts in November. I expect to have the two outstanding validation performance optimizations (view-based validation and parallel confirmation) complete well before that, but even without them we are significantly faster.getheaders (31800) through wtxidrelay (70016), with the exception of bip37 (bloom filters), which is deprecated (and we implement the not supported signaling). The other much older deprecated messages are either implemented and disabled (reject, alert) or obsolete and ancient (checkorder, reply, submitorder). That's all there is apart from going back down level to blocks first, though I've disabled that code.Ancestor Package Relay (bip331), Erlay (bip330), Dandelion (bip156), P2P UTXO Set Sharing (bip452). Assume utxo sharing is the most recently active, but inactive since early June, nothing has happened on either PR or on the mailing list.src build of boost::program_options, replaced boost::url (simple parser is all we used of that huge library), and changed boost::json, boost::container, and boost::test to header only. boost::asio and others were already header only.
This may increase the build time a bit, but completely eliminates any dependency on built libraries apart from the operating system (and in the case of Linux, glibc on the operating system). This reduces our supply chain risk even further, as these headers are our only dependencies. But it also should eliminate our number one user support issue, linkage against the wrong variants of pre-built boost libs.
github.com/libbitcoin/libbitcoin-system/pull/207741 mins. That compares to the 41.8 hrs for the bitcoind team.
wtxidrelay and mempool messages are implemented, over a new wtxid index over the tx pool. So the tx pool is natively indexed by tx_link and there is another table that provides only a secondary index for the tx pool, by witness hash (wtxid). The rows are synchronized so there is not even a pointer from one to the other. This completes our full support for the non-deprecated set of P2P messages/protocols.
Also the tx pool is now compacted upon store prune, which currently happens once upon process restart after the node becomes current. Compaction removes all spends of prevouts where there is a confirmed spend of the prevout, and all ancestors of such spenders that did not confirm (unconfirmable conflicts). However we do not currently accept unconfirmed txs where the tx spends an output that is already spent by another (e.g. no RBF, that's v5).21 hrs at ~925k to 10.3 hrs at 900k in the past year, and are now beating Core by 1 hr on Lopp's benchmark and by 2.6 hrs against an Internet Core sync on the same benchmark. And by even more when you consider the indexation difference (which I'll measure soon).
testnet4 (150K blocks) syncs milestone on shelly on < 1 min, full validation < 2 min.
testnet3 (5.1M blocks) syncs milestone on shelly on < 20 min, full validation < 40 min. Most of that difference is the 5.1M block sequential confirmation tail, not validation (see Testnet3 Full Validation - orange is confirmation). That should reduce to ~28 mins with parallel confirmation. Blocks are so small in testnet that sequential confirmation falls behind parallel validation.
Still have to tune the hashmaps.
[bitcoin] bip16_activation_time = 1329264000 bip30_deactivate_checkpoint = 0000000023b3a96d3484e5abb3755c413e7d41500f8e2a5c3f0dd01299cd8ef8:21111 bip30_reactivate_height = 486000000 bip34_activation_sample = 100 bip34_activation_threshold = 51 bip34_enforcement_threshold = 75 bip34_freeze = 21111 bip65_freeze = 581885 bip66_freeze = 330776 bip9_bit0_active_checkpoint = 00000000025e930139bac5c6c31a403776da130831ab85be56578f3fa75369bb:770112 bip9_bit1_active_checkpoint = 00000000002b980fcd729daaa248fd9316a5200e9b367f4ff2c42453e84201ca:834624 bip9_bit2_active_checkpoint = 000000000000eb906ab072652b86b05a1afeb95df53ed5c5a63aa3574e1f1b33:2011968 checkpoint = 000000002a936ca763904c3c35fce2f3556c559c0214345d31b1bcebf76acb70:546 genesis_block = 0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae180101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000 milestone = 0000000000010c0090875c05870eed86761b7cde2c03e69d04e5314f6ff59341:5100000 minimum_work = 000000000000000000000000000000000000000000000b6a51f415a67c0da307 [forks] difficult = false [inbound] bind = 127.0.0.1:18333 [peer] identifier = 118034699 [wallet] hd_private_prefix = 70615956 hd_public_prefix = 70617039 p2kh_prefix = 111 p2sh_prefix = 196 silent_prefix = tsp wif_prefix = 239 witness_prefix = tb [outbound] seed = testnet-seed.bitcoin.jonasschnelli.ch:18333 seed = seed.tbtc.petertodd.net:18333 seed = seed.testnet.bitcoin.sprovoost.nl:18333 connections = 50 connect_batch_size = 10 [node] maximum_concurrency = 1000000 [table.header] expected = 5158746 size = 588097044 [table.txs] buckets = 5100001 size = 21874552 [table.tx] expected = 536643888 size = 343452088 [table.ins] expected = 598161444 size = 311043951 [table.outs] expected = 1166697559 size = 105002780 [table.input] size = 981182034 [table.output] size = 600719803 [table.strong] expected = 536643888 size = 59030828 [table.candidate] buckets = 5100001 [table.confirmed] buckets = 5100001 [table.state] buckets = 5100001 [table.scan] buckets = 5100001
[bitcoin] bip16_activation_time = 1329264000 bip30_deactivate_checkpoint = 0000000012982b6d5f621229286b880e909984df669c2afabb102ce311b13f28:1 bip30_reactivate_height = 486000000 bip34_activation_sample = 100 bip34_activation_threshold = 51 bip34_enforcement_threshold = 75 bip34_freeze = 1 bip65_freeze = 1 bip66_freeze = 1 bip9_bit0_active_checkpoint = 0000000012982b6d5f621229286b880e909984df669c2afabb102ce311b13f28:1 bip9_bit1_active_checkpoint = 0000000012982b6d5f621229286b880e909984df669c2afabb102ce311b13f28:1 bip9_bit2_active_checkpoint = 0000000012982b6d5f621229286b880e909984df669c2afabb102ce311b13f28:1 checkpoint = 00000000da84f2bafbbc53dee25a72ae507ff4914b867c565be350b0da8bf043:0 genesis_block = 0100000000000000000000000000000000000000000000000000000000000000000000004e7b2b9128fe0291db0693af2ae418b767e657cd407e80cb1434221eaea7a07a046f3566ffff001dbb0c78170101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff5504ffff001d01044c4c30332f4d61792f323032342030303030303030303030303030303030303030303165626435386332343439373062336161396437383362623030313031316662653865613865393865303065ffffffff0100f2052a010000002321000000000000000000000000000000000000000000000000000000000000000000ac00000000 milestone = 0000000000d9877342754dea8ec1eb24631517d38e3443c370465ee53a8b7434:150000 minimum_work = 0000000000000000000000000000000000000000000009a0fe15d0177d086304 [forks] block_storm_patch = true difficult = false time_warp_patch = true [peer] identifier = 675223068 [wallet] hd_private_prefix = 70615956 hd_public_prefix = 70617039 p2kh_prefix = 111 p2sh_prefix = 196 silent_prefix = tsp wif_prefix = 239 witness_prefix = tb [inbound] bind = 127.0.0.1:48333 [outbound] seed = seed.testnet4.bitcoin.sprovoost.nl:48333 seed = seed.testnet4.wiz.biz:48333 connect_batch_size = 10 connections = 50 [node] maximum_concurrency = 100000 [table.header] expected = 156456 size = 17835984 [table.txs] buckets = 150001 size = 604424 [table.tx] expected = 14810011 size = 9478407 [table.ins] expected = 33127580 size = 17226342 [table.outs] expected = 57089349 size = 5138041 [table.input] size = 9000000000 [table.output] size = 20343818 [table.strong] expected = 14810011 size = 1629101 [table.candidate] buckets = 150001 [table.confirmed] buckets = 150001 [table.state] buckets = 150001 [table.scan] buckets = 150001
dropped from 78.2 to 48.6 mins. This means that a combined SP + CF run should sit at the CF cost until taproot kicks in, and then should rise instead at just slightly above the SP rate.
11.7GB. This is the result of an optimization that makes the strong table (confirmed tx->block) into a head only arraymap, eliminating the hashmap. More than the size reduction, this represents what should be a significant performance improvement for confirmation and address history.poolstl today, because it was a significant amount of code that we don't use, and I needed to modify the small amount that we do use. So that's been replaced, and it was our last internal or external dependency apart from boost.--with-embedded so that the embedded web pages can be excluded. When this is not defined (on server) the embedded data is defaulted to empty, which enables the local files system load. If that is not set the API is still served for both admin and native interfaces. This reduces the size of the binary by 5-11% depending on OS.The base store size is now reduced by11.7GB. This is the result of an optimization that makes thestrongtable (confirmed tx->block) into a head only arraymap, eliminating the hashmap.
macOS pruned 10GB milestone dropped from 72 mins to 41 mins. The linux/windows milestones didn't change, as they remain network limited. Validation time on the minimum RAM (18GB) mac dropped at least 2 hours (partial run).
So I'm going to drop the RAM schedule for macOS mins from 10/18GN to 8/16GB to match the others, and then reverify. This will result in consistent default head sizings by RAM on any OS.
Also, all of the bigmac runs in the past, and these new ones, were running with AVX-512 enabled. But bigmac has the crippled chip, and no shani, so this materially hurts performance. The new startup config code highlighted the issue. So the verification runs will be compiled with AVX512 off (AVX2), and will certainly benefit from that as well.
Finally, the strong table (head only) is written in purely sequential order, and read in the validation partial order (organized by concurrency window), but was still configured as random access (hashmap). So this will also be updated for the verification runs and should assist validation further.
Total store size shrinks by 11.7GB, but the head gets almost 2GB larger. This slows snapshot/recovery a bit (maximal head set at 950k now 19.9GB). But the head being an arraymap means that its just streaming appends to the head as blocks arrive, total write ordering. So we don't force this head to be resident. That change was verified to be very effective. It is flushed to disk quickly after write. So the net head-resident space actually shrinks.11x larger than bs'. Nevertheless, we are much faster cold for 0-10 entries, very respectable for middle tier, and significantly faster for very large sets. So I figured it isn't worth the extra 200GB or so. Fulcrum can also win on the largest sets with an unbounded cache setting, this shows its installed default (as it shows our default hashmap load factors, which target a 32GB machine).Slack #general channel has forever been accessible through a publicly-posted (our system wiki menu, and multiple Twitter/X postings) open invite, and I don't believe we have ever blocked anyone, and there are many pseudonymous lurkers (267 current "members" in all).
As we approach release we believe it's important that people using the software can easily get a good sense of our process and our long history. Unfortunately this channel covers only the past 9 years or so, with 6 more on our email list and IRC, though the history here is substantial. In order to make the content both linkable and searchable We'll be setting up a #general mirror (with history), linked from our web site.
Given that it's already public this isn't a change except in making it easier to work with.
*Included*
• Every message, thread, reaction and attachment (images, PDFs, snippets, videos) in #general.
• Each member's display name, full name as shown in Slack, avatar, and profile title if set.
*Not included*
• Email addresses, phone numbers and Skype handles from member profiles.
• Time zones, status text, custom profile fields and separate first/last name fields.
• Gravatar links (they encode a hash of your email). Avatars are stored as images only.
• Other channels, DMs and huddle transcripts.
*Unchanged*
Message text is archived as written. A few messages contain email addresses that people posted themselves; there are no phone numbers.
http client-server benchmark numbers are about to jump.
This was the result of throughput (vs. latency) testing. bs latency is better than bc on all requests except for block (which makes sense, since the whole bc store is just whole blocks on disk, making that faster and everything else slower). But the network architecture of bc limits its ability to deliver those blocks concurrently.
bs doesn't have that limit, but it was hitting a ceiling in throughput at around 16 threads. The stream was the bottleneck, it just wasn't obvious until measuring throughput. But it also creates up to a 54% hit on latency."I was a beginner, sorry. On Saturday, October 17, 2026, at 14:11, Tarhadi <@.> wrote: ..."*
inv message.getdata. Transactions not requested within 1 second are recorded as unrequested and skipped.tx message. The clock starts as that send completes.rawtx subscription. If it doesn’t arrive within 1 second, it’s recorded as unnotified.inv/getdata round trip is timed separately and not included.