• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Chia-Network / chia-blockchain / 25170497320
92%

Build:
DEFAULT BRANCH: main
Ran 30 Apr 2026 03:17PM UTC
Jobs 1
Files 906
Run time 3min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

30 Apr 2026 02:16PM UTC coverage: 91.223% (+0.01%) from 91.212%
25170497320

push

github

web-flow
[CHIA-4203] Add dynamic list-limited deserialization for Streamable types (#20829)

* Add dynamic list-limited deserialization for Streamable types

When a message with a large list field arrives (e.g. RequestCoinState
with 1.2M coin_ids), the full node previously parsed every item before
the handler truncated. On a Pi4 this took ~6s.

API handlers can now specify per-field list limits at runtime via a
callable on the @metadata.request() decorator. Parsing stops early and
seeks past remaining fixed-size elements in O(1).

For RequestCoinState with 1.2M items (limit 200K), deserialization drops
from ~0.45s to ~0.07s on a dev machine (~6x), and proportionally on Pi4.

* Wire list_limits into more wallet protocol handlers

Add deserialization-level list limits to three more handlers that
previously sliced or capped lists after full parsing:

- register_for_ph_updates: puzzle_hashes capped to max_subscriptions
- register_for_coin_updates: coin_ids capped to max_subscriptions
- request_puzzle_state: puzzle_hashes capped to MAX_PUZZLE_HASH_BATCH_SIZE

Remove the now-redundant post-parse slices from register_for_coin_updates,
request_puzzle_state, and request_coin_state since the lists are already
truncated during deserialization.

* Wire list_limits into more wallet protocol handlers

Add deserialization-level list limits to three more handlers that
previously sliced or capped lists after full parsing:

- register_for_ph_updates: puzzle_hashes capped to max_subscriptions
- register_for_coin_updates: coin_ids capped to max_subscriptions
- request_puzzle_state: puzzle_hashes capped to MAX_PUZZLE_HASH_BATCH_SIZE

Remove the now-redundant post-parse slices from register_for_coin_updates,
request_puzzle_state, and request_coin_state since the lists are already
truncated during deserialization.

* tests adjusted for new behaviour

* remove test file

* add some edge case testing

* handle case better if the API is called outside the normal on the wire pate

* add... (continued)

10565 of 11765 branches covered (89.8%)

Branch coverage included in aggregate %.

140 of 140 new or added lines in 7 files covered. (100.0%)

163 existing lines in 14 files now uncovered.

108032 of 118243 relevant lines covered (91.36%)

1.83 hits per line

Coverage Regressions

Lines Coverage ∆ File
109
85.48
0.0% chia/cmds/wallet_funcs.py
16
98.77
0.0% chia/wallet/wallet_request_types.py
10
98.01
0.01% chia/cmds/wallet.py
5
93.07
0.03% chia/wallet/cat_wallet/cat_wallet.py
5
97.63
-0.48% chia/wallet/wallet.py
3
86.55
-0.14% chia/full_node/full_node_api.py
3
98.7
0.0% chia/_tests/environments/wallet.py
3
72.97
-0.11% chia/timelord/timelord.py
2
87.64
0.0% chia/full_node/full_node.py
2
80.21
0.0% chia/server/node_discovery.py
2
98.64
0.64% chia/wallet/coin_selection.py
1
85.68
-0.12% chia/data_layer/data_layer.py
1
96.49
0.0% chia/_tests/simulation/test_simulation.py
1
98.95
-1.05% chia/wallet/util/tx_config.py
Jobs
ID Job ID Ran Files Coverage
1 25170497320.1 30 Apr 2026 03:17PM UTC 1812
91.22
GitHub Action Run
Source Files on build 25170497320
  • Tree
  • List 906
  • Changed 31
  • Source Changed 25
  • Coverage Changed 31
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #25170497320
  • b483e59f on github
  • Prev Build on main (#25120475096)
  • Next Build on main (#25168519271)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc