* 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>
* bump chia_rs to 0.29
* correct return value from get_spends_for_trusted_block()
* remove unnecessary casts
* adjust test for the new error messages in chia_rs
* Update chia/full_node/full_node_rpc_api.py
Co-authored-by: Kyle Altendorf <sda@fstab.net>
---------
Co-authored-by: Kyle Altendorf <sda@fstab.net>
* add dependency for chia_puzzles_py
* migrate cat and dao wallets to new repo
* migrate did wallet
* more migration and deduplication
* change singleton launcher hash import in rpc
* stop importing singleton launcher from nft_puzzles in nft_wallet
* remove SINGLETON_LAUNCHER_PUZZLE import from nft_puzzles
* remove unused import
* ruff check and fix
* use graftroot dl offers from chia_puzzles_py
* get rid of more non explicit exports
* remove circular dependency
* ruff check
* migrate py files in puzzles to use chia_puzzles_py
* fix import
* fix more imports
* migrate clawback wallet and fix typo (requires version update of chia_puzzles_py)
* delete puzzles and separate nft puzzles from puzzle_utils
* use 0.19.1 version of chia_puzzles_py
* more nft puzzle detangling
* use latest chia_puzzles_py and migrate pools
* ruff fixes
* delete pool puzzles folder
* remove load_clvm from test_singleton and test_singleton_lifecycle_fast
* mypy fixes
* ruff fixes
* remove manage_clvm check precommit hook
* update version
* update chia_puzzles dependency to 0.19.4
* remove full_node puzzles
* remove test for condition codes
* change generator type to SerializedProgram
* remove remaining load_clvms that can be factored out
* delete consensus puzzles
* fix test_singleton_lifecycle_fast
* cast debug_spend_bundle coin name to bytes32
* ruff debug_spend_bundle
* update chia-puzzles and fix typo
* fix line endings
* fix typo in ROM_BOOTSTRAP_GENERATOR references
* remove bytes32 cast from debug_spend_bundle
* update chia-puzzles-py dependency to version 0.20.1 and refactor ACS_TRANSFER_PROGRAM initialization
* remove unused puzzle files
* singleton_top_layer exports hashs now which are imported from chia_puzzles
* remove .get_tree_hash() in favor of importing the hash
* remaining hash imports
* regenerate poetry.lock and pyproject.toml from main
* import singleton launcher hash from explicit export
* import SINGLETON_LAUNCHER_HASH from chia.wallet.singleton in test_pool_rpc.py
* import SINGLETON_MOD_HASH from chia.wallet.puzzles.singleton_top_layer in test_pool_puzzles_lifecycle.py
* poetry lock --no-update post-rebase
* re-regenerate lock file --no-update
* fix rebased block_tools
* use run_block_generator() directly in block creation, to compute the final cost of the block we're creating. This lets us avoid validating the signature (to save time) and run in mempool mode
* always validate signatures in run_block_generator().
* remove PreValidationResult.validated_signature and instead defer to the inner SpendBundleConditions field
* move spend_sim into tests
* use run_block_generator2() instead of get_name_puzzle_conditions() in CostLogger. It's only used to compute the cost of a spend bundle, in tests.
* bump chia_rs to 0.14.0
* update tests covering negative division (allowed since the hard fork) and infinity G1 keys (disallowed with soft fork 5)
* BLSCache.update() takes GTElement now
* use get_conditions_from_spendbundle() in test_mempool_manager, to get the ANALYZE_SPENDS behavior
* fix mypy warnings
make plain Program.run() and Program.run_with_cost() default to enabling all the most recent features, and to disallow unknown opcodes (i.e. strict mode). To have full control of which features are enabled, introduce a run2() function
* use the NULL_HASHTREE constant instead of re-computing the hash on the fly
* optimize puzzle hash computations by using shatree_atom() and shatree_pair() directly, rather than constructing a Program to call get_tree_hash() on.
* cache synthetic public keys and private keys
* rename NULL_TREEHASH -> NIL_TREEHASH