chia-blockchain 2.5.6rc2__py3-none-any.whl → 2.5.7rc2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- chia/_tests/blockchain/blockchain_test_utils.py +6 -7
- chia/_tests/blockchain/test_augmented_chain.py +4 -3
- chia/_tests/blockchain/test_blockchain.py +10 -5
- chia/_tests/clvm/coin_store.py +1 -1
- chia/_tests/cmds/cmd_test_utils.py +84 -97
- chia/_tests/cmds/test_dev_gh.py +1 -1
- chia/_tests/cmds/test_farm_cmd.py +56 -2
- chia/_tests/cmds/wallet/test_consts.py +3 -1
- chia/_tests/cmds/wallet/test_did.py +3 -8
- chia/_tests/cmds/wallet/test_nft.py +6 -6
- chia/_tests/cmds/wallet/test_notifications.py +39 -21
- chia/_tests/cmds/wallet/test_vcs.py +2 -1
- chia/_tests/cmds/wallet/test_wallet.py +160 -136
- chia/_tests/conftest.py +51 -26
- chia/_tests/core/cmds/test_wallet.py +4 -3
- chia/_tests/core/consensus/test_pot_iterations.py +71 -24
- chia/_tests/core/custom_types/test_proof_of_space.py +60 -30
- chia/_tests/core/custom_types/test_spend_bundle.py +1 -4
- chia/_tests/core/data_layer/conftest.py +7 -2
- chia/_tests/core/data_layer/old_format/__init__.py +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-005876c1cdc4d5f1726551b207b9f63efc9cd2f72df80a3a26a1ba73d40d6745-delta-23-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-005876c1cdc4d5f1726551b207b9f63efc9cd2f72df80a3a26a1ba73d40d6745-full-23-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-01b36e72a975cdc00d6514eea81668d19e8ea3150217ae98cb3361688a016fab-delta-9-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-01b36e72a975cdc00d6514eea81668d19e8ea3150217ae98cb3361688a016fab-full-9-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-06147c3b12d73e9b83b686a8c10b4a36a513c8a93c0ff99ae197f06326278be9-delta-5-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-06147c3b12d73e9b83b686a8c10b4a36a513c8a93c0ff99ae197f06326278be9-full-5-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-073c051a5934ad3b8db39eee2189e4300e55f48aaa17ff4ae30eeae088ff544a-delta-22-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-073c051a5934ad3b8db39eee2189e4300e55f48aaa17ff4ae30eeae088ff544a-full-22-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-0cc077559b9c7b4aefe8f8f591c195e0779bebdf89f2ad8285a00ea5f859d965-delta-1-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-0cc077559b9c7b4aefe8f8f591c195e0779bebdf89f2ad8285a00ea5f859d965-full-1-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-16377275567b723b20936d3f1ec0a2fd83f6ac379b922351a5e4c54949069f3b-delta-2-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-16377275567b723b20936d3f1ec0a2fd83f6ac379b922351a5e4c54949069f3b-full-2-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-1cb824a7a5f02cd30ac6c38e8f6216780d9bfa2d24811d282a368dcd541438a7-delta-29-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-1cb824a7a5f02cd30ac6c38e8f6216780d9bfa2d24811d282a368dcd541438a7-full-29-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-27b89dc4809ebc5a3b87757d35e95e2761d978cf121e44fa2773a5c06e4cc7b5-delta-28-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-27b89dc4809ebc5a3b87757d35e95e2761d978cf121e44fa2773a5c06e4cc7b5-full-28-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-28a6b7c134abfaeb0ab58a018313f6c87a61a40a4d9ec9bedf53aa1d12f3ee37-delta-7-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-28a6b7c134abfaeb0ab58a018313f6c87a61a40a4d9ec9bedf53aa1d12f3ee37-full-7-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-30a6bfe7cecbeda259a295dc6de3a436357f52388c3b03d86901e7da68565aeb-delta-19-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-30a6bfe7cecbeda259a295dc6de3a436357f52388c3b03d86901e7da68565aeb-full-19-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-343a2bf9add798e3ac2e6a571823cf9fa7e8a1bed532143354ead2648bd036ef-delta-10-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-343a2bf9add798e3ac2e6a571823cf9fa7e8a1bed532143354ead2648bd036ef-full-10-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-4d90efbc1fb3df324193831ea4a57dd5e10e67d9653343eb18d178272adb0447-delta-17-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-4d90efbc1fb3df324193831ea4a57dd5e10e67d9653343eb18d178272adb0447-full-17-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-4dd2ea099e91635c441f40b36d3f84078a2d818d2dc601c7278e72cbdfe3eca8-delta-20-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-4dd2ea099e91635c441f40b36d3f84078a2d818d2dc601c7278e72cbdfe3eca8-full-20-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-509effbdca78639023b933ce6c08a0465fb247e1cd5329e9e9c553940e4b6e46-delta-31-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-509effbdca78639023b933ce6c08a0465fb247e1cd5329e9e9c553940e4b6e46-full-31-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-5379a4d9ff29c29d1ef0906d22e82c52472753d31806189ab813c43365341b78-delta-40-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-5379a4d9ff29c29d1ef0906d22e82c52472753d31806189ab813c43365341b78-full-40-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-55908eda5686a8f89e4c50672cbe893ec1734fb23449dc03325efe7c414f9aa4-delta-49-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-55908eda5686a8f89e4c50672cbe893ec1734fb23449dc03325efe7c414f9aa4-full-49-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-57cc2691fb1fb986c99a58bcb0e029d0cd0cff41553d703147c54196d7d9ca63-delta-14-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-57cc2691fb1fb986c99a58bcb0e029d0cd0cff41553d703147c54196d7d9ca63-full-14-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-5943bf8ae4f5e59969d8570e4f40a8223299febdcfbcf188b3b3e2ab11044e18-delta-34-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-5943bf8ae4f5e59969d8570e4f40a8223299febdcfbcf188b3b3e2ab11044e18-full-34-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6518527b7c939bee60ce6b024cbe90d3b9d8913c56b8ce11a4df5da7ff7db1c8-delta-8-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6518527b7c939bee60ce6b024cbe90d3b9d8913c56b8ce11a4df5da7ff7db1c8-full-8-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-66ff26a26620379e14a7c91252d27ee4dbe06ad69a3a390a88642fe757f2b288-delta-45-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-66ff26a26620379e14a7c91252d27ee4dbe06ad69a3a390a88642fe757f2b288-full-45-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6bd0a508ee2c4afbe9d4daa811139fd6e54e7f4e16850cbce999fa30f8bdccd2-delta-6-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6bd0a508ee2c4afbe9d4daa811139fd6e54e7f4e16850cbce999fa30f8bdccd2-full-6-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6ce850d0d77ca743fcc2fc792747472e5d2c1c0813aa43abbb370554428fc897-delta-48-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6ce850d0d77ca743fcc2fc792747472e5d2c1c0813aa43abbb370554428fc897-full-48-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6eb4ca2e1552b156c5969396b49070eb08ad6c96b347359387519be59f7ccaed-delta-26-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6eb4ca2e1552b156c5969396b49070eb08ad6c96b347359387519be59f7ccaed-full-26-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-71c797fb7592d3f0a5a20c79ab8497ddaa0fd9ec17712e109d25c91b3f3c76e5-delta-3-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-71c797fb7592d3f0a5a20c79ab8497ddaa0fd9ec17712e109d25c91b3f3c76e5-full-3-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-73357026053d5a4969e7a6b9aeeef91c14cc6d5f32fc700fe6d21d2a1b22496c-delta-25-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-73357026053d5a4969e7a6b9aeeef91c14cc6d5f32fc700fe6d21d2a1b22496c-full-25-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-7c897e5c46e834ced65bde7de87716acfaa5dffbdb30b5cd9377d8c319df2034-delta-35-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-7c897e5c46e834ced65bde7de87716acfaa5dffbdb30b5cd9377d8c319df2034-full-35-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-87b8394d80d08117a5a1cd04ed8a682564eab7197a2c090159863591b5108874-delta-4-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-87b8394d80d08117a5a1cd04ed8a682564eab7197a2c090159863591b5108874-full-4-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-89eb40b9cc0921c5f5c3feb20927c13a9ada5760f82d219dcee153b7d400165c-delta-41-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-89eb40b9cc0921c5f5c3feb20927c13a9ada5760f82d219dcee153b7d400165c-full-41-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-8b649433156b8c924436cdec9c6de26106fd6f73a0528570f48748f7b40d7f8a-delta-21-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-8b649433156b8c924436cdec9c6de26106fd6f73a0528570f48748f7b40d7f8a-full-21-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-8d364023a0834c8c3077e236a465493acbf488e4f9d1f4c6cc230343c10a8f7d-delta-42-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-8d364023a0834c8c3077e236a465493acbf488e4f9d1f4c6cc230343c10a8f7d-full-42-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-925689e24a3d98d98676d816cdd8b73e7b2df057d9d4503da9b27bf91d79666c-delta-38-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-925689e24a3d98d98676d816cdd8b73e7b2df057d9d4503da9b27bf91d79666c-full-38-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-937be3d428b19f521be4f98faecc3307ae11ee731c76992f417fa4268d13859e-delta-11-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-937be3d428b19f521be4f98faecc3307ae11ee731c76992f417fa4268d13859e-full-11-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-97f34af499b79e2111fc296a598fc9654c2467ea038dfea41fd58241fb3642de-delta-32-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-97f34af499b79e2111fc296a598fc9654c2467ea038dfea41fd58241fb3642de-full-32-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-9d1b737243b8a1d0022f2b36ac53333c6280354a74d77f2a3642dcab35204e59-delta-33-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-9d1b737243b8a1d0022f2b36ac53333c6280354a74d77f2a3642dcab35204e59-full-33-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-a6663f98ef6ddf6db55f01163e34bb2e87aa82f0347e79ce31e8dbfa390c480c-delta-47-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-a6663f98ef6ddf6db55f01163e34bb2e87aa82f0347e79ce31e8dbfa390c480c-full-47-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-aa77376d1ccd3664e5c6366e010c52a978fedbf40f5ce262fee71b2e7fe0c6a9-delta-50-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-aa77376d1ccd3664e5c6366e010c52a978fedbf40f5ce262fee71b2e7fe0c6a9-full-50-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-b0f28514741ed1a71f5c6544bf92f9e0e493c5f3cf28328909771d8404eff626-delta-24-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-b0f28514741ed1a71f5c6544bf92f9e0e493c5f3cf28328909771d8404eff626-full-24-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-b3efee5358e6eb89ab3b60db2d128d57eef39e8538fb63c5632412d4f8e7d09e-delta-44-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-b3efee5358e6eb89ab3b60db2d128d57eef39e8538fb63c5632412d4f8e7d09e-full-44-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bb0b56b6eb7acbb4e80893b04c72412fe833418232e1ed7b06d97d7a7f08b4e1-delta-16-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bb0b56b6eb7acbb4e80893b04c72412fe833418232e1ed7b06d97d7a7f08b4e1-full-16-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bc45262b757ff494b53bd2a8fba0f5511cc1f9c2a2c5360e04ea8cebbf6409df-delta-13-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bc45262b757ff494b53bd2a8fba0f5511cc1f9c2a2c5360e04ea8cebbf6409df-full-13-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bd0494ba430aff13458b557113b073d226eaf11257dfe26ff3323fa1cfe1335b-delta-39-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bd0494ba430aff13458b557113b073d226eaf11257dfe26ff3323fa1cfe1335b-full-39-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cd04f5fbba1553fa728b4dd8131d4723aaac288e0c7dc080447fbf0872c0a6eb-delta-36-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cd04f5fbba1553fa728b4dd8131d4723aaac288e0c7dc080447fbf0872c0a6eb-full-36-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cdd2399557fb3163a848f08831fdc833703354edb19a0d32a965fdb140f160c2-delta-18-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cdd2399557fb3163a848f08831fdc833703354edb19a0d32a965fdb140f160c2-full-18-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cf7a08fca7b1332095242e4d9800f4b94a3f4eaae88fe8407da42736d54b9e18-delta-37-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cf7a08fca7b1332095242e4d9800f4b94a3f4eaae88fe8407da42736d54b9e18-full-37-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-d1f97465a9f52187e2ef3a0d811a1258f52380a65340c55f3e8e65b92753bc13-delta-15-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-d1f97465a9f52187e2ef3a0d811a1258f52380a65340c55f3e8e65b92753bc13-full-15-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-e475eccd4ee597e5ff67b1a249e37d65d6e3f754c3f0379fdb43692513588fef-delta-46-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-e475eccd4ee597e5ff67b1a249e37d65d6e3f754c3f0379fdb43692513588fef-full-46-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-e82e63517d78fd65b23a05c3b9a98cf905ddad7026995a238bfe634006b84cd0-delta-27-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-e82e63517d78fd65b23a05c3b9a98cf905ddad7026995a238bfe634006b84cd0-full-27-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-ed2cf0fd6c0f6237c87c161e1fca303b3fbe6c04e01f652b88720b4572143349-delta-12-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-ed2cf0fd6c0f6237c87c161e1fca303b3fbe6c04e01f652b88720b4572143349-full-12-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-f6e454eaf24a83c46a7bed4c19260a0a3ce0ed5c51739cb6d748d4913dc2ef58-delta-30-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-f6e454eaf24a83c46a7bed4c19260a0a3ce0ed5c51739cb6d748d4913dc2ef58-full-30-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-f7ad2bdf86d9609b4d6381086ec1e296bf558e2ff467ead29dd7fa6e31bacc56-delta-43-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-f7ad2bdf86d9609b4d6381086ec1e296bf558e2ff467ead29dd7fa6e31bacc56-full-43-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/__init__.py +0 -0
- chia/_tests/core/data_layer/old_format/old_db.sqlite +0 -0
- chia/_tests/core/data_layer/test_data_layer_util.py +18 -21
- chia/_tests/core/data_layer/test_data_rpc.py +77 -28
- chia/_tests/core/data_layer/test_data_store.py +637 -700
- chia/_tests/core/data_layer/test_data_store_schema.py +2 -209
- chia/_tests/core/full_node/ram_db.py +1 -1
- chia/_tests/core/full_node/stores/test_block_store.py +4 -10
- chia/_tests/core/full_node/stores/test_coin_store.py +1 -1
- chia/_tests/core/full_node/test_address_manager.py +3 -3
- chia/_tests/core/full_node/test_block_height_map.py +1 -1
- chia/_tests/core/full_node/test_full_node.py +91 -30
- chia/_tests/core/full_node/test_generator_tools.py +17 -10
- chia/_tests/core/mempool/test_mempool.py +190 -90
- chia/_tests/core/mempool/test_mempool_fee_estimator.py +2 -4
- chia/_tests/core/mempool/test_mempool_item_queries.py +1 -1
- chia/_tests/core/mempool/test_mempool_manager.py +134 -75
- chia/_tests/core/mempool/test_singleton_fast_forward.py +9 -27
- chia/_tests/core/server/serve.py +0 -2
- chia/_tests/core/server/test_rate_limits.py +400 -347
- chia/_tests/core/server/test_server.py +2 -2
- chia/_tests/core/services/test_services.py +7 -7
- chia/_tests/core/test_cost_calculation.py +31 -10
- chia/_tests/core/test_crawler.py +4 -4
- chia/_tests/core/test_db_conversion.py +7 -14
- chia/_tests/core/test_db_validation.py +2 -6
- chia/_tests/core/test_farmer_harvester_rpc.py +34 -1
- chia/_tests/core/test_full_node_rpc.py +28 -24
- chia/_tests/core/test_merkle_set.py +1 -4
- chia/_tests/core/test_seeder.py +1 -1
- chia/_tests/core/util/test_keychain.py +2 -2
- chia/_tests/core/util/test_lru_cache.py +16 -0
- chia/_tests/core/util/test_streamable.py +85 -4
- chia/_tests/environments/wallet.py +4 -1
- chia/_tests/farmer_harvester/test_farmer.py +8 -6
- chia/_tests/farmer_harvester/test_farmer_harvester.py +306 -8
- chia/_tests/farmer_harvester/test_filter_prefix_bits.py +3 -3
- chia/_tests/farmer_harvester/test_third_party_harvesters.py +11 -11
- chia/_tests/fee_estimation/test_fee_estimation_integration.py +2 -2
- chia/_tests/fee_estimation/test_fee_estimation_rpc.py +1 -1
- chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +1 -2
- chia/_tests/generator/test_rom.py +2 -1
- chia/_tests/harvester/__init__.py +0 -0
- chia/_tests/harvester/config.py +4 -0
- chia/_tests/harvester/test_harvester_api.py +157 -0
- chia/_tests/plot_sync/test_plot_sync.py +6 -3
- chia/_tests/plot_sync/test_receiver.py +16 -4
- chia/_tests/plot_sync/test_sender.py +8 -7
- chia/_tests/plot_sync/test_sync_simulated.py +15 -13
- chia/_tests/plot_sync/util.py +3 -2
- chia/_tests/plotting/test_plot_manager.py +21 -5
- chia/_tests/plotting/test_prover.py +106 -0
- chia/_tests/pools/test_pool_cmdline.py +7 -6
- chia/_tests/pools/test_pool_puzzles_lifecycle.py +10 -3
- chia/_tests/pools/test_pool_rpc.py +92 -64
- chia/_tests/solver/__init__.py +0 -0
- chia/_tests/solver/config.py +4 -0
- chia/_tests/solver/test_solver_service.py +29 -0
- chia/_tests/timelord/test_new_peak.py +1 -1
- chia/_tests/timelord/test_timelord.py +1 -1
- chia/_tests/util/benchmarks.py +5 -12
- chia/_tests/util/blockchain.py +1 -1
- chia/_tests/util/build_network_protocol_files.py +7 -0
- chia/_tests/util/network_protocol_data.py +26 -0
- chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
- chia/_tests/util/protocol_messages_json.py +19 -0
- chia/_tests/util/setup_nodes.py +21 -2
- chia/_tests/util/spend_sim.py +9 -3
- chia/_tests/util/test_condition_tools.py +3 -2
- chia/_tests/util/test_full_block_utils.py +10 -9
- chia/_tests/util/test_misc.py +10 -10
- chia/_tests/util/test_network.py +32 -1
- chia/_tests/util/test_network_protocol_files.py +333 -318
- chia/_tests/util/test_network_protocol_json.py +6 -0
- chia/_tests/util/test_network_protocol_test.py +27 -0
- chia/_tests/util/test_priority_mutex.py +1 -1
- chia/_tests/util/test_replace_str_to_bytes.py +6 -6
- chia/_tests/wallet/cat_wallet/test_cat_wallet.py +17 -13
- chia/_tests/wallet/cat_wallet/test_trades.py +55 -55
- chia/_tests/wallet/did_wallet/test_did.py +118 -1229
- chia/_tests/wallet/nft_wallet/config.py +1 -1
- chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +73 -96
- chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +15 -12
- chia/_tests/wallet/nft_wallet/test_nft_offers.py +67 -134
- chia/_tests/wallet/nft_wallet/test_nft_wallet.py +31 -26
- chia/_tests/wallet/rpc/test_wallet_rpc.py +765 -371
- chia/_tests/wallet/sync/test_wallet_sync.py +6 -0
- chia/_tests/wallet/test_new_wallet_protocol.py +1 -1
- chia/_tests/wallet/test_signer_protocol.py +2 -2
- chia/_tests/wallet/test_singleton_lifecycle_fast.py +3 -4
- chia/_tests/wallet/test_transaction_store.py +42 -33
- chia/_tests/wallet/test_wallet.py +22 -31
- chia/_tests/wallet/test_wallet_state_manager.py +14 -7
- chia/_tests/wallet/vc_wallet/test_vc_wallet.py +53 -32
- chia/apis.py +2 -0
- chia/cmds/beta.py +7 -3
- chia/cmds/chia.py +2 -0
- chia/cmds/cmd_classes.py +11 -27
- chia/cmds/cmds_util.py +3 -0
- chia/cmds/coin_funcs.py +27 -22
- chia/cmds/configure.py +42 -18
- chia/cmds/dev/data.py +22 -3
- chia/cmds/farm.py +32 -0
- chia/cmds/farm_funcs.py +54 -5
- chia/cmds/init_funcs.py +4 -0
- chia/cmds/keys_funcs.py +8 -10
- chia/cmds/peer_funcs.py +8 -10
- chia/cmds/plotnft_funcs.py +24 -16
- chia/cmds/rpc.py +11 -1
- chia/cmds/show_funcs.py +5 -5
- chia/cmds/solver.py +33 -0
- chia/cmds/solver_funcs.py +21 -0
- chia/cmds/wallet.py +1 -1
- chia/cmds/wallet_funcs.py +149 -96
- chia/consensus/block_body_validation.py +8 -9
- chia/consensus/block_creation.py +9 -10
- chia/consensus/block_header_validation.py +61 -69
- chia/{full_node → consensus}/block_height_map.py +2 -1
- chia/consensus/block_height_map_protocol.py +21 -0
- chia/consensus/block_rewards.py +12 -12
- chia/consensus/blockchain.py +8 -18
- chia/consensus/default_constants.py +6 -6
- chia/consensus/generator_tools.py +1 -1
- chia/consensus/get_block_challenge.py +24 -25
- chia/consensus/pos_quality.py +28 -2
- chia/consensus/pot_iterations.py +15 -17
- chia/daemon/keychain_proxy.py +5 -0
- chia/daemon/server.py +2 -3
- chia/data_layer/data_layer.py +32 -24
- chia/data_layer/data_layer_errors.py +5 -0
- chia/data_layer/data_layer_rpc_api.py +1 -1
- chia/data_layer/data_layer_service.py +8 -0
- chia/data_layer/data_layer_util.py +49 -89
- chia/data_layer/data_layer_wallet.py +20 -17
- chia/data_layer/data_store.py +1051 -1462
- chia/data_layer/download_data.py +44 -115
- chia/{server → data_layer}/start_data_layer.py +2 -1
- chia/data_layer/util/benchmark.py +38 -53
- chia/farmer/farmer.py +3 -0
- chia/farmer/farmer_api.py +104 -5
- chia/farmer/farmer_rpc_api.py +20 -0
- chia/farmer/farmer_rpc_client.py +6 -2
- chia/farmer/farmer_service.py +8 -0
- chia/{server → farmer}/start_farmer.py +4 -3
- chia/full_node/block_store.py +20 -10
- chia/full_node/coin_store.py +12 -4
- chia/full_node/eligible_coin_spends.py +17 -72
- chia/full_node/full_node.py +68 -71
- chia/full_node/full_node_api.py +26 -32
- chia/full_node/full_node_rpc_api.py +44 -32
- chia/full_node/full_node_rpc_client.py +67 -79
- chia/full_node/full_node_service.py +8 -0
- chia/full_node/full_node_store.py +5 -3
- chia/full_node/mempool.py +14 -14
- chia/full_node/mempool_manager.py +67 -89
- chia/{server → full_node}/start_full_node.py +1 -1
- chia/full_node/subscriptions.py +2 -2
- chia/full_node/weight_proof.py +14 -15
- chia/harvester/harvester.py +8 -1
- chia/harvester/harvester_api.py +178 -44
- chia/harvester/harvester_service.py +8 -0
- chia/{server → harvester}/start_harvester.py +1 -1
- chia/introducer/introducer_service.py +8 -0
- chia/{server → introducer}/start_introducer.py +1 -1
- chia/plot_sync/receiver.py +6 -1
- chia/plot_sync/sender.py +7 -4
- chia/plotting/cache.py +37 -28
- chia/plotting/check_plots.py +83 -48
- chia/plotting/create_plots.py +3 -4
- chia/plotting/manager.py +18 -13
- chia/plotting/prover.py +153 -0
- chia/plotting/util.py +14 -6
- chia/pools/pool_wallet.py +6 -4
- chia/protocols/harvester_protocol.py +14 -0
- chia/protocols/outbound_message.py +1 -0
- chia/protocols/pool_protocol.py +1 -1
- chia/protocols/protocol_message_types.py +7 -0
- chia/protocols/shared_protocol.py +2 -0
- chia/protocols/solver_protocol.py +18 -0
- chia/rpc/rpc_server.py +1 -1
- chia/seeder/crawl_store.py +4 -8
- chia/seeder/crawler.py +2 -2
- chia/seeder/crawler_service.py +8 -0
- chia/seeder/start_crawler.py +1 -1
- chia/server/address_manager.py +12 -15
- chia/server/introducer_peers.py +1 -1
- chia/server/node_discovery.py +9 -10
- chia/server/rate_limit_numbers.py +157 -168
- chia/server/rate_limits.py +44 -41
- chia/server/resolve_peer_info.py +5 -0
- chia/server/server.py +17 -7
- chia/server/start_service.py +0 -1
- chia/simulator/block_tools.py +92 -58
- chia/simulator/full_node_simulator.py +1 -1
- chia/simulator/setup_services.py +51 -15
- chia/solver/__init__.py +0 -0
- chia/solver/solver.py +100 -0
- chia/solver/solver_api.py +59 -0
- chia/solver/solver_rpc_api.py +31 -0
- chia/solver/solver_rpc_client.py +16 -0
- chia/solver/solver_service.py +8 -0
- chia/solver/start_solver.py +102 -0
- {mozilla-ca → chia/ssl}/cacert.pem +0 -27
- chia/ssl/create_ssl.py +3 -2
- chia/{server → timelord}/start_timelord.py +1 -1
- chia/timelord/timelord.py +12 -13
- chia/timelord/timelord_service.py +8 -0
- chia/types/blockchain_format/proof_of_space.py +61 -17
- chia/types/coin_spend.py +0 -8
- chia/types/internal_mempool_item.py +3 -3
- chia/types/mempool_item.py +15 -8
- chia/types/mempool_submission_status.py +1 -1
- chia/util/config.py +1 -3
- chia/util/db_wrapper.py +7 -8
- chia/util/initial-config.yaml +46 -0
- chia/util/lru_cache.py +8 -4
- chia/util/network.py +9 -0
- chia/util/service_groups.py +3 -1
- chia/util/streamable.py +38 -8
- chia/util/virtual_project_analysis.py +1 -1
- chia/wallet/cat_wallet/cat_outer_puzzle.py +7 -4
- chia/wallet/cat_wallet/cat_wallet.py +13 -7
- chia/wallet/cat_wallet/r_cat_wallet.py +4 -1
- chia/wallet/conditions.py +1 -3
- chia/wallet/did_wallet/did_wallet.py +27 -332
- chia/wallet/nft_wallet/nft_puzzle_utils.py +1 -1
- chia/wallet/nft_wallet/nft_wallet.py +9 -7
- chia/wallet/puzzle_drivers.py +7 -8
- chia/{server → wallet}/start_wallet.py +1 -1
- chia/wallet/trade_manager.py +12 -9
- chia/wallet/transaction_record.py +14 -51
- chia/wallet/util/clvm_streamable.py +28 -41
- chia/wallet/util/merkle_utils.py +2 -2
- chia/wallet/util/tx_config.py +3 -6
- chia/wallet/vc_wallet/cr_cat_wallet.py +12 -6
- chia/wallet/vc_wallet/vc_wallet.py +13 -15
- chia/wallet/wallet.py +5 -3
- chia/wallet/wallet_node.py +25 -30
- chia/wallet/wallet_request_types.py +538 -101
- chia/wallet/wallet_rpc_api.py +398 -570
- chia/wallet/wallet_rpc_client.py +144 -332
- chia/wallet/wallet_service.py +8 -0
- chia/wallet/wallet_state_manager.py +53 -42
- chia/wallet/wallet_transaction_store.py +13 -5
- {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7rc2.dist-info}/METADATA +31 -31
- {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7rc2.dist-info}/RECORD +369 -241
- {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7rc2.dist-info}/WHEEL +1 -1
- {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7rc2.dist-info}/entry_points.txt +8 -7
- chia/full_node/mempool_check_conditions.py +0 -102
- chia/server/aliases.py +0 -35
- {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7rc2.dist-info/licenses}/LICENSE +0 -0
|
@@ -25,6 +25,7 @@ from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG, TXConfig
|
|
|
25
25
|
from chia.wallet.wallet import Wallet
|
|
26
26
|
from chia.wallet.wallet_node import Balance, WalletNode
|
|
27
27
|
from chia.wallet.wallet_node_api import WalletNodeAPI
|
|
28
|
+
from chia.wallet.wallet_request_types import GetWalletBalance
|
|
28
29
|
from chia.wallet.wallet_rpc_api import WalletRpcApi
|
|
29
30
|
from chia.wallet.wallet_rpc_client import WalletRpcClient
|
|
30
31
|
from chia.wallet.wallet_state_manager import WalletStateManager
|
|
@@ -169,7 +170,9 @@ class WalletEnvironment:
|
|
|
169
170
|
else {}
|
|
170
171
|
),
|
|
171
172
|
}
|
|
172
|
-
balance_response: dict[str, int] =
|
|
173
|
+
balance_response: dict[str, int] = (
|
|
174
|
+
await self.rpc_client.get_wallet_balance(GetWalletBalance(wallet_id))
|
|
175
|
+
).wallet_balance.to_json_dict()
|
|
173
176
|
|
|
174
177
|
if not expected_result.items() <= balance_response.items():
|
|
175
178
|
for key, value in expected_result.items():
|
|
@@ -9,7 +9,7 @@ from typing import Any, Optional, Union, cast
|
|
|
9
9
|
from unittest.mock import ANY
|
|
10
10
|
|
|
11
11
|
import pytest
|
|
12
|
-
from chia_rs import AugSchemeMPL, G1Element, G2Element, PrivateKey, ProofOfSpace
|
|
12
|
+
from chia_rs import AugSchemeMPL, G1Element, G2Element, PlotSize, PrivateKey, ProofOfSpace
|
|
13
13
|
from chia_rs.sized_bytes import bytes32
|
|
14
14
|
from chia_rs.sized_ints import uint8, uint16, uint32, uint64
|
|
15
15
|
from pytest_mock import MockerFixture
|
|
@@ -21,15 +21,17 @@ from chia._tests.conftest import HarvesterFarmerEnvironment
|
|
|
21
21
|
from chia._tests.util.misc import DataCase, Marks, datacases
|
|
22
22
|
from chia.consensus.default_constants import DEFAULT_CONSTANTS
|
|
23
23
|
from chia.farmer.farmer import UPDATE_POOL_FARMER_INFO_INTERVAL, Farmer, increment_pool_stats, strip_old_entries
|
|
24
|
+
from chia.farmer.farmer_service import FarmerService
|
|
25
|
+
from chia.harvester.harvester_service import HarvesterService
|
|
24
26
|
from chia.pools.pool_config import PoolWalletConfig
|
|
25
27
|
from chia.protocols import farmer_protocol, harvester_protocol
|
|
26
28
|
from chia.protocols.harvester_protocol import NewProofOfSpace, RespondSignatures
|
|
27
29
|
from chia.protocols.pool_protocol import PoolErrorCode
|
|
28
|
-
from chia.server.aliases import FarmerService, HarvesterService
|
|
29
30
|
from chia.server.ws_connection import WSChiaConnection
|
|
30
31
|
from chia.simulator.block_tools import BlockTools
|
|
31
32
|
from chia.types.blockchain_format.proof_of_space import (
|
|
32
33
|
generate_plot_public_key,
|
|
34
|
+
make_pos,
|
|
33
35
|
verify_and_get_quality_string,
|
|
34
36
|
)
|
|
35
37
|
from chia.util.config import load_config, save_config
|
|
@@ -132,7 +134,7 @@ class NewProofOfSpaceCase:
|
|
|
132
134
|
plot_identifier: str
|
|
133
135
|
signage_point_index: uint8
|
|
134
136
|
plot_id: bytes32
|
|
135
|
-
plot_size:
|
|
137
|
+
plot_size: PlotSize
|
|
136
138
|
plot_challenge: bytes32
|
|
137
139
|
plot_public_key: G1Element
|
|
138
140
|
pool_public_key: Optional[G1Element]
|
|
@@ -187,7 +189,7 @@ class NewProofOfSpaceCase:
|
|
|
187
189
|
plot_identifier="test",
|
|
188
190
|
signage_point_index=uint8(1),
|
|
189
191
|
plot_id=bytes32.fromhex("baaa6780c53d4b3739b8807b4ae79a76644ddf0d9e03dc7d0a6a0e613e764d9f"),
|
|
190
|
-
plot_size=
|
|
192
|
+
plot_size=PlotSize.make_v1(32),
|
|
191
193
|
plot_challenge=bytes32.fromhex("7580e4c366dc2c94c37ce44943f9629a3cd6e027d7b24cd014adeaa578d4b0a2"),
|
|
192
194
|
plot_public_key=G1Element.from_bytes(
|
|
193
195
|
bytes.fromhex(
|
|
@@ -573,7 +575,7 @@ async def test_farmer_new_proof_of_space_for_pool_stats(
|
|
|
573
575
|
peak_height=uint32(1),
|
|
574
576
|
last_tx_height=uint32(0),
|
|
575
577
|
)
|
|
576
|
-
pos =
|
|
578
|
+
pos = make_pos(
|
|
577
579
|
challenge=case.plot_challenge,
|
|
578
580
|
pool_public_key=case.pool_public_key,
|
|
579
581
|
pool_contract_puzzle_hash=case.pool_contract_puzzle_hash,
|
|
@@ -714,7 +716,7 @@ def create_valid_pos(farmer: Farmer) -> tuple[farmer_protocol.NewSignagePoint, P
|
|
|
714
716
|
peak_height=uint32(1),
|
|
715
717
|
last_tx_height=uint32(0),
|
|
716
718
|
)
|
|
717
|
-
pos =
|
|
719
|
+
pos = make_pos(
|
|
718
720
|
challenge=case.plot_challenge,
|
|
719
721
|
pool_public_key=case.pool_public_key,
|
|
720
722
|
pool_contract_puzzle_hash=case.pool_contract_puzzle_hash,
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import asyncio
|
|
4
|
+
import unittest.mock
|
|
4
5
|
from math import floor
|
|
5
6
|
from pathlib import Path
|
|
6
7
|
from typing import Any, Optional
|
|
8
|
+
from unittest.mock import AsyncMock, Mock
|
|
7
9
|
|
|
8
10
|
import pytest
|
|
9
11
|
from chia_rs import G1Element
|
|
@@ -15,19 +17,41 @@ from chia._tests.util.split_managers import split_async_manager
|
|
|
15
17
|
from chia._tests.util.time_out_assert import time_out_assert
|
|
16
18
|
from chia.cmds.cmds_util import get_any_service_client
|
|
17
19
|
from chia.farmer.farmer import Farmer
|
|
20
|
+
from chia.farmer.farmer_service import FarmerService
|
|
18
21
|
from chia.harvester.harvester_rpc_client import HarvesterRpcClient
|
|
22
|
+
from chia.harvester.harvester_service import HarvesterService
|
|
19
23
|
from chia.plotting.util import PlotsRefreshParameter
|
|
20
|
-
from chia.protocols import farmer_protocol, harvester_protocol
|
|
24
|
+
from chia.protocols import farmer_protocol, harvester_protocol, solver_protocol
|
|
21
25
|
from chia.protocols.outbound_message import NodeType, make_msg
|
|
22
26
|
from chia.protocols.protocol_message_types import ProtocolMessageTypes
|
|
23
|
-
from chia.server.aliases import FarmerService, HarvesterService
|
|
24
27
|
from chia.simulator.block_tools import BlockTools
|
|
28
|
+
from chia.solver.solver_service import SolverService
|
|
25
29
|
from chia.types.peer_info import UnresolvedPeerInfo
|
|
26
30
|
from chia.util.config import load_config
|
|
27
31
|
from chia.util.hash import std_hash
|
|
28
32
|
from chia.util.keychain import generate_mnemonic
|
|
29
33
|
|
|
30
34
|
|
|
35
|
+
async def get_harvester_peer(farmer: Farmer) -> Any:
|
|
36
|
+
"""wait for harvester connection and return the peer"""
|
|
37
|
+
|
|
38
|
+
def has_harvester_connection() -> bool:
|
|
39
|
+
return len(farmer.server.get_connections(NodeType.HARVESTER)) > 0
|
|
40
|
+
|
|
41
|
+
await time_out_assert(10, has_harvester_connection, True)
|
|
42
|
+
return farmer.server.get_connections(NodeType.HARVESTER)[0]
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
async def get_solver_peer(farmer: Farmer) -> Any:
|
|
46
|
+
"""wait for solver connection and return the peer"""
|
|
47
|
+
|
|
48
|
+
def has_solver_connection() -> bool:
|
|
49
|
+
return len(farmer.server.get_connections(NodeType.SOLVER)) > 0
|
|
50
|
+
|
|
51
|
+
await time_out_assert(60, has_solver_connection, True)
|
|
52
|
+
return farmer.server.get_connections(NodeType.SOLVER)[0]
|
|
53
|
+
|
|
54
|
+
|
|
31
55
|
def farmer_is_started(farmer: Farmer) -> bool:
|
|
32
56
|
return farmer.started
|
|
33
57
|
|
|
@@ -143,9 +167,6 @@ async def test_farmer_respond_signatures(
|
|
|
143
167
|
# messages even though it didn't request them, to cover when the farmer doesn't know
|
|
144
168
|
# about an sp_hash, so it fails at the sp record check.
|
|
145
169
|
|
|
146
|
-
def log_is_ready() -> bool:
|
|
147
|
-
return len(caplog.text) > 0
|
|
148
|
-
|
|
149
170
|
_, _, harvester_service, _, _ = harvester_farmer_environment
|
|
150
171
|
# We won't have an sp record for this one
|
|
151
172
|
challenge_hash = bytes32(b"1" * 32)
|
|
@@ -160,11 +181,16 @@ async def test_farmer_respond_signatures(
|
|
|
160
181
|
include_source_signature_data=False,
|
|
161
182
|
farmer_reward_address_override=None,
|
|
162
183
|
)
|
|
184
|
+
|
|
185
|
+
expected_error = f"Do not have challenge hash {challenge_hash}"
|
|
186
|
+
|
|
187
|
+
def expected_log_is_ready() -> bool:
|
|
188
|
+
return expected_error in caplog.text
|
|
189
|
+
|
|
163
190
|
msg = make_msg(ProtocolMessageTypes.respond_signatures, response)
|
|
164
191
|
await harvester_service._node.server.send_to_all([msg], NodeType.FARMER)
|
|
165
|
-
await time_out_assert(
|
|
166
|
-
# We
|
|
167
|
-
expected_error = f"Do not have challenge hash {challenge_hash}"
|
|
192
|
+
await time_out_assert(10, expected_log_is_ready)
|
|
193
|
+
# We should find the error message
|
|
168
194
|
assert expected_error in caplog.text
|
|
169
195
|
|
|
170
196
|
|
|
@@ -297,3 +323,275 @@ async def test_harvester_has_no_server(
|
|
|
297
323
|
harvester_server = harvesters[0]._server
|
|
298
324
|
|
|
299
325
|
assert harvester_server.webserver is None
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
@pytest.mark.anyio
|
|
329
|
+
async def test_v2_partial_proofs_new_sp_hash(
|
|
330
|
+
farmer_one_harvester_solver: tuple[list[HarvesterService], FarmerService, SolverService, BlockTools],
|
|
331
|
+
) -> None:
|
|
332
|
+
_, farmer_service, _solver_service, _bt = farmer_one_harvester_solver
|
|
333
|
+
farmer_api = farmer_service._api
|
|
334
|
+
farmer = farmer_api.farmer
|
|
335
|
+
|
|
336
|
+
sp_hash = bytes32(b"1" * 32)
|
|
337
|
+
partial_proofs = harvester_protocol.PartialProofsData(
|
|
338
|
+
challenge_hash=bytes32(b"2" * 32),
|
|
339
|
+
sp_hash=sp_hash,
|
|
340
|
+
plot_identifier="test_plot_id",
|
|
341
|
+
partial_proofs=[b"test_partial_proof_1"],
|
|
342
|
+
signage_point_index=uint8(0),
|
|
343
|
+
plot_size=uint8(32),
|
|
344
|
+
pool_public_key=None,
|
|
345
|
+
pool_contract_puzzle_hash=bytes32(b"4" * 32),
|
|
346
|
+
plot_public_key=G1Element(),
|
|
347
|
+
)
|
|
348
|
+
|
|
349
|
+
harvester_peer = await get_harvester_peer(farmer)
|
|
350
|
+
await farmer_api.partial_proofs(partial_proofs, harvester_peer)
|
|
351
|
+
|
|
352
|
+
assert sp_hash in farmer.number_of_responses
|
|
353
|
+
assert farmer.number_of_responses[sp_hash] == 0
|
|
354
|
+
assert sp_hash in farmer.cache_add_time
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
@pytest.mark.anyio
|
|
358
|
+
async def test_v2_partial_proofs_missing_sp_hash(
|
|
359
|
+
caplog: pytest.LogCaptureFixture,
|
|
360
|
+
farmer_one_harvester_solver: tuple[list[HarvesterService], FarmerService, SolverService, BlockTools],
|
|
361
|
+
) -> None:
|
|
362
|
+
_, farmer_service, _, _ = farmer_one_harvester_solver
|
|
363
|
+
farmer_api = farmer_service._api
|
|
364
|
+
|
|
365
|
+
sp_hash = bytes32(b"1" * 32)
|
|
366
|
+
partial_proofs = harvester_protocol.PartialProofsData(
|
|
367
|
+
challenge_hash=bytes32(b"2" * 32),
|
|
368
|
+
sp_hash=sp_hash,
|
|
369
|
+
plot_identifier="test_plot_id",
|
|
370
|
+
partial_proofs=[b"test_partial_proof_1"],
|
|
371
|
+
signage_point_index=uint8(0),
|
|
372
|
+
plot_size=uint8(32),
|
|
373
|
+
pool_public_key=None,
|
|
374
|
+
pool_contract_puzzle_hash=bytes32(b"4" * 32),
|
|
375
|
+
plot_public_key=G1Element(),
|
|
376
|
+
)
|
|
377
|
+
|
|
378
|
+
harvester_peer = await get_harvester_peer(farmer_api.farmer)
|
|
379
|
+
await farmer_api.partial_proofs(partial_proofs, harvester_peer)
|
|
380
|
+
|
|
381
|
+
assert f"Received partial proofs for a signage point that we do not have {sp_hash}" in caplog.text
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
@pytest.mark.anyio
|
|
385
|
+
async def test_v2_partial_proofs_with_existing_sp(
|
|
386
|
+
farmer_one_harvester_solver: tuple[list[HarvesterService], FarmerService, SolverService, BlockTools],
|
|
387
|
+
) -> None:
|
|
388
|
+
_, farmer_service, _, _ = farmer_one_harvester_solver
|
|
389
|
+
farmer_api = farmer_service._api
|
|
390
|
+
farmer = farmer_api.farmer
|
|
391
|
+
|
|
392
|
+
sp_hash = bytes32(b"1" * 32)
|
|
393
|
+
challenge_hash = bytes32(b"2" * 32)
|
|
394
|
+
|
|
395
|
+
sp = farmer_protocol.NewSignagePoint(
|
|
396
|
+
challenge_hash=challenge_hash,
|
|
397
|
+
challenge_chain_sp=sp_hash,
|
|
398
|
+
reward_chain_sp=std_hash(b"1"),
|
|
399
|
+
difficulty=uint64(1000),
|
|
400
|
+
sub_slot_iters=uint64(1000),
|
|
401
|
+
signage_point_index=uint8(0),
|
|
402
|
+
peak_height=uint32(1),
|
|
403
|
+
last_tx_height=uint32(0),
|
|
404
|
+
)
|
|
405
|
+
|
|
406
|
+
farmer.sps[sp_hash] = [sp]
|
|
407
|
+
|
|
408
|
+
partial_proofs = harvester_protocol.PartialProofsData(
|
|
409
|
+
challenge_hash=challenge_hash,
|
|
410
|
+
sp_hash=sp_hash,
|
|
411
|
+
plot_identifier="test_plot_id",
|
|
412
|
+
partial_proofs=[b"test_partial_proof_1", b"test_partial_proof_2"],
|
|
413
|
+
signage_point_index=uint8(0),
|
|
414
|
+
plot_size=uint8(32),
|
|
415
|
+
pool_public_key=G1Element(),
|
|
416
|
+
pool_contract_puzzle_hash=bytes32(b"4" * 32),
|
|
417
|
+
plot_public_key=G1Element(),
|
|
418
|
+
)
|
|
419
|
+
|
|
420
|
+
harvester_peer = await get_harvester_peer(farmer)
|
|
421
|
+
await farmer_api.partial_proofs(partial_proofs, harvester_peer)
|
|
422
|
+
|
|
423
|
+
# should store 2 pending requests (one per partial proof)
|
|
424
|
+
assert len(farmer.pending_solver_requests) == 2
|
|
425
|
+
assert sp_hash in farmer.cache_add_time
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
@pytest.mark.anyio
|
|
429
|
+
async def test_solution_response_handler(
|
|
430
|
+
farmer_one_harvester_solver: tuple[list[HarvesterService], FarmerService, SolverService, BlockTools],
|
|
431
|
+
) -> None:
|
|
432
|
+
_, farmer_service, _, _ = farmer_one_harvester_solver
|
|
433
|
+
farmer_api = farmer_service._api
|
|
434
|
+
farmer = farmer_api.farmer
|
|
435
|
+
|
|
436
|
+
# set up a pending request
|
|
437
|
+
sp_hash = bytes32(b"1" * 32)
|
|
438
|
+
challenge_hash = bytes32(b"2" * 32)
|
|
439
|
+
|
|
440
|
+
partial_proofs = harvester_protocol.PartialProofsData(
|
|
441
|
+
challenge_hash=challenge_hash,
|
|
442
|
+
sp_hash=sp_hash,
|
|
443
|
+
plot_identifier="test_plot_id",
|
|
444
|
+
partial_proofs=[b"test_partial_proof_for_quality"],
|
|
445
|
+
signage_point_index=uint8(0),
|
|
446
|
+
plot_size=uint8(32),
|
|
447
|
+
pool_public_key=G1Element(),
|
|
448
|
+
pool_contract_puzzle_hash=bytes32(b"4" * 32),
|
|
449
|
+
plot_public_key=G1Element(),
|
|
450
|
+
)
|
|
451
|
+
|
|
452
|
+
harvester_peer = await get_harvester_peer(farmer)
|
|
453
|
+
|
|
454
|
+
# manually add pending request
|
|
455
|
+
farmer.pending_solver_requests[partial_proofs.partial_proofs[0]] = {
|
|
456
|
+
"proof_data": partial_proofs,
|
|
457
|
+
"peer": harvester_peer,
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
# create solution response
|
|
461
|
+
solution_response = solver_protocol.SolverResponse(
|
|
462
|
+
partial_proof=partial_proofs.partial_proofs[0], proof=b"test_proof_from_solver"
|
|
463
|
+
)
|
|
464
|
+
solver_peer = Mock()
|
|
465
|
+
solver_peer.peer_node_id = "solver_peer"
|
|
466
|
+
|
|
467
|
+
with unittest.mock.patch.object(farmer_api, "new_proof_of_space", new_callable=AsyncMock) as mock_new_proof:
|
|
468
|
+
await farmer_api.solution_response(solution_response, solver_peer)
|
|
469
|
+
|
|
470
|
+
# verify new_proof_of_space was called with correct proof
|
|
471
|
+
mock_new_proof.assert_called_once()
|
|
472
|
+
call_args = mock_new_proof.call_args[0]
|
|
473
|
+
new_proof_of_space = call_args[0]
|
|
474
|
+
original_peer = call_args[1]
|
|
475
|
+
|
|
476
|
+
assert new_proof_of_space.proof.proof == b"test_proof_from_solver"
|
|
477
|
+
assert original_peer == harvester_peer
|
|
478
|
+
|
|
479
|
+
# verify pending request was removed
|
|
480
|
+
assert partial_proofs.partial_proofs[0] not in farmer.pending_solver_requests
|
|
481
|
+
|
|
482
|
+
|
|
483
|
+
@pytest.mark.anyio
|
|
484
|
+
async def test_solution_response_unknown_quality(
|
|
485
|
+
farmer_one_harvester_solver: tuple[list[HarvesterService], FarmerService, SolverService, BlockTools],
|
|
486
|
+
) -> None:
|
|
487
|
+
_, farmer_service, _, _ = farmer_one_harvester_solver
|
|
488
|
+
farmer_api = farmer_service._api
|
|
489
|
+
farmer = farmer_api.farmer
|
|
490
|
+
|
|
491
|
+
# get real solver peer connection
|
|
492
|
+
solver_peer = await get_solver_peer(farmer)
|
|
493
|
+
|
|
494
|
+
# create solution response with unknown quality
|
|
495
|
+
solution_response = solver_protocol.SolverResponse(partial_proof=bytes(b"1" * 32), proof=b"test_proof")
|
|
496
|
+
|
|
497
|
+
with unittest.mock.patch.object(farmer_api, "new_proof_of_space", new_callable=AsyncMock) as mock_new_proof:
|
|
498
|
+
await farmer_api.solution_response(solution_response, solver_peer)
|
|
499
|
+
# verify new_proof_of_space was NOT called
|
|
500
|
+
mock_new_proof.assert_not_called()
|
|
501
|
+
# verify pending requests unchanged
|
|
502
|
+
assert len(farmer.pending_solver_requests) == 0
|
|
503
|
+
|
|
504
|
+
|
|
505
|
+
@pytest.mark.anyio
|
|
506
|
+
async def test_solution_response_empty_proof(
|
|
507
|
+
farmer_one_harvester_solver: tuple[list[HarvesterService], FarmerService, SolverService, BlockTools],
|
|
508
|
+
) -> None:
|
|
509
|
+
_, farmer_service, _solver_service, _ = farmer_one_harvester_solver
|
|
510
|
+
farmer_api = farmer_service._api
|
|
511
|
+
farmer = farmer_api.farmer
|
|
512
|
+
|
|
513
|
+
# set up a pending request
|
|
514
|
+
sp_hash = bytes32(b"1" * 32)
|
|
515
|
+
challenge_hash = bytes32(b"2" * 32)
|
|
516
|
+
|
|
517
|
+
partial_proofs = harvester_protocol.PartialProofsData(
|
|
518
|
+
challenge_hash=challenge_hash,
|
|
519
|
+
sp_hash=sp_hash,
|
|
520
|
+
plot_identifier="test_plot_id",
|
|
521
|
+
partial_proofs=[b"test_partial_proof_for_quality"],
|
|
522
|
+
signage_point_index=uint8(0),
|
|
523
|
+
plot_size=uint8(32),
|
|
524
|
+
pool_public_key=G1Element(),
|
|
525
|
+
pool_contract_puzzle_hash=bytes32(b"4" * 32),
|
|
526
|
+
plot_public_key=G1Element(),
|
|
527
|
+
)
|
|
528
|
+
|
|
529
|
+
harvester_peer = Mock()
|
|
530
|
+
harvester_peer.peer_node_id = "harvester_peer"
|
|
531
|
+
|
|
532
|
+
# manually add pending request
|
|
533
|
+
farmer.pending_solver_requests[partial_proofs.partial_proofs[0]] = {
|
|
534
|
+
"proof_data": partial_proofs.partial_proofs[0],
|
|
535
|
+
"peer": harvester_peer,
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
# get real solver peer connection
|
|
539
|
+
solver_peer = await get_solver_peer(farmer)
|
|
540
|
+
|
|
541
|
+
# create solution response with empty proof
|
|
542
|
+
solution_response = solver_protocol.SolverResponse(partial_proof=partial_proofs.partial_proofs[0], proof=b"")
|
|
543
|
+
|
|
544
|
+
with unittest.mock.patch.object(farmer_api, "new_proof_of_space", new_callable=AsyncMock) as mock_new_proof:
|
|
545
|
+
await farmer_api.solution_response(solution_response, solver_peer)
|
|
546
|
+
|
|
547
|
+
# verify new_proof_of_space was NOT called
|
|
548
|
+
mock_new_proof.assert_not_called()
|
|
549
|
+
|
|
550
|
+
# verify pending request was removed (cleanup still happens)
|
|
551
|
+
assert partial_proofs.partial_proofs[0] not in farmer.pending_solver_requests
|
|
552
|
+
|
|
553
|
+
|
|
554
|
+
@pytest.mark.anyio
|
|
555
|
+
async def test_v2_partial_proofs_solver_exception(
|
|
556
|
+
farmer_one_harvester_solver: tuple[list[HarvesterService], FarmerService, SolverService, BlockTools],
|
|
557
|
+
) -> None:
|
|
558
|
+
_, farmer_service, _solver_service, _ = farmer_one_harvester_solver
|
|
559
|
+
farmer_api = farmer_service._api
|
|
560
|
+
farmer = farmer_api.farmer
|
|
561
|
+
|
|
562
|
+
sp_hash = bytes32(b"1" * 32)
|
|
563
|
+
challenge_hash = bytes32(b"2" * 32)
|
|
564
|
+
|
|
565
|
+
sp = farmer_protocol.NewSignagePoint(
|
|
566
|
+
challenge_hash=challenge_hash,
|
|
567
|
+
challenge_chain_sp=sp_hash,
|
|
568
|
+
reward_chain_sp=std_hash(b"1"),
|
|
569
|
+
difficulty=uint64(1000),
|
|
570
|
+
sub_slot_iters=uint64(1000),
|
|
571
|
+
signage_point_index=uint8(0),
|
|
572
|
+
peak_height=uint32(1),
|
|
573
|
+
last_tx_height=uint32(0),
|
|
574
|
+
)
|
|
575
|
+
|
|
576
|
+
farmer.sps[sp_hash] = [sp]
|
|
577
|
+
|
|
578
|
+
partial_proofs = harvester_protocol.PartialProofsData(
|
|
579
|
+
challenge_hash=challenge_hash,
|
|
580
|
+
sp_hash=sp_hash,
|
|
581
|
+
plot_identifier="test_plot_id",
|
|
582
|
+
partial_proofs=[b"test_partial_proof_1"],
|
|
583
|
+
signage_point_index=uint8(0),
|
|
584
|
+
plot_size=uint8(32),
|
|
585
|
+
pool_public_key=G1Element(),
|
|
586
|
+
pool_contract_puzzle_hash=bytes32(b"4" * 32),
|
|
587
|
+
plot_public_key=G1Element(),
|
|
588
|
+
)
|
|
589
|
+
|
|
590
|
+
harvester_peer = await get_harvester_peer(farmer)
|
|
591
|
+
|
|
592
|
+
# Mock send_to_all to raise an exception
|
|
593
|
+
with unittest.mock.patch.object(farmer.server, "send_to_all", side_effect=Exception("Solver connection failed")):
|
|
594
|
+
await farmer_api.partial_proofs(partial_proofs, harvester_peer)
|
|
595
|
+
|
|
596
|
+
# verify pending request was cleaned up after exception
|
|
597
|
+
assert partial_proofs.partial_proofs[0] not in farmer.pending_solver_requests
|
|
@@ -11,13 +11,13 @@ from chia_rs.sized_ints import uint8, uint32, uint64
|
|
|
11
11
|
|
|
12
12
|
from chia._tests.conftest import ConsensusMode
|
|
13
13
|
from chia._tests.core.test_farmer_harvester_rpc import wait_for_plot_sync
|
|
14
|
-
from chia._tests.util.setup_nodes import
|
|
14
|
+
from chia._tests.util.setup_nodes import setup_farmer_solver_multi_harvester
|
|
15
15
|
from chia._tests.util.time_out_assert import time_out_assert
|
|
16
16
|
from chia.farmer.farmer_api import FarmerAPI
|
|
17
17
|
from chia.farmer.farmer_rpc_client import FarmerRpcClient
|
|
18
18
|
from chia.harvester.harvester_rpc_client import HarvesterRpcClient
|
|
19
|
+
from chia.harvester.harvester_service import HarvesterService
|
|
19
20
|
from chia.protocols import farmer_protocol
|
|
20
|
-
from chia.server.aliases import HarvesterService
|
|
21
21
|
from chia.simulator.block_tools import create_block_tools_async, test_constants
|
|
22
22
|
from chia.types.blockchain_format.proof_of_space import get_plot_id, passes_plot_filter
|
|
23
23
|
from chia.util.keychain import Keychain
|
|
@@ -60,7 +60,7 @@ async def farmer_harvester_with_filter_size_9(
|
|
|
60
60
|
)
|
|
61
61
|
new_config = local_b_tools._config
|
|
62
62
|
local_b_tools.change_config(new_config)
|
|
63
|
-
async with
|
|
63
|
+
async with setup_farmer_solver_multi_harvester(
|
|
64
64
|
local_b_tools, 1, tmp_path, local_b_tools.constants, start_services=True
|
|
65
65
|
) as (harvesters, farmer_service, _):
|
|
66
66
|
harvester_service = harvesters[0]
|
|
@@ -31,15 +31,17 @@ from chia.consensus.difficulty_adjustment import get_next_sub_slot_iters_and_dif
|
|
|
31
31
|
from chia.consensus.multiprocess_validation import PreValidationResult, pre_validate_block
|
|
32
32
|
from chia.farmer.farmer import Farmer, calculate_harvester_fee_quality
|
|
33
33
|
from chia.farmer.farmer_api import FarmerAPI
|
|
34
|
+
from chia.farmer.farmer_service import FarmerService
|
|
34
35
|
from chia.full_node.full_node import FullNode
|
|
35
36
|
from chia.full_node.full_node_api import FullNodeAPI
|
|
37
|
+
from chia.full_node.full_node_service import FullNodeService
|
|
36
38
|
from chia.harvester.harvester import Harvester
|
|
37
39
|
from chia.harvester.harvester_api import HarvesterAPI
|
|
40
|
+
from chia.harvester.harvester_service import HarvesterService
|
|
38
41
|
from chia.protocols import farmer_protocol, full_node_protocol, harvester_protocol, timelord_protocol
|
|
39
42
|
from chia.protocols.harvester_protocol import ProofOfSpaceFeeInfo, RespondSignatures, SigningDataKind
|
|
40
43
|
from chia.protocols.outbound_message import Message, NodeType, make_msg
|
|
41
44
|
from chia.protocols.protocol_message_types import ProtocolMessageTypes
|
|
42
|
-
from chia.server.aliases import FarmerService, FullNodeService, HarvesterService
|
|
43
45
|
from chia.server.server import ChiaServer
|
|
44
46
|
from chia.server.ws_connection import WSChiaConnection
|
|
45
47
|
from chia.simulator.block_tools import BlockTools
|
|
@@ -82,17 +84,16 @@ async def test_harvester_receive_source_signing_data(
|
|
|
82
84
|
full_node_1: FullNode = full_node_service_1._node
|
|
83
85
|
full_node_2: FullNode = full_node_service_2._node
|
|
84
86
|
|
|
87
|
+
await time_out_assert(60, node_type_connected, True, farmer.server, NodeType.HARVESTER)
|
|
85
88
|
# Connect peers to each other
|
|
86
89
|
farmer_service.add_peer(
|
|
87
90
|
UnresolvedPeerInfo(str(full_node_service_2.self_hostname), full_node_service_2._server.get_port())
|
|
88
91
|
)
|
|
92
|
+
await time_out_assert(60, node_type_connected, True, farmer.server, NodeType.FULL_NODE)
|
|
89
93
|
full_node_service_2.add_peer(
|
|
90
94
|
UnresolvedPeerInfo(str(full_node_service_1.self_hostname), full_node_service_1._server.get_port())
|
|
91
95
|
)
|
|
92
|
-
|
|
93
|
-
await wait_until_node_type_connected(farmer.server, NodeType.FULL_NODE)
|
|
94
|
-
await wait_until_node_type_connected(farmer.server, NodeType.HARVESTER) # Should already be connected
|
|
95
|
-
await wait_until_node_type_connected(full_node_1.server, NodeType.FULL_NODE)
|
|
96
|
+
await time_out_assert(60, node_type_connected, True, full_node_1.server, NodeType.FULL_NODE)
|
|
96
97
|
|
|
97
98
|
# Prepare test data
|
|
98
99
|
blocks: list[FullBlock]
|
|
@@ -427,12 +428,11 @@ async def scan_log_for_message(caplog: pytest.LogCaptureFixture, find_message: s
|
|
|
427
428
|
return False
|
|
428
429
|
|
|
429
430
|
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
await asyncio.sleep(1)
|
|
431
|
+
def node_type_connected(server: ChiaServer, node_type: NodeType) -> bool:
|
|
432
|
+
for peer in server.all_connections.values():
|
|
433
|
+
if peer.connection_type == node_type.value:
|
|
434
|
+
return True
|
|
435
|
+
return False
|
|
436
436
|
|
|
437
437
|
|
|
438
438
|
def decode_sp(
|
|
@@ -40,9 +40,9 @@ def make_mempoolitem() -> MempoolItem:
|
|
|
40
40
|
|
|
41
41
|
fee = uint64(10000000)
|
|
42
42
|
spends: list[SpendConditions] = []
|
|
43
|
-
conds = SpendBundleConditions(spends, 0, 0, 0, None, None, [], cost, 0, 0, False, 0, 0)
|
|
43
|
+
conds = SpendBundleConditions(spends, 0, 0, 0, None, None, [], cost, 0, 0, False, 0, 0, 0, 0, 0)
|
|
44
44
|
mempool_item = MempoolItem(
|
|
45
|
-
spend_bundle,
|
|
45
|
+
spend_bundle.aggregated_signature,
|
|
46
46
|
fee,
|
|
47
47
|
conds,
|
|
48
48
|
spend_bundle.name(),
|
|
@@ -10,7 +10,6 @@ from chia_rs.sized_ints import uint64
|
|
|
10
10
|
|
|
11
11
|
from chia.full_node.full_node_rpc_api import FullNodeRpcApi
|
|
12
12
|
from chia.full_node.full_node_rpc_client import FullNodeRpcClient
|
|
13
|
-
from chia.server.aliases import WalletService
|
|
14
13
|
from chia.simulator.block_tools import BlockTools
|
|
15
14
|
from chia.simulator.full_node_simulator import FullNodeSimulator
|
|
16
15
|
from chia.simulator.simulator_protocol import FarmNewBlockProtocol
|
|
@@ -18,6 +17,7 @@ from chia.simulator.start_simulator import SimulatorFullNodeService
|
|
|
18
17
|
from chia.simulator.wallet_tools import WalletTool
|
|
19
18
|
from chia.types.blockchain_format.coin import Coin
|
|
20
19
|
from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG
|
|
20
|
+
from chia.wallet.wallet_service import WalletService
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
@pytest.fixture(scope="function")
|
|
@@ -68,8 +68,7 @@ def test_steady_fee_pressure() -> None:
|
|
|
68
68
|
estimates_during = []
|
|
69
69
|
start_from = 250
|
|
70
70
|
for height in range(start, end):
|
|
71
|
-
|
|
72
|
-
items = make_block(height, 1, cost, fee, num_blocks_wait_in_mempool)
|
|
71
|
+
items = make_block(uint32(height), 1, cost, fee, num_blocks_wait_in_mempool)
|
|
73
72
|
estimator.new_block(FeeBlockInfo(uint32(height), items))
|
|
74
73
|
if height >= start_from:
|
|
75
74
|
estimation = estimator.estimate_fee_rate(time_offset_seconds=time_offset_seconds * (height - start_from))
|
|
@@ -146,7 +146,7 @@ class TestROM:
|
|
|
146
146
|
before_seconds_relative=None,
|
|
147
147
|
birth_height=None,
|
|
148
148
|
birth_seconds=None,
|
|
149
|
-
create_coin=[(
|
|
149
|
+
create_coin=[(bytes32([0] * 31 + [1]), 500, None)],
|
|
150
150
|
agg_sig_me=[],
|
|
151
151
|
agg_sig_parent=[],
|
|
152
152
|
agg_sig_puzzle=[],
|
|
@@ -159,6 +159,7 @@ class TestROM:
|
|
|
159
159
|
# execution cost, just in run_block_generator2()
|
|
160
160
|
execution_cost=0 if softfork_height < DEFAULT_CONSTANTS.HARD_FORK_HEIGHT else 44,
|
|
161
161
|
condition_cost=1800000,
|
|
162
|
+
fingerprint=b"",
|
|
162
163
|
)
|
|
163
164
|
|
|
164
165
|
assert npc_result.conds.spends == [spend]
|
|
File without changes
|