Page MenuHomePhabricator

[chronik] fix blockchain.block.headers electrum endpoint
ClosedPublic

Authored by PiRK on Sep 4 2025, 09:22.

Details

Reviewers
Fabien
Group Reviewers
Restricted Project
Commits
rABCd3339e23dbba: [chronik] fix blockchain.block.headers electrum endpoint
Summary

We accidentaly returned an error when more than 500 headers were requested. The limit relevant to the Electrum protocol is 2016, and to match Fulcrum's behavior we don't return an error if we exceed it, we just cap the number of headers to 2016.

Depends on D18563

Test Plan

ninja check-functional

Test it locally on mainnet:

./src/bitcoind  -chronik  -chronikelectrumbind="127.0.0.1:50001:t"
echo '{"jsonrpc": "2.0", "method": "blockchain.block.headers", "params": [800000, 2016], "id": "test"}' | nc 127.0.0.1 50001

Diff Detail

Repository
rABC Bitcoin ABC
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

Tail of the build log:

[245/596] Building CXX object src/CMakeFiles/common.dir/core_write.cpp.o
[246/596] Building CXX object src/CMakeFiles/common.dir/outputtype.cpp.o
[247/596] Building CXX object src/CMakeFiles/common.dir/core_read.cpp.o
[248/596] Building CXX object src/CMakeFiles/common.dir/policy/policy.cpp.o
[249/596] Building CXX object src/CMakeFiles/common.dir/netbase.cpp.o
[250/596] Building CXX object src/CMakeFiles/common.dir/networks/abc/chainparamsconstants.cpp.o
[251/596] Building CXX object src/CMakeFiles/common.dir/scheduler.cpp.o
[252/596] Building CXX object src/CMakeFiles/script.dir/script/bitfield.cpp.o
[253/596] Building CXX object src/CMakeFiles/common.dir/warnings.cpp.o
[254/596] Building CXX object src/CMakeFiles/common.dir/protocol.cpp.o
[255/596] Building CXX object src/CMakeFiles/common.dir/networks/abc/checkpoints.cpp.o
[256/596] Building CXX object src/CMakeFiles/common.dir/rpc/request.cpp.o
[257/596] Building CXX object src/CMakeFiles/script.dir/script/script_error.cpp.o
[258/596] Building CXX object src/CMakeFiles/common.dir/rpc/rawtransaction_util.cpp.o
[259/596] Building CXX object src/CMakeFiles/common.dir/psbt.cpp.o
[260/596] Building CXX object src/CMakeFiles/script.dir/script/sigencoding.cpp.o
[261/596] Building CXX object src/CMakeFiles/script.dir/script/intmath.cpp.o
[262/596] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/arith_uint256.cpp.o
[263/596] Building CXX object src/CMakeFiles/script.dir/script/interpreter.cpp.o
[264/596] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/hash.cpp.o
[265/596] Building CXX object src/CMakeFiles/common.dir/rpc/util.cpp.o
[266/596] Building CXX object src/CMakeFiles/script.dir/script/sign.cpp.o
[267/596] Building CXX object src/CMakeFiles/script.dir/script/standard.cpp.o
[268/596] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/primitives/transaction.cpp.o
[269/596] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/uint256.cpp.o
[270/596] Building CXX object src/CMakeFiles/script.dir/script/descriptor.cpp.o
[271/596] Building CXX object src/CMakeFiles/script.dir/script/script.cpp.o
[272/596] Building CXX object src/CMakeFiles/script.dir/script/signingprovider.cpp.o
[273/596] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/pubkey.cpp.o
[274/596] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/util/strencodings.cpp.o
[275/596] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/amount.cpp.o
[276/596] Building C object src/secp256k1/CMakeFiles/recover-bench.dir/src/bench_recover.c.o
[277/596] Building C object src/secp256k1/CMakeFiles/verify-bench.dir/src/bench_verify.c.o
[278/596] Building C object src/secp256k1/CMakeFiles/sign-bench.dir/src/bench_sign.c.o
[279/596] Building C object src/secp256k1/CMakeFiles/secp256k1.dir/src/secp256k1.c.o
[280/596] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/tx_check.cpp.o
[281/596] Building CXX object src/CMakeFiles/bitcoinconsensus-shared.dir/script/bitcoinconsensus.cpp.o
[282/596] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[283/596] Building C object src/secp256k1/CMakeFiles/ecmult-bench.dir/src/bench_ecmult.c.o
[284/596] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[285/596] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[286/596] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[287/596] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[288/596] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[289/596] Linking C static library src/secp256k1/libsecp256k1.a
[290/596] Linking C executable src/secp256k1/recover-bench
[291/596] Linking C executable src/secp256k1/ecmult-bench
[292/596] Linking C executable src/secp256k1/sign-bench
[293/596] Linking C executable src/secp256k1/verify-bench
[294/596] Linking C executable src/secp256k1/internal-bench
[295/596] Linking CXX static library src/libbitcoinconsensus.a
[296/596] Linking CXX static library src/libscript.a
[297/596] Linking CXX static library src/libcommon.a
[298/596] Linking CXX shared library src/libbitcoinconsensus.so.0.31.11
[299/596] Creating library symlink src/libbitcoinconsensus.so.0 src/libbitcoinconsensus.so
[300/596] Linking CXX executable src/iguana/iguana
[301/596] Linking CXX executable src/bitcoin-cli
[302/596] Linking CXX executable src/bitcoin-tx
ninja: build stopped: cannot make progress due to previous errors.
Build ecash-lib-integration-tests failed with exit code 1

Tail of the build log:

    Checking tungstenite v0.24.0
    Checking url v2.5.4
    Checking toml_datetime v0.6.11
    Checking serde_spanned v0.6.9
   Compiling pyo3 v0.23.5
    Checking topo_sort v0.4.0
    Checking seahash v4.1.0
    Checking toml_write v0.1.2
    Checking mime v0.3.17
    Checking winnow v0.7.11
   Compiling chronik-bridge v0.1.0 (/work/chronik/chronik-bridge)
    Checking tokio-tungstenite v0.24.0
    Checking axum-core v0.4.5
    Checking hyper-util v0.1.14
   Compiling karyon_jsonrpc_macro v0.3.4
    Checking memoffset v0.9.1
    Checking tower v0.5.2
    Checking serde_urlencoded v0.7.1
    Checking futures-executor v0.3.31
    Checking serde_path_to_error v0.1.17
    Checking unindent v0.2.4
    Checking unicode-segmentation v1.12.0
    Checking matchit v0.7.3
    Checking base64 v0.22.1
    Checking futures v0.3.31
    Checking webpki-roots v1.0.1
    Checking convert_case v0.6.0
    Checking tower-http v0.5.2
   Compiling librocksdb-sys v0.11.0+8.1.1
    Checking toml_edit v0.22.27
    Checking axum v0.7.9
   Compiling pyo3-macros v0.23.5
    Checking toml v0.8.23
    Checking chronik-plugin-impl v0.1.0 (/work/chronik/chronik-plugin-impl)
   Compiling aws-lc-rs v1.13.1
   Compiling rustls v0.23.28
    Checking rustls-webpki v0.103.3
    Checking tokio-rustls v0.26.2
    Checking karyon_async_rustls v0.3.4
    Checking karyon_net v0.3.4
    Checking karyon_jsonrpc v0.3.4
    Checking rocksdb v0.21.0
    Checking chronik-db v0.1.0 (/work/chronik/chronik-db)
    Checking chronik-indexer v0.1.0 (/work/chronik/chronik-indexer)
    Checking chronik-http v0.1.0 (/work/chronik/chronik-http)
error: mismatched closing delimiter: `}`
    --> chronik/chronik-http/src/electrum.rs:1680:21
     |
1625 |     async fn block_headers(&self, params: Value) -> Result<Value, RPCError> {
     |                                                                             - closing delimiter possibly meant for this
...
1680 |             .map_err(|_| RPCError::CustomError(8, "AAAAAA".to_string())?;
     |                     ^ unclosed delimiter
...
1711 |     }
     |     ^ mismatched closing delimiter

error: could not compile `chronik-http` (lib) due to 1 previous error
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik failed with exit code 1

Tail of the build log:

[127/333] Building CXX object src/CMakeFiles/common.dir/eventloop.cpp.o
[128/333] Building CXX object src/CMakeFiles/common.dir/consensus/merkle.cpp.o
[129/333] Building CXX object src/CMakeFiles/common.dir/base58.cpp.o
[130/333] Building CXX object src/CMakeFiles/common.dir/common/system.cpp.o
[131/333] Building CXX object src/CMakeFiles/common.dir/compressor.cpp.o
[132/333] Building CXX object src/CMakeFiles/common.dir/config.cpp.o
[133/333] Building CXX object src/CMakeFiles/common.dir/chainparams.cpp.o
[134/333] Building CXX object src/CMakeFiles/common.dir/common/bloom.cpp.o
[135/333] Building CXX object src/CMakeFiles/common.dir/cashaddrenc.cpp.o
[136/333] Building CXX object src/CMakeFiles/common.dir/feerate.cpp.o
[137/333] Building CXX object src/CMakeFiles/common.dir/common/init.cpp.o
[138/333] Building CXX object src/CMakeFiles/common.dir/common/configfile.cpp.o
[139/333] Building CXX object src/CMakeFiles/common.dir/coins.cpp.o
[140/333] Building CXX object src/CMakeFiles/common.dir/merkleblock.cpp.o
[141/333] Building CXX object src/CMakeFiles/common.dir/key.cpp.o
[142/333] Building CXX object src/CMakeFiles/common.dir/key_io.cpp.o
[143/333] Building CXX object src/CMakeFiles/common.dir/net_permissions.cpp.o
[144/333] Building CXX object src/CMakeFiles/common.dir/kernel/chainparams.cpp.o
[145/333] Building CXX object src/CMakeFiles/common.dir/outputtype.cpp.o
[146/333] Building CXX object src/CMakeFiles/common.dir/common/args.cpp.o
[147/333] Building CXX object src/CMakeFiles/common.dir/policy/policy.cpp.o
[148/333] Building CXX object src/CMakeFiles/common.dir/primitives/block.cpp.o
[149/333] Building CXX object src/CMakeFiles/common.dir/networks/abc/chainparamsconstants.cpp.o
[150/333] Building CXX object src/CMakeFiles/script.dir/script/bitfield.cpp.o
[151/333] Building CXX object src/CMakeFiles/common.dir/core_write.cpp.o
[152/333] Building CXX object src/CMakeFiles/common.dir/scheduler.cpp.o
[153/333] Building CXX object src/CMakeFiles/common.dir/netaddress.cpp.o
[154/333] Building CXX object src/CMakeFiles/script.dir/script/intmath.cpp.o
[155/333] Building CXX object src/CMakeFiles/common.dir/netbase.cpp.o
[156/333] Building CXX object src/CMakeFiles/common.dir/warnings.cpp.o
[157/333] Building CXX object src/CMakeFiles/common.dir/protocol.cpp.o
[158/333] Building CXX object src/CMakeFiles/common.dir/core_read.cpp.o
[159/333] Building CXX object src/CMakeFiles/script.dir/script/script_error.cpp.o
[160/333] Building CXX object src/CMakeFiles/common.dir/networks/abc/checkpoints.cpp.o
[161/333] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/arith_uint256.cpp.o
[162/333] Building CXX object src/CMakeFiles/common.dir/rpc/request.cpp.o
[163/333] Building CXX object src/CMakeFiles/script.dir/script/script.cpp.o
[164/333] Building CXX object src/CMakeFiles/script.dir/script/sigencoding.cpp.o
[165/333] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/hash.cpp.o
[166/333] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/uint256.cpp.o
[167/333] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/util/strencodings.cpp.o
[168/333] Building CXX object src/CMakeFiles/common.dir/rpc/rawtransaction_util.cpp.o
[169/333] Building CXX object src/CMakeFiles/script.dir/script/standard.cpp.o
[170/333] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/pubkey.cpp.o
[171/333] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/primitives/transaction.cpp.o
[172/333] Building CXX object src/CMakeFiles/script.dir/script/interpreter.cpp.o
[173/333] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/amount.cpp.o
[174/333] Building C object src/secp256k1/CMakeFiles/secp256k1.dir/src/secp256k1.c.o
[175/333] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/tx_check.cpp.o
[176/333] Linking C static library src/secp256k1/libsecp256k1.a
[177/333] Linking CXX static library src/libbitcoinconsensus.a
[178/333] Building CXX object src/CMakeFiles/script.dir/script/sign.cpp.o
[179/333] Building CXX object src/CMakeFiles/common.dir/psbt.cpp.o
[180/333] Building CXX object src/CMakeFiles/script.dir/script/signingprovider.cpp.o
[181/333] Building CXX object src/CMakeFiles/common.dir/rpc/util.cpp.o
[182/333] Building CXX object src/CMakeFiles/script.dir/script/descriptor.cpp.o
[183/333] Linking CXX static library src/libscript.a
[184/333] Linking CXX static library src/libcommon.a
ninja: build stopped: cannot make progress due to previous errors.
Build electrum-functional-tests failed with exit code 1

Tail of the build log:

[245/596] Building CXX object src/CMakeFiles/common.dir/policy/policy.cpp.o
[246/596] Building CXX object src/CMakeFiles/common.dir/networks/abc/chainparamsconstants.cpp.o
[247/596] Building CXX object src/CMakeFiles/common.dir/netaddress.cpp.o
[248/596] Building CXX object src/CMakeFiles/script.dir/script/bitfield.cpp.o
[249/596] Building CXX object src/CMakeFiles/common.dir/scheduler.cpp.o
[250/596] Building CXX object src/CMakeFiles/common.dir/netbase.cpp.o
[251/596] Building CXX object src/CMakeFiles/script.dir/script/intmath.cpp.o
[252/596] Building CXX object src/CMakeFiles/common.dir/core_write.cpp.o
[253/596] Building CXX object src/CMakeFiles/common.dir/protocol.cpp.o
[254/596] Building CXX object src/CMakeFiles/common.dir/warnings.cpp.o
[255/596] Building CXX object src/CMakeFiles/common.dir/core_read.cpp.o
[256/596] Building CXX object src/CMakeFiles/script.dir/script/script_error.cpp.o
[257/596] Building CXX object src/CMakeFiles/common.dir/networks/abc/checkpoints.cpp.o
[258/596] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/arith_uint256.cpp.o
[259/596] Building CXX object src/CMakeFiles/common.dir/rpc/request.cpp.o
[260/596] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/hash.cpp.o
[261/596] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/uint256.cpp.o
[262/596] Building CXX object src/CMakeFiles/script.dir/script/script.cpp.o
[263/596] Building CXX object src/CMakeFiles/script.dir/script/sigencoding.cpp.o
[264/596] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/util/strencodings.cpp.o
[265/596] Building CXX object src/CMakeFiles/common.dir/rpc/rawtransaction_util.cpp.o
[266/596] Building CXX object src/CMakeFiles/script.dir/script/standard.cpp.o
[267/596] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/pubkey.cpp.o
[268/596] Building C object src/secp256k1/CMakeFiles/recover-bench.dir/src/bench_recover.c.o
[269/596] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/primitives/transaction.cpp.o
[270/596] Building C object src/secp256k1/CMakeFiles/sign-bench.dir/src/bench_sign.c.o
[271/596] Building C object src/secp256k1/CMakeFiles/verify-bench.dir/src/bench_verify.c.o
[272/596] Building CXX object src/CMakeFiles/script.dir/script/interpreter.cpp.o
[273/596] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/amount.cpp.o
[274/596] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/tx_check.cpp.o
[275/596] Building CXX object src/CMakeFiles/script.dir/script/sign.cpp.o
[276/596] Building CXX object src/CMakeFiles/bitcoinconsensus-shared.dir/script/bitcoinconsensus.cpp.o
[277/596] Building CXX object src/CMakeFiles/common.dir/psbt.cpp.o
[278/596] Building CXX object src/CMakeFiles/script.dir/script/signingprovider.cpp.o
[279/596] Building C object src/secp256k1/CMakeFiles/secp256k1.dir/src/secp256k1.c.o
[280/596] Linking C static library src/secp256k1/libsecp256k1.a
[281/596] Linking C executable src/secp256k1/recover-bench
[282/596] Linking C executable src/secp256k1/sign-bench
[283/596] Linking C executable src/secp256k1/verify-bench
[284/596] Linking CXX static library src/libbitcoinconsensus.a
[285/596] Building CXX object src/CMakeFiles/common.dir/rpc/util.cpp.o
[286/596] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[287/596] Linking C executable src/secp256k1/internal-bench
[288/596] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[289/596] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[290/596] Building C object src/secp256k1/CMakeFiles/ecmult-bench.dir/src/bench_ecmult.c.o
[291/596] Linking C executable src/secp256k1/ecmult-bench
[292/596] Building CXX object src/CMakeFiles/script.dir/script/descriptor.cpp.o
[293/596] Linking CXX static library src/libscript.a
[294/596] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[295/596] Linking CXX static library src/libcommon.a
[296/596] Linking CXX shared library src/libbitcoinconsensus.so.0.31.11
[297/596] Creating library symlink src/libbitcoinconsensus.so.0 src/libbitcoinconsensus.so
[298/596] Linking CXX executable src/bitcoin-cli
[299/596] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[300/596] Linking CXX executable src/iguana/iguana
[301/596] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[302/596] Linking CXX executable src/bitcoin-tx
ninja: build stopped: cannot make progress due to previous errors.
Build ecash-agora-integration-tests failed with exit code 1

Tail of the build log:

[245/596] Building CXX object src/CMakeFiles/common.dir/primitives/block.cpp.o
[246/596] Building CXX object src/CMakeFiles/common.dir/netaddress.cpp.o
[247/596] Building CXX object src/CMakeFiles/common.dir/networks/abc/chainparamsconstants.cpp.o
[248/596] Building CXX object src/CMakeFiles/script.dir/script/bitfield.cpp.o
[249/596] Building CXX object src/CMakeFiles/script.dir/script/intmath.cpp.o
[250/596] Building CXX object src/CMakeFiles/common.dir/scheduler.cpp.o
[251/596] Building CXX object src/CMakeFiles/common.dir/warnings.cpp.o
[252/596] Building CXX object src/CMakeFiles/common.dir/netbase.cpp.o
[253/596] Building CXX object src/CMakeFiles/common.dir/protocol.cpp.o
[254/596] Building CXX object src/CMakeFiles/common.dir/core_write.cpp.o
[255/596] Building CXX object src/CMakeFiles/script.dir/script/script_error.cpp.o
[256/596] Building CXX object src/CMakeFiles/common.dir/core_read.cpp.o
[257/596] Building CXX object src/CMakeFiles/common.dir/networks/abc/checkpoints.cpp.o
[258/596] Building CXX object src/CMakeFiles/common.dir/rpc/request.cpp.o
[259/596] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/arith_uint256.cpp.o
[260/596] Building CXX object src/CMakeFiles/script.dir/script/script.cpp.o
[261/596] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/uint256.cpp.o
[262/596] Building CXX object src/CMakeFiles/script.dir/script/sigencoding.cpp.o
[263/596] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/hash.cpp.o
[264/596] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/util/strencodings.cpp.o
[265/596] Building CXX object src/CMakeFiles/script.dir/script/standard.cpp.o
[266/596] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/pubkey.cpp.o
[267/596] Building CXX object src/CMakeFiles/common.dir/rpc/rawtransaction_util.cpp.o
[268/596] Building CXX object src/CMakeFiles/script.dir/script/interpreter.cpp.o
[269/596] Building C object src/secp256k1/CMakeFiles/recover-bench.dir/src/bench_recover.c.o
[270/596] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/primitives/transaction.cpp.o
[271/596] Building C object src/secp256k1/CMakeFiles/verify-bench.dir/src/bench_verify.c.o
[272/596] Building C object src/secp256k1/CMakeFiles/sign-bench.dir/src/bench_sign.c.o
[273/596] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/amount.cpp.o
[274/596] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/tx_check.cpp.o
[275/596] Building CXX object src/CMakeFiles/bitcoinconsensus-shared.dir/script/bitcoinconsensus.cpp.o
[276/596] Building CXX object src/CMakeFiles/script.dir/script/sign.cpp.o
[277/596] Building CXX object src/CMakeFiles/script.dir/script/signingprovider.cpp.o
[278/596] Building CXX object src/CMakeFiles/common.dir/psbt.cpp.o
[279/596] Building C object src/secp256k1/CMakeFiles/secp256k1.dir/src/secp256k1.c.o
[280/596] Linking C static library src/secp256k1/libsecp256k1.a
[281/596] Linking C executable src/secp256k1/sign-bench
[282/596] Linking C executable src/secp256k1/recover-bench
[283/596] Linking C executable src/secp256k1/verify-bench
[284/596] Linking CXX static library src/libbitcoinconsensus.a
[285/596] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[286/596] Linking C executable src/secp256k1/internal-bench
[287/596] Building CXX object src/CMakeFiles/common.dir/rpc/util.cpp.o
[288/596] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[289/596] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[290/596] Building C object src/secp256k1/CMakeFiles/ecmult-bench.dir/src/bench_ecmult.c.o
[291/596] Linking C executable src/secp256k1/ecmult-bench
[292/596] Building CXX object src/CMakeFiles/script.dir/script/descriptor.cpp.o
[293/596] Linking CXX static library src/libscript.a
[294/596] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[295/596] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[296/596] Linking CXX static library src/libcommon.a
[297/596] Linking CXX shared library src/libbitcoinconsensus.so.0.31.11
[298/596] Creating library symlink src/libbitcoinconsensus.so.0 src/libbitcoinconsensus.so
[299/596] Linking CXX executable src/iguana/iguana
[300/596] Linking CXX executable src/bitcoin-cli
[301/596] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[302/596] Linking CXX executable src/bitcoin-tx
ninja: build stopped: cannot make progress due to previous errors.
Build chronik-client-integration-tests failed with exit code 1

Tail of the build log:

    Checking tungstenite v0.24.0
    Checking url v2.5.4
    Checking serde_spanned v0.6.9
    Checking toml_datetime v0.6.11
   Compiling pyo3 v0.23.5
    Checking mime v0.3.17
    Checking winnow v0.7.11
    Checking seahash v4.1.0
    Checking topo_sort v0.4.0
    Checking toml_write v0.1.2
    Checking axum-core v0.4.5
    Checking tokio-tungstenite v0.24.0
    Checking hyper-util v0.1.14
   Compiling karyon_jsonrpc_macro v0.3.4
   Compiling chronik-bridge v0.1.0 (/work/chronik/chronik-bridge)
    Checking memoffset v0.9.1
    Checking tower v0.5.2
    Checking serde_urlencoded v0.7.1
    Checking futures-executor v0.3.31
    Checking serde_path_to_error v0.1.17
    Checking base64 v0.22.1
    Checking unindent v0.2.4
    Checking matchit v0.7.3
    Checking unicode-segmentation v1.12.0
    Checking tower-http v0.5.2
    Checking futures v0.3.31
    Checking webpki-roots v1.0.1
    Checking convert_case v0.6.0
   Compiling librocksdb-sys v0.11.0+8.1.1
    Checking toml_edit v0.22.27
    Checking axum v0.7.9
   Compiling pyo3-macros v0.23.5
    Checking toml v0.8.23
    Checking chronik-plugin-impl v0.1.0 (/work/chronik/chronik-plugin-impl)
   Compiling aws-lc-rs v1.13.1
   Compiling rustls v0.23.28
    Checking rustls-webpki v0.103.3
    Checking tokio-rustls v0.26.2
    Checking karyon_async_rustls v0.3.4
    Checking karyon_net v0.3.4
    Checking karyon_jsonrpc v0.3.4
    Checking rocksdb v0.21.0
    Checking chronik-db v0.1.0 (/work/chronik/chronik-db)
    Checking chronik-indexer v0.1.0 (/work/chronik/chronik-indexer)
    Checking chronik-http v0.1.0 (/work/chronik/chronik-http)
error: mismatched closing delimiter: `}`
    --> chronik/chronik-http/src/electrum.rs:1680:21
     |
1625 |     async fn block_headers(&self, params: Value) -> Result<Value, RPCError> {
     |                                                                             - closing delimiter possibly meant for this
...
1680 |             .map_err(|_| RPCError::CustomError(8, "AAAAAA".to_string())?;
     |                     ^ unclosed delimiter
...
1711 |     }
     |     ^ mismatched closing delimiter

error: could not compile `chronik-http` (lib) due to 1 previous error
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik-plugins failed with exit code 1

Failed tests logs:

====== Bitcoin ABC functional tests: chronik_electrum_blockchain.py ======

------- Stdout: -------
2025-09-04T09:46:58.271000Z TestFramework (INFO): Initializing test directory /work/abc-ci-builds/build-chronik/test/tmp/test_runner_₿₵_🏃_20250904_094542_20892/chronik_electrum_blockchain_37
2025-09-04T09:46:58.937000Z TestFramework (INFO): Testing the blockchain.headers.get_tip RPC
2025-09-04T09:46:58.938000Z TestFramework (INFO): Testing the blockchain.block.header and blockchain.header.get RPCs
2025-09-04T09:46:58.945000Z TestFramework (INFO): Testing the blockchain.block.headers RPC
2025-09-04T09:47:00.239000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_framework.py", line 152, in main
    self._run_test_internal()
  File "/work/test/functional/test_framework/test_framework.py", line 142, in _run_test_internal
    self.run_test()
  File "/work/test/functional/chronik_electrum_blockchain.py", line 83, in run_test
    self.test_block_header()
  File "/work/test/functional/chronik_electrum_blockchain.py", line 1001, in test_block_header
    self.client.blockchain.block.headers(1, num).error is None
AssertionError: got an error for 1000 headers
2025-09-04T09:47:00.290000Z TestFramework (INFO): Stopping nodes
2025-09-04T09:47:00.391000Z TestFramework (WARNING): Not cleaning up dir /work/abc-ci-builds/build-chronik/test/tmp/test_runner_₿₵_🏃_20250904_094542_20892/chronik_electrum_blockchain_37
2025-09-04T09:47:00.391000Z TestFramework (ERROR): Test failed. Test logging available at /work/abc-ci-builds/build-chronik/test/tmp/test_runner_₿₵_🏃_20250904_094542_20892/chronik_electrum_blockchain_37/test_framework.log
2025-09-04T09:47:00.391000Z TestFramework (ERROR): 
2025-09-04T09:47:00.391000Z TestFramework (ERROR): Hint: Call /work/test/functional/combine_logs.py '/work/abc-ci-builds/build-chronik/test/tmp/test_runner_₿₵_🏃_20250904_094542_20892/chronik_electrum_blockchain_37' to consolidate all logs
2025-09-04T09:47:00.392000Z TestFramework (ERROR): 
2025-09-04T09:47:00.392000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2025-09-04T09:47:00.392000Z TestFramework (ERROR): https://github.com/Bitcoin-ABC/bitcoin-abc/issues
2025-09-04T09:47:00.392000Z TestFramework (ERROR):

Each failure log is accessible here:
Bitcoin ABC functional tests: chronik_electrum_blockchain.py

Failed tests logs:

====== Bitcoin ABC functional tests: chronik_electrum_blockchain.py ======

------- Stdout: -------
2025-09-04T09:48:01.764000Z TestFramework (INFO): Initializing test directory /work/abc-ci-builds/build-chronik-plugins/test/tmp/test_runner_₿₵_🏃_20250904_094653_39159/chronik_electrum_blockchain_37
2025-09-04T09:48:02.402000Z TestFramework (INFO): Testing the blockchain.headers.get_tip RPC
2025-09-04T09:48:02.403000Z TestFramework (INFO): Testing the blockchain.block.header and blockchain.header.get RPCs
2025-09-04T09:48:02.409000Z TestFramework (INFO): Testing the blockchain.block.headers RPC
2025-09-04T09:48:03.630000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_framework.py", line 152, in main
    self._run_test_internal()
  File "/work/test/functional/test_framework/test_framework.py", line 142, in _run_test_internal
    self.run_test()
  File "/work/test/functional/chronik_electrum_blockchain.py", line 83, in run_test
    self.test_block_header()
  File "/work/test/functional/chronik_electrum_blockchain.py", line 1001, in test_block_header
    self.client.blockchain.block.headers(1, num).error is None
AssertionError: got an error for 1000 headers
2025-09-04T09:48:03.682000Z TestFramework (INFO): Stopping nodes
2025-09-04T09:48:03.833000Z TestFramework (WARNING): Not cleaning up dir /work/abc-ci-builds/build-chronik-plugins/test/tmp/test_runner_₿₵_🏃_20250904_094653_39159/chronik_electrum_blockchain_37
2025-09-04T09:48:03.833000Z TestFramework (ERROR): Test failed. Test logging available at /work/abc-ci-builds/build-chronik-plugins/test/tmp/test_runner_₿₵_🏃_20250904_094653_39159/chronik_electrum_blockchain_37/test_framework.log
2025-09-04T09:48:03.833000Z TestFramework (ERROR): 
2025-09-04T09:48:03.833000Z TestFramework (ERROR): Hint: Call /work/test/functional/combine_logs.py '/work/abc-ci-builds/build-chronik-plugins/test/tmp/test_runner_₿₵_🏃_20250904_094653_39159/chronik_electrum_blockchain_37' to consolidate all logs
2025-09-04T09:48:03.833000Z TestFramework (ERROR): 
2025-09-04T09:48:03.833000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2025-09-04T09:48:03.833000Z TestFramework (ERROR): https://github.com/Bitcoin-ABC/bitcoin-abc/issues
2025-09-04T09:48:03.833000Z TestFramework (ERROR):

Each failure log is accessible here:
Bitcoin ABC functional tests: chronik_electrum_blockchain.py

PiRK retitled this revision from fix blockchain.block.headers endpoint to [chronik] fix blockchain.block.headers endpoint.
PiRK edited the summary of this revision. (Show Details)
PiRK edited the test plan for this revision. (Show Details)

actually fix the issue and the tests

test/functional/chronik_electrum_blockchain.py
92 ↗(On Diff #55477)

we run it last so that the 2016 extra blocks don't affect other tests (in practice self.test_transaction_subscribe() is the only one that seems affected)

Failed tests logs:

====== Bitcoin ABC functional tests: chronik_block_header.py ======

------- Stdout: -------
2025-09-04T10:25:37.701000Z TestFramework (INFO): Initializing test directory /work/abc-ci-builds/build-chronik/test/tmp/test_runner_₿₵_🏃_20250904_102326_46378/chronik_block_header_226
2025-09-04T10:25:38.247000Z TestFramework (INFO): Test the /header endpoint before mining any block
2025-09-04T10:25:38.250000Z TestFramework (INFO): Test the /headers endpoint before mining any block
2025-09-04T10:25:38.251000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_framework.py", line 152, in main
    self._run_test_internal()
  File "/work/test/functional/test_framework/test_framework.py", line 142, in _run_test_internal
    self.run_test()
  File "/work/test/functional/chronik_block_header.py", line 89, in run_test
    chronik.block_headers(1, 501).err(400).msg,
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/work/test/functional/test_framework/chronik/client.py", line 38, in err
    raise AssertionError(
AssertionError: Expected error response status 400, but got OK: 
2025-09-04T10:25:38.302000Z TestFramework (INFO): Stopping nodes
2025-09-04T10:25:38.404000Z TestFramework (WARNING): Not cleaning up dir /work/abc-ci-builds/build-chronik/test/tmp/test_runner_₿₵_🏃_20250904_102326_46378/chronik_block_header_226
2025-09-04T10:25:38.404000Z TestFramework (ERROR): Test failed. Test logging available at /work/abc-ci-builds/build-chronik/test/tmp/test_runner_₿₵_🏃_20250904_102326_46378/chronik_block_header_226/test_framework.log
2025-09-04T10:25:38.404000Z TestFramework (ERROR): 
2025-09-04T10:25:38.404000Z TestFramework (ERROR): Hint: Call /work/test/functional/combine_logs.py '/work/abc-ci-builds/build-chronik/test/tmp/test_runner_₿₵_🏃_20250904_102326_46378/chronik_block_header_226' to consolidate all logs
2025-09-04T10:25:38.404000Z TestFramework (ERROR): 
2025-09-04T10:25:38.404000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2025-09-04T10:25:38.404000Z TestFramework (ERROR): https://github.com/Bitcoin-ABC/bitcoin-abc/issues
2025-09-04T10:25:38.404000Z TestFramework (ERROR):

Each failure log is accessible here:
Bitcoin ABC functional tests: chronik_block_header.py

Failed tests logs:

====== Bitcoin ABC functional tests: chronik_block_header.py ======

------- Stdout: -------
2025-09-04T10:27:18.017000Z TestFramework (INFO): Initializing test directory /work/abc-ci-builds/build-chronik-plugins/test/tmp/test_runner_₿₵_🏃_20250904_102510_20441/chronik_block_header_226
2025-09-04T10:27:18.317000Z TestFramework (INFO): Test the /header endpoint before mining any block
2025-09-04T10:27:18.320000Z TestFramework (INFO): Test the /headers endpoint before mining any block
2025-09-04T10:27:18.321000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_framework.py", line 152, in main
    self._run_test_internal()
  File "/work/test/functional/test_framework/test_framework.py", line 142, in _run_test_internal
    self.run_test()
  File "/work/test/functional/chronik_block_header.py", line 89, in run_test
    chronik.block_headers(1, 501).err(400).msg,
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/work/test/functional/test_framework/chronik/client.py", line 38, in err
    raise AssertionError(
AssertionError: Expected error response status 400, but got OK: 
2025-09-04T10:27:18.373000Z TestFramework (INFO): Stopping nodes
2025-09-04T10:27:18.474000Z TestFramework (WARNING): Not cleaning up dir /work/abc-ci-builds/build-chronik-plugins/test/tmp/test_runner_₿₵_🏃_20250904_102510_20441/chronik_block_header_226
2025-09-04T10:27:18.474000Z TestFramework (ERROR): Test failed. Test logging available at /work/abc-ci-builds/build-chronik-plugins/test/tmp/test_runner_₿₵_🏃_20250904_102510_20441/chronik_block_header_226/test_framework.log
2025-09-04T10:27:18.474000Z TestFramework (ERROR): 
2025-09-04T10:27:18.474000Z TestFramework (ERROR): Hint: Call /work/test/functional/combine_logs.py '/work/abc-ci-builds/build-chronik-plugins/test/tmp/test_runner_₿₵_🏃_20250904_102510_20441/chronik_block_header_226' to consolidate all logs
2025-09-04T10:27:18.474000Z TestFramework (ERROR): 
2025-09-04T10:27:18.474000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2025-09-04T10:27:18.474000Z TestFramework (ERROR): https://github.com/Bitcoin-ABC/bitcoin-abc/issues
2025-09-04T10:27:18.474000Z TestFramework (ERROR):

Each failure log is accessible here:
Bitcoin ABC functional tests: chronik_block_header.py

the 500 block headers limit should be applied for regular (non electrum) chronik endpoints

split the boundary and num blocks check so we can apply the latter selectively

PiRK published this revision for review.Sep 4 2025, 12:42
PiRK edited the summary of this revision. (Show Details)

Tail of the build log:

    Checking postcard v1.1.2
    Checking karyon_core v0.3.4
    Checking chronik-plugin v0.1.0 (/work/chronik/chronik-plugin)
    Checking url v2.5.4
    Checking tungstenite v0.24.0
    Checking toml_datetime v0.6.11
    Checking serde_spanned v0.6.9
   Compiling pyo3 v0.23.5
    Checking winnow v0.7.11
    Checking toml_write v0.1.2
    Checking mime v0.3.17
    Checking seahash v4.1.0
    Checking topo_sort v0.4.0
    Checking axum-core v0.4.5
    Checking tokio-tungstenite v0.24.0
    Checking hyper-util v0.1.14
   Compiling karyon_jsonrpc_macro v0.3.4
    Checking memoffset v0.9.1
    Checking tower v0.5.2
   Compiling chronik-bridge v0.1.0 (/work/chronik/chronik-bridge)
    Checking serde_urlencoded v0.7.1
    Checking futures-executor v0.3.31
    Checking serde_path_to_error v0.1.17
    Checking unindent v0.2.4
    Checking unicode-segmentation v1.12.0
    Checking matchit v0.7.3
    Checking base64 v0.22.1
    Checking tower-http v0.5.2
    Checking futures v0.3.31
    Checking convert_case v0.6.0
    Checking webpki-roots v1.0.1
   Compiling librocksdb-sys v0.11.0+8.1.1
    Checking toml_edit v0.22.27
    Checking axum v0.7.9
   Compiling pyo3-macros v0.23.5
    Checking toml v0.8.23
    Checking chronik-plugin-impl v0.1.0 (/work/chronik/chronik-plugin-impl)
   Compiling aws-lc-rs v1.13.1
   Compiling rustls v0.23.28
    Checking rustls-webpki v0.103.3
    Checking tokio-rustls v0.26.2
    Checking karyon_async_rustls v0.3.4
    Checking karyon_net v0.3.4
    Checking karyon_jsonrpc v0.3.4
    Checking rocksdb v0.21.0
    Checking chronik-db v0.1.0 (/work/chronik/chronik-db)
    Checking chronik-indexer v0.1.0 (/work/chronik/chronik-indexer)
error: useless conversion to the same type: `query::blocks::QueryBlockError`
   --> chronik/chronik-indexer/src/query/blocks.rs:171:24
    |
171 |             return Err(BlocksPageSizeTooLarge(num_blocks).into());
    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `BlocksPageSizeTooLarge(num_blocks)`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion
    = note: `-D clippy::useless-conversion` implied by `-D warnings`
    = help: to override `-D warnings` add `#[allow(clippy::useless_conversion)]`

error: could not compile `chronik-indexer` (lib) due to 1 previous error
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik failed with exit code 1
PiRK planned changes to this revision.Sep 4 2025, 13:02

Tail of the build log:

   Doc-tests chronik_bridge

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik_db

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik_http

running 1 test
test chronik/chronik-http/src/protobuf.rs - protobuf::Protobuf (line 29) ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.37s

   Doc-tests chronik_indexer

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik_plugin

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik_plugin_common

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik_plugin_impl

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik_proto

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik_util

running 2 tests
test chronik/chronik-util/src/log.rs - log::log (line 65) ... ignored
test chronik/chronik-util/src/log.rs - log::log_chronik (line 87) ... ignored

test result: ok. 0 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s

ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik-plugins failed with exit code 1
PiRK retitled this revision from [chronik] fix blockchain.block.headers endpoint to [chronik] fix blockchain.block.headers electrum endpoint.

fix clippy error

This revision is now accepted and ready to land.Sep 4 2025, 17:55