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
chia/plotting/check_plots.py
CHANGED
|
@@ -3,16 +3,20 @@ from __future__ import annotations
|
|
|
3
3
|
import concurrent.futures
|
|
4
4
|
import logging
|
|
5
5
|
from collections import Counter
|
|
6
|
+
from collections.abc import Sequence
|
|
6
7
|
from pathlib import Path
|
|
7
8
|
from threading import Lock
|
|
8
|
-
from time import
|
|
9
|
-
from typing import Optional
|
|
9
|
+
from time import monotonic, sleep
|
|
10
|
+
from typing import Optional, Union
|
|
10
11
|
|
|
11
12
|
from chia_rs import G1Element
|
|
12
|
-
from chia_rs.
|
|
13
|
+
from chia_rs.sized_bytes import bytes32
|
|
14
|
+
from chia_rs.sized_ints import uint8, uint32
|
|
13
15
|
from chiapos import Verifier
|
|
14
16
|
|
|
17
|
+
from chia.consensus.default_constants import DEFAULT_CONSTANTS
|
|
15
18
|
from chia.plotting.manager import PlotManager
|
|
19
|
+
from chia.plotting.prover import PlotVersion
|
|
16
20
|
from chia.plotting.util import (
|
|
17
21
|
PlotInfo,
|
|
18
22
|
PlotRefreshEvents,
|
|
@@ -22,6 +26,10 @@ from chia.plotting.util import (
|
|
|
22
26
|
get_plot_filenames,
|
|
23
27
|
parse_plot_info,
|
|
24
28
|
)
|
|
29
|
+
from chia.types.blockchain_format.proof_of_space import (
|
|
30
|
+
quality_for_partial_proof,
|
|
31
|
+
solve_proof,
|
|
32
|
+
)
|
|
25
33
|
from chia.util.bech32m import encode_puzzle_hash
|
|
26
34
|
from chia.util.config import load_config
|
|
27
35
|
from chia.util.cpu import available_logical_cores
|
|
@@ -133,14 +141,16 @@ def check_plots(
|
|
|
133
141
|
log.info("")
|
|
134
142
|
log.info("")
|
|
135
143
|
log.info(f"Starting to test each plot with {num} challenges each\n")
|
|
136
|
-
|
|
144
|
+
total_good_plots_v1: Counter[uint8] = Counter()
|
|
145
|
+
total_good_plots_v2: Counter[uint8] = Counter()
|
|
137
146
|
total_size = 0
|
|
138
147
|
bad_plots_list: list[Path] = []
|
|
139
148
|
|
|
140
149
|
with plot_manager:
|
|
141
150
|
|
|
142
151
|
def process_plot(plot_path: Path, plot_info: PlotInfo, num_start: int, num_end: int, lock: Lock) -> None:
|
|
143
|
-
nonlocal
|
|
152
|
+
nonlocal total_good_plots_v1
|
|
153
|
+
nonlocal total_good_plots_v2
|
|
144
154
|
nonlocal total_size
|
|
145
155
|
nonlocal bad_plots_list
|
|
146
156
|
|
|
@@ -166,48 +176,26 @@ def check_plots(
|
|
|
166
176
|
|
|
167
177
|
total_proofs = 0
|
|
168
178
|
caught_exception: bool = False
|
|
179
|
+
version = pr.get_version()
|
|
169
180
|
for i in range(num_start, num_end):
|
|
170
181
|
challenge = std_hash(i.to_bytes(32, "big"))
|
|
182
|
+
# these are either qualities (v1) or partial proofs (v2)
|
|
183
|
+
proofs: Sequence[Union[bytes32, bytes]]
|
|
171
184
|
# Some plot errors cause get_qualities_for_challenge to throw a RuntimeError
|
|
172
185
|
try:
|
|
173
|
-
quality_start_time =
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
proof_start_time = int(round(time() * 1000))
|
|
187
|
-
proof = pr.get_full_proof(challenge, index, parallel_read)
|
|
188
|
-
proof_spent_time = int(round(time() * 1000)) - proof_start_time
|
|
189
|
-
if proof_spent_time > 15000:
|
|
190
|
-
log.warning(
|
|
191
|
-
f"\tFinding proof took: {proof_spent_time} ms. This should be below 15 seconds "
|
|
192
|
-
f"to minimize risk of losing rewards. Filepath: {plot_path}"
|
|
193
|
-
)
|
|
194
|
-
else:
|
|
195
|
-
log.info(f"\tFinding proof took: {proof_spent_time} ms. Filepath: {plot_path}")
|
|
196
|
-
|
|
197
|
-
ver_quality_str = v.validate_proof(pr.get_id(), pr.get_size(), challenge, proof)
|
|
198
|
-
if quality_str == ver_quality_str:
|
|
199
|
-
total_proofs += 1
|
|
200
|
-
else:
|
|
201
|
-
log.warning(
|
|
202
|
-
f"\tQuality doesn't match with proof. Filepath: {plot_path} "
|
|
203
|
-
"This can occasionally happen with a compressed plot."
|
|
204
|
-
)
|
|
205
|
-
except AssertionError as e:
|
|
206
|
-
log.error(
|
|
207
|
-
f"{type(e)}: {e} error in proving/verifying for plot {plot_path}. Filepath: {plot_path}"
|
|
208
|
-
)
|
|
209
|
-
caught_exception = True
|
|
210
|
-
quality_start_time = int(round(time() * 1000))
|
|
186
|
+
quality_start_time = round(monotonic() * 1000)
|
|
187
|
+
if version == PlotVersion.V1:
|
|
188
|
+
proofs = pr.get_qualities_for_challenge(challenge)
|
|
189
|
+
else:
|
|
190
|
+
proofs = pr.get_partial_proofs_for_challenge(challenge, DEFAULT_CONSTANTS.PLOT_STRENGTH_INITIAL)
|
|
191
|
+
quality_spent_time = round(monotonic() * 1000) - quality_start_time
|
|
192
|
+
if quality_spent_time > 8000:
|
|
193
|
+
log.warning(
|
|
194
|
+
f"\tLooking up qualities took: {quality_spent_time} ms. This should be below 8 seconds "
|
|
195
|
+
f"to minimize risk of losing rewards. Filepath: {plot_path}"
|
|
196
|
+
)
|
|
197
|
+
else:
|
|
198
|
+
log.info(f"\tLooking up qualities took: {quality_spent_time} ms. Filepath: {plot_path}")
|
|
211
199
|
except KeyboardInterrupt:
|
|
212
200
|
log.warning("Interrupted, closing")
|
|
213
201
|
return
|
|
@@ -221,9 +209,46 @@ def check_plots(
|
|
|
221
209
|
else:
|
|
222
210
|
log.error(f"{type(e)}: {e} error in getting challenge qualities for plot {plot_path}")
|
|
223
211
|
caught_exception = True
|
|
212
|
+
continue
|
|
224
213
|
except Exception as e:
|
|
225
214
|
log.error(f"{type(e)}: {e} error in getting challenge qualities for plot {plot_path}")
|
|
226
215
|
caught_exception = True
|
|
216
|
+
break
|
|
217
|
+
|
|
218
|
+
for index, proof in enumerate(proofs):
|
|
219
|
+
# Other plot errors cause get_full_proof or validate_proof to throw an AssertionError
|
|
220
|
+
try:
|
|
221
|
+
proof_start_time = round(monotonic() * 1000)
|
|
222
|
+
if version == PlotVersion.V1:
|
|
223
|
+
quality_str = bytes32(proof)
|
|
224
|
+
full_proof = pr.get_full_proof(challenge, index, parallel_read)
|
|
225
|
+
proof_spent_time = round(monotonic() * 1000) - proof_start_time
|
|
226
|
+
else:
|
|
227
|
+
quality_str = quality_for_partial_proof(proof, challenge)
|
|
228
|
+
proof_spent_time = round(monotonic() * 1000) - proof_start_time
|
|
229
|
+
full_proof = solve_proof(proof)
|
|
230
|
+
|
|
231
|
+
if proof_spent_time > 15000:
|
|
232
|
+
log.warning(
|
|
233
|
+
f"\tFinding proof took: {proof_spent_time} ms. This should be below 15 seconds "
|
|
234
|
+
f"to minimize risk of losing rewards. Filepath: {plot_path}"
|
|
235
|
+
)
|
|
236
|
+
else:
|
|
237
|
+
log.info(f"\tFinding proof took: {proof_spent_time} ms. Filepath: {plot_path}")
|
|
238
|
+
|
|
239
|
+
ver_quality_str = v.validate_proof(pr.get_id(), pr.get_size().size_v1, challenge, full_proof)
|
|
240
|
+
if quality_str == ver_quality_str:
|
|
241
|
+
total_proofs += 1
|
|
242
|
+
else:
|
|
243
|
+
log.warning(
|
|
244
|
+
f"\tQuality doesn't match with proof. Filepath: {plot_path} "
|
|
245
|
+
"This can occasionally happen with a compressed plot."
|
|
246
|
+
)
|
|
247
|
+
except AssertionError as e:
|
|
248
|
+
log.error(
|
|
249
|
+
f"{type(e)}: {e} error in proving/verifying for plot {plot_path}. Filepath: {plot_path}"
|
|
250
|
+
)
|
|
251
|
+
caught_exception = True
|
|
227
252
|
if caught_exception is True:
|
|
228
253
|
break
|
|
229
254
|
|
|
@@ -232,8 +257,16 @@ def check_plots(
|
|
|
232
257
|
f"\tProofs {total_proofs} / {challenges}, {round(total_proofs / float(challenges), 4)}. "
|
|
233
258
|
f"Filepath: {plot_path}"
|
|
234
259
|
)
|
|
235
|
-
|
|
236
|
-
|
|
260
|
+
version_and_size = pr.get_size()
|
|
261
|
+
if version_and_size.size_v1 is not None:
|
|
262
|
+
k = version_and_size.size_v1
|
|
263
|
+
total_good_plots_v1[k] += 1
|
|
264
|
+
total_size += plot_path.stat().st_size
|
|
265
|
+
else:
|
|
266
|
+
assert version_and_size.size_v2 is not None
|
|
267
|
+
k = version_and_size.size_v2
|
|
268
|
+
total_good_plots_v2[k] += 1
|
|
269
|
+
total_size += plot_path.stat().st_size
|
|
237
270
|
else:
|
|
238
271
|
log.error(
|
|
239
272
|
f"\tProofs {total_proofs} / {challenges}, {round(total_proofs / float(challenges), 4)} "
|
|
@@ -255,10 +288,12 @@ def check_plots(
|
|
|
255
288
|
log.info("")
|
|
256
289
|
log.info("")
|
|
257
290
|
log.info("Summary")
|
|
258
|
-
total_plots: int = sum(list(
|
|
291
|
+
total_plots: int = sum(list(total_good_plots_v1.values()) + list(total_good_plots_v2.values()))
|
|
259
292
|
log.info(f"Found {total_plots} valid plots, total size {total_size / (1024 * 1024 * 1024 * 1024):.5f} TiB")
|
|
260
|
-
for k, count in sorted(dict(
|
|
261
|
-
log.info(f"{count} plots of size {k}")
|
|
293
|
+
for k, count in sorted(dict(total_good_plots_v1).items()):
|
|
294
|
+
log.info(f"{count} v1 plots of size {k}")
|
|
295
|
+
for k, count in sorted(dict(total_good_plots_v2).items()):
|
|
296
|
+
log.info(f"{count} v2 plots of size {k}")
|
|
262
297
|
grand_total_bad = len(bad_plots_list) + len(plot_manager.failed_to_open_filenames)
|
|
263
298
|
if grand_total_bad > 0:
|
|
264
299
|
log.warning(f"{grand_total_bad} invalid plots found:")
|
chia/plotting/create_plots.py
CHANGED
|
@@ -83,10 +83,9 @@ class PlotKeysResolver:
|
|
|
83
83
|
if self.pool_contract_address is not None:
|
|
84
84
|
raise RuntimeError("Choose one of pool_contract_address and pool_public_key")
|
|
85
85
|
pool_public_key = G1Element.from_bytes(bytes.fromhex(self.pool_public_key))
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
pool_public_key = await self.get_pool_public_key(keychain_proxy)
|
|
86
|
+
elif self.pool_contract_address is None:
|
|
87
|
+
# If nothing is set, farms to the provided key (or the first key)
|
|
88
|
+
pool_public_key = await self.get_pool_public_key(keychain_proxy)
|
|
90
89
|
|
|
91
90
|
self.resolved_keys = PlotKeys(farmer_public_key, pool_public_key, self.pool_contract_address)
|
|
92
91
|
finally:
|
chia/plotting/manager.py
CHANGED
|
@@ -9,10 +9,11 @@ from pathlib import Path
|
|
|
9
9
|
from typing import Any, Callable, Optional
|
|
10
10
|
|
|
11
11
|
from chia_rs import G1Element
|
|
12
|
-
from chiapos import
|
|
12
|
+
from chiapos import decompressor_context_queue
|
|
13
13
|
|
|
14
14
|
from chia.consensus.pos_quality import UI_ACTUAL_SPACE_CONSTANT_FACTOR, _expected_plot_size
|
|
15
15
|
from chia.plotting.cache import Cache, CacheEntry
|
|
16
|
+
from chia.plotting.prover import get_prover_from_file
|
|
16
17
|
from chia.plotting.util import (
|
|
17
18
|
HarvestingMode,
|
|
18
19
|
PlotInfo,
|
|
@@ -323,7 +324,7 @@ class PlotManager:
|
|
|
323
324
|
cache_entry = self.cache.get(file_path)
|
|
324
325
|
cache_hit = cache_entry is not None
|
|
325
326
|
if not cache_hit:
|
|
326
|
-
prover =
|
|
327
|
+
prover = get_prover_from_file(str(file_path))
|
|
327
328
|
|
|
328
329
|
log.debug(f"process_file {file_path!s}")
|
|
329
330
|
|
|
@@ -332,18 +333,22 @@ class PlotManager:
|
|
|
332
333
|
# TODO: consider checking if the file was just written to (which would mean that the file is still
|
|
333
334
|
# being copied). A segfault might happen in this edge case.
|
|
334
335
|
|
|
336
|
+
k = prover.get_size()
|
|
335
337
|
level = prover.get_compression_level()
|
|
336
|
-
if
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
)
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
338
|
+
if (
|
|
339
|
+
level == 0
|
|
340
|
+
and stat_info.st_size < 0.98 * expected_size
|
|
341
|
+
and ((k.size_v1 is not None and k.size_v1 >= 30) or (k.size_v2 is not None and k.size_v2 >= 28))
|
|
342
|
+
):
|
|
343
|
+
log.warning(
|
|
344
|
+
f"Not farming plot {file_path}. "
|
|
345
|
+
f"Size is {stat_info.st_size / (1024**3)} GiB, "
|
|
346
|
+
f"but expected at least: {expected_size / (1024**3)} GiB. "
|
|
347
|
+
"We assume the file is being copied."
|
|
348
|
+
)
|
|
349
|
+
return None
|
|
350
|
+
|
|
351
|
+
cache_entry = CacheEntry.from_prover(prover)
|
|
347
352
|
self.cache.update(file_path, cache_entry)
|
|
348
353
|
|
|
349
354
|
assert cache_entry is not None
|
chia/plotting/prover.py
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from enum import IntEnum
|
|
4
|
+
from typing import TYPE_CHECKING, ClassVar, Protocol, cast
|
|
5
|
+
|
|
6
|
+
from chia_rs import PlotSize
|
|
7
|
+
from chia_rs.sized_bytes import bytes32
|
|
8
|
+
from chia_rs.sized_ints import uint8
|
|
9
|
+
from chiapos import DiskProver
|
|
10
|
+
|
|
11
|
+
if TYPE_CHECKING:
|
|
12
|
+
from chiapos import DiskProver
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class PlotVersion(IntEnum):
|
|
16
|
+
"""Enum for plot format versions"""
|
|
17
|
+
|
|
18
|
+
V1 = 1
|
|
19
|
+
V2 = 2
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class ProverProtocol(Protocol):
|
|
23
|
+
def get_filename(self) -> str: ...
|
|
24
|
+
def get_size(self) -> PlotSize: ...
|
|
25
|
+
def get_memo(self) -> bytes: ...
|
|
26
|
+
def get_compression_level(self) -> uint8: ...
|
|
27
|
+
def get_version(self) -> PlotVersion: ...
|
|
28
|
+
def __bytes__(self) -> bytes: ...
|
|
29
|
+
def get_id(self) -> bytes32: ...
|
|
30
|
+
def get_qualities_for_challenge(self, challenge: bytes32) -> list[bytes32]: ...
|
|
31
|
+
|
|
32
|
+
# this is only supported by v2 plots
|
|
33
|
+
def get_partial_proofs_for_challenge(self, challenge: bytes32, required_plot_strength: uint8) -> list[bytes]: ...
|
|
34
|
+
|
|
35
|
+
# this is only supported by v1 plots. v2 plots first get the partial proof
|
|
36
|
+
# and turn it into a full proof by calling solve_proof(), or pass it to the solver service
|
|
37
|
+
def get_full_proof(self, challenge: bytes32, index: int, parallel_read: bool = True) -> bytes: ...
|
|
38
|
+
|
|
39
|
+
@classmethod
|
|
40
|
+
def from_bytes(cls, data: bytes) -> ProverProtocol: ...
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class V2Prover:
|
|
44
|
+
"""Placeholder for future V2 plot format support"""
|
|
45
|
+
|
|
46
|
+
if TYPE_CHECKING:
|
|
47
|
+
_protocol_check: ClassVar[ProverProtocol] = cast("V2Prover", None)
|
|
48
|
+
|
|
49
|
+
def __init__(self, filename: str):
|
|
50
|
+
self._filename = filename
|
|
51
|
+
|
|
52
|
+
def get_filename(self) -> str:
|
|
53
|
+
return str(self._filename)
|
|
54
|
+
|
|
55
|
+
def get_size(self) -> PlotSize:
|
|
56
|
+
# TODO: todo_v2_plots get k size from plot
|
|
57
|
+
raise NotImplementedError("V2 plot format is not yet implemented")
|
|
58
|
+
|
|
59
|
+
def get_memo(self) -> bytes:
|
|
60
|
+
# TODO: todo_v2_plots
|
|
61
|
+
raise NotImplementedError("V2 plot format is not yet implemented")
|
|
62
|
+
|
|
63
|
+
def get_compression_level(self) -> uint8:
|
|
64
|
+
# v2 plots are never compressed
|
|
65
|
+
return uint8(0)
|
|
66
|
+
|
|
67
|
+
def get_version(self) -> PlotVersion:
|
|
68
|
+
return PlotVersion.V2
|
|
69
|
+
|
|
70
|
+
def __bytes__(self) -> bytes:
|
|
71
|
+
# TODO: todo_v2_plots Implement prover serialization for caching
|
|
72
|
+
raise NotImplementedError("V2 plot format is not yet implemented")
|
|
73
|
+
|
|
74
|
+
def get_id(self) -> bytes32:
|
|
75
|
+
# TODO: Extract plot ID from V2 plot file
|
|
76
|
+
raise NotImplementedError("V2 plot format is not yet implemented")
|
|
77
|
+
|
|
78
|
+
def get_qualities_for_challenge(self, challenge: bytes32) -> list[bytes32]:
|
|
79
|
+
raise AssertionError("V2 plot format does not support qualities directly, use partial proofs")
|
|
80
|
+
|
|
81
|
+
def get_partial_proofs_for_challenge(self, challenge: bytes, required_plot_strength: uint8) -> list[bytes]:
|
|
82
|
+
# TODO: todo_v2_plots Implement plot partial proof lookup
|
|
83
|
+
raise NotImplementedError("V2 plot format is not yet implemented")
|
|
84
|
+
|
|
85
|
+
def get_full_proof(self, challenge: bytes32, index: int, parallel_read: bool = True) -> bytes:
|
|
86
|
+
raise AssertionError("V2 plot format require solver to get full proof")
|
|
87
|
+
|
|
88
|
+
@classmethod
|
|
89
|
+
def from_bytes(cls, data: bytes) -> V2Prover:
|
|
90
|
+
# TODO: todo_v2_plots Implement prover deserialization from cache
|
|
91
|
+
raise NotImplementedError("V2 plot format is not yet implemented")
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
class V1Prover:
|
|
95
|
+
"""Wrapper for existing DiskProver to implement ProverProtocol"""
|
|
96
|
+
|
|
97
|
+
if TYPE_CHECKING:
|
|
98
|
+
_protocol_check: ClassVar[ProverProtocol] = cast("V1Prover", None)
|
|
99
|
+
|
|
100
|
+
def __init__(self, disk_prover: DiskProver) -> None:
|
|
101
|
+
self._disk_prover = disk_prover
|
|
102
|
+
|
|
103
|
+
def get_filename(self) -> str:
|
|
104
|
+
return str(self._disk_prover.get_filename())
|
|
105
|
+
|
|
106
|
+
def get_size(self) -> PlotSize:
|
|
107
|
+
return PlotSize.make_v1(uint8(self._disk_prover.get_size()))
|
|
108
|
+
|
|
109
|
+
def get_memo(self) -> bytes:
|
|
110
|
+
return bytes(self._disk_prover.get_memo())
|
|
111
|
+
|
|
112
|
+
def get_compression_level(self) -> uint8:
|
|
113
|
+
return uint8(self._disk_prover.get_compression_level())
|
|
114
|
+
|
|
115
|
+
def get_version(self) -> PlotVersion:
|
|
116
|
+
return PlotVersion.V1
|
|
117
|
+
|
|
118
|
+
def __bytes__(self) -> bytes:
|
|
119
|
+
return bytes(self._disk_prover)
|
|
120
|
+
|
|
121
|
+
def get_id(self) -> bytes32:
|
|
122
|
+
return bytes32(self._disk_prover.get_id())
|
|
123
|
+
|
|
124
|
+
def get_qualities_for_challenge(self, challenge: bytes32) -> list[bytes32]:
|
|
125
|
+
return [bytes32(quality) for quality in self._disk_prover.get_qualities_for_challenge(challenge)]
|
|
126
|
+
|
|
127
|
+
def get_partial_proofs_for_challenge(self, challenge: bytes32, required_plot_strength: uint8) -> list[bytes]:
|
|
128
|
+
raise AssertionError("V1 plot format doesn't use partial proofs")
|
|
129
|
+
|
|
130
|
+
def get_full_proof(self, challenge: bytes32, index: int, parallel_read: bool = True) -> bytes:
|
|
131
|
+
return bytes(self._disk_prover.get_full_proof(challenge, index, parallel_read))
|
|
132
|
+
|
|
133
|
+
@classmethod
|
|
134
|
+
def from_bytes(cls, data: bytes) -> V1Prover:
|
|
135
|
+
return cls(DiskProver.from_bytes(data))
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
def get_prover_from_bytes(filename: str, prover_data: bytes) -> ProverProtocol:
|
|
139
|
+
if filename.endswith(".plot2"):
|
|
140
|
+
return V2Prover.from_bytes(prover_data)
|
|
141
|
+
elif filename.endswith(".plot"):
|
|
142
|
+
return V1Prover(DiskProver.from_bytes(prover_data))
|
|
143
|
+
else:
|
|
144
|
+
raise ValueError(f"Unsupported plot file: {filename}")
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def get_prover_from_file(filename: str) -> ProverProtocol:
|
|
148
|
+
if filename.endswith(".plot2"):
|
|
149
|
+
return V2Prover(filename)
|
|
150
|
+
elif filename.endswith(".plot"):
|
|
151
|
+
return V1Prover(DiskProver(filename))
|
|
152
|
+
else:
|
|
153
|
+
raise ValueError(f"Unsupported plot file: {filename}")
|
chia/plotting/util.py
CHANGED
|
@@ -4,12 +4,14 @@ import logging
|
|
|
4
4
|
from dataclasses import dataclass, field
|
|
5
5
|
from enum import Enum, IntEnum
|
|
6
6
|
from pathlib import Path
|
|
7
|
-
from typing import Any, Optional, Union
|
|
7
|
+
from typing import TYPE_CHECKING, Any, Optional, Union
|
|
8
|
+
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from chia.plotting.prover import ProverProtocol
|
|
8
11
|
|
|
9
12
|
from chia_rs import G1Element, PrivateKey
|
|
10
13
|
from chia_rs.sized_bytes import bytes32
|
|
11
14
|
from chia_rs.sized_ints import uint32
|
|
12
|
-
from chiapos import DiskProver
|
|
13
15
|
from typing_extensions import final
|
|
14
16
|
|
|
15
17
|
from chia.util.config import load_config, lock_and_load_config, save_config
|
|
@@ -39,7 +41,7 @@ class PlotsRefreshParameter(Streamable):
|
|
|
39
41
|
|
|
40
42
|
@dataclass
|
|
41
43
|
class PlotInfo:
|
|
42
|
-
prover:
|
|
44
|
+
prover: ProverProtocol
|
|
43
45
|
pool_public_key: Optional[G1Element]
|
|
44
46
|
pool_contract_puzzle_hash: Optional[bytes32]
|
|
45
47
|
plot_public_key: G1Element
|
|
@@ -233,16 +235,22 @@ def get_filenames(directory: Path, recursive: bool, follow_links: bool) -> list[
|
|
|
233
235
|
if follow_links and recursive:
|
|
234
236
|
import glob
|
|
235
237
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
+
v1_file_strs = glob.glob(str(directory / "**" / "*.plot"), recursive=True)
|
|
239
|
+
v2_file_strs = glob.glob(str(directory / "**" / "*.plot2"), recursive=True)
|
|
240
|
+
|
|
241
|
+
for file in v1_file_strs + v2_file_strs:
|
|
238
242
|
filepath = Path(file).resolve()
|
|
239
243
|
if filepath.is_file() and not filepath.name.startswith("._"):
|
|
240
244
|
all_files.append(filepath)
|
|
241
245
|
else:
|
|
242
246
|
glob_function = directory.rglob if recursive else directory.glob
|
|
243
|
-
|
|
247
|
+
v1_files: list[Path] = [
|
|
244
248
|
child for child in glob_function("*.plot") if child.is_file() and not child.name.startswith("._")
|
|
245
249
|
]
|
|
250
|
+
v2_files: list[Path] = [
|
|
251
|
+
child for child in glob_function("*.plot2") if child.is_file() and not child.name.startswith("._")
|
|
252
|
+
]
|
|
253
|
+
all_files = v1_files + v2_files
|
|
246
254
|
log.debug(f"get_filenames: {len(all_files)} files found in {directory}, recursive: {recursive}")
|
|
247
255
|
except Exception as e:
|
|
248
256
|
log.warning(f"Error reading directory {directory} {e}")
|
chia/pools/pool_wallet.py
CHANGED
|
@@ -525,8 +525,9 @@ class PoolWallet:
|
|
|
525
525
|
interface.side_effects.transactions.append(
|
|
526
526
|
TransactionRecord(
|
|
527
527
|
confirmed_at_height=uint32(0),
|
|
528
|
-
created_at_time=uint64(
|
|
528
|
+
created_at_time=uint64(time.time()),
|
|
529
529
|
to_puzzle_hash=new_full_puzzle.get_tree_hash(),
|
|
530
|
+
to_address=self.wallet_state_manager.encode_puzzle_hash(new_full_puzzle.get_tree_hash()),
|
|
530
531
|
amount=uint64(1),
|
|
531
532
|
fee_amount=fee,
|
|
532
533
|
confirmed=False,
|
|
@@ -537,7 +538,7 @@ class PoolWallet:
|
|
|
537
538
|
wallet_id=self.id(),
|
|
538
539
|
sent_to=[],
|
|
539
540
|
trade_id=None,
|
|
540
|
-
memos=
|
|
541
|
+
memos={},
|
|
541
542
|
type=uint32(TransactionType.OUTGOING_TX.value),
|
|
542
543
|
name=unsigned_spend_bundle.name(),
|
|
543
544
|
valid_times=ConditionValidTimes(),
|
|
@@ -792,7 +793,7 @@ class PoolWallet:
|
|
|
792
793
|
),
|
|
793
794
|
)
|
|
794
795
|
|
|
795
|
-
current_time = uint64(
|
|
796
|
+
current_time = uint64(time.time())
|
|
796
797
|
# The claim spend, minus the fee amount from the main wallet
|
|
797
798
|
async with action_scope.use() as interface:
|
|
798
799
|
interface.side_effects.transactions.append(
|
|
@@ -800,6 +801,7 @@ class PoolWallet:
|
|
|
800
801
|
confirmed_at_height=uint32(0),
|
|
801
802
|
created_at_time=current_time,
|
|
802
803
|
to_puzzle_hash=current_state.current.target_puzzle_hash,
|
|
804
|
+
to_address=self.wallet_state_manager.encode_puzzle_hash(current_state.current.target_puzzle_hash),
|
|
803
805
|
amount=uint64(total_amount),
|
|
804
806
|
fee_amount=fee, # This will not be double counted in self.standard_wallet
|
|
805
807
|
confirmed=False,
|
|
@@ -809,7 +811,7 @@ class PoolWallet:
|
|
|
809
811
|
removals=claim_spend.removals(),
|
|
810
812
|
wallet_id=uint32(self.wallet_id),
|
|
811
813
|
sent_to=[],
|
|
812
|
-
memos=
|
|
814
|
+
memos={},
|
|
813
815
|
trade_id=None,
|
|
814
816
|
type=uint32(TransactionType.OUTGOING_TX.value),
|
|
815
817
|
name=claim_spend.name(),
|
|
@@ -77,6 +77,20 @@ class NewProofOfSpace(Streamable):
|
|
|
77
77
|
fee_info: Optional[ProofOfSpaceFeeInfo]
|
|
78
78
|
|
|
79
79
|
|
|
80
|
+
@streamable
|
|
81
|
+
@dataclass(frozen=True)
|
|
82
|
+
class PartialProofsData(Streamable):
|
|
83
|
+
challenge_hash: bytes32
|
|
84
|
+
sp_hash: bytes32
|
|
85
|
+
plot_identifier: str
|
|
86
|
+
partial_proofs: list[bytes] # 16 * k bits blobs instead of 32-byte quality strings
|
|
87
|
+
signage_point_index: uint8
|
|
88
|
+
plot_size: uint8
|
|
89
|
+
pool_public_key: Optional[G1Element]
|
|
90
|
+
pool_contract_puzzle_hash: Optional[bytes32]
|
|
91
|
+
plot_public_key: G1Element
|
|
92
|
+
|
|
93
|
+
|
|
80
94
|
# Source data corresponding to the hash that is sent to the Harvester for signing
|
|
81
95
|
class SigningDataKind(IntEnum):
|
|
82
96
|
FOLIAGE_BLOCK_DATA = 1
|
chia/protocols/pool_protocol.py
CHANGED
|
@@ -168,7 +168,7 @@ class ErrorResponse(Streamable):
|
|
|
168
168
|
|
|
169
169
|
# Get the current authentication token according to "Farmer authentication" in SPECIFICATION.md
|
|
170
170
|
def get_current_authentication_token(timeout: uint8) -> uint64:
|
|
171
|
-
return uint64(int(
|
|
171
|
+
return uint64(int(time.time() / 60) / timeout)
|
|
172
172
|
|
|
173
173
|
|
|
174
174
|
# Validate a given authentication token against our local time
|
|
@@ -13,6 +13,7 @@ class ProtocolMessageTypes(Enum):
|
|
|
13
13
|
new_proof_of_space = 5
|
|
14
14
|
request_signatures = 6
|
|
15
15
|
respond_signatures = 7
|
|
16
|
+
partial_proofs = 110
|
|
16
17
|
|
|
17
18
|
# Farmer protocol (farmer <-> full_node)
|
|
18
19
|
new_signage_point = 8
|
|
@@ -136,4 +137,10 @@ class ProtocolMessageTypes(Enum):
|
|
|
136
137
|
request_cost_info = 106
|
|
137
138
|
respond_cost_info = 107
|
|
138
139
|
|
|
140
|
+
# new farmer protocol messages
|
|
141
|
+
solution_response = 108
|
|
142
|
+
|
|
143
|
+
# solver protocol
|
|
144
|
+
solve = 109
|
|
145
|
+
|
|
139
146
|
error = 255
|
|
@@ -17,6 +17,7 @@ protocol_version = {
|
|
|
17
17
|
NodeType.INTRODUCER: "0.0.36",
|
|
18
18
|
NodeType.WALLET: "0.0.38",
|
|
19
19
|
NodeType.DATA_LAYER: "0.0.36",
|
|
20
|
+
NodeType.SOLVER: "0.0.37",
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
"""
|
|
@@ -65,6 +66,7 @@ default_capabilities = {
|
|
|
65
66
|
NodeType.INTRODUCER: _capabilities,
|
|
66
67
|
NodeType.WALLET: _capabilities,
|
|
67
68
|
NodeType.DATA_LAYER: _capabilities,
|
|
69
|
+
NodeType.SOLVER: _capabilities,
|
|
68
70
|
}
|
|
69
71
|
|
|
70
72
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from dataclasses import dataclass
|
|
4
|
+
|
|
5
|
+
from chia.util.streamable import Streamable, streamable
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@streamable
|
|
9
|
+
@dataclass(frozen=True)
|
|
10
|
+
class SolverInfo(Streamable):
|
|
11
|
+
partial_proof: bytes # 16 * k bits blob, k (plot size) can be derived from this
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@streamable
|
|
15
|
+
@dataclass(frozen=True)
|
|
16
|
+
class SolverResponse(Streamable):
|
|
17
|
+
partial_proof: bytes
|
|
18
|
+
proof: bytes
|
chia/rpc/rpc_server.py
CHANGED
|
@@ -292,7 +292,7 @@ class RpcServer(Generic[_T_RpcApiProtocol]):
|
|
|
292
292
|
async def open_connection(self, request: dict[str, Any]) -> EndpointResult:
|
|
293
293
|
host = request["host"]
|
|
294
294
|
port = request["port"]
|
|
295
|
-
target_node: PeerInfo = PeerInfo(await resolve(host, prefer_ipv6=self.prefer_ipv6), uint16(
|
|
295
|
+
target_node: PeerInfo = PeerInfo(await resolve(host, prefer_ipv6=self.prefer_ipv6), uint16(port))
|
|
296
296
|
on_connect = None
|
|
297
297
|
if hasattr(self.rpc_api.service, "on_connect"):
|
|
298
298
|
on_connect = self.rpc_api.service.on_connect
|
chia/seeder/crawl_store.py
CHANGED
|
@@ -195,11 +195,10 @@ class CrawlStore:
|
|
|
195
195
|
counter += 1
|
|
196
196
|
if reliability.ignore_till < now and reliability.ban_till < now:
|
|
197
197
|
add = True
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
self.ignored_peers += 1
|
|
198
|
+
elif reliability.ban_till >= now:
|
|
199
|
+
self.banned_peers += 1
|
|
200
|
+
elif reliability.ignore_till >= now:
|
|
201
|
+
self.ignored_peers += 1
|
|
203
202
|
record = self.host_to_records[peer_id]
|
|
204
203
|
if record.last_try_timestamp == 0 and record.connected_timestamp == 0:
|
|
205
204
|
add = True
|
|
@@ -342,9 +341,6 @@ class CrawlStore:
|
|
|
342
341
|
handshake = {}
|
|
343
342
|
|
|
344
343
|
for host, record in self.host_to_records.items():
|
|
345
|
-
if host not in self.host_to_records:
|
|
346
|
-
continue
|
|
347
|
-
record = self.host_to_records[host]
|
|
348
344
|
if record.version == "undefined":
|
|
349
345
|
continue
|
|
350
346
|
if record.handshake_time < time.time() - 5 * 24 * 3600:
|