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
|
@@ -1,171 +1,17 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import sqlite3
|
|
4
|
-
from typing import Any
|
|
5
4
|
|
|
6
5
|
import pytest
|
|
7
6
|
from chia_rs.sized_bytes import bytes32
|
|
8
7
|
|
|
9
|
-
from chia._tests.core.data_layer.util import add_01234567_example
|
|
10
|
-
from chia.data_layer.data_layer_util import
|
|
8
|
+
from chia._tests.core.data_layer.util import add_01234567_example
|
|
9
|
+
from chia.data_layer.data_layer_util import Status
|
|
11
10
|
from chia.data_layer.data_store import DataStore
|
|
12
11
|
|
|
13
12
|
pytestmark = pytest.mark.data_layer
|
|
14
13
|
|
|
15
14
|
|
|
16
|
-
@pytest.mark.anyio
|
|
17
|
-
async def test_node_update_fails(data_store: DataStore, store_id: bytes32) -> None:
|
|
18
|
-
await add_01234567_example(data_store=data_store, store_id=store_id)
|
|
19
|
-
node = await data_store.get_node_by_key(key=b"\x04", store_id=store_id)
|
|
20
|
-
|
|
21
|
-
async with data_store.db_wrapper.writer() as writer:
|
|
22
|
-
with pytest.raises(sqlite3.IntegrityError, match=r"^updates not allowed to the node table$"):
|
|
23
|
-
await writer.execute(
|
|
24
|
-
"UPDATE node SET value = :value WHERE hash == :hash",
|
|
25
|
-
{
|
|
26
|
-
"hash": node.hash,
|
|
27
|
-
"value": node.value,
|
|
28
|
-
},
|
|
29
|
-
)
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
@pytest.mark.parametrize(argnames="length", argvalues=sorted(set(range(50)) - {32}))
|
|
33
|
-
@pytest.mark.anyio
|
|
34
|
-
async def test_node_hash_must_be_32(
|
|
35
|
-
data_store: DataStore,
|
|
36
|
-
store_id: bytes32,
|
|
37
|
-
length: int,
|
|
38
|
-
valid_node_values: dict[str, Any],
|
|
39
|
-
) -> None:
|
|
40
|
-
valid_node_values["hash"] = bytes([0] * length)
|
|
41
|
-
|
|
42
|
-
async with data_store.db_wrapper.writer() as writer:
|
|
43
|
-
with pytest.raises(sqlite3.IntegrityError, match=r"^CHECK constraint failed:"):
|
|
44
|
-
await writer.execute(
|
|
45
|
-
"""
|
|
46
|
-
INSERT INTO node(hash, node_type, left, right, key, value)
|
|
47
|
-
VALUES(:hash, :node_type, :left, :right, :key, :value)
|
|
48
|
-
""",
|
|
49
|
-
valid_node_values,
|
|
50
|
-
)
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
@pytest.mark.anyio
|
|
54
|
-
async def test_node_hash_must_not_be_null(
|
|
55
|
-
data_store: DataStore,
|
|
56
|
-
store_id: bytes32,
|
|
57
|
-
valid_node_values: dict[str, Any],
|
|
58
|
-
) -> None:
|
|
59
|
-
valid_node_values["hash"] = None
|
|
60
|
-
|
|
61
|
-
async with data_store.db_wrapper.writer() as writer:
|
|
62
|
-
with pytest.raises(sqlite3.IntegrityError, match=r"^NOT NULL constraint failed: node.hash$"):
|
|
63
|
-
await writer.execute(
|
|
64
|
-
"""
|
|
65
|
-
INSERT INTO node(hash, node_type, left, right, key, value)
|
|
66
|
-
VALUES(:hash, :node_type, :left, :right, :key, :value)
|
|
67
|
-
""",
|
|
68
|
-
valid_node_values,
|
|
69
|
-
)
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
@pytest.mark.anyio
|
|
73
|
-
async def test_node_type_must_be_valid(
|
|
74
|
-
data_store: DataStore,
|
|
75
|
-
node_type: NodeType,
|
|
76
|
-
bad_node_type: int,
|
|
77
|
-
valid_node_values: dict[str, Any],
|
|
78
|
-
) -> None:
|
|
79
|
-
valid_node_values["node_type"] = bad_node_type
|
|
80
|
-
|
|
81
|
-
async with data_store.db_wrapper.writer() as writer:
|
|
82
|
-
with pytest.raises(sqlite3.IntegrityError, match=r"^CHECK constraint failed:"):
|
|
83
|
-
await writer.execute(
|
|
84
|
-
"""
|
|
85
|
-
INSERT INTO node(hash, node_type, left, right, key, value)
|
|
86
|
-
VALUES(:hash, :node_type, :left, :right, :key, :value)
|
|
87
|
-
""",
|
|
88
|
-
valid_node_values,
|
|
89
|
-
)
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
@pytest.mark.parametrize(argnames="side", argvalues=Side)
|
|
93
|
-
@pytest.mark.anyio
|
|
94
|
-
async def test_node_internal_child_not_null(data_store: DataStore, store_id: bytes32, side: Side) -> None:
|
|
95
|
-
await add_01234567_example(data_store=data_store, store_id=store_id)
|
|
96
|
-
node_a = await data_store.get_node_by_key(key=b"\x02", store_id=store_id)
|
|
97
|
-
node_b = await data_store.get_node_by_key(key=b"\x04", store_id=store_id)
|
|
98
|
-
|
|
99
|
-
values = create_valid_node_values(node_type=NodeType.INTERNAL, left_hash=node_a.hash, right_hash=node_b.hash)
|
|
100
|
-
|
|
101
|
-
if side == Side.LEFT:
|
|
102
|
-
values["left"] = None
|
|
103
|
-
elif side == Side.RIGHT:
|
|
104
|
-
values["right"] = None
|
|
105
|
-
|
|
106
|
-
async with data_store.db_wrapper.writer() as writer:
|
|
107
|
-
with pytest.raises(sqlite3.IntegrityError, match=r"^CHECK constraint failed:"):
|
|
108
|
-
await writer.execute(
|
|
109
|
-
"""
|
|
110
|
-
INSERT INTO node(hash, node_type, left, right, key, value)
|
|
111
|
-
VALUES(:hash, :node_type, :left, :right, :key, :value)
|
|
112
|
-
""",
|
|
113
|
-
values,
|
|
114
|
-
)
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
@pytest.mark.parametrize(argnames="bad_child_hash", argvalues=[b"\x01" * 32, b"\0" * 31, b""])
|
|
118
|
-
@pytest.mark.parametrize(argnames="side", argvalues=Side)
|
|
119
|
-
@pytest.mark.anyio
|
|
120
|
-
async def test_node_internal_must_be_valid_reference(
|
|
121
|
-
data_store: DataStore,
|
|
122
|
-
store_id: bytes32,
|
|
123
|
-
bad_child_hash: bytes,
|
|
124
|
-
side: Side,
|
|
125
|
-
) -> None:
|
|
126
|
-
await add_01234567_example(data_store=data_store, store_id=store_id)
|
|
127
|
-
node_a = await data_store.get_node_by_key(key=b"\x02", store_id=store_id)
|
|
128
|
-
node_b = await data_store.get_node_by_key(key=b"\x04", store_id=store_id)
|
|
129
|
-
|
|
130
|
-
values = create_valid_node_values(node_type=NodeType.INTERNAL, left_hash=node_a.hash, right_hash=node_b.hash)
|
|
131
|
-
|
|
132
|
-
if side == Side.LEFT:
|
|
133
|
-
values["left"] = bad_child_hash
|
|
134
|
-
elif side == Side.RIGHT:
|
|
135
|
-
values["right"] = bad_child_hash
|
|
136
|
-
else: # pragma: no cover
|
|
137
|
-
assert False
|
|
138
|
-
|
|
139
|
-
async with data_store.db_wrapper.writer() as writer:
|
|
140
|
-
with pytest.raises(sqlite3.IntegrityError, match=r"^FOREIGN KEY constraint failed$"):
|
|
141
|
-
await writer.execute(
|
|
142
|
-
"""
|
|
143
|
-
INSERT INTO node(hash, node_type, left, right, key, value)
|
|
144
|
-
VALUES(:hash, :node_type, :left, :right, :key, :value)
|
|
145
|
-
""",
|
|
146
|
-
values,
|
|
147
|
-
)
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
@pytest.mark.parametrize(argnames="key_or_value", argvalues=["key", "value"])
|
|
151
|
-
@pytest.mark.anyio
|
|
152
|
-
async def test_node_terminal_key_value_not_null(data_store: DataStore, store_id: bytes32, key_or_value: str) -> None:
|
|
153
|
-
await add_01234567_example(data_store=data_store, store_id=store_id)
|
|
154
|
-
|
|
155
|
-
values = create_valid_node_values(node_type=NodeType.TERMINAL)
|
|
156
|
-
values[key_or_value] = None
|
|
157
|
-
|
|
158
|
-
async with data_store.db_wrapper.writer() as writer:
|
|
159
|
-
with pytest.raises(sqlite3.IntegrityError, match=r"^CHECK constraint failed:"):
|
|
160
|
-
await writer.execute(
|
|
161
|
-
"""
|
|
162
|
-
INSERT INTO node(hash, node_type, left, right, key, value)
|
|
163
|
-
VALUES(:hash, :node_type, :left, :right, :key, :value)
|
|
164
|
-
""",
|
|
165
|
-
values,
|
|
166
|
-
)
|
|
167
|
-
|
|
168
|
-
|
|
169
15
|
@pytest.mark.parametrize(argnames="length", argvalues=sorted(set(range(50)) - {32}))
|
|
170
16
|
@pytest.mark.anyio
|
|
171
17
|
async def test_root_store_id_must_be_32(data_store: DataStore, store_id: bytes32, length: int) -> None:
|
|
@@ -250,21 +96,6 @@ async def test_root_generation_must_not_be_null(data_store: DataStore, store_id:
|
|
|
250
96
|
)
|
|
251
97
|
|
|
252
98
|
|
|
253
|
-
@pytest.mark.anyio
|
|
254
|
-
async def test_root_node_hash_must_reference(data_store: DataStore) -> None:
|
|
255
|
-
values = {"tree_id": bytes32.zeros, "generation": 0, "node_hash": bytes32.zeros, "status": Status.PENDING}
|
|
256
|
-
|
|
257
|
-
async with data_store.db_wrapper.writer() as writer:
|
|
258
|
-
with pytest.raises(sqlite3.IntegrityError, match=r"^FOREIGN KEY constraint failed$"):
|
|
259
|
-
await writer.execute(
|
|
260
|
-
"""
|
|
261
|
-
INSERT INTO root(tree_id, generation, node_hash, status)
|
|
262
|
-
VALUES(:tree_id, :generation, :node_hash, :status)
|
|
263
|
-
""",
|
|
264
|
-
values,
|
|
265
|
-
)
|
|
266
|
-
|
|
267
|
-
|
|
268
99
|
@pytest.mark.parametrize(argnames="bad_status", argvalues=sorted(set(range(-20, 20)) - {*Status}))
|
|
269
100
|
@pytest.mark.anyio
|
|
270
101
|
async def test_root_status_must_be_valid(data_store: DataStore, store_id: bytes32, bad_status: int) -> None:
|
|
@@ -319,44 +150,6 @@ async def test_root_store_id_generation_must_be_unique(data_store: DataStore, st
|
|
|
319
150
|
)
|
|
320
151
|
|
|
321
152
|
|
|
322
|
-
@pytest.mark.parametrize(argnames="length", argvalues=sorted(set(range(50)) - {32}))
|
|
323
|
-
@pytest.mark.anyio
|
|
324
|
-
async def test_ancestors_ancestor_must_be_32(
|
|
325
|
-
data_store: DataStore,
|
|
326
|
-
store_id: bytes32,
|
|
327
|
-
length: int,
|
|
328
|
-
) -> None:
|
|
329
|
-
async with data_store.db_wrapper.writer() as writer:
|
|
330
|
-
node_hash = await data_store._insert_terminal_node(key=b"\x00", value=b"\x01")
|
|
331
|
-
with pytest.raises(sqlite3.IntegrityError, match=r"^CHECK constraint failed:"):
|
|
332
|
-
await writer.execute(
|
|
333
|
-
"""
|
|
334
|
-
INSERT INTO ancestors(hash, ancestor, tree_id, generation)
|
|
335
|
-
VALUES(:hash, :ancestor, :tree_id, :generation)
|
|
336
|
-
""",
|
|
337
|
-
{"hash": node_hash, "ancestor": bytes([0] * length), "tree_id": bytes32.zeros, "generation": 0},
|
|
338
|
-
)
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
@pytest.mark.parametrize(argnames="length", argvalues=sorted(set(range(50)) - {32}))
|
|
342
|
-
@pytest.mark.anyio
|
|
343
|
-
async def test_ancestors_store_id_must_be_32(
|
|
344
|
-
data_store: DataStore,
|
|
345
|
-
store_id: bytes32,
|
|
346
|
-
length: int,
|
|
347
|
-
) -> None:
|
|
348
|
-
async with data_store.db_wrapper.writer() as writer:
|
|
349
|
-
node_hash = await data_store._insert_terminal_node(key=b"\x00", value=b"\x01")
|
|
350
|
-
with pytest.raises(sqlite3.IntegrityError, match=r"^CHECK constraint failed:"):
|
|
351
|
-
await writer.execute(
|
|
352
|
-
"""
|
|
353
|
-
INSERT INTO ancestors(hash, ancestor, tree_id, generation)
|
|
354
|
-
VALUES(:hash, :ancestor, :tree_id, :generation)
|
|
355
|
-
""",
|
|
356
|
-
{"hash": node_hash, "ancestor": bytes32.zeros, "tree_id": bytes([0] * length), "generation": 0},
|
|
357
|
-
)
|
|
358
|
-
|
|
359
|
-
|
|
360
153
|
@pytest.mark.parametrize(argnames="length", argvalues=sorted(set(range(50)) - {32}))
|
|
361
154
|
@pytest.mark.anyio
|
|
362
155
|
async def test_subscriptions_store_id_must_be_32(
|
|
@@ -7,8 +7,8 @@ from pathlib import Path
|
|
|
7
7
|
|
|
8
8
|
from chia_rs import ConsensusConstants
|
|
9
9
|
|
|
10
|
+
from chia.consensus.block_height_map import BlockHeightMap
|
|
10
11
|
from chia.consensus.blockchain import Blockchain
|
|
11
|
-
from chia.full_node.block_height_map import BlockHeightMap
|
|
12
12
|
from chia.full_node.block_store import BlockStore
|
|
13
13
|
from chia.full_node.coin_store import CoinStore
|
|
14
14
|
from chia.util.db_wrapper import DBWrapper2
|
|
@@ -18,10 +18,10 @@ from chia_rs.sized_ints import uint8, uint32, uint64
|
|
|
18
18
|
from chia._tests.blockchain.blockchain_test_utils import _validate_and_add_block
|
|
19
19
|
from chia._tests.util.db_connection import DBConnection, PathDBConnection
|
|
20
20
|
from chia.consensus.block_body_validation import ForkInfo
|
|
21
|
+
from chia.consensus.block_height_map import BlockHeightMap
|
|
21
22
|
from chia.consensus.blockchain import AddBlockResult, Blockchain
|
|
22
23
|
from chia.consensus.default_constants import DEFAULT_CONSTANTS
|
|
23
24
|
from chia.consensus.full_block_to_block_record import header_block_to_sub_block_record
|
|
24
|
-
from chia.full_node.block_height_map import BlockHeightMap
|
|
25
25
|
from chia.full_node.block_store import BlockStore
|
|
26
26
|
from chia.full_node.coin_store import CoinStore
|
|
27
27
|
from chia.full_node.full_block_utils import GeneratorBlockInfo
|
|
@@ -369,16 +369,10 @@ async def test_count_uncompactified_blocks(bt: BlockTools, tmp_dir: Path, db_ver
|
|
|
369
369
|
async def test_replace_proof(bt: BlockTools, tmp_dir: Path, db_version: int, use_cache: bool) -> None:
|
|
370
370
|
blocks = bt.get_consecutive_blocks(10)
|
|
371
371
|
|
|
372
|
-
def rand_bytes(num: int) -> bytes:
|
|
373
|
-
ret = bytearray(num)
|
|
374
|
-
for i in range(num):
|
|
375
|
-
ret[i] = random.getrandbits(8)
|
|
376
|
-
return bytes(ret)
|
|
377
|
-
|
|
378
372
|
def rand_vdf_proof() -> VDFProof:
|
|
379
373
|
return VDFProof(
|
|
380
374
|
uint8(1), # witness_type
|
|
381
|
-
|
|
375
|
+
random.randbytes(32), # witness
|
|
382
376
|
bool(random.randint(0, 1)), # normalized_to_identity
|
|
383
377
|
)
|
|
384
378
|
|
|
@@ -424,8 +418,8 @@ async def test_get_generator(bt: BlockTools, db_version: int, use_cache: bool) -
|
|
|
424
418
|
store = await BlockStore.create(db_wrapper, use_cache=use_cache)
|
|
425
419
|
|
|
426
420
|
new_blocks = []
|
|
427
|
-
for i,
|
|
428
|
-
block =
|
|
421
|
+
for i, original_block in enumerate(blocks):
|
|
422
|
+
block = original_block.replace(transactions_generator=generator(i))
|
|
429
423
|
block_record = header_block_to_sub_block_record(
|
|
430
424
|
DEFAULT_CONSTANTS, uint64(0), block, uint64(0), False, uint8(0), uint32(max(0, block.height - 1)), None
|
|
431
425
|
)
|
|
@@ -16,10 +16,10 @@ from chia._tests.util.coin_store import add_coin_records_to_db
|
|
|
16
16
|
from chia._tests.util.db_connection import DBConnection
|
|
17
17
|
from chia._tests.util.misc import Marks, datacases
|
|
18
18
|
from chia.consensus.block_body_validation import ForkInfo
|
|
19
|
+
from chia.consensus.block_height_map import BlockHeightMap
|
|
19
20
|
from chia.consensus.block_rewards import calculate_base_farmer_reward, calculate_pool_reward
|
|
20
21
|
from chia.consensus.blockchain import AddBlockResult, Blockchain
|
|
21
22
|
from chia.consensus.coinbase import create_farmer_coin, create_pool_coin
|
|
22
|
-
from chia.full_node.block_height_map import BlockHeightMap
|
|
23
23
|
from chia.full_node.block_store import BlockStore
|
|
24
24
|
from chia.full_node.coin_store import CoinStore
|
|
25
25
|
from chia.full_node.hint_store import HintStore
|
|
@@ -560,7 +560,7 @@ class TestPeerManager:
|
|
|
560
560
|
# use tmp_path pytest fixture to create a temporary directory
|
|
561
561
|
async def test_serialization(self, tmp_path: Path):
|
|
562
562
|
addrman = AddressManagerTest()
|
|
563
|
-
now =
|
|
563
|
+
now = math.floor(time.time())
|
|
564
564
|
t_peer1 = TimestampedPeerInfo("250.7.1.1", uint16(8333), uint64(now - 10000))
|
|
565
565
|
t_peer2 = TimestampedPeerInfo("1050:0000:0000:0000:0005:0600:300c:326b", uint16(9999), uint64(now - 20000))
|
|
566
566
|
t_peer3 = TimestampedPeerInfo("250.7.3.3", uint16(9999), uint64(now - 30000))
|
|
@@ -587,7 +587,7 @@ class TestPeerManager:
|
|
|
587
587
|
@pytest.mark.anyio
|
|
588
588
|
async def test_bad_ip_encoding(self, tmp_path: Path):
|
|
589
589
|
addrman = AddressManagerTest()
|
|
590
|
-
now =
|
|
590
|
+
now = math.floor(time.time())
|
|
591
591
|
t_peer1 = TimestampedPeerInfo("250.7.1.1", uint16(8333), uint64(now - 10000))
|
|
592
592
|
t_peer2 = TimestampedPeerInfo("1050:0000:0000:0000:0005:0600:300c:326b", uint16(9999), uint64(now - 20000))
|
|
593
593
|
t_peer3 = TimestampedPeerInfo("250.7.3.3", uint16(9999), uint64(now - 30000))
|
|
@@ -725,7 +725,7 @@ class TestPeerManager:
|
|
|
725
725
|
|
|
726
726
|
# create a file with the old serialization, then migrate to new serialization
|
|
727
727
|
addrman = AddressManagerTest()
|
|
728
|
-
now =
|
|
728
|
+
now = math.floor(time.time())
|
|
729
729
|
t_peer1 = TimestampedPeerInfo("250.7.1.1", uint16(8333), uint64(now - 10000))
|
|
730
730
|
t_peer2 = TimestampedPeerInfo("1050:0000:0000:0000:0005:0600:300c:326b", uint16(9999), uint64(now - 20000))
|
|
731
731
|
t_peer3 = TimestampedPeerInfo("250.7.3.3", uint16(9999), uint64(now - 30000))
|
|
@@ -11,7 +11,7 @@ from chia_rs.sized_bytes import bytes32
|
|
|
11
11
|
from chia_rs.sized_ints import uint8, uint32
|
|
12
12
|
|
|
13
13
|
from chia._tests.util.db_connection import DBConnection
|
|
14
|
-
from chia.
|
|
14
|
+
from chia.consensus.block_height_map import BlockHeightMap, SesCache
|
|
15
15
|
from chia.util.db_wrapper import DBWrapper2
|
|
16
16
|
from chia.util.files import write_file_async
|
|
17
17
|
|
|
@@ -112,11 +112,11 @@ from chia.wallet.wallet_spend_bundle import WalletSpendBundle
|
|
|
112
112
|
|
|
113
113
|
|
|
114
114
|
def test_pre_validation_result() -> None:
|
|
115
|
-
conds = SpendBundleConditions([], 0, 0, 0, None, None, [], 0, 0, 0, True, 0, 0)
|
|
115
|
+
conds = SpendBundleConditions([], 0, 0, 0, None, None, [], 0, 0, 0, True, 0, 0, 0, 0, 0)
|
|
116
116
|
results = PreValidationResult(None, uint64(1), conds, uint32(0))
|
|
117
117
|
assert results.validated_signature is True
|
|
118
118
|
|
|
119
|
-
conds = SpendBundleConditions([], 0, 0, 0, None, None, [], 0, 0, 0, False, 0, 0)
|
|
119
|
+
conds = SpendBundleConditions([], 0, 0, 0, None, None, [], 0, 0, 0, False, 0, 0, 0, 0, 0)
|
|
120
120
|
results = PreValidationResult(None, uint64(1), conds, uint32(0))
|
|
121
121
|
assert results.validated_signature is False
|
|
122
122
|
|
|
@@ -548,7 +548,7 @@ async def test_request_peers(
|
|
|
548
548
|
async def have_msgs(full_node_peers: FullNodePeers) -> bool:
|
|
549
549
|
assert full_node_peers.address_manager is not None
|
|
550
550
|
await full_node_peers.address_manager.add_to_new_table(
|
|
551
|
-
[TimestampedPeerInfo("127.0.0.1", uint16(1000), uint64(
|
|
551
|
+
[TimestampedPeerInfo("127.0.0.1", uint16(1000), uint64(time.time() - 1000))],
|
|
552
552
|
None,
|
|
553
553
|
)
|
|
554
554
|
assert server_2._port is not None
|
|
@@ -919,6 +919,10 @@ async def test_new_peak(
|
|
|
919
919
|
|
|
920
920
|
|
|
921
921
|
@pytest.mark.anyio
|
|
922
|
+
@pytest.mark.limit_consensus_modes(
|
|
923
|
+
allowed=[ConsensusMode.HARD_FORK_2_0, ConsensusMode.HARD_FORK_3_0],
|
|
924
|
+
reason="We can no longer (reliably) farm blocks from before the hard fork",
|
|
925
|
+
)
|
|
922
926
|
async def test_new_transaction_and_mempool(
|
|
923
927
|
wallet_nodes: tuple[
|
|
924
928
|
FullNodeSimulator, FullNodeSimulator, ChiaServer, ChiaServer, WalletTool, WalletTool, BlockTools
|
|
@@ -946,8 +950,10 @@ async def test_new_transaction_and_mempool(
|
|
|
946
950
|
|
|
947
951
|
# Makes a bunch of coins
|
|
948
952
|
conditions_dict: dict[ConditionOpcode, list[ConditionWithArgs]] = {ConditionOpcode.CREATE_COIN: []}
|
|
949
|
-
# This should fit in one transaction
|
|
950
|
-
|
|
953
|
+
# This should fit in one transaction. The test constants have a max block cost of 400,000,000
|
|
954
|
+
# and the default max *transaction* cost is half that, so 200,000,000. CREATE_COIN has a cost of
|
|
955
|
+
# 1,800,000, we create 80 coins
|
|
956
|
+
for _ in range(80):
|
|
951
957
|
receiver_puzzlehash = wallet_receiver.get_new_puzzlehash()
|
|
952
958
|
puzzle_hashes.append(receiver_puzzlehash)
|
|
953
959
|
output = ConditionWithArgs(ConditionOpcode.CREATE_COIN, [receiver_puzzlehash, int_to_bytes(10000000000)])
|
|
@@ -1046,8 +1052,8 @@ async def test_new_transaction_and_mempool(
|
|
|
1046
1052
|
# these numbers reflect the capacity of the mempool. In these
|
|
1047
1053
|
# tests MEMPOOL_BLOCK_BUFFER is 1. The other factors are COST_PER_BYTE
|
|
1048
1054
|
# and MAX_BLOCK_COST_CLVM
|
|
1049
|
-
assert included_tx ==
|
|
1050
|
-
assert not_included_tx ==
|
|
1055
|
+
assert included_tx == 20
|
|
1056
|
+
assert not_included_tx == 7
|
|
1051
1057
|
assert seen_bigger_transaction_has_high_fee
|
|
1052
1058
|
|
|
1053
1059
|
# Mempool is full
|
|
@@ -1882,7 +1888,9 @@ async def test_new_signage_point_caching(
|
|
|
1882
1888
|
) -> None:
|
|
1883
1889
|
full_node_1, _full_node_2, server_1, server_2, _wallet_a, _wallet_receiver, bt = wallet_nodes
|
|
1884
1890
|
blocks = await full_node_1.get_all_full_blocks()
|
|
1885
|
-
|
|
1891
|
+
assert full_node_1.full_node.full_node_store.get_signage_point_by_index_and_cc_output(
|
|
1892
|
+
bytes32.zeros, full_node_1.full_node.constants.GENESIS_CHALLENGE, uint8(0)
|
|
1893
|
+
) == SignagePoint(None, None, None, None)
|
|
1886
1894
|
peer = await connect_and_get_peer(server_1, server_2, self_hostname)
|
|
1887
1895
|
blocks = bt.get_consecutive_blocks(3, block_list_input=blocks, skip_slots=2)
|
|
1888
1896
|
await full_node_1.full_node.add_block(blocks[-3])
|
|
@@ -1951,10 +1959,6 @@ async def test_new_signage_point_caching(
|
|
|
1951
1959
|
is not None
|
|
1952
1960
|
)
|
|
1953
1961
|
|
|
1954
|
-
assert full_node_1.full_node.full_node_store.get_signage_point_by_index_and_cc_output(
|
|
1955
|
-
full_node_1.full_node.constants.GENESIS_CHALLENGE, bytes32.zeros, uint8(0)
|
|
1956
|
-
) == SignagePoint(None, None, None, None)
|
|
1957
|
-
|
|
1958
1962
|
|
|
1959
1963
|
@pytest.mark.anyio
|
|
1960
1964
|
async def test_slot_catch_up_genesis(
|
|
@@ -2678,16 +2682,15 @@ async def test_long_reorg_nodes(
|
|
|
2678
2682
|
blocks = default_10000_blocks[: 1600 - chain_length]
|
|
2679
2683
|
reorg_blocks = test_long_reorg_blocks_light[: 1600 - chain_length]
|
|
2680
2684
|
reorg_height = 2000
|
|
2681
|
-
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
reorg_height = 1600
|
|
2685
|
+
elif fork_point == 1500:
|
|
2686
|
+
blocks = default_10000_blocks[: 1900 - chain_length]
|
|
2687
|
+
reorg_blocks = test_long_reorg_1500_blocks[: 1900 - chain_length]
|
|
2688
|
+
reorg_height = 2300
|
|
2689
|
+
else: # pragma: no cover
|
|
2690
|
+
pytest.skip("We rely on the light-blocks test for a 0 forkpoint")
|
|
2691
|
+
blocks = default_10000_blocks[: 1100 - chain_length]
|
|
2692
|
+
# reorg_blocks = test_long_reorg_blocks[: 1100 - chain_length]
|
|
2693
|
+
reorg_height = 1600
|
|
2691
2694
|
|
|
2692
2695
|
# this is a pre-requisite for a reorg to happen
|
|
2693
2696
|
assert default_10000_blocks[reorg_height].weight > reorg_blocks[-1].weight
|
|
@@ -3163,15 +3166,14 @@ async def declare_pos_unfinished_block(
|
|
|
3163
3166
|
challenge_chain_sp = block.reward_chain_block.challenge_chain_sp_vdf.output.get_hash()
|
|
3164
3167
|
if block.reward_chain_block.reward_chain_sp_vdf is not None:
|
|
3165
3168
|
reward_chain_sp = block.reward_chain_block.reward_chain_sp_vdf.output.get_hash()
|
|
3169
|
+
elif len(block.finished_sub_slots) > 0:
|
|
3170
|
+
reward_chain_sp = block.finished_sub_slots[-1].reward_chain.get_hash()
|
|
3166
3171
|
else:
|
|
3167
|
-
|
|
3168
|
-
|
|
3169
|
-
|
|
3170
|
-
|
|
3171
|
-
|
|
3172
|
-
curr = blockchain.block_record(curr.prev_hash)
|
|
3173
|
-
assert curr.finished_reward_slot_hashes is not None
|
|
3174
|
-
reward_chain_sp = curr.finished_reward_slot_hashes[-1]
|
|
3172
|
+
curr = blockchain.block_record(block.prev_header_hash)
|
|
3173
|
+
while not curr.first_in_sub_slot:
|
|
3174
|
+
curr = blockchain.block_record(curr.prev_hash)
|
|
3175
|
+
assert curr.finished_reward_slot_hashes is not None
|
|
3176
|
+
reward_chain_sp = curr.finished_reward_slot_hashes[-1]
|
|
3175
3177
|
farmer_reward_address = block.foliage.foliage_block_data.farmer_reward_puzzle_hash
|
|
3176
3178
|
pool_target = block.foliage.foliage_block_data.pool_target
|
|
3177
3179
|
pool_target_signature = block.foliage.foliage_block_data.pool_signature
|
|
@@ -3296,3 +3298,62 @@ def compare_unfinished_blocks(block1: UnfinishedBlock, block2: UnfinishedBlock)
|
|
|
3296
3298
|
# Final assertion to check the entire block
|
|
3297
3299
|
assert block1 == block2, "The entire block objects are not identical"
|
|
3298
3300
|
return True
|
|
3301
|
+
|
|
3302
|
+
|
|
3303
|
+
@pytest.mark.anyio
|
|
3304
|
+
@pytest.mark.parametrize(
|
|
3305
|
+
"condition, error",
|
|
3306
|
+
[
|
|
3307
|
+
(ConditionOpcode.ASSERT_HEIGHT_RELATIVE, "ASSERT_HEIGHT_RELATIVE_FAILED"),
|
|
3308
|
+
(ConditionOpcode.ASSERT_HEIGHT_ABSOLUTE, "ASSERT_HEIGHT_ABSOLUTE_FAILED"),
|
|
3309
|
+
],
|
|
3310
|
+
)
|
|
3311
|
+
async def test_pending_tx_cache_retry_on_new_peak(
|
|
3312
|
+
condition: ConditionOpcode, error: str, blockchain_constants: ConsensusConstants, caplog: pytest.LogCaptureFixture
|
|
3313
|
+
) -> None:
|
|
3314
|
+
"""
|
|
3315
|
+
Covers PendingTXCache items that are placed there due to unmet relative or
|
|
3316
|
+
absolute height conditions, to make sure those items get retried at peak
|
|
3317
|
+
post processing when those conditions are met.
|
|
3318
|
+
"""
|
|
3319
|
+
async with setup_simulators_and_wallets(1, 0, blockchain_constants) as new:
|
|
3320
|
+
full_node_api = new.simulators[0].peer_api
|
|
3321
|
+
bt = new.bt
|
|
3322
|
+
wallet = WalletTool(test_constants)
|
|
3323
|
+
ph = wallet.get_new_puzzlehash()
|
|
3324
|
+
blocks = bt.get_consecutive_blocks(
|
|
3325
|
+
3, guarantee_transaction_block=True, farmer_reward_puzzle_hash=ph, pool_reward_puzzle_hash=ph
|
|
3326
|
+
)
|
|
3327
|
+
for block in blocks:
|
|
3328
|
+
await full_node_api.full_node.add_block(block)
|
|
3329
|
+
peak = full_node_api.full_node.blockchain.get_peak()
|
|
3330
|
+
assert peak is not None
|
|
3331
|
+
current_height = peak.height
|
|
3332
|
+
# Create a transaction with a height condition that makes it pending
|
|
3333
|
+
coin = blocks[-1].get_included_reward_coins()[0]
|
|
3334
|
+
if condition == ConditionOpcode.ASSERT_HEIGHT_RELATIVE:
|
|
3335
|
+
condition_height = 1
|
|
3336
|
+
else:
|
|
3337
|
+
condition_height = current_height + 1
|
|
3338
|
+
condition_dic = {condition: [ConditionWithArgs(condition, [int_to_bytes(condition_height)])]}
|
|
3339
|
+
sb = wallet.generate_signed_transaction(uint64(42), ph, coin, condition_dic)
|
|
3340
|
+
sb_name = sb.name()
|
|
3341
|
+
# Send the transaction
|
|
3342
|
+
res = await full_node_api.send_transaction(SendTransaction(sb))
|
|
3343
|
+
assert res is not None
|
|
3344
|
+
assert ProtocolMessageTypes(res.type) == ProtocolMessageTypes.transaction_ack
|
|
3345
|
+
transaction_ack = TransactionAck.from_bytes(res.data)
|
|
3346
|
+
assert transaction_ack.status == MempoolInclusionStatus.PENDING.value
|
|
3347
|
+
assert transaction_ack.error == error
|
|
3348
|
+
# Make sure it ends up in the pending cache, not the mempool
|
|
3349
|
+
assert full_node_api.full_node.mempool_manager.get_mempool_item(sb_name, include_pending=False) is None
|
|
3350
|
+
assert full_node_api.full_node.mempool_manager.get_mempool_item(sb_name, include_pending=True) is not None
|
|
3351
|
+
# Advance peak to meet the asserted height condition
|
|
3352
|
+
with caplog.at_level(logging.DEBUG):
|
|
3353
|
+
blocks = bt.get_consecutive_blocks(2, block_list_input=blocks, guarantee_transaction_block=True)
|
|
3354
|
+
for block in blocks:
|
|
3355
|
+
await full_node_api.full_node.add_block(block)
|
|
3356
|
+
# This should trigger peak post processing with the added transaction
|
|
3357
|
+
assert f"Added transaction to mempool: {sb_name}\n" in caplog.text
|
|
3358
|
+
# Make sure the transaction was retried and got added to the mempool
|
|
3359
|
+
assert full_node_api.full_node.mempool_manager.get_mempool_item(sb_name, include_pending=False) is not None
|
|
@@ -2,12 +2,15 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import pytest
|
|
4
4
|
from chia_rs import Program as SerializedProgram
|
|
5
|
-
from chia_rs import
|
|
6
|
-
|
|
5
|
+
from chia_rs import (
|
|
6
|
+
SpendBundleConditions,
|
|
7
|
+
SpendConditions,
|
|
8
|
+
get_spends_for_trusted_block,
|
|
9
|
+
get_spends_for_trusted_block_with_conditions,
|
|
10
|
+
)
|
|
7
11
|
from chia_rs.sized_ints import uint32, uint64
|
|
8
12
|
|
|
9
13
|
from chia.consensus.generator_tools import tx_removals_and_additions
|
|
10
|
-
from chia.full_node.mempool_check_conditions import get_spends_for_block, get_spends_for_block_with_conditions
|
|
11
14
|
from chia.simulator.block_tools import test_constants
|
|
12
15
|
from chia.types.blockchain_format.coin import Coin
|
|
13
16
|
from chia.types.generator_types import BlockGenerator
|
|
@@ -43,6 +46,7 @@ spends: list[SpendConditions] = [
|
|
|
43
46
|
0,
|
|
44
47
|
execution_cost=0,
|
|
45
48
|
condition_cost=0,
|
|
49
|
+
fingerprint=b"",
|
|
46
50
|
),
|
|
47
51
|
SpendConditions(
|
|
48
52
|
coin_ids[1],
|
|
@@ -70,19 +74,20 @@ spends: list[SpendConditions] = [
|
|
|
70
74
|
0,
|
|
71
75
|
execution_cost=0,
|
|
72
76
|
condition_cost=0,
|
|
77
|
+
fingerprint=b"",
|
|
73
78
|
),
|
|
74
79
|
]
|
|
75
80
|
|
|
76
81
|
|
|
77
82
|
def test_tx_removals_and_additions() -> None:
|
|
78
83
|
conditions = SpendBundleConditions(
|
|
79
|
-
spends, uint64(0), uint32(0), uint64(0), None, None, [], uint64(0), 0, 0, False, 0, 0
|
|
84
|
+
spends, uint64(0), uint32(0), uint64(0), None, None, [], uint64(0), 0, 0, False, 0, 0, 0, 0, 0
|
|
80
85
|
)
|
|
81
86
|
expected_rems = [coin_ids[0], coin_ids[1]]
|
|
82
87
|
expected_additions = []
|
|
83
88
|
for spend in spends:
|
|
84
89
|
for puzzle_hash, am, _ in spend.create_coin:
|
|
85
|
-
expected_additions.append(Coin(
|
|
90
|
+
expected_additions.append(Coin(spend.coin_id, puzzle_hash, uint64(am)))
|
|
86
91
|
rems, adds = tx_removals_and_additions(conditions)
|
|
87
92
|
assert rems == expected_rems
|
|
88
93
|
assert adds == expected_additions
|
|
@@ -102,12 +107,14 @@ TEST_GENERATOR = BlockGenerator(
|
|
|
102
107
|
|
|
103
108
|
|
|
104
109
|
def test_get_spends_for_block(caplog: pytest.LogCaptureFixture) -> None:
|
|
105
|
-
conditions =
|
|
106
|
-
|
|
107
|
-
|
|
110
|
+
conditions = get_spends_for_trusted_block(
|
|
111
|
+
test_constants, TEST_GENERATOR.program, TEST_GENERATOR.generator_refs, 100
|
|
112
|
+
)
|
|
113
|
+
assert conditions["block_spends"] == []
|
|
108
114
|
|
|
109
115
|
|
|
110
116
|
def test_get_spends_for_block_with_conditions(caplog: pytest.LogCaptureFixture) -> None:
|
|
111
|
-
conditions =
|
|
117
|
+
conditions = get_spends_for_trusted_block_with_conditions(
|
|
118
|
+
test_constants, TEST_GENERATOR.program, TEST_GENERATOR.generator_refs, 100
|
|
119
|
+
)
|
|
112
120
|
assert conditions == []
|
|
113
|
-
assert "get_spends_for_block_with_conditions() encountered a puzzle we couldn't serialize: " in caplog.text
|