PR #20401.
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> Implements peer-aware transaction submission with prioritization and
proper back-pressure handling.
>
> - Change `send_transaction` to `send_transaction(request, peer, *,
test=False)` with `peer_required=True` in API metadata
> - Prioritize trusted peers when enqueueing; include `peer_id` in queue
put; catch `TransactionQueueFull` and return `TransactionAck` with
FAILED and "Transaction queue full"
> - Update stubs and numerous tests/helpers to pass a `WSChiaConnection`
peer (e.g., use `add_dummy_connection[_wsc]`/`connect_and_get_peer`);
adjust helper signatures to accept `peer`
> - Add test to verify correct `TransactionAck` when a peer's
transaction queue is full
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
ba926a6ae7. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
* harvester_api_protocol
* move to apis
* Remove `chia.apis` => `chia.harvester` dependency.
* Remove circular dependencies between `chia.apis` and service modules.
* SolverAPIStub, and add solver to tach.toml.
* Make the stubs (lack of) implementations more consistent.
* Use `stub_metadata_for_type` instead of `class_for_type`.
The only thing ever used from `ApiProtocol` in `WSConnection`
was the metadata field, so let's pass along only that.
* NewSignagePointHarvester2
* remove some stuff
* change v1 plot phase-out to not affect required iters, and to be quantized to epoch blocks
* disable hard-fork 2 tests until we have a new test cache
* fix rate limits test
* address review comments
* initial commit
* fix precommit errors
* test passing
* ruff
* remove SpendInfo and mempool_check_conditions
* no need to call it _rust now
* fix mempool test
* fix precommit errors
* fix test generator tools
* add comment about impending chia_rs fix
* bump chia_rs
* update db_graftroot test
* refactor new pos format
* fix merge
* fix import
* fix missing param in test
* merge fixes/review fixes
* test prev_tx_block
* ermove double line
* # TODO: todo_v2_plots
* fix conftests monkeypatch
* fix spelling
* remove redundant merge code
* move prev_tx test
* add not impemented test to proof of space v2
* merge duplication fix
* fix typo, raise dont assert
* bump protocol, phase out test
* integer math
* add overflow case to test
---------
Co-authored-by: Arvid Norberg <arvid@libtorrent.org>
<!-- Merging Requirements:
- Please give your PR a title that is release-note friendly
- In order to be merged, you must add the most appropriate category
Label (Added, Changed, Fixed) to your PR
-->
<!-- Explain why this is an improvement (Does this add missing
functionality, improve performance, or reduce complexity?) -->
The modules `chia.protocols` and `chia.server` form a dependency loop.
This change at least removes the direct dependency of `chia.protocols`
on `chia.server`.
### Purpose:
<!-- Does this PR introduce a breaking change? -->
### Current Behavior:
### New Behavior:
<!-- As we aim for complete code coverage, please include details
regarding unit, and regression tests -->
### Testing Notes:
<!-- Attach any visual examples, or supporting evidence (attach any
.gif/video/console output below) -->
* bump chia_rs
* update db_graftroot test
* update SerializedProgram and Program use, to accommodate new chia_rs interface
* review comments
* review comments
---------
Co-authored-by: Matthew Howard <m.o.howard97@gmail.com>
* introduce create_block_generator2() to mempool, which picks transactions and compresses them incrementally, allowing us to fill blocks even when compressing
* improve test, comment and pragma no cover
* fix mempool test
* simplify item selection logic in create_block_generator2()
* add test coverage of timeout in create_block_generator2()
* address review comments
* fixup
* no need to pass get_unspent_lineage_info_from_puzzle_hash function into create_bundle_from_mempool(), we already have it as a member now
* cache results from get_lineage_info_for_puzzle_hash()
* make item_inclusion_filter optional and move it to the end with default None, to simplify calls
* move block generator creation into the Mempool class
* update benchmark
* add test