ztreamer v0.1.0 vs v0.0.1
Serving and clean historical indexing benchmarks. Compare ztreamer v0.1.0 and v0.0.1, or include zaino d27ec930 with the toggle below.
Same Zakura snapshot, fixed interval and native client. One selected repeat per version; warm connections, no cache reset. Serving v0.1.0 was measured at commit 86bf4b0 with the 16-stream fix. Historical indexing uses the actual v0.1.0 release tag.
Read the comparison correctly. All serving tests use mainnet heights 419,200–3,478,843, the same fixtures and seed, and sequential runs. Zaino reads a Zebra validator at tip 3,479,843; ztreamer used Zakura at tip 3,478,843. The benchmark upper-block hash matches, but tip-dependent RPCs see different tips. Zaino’s persistent index is complete through 3,478,842; the final benchmark block is in its nonfinalized window. Results include the different backing-node implementations.
Hardware and environment
| CPU | AMD Ryzen 9 9950X3D 16-Core Processor · 16 cores / 32 threads |
|---|---|
| CPU cache | L3: 128 MiB (2 instances) |
| Memory | 60.4 GiB OS-reported RAM · 32.1 GiB configured swap |
| Database / results disk | WD Blue SN580 1TB · NVME SSD · 1.00 TB (931.5 GiB) |
| Filesystem | ext4 · /dev/nvme1n1p1 mounted at <benchmark-volume> |
| Operating system | Manjaro Linux · Linux 6.12.103-1-MANJARO · x86_64 |
| Execution | Serving client and nodes ran on this host over loopback; node versions ran sequentially. |
Collected 2026-09-12 after the runs on the same host. RAM is the OS-reported total. Clock speeds and runtime settings were not reconstructed. Hardware JSON
Serving comparison
RPC latencies
Range sizes
Concurrent serving
Wallet download
Historical indexing
| Version | Final height | Indexing seconds | Launch to serving seconds | Peak RSS GiB |
|---|---|---|---|---|
| v0.0.1 | 3,478,843 | 125.40 | 180.00 | 2.04 |
| v0.1.0 | 3,478,843 | 119.31 | 167.00 | 2.11 |
| zaino-d27ec930 | 3,478,842 | — | 13,379.59 | 43.80 |
Indexing resources
Methodology and limits
One selected repeat per version; no confidence intervals or significance claims. Warmups are excluded. Range counts are 1,000 / 1,000 / 1,000 / 100. RPCs use 100 samples. Concurrency uses ten seconds issuing requests followed by draining in-flight responses, so request populations differ. Wallet download uses 306 chunks and excludes scanning and trial decryption. No cache reset.
The “busy” address fixture returned no history, and “quiet” returned two transactions per request. Both have zero balance and no UTXOs. These are not heavy address scans. GetMempoolTx returned an empty stream on zaino and v0.1.0; release does not support it. Zaino completed all 27 scenarios with no errors.
Historical indexing starts with empty persistent indexes. The tagged ztreamer v0.0.1 and v0.1.0 binaries ran sequentially on September 13 against the same static Zakura snapshot, with eight fetch workers and no page-cache reset. The time axes start at process launch; ztreamer includes embedded Zakura startup, and its resources include that node. Zaino’s separate Zebra validator startup and resources are excluded; zaino startup and accumulator rebuild are included in its readiness time. Compilation is excluded for all versions. Final indexed heights differ slightly; exact boundaries and phase times are in the indexing metadata and summary. Height curves show committed progress, sampled once per second. CPU use is averaged over ten-second windows. The ztreamer and zaino resource rows use seconds and hours respectively.
All measured values
Latency in milliseconds. Throughput excludes transport framing. Missing values remain absent.
| Version | Suite | Case | Clients | Successful n | Status | p50 ms | p95 ms | p99 ms | Max ms | First p50 ms | First p99 ms | Blocks/s | MB/s | Wall s |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ztreamer v0.1.0 | latency | GetLightdInfo | 1 | 100 | ok | 0.036 | 0.070 | 0.087 | 0.164 | 0.035 | 0.086 | 0.000 | 2.366 | 0.004 |
| ztreamer v0.1.0 | latency | GetLatestBlock | 1 | 100 | ok | 0.030 | 0.038 | 0.045 | 0.055 | 0.030 | 0.045 | 0.000 | 1.254 | 0.003 |
| ztreamer v0.1.0 | latency | GetBlock | 1 | 100 | ok | 0.041 | 0.070 | 0.259 | 0.444 | 0.041 | 0.235 | 18,695.950 | 75.689 | 0.005 |
| ztreamer v0.1.0 | latency | GetTreeState | 1 | 100 | ok | 238.204 | 712.616 | 951.806 | 997.315 | 238.203 | 951.805 | 0.000 | 0.006 | 28.014 |
| ztreamer v0.1.0 | latency | GetLatestTreeState | 1 | 100 | ok | 0.062 | 0.086 | 0.137 | 0.185 | 0.062 | 0.136 | 0.000 | 41.232 | 0.007 |
| ztreamer v0.1.0 | latency | GetSubtreeRoots/sapling | 1 | 100 | ok | 0.075 | 0.139 | 0.233 | 0.305 | 0.049 | 0.213 | 0.000 | 8.243 | 0.009 |
| ztreamer v0.1.0 | latency | GetSubtreeRoots/orchard | 1 | 100 | ok | 0.386 | 0.428 | 0.481 | 0.515 | 0.070 | 0.141 | 0.000 | 1.829 | 0.039 |
| ztreamer v0.1.0 | latency | GetMempoolTx | 1 | 100 | ok | 0.044 | 0.053 | 0.066 | 0.079 | — | — | 0.000 | 0.000 | 0.004 |
| ztreamer v0.1.0 | latency | GetTaddressTxids/busy | 1 | 100 | ok | 0.055 | 0.077 | 0.181 | 0.214 | — | — | 0.000 | 0.000 | 0.006 |
| ztreamer v0.1.0 | latency | GetTaddressTransactions/busy | 1 | 100 | ok | 0.058 | 0.131 | 0.233 | 0.271 | — | — | 0.000 | 0.000 | 0.007 |
| ztreamer v0.1.0 | latency | GetTaddressBalance/busy | 1 | 100 | ok | 0.045 | 0.055 | 0.063 | 0.091 | 0.045 | 0.063 | 0.000 | 0.000 | 0.005 |
| ztreamer v0.1.0 | latency | GetAddressUtxos/busy | 1 | 100 | ok | 0.051 | 0.075 | 0.093 | 0.096 | 0.051 | 0.093 | 0.000 | 0.000 | 0.005 |
| ztreamer v0.1.0 | latency | GetTaddressTxids/quiet | 1 | 100 | ok | 0.097 | 0.139 | 0.155 | 0.156 | 0.077 | 0.135 | 0.000 | 14.054 | 0.010 |
| ztreamer v0.1.0 | latency | GetTaddressTransactions/quiet | 1 | 100 | ok | 0.093 | 0.098 | 0.114 | 0.115 | 0.074 | 0.080 | 0.000 | 15.366 | 0.009 |
| ztreamer v0.1.0 | latency | GetTaddressBalance/quiet | 1 | 100 | ok | 0.046 | 0.049 | 0.055 | 0.063 | 0.046 | 0.055 | 0.000 | 0.000 | 0.005 |
| ztreamer v0.1.0 | latency | GetAddressUtxos/quiet | 1 | 100 | ok | 0.051 | 0.078 | 0.128 | 0.168 | 0.051 | 0.128 | 0.000 | 0.000 | 0.006 |
| ztreamer v0.1.0 | latency | GetTransaction/0 | 1 | 100 | ok | 0.050 | 0.059 | 0.067 | 0.074 | 0.049 | 0.067 | 0.000 | 4.902 | 0.005 |
| ztreamer v0.1.0 | latency | GetTransaction/1 | 1 | 100 | ok | 0.049 | 0.063 | 0.076 | 0.084 | 0.049 | 0.076 | 0.000 | 5.000 | 0.005 |
| ztreamer v0.1.0 | ranges | GetBlockRange/100 | 1 | 1000 | ok | 0.114 | 7.708 | 16.340 | 26.518 | 0.067 | 1.076 | 93,130.181 | 638.234 | 1.074 |
| ztreamer v0.1.0 | ranges | GetBlockRange/1000 | 1 | 1000 | ok | 0.656 | 49.806 | 122.016 | 156.470 | 0.212 | 0.784 | 142,584.404 | 725.628 | 7.013 |
| ztreamer v0.1.0 | ranges | GetBlockRange/10000 | 1 | 1000 | ok | 4.370 | 497.968 | 1,215.768 | 1,336.193 | 0.348 | 0.924 | 149,958.720 | 776.794 | 66.685 |
| ztreamer v0.1.0 | ranges | GetBlockRange/100000 | 1 | 100 | ok | 46.769 | 3,259.307 | 10,503.022 | 11,346.534 | 0.419 | 0.994 | 138,160.635 | 791.067 | 72.380 |
| ztreamer v0.1.0 | concurrency | GetBlockRange/10000 | 1 | 140 | ok | 4.930 | 308.946 | 1,243.639 | 1,267.133 | 0.333 | 1.080 | 139,043.191 | 782.239 | 10.069 |
| ztreamer v0.1.0 | concurrency | GetBlockRange/10000 | 8 | 999 | ok | 6.180 | 641.688 | 1,521.100 | 1,680.891 | 0.597 | 2.444 | 897,086.093 | 4,754.541 | 11.136 |
| ztreamer v0.1.0 | concurrency | GetBlockRange/10000 | 32 | 1366 | ok | 131.725 | 1,056.576 | 2,301.514 | 2,671.277 | 92.362 | 401.231 | 1,159,071.596 | 6,633.991 | 11.785 |
| ztreamer v0.1.0 | concurrency | GetBlockRange/10000 | 128 | 1430 | ok | 836.293 | 1,795.740 | 2,967.067 | 3,459.800 | 787.176 | 1,392.751 | 1,215,004.432 | 6,753.797 | 11.770 |
| ztreamer v0.1.0 | sync | GetBlockRange/chunk-10000 | 1 | 306 | ok | 4.185 | 548.188 | 1,213.183 | 1,403.597 | 0.278 | 0.772 | 134,840.497 | 780.837 | 22.691 |
| ztreamer v0.0.1 | latency | GetLightdInfo | 1 | 100 | ok | 0.024 | 0.037 | 0.050 | 0.087 | 0.024 | 0.050 | 0.000 | 3.553 | 0.003 |
| ztreamer v0.0.1 | latency | GetLatestBlock | 1 | 100 | ok | 0.023 | 0.025 | 0.032 | 0.036 | 0.022 | 0.032 | 0.000 | 1.701 | 0.002 |
| ztreamer v0.0.1 | latency | GetBlock | 1 | 100 | ok | 0.154 | 0.480 | 1.262 | 2.184 | 0.154 | 1.209 | 4,711.242 | 19.073 | 0.021 |
| ztreamer v0.0.1 | latency | GetTreeState | 1 | 100 | ok | 217.084 | 591.346 | 724.546 | 893.356 | 217.083 | 724.545 | 0.000 | 0.006 | 24.403 |
| ztreamer v0.0.1 | latency | GetLatestTreeState | 1 | 100 | ok | 0.074 | 0.134 | 0.313 | 0.351 | 0.074 | 0.312 | 0.000 | 31.764 | 0.009 |
| ztreamer v0.0.1 | latency | GetSubtreeRoots/sapling | 1 | 100 | ok | 0.100 | 0.154 | 0.229 | 0.265 | 0.065 | 0.219 | 0.000 | 6.791 | 0.011 |
| ztreamer v0.0.1 | latency | GetSubtreeRoots/orchard | 1 | 100 | ok | 0.529 | 0.583 | 0.637 | 0.868 | 0.090 | 0.148 | 0.000 | 1.336 | 0.054 |
| ztreamer v0.0.1 | latency | GetMempoolTx | 1 | 0 | unsupported | — | — | — | — | — | — | — | — | — |
| ztreamer v0.0.1 | latency | GetTaddressTxids/busy | 1 | 100 | ok | 0.063 | 0.091 | 0.127 | 0.141 | — | — | 0.000 | 0.000 | 0.007 |
| ztreamer v0.0.1 | latency | GetTaddressTransactions/busy | 1 | 100 | ok | 0.063 | 0.074 | 0.080 | 0.098 | — | — | 0.000 | 0.000 | 0.006 |
| ztreamer v0.0.1 | latency | GetTaddressBalance/busy | 1 | 100 | ok | 0.046 | 0.055 | 0.061 | 0.067 | 0.046 | 0.061 | 0.000 | 0.000 | 0.005 |
| ztreamer v0.0.1 | latency | GetAddressUtxos/busy | 1 | 100 | ok | 0.049 | 0.062 | 0.074 | 0.077 | 0.049 | 0.074 | 0.000 | 0.000 | 0.005 |
| ztreamer v0.0.1 | latency | GetTaddressTxids/quiet | 1 | 100 | ok | 0.108 | 0.187 | 0.304 | 0.338 | 0.088 | 0.248 | 0.000 | 11.886 | 0.012 |
| ztreamer v0.0.1 | latency | GetTaddressTransactions/quiet | 1 | 100 | ok | 0.098 | 0.110 | 0.116 | 0.141 | 0.080 | 0.097 | 0.000 | 14.649 | 0.010 |
| ztreamer v0.0.1 | latency | GetTaddressBalance/quiet | 1 | 100 | ok | 0.047 | 0.059 | 0.069 | 0.087 | 0.047 | 0.069 | 0.000 | 0.000 | 0.005 |
| ztreamer v0.0.1 | latency | GetAddressUtxos/quiet | 1 | 100 | ok | 0.051 | 0.062 | 0.070 | 0.090 | 0.051 | 0.070 | 0.000 | 0.000 | 0.005 |
| ztreamer v0.0.1 | latency | GetTransaction/0 | 1 | 100 | ok | 0.051 | 0.072 | 0.093 | 0.133 | 0.051 | 0.093 | 0.000 | 4.517 | 0.005 |
| ztreamer v0.0.1 | latency | GetTransaction/1 | 1 | 100 | ok | 0.050 | 0.072 | 0.150 | 0.161 | 0.050 | 0.150 | 0.000 | 4.613 | 0.005 |
| ztreamer v0.0.1 | ranges | GetBlockRange/100 | 1 | 1000 | ok | 0.397 | 12.624 | 27.687 | 33.491 | 0.355 | 9.652 | 51,825.193 | 355.165 | 1.930 |
| ztreamer v0.0.1 | ranges | GetBlockRange/1000 | 1 | 1000 | ok | 1.512 | 82.132 | 199.291 | 266.234 | 0.992 | 7.658 | 84,154.088 | 428.270 | 11.883 |
| ztreamer v0.0.1 | ranges | GetBlockRange/10000 | 1 | 1000 | ok | 8.417 | 811.721 | 1,888.779 | 2,165.200 | 1.171 | 13.750 | 92,142.545 | 477.303 | 108.527 |
| ztreamer v0.0.1 | ranges | GetBlockRange/100000 | 1 | 100 | ok | 84.031 | 5,349.256 | 16,279.028 | 17,221.610 | 1.196 | 5.834 | 87,046.880 | 498.405 | 114.881 |
| ztreamer v0.0.1 | concurrency | GetBlockRange/10000 | 1 | 99 | ok | 8.252 | 947.831 | 2,110.942 | 2,110.942 | 1.220 | 9.065 | 88,121.381 | 465.546 | 11.235 |
| ztreamer v0.0.1 | concurrency | GetBlockRange/10000 | 8 | 611 | ok | 10.812 | 821.091 | 2,454.693 | 2,736.575 | 1.685 | 8.895 | 521,346.203 | 2,568.029 | 11.720 |
| ztreamer v0.0.1 | concurrency | GetBlockRange/10000 | 32 | 921 | ok | 178.885 | 1,563.973 | 3,629.214 | 4,053.526 | 131.888 | 607.642 | 777,060.851 | 4,132.218 | 11.852 |
| ztreamer v0.0.1 | concurrency | GetBlockRange/10000 | 128 | 1056 | ok | 1,286.058 | 2,506.711 | 4,622.315 | 5,258.600 | 1,235.017 | 1,848.784 | 804,668.222 | 4,153.289 | 13.123 |
| ztreamer v0.0.1 | sync | GetBlockRange/chunk-10000 | 1 | 306 | ok | 7.686 | 863.074 | 1,887.177 | 2,179.230 | 1.064 | 7.638 | 84,662.594 | 490.266 | 36.139 |
| zaino d27ec930 | latency | GetLightdInfo | 1 | 100 | ok | 3.535 | 4.198 | 4.592 | 4.598 | 3.535 | 4.592 | 0.000 | 0.047 | 0.360 |
| zaino d27ec930 | latency | GetLatestBlock | 1 | 100 | ok | 0.023 | 0.074 | 0.081 | 0.166 | 0.023 | 0.081 | 0.000 | 1.220 | 0.003 |
| zaino d27ec930 | latency | GetBlock | 1 | 100 | ok | 43.321 | 46.698 | 46.764 | 46.784 | 43.318 | 46.761 | 27.003 | 0.161 | 3.703 |
| zaino d27ec930 | latency | GetTreeState | 1 | 100 | ok | 43.363 | 46.682 | 46.845 | 47.134 | 43.362 | 46.843 | 0.000 | 0.035 | 4.397 |
| zaino d27ec930 | latency | GetLatestTreeState | 1 | 100 | ok | 43.347 | 46.669 | 46.811 | 46.964 | 43.346 | 46.809 | 0.000 | 0.055 | 4.387 |
| zaino d27ec930 | latency | GetSubtreeRoots/sapling | 1 | 100 | ok | 43.338 | 46.679 | 46.713 | 46.872 | 43.325 | 46.698 | 0.000 | 0.016 | 4.410 |
| zaino d27ec930 | latency | GetSubtreeRoots/orchard | 1 | 100 | ok | 260.464 | 264.193 | 266.010 | 267.700 | 42.690 | 46.780 | 0.000 | 0.003 | 26.041 |
| zaino d27ec930 | latency | GetMempoolTx | 1 | 100 | ok | 43.342 | 46.694 | 46.738 | 46.754 | — | — | 0.000 | 0.000 | 4.403 |
| zaino d27ec930 | latency | GetTaddressTxids/busy | 1 | 100 | ok | 43.361 | 46.731 | 47.050 | 48.671 | — | — | 0.000 | 0.000 | 4.390 |
| zaino d27ec930 | latency | GetTaddressTransactions/busy | 1 | 100 | ok | 43.346 | 46.608 | 46.778 | 46.841 | — | — | 0.000 | 0.000 | 4.370 |
| zaino d27ec930 | latency | GetTaddressBalance/busy | 1 | 100 | ok | 5.350 | 6.960 | 7.171 | 7.270 | 5.350 | 7.171 | 0.000 | 0.000 | 0.546 |
| zaino d27ec930 | latency | GetAddressUtxos/busy | 1 | 100 | ok | 0.053 | 0.346 | 0.471 | 0.632 | 0.052 | 0.471 | 0.000 | 0.000 | 0.010 |
| zaino d27ec930 | latency | GetTaddressTxids/quiet | 1 | 100 | ok | 43.341 | 46.733 | 46.789 | 49.062 | 43.331 | 46.765 | 0.000 | 0.033 | 4.403 |
| zaino d27ec930 | latency | GetTaddressTransactions/quiet | 1 | 100 | ok | 43.338 | 46.627 | 46.748 | 46.765 | 43.328 | 46.733 | 0.000 | 0.033 | 4.370 |
| zaino d27ec930 | latency | GetTaddressBalance/quiet | 1 | 100 | ok | 5.254 | 6.970 | 7.335 | 7.364 | 5.254 | 7.335 | 0.000 | 0.000 | 0.532 |
| zaino d27ec930 | latency | GetAddressUtxos/quiet | 1 | 100 | ok | 0.053 | 0.290 | 0.344 | 0.456 | 0.053 | 0.344 | 0.000 | 0.000 | 0.009 |
| zaino d27ec930 | latency | GetTransaction/0 | 1 | 100 | ok | 0.379 | 43.256 | 45.328 | 46.380 | 0.378 | 45.328 | 0.000 | 0.032 | 0.752 |
| zaino d27ec930 | latency | GetTransaction/1 | 1 | 100 | ok | 43.372 | 46.718 | 46.768 | 46.972 | 43.371 | 46.767 | 0.000 | 0.006 | 4.407 |
| zaino d27ec930 | ranges | GetBlockRange/100 | 1 | 1000 | ok | 53.258 | 100.015 | 160.070 | 190.768 | 3.106 | 4.921 | 1,826.708 | 12.519 | 54.743 |
| zaino d27ec930 | ranges | GetBlockRange/1000 | 1 | 1000 | ok | 136.628 | 403.319 | 968.265 | 1,196.690 | 2.890 | 4.462 | 6,116.082 | 31.125 | 163.503 |
| zaino d27ec930 | ranges | GetBlockRange/10000 | 1 | 1000 | ok | 500.041 | 2,258.614 | 5,973.871 | 10,097.057 | 1.979 | 5.028 | 13,399.321 | 69.409 | 746.306 |
| zaino d27ec930 | ranges | GetBlockRange/100000 | 1 | 100 | ok | 4,226.601 | 19,742.157 | 47,197.616 | 87,410.181 | 1.979 | 5.170 | 13,878.105 | 79.462 | 720.559 |
| zaino d27ec930 | concurrency | GetBlockRange/10000 | 1 | 8 | ok | 500.197 | 5,696.859 | 5,696.859 | 5,696.859 | 2.621 | 4.849 | 7,476.453 | 67.983 | 10.700 |
| zaino d27ec930 | concurrency | GetBlockRange/10000 | 8 | 86 | ok | 593.318 | 4,000.068 | 5,606.670 | 5,606.670 | 1.115 | 5.843 | 74,947.369 | 352.761 | 11.475 |
| zaino d27ec930 | concurrency | GetBlockRange/10000 | 32 | 356 | ok | 553.191 | 3,866.638 | 11,500.556 | 17,490.505 | 1.915 | 8.475 | 138,770.720 | 707.135 | 25.654 |
| zaino d27ec930 | concurrency | GetBlockRange/10000 | 128 | 821 | ok | 1,085.894 | 9,062.594 | 20,422.431 | 28,697.542 | 12.117 | 50.756 | 265,150.074 | 1,355.405 | 30.964 |
| zaino d27ec930 | sync | GetBlockRange/chunk-10000 | 1 | 306 | ok | 1,070.020 | 2,823.383 | 7,396.299 | 10,259.916 | 2.587 | 4.506 | 8,623.128 | 49.935 | 354.818 |
Data for your own plots
All scenario summaries · All serving samples · ztreamer height/time samples · Zaino height/time samples · Indexing summary · Indexing run metadata · Run metadata · Hardware · Dataset notes