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/server/rate_limits.py
CHANGED
|
@@ -4,7 +4,7 @@ import dataclasses
|
|
|
4
4
|
import logging
|
|
5
5
|
import time
|
|
6
6
|
from collections import Counter
|
|
7
|
-
from typing import Optional
|
|
7
|
+
from typing import Callable, Optional, Union
|
|
8
8
|
|
|
9
9
|
from chia.protocols.outbound_message import Message
|
|
10
10
|
from chia.protocols.protocol_message_types import ProtocolMessageTypes
|
|
@@ -18,14 +18,22 @@ log = logging.getLogger(__name__)
|
|
|
18
18
|
class RateLimiter:
|
|
19
19
|
incoming: bool
|
|
20
20
|
reset_seconds: int
|
|
21
|
-
|
|
21
|
+
current_slot: int
|
|
22
22
|
message_counts: Counter[ProtocolMessageTypes]
|
|
23
23
|
message_cumulative_sizes: Counter[ProtocolMessageTypes]
|
|
24
24
|
percentage_of_limit: int
|
|
25
25
|
non_tx_message_counts: int = 0
|
|
26
26
|
non_tx_cumulative_size: int = 0
|
|
27
|
+
get_time: Callable[[], float]
|
|
27
28
|
|
|
28
|
-
def __init__(
|
|
29
|
+
def __init__(
|
|
30
|
+
self,
|
|
31
|
+
incoming: bool,
|
|
32
|
+
reset_seconds: int = 60,
|
|
33
|
+
percentage_of_limit: int = 100,
|
|
34
|
+
*,
|
|
35
|
+
get_time: Callable[[], float] = time.monotonic,
|
|
36
|
+
):
|
|
29
37
|
"""
|
|
30
38
|
The incoming parameter affects whether counters are incremented
|
|
31
39
|
unconditionally or not. For incoming messages, the counters are always
|
|
@@ -33,9 +41,10 @@ class RateLimiter:
|
|
|
33
41
|
if they are allowed to be sent by the rate limiter, since we won't send
|
|
34
42
|
the messages otherwise.
|
|
35
43
|
"""
|
|
44
|
+
self.get_time = get_time
|
|
36
45
|
self.incoming = incoming
|
|
37
46
|
self.reset_seconds = reset_seconds
|
|
38
|
-
self.
|
|
47
|
+
self.current_slot = int(get_time() // reset_seconds)
|
|
39
48
|
self.message_counts = Counter()
|
|
40
49
|
self.message_cumulative_sizes = Counter()
|
|
41
50
|
self.percentage_of_limit = percentage_of_limit
|
|
@@ -51,9 +60,9 @@ class RateLimiter:
|
|
|
51
60
|
hit and the message is good to be sent or received.
|
|
52
61
|
"""
|
|
53
62
|
|
|
54
|
-
|
|
55
|
-
if
|
|
56
|
-
self.
|
|
63
|
+
current_slot = int(self.get_time() // self.reset_seconds)
|
|
64
|
+
if current_slot != self.current_slot:
|
|
65
|
+
self.current_slot = current_slot
|
|
57
66
|
self.message_counts = Counter()
|
|
58
67
|
self.message_cumulative_sizes = Counter()
|
|
59
68
|
self.non_tx_message_counts = 0
|
|
@@ -71,39 +80,33 @@ class RateLimiter:
|
|
|
71
80
|
proportion_of_limit: float = self.percentage_of_limit / 100
|
|
72
81
|
|
|
73
82
|
ret: bool = False
|
|
74
|
-
rate_limits
|
|
83
|
+
rate_limits: dict[ProtocolMessageTypes, Union[RLSettings, Unlimited]]
|
|
84
|
+
rate_limits, agg_limit = get_rate_limits_to_use(our_capabilities, peer_capabilities)
|
|
75
85
|
|
|
76
86
|
try:
|
|
77
|
-
limits: RLSettings = rate_limits[
|
|
78
|
-
if
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
f"(scale factor: {proportion_of_limit})",
|
|
101
|
-
]
|
|
102
|
-
)
|
|
103
|
-
else: # pragma: no cover
|
|
104
|
-
log.warning(
|
|
105
|
-
f"Message type {message_type} not found in rate limits (scale factor: {proportion_of_limit})",
|
|
106
|
-
)
|
|
87
|
+
limits: Union[RLSettings, Unlimited] = rate_limits[message_type]
|
|
88
|
+
if isinstance(limits, RLSettings) and limits.aggregate_limit:
|
|
89
|
+
non_tx_freq = agg_limit.frequency
|
|
90
|
+
assert agg_limit.max_total_size is not None
|
|
91
|
+
non_tx_max_total_size = agg_limit.max_total_size
|
|
92
|
+
new_non_tx_count = self.non_tx_message_counts + 1
|
|
93
|
+
new_non_tx_size = self.non_tx_cumulative_size + len(message.data)
|
|
94
|
+
if new_non_tx_count > non_tx_freq * proportion_of_limit:
|
|
95
|
+
return " ".join(
|
|
96
|
+
[
|
|
97
|
+
f"non-tx count: {new_non_tx_count}",
|
|
98
|
+
f"> {non_tx_freq * proportion_of_limit}",
|
|
99
|
+
f"(scale factor: {proportion_of_limit})",
|
|
100
|
+
]
|
|
101
|
+
)
|
|
102
|
+
if new_non_tx_size > non_tx_max_total_size * proportion_of_limit:
|
|
103
|
+
return " ".join(
|
|
104
|
+
[
|
|
105
|
+
f"non-tx size: {new_non_tx_size}",
|
|
106
|
+
f"> {non_tx_max_total_size * proportion_of_limit}",
|
|
107
|
+
f"(scale factor: {proportion_of_limit})",
|
|
108
|
+
]
|
|
109
|
+
)
|
|
107
110
|
|
|
108
111
|
if isinstance(limits, Unlimited):
|
|
109
112
|
# this message type is not rate limited. This is used for
|
|
@@ -121,9 +124,9 @@ class RateLimiter:
|
|
|
121
124
|
if new_message_counts > limits.frequency * proportion_of_limit:
|
|
122
125
|
return " ".join(
|
|
123
126
|
[
|
|
124
|
-
f"message count: {new_message_counts}"
|
|
125
|
-
f"> {limits.frequency * proportion_of_limit}"
|
|
126
|
-
f"(scale factor: {proportion_of_limit})"
|
|
127
|
+
f"message count: {new_message_counts}",
|
|
128
|
+
f"> {limits.frequency * proportion_of_limit}",
|
|
129
|
+
f"(scale factor: {proportion_of_limit})",
|
|
127
130
|
]
|
|
128
131
|
)
|
|
129
132
|
if len(message.data) > limits.max_size:
|
chia/server/resolve_peer_info.py
CHANGED
|
@@ -11,6 +11,7 @@ log = logging.getLogger(__name__)
|
|
|
11
11
|
PEER_INFO_MAPPING: dict[NodeType, str] = {
|
|
12
12
|
NodeType.FULL_NODE: "full_node_peer",
|
|
13
13
|
NodeType.FARMER: "farmer_peer",
|
|
14
|
+
NodeType.SOLVER: "solver_peer",
|
|
14
15
|
}
|
|
15
16
|
|
|
16
17
|
|
|
@@ -21,6 +22,10 @@ def get_unresolved_peer_infos(service_config: dict[str, Any], peer_type: NodeTyp
|
|
|
21
22
|
if peer_info is not None:
|
|
22
23
|
peer_infos.append(peer_info)
|
|
23
24
|
|
|
25
|
+
# Default solver peer if none configured
|
|
26
|
+
if peer_type == NodeType.SOLVER and not peer_infos:
|
|
27
|
+
peer_infos = [{"host": "localhost", "port": 8666}]
|
|
28
|
+
|
|
24
29
|
return {UnresolvedPeerInfo(host=peer["host"], port=peer["port"]) for peer in peer_infos}
|
|
25
30
|
|
|
26
31
|
|
chia/server/server.py
CHANGED
|
@@ -173,7 +173,12 @@ class ChiaServer:
|
|
|
173
173
|
public_cert_path, public_key_path = None, None
|
|
174
174
|
|
|
175
175
|
authenticated_client_types = {NodeType.HARVESTER}
|
|
176
|
-
authenticated_server_types = {
|
|
176
|
+
authenticated_server_types = {
|
|
177
|
+
NodeType.HARVESTER,
|
|
178
|
+
NodeType.FARMER,
|
|
179
|
+
NodeType.WALLET,
|
|
180
|
+
NodeType.DATA_LAYER,
|
|
181
|
+
}
|
|
177
182
|
|
|
178
183
|
if local_type in authenticated_client_types:
|
|
179
184
|
# Authenticated clients
|
|
@@ -260,9 +265,8 @@ class ChiaServer:
|
|
|
260
265
|
if is_crawler is not None:
|
|
261
266
|
if time.time() - connection.creation_time > 5:
|
|
262
267
|
to_remove.append(connection)
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
to_remove.append(connection)
|
|
268
|
+
elif time.time() - connection.last_message_time > 1800:
|
|
269
|
+
to_remove.append(connection)
|
|
266
270
|
for connection in to_remove:
|
|
267
271
|
self.log.debug(f"Garbage collecting connection {connection.peer_info.host} due to inactivity")
|
|
268
272
|
if connection.closed:
|
|
@@ -548,9 +552,15 @@ class ChiaServer:
|
|
|
548
552
|
# in this case we still want to do the banning logic and remove the connection from the list
|
|
549
553
|
# but the other cleanup should already have been done so we skip that
|
|
550
554
|
|
|
551
|
-
if
|
|
552
|
-
|
|
553
|
-
|
|
555
|
+
if ban_time > 0:
|
|
556
|
+
if is_localhost(connection.peer_info.host):
|
|
557
|
+
self.log.warning(f"Trying to ban localhost for {ban_time}, but will not ban")
|
|
558
|
+
ban_time = 0
|
|
559
|
+
elif self.is_trusted_peer(connection, self.config.get("trusted_peers", {})):
|
|
560
|
+
self.log.warning(
|
|
561
|
+
f"Trying to ban trusted peer {connection.peer_info.host} for {ban_time}, but will not ban"
|
|
562
|
+
)
|
|
563
|
+
ban_time = 0
|
|
554
564
|
if ban_time > 0:
|
|
555
565
|
ban_until: float = time.time() + ban_time
|
|
556
566
|
self.log.warning(f"Banning {connection.peer_info.host} for {ban_time} seconds")
|
chia/server/start_service.py
CHANGED
chia/simulator/block_tools.py
CHANGED
|
@@ -14,7 +14,7 @@ from collections.abc import Sequence
|
|
|
14
14
|
from dataclasses import dataclass, replace
|
|
15
15
|
from pathlib import Path
|
|
16
16
|
from random import Random
|
|
17
|
-
from typing import Any, Callable, Optional
|
|
17
|
+
from typing import Any, Callable, Optional, Union
|
|
18
18
|
|
|
19
19
|
import anyio
|
|
20
20
|
from chia_puzzles_py.programs import CHIALISP_DESERIALISATION, ROM_BOOTSTRAP_GENERATOR
|
|
@@ -28,7 +28,6 @@ from chia_rs import (
|
|
|
28
28
|
G1Element,
|
|
29
29
|
G2Element,
|
|
30
30
|
InfusedChallengeChainSubSlot,
|
|
31
|
-
PlotSize,
|
|
32
31
|
PoolTarget,
|
|
33
32
|
PrivateKey,
|
|
34
33
|
ProofOfSpace,
|
|
@@ -65,6 +64,7 @@ from chia.daemon.keychain_proxy import KeychainProxy, connect_to_keychain_and_va
|
|
|
65
64
|
from chia.full_node.bundle_tools import simple_solution_generator, simple_solution_generator_backrefs
|
|
66
65
|
from chia.plotting.create_plots import PlotKeys, create_plots
|
|
67
66
|
from chia.plotting.manager import PlotManager
|
|
67
|
+
from chia.plotting.prover import PlotVersion
|
|
68
68
|
from chia.plotting.util import (
|
|
69
69
|
Params,
|
|
70
70
|
PlotRefreshEvents,
|
|
@@ -92,9 +92,13 @@ from chia.types.blockchain_format.program import DEFAULT_FLAGS, INFINITE_COST, P
|
|
|
92
92
|
from chia.types.blockchain_format.proof_of_space import (
|
|
93
93
|
calculate_pos_challenge,
|
|
94
94
|
calculate_prefix_bits,
|
|
95
|
+
calculate_required_plot_strength,
|
|
95
96
|
generate_plot_public_key,
|
|
96
97
|
generate_taproot_sk,
|
|
98
|
+
make_pos,
|
|
97
99
|
passes_plot_filter,
|
|
100
|
+
quality_for_partial_proof,
|
|
101
|
+
solve_proof,
|
|
98
102
|
)
|
|
99
103
|
from chia.types.blockchain_format.serialized_program import SerializedProgram
|
|
100
104
|
from chia.types.blockchain_format.vdf import VDFInfo, VDFProof
|
|
@@ -772,7 +776,7 @@ class BlockTools:
|
|
|
772
776
|
seed,
|
|
773
777
|
force_overflow=force_overflow,
|
|
774
778
|
skip_slots=skip_slots,
|
|
775
|
-
timestamp=(uint64(
|
|
779
|
+
timestamp=(uint64(time.time()) if genesis_timestamp is None else genesis_timestamp),
|
|
776
780
|
)
|
|
777
781
|
self.log.info(f"Created block 0 iters: {genesis.total_iters}")
|
|
778
782
|
num_empty_slots_added = skip_slots
|
|
@@ -898,11 +902,10 @@ class BlockTools:
|
|
|
898
902
|
# address, so continue until a proof of space tied to a pk is found
|
|
899
903
|
continue
|
|
900
904
|
pool_target = PoolTarget(proof_of_space.pool_contract_puzzle_hash, uint32(0))
|
|
905
|
+
elif pool_reward_puzzle_hash is not None:
|
|
906
|
+
pool_target = PoolTarget(pool_reward_puzzle_hash, uint32(0))
|
|
901
907
|
else:
|
|
902
|
-
|
|
903
|
-
pool_target = PoolTarget(pool_reward_puzzle_hash, uint32(0))
|
|
904
|
-
else:
|
|
905
|
-
pool_target = PoolTarget(self.pool_ph, uint32(0))
|
|
908
|
+
pool_target = PoolTarget(self.pool_ph, uint32(0))
|
|
906
909
|
|
|
907
910
|
new_gen = self.setup_new_gen(
|
|
908
911
|
tx_block_heights,
|
|
@@ -966,7 +969,6 @@ class BlockTools:
|
|
|
966
969
|
block_list.append(full_block)
|
|
967
970
|
|
|
968
971
|
if include_transactions:
|
|
969
|
-
prev_tx_height = full_block.height
|
|
970
972
|
for coin in full_block.get_included_reward_coins():
|
|
971
973
|
if coin.puzzle_hash == self.farmer_ph:
|
|
972
974
|
pending_rewards.append(coin)
|
|
@@ -980,6 +982,7 @@ class BlockTools:
|
|
|
980
982
|
|
|
981
983
|
if full_block.transactions_generator is not None:
|
|
982
984
|
tx_block_heights.append(full_block.height)
|
|
985
|
+
prev_tx_height = full_block.height
|
|
983
986
|
|
|
984
987
|
blocks_added_this_sub_slot += 1
|
|
985
988
|
blocks[full_block.header_hash] = block_record
|
|
@@ -1193,11 +1196,10 @@ class BlockTools:
|
|
|
1193
1196
|
# address, so continue until a proof of space tied to a pk is found
|
|
1194
1197
|
continue
|
|
1195
1198
|
pool_target = PoolTarget(proof_of_space.pool_contract_puzzle_hash, uint32(0))
|
|
1199
|
+
elif pool_reward_puzzle_hash is not None:
|
|
1200
|
+
pool_target = PoolTarget(pool_reward_puzzle_hash, uint32(0))
|
|
1196
1201
|
else:
|
|
1197
|
-
|
|
1198
|
-
pool_target = PoolTarget(pool_reward_puzzle_hash, uint32(0))
|
|
1199
|
-
else:
|
|
1200
|
-
pool_target = PoolTarget(self.pool_ph, uint32(0))
|
|
1202
|
+
pool_target = PoolTarget(self.pool_ph, uint32(0))
|
|
1201
1203
|
|
|
1202
1204
|
new_gen = self.setup_new_gen(
|
|
1203
1205
|
tx_block_heights,
|
|
@@ -1261,7 +1263,6 @@ class BlockTools:
|
|
|
1261
1263
|
block_list.append(full_block)
|
|
1262
1264
|
|
|
1263
1265
|
if include_transactions:
|
|
1264
|
-
prev_tx_height = full_block.height
|
|
1265
1266
|
for coin in full_block.get_included_reward_coins():
|
|
1266
1267
|
if coin.puzzle_hash == self.farmer_ph:
|
|
1267
1268
|
pending_rewards.append(coin)
|
|
@@ -1275,6 +1276,7 @@ class BlockTools:
|
|
|
1275
1276
|
|
|
1276
1277
|
if full_block.transactions_generator is not None:
|
|
1277
1278
|
tx_block_heights.append(full_block.height)
|
|
1279
|
+
prev_tx_height = full_block.height
|
|
1278
1280
|
|
|
1279
1281
|
blocks_added_this_sub_slot += 1
|
|
1280
1282
|
blocks[full_block.header_hash] = block_record
|
|
@@ -1311,7 +1313,7 @@ class BlockTools:
|
|
|
1311
1313
|
skip_slots: int = 0,
|
|
1312
1314
|
) -> FullBlock:
|
|
1313
1315
|
if timestamp is None:
|
|
1314
|
-
timestamp = uint64(
|
|
1316
|
+
timestamp = uint64(time.time())
|
|
1315
1317
|
|
|
1316
1318
|
finished_sub_slots: list[EndOfSubSlotBundle] = []
|
|
1317
1319
|
unfinished_block: Optional[UnfinishedBlock] = None
|
|
@@ -1502,53 +1504,81 @@ class BlockTools:
|
|
|
1502
1504
|
found_proofs: list[tuple[uint64, ProofOfSpace]] = []
|
|
1503
1505
|
rng = random.Random()
|
|
1504
1506
|
rng.seed(seed)
|
|
1507
|
+
|
|
1508
|
+
required_plot_strength = calculate_required_plot_strength(constants, prev_transaction_b_height)
|
|
1509
|
+
|
|
1505
1510
|
for plot_info in self.plot_manager.plots.values():
|
|
1506
1511
|
plot_id: bytes32 = plot_info.prover.get_id()
|
|
1507
1512
|
if force_plot_id is not None and plot_id != force_plot_id:
|
|
1508
1513
|
continue
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
new_challenge: bytes32 = calculate_pos_challenge(plot_id, challenge_hash, signage_point)
|
|
1513
|
-
qualities = plot_info.prover.get_qualities_for_challenge(new_challenge)
|
|
1514
|
-
|
|
1515
|
-
for proof_index, quality_str in enumerate(qualities):
|
|
1516
|
-
required_iters = calculate_iterations_quality(
|
|
1517
|
-
constants,
|
|
1518
|
-
quality_str,
|
|
1519
|
-
# TODO: todo_v2_plots support v2 plots in the plot manager
|
|
1520
|
-
PlotSize.make_v1(plot_info.prover.get_size()),
|
|
1521
|
-
difficulty,
|
|
1522
|
-
signage_point,
|
|
1523
|
-
sub_slot_iters,
|
|
1524
|
-
prev_transaction_b_height,
|
|
1525
|
-
)
|
|
1526
|
-
if required_iters < calculate_sp_interval_iters(constants, sub_slot_iters):
|
|
1527
|
-
proof_xs: bytes = plot_info.prover.get_full_proof(new_challenge, proof_index)
|
|
1514
|
+
prefix_bits = calculate_prefix_bits(constants, height, plot_info.prover.get_size())
|
|
1515
|
+
if not passes_plot_filter(prefix_bits, plot_id, challenge_hash, signage_point):
|
|
1516
|
+
continue
|
|
1528
1517
|
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1518
|
+
# v2 plots aren't valid until after the hard fork
|
|
1519
|
+
if (
|
|
1520
|
+
prev_transaction_b_height < constants.HARD_FORK2_HEIGHT
|
|
1521
|
+
and plot_info.prover.get_version() == PlotVersion.V2
|
|
1522
|
+
):
|
|
1523
|
+
continue
|
|
1524
|
+
|
|
1525
|
+
new_challenge: bytes32 = calculate_pos_challenge(plot_id, challenge_hash, signage_point)
|
|
1526
|
+
|
|
1527
|
+
# these are either qualities (v1) or partial proofs (v2)
|
|
1528
|
+
proofs: Sequence[Union[bytes32, bytes]]
|
|
1529
|
+
v = plot_info.prover.get_version()
|
|
1530
|
+
if v == PlotVersion.V1:
|
|
1531
|
+
proofs = plot_info.prover.get_qualities_for_challenge(new_challenge)
|
|
1532
|
+
else:
|
|
1533
|
+
proofs = plot_info.prover.get_partial_proofs_for_challenge(new_challenge, required_plot_strength)
|
|
1534
|
+
|
|
1535
|
+
for proof_index, proof in enumerate(proofs):
|
|
1536
|
+
if v == PlotVersion.V2:
|
|
1537
|
+
quality_str = quality_for_partial_proof(proof, new_challenge)
|
|
1538
|
+
elif v == PlotVersion.V1:
|
|
1539
|
+
quality_str = bytes32(proof)
|
|
1540
|
+
|
|
1541
|
+
required_iters = calculate_iterations_quality(
|
|
1542
|
+
constants,
|
|
1543
|
+
quality_str,
|
|
1544
|
+
plot_info.prover.get_size(),
|
|
1545
|
+
difficulty,
|
|
1546
|
+
signage_point,
|
|
1547
|
+
sub_slot_iters,
|
|
1548
|
+
prev_transaction_b_height,
|
|
1549
|
+
)
|
|
1550
|
+
if required_iters >= calculate_sp_interval_iters(constants, sub_slot_iters):
|
|
1551
|
+
continue
|
|
1552
|
+
|
|
1553
|
+
proof_xs: bytes
|
|
1554
|
+
if v == PlotVersion.V1:
|
|
1555
|
+
proof_xs = plot_info.prover.get_full_proof(new_challenge, proof_index)
|
|
1556
|
+
else:
|
|
1557
|
+
proof_xs = solve_proof(proof)
|
|
1558
|
+
|
|
1559
|
+
# Look up local_sk from plot to save locked memory
|
|
1560
|
+
(
|
|
1561
|
+
pool_public_key_or_puzzle_hash,
|
|
1562
|
+
farmer_public_key,
|
|
1563
|
+
local_master_sk,
|
|
1564
|
+
) = parse_plot_info(plot_info.prover.get_memo())
|
|
1565
|
+
local_sk = master_sk_to_local_sk(local_master_sk)
|
|
1566
|
+
|
|
1567
|
+
if isinstance(pool_public_key_or_puzzle_hash, G1Element):
|
|
1568
|
+
include_taproot = False
|
|
1569
|
+
else:
|
|
1570
|
+
assert isinstance(pool_public_key_or_puzzle_hash, bytes32)
|
|
1571
|
+
include_taproot = True
|
|
1572
|
+
plot_pk = generate_plot_public_key(local_sk.get_g1(), farmer_public_key, include_taproot)
|
|
1573
|
+
proof_of_space: ProofOfSpace = make_pos(
|
|
1574
|
+
new_challenge,
|
|
1575
|
+
plot_info.pool_public_key,
|
|
1576
|
+
plot_info.pool_contract_puzzle_hash,
|
|
1577
|
+
plot_pk,
|
|
1578
|
+
plot_info.prover.get_size(),
|
|
1579
|
+
proof_xs,
|
|
1580
|
+
)
|
|
1581
|
+
found_proofs.append((required_iters, proof_of_space))
|
|
1552
1582
|
random_sample = found_proofs
|
|
1553
1583
|
if len(found_proofs) >= 1:
|
|
1554
1584
|
if rng.random() < 0.1:
|
|
@@ -1734,7 +1764,8 @@ def get_plot_dir(plot_dir_name: str = "test-plots", automated_testing: bool = Tr
|
|
|
1734
1764
|
if not automated_testing: # make sure we don't accidentally stack directories.
|
|
1735
1765
|
root_dir = (
|
|
1736
1766
|
root_dir.parent
|
|
1737
|
-
if root_dir.parts[-1] == plot_dir_name.split("/"
|
|
1767
|
+
if root_dir.parts[-1] == plot_dir_name.split("/", maxsplit=1)[0]
|
|
1768
|
+
or root_dir.parts[-1] == plot_dir_name.split("\\", maxsplit=1)[0]
|
|
1738
1769
|
else root_dir
|
|
1739
1770
|
)
|
|
1740
1771
|
cache_path = root_dir.joinpath(plot_dir_name)
|
|
@@ -1758,6 +1789,7 @@ def load_block_list(
|
|
|
1758
1789
|
sub_slot_iters = uint64(constants.SUB_SLOT_ITERS_STARTING)
|
|
1759
1790
|
height_to_hash: dict[uint32, bytes32] = {}
|
|
1760
1791
|
blocks: dict[bytes32, BlockRecord] = {}
|
|
1792
|
+
prev_transaction_b_height = uint32(0)
|
|
1761
1793
|
for full_block in block_list:
|
|
1762
1794
|
if full_block.height != 0:
|
|
1763
1795
|
if len(full_block.finished_sub_slots) > 0:
|
|
@@ -1774,7 +1806,6 @@ def load_block_list(
|
|
|
1774
1806
|
sp_hash = full_block.reward_chain_block.challenge_chain_sp_vdf.output.get_hash()
|
|
1775
1807
|
|
|
1776
1808
|
cache = BlockCache(blocks)
|
|
1777
|
-
prev_transaction_b_height = uint32(0) # TODO: todo_v2_plots
|
|
1778
1809
|
|
|
1779
1810
|
required_iters = validate_pospace_and_get_required_iters(
|
|
1780
1811
|
constants,
|
|
@@ -1788,6 +1819,9 @@ def load_block_list(
|
|
|
1788
1819
|
)
|
|
1789
1820
|
assert required_iters is not None
|
|
1790
1821
|
|
|
1822
|
+
if full_block.is_transaction_block():
|
|
1823
|
+
prev_transaction_b_height = full_block.height
|
|
1824
|
+
|
|
1791
1825
|
blocks[full_block.header_hash] = block_to_block_record(
|
|
1792
1826
|
constants,
|
|
1793
1827
|
cache,
|
|
@@ -167,7 +167,7 @@ class FullNodeSimulator(FullNodeAPI):
|
|
|
167
167
|
raise ValueError("Cannot revert to a height less than 1.")
|
|
168
168
|
block_record: BlockRecord = self.full_node.blockchain.height_to_block_record(new_height)
|
|
169
169
|
# remove enough data to allow a bunch of blocks to be wiped.
|
|
170
|
-
async with self.full_node.block_store.
|
|
170
|
+
async with self.full_node.block_store.transaction():
|
|
171
171
|
# set coinstore
|
|
172
172
|
await self.full_node.coin_store.rollback_to_block(new_height)
|
|
173
173
|
# set blockstore to new height
|
chia/simulator/setup_services.py
CHANGED
|
@@ -18,33 +18,31 @@ from chia_rs.sized_ints import uint16
|
|
|
18
18
|
from chia.cmds.init_funcs import init
|
|
19
19
|
from chia.consensus.constants import replace_str_to_bytes
|
|
20
20
|
from chia.daemon.server import WebSocketServer, daemon_launch_lock_path
|
|
21
|
+
from chia.farmer.farmer_service import FarmerService
|
|
22
|
+
from chia.farmer.start_farmer import create_farmer_service
|
|
23
|
+
from chia.full_node.full_node_service import FullNodeService
|
|
24
|
+
from chia.full_node.start_full_node import create_full_node_service
|
|
25
|
+
from chia.harvester.harvester_service import HarvesterService
|
|
26
|
+
from chia.harvester.start_harvester import create_harvester_service
|
|
27
|
+
from chia.introducer.introducer_service import IntroducerService
|
|
28
|
+
from chia.introducer.start_introducer import create_introducer_service
|
|
21
29
|
from chia.protocols.outbound_message import NodeType
|
|
22
30
|
from chia.protocols.shared_protocol import Capability, default_capabilities
|
|
31
|
+
from chia.seeder.crawler_service import CrawlerService
|
|
23
32
|
from chia.seeder.dns_server import DNSServer, create_dns_server_service
|
|
24
33
|
from chia.seeder.start_crawler import create_full_node_crawler_service
|
|
25
|
-
from chia.server.aliases import (
|
|
26
|
-
CrawlerService,
|
|
27
|
-
FarmerService,
|
|
28
|
-
FullNodeService,
|
|
29
|
-
HarvesterService,
|
|
30
|
-
IntroducerService,
|
|
31
|
-
TimelordService,
|
|
32
|
-
WalletService,
|
|
33
|
-
)
|
|
34
34
|
from chia.server.resolve_peer_info import set_peer_info
|
|
35
35
|
from chia.server.signal_handlers import SignalHandlers
|
|
36
|
-
from chia.server.start_farmer import create_farmer_service
|
|
37
|
-
from chia.server.start_full_node import create_full_node_service
|
|
38
|
-
from chia.server.start_harvester import create_harvester_service
|
|
39
|
-
from chia.server.start_introducer import create_introducer_service
|
|
40
|
-
from chia.server.start_timelord import create_timelord_service
|
|
41
|
-
from chia.server.start_wallet import create_wallet_service
|
|
42
36
|
from chia.simulator.block_tools import BlockTools, test_constants
|
|
43
37
|
from chia.simulator.keyring import TempKeyring
|
|
44
38
|
from chia.simulator.ssl_certs import get_next_nodes_certs_and_keys, get_next_private_ca_cert_and_key
|
|
45
39
|
from chia.simulator.start_simulator import SimulatorFullNodeService, create_full_node_simulator_service
|
|
40
|
+
from chia.solver.solver_service import SolverService
|
|
41
|
+
from chia.solver.start_solver import create_solver_service
|
|
46
42
|
from chia.ssl.create_ssl import create_all_ssl
|
|
43
|
+
from chia.timelord.start_timelord import create_timelord_service
|
|
47
44
|
from chia.timelord.timelord_launcher import VDFClientProcessMgr, find_vdf_client, spawn_process
|
|
45
|
+
from chia.timelord.timelord_service import TimelordService
|
|
48
46
|
from chia.types.peer_info import UnresolvedPeerInfo
|
|
49
47
|
from chia.util.bech32m import encode_puzzle_hash
|
|
50
48
|
from chia.util.config import config_path_for_filename, load_config, lock_and_load_config, save_config
|
|
@@ -52,6 +50,8 @@ from chia.util.db_wrapper import generate_in_memory_db_uri
|
|
|
52
50
|
from chia.util.keychain import bytes_to_mnemonic
|
|
53
51
|
from chia.util.lock import Lockfile
|
|
54
52
|
from chia.util.task_referencer import create_referenced_task
|
|
53
|
+
from chia.wallet.start_wallet import create_wallet_service
|
|
54
|
+
from chia.wallet.wallet_service import WalletService
|
|
55
55
|
|
|
56
56
|
log = logging.getLogger(__name__)
|
|
57
57
|
|
|
@@ -359,6 +359,7 @@ async def setup_farmer(
|
|
|
359
359
|
full_node_port: Optional[uint16] = None,
|
|
360
360
|
start_service: bool = True,
|
|
361
361
|
port: uint16 = uint16(0),
|
|
362
|
+
solver_peer: Optional[UnresolvedPeerInfo] = None,
|
|
362
363
|
) -> AsyncGenerator[FarmerService, None]:
|
|
363
364
|
with create_lock_and_load_config(b_tools.root_path / "config" / "ssl" / "ca", root_path) as root_config:
|
|
364
365
|
root_config["logging"]["log_stdout"] = True
|
|
@@ -386,6 +387,16 @@ async def setup_farmer(
|
|
|
386
387
|
service_config.pop("full_node_peer", None)
|
|
387
388
|
service_config.pop("full_node_peers", None)
|
|
388
389
|
|
|
390
|
+
if solver_peer:
|
|
391
|
+
service_config["solver_peers"] = [
|
|
392
|
+
{
|
|
393
|
+
"host": solver_peer.host,
|
|
394
|
+
"port": solver_peer.port,
|
|
395
|
+
},
|
|
396
|
+
]
|
|
397
|
+
else:
|
|
398
|
+
service_config.pop("solver_peers", None)
|
|
399
|
+
|
|
389
400
|
service = create_farmer_service(
|
|
390
401
|
root_path,
|
|
391
402
|
root_config,
|
|
@@ -393,6 +404,7 @@ async def setup_farmer(
|
|
|
393
404
|
consensus_constants,
|
|
394
405
|
b_tools.local_keychain,
|
|
395
406
|
connect_to_daemon=False,
|
|
407
|
+
solver_peer=solver_peer,
|
|
396
408
|
)
|
|
397
409
|
|
|
398
410
|
async with service.manage(start=start_service):
|
|
@@ -506,3 +518,28 @@ async def setup_timelord(
|
|
|
506
518
|
|
|
507
519
|
async with service.manage():
|
|
508
520
|
yield service
|
|
521
|
+
|
|
522
|
+
|
|
523
|
+
@asynccontextmanager
|
|
524
|
+
async def setup_solver(
|
|
525
|
+
root_path: Path,
|
|
526
|
+
b_tools: BlockTools,
|
|
527
|
+
consensus_constants: ConsensusConstants,
|
|
528
|
+
start_service: bool = True,
|
|
529
|
+
) -> AsyncGenerator[SolverService, None]:
|
|
530
|
+
with create_lock_and_load_config(b_tools.root_path / "config" / "ssl" / "ca", root_path) as config:
|
|
531
|
+
config["logging"]["log_stdout"] = True
|
|
532
|
+
config["solver"]["enable_upnp"] = True
|
|
533
|
+
config["solver"]["selected_network"] = "testnet0"
|
|
534
|
+
config["solver"]["port"] = 0
|
|
535
|
+
config["solver"]["rpc_port"] = 0
|
|
536
|
+
config["solver"]["num_threads"] = 1
|
|
537
|
+
save_config(root_path, "config.yaml", config)
|
|
538
|
+
service = create_solver_service(
|
|
539
|
+
root_path,
|
|
540
|
+
config,
|
|
541
|
+
consensus_constants,
|
|
542
|
+
)
|
|
543
|
+
|
|
544
|
+
async with service.manage(start=start_service):
|
|
545
|
+
yield service
|
chia/solver/__init__.py
ADDED
|
File without changes
|