-- rename structuredError.structuredMessage to message
-- remove the legacy 'message' field from structuredError.data, allow the top level 'error' string to preserve that for us.
-- remove the 'originalError' field from structuredError
-- rename structured_errors to rpc_errors
* Initial draft of custody architecture
* Rename CustodyType -> Puzzle
* Rename UnknownCustody -> UnknownPuzzle
* Rename CustodyHint -> PuzzleHint
* Rename CustodyWithRestrictions -> PuzzleWithRestrictions
* Reorganize for clarity
* Add support for identifying and filling in unknown puzzles
* rename custody -> puzzle
* MofN puzzles
* Restriction layer
* Fix PlaceholderPuzzle with MofN restriction
* Add indexing
* Elaborate on potential optimizations
* Light comment improvements
* Add spec namespace
* 3.10 compatibility I think?
* pylint I hate you
* pylint I really hate you
* Add an optimized puzzle for 1ofN
* Coverage ignores
* Add optimization for NofN
* Add support for `PuzzleWithRestrictions` with no MofN
* comments
* Fix members with restrictions inside of MofNs
* pylint
* Rework restrictions
* Use feeder pattern for MofNs as well
* f you pylint
* initial commit
* start work on tests
* fix all but signature in test
* fix test
* black, isort, flake8
* migrate changes to new files / folders
* mypy fixes
* remove unused imports
* add bls_member to deployed_puzzle_hashes
* no memo for BLS Member
* change comments on BLSMember
* chialispp bls_member
* update test comment
* black again
* pylint disable
* add a more minimal test for blsmember
* fix quex comments
* flake8
* Add basic framework for delegated puzzle validators
* code coverage for memo()
* don't reuse variable of different type
* coverage
* pre-commit
* pre-commit
* Fix spend sim import
* Add passkey member puzzle
* Dedup a bit
* Add `Timelock` restriction
* Rename variable
* Add coin announcement restriction
* initial commit
* Add comments per @matt-o-how
* typo
* correct formatting for using secp_verify
* secp256r1 fix
* pretty print lisp
* add to deployed puzzle hashes
* ruff formatted
* Add a restriction to mimic existing vault recovery
* Add a helper method
* initial commit
* fix test
* fix_test_2
* ruff format
* add secp256k1_member to deployed puzzle hashes
* pretty print lisp
* ruff check fix.
* curve_order fix
* ruff format
* Add memo-ization to the restriction
* add assertion for secpr1_member memo in test_secp256r1_member
* add assertion for secpk1_member memo in test_secp256k1_member
* add secpmember solve method
* - specify type for secp_sk in member puzzles
* add SECPK1 and SECPR1 "puzzle assert" members with corresponding tests
* Fix bug and add test coverage to dpuz wrapper enforcement puzzle
* Fix bug and add test coverage to timelock puzzle
* pre-commit
* initial commit
* Add dataclass for SingletonMember in member_puzzles.py
* fix message coin_ids
* rename eve to launcher
* add minimal message condition test
* change message mode to 3F
* use correct message format
* fix test
* cleanup
* fix formatting in singleton_member.clsp
* Add files for test chialisp
* Add a wrapper that forces a message condition with a coin ID commitment
* Add a version of a passkey puzzle that only asserts puzzle hash
* add comments, remove unused code, add customisable singleton info
* initial commit
* fix typo and pprint chialisp
* chialisp pretty print
* Add comment about message
* add bls_with_taproot puzzle and member class
* mypy fixes
* more mypy fixes
* remove breakpoint
* correct name in deployed_puzzle_hashes
* remove mod from name
* only allowed delegated_puzzle as taproot_path
* add test that checks bad taproot is blocked
* ruff fix
* make BLSWithTaproot Member flexible
* address nitpicks
* mypy fixes
* Remove member and restriction implementations
* Import from chia_puzzles_py (and fix tests)
* Remove executable bibt?
* Re-add some of the member and restrictions
* Some kw_only
* More kw_only
* Reviews by @matt-o-how and cursor
* Comments by cursor
* Remove `Force1of2WithRestrictedVariable`
* Bring in some downstream stuff
* Make a heightlock instead of timelock restriction
* comments by cursor
* Test coverage
* Better condition_codes.clib-ing
* comments by @matt-o-how
---------
Co-authored-by: Matthew Howard <m.o.howard97@gmail.com>
Co-authored-by: matt-o-how <48453825+matt-o-how@users.noreply.github.com>
Source hash: a19365ac4e
Remaining commits: 4
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> Ensures serialization honors subclass-defined field order and
preserves backward compatibility for wallet conditions.
>
> - `Streamable.parse` and `stream` now iterate over
`streamable_fields()` instead of `_streamable_fields`, allowing
subclasses to override field order
> - `ConditionValidTimes` adds a `streamable_fields()` override to
serialize fields in the previous (pre-inheritance) order; import updated
to include `StreamableFields`
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
f36001ef9f. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
* Add the request types
* Add the request types
* some test fixes
* Add the client ports
* Fix tests
* Add cmd support and fix a test
* Missed a couple
* Add test for `CreateNewWallet.__post_init__()`
* merge `get_cat_spendable_coins` into `get_spendable_coins_for_wallet`
* Remove `get_max_spendable_coins` as well
* Fix CR-CAT wallet
* Make the max cap optional
* 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