Bitcoin full node and query server

Jul 7, 2026

View in context in the libbitcoin Slack #general mirror.

Vano Chkheidze10:57
Hi all,

We finished the current libbitcoin direct-integration benchmark/example package for `shrec/UltrafastSecp256k1`.

The goal of this integration path is:

- Direct C++ integration via `<ufsecp/libbitcoin.hpp>`
- No C ABI dependency for libbitcoin integration
- No bridge layer
- No shim layer
- Build-flag controlled inclusion
- Only the libbitcoin-relevant public-data entrypoints exposed
- CPU fallback kept available, GPU hooks used when enabled/available

## Main links

Integration guide:
https://github.com/shrec/UltrafastSecp256k1/blob/dev/docs/LIBBITCOIN_INTEGRATION.md

Public operations benchmark report:
https://github.com/shrec/UltrafastSecp256k1/blob/dev/docs/LIBBITCOIN_PUBLIC_OPS_BENCHMARKS.md

Public operations example:
https://github.com/shrec/UltrafastSecp256k1/blob/dev/compat/libbitcoin_direct/examples/public_ops_example.cpp

Public operations benchmark source:
https://github.com/shrec/UltrafastSecp256k1/blob/dev/compat/libbitcoin_direct/bench/bench_public_ops.cpp

Hash256 var GPU/direct report:
https://github.com/shrec/UltrafastSecp256k1/blob/dev/docs/LIBBITCOIN_HASH256_VAR_GPU_REPORT.md

Libbitcoin direct README:
https://github.com/shrec/UltrafastSecp256k1/blob/dev/compat/libbitcoin_direct/README.md

Current integration commit:
https://github.com/shrec/UltrafastSecp256k1/commit/72b300d0561c3a2ccf371565e54630060b633f95

## Covered libbitcoin-facing entrypoints

The public direct C++ header now covers benchmark/example paths for:

- `xonly_validate_batch`
- `pubkey_validate_batch`
- `taproot_commitment_verify_batch`
- `tagged_hash_batch`
- `tagged_hash_batch` tag-string overload
- `tagged_hash_var_batch`
- `hash256_batch`
- `hash256_var_batch`

The example target calls all of these through `<ufsecp/libbitcoin.hpp>`.

## Build flags

For the direct libbitcoin package:

```bash
cmake -S . -B out/libbitcoin-public-ops-bench -G Ninja \
  -DCMAKE_BUILD_TYPE=Release \
  -DSECP256K1_BUILD_LIBBITCOIN=ON \
  -DSECP256K1_BUILD_LIBBITCOIN_TESTS=ON \
  -DSECP256K1_BUILD_LIBBITCOIN_BENCH=ON \
  -DSECP256K1_BUILD_LIBBITCOIN_EXAMPLES=ON
Then build:
cmake --build out/libbitcoin-public-ops-bench --target \
  example_lbtc_public_ops \
  bench_lbtc_public_ops \
  bench_lbtc_hash256_var \
  bench_lbtc_direct_batch \
  test_lbtc_direct_verify \
  test_lbtc_direct_operations -j
Run tests:
ctest --test-dir out/libbitcoin-public-ops-bench -R lbtc_direct --output-on-failure
Run example:
out/libbitcoin-public-ops-bench/compat/libbitcoin_direct/example_lbtc_public_ops
Expected example result:
example_lbtc_public_ops: PASS (direct C++, no C ABI/shim/bridge)
Run full public-ops benchmark:
out/libbitcoin-public-ops-bench/compat/libbitcoin_direct/bench_lbtc_public_ops \
  8192 3 80 512 80 512 \
  --json out/libbitcoin-public-ops-bench/lbtc_public_ops.json
Run hash256-var benchmark:
out/libbitcoin-public-ops-bench/compat/libbitcoin_direct/bench_lbtc_hash256_var \
  262144 5 512 80 512 \
  --json out/libbitcoin-public-ops-bench/lbtc_hash256_var.json
Local baseline results These numbers are from a local CPU/direct baseline run with GPU disabled, so they should be treated as correctness and direct-call overhead evidence, not as GPU acceleration claims. bench_lbtc_public_ops, production direct path: operationthroughputxonly_validate0.15 M rows/spubkey_validate0.29 M rows/scommitment_verify0.04 M rows/stagged_hash9.39 M rows/stagged_hash_tag_overload9.42 M rows/stagged_hash_var4.46 M rows/shash2566.33 M rows/shash256_var4.11 M rows/s bench_lbtc_hash256_var local baseline: modethroughputpayload bandwidthns/rowserial reference4.60 M rows/s1296.68 MiB/s217.3direct CPU forced4.67 M rows/s1316.40 MiB/s214.0direct production4.64 M rows/s1307.02 MiB/s215.5 Validation completed locally The following passed locally:
  • libbitcoin direct tests
  • public operations example
  • public operations benchmark JSON generation
  • hash256-var benchmark JSON generation
  • source graph quality check
  • backend assurance validation
  • doc drift check
  • fast local gates
Notes The direct integration is intentionally limited to libbitcoin-relevant public-data operations. Secret-bearing signing paths remain outside this libbitcoin direct public-ops package and continue to follow the project’s CT/security rules. GPU-enabled benchmark numbers should be generated separately on the target CUDA/OpenCL/Metal hardware with the GPU build flags enabled. The current published local numbers are CPU/direct baselines.