* Add a height timestamp for wallet notifications
* import sqlite3
* lint
* isort
* catch specific error
* Add a test for db backcompat
* Add a test for correct height
* mypy
* Add MempoolRemoveReason, which represents why we are removing a MempoolItem
* Add integration tests for remove_from_pool. Generalize call count tracking in mock Fee Estimator.
* add local max subscription config
* add and use trusted wallet config
tests
* lint
* unused import
* break early
* dont break because we need to iterate for hints
* fix off by one
* lint
* Block and transaction processing helpers
* flake8
* more and hints
* More
* separate tests of the simulator from tests using the simulator
* move fixture to conftest
* amounts are uint64
* remove unneeded while loop
* backoff instead of fixed sleep times
* .farm_blocks() only forces tx blocks when needed
* fix test_wallet_create_hit_max_send_amount
* fix test_wallet_tx_reorg
* fix test_address_sliding_window
* rename to farm_blocks_to_wallet
* rename to farm_rewards_to_wallet
* undo changes to protocol endpoints
* reword farm_blocks_to_wallet() loop
* rename process_blocks() to farm_blocks_to_puzzlehash() for now
* timeouts
* debug
* debug
* debug... for 3,7
* fix
* up timeout per block to 2 seconds
* increase transaction processing default timeout
* make debug maybe ok to leave around
* tidy
* intersperse sleeps again for wallet progression
* remove debug code
* review tidy
* cheat on uint64() type
* Update tests/simulation/test_simulator.py
* another import fix
* more fixes
* farm_blocks_to_puzzlehash
* more
* tweak
* fix the two-tx-blocks-instead-of-one dilemma
thanks to almog for figuring this out
* fix
* fixup
* rework since it was still broken on 3.7/3.8...
* oops
* yucky timeout
* more timeout
* cleanup todos
* add balance assertion after reorg before resubmission processing
* Apply suggestions from code review
* rename funds to expected_confirmed_balance
* catchup
* Return existing CAT wallet instead of raising
There's no reason to raise here, all the caller is looking for is an instance of the CATWallet that they're looking for and to create it if it doesn't exist.
* rename create_wallet_for_cat -> get_or_...
* Move wallet created noti inside of function
* remove redundant call
* mixed rework around tx records and offer takes
* more
* wait for wallets
* process_transaction_records() -> process_transactions()
* correct to use new bundles= parameter a couple spots
* .process_transaction_records()
* .process_spend_bundles()
* Delete DID wallet after transfer
* Adjust tests
* Fix merge
* Remove rl_wallet
* Fix tests
* Fix DID bugs
* Add tests
* Add additional spend for DID update
* Fix unit test
* Handle bugged DID
* Cover empty hint case
* Fix unnecessary DID deletion
* Return the CAT txn instead of the fee txn (if a fee is set)
* Commenting
* Test cases for cat_spend with and without a fee
* Check that the coin spend is a CAT spend
* add max coin amount everywhere
* add excluded amounts to bare minimum
offers really does not need it passed.
* add excluded coin ids
* finish rpc stuff
* finalize commands
add coins command group & expand various coin selection methods
* fix argument processing & clean up code
* fix grammer
* small miss
* Update wallet_rpc_api.py
* fix test
* add combination command
* fix error
* move command group
* add new built in funcs for direct wallet coin searches.
* add get coin rpc
* add last command
* switch to pageable function
* fix args
* expand multi rpc call and tests
+ fix other things
* da lint
* add reverse coin sorting and ability to select coins
* Update wallet_state_manager.py
* fix types
* align with protocol
* fix asserts
* fix imports
* isort
* Update wallet_coin_store.py
* Update wallet_rpc_api.py
* feat: enable `create_signed_transaction` for CATs and `push_transactions` endpoints
* test: add test cases for create_signed_transaction and push_transactions
* chore: add backwards compatibility
* fix: add `signed_txs` for standard `create_signed_transaction`
* chore: run linter
* feat: accepts `return_single_tx` argument as legacy compat
* fix: improve typing hints
* chore: improve typing
* fix: get rid of `nullcontext` for `python<3.10`
* test: farming more blocks before checking CAT balance
* test: use more robust `farm_transaction` method
* Add a try/except for individual coin states
* black
* Add a retry store
* Only retry for trusted and bug fixes
* lint
* tiny bad merge
* retry for untrusted too
* Only re-raise flaky exceptions in the WSM
* Add unit test
* Update to self.log.exception
* so that's what exception means
* Add an error log for missing peer
* import after merge
* isort
* bad merge
* configure isort to add the future annotations import
* apply the new isort setting
* remove type ignores for new mypy (#13539)
https://pypi.org/project/mypy/0.981/
* another
* mint from did
* fix did puzzle announcements
* clean up params and test
* mypy
* add RPC endpoint
* use rpc client for test
* test create spends in loop
* transfer to target
* fix lineage proof for transfers
* isolate block timing issue in test
* DID lineage proof
* test transfer to targets
* add exclude list to select_coins RPC
* coin json
* move tests to did wallet
* fix typing royalties
* cleanup tests
* DID_HRP to AddressType
* clvm compilation
* improve checks in rpc api
* move mint_from_did to nft wallet
* reduce number of blocks in tests
* forgot to remove mint function from did_wallet.py
* mypy
* validate NFT metadata and edition numbers in test
* fix puzzle announcements, refactor and comments
* make tests work with new RPC server settings
* create puzzle assertions for eve and transfer spends
* rename vars for mint numbering
* rename more edition -> mint variables
* remove DID owner from eve spend
* make coin announcement from did spend
* make transfer from eve spend
* corrections for address options in RPC
* simplify intermediate launchers
* announcments for xch xpend
* re-order announcements for xch spend
* test with fewer blocks
* skip off chain metadata test with IPFS
* add bulk mint puzzle and methods to nft wallet
* add rpc endpoints
* add tests
* don't skip off chain metadata test
* fix default case for xch_coin_list
* add final coverage handling
* switch to development coverage
* correct url
* only run one directory for now
* only 3.10
* delete windows data for now
* drop the 35% failure point
* recover full test matrix
* Use regular coverage
* Update test.yml
* put coverage reporting into an artifact
* oops
* oopsy
* pytest-cov
* maybe
* maybe help out flakes
* farm the spend bundle...
* some more
* more funds for the did test?
* more...
* report chia/ and tests/ separately
* job_timeout = 45 for core
* tidy and disable diff-cover
* remove job_timeout = 45
* --rcfile=.coveragerc
* Update .github/workflows/test.yml
* revert time and blocks
* assert spend is in mempool, lower times and block count
* remove sleep
* lint
* up timeout
* cat test - farm blocks until spend is included
* add spend check for nft endpoints
* fix nft endpoint test
* remove unused code
* 4
Co-authored-by: almog <almogdepaz@gmail.com>
* make a WalletProtocol, defining the shared API of all wallets and fix type checking
* add protocol check for DataLayerWallet. remove outdated comment
* Hint to the ephemeral coin's innerpuzhash
* update datalayer rpc test reference offer blobs and trade ids
Co-authored-by: Kyle Altendorf <sda@fstab.net>
* remove all references to RL wallet
* Missed one
* Some new references from main
* Fix is_transaction_confirmed
* mypy
* check for 'confirmed'
* Try again to fix is_transaction_confirmed
* remove from mypy.ini
* test passing on update nft store
* fix tests
* missed await
* fix formatting
* another test fix
* flaky test fix
* test fix
* cleanup
* nft count fix
* pr feedback fixes
* test fix
- `__tracebackhide__` provides more clear tracebacks on failure when writing assert-like helpers
- `coroutine` is the name of the type of object you get back after calling an async def
- no need to repeat the timing condition after it has already failed
* Remove mempool.additions
* Don't re run the program, and remove program from mempool item
* Removals only stores item ids, and stores a list
* Move pending cache down to prevent cache dos
* Separate validation from adding to pool, and remove mypy exceptions
* Fix bug with replacing
* Add to mypy
* Revert cbgui
* precommit fail
* Properly update the seen dict
* lint error
* Fix mempool bug
* Enable mypy for a bunch of files
* Update after merge with main
* 99/260 remaining
* Address comments
* Enable more mypy
* Merge conflict mypy file
* More fixes
* pytest.ini and cb-gui
* One more flake8 fix
* Flake8 and tests
* More test fixes
* isort
* Make LGTM happy
* Update chia/full_node/block_store.py
Co-authored-by: Kyle Altendorf <sda@fstab.net>
* Update chia/full_node/full_node_store.py
Co-authored-by: Kyle Altendorf <sda@fstab.net>
* Update chia/wallet/util/peer_request_cache.py
Co-authored-by: Kyle Altendorf <sda@fstab.net>
* Apply all suggestions from PR comments
* Revert cb-gui
* 100 back to 1000, minor tweaks
Co-authored-by: Kyle Altendorf <sda@fstab.net>
* Remove mempool.additions
* Don't re run the program, and remove program from mempool item
* Removals only stores item ids, and stores a list
* Move pending cache down to prevent cache dos
* Separate validation from adding to pool, and remove mypy exceptions
* Fix bug with replacing
* Add to mypy
* Revert cbgui
* precommit fail
* Properly update the seen dict
* lint error
* Fix mempool bug
* Update after merge with main
* Address comments
* coin interest optimization for trade records
* don't duplicate coin
* added a test
* migration test
* trade record replace test
* mypy fixes
* refactor to use coin_id
* return a set
* Add mariano54s spam filter changes (original PR is #11894)
* Add new spam_filter tests
* remove get_all_coins method and query db directly in test
* Add test to include case where everything gets filtered, even the first coin
* If filter threshold is <= 1, no need to run the filter
* add test of chia.wallet.wallet_coin_store.get_all_unspent_coins
* Add test case for receiving large coin after sending dust coin
* Add NFT test to spam wallet
* resolve merge conflicts with main
* remove unneeded coin store test
* Add black formatting
* split long comments into multiple lines
* Run black, second try
* Manually add black changes
* Black
Co-authored-by: Mariano Sorgente <sorgente711@gmail.com>
* introduce an UncurriedPuzzle class, containin the mod and args from a puzzle that has already been uncurried. Pass this around to functions that want to access the uncurried puzzle, to avoid uncurrying the same puzzle multiple times.
* use UncurriedPuzzle for get_inner_puzzle()
* annotate CAT outer puzzle driver
* add type annotation to transfer_program_puzzle
* add type annotations to singleton_outer_puzzle
* add type annotations to ownership_outer_puzzle
* add type annotations to metadata_outer_puzzle
* remove unused _asset_id field in puzzle drivers