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
|
@@ -32,10 +32,8 @@ from chia.consensus.condition_costs import ConditionCost
|
|
|
32
32
|
from chia.consensus.default_constants import DEFAULT_CONSTANTS
|
|
33
33
|
from chia.full_node.eligible_coin_spends import (
|
|
34
34
|
DedupCoinSpend,
|
|
35
|
-
EligibilityAndAdditions,
|
|
36
35
|
IdenticalSpendDedup,
|
|
37
36
|
SkipDedup,
|
|
38
|
-
run_for_cost,
|
|
39
37
|
)
|
|
40
38
|
from chia.full_node.mempool import MAX_SKIPPED_ITEMS, PRIORITY_TX_THRESHOLD
|
|
41
39
|
from chia.full_node.mempool_manager import (
|
|
@@ -361,6 +359,7 @@ def make_test_conds(
|
|
|
361
359
|
flags,
|
|
362
360
|
execution_cost=0,
|
|
363
361
|
condition_cost=0,
|
|
362
|
+
fingerprint=b"",
|
|
364
363
|
)
|
|
365
364
|
for coin_id, parent_id, puzzle_hash, amount, flags, create_coin in spend_info
|
|
366
365
|
],
|
|
@@ -376,6 +375,9 @@ def make_test_conds(
|
|
|
376
375
|
False,
|
|
377
376
|
0,
|
|
378
377
|
0,
|
|
378
|
+
0,
|
|
379
|
+
0,
|
|
380
|
+
0,
|
|
379
381
|
)
|
|
380
382
|
|
|
381
383
|
|
|
@@ -559,44 +561,43 @@ def make_bundle_spends_map_and_fee(
|
|
|
559
561
|
spend_bundle: SpendBundle, conds: SpendBundleConditions
|
|
560
562
|
) -> tuple[dict[bytes32, BundleCoinSpend], uint64]:
|
|
561
563
|
bundle_coin_spends: dict[bytes32, BundleCoinSpend] = {}
|
|
562
|
-
|
|
564
|
+
|
|
565
|
+
spend_conditions = {bytes32(spend.coin_id): spend for spend in conds.spends}
|
|
566
|
+
|
|
563
567
|
removals_amount = 0
|
|
564
568
|
additions_amount = 0
|
|
565
|
-
for spend in conds.spends:
|
|
566
|
-
coin_id = bytes32(spend.coin_id)
|
|
567
|
-
spend_additions = []
|
|
568
|
-
for puzzle_hash, amount, _ in spend.create_coin:
|
|
569
|
-
spend_additions.append(Coin(coin_id, puzzle_hash, uint64(amount)))
|
|
570
|
-
additions_amount += amount
|
|
571
|
-
eligibility_and_additions[coin_id] = EligibilityAndAdditions(
|
|
572
|
-
is_eligible_for_dedup=bool(spend.flags & ELIGIBLE_FOR_DEDUP),
|
|
573
|
-
spend_additions=spend_additions,
|
|
574
|
-
ff_puzzle_hash=bytes32(spend.puzzle_hash) if bool(spend.flags & ELIGIBLE_FOR_FF) else None,
|
|
575
|
-
)
|
|
576
569
|
for coin_spend in spend_bundle.coin_spends:
|
|
577
570
|
coin_id = coin_spend.coin.name()
|
|
578
571
|
removals_amount += coin_spend.coin.amount
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
572
|
+
spend_conds = spend_conditions.pop(coin_id)
|
|
573
|
+
|
|
574
|
+
additions = []
|
|
575
|
+
for puzzle_hash, amount, _ in spend_conds.create_coin:
|
|
576
|
+
additions.append(Coin(coin_id, puzzle_hash, uint64(amount)))
|
|
577
|
+
additions_amount += amount
|
|
578
|
+
|
|
582
579
|
bundle_coin_spends[coin_id] = BundleCoinSpend(
|
|
583
580
|
coin_spend=coin_spend,
|
|
584
|
-
eligible_for_dedup=
|
|
585
|
-
|
|
586
|
-
|
|
581
|
+
eligible_for_dedup=bool(spend_conds.flags & ELIGIBLE_FOR_DEDUP),
|
|
582
|
+
additions=additions,
|
|
583
|
+
cost=uint64(spend_conds.condition_cost + spend_conds.execution_cost),
|
|
587
584
|
latest_singleton_lineage=UnspentLineageInfo(coin_id, coin_spend.coin.parent_coin_info, bytes32([0] * 32))
|
|
588
|
-
if
|
|
585
|
+
if bool(spend_conds.flags & ELIGIBLE_FOR_FF)
|
|
589
586
|
else None,
|
|
590
587
|
)
|
|
588
|
+
assert additions_amount == conds.addition_amount
|
|
589
|
+
assert removals_amount == conds.removal_amount
|
|
591
590
|
fee = uint64(removals_amount - additions_amount)
|
|
592
591
|
return bundle_coin_spends, fee
|
|
593
592
|
|
|
594
593
|
|
|
595
594
|
def mempool_item_from_spendbundle(spend_bundle: SpendBundle) -> MempoolItem:
|
|
596
|
-
conds = get_conditions_from_spendbundle(
|
|
595
|
+
conds = get_conditions_from_spendbundle(
|
|
596
|
+
spend_bundle, INFINITE_COST, DEFAULT_CONSTANTS, DEFAULT_CONSTANTS.HARD_FORK2_HEIGHT
|
|
597
|
+
)
|
|
597
598
|
bundle_coin_spends, fee = make_bundle_spends_map_and_fee(spend_bundle, conds)
|
|
598
599
|
return MempoolItem(
|
|
599
|
-
|
|
600
|
+
aggregated_signature=spend_bundle.aggregated_signature,
|
|
600
601
|
fee=fee,
|
|
601
602
|
conds=conds,
|
|
602
603
|
spend_bundle_name=spend_bundle.name(),
|
|
@@ -888,8 +889,13 @@ def mk_bcs(coin_spend: CoinSpend, flags: int = 0) -> BundleCoinSpend:
|
|
|
888
889
|
return BundleCoinSpend(
|
|
889
890
|
coin_spend=coin_spend,
|
|
890
891
|
eligible_for_dedup=bool(flags & ELIGIBLE_FOR_DEDUP),
|
|
891
|
-
eligible_for_fast_forward=bool(flags & ELIGIBLE_FOR_FF),
|
|
892
892
|
additions=[],
|
|
893
|
+
cost=uint64(0),
|
|
894
|
+
latest_singleton_lineage=UnspentLineageInfo(
|
|
895
|
+
coin_spend.coin.name(), coin_spend.coin.parent_coin_info, bytes32([0] * 32)
|
|
896
|
+
)
|
|
897
|
+
if flags & ELIGIBLE_FOR_FF
|
|
898
|
+
else None,
|
|
893
899
|
)
|
|
894
900
|
|
|
895
901
|
|
|
@@ -921,7 +927,7 @@ def mk_item(
|
|
|
921
927
|
spend_bundle = SpendBundle(coin_spends, G2Element())
|
|
922
928
|
conds = make_test_conds(cost=cost, spend_ids=spend_ids)
|
|
923
929
|
return MempoolItem(
|
|
924
|
-
|
|
930
|
+
aggregated_signature=spend_bundle.aggregated_signature,
|
|
925
931
|
fee=uint64(fee),
|
|
926
932
|
conds=conds,
|
|
927
933
|
spend_bundle_name=spend_bundle.name(),
|
|
@@ -1116,8 +1122,7 @@ coins = make_test_coins()
|
|
|
1116
1122
|
],
|
|
1117
1123
|
)
|
|
1118
1124
|
def test_can_replace(existing_items: list[MempoolItem], new_item: MempoolItem, expected: bool) -> None:
|
|
1119
|
-
|
|
1120
|
-
assert can_replace(existing_items, removals, new_item) == expected
|
|
1125
|
+
assert can_replace(existing_items, new_item) == expected
|
|
1121
1126
|
|
|
1122
1127
|
|
|
1123
1128
|
@pytest.mark.anyio
|
|
@@ -1583,21 +1588,6 @@ async def test_replacing_one_with_an_eligible_coin() -> None:
|
|
|
1583
1588
|
assert_sb_in_pool(mempool_manager, sb123e4)
|
|
1584
1589
|
|
|
1585
1590
|
|
|
1586
|
-
@pytest.mark.parametrize("amount", [0, 1])
|
|
1587
|
-
def test_run_for_cost(amount: int) -> None:
|
|
1588
|
-
conditions = [[ConditionOpcode.CREATE_COIN, IDENTITY_PUZZLE_HASH, amount]]
|
|
1589
|
-
solution = SerializedProgram.to(conditions)
|
|
1590
|
-
cost = run_for_cost(IDENTITY_PUZZLE, solution, additions_count=1, max_cost=uint64(10000000))
|
|
1591
|
-
assert cost == uint64(1800044)
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
def test_run_for_cost_max_cost() -> None:
|
|
1595
|
-
conditions = [[ConditionOpcode.CREATE_COIN, IDENTITY_PUZZLE_HASH, 1]]
|
|
1596
|
-
solution = SerializedProgram.to(conditions)
|
|
1597
|
-
with pytest.raises(ValueError, match="cost exceeded"):
|
|
1598
|
-
run_for_cost(IDENTITY_PUZZLE, solution, additions_count=1, max_cost=uint64(43))
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
1591
|
def test_dedup_info_nothing_to_do() -> None:
|
|
1602
1592
|
# No eligible coins, nothing to deduplicate, item gets considered normally
|
|
1603
1593
|
|
|
@@ -1613,7 +1603,7 @@ def test_dedup_info_nothing_to_do() -> None:
|
|
|
1613
1603
|
mempool_item = mempool_item_from_spendbundle(sb)
|
|
1614
1604
|
dedup_coin_spends = IdenticalSpendDedup()
|
|
1615
1605
|
unique_coin_spends, cost_saving, unique_additions = dedup_coin_spends.get_deduplication_info(
|
|
1616
|
-
bundle_coin_spends=mempool_item.bundle_coin_spends
|
|
1606
|
+
bundle_coin_spends=mempool_item.bundle_coin_spends
|
|
1617
1607
|
)
|
|
1618
1608
|
assert unique_coin_spends == sb.coin_spends
|
|
1619
1609
|
assert cost_saving == 0
|
|
@@ -1633,7 +1623,7 @@ def test_dedup_info_eligible_1st_time() -> None:
|
|
|
1633
1623
|
dedup_coin_spends = IdenticalSpendDedup()
|
|
1634
1624
|
solution = SerializedProgram.to(conditions)
|
|
1635
1625
|
unique_coin_spends, cost_saving, unique_additions = dedup_coin_spends.get_deduplication_info(
|
|
1636
|
-
bundle_coin_spends=mempool_item.bundle_coin_spends
|
|
1626
|
+
bundle_coin_spends=mempool_item.bundle_coin_spends
|
|
1637
1627
|
)
|
|
1638
1628
|
assert unique_coin_spends == sb.coin_spends
|
|
1639
1629
|
assert cost_saving == 0
|
|
@@ -1641,7 +1631,10 @@ def test_dedup_info_eligible_1st_time() -> None:
|
|
|
1641
1631
|
Coin(TEST_COIN_ID, IDENTITY_PUZZLE_HASH, uint64(1)),
|
|
1642
1632
|
Coin(TEST_COIN_ID, IDENTITY_PUZZLE_HASH, uint64(TEST_COIN_AMOUNT - 1)),
|
|
1643
1633
|
}
|
|
1644
|
-
|
|
1634
|
+
expected_cost = mempool_item.bundle_coin_spends[TEST_COIN_ID].cost
|
|
1635
|
+
assert dedup_coin_spends == IdenticalSpendDedup(
|
|
1636
|
+
{TEST_COIN_ID: DedupCoinSpend(solution=solution, cost=expected_cost)}
|
|
1637
|
+
)
|
|
1645
1638
|
|
|
1646
1639
|
|
|
1647
1640
|
def test_dedup_info_eligible_but_different_solution() -> None:
|
|
@@ -1651,14 +1644,12 @@ def test_dedup_info_eligible_but_different_solution() -> None:
|
|
|
1651
1644
|
[ConditionOpcode.CREATE_COIN, IDENTITY_PUZZLE_HASH, TEST_COIN_AMOUNT],
|
|
1652
1645
|
]
|
|
1653
1646
|
initial_solution = SerializedProgram.to(initial_conditions)
|
|
1654
|
-
dedup_coin_spends = IdenticalSpendDedup({TEST_COIN_ID: DedupCoinSpend(solution=initial_solution, cost=
|
|
1647
|
+
dedup_coin_spends = IdenticalSpendDedup({TEST_COIN_ID: DedupCoinSpend(solution=initial_solution, cost=uint64(10))})
|
|
1655
1648
|
conditions = [[ConditionOpcode.CREATE_COIN, IDENTITY_PUZZLE_HASH, TEST_COIN_AMOUNT]]
|
|
1656
1649
|
sb = spend_bundle_from_conditions(conditions, TEST_COIN)
|
|
1657
1650
|
mempool_item = mempool_item_from_spendbundle(sb)
|
|
1658
1651
|
with pytest.raises(SkipDedup, match="Solution is different from what we're deduplicating on"):
|
|
1659
|
-
dedup_coin_spends.get_deduplication_info(
|
|
1660
|
-
bundle_coin_spends=mempool_item.bundle_coin_spends, max_cost=mempool_item.conds.cost
|
|
1661
|
-
)
|
|
1652
|
+
dedup_coin_spends.get_deduplication_info(bundle_coin_spends=mempool_item.bundle_coin_spends)
|
|
1662
1653
|
|
|
1663
1654
|
|
|
1664
1655
|
def test_dedup_info_eligible_2nd_time_and_another_1st_time() -> None:
|
|
@@ -1668,7 +1659,10 @@ def test_dedup_info_eligible_2nd_time_and_another_1st_time() -> None:
|
|
|
1668
1659
|
[ConditionOpcode.CREATE_COIN, IDENTITY_PUZZLE_HASH, TEST_COIN_AMOUNT - 1],
|
|
1669
1660
|
]
|
|
1670
1661
|
initial_solution = SerializedProgram.to(initial_conditions)
|
|
1671
|
-
|
|
1662
|
+
test_coin_cost = uint64(1337)
|
|
1663
|
+
dedup_coin_spends = IdenticalSpendDedup(
|
|
1664
|
+
{TEST_COIN_ID: DedupCoinSpend(solution=initial_solution, cost=test_coin_cost)}
|
|
1665
|
+
)
|
|
1672
1666
|
sb1 = spend_bundle_from_conditions(initial_conditions, TEST_COIN)
|
|
1673
1667
|
second_conditions = [[ConditionOpcode.CREATE_COIN, IDENTITY_PUZZLE_HASH, TEST_COIN_AMOUNT2]]
|
|
1674
1668
|
second_solution = SerializedProgram.to(second_conditions)
|
|
@@ -1677,19 +1671,19 @@ def test_dedup_info_eligible_2nd_time_and_another_1st_time() -> None:
|
|
|
1677
1671
|
mempool_item = mempool_item_from_spendbundle(sb)
|
|
1678
1672
|
assert mempool_item.conds is not None
|
|
1679
1673
|
unique_coin_spends, cost_saving, unique_additions = dedup_coin_spends.get_deduplication_info(
|
|
1680
|
-
bundle_coin_spends=mempool_item.bundle_coin_spends
|
|
1674
|
+
bundle_coin_spends=mempool_item.bundle_coin_spends
|
|
1681
1675
|
)
|
|
1682
1676
|
# Only the eligible one that we encountered more than once gets deduplicated
|
|
1683
1677
|
assert unique_coin_spends == sb2.coin_spends
|
|
1684
|
-
|
|
1685
|
-
assert cost_saving == saved_cost
|
|
1678
|
+
assert cost_saving == test_coin_cost
|
|
1686
1679
|
assert unique_additions == [Coin(TEST_COIN_ID2, IDENTITY_PUZZLE_HASH, TEST_COIN_AMOUNT2)]
|
|
1687
|
-
# The coin we encountered a second time
|
|
1688
|
-
# The coin we encountered for the first time gets
|
|
1680
|
+
# The coin we encountered a second time is already in the map
|
|
1681
|
+
# The coin we encountered for the first time gets added with its solution and cost
|
|
1682
|
+
test_coin2_cost = mempool_item.bundle_coin_spends[TEST_COIN_ID2].cost
|
|
1689
1683
|
expected_dedup_coin_spends = IdenticalSpendDedup(
|
|
1690
1684
|
{
|
|
1691
|
-
TEST_COIN_ID: DedupCoinSpend(solution=initial_solution, cost=
|
|
1692
|
-
TEST_COIN_ID2: DedupCoinSpend(solution=second_solution, cost=
|
|
1685
|
+
TEST_COIN_ID: DedupCoinSpend(solution=initial_solution, cost=test_coin_cost),
|
|
1686
|
+
TEST_COIN_ID2: DedupCoinSpend(solution=second_solution, cost=test_coin2_cost),
|
|
1693
1687
|
}
|
|
1694
1688
|
)
|
|
1695
1689
|
assert dedup_coin_spends == expected_dedup_coin_spends
|
|
@@ -1704,11 +1698,12 @@ def test_dedup_info_eligible_3rd_time_another_2nd_time_and_one_non_eligible() ->
|
|
|
1704
1698
|
initial_solution = SerializedProgram.to(initial_conditions)
|
|
1705
1699
|
second_conditions = [[ConditionOpcode.CREATE_COIN, IDENTITY_PUZZLE_HASH, TEST_COIN_AMOUNT2]]
|
|
1706
1700
|
second_solution = SerializedProgram.to(second_conditions)
|
|
1707
|
-
|
|
1701
|
+
test_coin_cost = uint64(42)
|
|
1702
|
+
test_coin2_cost = uint64(1337)
|
|
1708
1703
|
dedup_coin_spends = IdenticalSpendDedup(
|
|
1709
1704
|
{
|
|
1710
|
-
TEST_COIN_ID: DedupCoinSpend(solution=initial_solution, cost=
|
|
1711
|
-
TEST_COIN_ID2: DedupCoinSpend(solution=second_solution, cost=
|
|
1705
|
+
TEST_COIN_ID: DedupCoinSpend(solution=initial_solution, cost=test_coin_cost),
|
|
1706
|
+
TEST_COIN_ID2: DedupCoinSpend(solution=second_solution, cost=test_coin2_cost),
|
|
1712
1707
|
}
|
|
1713
1708
|
)
|
|
1714
1709
|
sb1 = spend_bundle_from_conditions(initial_conditions, TEST_COIN)
|
|
@@ -1725,16 +1720,16 @@ def test_dedup_info_eligible_3rd_time_another_2nd_time_and_one_non_eligible() ->
|
|
|
1725
1720
|
mempool_item = mempool_item_from_spendbundle(sb)
|
|
1726
1721
|
assert mempool_item.conds is not None
|
|
1727
1722
|
unique_coin_spends, cost_saving, unique_additions = dedup_coin_spends.get_deduplication_info(
|
|
1728
|
-
bundle_coin_spends=mempool_item.bundle_coin_spends
|
|
1723
|
+
bundle_coin_spends=mempool_item.bundle_coin_spends
|
|
1729
1724
|
)
|
|
1730
1725
|
assert unique_coin_spends == sb3.coin_spends
|
|
1731
|
-
|
|
1732
|
-
assert cost_saving == saved_cost + saved_cost2
|
|
1726
|
+
assert cost_saving == test_coin_cost + test_coin2_cost
|
|
1733
1727
|
assert unique_additions == [Coin(TEST_COIN_ID3, IDENTITY_PUZZLE_HASH, TEST_COIN_AMOUNT3)]
|
|
1728
|
+
# TEST_COIN_ID3 is non-eligible, so it doesn't end up in this map
|
|
1734
1729
|
expected_dedup_coin_spends = IdenticalSpendDedup(
|
|
1735
1730
|
{
|
|
1736
|
-
TEST_COIN_ID: DedupCoinSpend(initial_solution,
|
|
1737
|
-
TEST_COIN_ID2: DedupCoinSpend(second_solution,
|
|
1731
|
+
TEST_COIN_ID: DedupCoinSpend(initial_solution, test_coin_cost),
|
|
1732
|
+
TEST_COIN_ID2: DedupCoinSpend(second_solution, test_coin2_cost),
|
|
1738
1733
|
}
|
|
1739
1734
|
)
|
|
1740
1735
|
assert dedup_coin_spends == expected_dedup_coin_spends
|
|
@@ -1804,18 +1799,21 @@ async def test_bundle_coin_spends() -> None:
|
|
|
1804
1799
|
await send_spendbundle(mempool_manager, sb123e)
|
|
1805
1800
|
mi123e = mempool_manager.get_mempool_item(sb123e.name())
|
|
1806
1801
|
assert mi123e is not None
|
|
1802
|
+
execution_cost = 44
|
|
1807
1803
|
for i in range(3):
|
|
1808
1804
|
assert mi123e.bundle_coin_spends[coins[i].name()] == BundleCoinSpend(
|
|
1809
1805
|
coin_spend=sb123.coin_spends[i],
|
|
1810
1806
|
eligible_for_dedup=False,
|
|
1811
|
-
eligible_for_fast_forward=False,
|
|
1812
1807
|
additions=[Coin(coins[i].name(), IDENTITY_PUZZLE_HASH, coins[i].amount)],
|
|
1808
|
+
cost=uint64(ConditionCost.CREATE_COIN.value + ConditionCost.AGG_SIG.value + execution_cost),
|
|
1809
|
+
latest_singleton_lineage=None,
|
|
1813
1810
|
)
|
|
1814
1811
|
assert mi123e.bundle_coin_spends[coins[3].name()] == BundleCoinSpend(
|
|
1815
1812
|
coin_spend=eligible_sb.coin_spends[0],
|
|
1816
1813
|
eligible_for_dedup=True,
|
|
1817
|
-
eligible_for_fast_forward=False,
|
|
1818
1814
|
additions=[Coin(coins[3].name(), IDENTITY_PUZZLE_HASH, coins[3].amount)],
|
|
1815
|
+
cost=uint64(ConditionCost.CREATE_COIN.value + execution_cost),
|
|
1816
|
+
latest_singleton_lineage=None,
|
|
1819
1817
|
)
|
|
1820
1818
|
|
|
1821
1819
|
|
|
@@ -2467,7 +2465,7 @@ async def test_new_peak_ff_eviction(
|
|
|
2467
2465
|
item = mempool_manager.get_mempool_item(bundle.name())
|
|
2468
2466
|
assert item is not None
|
|
2469
2467
|
singleton_name = singleton_spend.coin.name()
|
|
2470
|
-
assert item.bundle_coin_spends[singleton_name].
|
|
2468
|
+
assert item.bundle_coin_spends[singleton_name].supports_fast_forward
|
|
2471
2469
|
latest_singleton_lineage = item.bundle_coin_spends[singleton_name].latest_singleton_lineage
|
|
2472
2470
|
assert latest_singleton_lineage is not None
|
|
2473
2471
|
assert latest_singleton_lineage.coin_id == singleton_name
|
|
@@ -2499,7 +2497,7 @@ async def test_new_peak_ff_eviction(
|
|
|
2499
2497
|
else:
|
|
2500
2498
|
item = mempool_manager.get_mempool_item(bundle.name())
|
|
2501
2499
|
assert item is not None
|
|
2502
|
-
assert item.bundle_coin_spends[singleton_spend.coin.name()].
|
|
2500
|
+
assert item.bundle_coin_spends[singleton_spend.coin.name()].supports_fast_forward
|
|
2503
2501
|
latest_singleton_lineage = item.bundle_coin_spends[singleton_spend.coin.name()].latest_singleton_lineage
|
|
2504
2502
|
assert latest_singleton_lineage is not None
|
|
2505
2503
|
assert latest_singleton_lineage.coin_id == singleton_spend.coin.name()
|
|
@@ -2556,9 +2554,9 @@ async def test_multiple_ff(use_optimization: bool) -> None:
|
|
|
2556
2554
|
|
|
2557
2555
|
item = mempool_manager.get_mempool_item(bundle.name())
|
|
2558
2556
|
assert item is not None
|
|
2559
|
-
assert item.bundle_coin_spends[singleton_spend1.coin.name()].
|
|
2560
|
-
assert item.bundle_coin_spends[singleton_spend2.coin.name()].
|
|
2561
|
-
assert not item.bundle_coin_spends[coin_spend.coin.name()].
|
|
2557
|
+
assert item.bundle_coin_spends[singleton_spend1.coin.name()].supports_fast_forward
|
|
2558
|
+
assert item.bundle_coin_spends[singleton_spend2.coin.name()].supports_fast_forward
|
|
2559
|
+
assert not item.bundle_coin_spends[coin_spend.coin.name()].supports_fast_forward
|
|
2562
2560
|
|
|
2563
2561
|
# spend the singleton coin2 and make coin3 the latest version
|
|
2564
2562
|
coins.update_lineage(singleton_ph, singleton_spend3.coin)
|
|
@@ -2620,7 +2618,7 @@ async def test_advancing_ff(use_optimization: bool) -> None:
|
|
|
2620
2618
|
item = mempool_manager.get_mempool_item(bundle.name())
|
|
2621
2619
|
assert item is not None
|
|
2622
2620
|
spend = item.bundle_coin_spends[spend_a.coin.name()]
|
|
2623
|
-
assert spend.
|
|
2621
|
+
assert spend.supports_fast_forward
|
|
2624
2622
|
assert spend.latest_singleton_lineage is not None
|
|
2625
2623
|
assert spend.latest_singleton_lineage.coin_id == spend_a.coin.name()
|
|
2626
2624
|
|
|
@@ -2632,7 +2630,7 @@ async def test_advancing_ff(use_optimization: bool) -> None:
|
|
|
2632
2630
|
item = mempool_manager.get_mempool_item(bundle.name())
|
|
2633
2631
|
assert item is not None
|
|
2634
2632
|
spend = item.bundle_coin_spends[spend_a.coin.name()]
|
|
2635
|
-
assert spend.
|
|
2633
|
+
assert spend.supports_fast_forward
|
|
2636
2634
|
assert spend.latest_singleton_lineage is not None
|
|
2637
2635
|
assert spend.latest_singleton_lineage.coin_id == spend_b.coin.name()
|
|
2638
2636
|
|
|
@@ -2644,7 +2642,7 @@ async def test_advancing_ff(use_optimization: bool) -> None:
|
|
|
2644
2642
|
item = mempool_manager.get_mempool_item(bundle.name())
|
|
2645
2643
|
assert item is not None
|
|
2646
2644
|
spend = item.bundle_coin_spends[spend_a.coin.name()]
|
|
2647
|
-
assert spend.
|
|
2645
|
+
assert spend.supports_fast_forward
|
|
2648
2646
|
assert spend.latest_singleton_lineage is not None
|
|
2649
2647
|
assert spend.latest_singleton_lineage.coin_id == spend_c.coin.name()
|
|
2650
2648
|
|
|
@@ -3269,3 +3267,64 @@ async def test_different_ff_versions() -> None:
|
|
|
3269
3267
|
latest_singleton_lineage2 = new_mi2.bundle_coin_spends[version2_id].latest_singleton_lineage
|
|
3270
3268
|
assert latest_singleton_lineage2 is not None
|
|
3271
3269
|
assert latest_singleton_lineage2.coin_id == new_latest_lineage_id
|
|
3270
|
+
|
|
3271
|
+
|
|
3272
|
+
@pytest.mark.anyio
|
|
3273
|
+
@pytest.mark.parametrize(
|
|
3274
|
+
"condition_and_error",
|
|
3275
|
+
[
|
|
3276
|
+
(ConditionOpcode.ASSERT_HEIGHT_RELATIVE, Err.ASSERT_HEIGHT_RELATIVE_FAILED),
|
|
3277
|
+
(ConditionOpcode.ASSERT_HEIGHT_ABSOLUTE, Err.ASSERT_HEIGHT_ABSOLUTE_FAILED),
|
|
3278
|
+
],
|
|
3279
|
+
)
|
|
3280
|
+
@pytest.mark.parametrize("optimized_path", [True, False])
|
|
3281
|
+
async def test_new_peak_txs_added(condition_and_error: tuple[ConditionOpcode, Err], optimized_path: bool) -> None:
|
|
3282
|
+
"""
|
|
3283
|
+
Tests that deferred transactions because of time-lock are retried once the
|
|
3284
|
+
time-lock allows them to be reconsidered.
|
|
3285
|
+
"""
|
|
3286
|
+
coins = TestCoins([TEST_COIN], {})
|
|
3287
|
+
mempool_manager = await setup_mempool(coins)
|
|
3288
|
+
# Add an item that should go to the pending cache
|
|
3289
|
+
assert mempool_manager.peak is not None
|
|
3290
|
+
condition_height = mempool_manager.peak.height + 1
|
|
3291
|
+
condition, expected_error = condition_and_error
|
|
3292
|
+
_, sb_name, result = await generate_and_add_spendbundle(mempool_manager, [[condition, condition_height]])
|
|
3293
|
+
_, status, error = result
|
|
3294
|
+
assert status == MempoolInclusionStatus.PENDING
|
|
3295
|
+
assert error == expected_error
|
|
3296
|
+
# Advance the mempool beyond the asserted height to retry the test item
|
|
3297
|
+
if optimized_path:
|
|
3298
|
+
spent_coins: Optional[list[bytes32]] = []
|
|
3299
|
+
new_peak_info = await mempool_manager.new_peak(
|
|
3300
|
+
create_test_block_record(height=uint32(condition_height)), spent_coins
|
|
3301
|
+
)
|
|
3302
|
+
# We're not there yet (needs to be higher, not equal)
|
|
3303
|
+
assert new_peak_info.spend_bundle_ids == []
|
|
3304
|
+
assert mempool_manager.get_mempool_item(sb_name, include_pending=False) is None
|
|
3305
|
+
else:
|
|
3306
|
+
spent_coins = None
|
|
3307
|
+
new_peak_info = await mempool_manager.new_peak(
|
|
3308
|
+
create_test_block_record(height=uint32(condition_height + 1)), spent_coins
|
|
3309
|
+
)
|
|
3310
|
+
# The item gets retried successfully now
|
|
3311
|
+
assert new_peak_info.spend_bundle_ids == [sb_name]
|
|
3312
|
+
assert mempool_manager.get_mempool_item(sb_name, include_pending=False) is not None
|
|
3313
|
+
|
|
3314
|
+
|
|
3315
|
+
@pytest.mark.anyio
|
|
3316
|
+
async def test_mempool_item_to_spend_bundle() -> None:
|
|
3317
|
+
"""
|
|
3318
|
+
Tests that we can properly go back to a `SpendBundle` from a `MempoolItem`.
|
|
3319
|
+
"""
|
|
3320
|
+
coins = [Coin(bytes32.random(), IDENTITY_PUZZLE_HASH, uint64(i + 1)) for i in range(random.randint(42, 1337))]
|
|
3321
|
+
mempool_manager = await setup_mempool(TestCoins(coins, {}))
|
|
3322
|
+
random_sample = random.sample(coins, 42)
|
|
3323
|
+
sb = SpendBundle([CoinSpend(c, IDENTITY_PUZZLE, SerializedProgram.to(None)) for c in random_sample], G2Element())
|
|
3324
|
+
sb_name = sb.name()
|
|
3325
|
+
await add_spendbundle(mempool_manager, sb, sb_name)
|
|
3326
|
+
mi = mempool_manager.get_mempool_item(sb_name)
|
|
3327
|
+
assert mi is not None
|
|
3328
|
+
result = mi.to_spend_bundle()
|
|
3329
|
+
assert result == sb
|
|
3330
|
+
assert result.name() == sb_name
|
|
@@ -52,8 +52,10 @@ def test_process_fast_forward_spends_nothing_to_do() -> None:
|
|
|
52
52
|
sb = spend_bundle_from_conditions(conditions, TEST_COIN, sig)
|
|
53
53
|
item = mempool_item_from_spendbundle(sb)
|
|
54
54
|
# This coin is not eligible for fast forward
|
|
55
|
-
assert item.bundle_coin_spends[TEST_COIN_ID].
|
|
56
|
-
internal_mempool_item = InternalMempoolItem(
|
|
55
|
+
assert not item.bundle_coin_spends[TEST_COIN_ID].supports_fast_forward
|
|
56
|
+
internal_mempool_item = InternalMempoolItem(
|
|
57
|
+
sb.aggregated_signature, item.conds, item.height_added_to_mempool, item.bundle_coin_spends
|
|
58
|
+
)
|
|
57
59
|
original_version = dataclasses.replace(internal_mempool_item)
|
|
58
60
|
singleton_ff = SingletonFastForward()
|
|
59
61
|
bundle_coin_spends = singleton_ff.process_fast_forward_spends(
|
|
@@ -63,28 +65,6 @@ def test_process_fast_forward_spends_nothing_to_do() -> None:
|
|
|
63
65
|
assert bundle_coin_spends == original_version.bundle_coin_spends
|
|
64
66
|
|
|
65
67
|
|
|
66
|
-
def test_process_fast_forward_spends_unknown_ff() -> None:
|
|
67
|
-
"""
|
|
68
|
-
This tests the case when we process for the first time but we are unable
|
|
69
|
-
to lookup the latest version from the item's latest singleton lineage
|
|
70
|
-
"""
|
|
71
|
-
test_coin = Coin(TEST_COIN_ID, IDENTITY_PUZZLE_HASH, uint64(1))
|
|
72
|
-
conditions = [[ConditionOpcode.CREATE_COIN, IDENTITY_PUZZLE_HASH, 1]]
|
|
73
|
-
sb = spend_bundle_from_conditions(conditions, test_coin)
|
|
74
|
-
item = mempool_item_from_spendbundle(sb)
|
|
75
|
-
# The coin is eligible for fast forward
|
|
76
|
-
assert item.bundle_coin_spends[test_coin.name()].eligible_for_fast_forward is True
|
|
77
|
-
item.bundle_coin_spends[test_coin.name()].latest_singleton_lineage = None
|
|
78
|
-
internal_mempool_item = InternalMempoolItem(sb, item.conds, item.height_added_to_mempool, item.bundle_coin_spends)
|
|
79
|
-
singleton_ff = SingletonFastForward()
|
|
80
|
-
# We have no fast forward records yet, so we'll process this coin for the
|
|
81
|
-
# first time here, but the item's latest singleton lineage returns None
|
|
82
|
-
with pytest.raises(ValueError, match="Cannot proceed with singleton spend fast forward."):
|
|
83
|
-
singleton_ff.process_fast_forward_spends(
|
|
84
|
-
mempool_item=internal_mempool_item, height=TEST_HEIGHT, constants=DEFAULT_CONSTANTS
|
|
85
|
-
)
|
|
86
|
-
|
|
87
|
-
|
|
88
68
|
def test_process_fast_forward_spends_latest_unspent() -> None:
|
|
89
69
|
"""
|
|
90
70
|
This tests the case when we are the latest singleton version already, so
|
|
@@ -103,9 +83,11 @@ def test_process_fast_forward_spends_latest_unspent() -> None:
|
|
|
103
83
|
conditions = [[ConditionOpcode.CREATE_COIN, IDENTITY_PUZZLE_HASH, test_amount]]
|
|
104
84
|
sb = spend_bundle_from_conditions(conditions, test_coin)
|
|
105
85
|
item = mempool_item_from_spendbundle(sb)
|
|
106
|
-
assert item.bundle_coin_spends[test_coin.name()].
|
|
86
|
+
assert item.bundle_coin_spends[test_coin.name()].supports_fast_forward
|
|
107
87
|
item.bundle_coin_spends[test_coin.name()].latest_singleton_lineage = test_unspent_lineage_info
|
|
108
|
-
internal_mempool_item = InternalMempoolItem(
|
|
88
|
+
internal_mempool_item = InternalMempoolItem(
|
|
89
|
+
sb.aggregated_signature, item.conds, item.height_added_to_mempool, item.bundle_coin_spends
|
|
90
|
+
)
|
|
109
91
|
original_version = dataclasses.replace(internal_mempool_item)
|
|
110
92
|
singleton_ff = SingletonFastForward()
|
|
111
93
|
bundle_coin_spends = singleton_ff.process_fast_forward_spends(
|
|
@@ -168,12 +150,12 @@ def test_perform_the_fast_forward() -> None:
|
|
|
168
150
|
"517b0dadb0c310ded24dd86dff8205398080ff808080"
|
|
169
151
|
)
|
|
170
152
|
test_coin_spend = CoinSpend(test_coin, test_puzzle_reveal, test_solution)
|
|
171
|
-
test_spend_data = BundleCoinSpend(test_coin_spend, False, True, [test_child_coin])
|
|
172
153
|
test_unspent_lineage_info = UnspentLineageInfo(
|
|
173
154
|
coin_id=latest_unspent_coin.name(),
|
|
174
155
|
parent_id=latest_unspent_coin.parent_coin_info,
|
|
175
156
|
parent_parent_id=test_child_coin.parent_coin_info,
|
|
176
157
|
)
|
|
158
|
+
test_spend_data = BundleCoinSpend(test_coin_spend, False, [test_child_coin], uint64(0), test_unspent_lineage_info)
|
|
177
159
|
# Start from a fresh state of fast forward spends
|
|
178
160
|
fast_forward_spends: dict[bytes32, UnspentLineageInfo] = {}
|
|
179
161
|
# Perform the fast forward on the test coin (the grandparent)
|