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/util/config.py
CHANGED
|
@@ -305,14 +305,12 @@ def selected_network_address_prefix(config: dict[str, Any]) -> str:
|
|
|
305
305
|
|
|
306
306
|
|
|
307
307
|
def load_defaults_for_missing_services(config: dict[str, Any], config_name: str) -> dict[str, Any]:
|
|
308
|
-
services = ["data_layer"]
|
|
308
|
+
services = ["data_layer", "solver"]
|
|
309
309
|
missing_services = [service for service in services if service not in config]
|
|
310
310
|
defaulted = {}
|
|
311
311
|
if len(missing_services) > 0:
|
|
312
312
|
marshalled_default_config: str = initial_config_file(config_name)
|
|
313
|
-
|
|
314
313
|
unmarshalled_default_config = yaml.safe_load(marshalled_default_config)
|
|
315
|
-
|
|
316
314
|
for service in missing_services:
|
|
317
315
|
defaulted[service] = unmarshalled_default_config[service]
|
|
318
316
|
|
chia/util/db_wrapper.py
CHANGED
|
@@ -124,15 +124,14 @@ def get_host_parameter_limit() -> int:
|
|
|
124
124
|
|
|
125
125
|
limit_number = sqlite3.SQLITE_LIMIT_VARIABLE_NUMBER
|
|
126
126
|
host_parameter_limit = connection.getlimit(limit_number)
|
|
127
|
-
|
|
128
|
-
# guessing based on defaults, seems you can't query
|
|
127
|
+
# guessing based on defaults, seems you can't query
|
|
129
128
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
129
|
+
# https://www.sqlite.org/changes.html#version_3_32_0
|
|
130
|
+
# Increase the default upper bound on the number of parameters from 999 to 32766.
|
|
131
|
+
elif sqlite3.sqlite_version_info >= (3, 32, 0):
|
|
132
|
+
host_parameter_limit = 32766
|
|
133
|
+
else:
|
|
134
|
+
host_parameter_limit = 999
|
|
136
135
|
return host_parameter_limit
|
|
137
136
|
|
|
138
137
|
|
chia/util/initial-config.yaml
CHANGED
|
@@ -209,6 +209,11 @@ farmer:
|
|
|
209
209
|
- host: *self_hostname
|
|
210
210
|
port: 8444
|
|
211
211
|
|
|
212
|
+
# The farmer will attempt to connect to these solvers for V2 plot solving
|
|
213
|
+
solver_peers:
|
|
214
|
+
- host: *self_hostname
|
|
215
|
+
port: 8666
|
|
216
|
+
|
|
212
217
|
pool_public_keys: !!set {}
|
|
213
218
|
|
|
214
219
|
# Replace this with a real receive address
|
|
@@ -629,6 +634,42 @@ wallet:
|
|
|
629
634
|
|
|
630
635
|
auto_sign_txs: True
|
|
631
636
|
|
|
637
|
+
solver:
|
|
638
|
+
# The solver server will run on this port
|
|
639
|
+
port: 8666
|
|
640
|
+
|
|
641
|
+
# Enable or disable UPnP port forwarding
|
|
642
|
+
enable_upnp: False
|
|
643
|
+
|
|
644
|
+
# Node IDs of trusted solver peers, only these can connect by default
|
|
645
|
+
trusted_peers:
|
|
646
|
+
0ThisisanexampleNodeID7ff9d60f1c3fa270c213c0ad0cb89c01274634a7c3cb7: Does_not_matter
|
|
647
|
+
|
|
648
|
+
# If False, accepts connections from all peers (not just trusted_peers)
|
|
649
|
+
# If True (default), only accepts localhost and trusted_peers connections
|
|
650
|
+
trusted_peers_only: True
|
|
651
|
+
|
|
652
|
+
# Logging configuration
|
|
653
|
+
logging: *logging
|
|
654
|
+
|
|
655
|
+
# Network overrides and selected network
|
|
656
|
+
network_overrides: *network_overrides
|
|
657
|
+
selected_network: *selected_network
|
|
658
|
+
|
|
659
|
+
# Number of threads for solver operations
|
|
660
|
+
num_threads: 4
|
|
661
|
+
|
|
662
|
+
# RPC server configuration
|
|
663
|
+
rpc_port: 8667
|
|
664
|
+
start_rpc_server: True
|
|
665
|
+
|
|
666
|
+
# SSL configuration
|
|
667
|
+
ssl:
|
|
668
|
+
private_crt: "config/ssl/solver/private_solver.crt"
|
|
669
|
+
private_key: "config/ssl/solver/private_solver.key"
|
|
670
|
+
public_crt: "config/ssl/solver/public_solver.crt"
|
|
671
|
+
public_key: "config/ssl/solver/public_solver.key"
|
|
672
|
+
|
|
632
673
|
data_layer:
|
|
633
674
|
# TODO: consider name
|
|
634
675
|
# TODO: organize consistently with other sections
|
|
@@ -637,6 +678,8 @@ data_layer:
|
|
|
637
678
|
port: 9256
|
|
638
679
|
|
|
639
680
|
database_path: "data_layer/db/data_layer_CHALLENGE.sqlite"
|
|
681
|
+
merkle_blobs_path: "data_layer/db/merkle_blobs_CHALLENGE"
|
|
682
|
+
key_value_blobs_path: "data_layer/db/key_value_blobs_CHALLENGE"
|
|
640
683
|
# The location where the server files will be stored.
|
|
641
684
|
server_files_location: "data_layer/db/server_files_location_CHALLENGE"
|
|
642
685
|
# The timeout for the client to download a file from a server
|
|
@@ -679,6 +722,9 @@ data_layer:
|
|
|
679
722
|
# Enable to store all .DAT files grouped by store id
|
|
680
723
|
group_files_by_store: False
|
|
681
724
|
|
|
725
|
+
# Increasing this number may help sync old clients faster, at the expense of using more RAM memory
|
|
726
|
+
merkle_blobs_cache_size: 1
|
|
727
|
+
|
|
682
728
|
simulator:
|
|
683
729
|
# Should the simulator farm a block whenever a transaction is in mempool
|
|
684
730
|
auto_farm: True
|
chia/util/lru_cache.py
CHANGED
|
@@ -22,10 +22,14 @@ class LRUCache(Generic[K, V]):
|
|
|
22
22
|
return self.cache[key]
|
|
23
23
|
|
|
24
24
|
def put(self, key: K, value: V) -> None:
|
|
25
|
-
self.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
self.cache.
|
|
25
|
+
if self.capacity > 0:
|
|
26
|
+
self.cache[key] = value
|
|
27
|
+
self.cache.move_to_end(key)
|
|
28
|
+
if len(self.cache) > self.capacity:
|
|
29
|
+
self.cache.popitem(last=False)
|
|
29
30
|
|
|
30
31
|
def remove(self, key: K) -> None:
|
|
31
32
|
self.cache.pop(key)
|
|
33
|
+
|
|
34
|
+
def get_capacity(self) -> int:
|
|
35
|
+
return self.capacity
|
chia/util/network.py
CHANGED
|
@@ -9,6 +9,7 @@ from collections.abc import Iterable
|
|
|
9
9
|
from dataclasses import dataclass
|
|
10
10
|
from ipaddress import IPv4Network, IPv6Network, ip_address
|
|
11
11
|
from typing import Any, Literal, Optional, Union
|
|
12
|
+
from urllib.parse import urlsplit
|
|
12
13
|
|
|
13
14
|
from aiohttp import web
|
|
14
15
|
from aiohttp.log import web_logger
|
|
@@ -20,6 +21,14 @@ from chia.util.ip_address import IPAddress
|
|
|
20
21
|
from chia.util.task_referencer import create_referenced_task
|
|
21
22
|
|
|
22
23
|
|
|
24
|
+
def parse_host_port(host_port: str) -> tuple[str, int]:
|
|
25
|
+
"""Parse a host:port string into a tuple of (host, port), raising ValueError on failure."""
|
|
26
|
+
result = urlsplit(f"//{host_port}")
|
|
27
|
+
if result.hostname and result.port:
|
|
28
|
+
return result.hostname, result.port
|
|
29
|
+
raise ValueError(f"Invalid host:port string: {host_port}")
|
|
30
|
+
|
|
31
|
+
|
|
23
32
|
@final
|
|
24
33
|
@dataclass
|
|
25
34
|
class WebServer:
|
chia/util/service_groups.py
CHANGED
|
@@ -12,6 +12,7 @@ SERVICES_FOR_GROUP: dict[str, list[str]] = {
|
|
|
12
12
|
"chia_wallet",
|
|
13
13
|
"chia_data_layer",
|
|
14
14
|
"chia_data_layer_http",
|
|
15
|
+
"chia_solver",
|
|
15
16
|
],
|
|
16
17
|
"daemon": [],
|
|
17
18
|
# TODO: should this be `data_layer`?
|
|
@@ -19,7 +20,7 @@ SERVICES_FOR_GROUP: dict[str, list[str]] = {
|
|
|
19
20
|
"data_layer_http": ["chia_data_layer_http"],
|
|
20
21
|
"node": ["chia_full_node"],
|
|
21
22
|
"harvester": ["chia_harvester"],
|
|
22
|
-
"farmer": ["chia_harvester", "chia_farmer", "chia_full_node", "chia_wallet"],
|
|
23
|
+
"farmer": ["chia_harvester", "chia_farmer", "chia_full_node", "chia_wallet", "chia_solver"],
|
|
23
24
|
"farmer-no-wallet": ["chia_harvester", "chia_farmer", "chia_full_node"],
|
|
24
25
|
"farmer-only": ["chia_farmer"],
|
|
25
26
|
"timelord": ["chia_timelord_launcher", "chia_timelord", "chia_full_node"],
|
|
@@ -31,6 +32,7 @@ SERVICES_FOR_GROUP: dict[str, list[str]] = {
|
|
|
31
32
|
"crawler": ["chia_crawler"],
|
|
32
33
|
"seeder": ["chia_crawler", "chia_seeder"],
|
|
33
34
|
"seeder-only": ["chia_seeder"],
|
|
35
|
+
"solver": ["chia_solver"],
|
|
34
36
|
}
|
|
35
37
|
|
|
36
38
|
|
chia/util/streamable.py
CHANGED
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import dataclasses
|
|
6
|
+
import functools
|
|
6
7
|
import io
|
|
7
8
|
import os
|
|
8
9
|
import pprint
|
|
9
10
|
import traceback
|
|
10
11
|
from collections.abc import Collection
|
|
11
|
-
from enum import Enum
|
|
12
|
+
from enum import Enum, EnumMeta
|
|
12
13
|
from typing import TYPE_CHECKING, Any, BinaryIO, Callable, ClassVar, Optional, TypeVar, Union, get_type_hints
|
|
13
14
|
|
|
14
15
|
from chia_rs.sized_bytes import bytes32
|
|
@@ -130,6 +131,10 @@ def is_type_Dict(f_type: object) -> bool:
|
|
|
130
131
|
return get_origin(f_type) is dict or f_type is dict
|
|
131
132
|
|
|
132
133
|
|
|
134
|
+
def is_type_Enum(f_type: object) -> bool:
|
|
135
|
+
return type(f_type) is EnumMeta
|
|
136
|
+
|
|
137
|
+
|
|
133
138
|
def convert_optional(convert_func: ConvertFunctionType, item: Any) -> Any:
|
|
134
139
|
if item is None:
|
|
135
140
|
return None
|
|
@@ -206,7 +211,7 @@ def streamable_from_dict(klass: type[_T_Streamable], item: Any) -> _T_Streamable
|
|
|
206
211
|
|
|
207
212
|
|
|
208
213
|
def function_to_convert_one_item(
|
|
209
|
-
f_type: type[Any], json_parser: Optional[Callable[[object], Streamable]] = None
|
|
214
|
+
f_type: type[Any], json_parser: Optional[Callable[[object, type[object]], Streamable]] = None
|
|
210
215
|
) -> ConvertFunctionType:
|
|
211
216
|
if is_type_SpecificOptional(f_type):
|
|
212
217
|
convert_inner_func = function_to_convert_one_item(get_args(f_type)[0], json_parser)
|
|
@@ -230,8 +235,9 @@ def function_to_convert_one_item(
|
|
|
230
235
|
return lambda mapping: convert_dict(key_converter, value_converter, mapping) # type: ignore[arg-type]
|
|
231
236
|
elif hasattr(f_type, "from_json_dict"):
|
|
232
237
|
if json_parser is None:
|
|
233
|
-
|
|
234
|
-
|
|
238
|
+
return f_type.from_json_dict # type: ignore[no-any-return]
|
|
239
|
+
else:
|
|
240
|
+
return functools.partial(json_parser, streamable_type=f_type) # type: ignore[call-arg]
|
|
235
241
|
elif issubclass(f_type, bytes):
|
|
236
242
|
# Type is bytes, data is a hex string or bytes
|
|
237
243
|
return lambda item: convert_byte_type(f_type, item)
|
|
@@ -303,13 +309,14 @@ def recurse_jsonify(
|
|
|
303
309
|
elif isinstance(d, dict):
|
|
304
310
|
new_dict = {}
|
|
305
311
|
for name, val in d.items():
|
|
306
|
-
new_dict[
|
|
312
|
+
new_dict[next_recursion_step(name, None, **next_recursion_env)] = next_recursion_step(
|
|
313
|
+
val, None, **next_recursion_env
|
|
314
|
+
)
|
|
307
315
|
return new_dict
|
|
308
|
-
|
|
316
|
+
elif isinstance(d, Enum):
|
|
317
|
+
return next_recursion_step(d.value, None, **next_recursion_env)
|
|
309
318
|
elif issubclass(type(d), bytes):
|
|
310
319
|
return f"0x{bytes(d).hex()}"
|
|
311
|
-
elif isinstance(d, Enum):
|
|
312
|
-
return d.name
|
|
313
320
|
elif isinstance(d, bool):
|
|
314
321
|
return d
|
|
315
322
|
elif isinstance(d, int):
|
|
@@ -437,6 +444,10 @@ def function_to_parse_one_item(f_type: type[Any]) -> ParseFunctionType:
|
|
|
437
444
|
key_parse_inner_type_f = function_to_parse_one_item(inner_types[0])
|
|
438
445
|
value_parse_inner_type_f = function_to_parse_one_item(inner_types[1])
|
|
439
446
|
return lambda f: parse_dict(f, key_parse_inner_type_f, value_parse_inner_type_f)
|
|
447
|
+
if is_type_Enum(f_type):
|
|
448
|
+
if not hasattr(f_type, "_streamable_proxy"):
|
|
449
|
+
raise UnsupportedType(f"Using Enum ({f_type}) in streamable requires a 'streamable_enum' wrapper.")
|
|
450
|
+
return lambda f: f_type(function_to_parse_one_item(f_type._streamable_proxy)(f))
|
|
440
451
|
if f_type is str:
|
|
441
452
|
return parse_str
|
|
442
453
|
raise UnsupportedType(f"Type {f_type} does not have parse")
|
|
@@ -527,6 +538,13 @@ def function_to_stream_one_item(f_type: type[Any]) -> StreamFunctionType:
|
|
|
527
538
|
key_stream_inner_type_func = function_to_stream_one_item(inner_types[0])
|
|
528
539
|
value_stream_inner_type_func = function_to_stream_one_item(inner_types[1])
|
|
529
540
|
return lambda item, f: stream_dict(key_stream_inner_type_func, value_stream_inner_type_func, item, f)
|
|
541
|
+
elif is_type_Enum(f_type):
|
|
542
|
+
if not hasattr(f_type, "_streamable_proxy"):
|
|
543
|
+
raise UnsupportedType(f"Using Enum ({f_type}) in streamable requires a 'streamable_enum' wrapper.")
|
|
544
|
+
return lambda item, f: function_to_stream_one_item(f_type._streamable_proxy)(
|
|
545
|
+
f_type._streamable_proxy(item.value), # type: ignore[attr-defined]
|
|
546
|
+
f,
|
|
547
|
+
)
|
|
530
548
|
elif f_type is str:
|
|
531
549
|
return stream_str
|
|
532
550
|
elif f_type is bool:
|
|
@@ -698,3 +716,15 @@ class UInt32Range(Streamable):
|
|
|
698
716
|
class UInt64Range(Streamable):
|
|
699
717
|
start: uint64 = uint64(0)
|
|
700
718
|
stop: uint64 = uint64.MAXIMUM
|
|
719
|
+
|
|
720
|
+
|
|
721
|
+
_T_Enum = TypeVar("_T_Enum", bound=EnumMeta)
|
|
722
|
+
|
|
723
|
+
|
|
724
|
+
def streamable_enum(proxy: type[object]) -> Callable[[_T_Enum], _T_Enum]:
|
|
725
|
+
def streamable_enum_wrapper(cls: _T_Enum) -> _T_Enum:
|
|
726
|
+
setattr(cls, "_streamable_proxy", proxy)
|
|
727
|
+
setattr(cls, "_ignore_", ["_streamable_proxy"])
|
|
728
|
+
return cls
|
|
729
|
+
|
|
730
|
+
return streamable_enum_wrapper
|
|
@@ -296,7 +296,7 @@ def parse_file_or_package(identifier: str) -> FileOrPackage:
|
|
|
296
296
|
if "(" not in identifier:
|
|
297
297
|
return File(Path(identifier))
|
|
298
298
|
else:
|
|
299
|
-
return File(Path(identifier.split("(")[0].strip()))
|
|
299
|
+
return File(Path(identifier.split("(", maxsplit=1)[0].strip()))
|
|
300
300
|
|
|
301
301
|
if ".py" not in identifier and identifier[0] == "(" and identifier[-1] == ")":
|
|
302
302
|
return Package(identifier[1:-1]) # strip parens
|
|
@@ -105,8 +105,11 @@ class CATOuterPuzzle:
|
|
|
105
105
|
parent_coin: Coin = parent_spend.coin
|
|
106
106
|
also = constructor.also()
|
|
107
107
|
if also is not None:
|
|
108
|
-
|
|
109
|
-
|
|
108
|
+
constructed_solution = self._solve(also, solver, puzzle, solution)
|
|
109
|
+
constructed_puzzle = self._construct(also, puzzle)
|
|
110
|
+
else:
|
|
111
|
+
constructed_solution = solution
|
|
112
|
+
constructed_puzzle = puzzle
|
|
110
113
|
args = match_cat_puzzle(uncurry_puzzle(parent_spend.puzzle_reveal))
|
|
111
114
|
assert args is not None
|
|
112
115
|
_, _, parent_inner_puzzle = args
|
|
@@ -114,8 +117,8 @@ class CATOuterPuzzle:
|
|
|
114
117
|
SpendableCAT(
|
|
115
118
|
coin,
|
|
116
119
|
tail_hash,
|
|
117
|
-
|
|
118
|
-
|
|
120
|
+
constructed_puzzle,
|
|
121
|
+
constructed_solution,
|
|
119
122
|
lineage_proof=LineageProof(
|
|
120
123
|
parent_coin.parent_coin_info, parent_inner_puzzle.get_tree_hash(), uint64(parent_coin.amount)
|
|
121
124
|
),
|
|
@@ -172,10 +172,12 @@ class CATWallet:
|
|
|
172
172
|
raise ValueError("Internal Error, unable to generate new CAT coin")
|
|
173
173
|
cat_pid: bytes32 = cat_coin.parent_coin_info
|
|
174
174
|
|
|
175
|
+
converted_ph = await self.convert_puzzle_hash(cat_coin.puzzle_hash)
|
|
175
176
|
cat_record = TransactionRecord(
|
|
176
177
|
confirmed_at_height=uint32(0),
|
|
177
|
-
created_at_time=uint64(
|
|
178
|
-
to_puzzle_hash=
|
|
178
|
+
created_at_time=uint64(time.time()),
|
|
179
|
+
to_puzzle_hash=converted_ph,
|
|
180
|
+
to_address=self.wallet_state_manager.encode_puzzle_hash(converted_ph),
|
|
179
181
|
amount=uint64(cat_coin.amount),
|
|
180
182
|
fee_amount=fee,
|
|
181
183
|
confirmed=False,
|
|
@@ -188,7 +190,7 @@ class CATWallet:
|
|
|
188
190
|
trade_id=None,
|
|
189
191
|
type=uint32(TransactionType.INCOMING_TX.value),
|
|
190
192
|
name=spend_bundle.name(),
|
|
191
|
-
memos=
|
|
193
|
+
memos={},
|
|
192
194
|
valid_times=ConditionValidTimes(),
|
|
193
195
|
)
|
|
194
196
|
async with action_scope.use() as interface:
|
|
@@ -256,8 +258,11 @@ class CATWallet:
|
|
|
256
258
|
puzzle_driver: PuzzleInfo,
|
|
257
259
|
name: Optional[str] = None,
|
|
258
260
|
# We're hinting this as Any for mypy by should explore adding this to the wallet protocol and hinting properly
|
|
259
|
-
potential_subclasses: dict[AssetType, Any] =
|
|
261
|
+
potential_subclasses: Optional[dict[AssetType, Any]] = None,
|
|
260
262
|
) -> Any:
|
|
263
|
+
if potential_subclasses is None:
|
|
264
|
+
potential_subclasses = {}
|
|
265
|
+
|
|
261
266
|
next_layer: Optional[PuzzleInfo] = puzzle_driver.also()
|
|
262
267
|
if next_layer is not None:
|
|
263
268
|
if AssetType(next_layer.type()) in potential_subclasses:
|
|
@@ -464,7 +469,7 @@ class CATWallet:
|
|
|
464
469
|
for coin in record.additions:
|
|
465
470
|
hint_dict = {
|
|
466
471
|
coin_id: bytes32(memos[0])
|
|
467
|
-
for coin_id, memos in record.memos
|
|
472
|
+
for coin_id, memos in record.memos.items()
|
|
468
473
|
if len(memos) > 0 and len(memos[0]) == 32
|
|
469
474
|
}
|
|
470
475
|
if await self.wallet_state_manager.does_coin_belong_to_wallet(coin, self.id(), hint_dict=hint_dict):
|
|
@@ -791,8 +796,9 @@ class CATWallet:
|
|
|
791
796
|
interface.side_effects.transactions.append(
|
|
792
797
|
TransactionRecord(
|
|
793
798
|
confirmed_at_height=uint32(0),
|
|
794
|
-
created_at_time=uint64(
|
|
799
|
+
created_at_time=uint64(time.time()),
|
|
795
800
|
to_puzzle_hash=puzzle_hashes[0],
|
|
801
|
+
to_address=self.wallet_state_manager.encode_puzzle_hash(puzzle_hashes[0]),
|
|
796
802
|
amount=uint64(payment_sum),
|
|
797
803
|
fee_amount=fee,
|
|
798
804
|
confirmed=False,
|
|
@@ -805,7 +811,7 @@ class CATWallet:
|
|
|
805
811
|
trade_id=None,
|
|
806
812
|
type=uint32(TransactionType.OUTGOING_TX.value),
|
|
807
813
|
name=spend_bundle.name(),
|
|
808
|
-
memos=
|
|
814
|
+
memos=compute_memos(spend_bundle),
|
|
809
815
|
valid_times=parse_timelock_info(extra_conditions),
|
|
810
816
|
)
|
|
811
817
|
)
|
|
@@ -139,8 +139,11 @@ class RCATWallet(CATWallet):
|
|
|
139
139
|
puzzle_driver: PuzzleInfo,
|
|
140
140
|
name: Optional[str] = None,
|
|
141
141
|
# We're hinting this as Any for mypy by should explore adding this to the wallet protocol and hinting properly
|
|
142
|
-
potential_subclasses: dict[AssetType, Any] =
|
|
142
|
+
potential_subclasses: Optional[dict[AssetType, Any]] = None,
|
|
143
143
|
) -> Any:
|
|
144
|
+
if potential_subclasses is None:
|
|
145
|
+
potential_subclasses = {}
|
|
146
|
+
|
|
144
147
|
rev_layer: Optional[PuzzleInfo] = puzzle_driver.also()
|
|
145
148
|
if rev_layer is None:
|
|
146
149
|
raise ValueError("create_from_puzzle_info called on RCATWallet with a non R-CAT puzzle driver")
|
chia/wallet/conditions.py
CHANGED
|
@@ -1472,9 +1472,7 @@ def parse_timelock_info(conditions: Iterable[Condition]) -> ConditionValidTimes:
|
|
|
1472
1472
|
elif isinstance(condition, Timelock):
|
|
1473
1473
|
timelock = condition
|
|
1474
1474
|
else:
|
|
1475
|
-
|
|
1476
|
-
# https://github.com/nedbat/coveragepy/issues/1530
|
|
1477
|
-
continue # pragma: no cover
|
|
1475
|
+
continue
|
|
1478
1476
|
|
|
1479
1477
|
properties_left = properties.copy()
|
|
1480
1478
|
min_not_max: bool = True
|