chia-blockchain 2.5.6rc2__py3-none-any.whl → 2.5.7__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 +252 -77
- 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 +9 -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 -33
- 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 +15 -16
- chia/full_node/mempool_manager.py +73 -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 +52 -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/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.7.dist-info}/METADATA +31 -31
- {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7.dist-info}/RECORD +368 -240
- {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7.dist-info}/WHEEL +1 -1
- {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7.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.7.dist-info/licenses}/LICENSE +0 -0
chia/harvester/harvester_api.py
CHANGED
|
@@ -3,22 +3,24 @@ from __future__ import annotations
|
|
|
3
3
|
import asyncio
|
|
4
4
|
import logging
|
|
5
5
|
import time
|
|
6
|
+
from collections.abc import Awaitable, Sequence
|
|
6
7
|
from pathlib import Path
|
|
7
8
|
from typing import TYPE_CHECKING, ClassVar, Optional, cast
|
|
8
9
|
|
|
9
|
-
from chia_rs import AugSchemeMPL, G1Element, G2Element,
|
|
10
|
+
from chia_rs import AugSchemeMPL, G1Element, G2Element, ProofOfSpace
|
|
10
11
|
from chia_rs.sized_bytes import bytes32
|
|
11
|
-
from chia_rs.sized_ints import
|
|
12
|
+
from chia_rs.sized_ints import uint32, uint64
|
|
12
13
|
|
|
13
14
|
from chia.consensus.pot_iterations import (
|
|
14
15
|
calculate_iterations_quality,
|
|
15
16
|
calculate_sp_interval_iters,
|
|
16
17
|
)
|
|
17
18
|
from chia.harvester.harvester import Harvester
|
|
19
|
+
from chia.plotting.prover import PlotVersion
|
|
18
20
|
from chia.plotting.util import PlotInfo, parse_plot_info
|
|
19
21
|
from chia.protocols import harvester_protocol
|
|
20
22
|
from chia.protocols.farmer_protocol import FarmingInfo
|
|
21
|
-
from chia.protocols.harvester_protocol import Plot, PlotSyncResponse
|
|
23
|
+
from chia.protocols.harvester_protocol import PartialProofsData, Plot, PlotSyncResponse
|
|
22
24
|
from chia.protocols.outbound_message import Message, make_msg
|
|
23
25
|
from chia.protocols.protocol_message_types import ProtocolMessageTypes
|
|
24
26
|
from chia.server.api_protocol import ApiMetadata
|
|
@@ -26,8 +28,11 @@ from chia.server.ws_connection import WSChiaConnection
|
|
|
26
28
|
from chia.types.blockchain_format.proof_of_space import (
|
|
27
29
|
calculate_pos_challenge,
|
|
28
30
|
calculate_prefix_bits,
|
|
31
|
+
calculate_required_plot_strength,
|
|
29
32
|
generate_plot_public_key,
|
|
33
|
+
make_pos,
|
|
30
34
|
passes_plot_filter,
|
|
35
|
+
quality_for_partial_proof,
|
|
31
36
|
)
|
|
32
37
|
from chia.wallet.derive_keys import master_sk_to_local_sk
|
|
33
38
|
|
|
@@ -49,6 +54,60 @@ class HarvesterAPI:
|
|
|
49
54
|
def ready(self) -> bool:
|
|
50
55
|
return True
|
|
51
56
|
|
|
57
|
+
def _plot_passes_filter(self, plot_info: PlotInfo, challenge: harvester_protocol.NewSignagePointHarvester2) -> bool:
|
|
58
|
+
filter_prefix_bits = calculate_prefix_bits(
|
|
59
|
+
self.harvester.constants,
|
|
60
|
+
challenge.peak_height,
|
|
61
|
+
plot_info.prover.get_size(),
|
|
62
|
+
)
|
|
63
|
+
return passes_plot_filter(
|
|
64
|
+
filter_prefix_bits,
|
|
65
|
+
plot_info.prover.get_id(),
|
|
66
|
+
challenge.challenge_hash,
|
|
67
|
+
challenge.sp_hash,
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
async def _handle_v1_responses(
|
|
71
|
+
self,
|
|
72
|
+
awaitables: Sequence[Awaitable[tuple[Path, list[harvester_protocol.NewProofOfSpace]]]],
|
|
73
|
+
start_time: float,
|
|
74
|
+
peer: WSChiaConnection,
|
|
75
|
+
) -> int:
|
|
76
|
+
proofs_found = 0
|
|
77
|
+
for filename_sublist_awaitable in asyncio.as_completed(awaitables):
|
|
78
|
+
filename, sublist = await filename_sublist_awaitable
|
|
79
|
+
time_taken = time.monotonic() - start_time
|
|
80
|
+
if time_taken > 8:
|
|
81
|
+
self.harvester.log.warning(
|
|
82
|
+
f"Looking up qualities on {filename} took: {time_taken}. This should be below 8 seconds"
|
|
83
|
+
f" to minimize risk of losing rewards."
|
|
84
|
+
)
|
|
85
|
+
for response in sublist:
|
|
86
|
+
proofs_found += 1
|
|
87
|
+
msg = make_msg(ProtocolMessageTypes.new_proof_of_space, response)
|
|
88
|
+
await peer.send_message(msg)
|
|
89
|
+
return proofs_found
|
|
90
|
+
|
|
91
|
+
async def _handle_v2_responses(
|
|
92
|
+
self, v2_awaitables: Sequence[Awaitable[Optional[PartialProofsData]]], start_time: float, peer: WSChiaConnection
|
|
93
|
+
) -> int:
|
|
94
|
+
partial_proofs_found = 0
|
|
95
|
+
for quality_awaitable in asyncio.as_completed(v2_awaitables):
|
|
96
|
+
partial_proofs_data = await quality_awaitable
|
|
97
|
+
if partial_proofs_data is None:
|
|
98
|
+
continue
|
|
99
|
+
time_taken = time.monotonic() - start_time
|
|
100
|
+
if time_taken > 8:
|
|
101
|
+
self.harvester.log.warning(
|
|
102
|
+
f"Looking up partial proofs on {partial_proofs_data.plot_identifier}"
|
|
103
|
+
f"took: {time_taken}. This should be below 8 seconds"
|
|
104
|
+
f"to minimize risk of losing rewards."
|
|
105
|
+
)
|
|
106
|
+
partial_proofs_found += len(partial_proofs_data.partial_proofs)
|
|
107
|
+
msg = make_msg(ProtocolMessageTypes.partial_proofs, partial_proofs_data)
|
|
108
|
+
await peer.send_message(msg)
|
|
109
|
+
return partial_proofs_found
|
|
110
|
+
|
|
52
111
|
@metadata.request(peer_required=True)
|
|
53
112
|
async def harvester_handshake(
|
|
54
113
|
self, harvester_handshake: harvester_protocol.HarvesterHandshake, peer: WSChiaConnection
|
|
@@ -94,10 +153,82 @@ class HarvesterAPI:
|
|
|
94
153
|
start = time.monotonic()
|
|
95
154
|
assert len(new_challenge.challenge_hash) == 32
|
|
96
155
|
|
|
156
|
+
required_plot_strength = calculate_required_plot_strength(
|
|
157
|
+
self.harvester.constants, new_challenge.last_tx_height
|
|
158
|
+
)
|
|
159
|
+
|
|
97
160
|
loop = asyncio.get_running_loop()
|
|
98
161
|
|
|
162
|
+
def blocking_lookup_v2_partial_proofs(filename: Path, plot_info: PlotInfo) -> Optional[PartialProofsData]:
|
|
163
|
+
# Uses the V2 Prover object to lookup qualities only. No full proofs generated.
|
|
164
|
+
try:
|
|
165
|
+
plot_id = plot_info.prover.get_id()
|
|
166
|
+
sp_challenge_hash = calculate_pos_challenge(
|
|
167
|
+
plot_id,
|
|
168
|
+
new_challenge.challenge_hash,
|
|
169
|
+
new_challenge.sp_hash,
|
|
170
|
+
)
|
|
171
|
+
partial_proofs = plot_info.prover.get_partial_proofs_for_challenge(
|
|
172
|
+
sp_challenge_hash, required_plot_strength
|
|
173
|
+
)
|
|
174
|
+
|
|
175
|
+
# If no partial proofs are found, return None
|
|
176
|
+
if len(partial_proofs) == 0:
|
|
177
|
+
return None
|
|
178
|
+
|
|
179
|
+
# Get the appropriate difficulty for this plot
|
|
180
|
+
difficulty = new_challenge.difficulty
|
|
181
|
+
sub_slot_iters = new_challenge.sub_slot_iters
|
|
182
|
+
if plot_info.pool_contract_puzzle_hash is not None:
|
|
183
|
+
# Check for pool-specific difficulty
|
|
184
|
+
for pool_difficulty in new_challenge.pool_difficulties:
|
|
185
|
+
if pool_difficulty.pool_contract_puzzle_hash == plot_info.pool_contract_puzzle_hash:
|
|
186
|
+
difficulty = pool_difficulty.difficulty
|
|
187
|
+
sub_slot_iters = pool_difficulty.sub_slot_iters
|
|
188
|
+
break
|
|
189
|
+
|
|
190
|
+
# Filter qualities that pass the required_iters check (same as V1 flow)
|
|
191
|
+
good_partial_proofs = []
|
|
192
|
+
sp_interval_iters = calculate_sp_interval_iters(self.harvester.constants, sub_slot_iters)
|
|
193
|
+
|
|
194
|
+
for partial_proof in partial_proofs:
|
|
195
|
+
quality_str = quality_for_partial_proof(partial_proof, new_challenge.challenge_hash)
|
|
196
|
+
required_iters: uint64 = calculate_iterations_quality(
|
|
197
|
+
self.harvester.constants,
|
|
198
|
+
quality_str,
|
|
199
|
+
plot_info.prover.get_size(),
|
|
200
|
+
difficulty,
|
|
201
|
+
new_challenge.sp_hash,
|
|
202
|
+
sub_slot_iters,
|
|
203
|
+
new_challenge.last_tx_height,
|
|
204
|
+
)
|
|
205
|
+
|
|
206
|
+
if required_iters < sp_interval_iters:
|
|
207
|
+
good_partial_proofs.append(partial_proof)
|
|
208
|
+
|
|
209
|
+
if len(good_partial_proofs) == 0:
|
|
210
|
+
return None
|
|
211
|
+
|
|
212
|
+
size = plot_info.prover.get_size().size_v2
|
|
213
|
+
assert size is not None
|
|
214
|
+
return PartialProofsData(
|
|
215
|
+
new_challenge.challenge_hash,
|
|
216
|
+
new_challenge.sp_hash,
|
|
217
|
+
good_partial_proofs[0].hex() + str(filename.resolve()),
|
|
218
|
+
good_partial_proofs,
|
|
219
|
+
new_challenge.signage_point_index,
|
|
220
|
+
size,
|
|
221
|
+
plot_info.pool_public_key,
|
|
222
|
+
plot_info.pool_contract_puzzle_hash,
|
|
223
|
+
plot_info.plot_public_key,
|
|
224
|
+
)
|
|
225
|
+
return None
|
|
226
|
+
except Exception:
|
|
227
|
+
self.harvester.log.exception("Failed V2 partial proof lookup")
|
|
228
|
+
return None
|
|
229
|
+
|
|
99
230
|
def blocking_lookup(filename: Path, plot_info: PlotInfo) -> list[tuple[bytes32, ProofOfSpace]]:
|
|
100
|
-
# Uses the
|
|
231
|
+
# Uses the Prover object to lookup qualities. This is a blocking call,
|
|
101
232
|
# so it should be run in a thread pool.
|
|
102
233
|
try:
|
|
103
234
|
plot_id = plot_info.prover.get_id()
|
|
@@ -147,11 +278,10 @@ class HarvesterAPI:
|
|
|
147
278
|
|
|
148
279
|
# Found proofs of space (on average 1 is expected per plot)
|
|
149
280
|
for index, quality_str in enumerate(quality_strings):
|
|
150
|
-
# TODO: todo_v2_plots
|
|
151
281
|
required_iters: uint64 = calculate_iterations_quality(
|
|
152
282
|
self.harvester.constants,
|
|
153
283
|
quality_str,
|
|
154
|
-
|
|
284
|
+
plot_info.prover.get_size(),
|
|
155
285
|
difficulty,
|
|
156
286
|
new_challenge.sp_hash,
|
|
157
287
|
sub_slot_iters,
|
|
@@ -200,12 +330,12 @@ class HarvesterAPI:
|
|
|
200
330
|
responses.append(
|
|
201
331
|
(
|
|
202
332
|
quality_str,
|
|
203
|
-
|
|
333
|
+
make_pos(
|
|
204
334
|
sp_challenge_hash,
|
|
205
335
|
plot_info.pool_public_key,
|
|
206
336
|
plot_info.pool_contract_puzzle_hash,
|
|
207
337
|
plot_info.plot_public_key,
|
|
208
|
-
|
|
338
|
+
plot_info.prover.get_size(),
|
|
209
339
|
proof_xs,
|
|
210
340
|
),
|
|
211
341
|
)
|
|
@@ -218,7 +348,7 @@ class HarvesterAPI:
|
|
|
218
348
|
async def lookup_challenge(
|
|
219
349
|
filename: Path, plot_info: PlotInfo
|
|
220
350
|
) -> tuple[Path, list[harvester_protocol.NewProofOfSpace]]:
|
|
221
|
-
# Executes a
|
|
351
|
+
# Executes a ProverLookup in a thread pool, and returns responses
|
|
222
352
|
all_responses: list[harvester_protocol.NewProofOfSpace] = []
|
|
223
353
|
if self.harvester._shut_down:
|
|
224
354
|
return filename, []
|
|
@@ -241,6 +371,7 @@ class HarvesterAPI:
|
|
|
241
371
|
return filename, all_responses
|
|
242
372
|
|
|
243
373
|
awaitables = []
|
|
374
|
+
v2_awaitables = []
|
|
244
375
|
passed = 0
|
|
245
376
|
total = 0
|
|
246
377
|
with self.harvester.plot_manager:
|
|
@@ -249,21 +380,19 @@ class HarvesterAPI:
|
|
|
249
380
|
# Passes the plot filter (does not check sp filter yet though, since we have not reached sp)
|
|
250
381
|
# This is being executed at the beginning of the slot
|
|
251
382
|
total += 1
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
383
|
+
if not self._plot_passes_filter(try_plot_info, new_challenge):
|
|
384
|
+
continue
|
|
385
|
+
if try_plot_info.prover.get_version() == PlotVersion.V2:
|
|
386
|
+
v2_awaitables.append(
|
|
387
|
+
loop.run_in_executor(
|
|
388
|
+
self.harvester.executor,
|
|
389
|
+
blocking_lookup_v2_partial_proofs,
|
|
390
|
+
try_plot_filename,
|
|
391
|
+
try_plot_info,
|
|
392
|
+
)
|
|
259
393
|
)
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
filter_prefix_bits,
|
|
263
|
-
try_plot_info.prover.get_id(),
|
|
264
|
-
new_challenge.challenge_hash,
|
|
265
|
-
new_challenge.sp_hash,
|
|
266
|
-
):
|
|
394
|
+
passed += 1
|
|
395
|
+
else:
|
|
267
396
|
passed += 1
|
|
268
397
|
awaitables.append(lookup_challenge(try_plot_filename, try_plot_info))
|
|
269
398
|
self.harvester.log.debug(f"new_signage_point_harvester {passed} plots passed the plot filter")
|
|
@@ -271,23 +400,26 @@ class HarvesterAPI:
|
|
|
271
400
|
# Concurrently executes all lookups on disk, to take advantage of multiple disk parallelism
|
|
272
401
|
time_taken = time.monotonic() - start
|
|
273
402
|
total_proofs_found = 0
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
total_proofs_found
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
403
|
+
total_v2_partial_proofs_found = 0
|
|
404
|
+
|
|
405
|
+
# run both concurrently
|
|
406
|
+
tasks = []
|
|
407
|
+
if awaitables:
|
|
408
|
+
tasks.append(self._handle_v1_responses(awaitables, start, peer))
|
|
409
|
+
if v2_awaitables:
|
|
410
|
+
tasks.append(self._handle_v2_responses(v2_awaitables, start, peer))
|
|
411
|
+
|
|
412
|
+
if tasks:
|
|
413
|
+
results = await asyncio.gather(*tasks)
|
|
414
|
+
if len(results) == 2:
|
|
415
|
+
total_proofs_found, total_v2_partial_proofs_found = results
|
|
416
|
+
elif len(results) == 1:
|
|
417
|
+
if awaitables:
|
|
418
|
+
total_proofs_found = results[0]
|
|
419
|
+
else:
|
|
420
|
+
total_v2_partial_proofs_found = results[0]
|
|
421
|
+
|
|
422
|
+
now = uint64(time.time())
|
|
291
423
|
|
|
292
424
|
farming_info = FarmingInfo(
|
|
293
425
|
new_challenge.challenge_hash,
|
|
@@ -302,9 +434,10 @@ class HarvesterAPI:
|
|
|
302
434
|
await peer.send_message(pass_msg)
|
|
303
435
|
|
|
304
436
|
self.harvester.log.info(
|
|
305
|
-
f"
|
|
306
|
-
f"
|
|
307
|
-
f"
|
|
437
|
+
f"challenge_hash: {new_challenge.challenge_hash.hex()[:10]} ..."
|
|
438
|
+
f"{len(awaitables) + len(v2_awaitables)} plots were eligible for farming challenge"
|
|
439
|
+
f"Found {total_proofs_found} V1 proofs and {total_v2_partial_proofs_found} V2 qualities."
|
|
440
|
+
f" Time: {time_taken:.5f} s. Total {self.harvester.plot_manager.plot_count()} plots"
|
|
308
441
|
)
|
|
309
442
|
self.harvester.state_changed(
|
|
310
443
|
"farming_info",
|
|
@@ -312,7 +445,8 @@ class HarvesterAPI:
|
|
|
312
445
|
"challenge_hash": new_challenge.challenge_hash.hex(),
|
|
313
446
|
"total_plots": self.harvester.plot_manager.plot_count(),
|
|
314
447
|
"found_proofs": total_proofs_found,
|
|
315
|
-
"
|
|
448
|
+
"found_v2_partial_proofs": total_v2_partial_proofs_found,
|
|
449
|
+
"eligible_plots": len(awaitables) + len(v2_awaitables),
|
|
316
450
|
"time": time_taken,
|
|
317
451
|
},
|
|
318
452
|
)
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from chia.harvester.harvester import Harvester
|
|
4
|
+
from chia.harvester.harvester_api import HarvesterAPI
|
|
5
|
+
from chia.harvester.harvester_rpc_api import HarvesterRpcApi
|
|
6
|
+
from chia.server.start_service import Service
|
|
7
|
+
|
|
8
|
+
HarvesterService = Service[Harvester, HarvesterAPI, HarvesterRpcApi]
|
|
@@ -13,8 +13,8 @@ from chia.consensus.default_constants import DEFAULT_CONSTANTS, update_testnet_o
|
|
|
13
13
|
from chia.harvester.harvester import Harvester
|
|
14
14
|
from chia.harvester.harvester_api import HarvesterAPI
|
|
15
15
|
from chia.harvester.harvester_rpc_api import HarvesterRpcApi
|
|
16
|
+
from chia.harvester.harvester_service import HarvesterService
|
|
16
17
|
from chia.protocols.outbound_message import NodeType
|
|
17
|
-
from chia.server.aliases import HarvesterService
|
|
18
18
|
from chia.server.resolve_peer_info import get_unresolved_peer_infos
|
|
19
19
|
from chia.server.signal_handlers import SignalHandlers
|
|
20
20
|
from chia.server.start_service import RpcInfo, Service, async_run
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from chia.full_node.full_node_rpc_api import FullNodeRpcApi
|
|
4
|
+
from chia.introducer.introducer import Introducer
|
|
5
|
+
from chia.introducer.introducer_api import IntroducerAPI
|
|
6
|
+
from chia.server.start_service import Service
|
|
7
|
+
|
|
8
|
+
IntroducerService = Service[Introducer, IntroducerAPI, FullNodeRpcApi]
|
|
@@ -8,8 +8,8 @@ from typing import Any, Optional
|
|
|
8
8
|
from chia.apis import ApiProtocolRegistry
|
|
9
9
|
from chia.introducer.introducer import Introducer
|
|
10
10
|
from chia.introducer.introducer_api import IntroducerAPI
|
|
11
|
+
from chia.introducer.introducer_service import IntroducerService
|
|
11
12
|
from chia.protocols.outbound_message import NodeType
|
|
12
|
-
from chia.server.aliases import IntroducerService
|
|
13
13
|
from chia.server.signal_handlers import SignalHandlers
|
|
14
14
|
from chia.server.start_service import Service, async_run
|
|
15
15
|
from chia.util.chia_logging import initialize_service_logging
|
chia/plot_sync/receiver.py
CHANGED
|
@@ -6,6 +6,7 @@ from collections.abc import Awaitable, Collection, Sequence
|
|
|
6
6
|
from dataclasses import dataclass, field
|
|
7
7
|
from typing import Any, Callable, Optional, Union
|
|
8
8
|
|
|
9
|
+
from chia_rs import PlotSize
|
|
9
10
|
from chia_rs.sized_bytes import bytes32
|
|
10
11
|
from chia_rs.sized_ints import int16, uint32, uint64
|
|
11
12
|
from typing_extensions import Protocol
|
|
@@ -349,7 +350,11 @@ class Receiver:
|
|
|
349
350
|
self._duplicates = self._current_sync.delta.duplicates.additions.copy()
|
|
350
351
|
self._total_plot_size = sum(plot.file_size for plot in self._plots.values())
|
|
351
352
|
self._total_effective_plot_size = int(
|
|
352
|
-
|
|
353
|
+
# TODO: todo_v2_plots support v2 plots
|
|
354
|
+
sum(
|
|
355
|
+
UI_ACTUAL_SPACE_CONSTANT_FACTOR * int(_expected_plot_size(PlotSize.make_v1(plot.size)))
|
|
356
|
+
for plot in self._plots.values()
|
|
357
|
+
)
|
|
353
358
|
)
|
|
354
359
|
# Save current sync as last sync and create a new current sync
|
|
355
360
|
self._last_sync = self._current_sync
|
chia/plot_sync/sender.py
CHANGED
|
@@ -37,16 +37,19 @@ log = logging.getLogger(__name__)
|
|
|
37
37
|
def _convert_plot_info_list(plot_infos: list[PlotInfo]) -> list[Plot]:
|
|
38
38
|
converted: list[Plot] = []
|
|
39
39
|
for plot_info in plot_infos:
|
|
40
|
+
# TODO: todo_v2_plots support v2 plots
|
|
41
|
+
k = plot_info.prover.get_size().size_v1
|
|
42
|
+
assert k is not None
|
|
40
43
|
converted.append(
|
|
41
44
|
Plot(
|
|
42
45
|
filename=plot_info.prover.get_filename(),
|
|
43
|
-
size=
|
|
46
|
+
size=k,
|
|
44
47
|
plot_id=plot_info.prover.get_id(),
|
|
45
48
|
pool_public_key=plot_info.pool_public_key,
|
|
46
49
|
pool_contract_puzzle_hash=plot_info.pool_contract_puzzle_hash,
|
|
47
50
|
plot_public_key=plot_info.plot_public_key,
|
|
48
51
|
file_size=uint64(plot_info.file_size),
|
|
49
|
-
time_modified=uint64(
|
|
52
|
+
time_modified=uint64(plot_info.time_modified),
|
|
50
53
|
compression_level=plot_info.prover.get_compression_level(),
|
|
51
54
|
)
|
|
52
55
|
)
|
|
@@ -72,7 +75,7 @@ class MessageGenerator(Generic[T]):
|
|
|
72
75
|
args: Iterable[object]
|
|
73
76
|
|
|
74
77
|
def generate(self) -> tuple[PlotSyncIdentifier, T]:
|
|
75
|
-
identifier = PlotSyncIdentifier(uint64(
|
|
78
|
+
identifier = PlotSyncIdentifier(uint64(time.time()), self.sync_id, self.message_id)
|
|
76
79
|
payload = self.payload_type(identifier, *self.args)
|
|
77
80
|
return identifier, payload
|
|
78
81
|
|
|
@@ -277,7 +280,7 @@ class Sender:
|
|
|
277
280
|
PlotSyncStart,
|
|
278
281
|
initial,
|
|
279
282
|
self._last_sync_id,
|
|
280
|
-
uint32(
|
|
283
|
+
uint32(count),
|
|
281
284
|
self._harvesting_mode,
|
|
282
285
|
)
|
|
283
286
|
|
chia/plotting/cache.py
CHANGED
|
@@ -7,13 +7,16 @@ from collections.abc import ItemsView, KeysView, ValuesView
|
|
|
7
7
|
from dataclasses import dataclass, field
|
|
8
8
|
from math import ceil
|
|
9
9
|
from pathlib import Path
|
|
10
|
-
from typing import Optional
|
|
10
|
+
from typing import TYPE_CHECKING, Optional
|
|
11
|
+
|
|
12
|
+
if TYPE_CHECKING:
|
|
13
|
+
from chia.plotting.prover import ProverProtocol
|
|
11
14
|
|
|
12
15
|
from chia_rs import G1Element
|
|
13
16
|
from chia_rs.sized_bytes import bytes32
|
|
14
17
|
from chia_rs.sized_ints import uint16, uint64
|
|
15
|
-
from chiapos import DiskProver
|
|
16
18
|
|
|
19
|
+
from chia.plotting.prover import get_prover_from_bytes
|
|
17
20
|
from chia.plotting.util import parse_plot_info
|
|
18
21
|
from chia.types.blockchain_format.proof_of_space import generate_plot_public_key
|
|
19
22
|
from chia.util.streamable import Streamable, VersionedBlob, streamable
|
|
@@ -43,7 +46,7 @@ class CacheDataV1(Streamable):
|
|
|
43
46
|
|
|
44
47
|
@dataclass
|
|
45
48
|
class CacheEntry:
|
|
46
|
-
prover:
|
|
49
|
+
prover: ProverProtocol
|
|
47
50
|
farmer_public_key: G1Element
|
|
48
51
|
pool_public_key: Optional[G1Element]
|
|
49
52
|
pool_contract_puzzle_hash: Optional[bytes32]
|
|
@@ -51,7 +54,7 @@ class CacheEntry:
|
|
|
51
54
|
last_use: float
|
|
52
55
|
|
|
53
56
|
@classmethod
|
|
54
|
-
def
|
|
57
|
+
def from_prover(cls, prover: ProverProtocol) -> CacheEntry:
|
|
55
58
|
(
|
|
56
59
|
pool_public_key_or_puzzle_hash,
|
|
57
60
|
farmer_public_key,
|
|
@@ -113,7 +116,7 @@ class Cache:
|
|
|
113
116
|
cache_entry.pool_public_key,
|
|
114
117
|
cache_entry.pool_contract_puzzle_hash,
|
|
115
118
|
cache_entry.plot_public_key,
|
|
116
|
-
uint64(
|
|
119
|
+
uint64(cache_entry.last_use),
|
|
117
120
|
)
|
|
118
121
|
for path, cache_entry in self.items()
|
|
119
122
|
}
|
|
@@ -149,8 +152,9 @@ class Cache:
|
|
|
149
152
|
39: 44367,
|
|
150
153
|
}
|
|
151
154
|
for path, cache_entry in cache_data.entries:
|
|
155
|
+
prover: ProverProtocol = get_prover_from_bytes(path, cache_entry.prover_data)
|
|
152
156
|
new_entry = CacheEntry(
|
|
153
|
-
|
|
157
|
+
prover,
|
|
154
158
|
cache_entry.farmer_public_key,
|
|
155
159
|
cache_entry.pool_public_key,
|
|
156
160
|
cache_entry.pool_contract_puzzle_hash,
|
|
@@ -161,28 +165,33 @@ class Cache:
|
|
|
161
165
|
# it's here to filter invalid cache entries coming from bladebit RAM plotting.
|
|
162
166
|
# Related: - https://github.com/Chia-Network/chia-blockchain/issues/13084
|
|
163
167
|
# - https://github.com/Chia-Network/chiapos/pull/337
|
|
164
|
-
|
|
165
|
-
if
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
check_size =
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
168
|
+
ps = new_entry.prover.get_size()
|
|
169
|
+
if ps.size_v1 is not None:
|
|
170
|
+
k = ps.size_v1
|
|
171
|
+
if k not in estimated_c2_sizes:
|
|
172
|
+
estimated_c2_sizes[k] = ceil(2**k / 100_000_000) * ceil(k / 8)
|
|
173
|
+
memo_size = len(new_entry.prover.get_memo())
|
|
174
|
+
prover_size = len(cache_entry.prover_data)
|
|
175
|
+
# Estimated C2 size + memo size + 2000 (static data + path)
|
|
176
|
+
# static data: version(2) + table pointers (<=96) + id(32) + k(1) => ~130
|
|
177
|
+
# path: up to ~1870, all above will lead to false positive.
|
|
178
|
+
# See https://github.com/Chia-Network/chiapos/blob/3ee062b86315823dd775453ad320b8be892c7df3/src/prover_disk.hpp#L282-L287 # noqa: E501
|
|
179
|
+
|
|
180
|
+
# Use experimental measurements if more than estimates
|
|
181
|
+
# https://github.com/Chia-Network/chia-blockchain/issues/16063
|
|
182
|
+
check_size = estimated_c2_sizes[k] + memo_size + 2000
|
|
183
|
+
if k in measured_sizes:
|
|
184
|
+
check_size = max(check_size, measured_sizes[k])
|
|
185
|
+
|
|
186
|
+
if prover_size > check_size:
|
|
187
|
+
log.warning(
|
|
188
|
+
"Suspicious cache entry dropped. Recommended: stop the harvester, remove "
|
|
189
|
+
f"{self._path}, restart. Entry: size {prover_size}, path {path}"
|
|
190
|
+
)
|
|
191
|
+
else:
|
|
192
|
+
self._data[Path(path)] = new_entry
|
|
193
|
+
elif ps.size_v2 is not None:
|
|
194
|
+
# TODO: todo_v2_plots validate prover size
|
|
186
195
|
self._data[Path(path)] = new_entry
|
|
187
196
|
|
|
188
197
|
log.info(f"Parsed {len(self._data)} cache entries in {time.time() - start:.2f}s")
|