chia-blockchain 2.5.6rc2__py3-none-any.whl → 2.5.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- chia/_tests/blockchain/blockchain_test_utils.py +6 -7
- chia/_tests/blockchain/test_augmented_chain.py +4 -3
- chia/_tests/blockchain/test_blockchain.py +10 -5
- chia/_tests/clvm/coin_store.py +1 -1
- chia/_tests/cmds/cmd_test_utils.py +84 -97
- chia/_tests/cmds/test_dev_gh.py +1 -1
- chia/_tests/cmds/test_farm_cmd.py +56 -2
- chia/_tests/cmds/wallet/test_consts.py +3 -1
- chia/_tests/cmds/wallet/test_did.py +3 -8
- chia/_tests/cmds/wallet/test_nft.py +6 -6
- chia/_tests/cmds/wallet/test_notifications.py +39 -21
- chia/_tests/cmds/wallet/test_vcs.py +2 -1
- chia/_tests/cmds/wallet/test_wallet.py +160 -136
- chia/_tests/conftest.py +51 -26
- chia/_tests/core/cmds/test_wallet.py +4 -3
- chia/_tests/core/consensus/test_pot_iterations.py +71 -24
- chia/_tests/core/custom_types/test_proof_of_space.py +60 -30
- chia/_tests/core/custom_types/test_spend_bundle.py +1 -4
- chia/_tests/core/data_layer/conftest.py +7 -2
- chia/_tests/core/data_layer/old_format/__init__.py +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-005876c1cdc4d5f1726551b207b9f63efc9cd2f72df80a3a26a1ba73d40d6745-delta-23-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-005876c1cdc4d5f1726551b207b9f63efc9cd2f72df80a3a26a1ba73d40d6745-full-23-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-01b36e72a975cdc00d6514eea81668d19e8ea3150217ae98cb3361688a016fab-delta-9-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-01b36e72a975cdc00d6514eea81668d19e8ea3150217ae98cb3361688a016fab-full-9-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-06147c3b12d73e9b83b686a8c10b4a36a513c8a93c0ff99ae197f06326278be9-delta-5-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-06147c3b12d73e9b83b686a8c10b4a36a513c8a93c0ff99ae197f06326278be9-full-5-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-073c051a5934ad3b8db39eee2189e4300e55f48aaa17ff4ae30eeae088ff544a-delta-22-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-073c051a5934ad3b8db39eee2189e4300e55f48aaa17ff4ae30eeae088ff544a-full-22-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-0cc077559b9c7b4aefe8f8f591c195e0779bebdf89f2ad8285a00ea5f859d965-delta-1-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-0cc077559b9c7b4aefe8f8f591c195e0779bebdf89f2ad8285a00ea5f859d965-full-1-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-16377275567b723b20936d3f1ec0a2fd83f6ac379b922351a5e4c54949069f3b-delta-2-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-16377275567b723b20936d3f1ec0a2fd83f6ac379b922351a5e4c54949069f3b-full-2-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-1cb824a7a5f02cd30ac6c38e8f6216780d9bfa2d24811d282a368dcd541438a7-delta-29-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-1cb824a7a5f02cd30ac6c38e8f6216780d9bfa2d24811d282a368dcd541438a7-full-29-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-27b89dc4809ebc5a3b87757d35e95e2761d978cf121e44fa2773a5c06e4cc7b5-delta-28-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-27b89dc4809ebc5a3b87757d35e95e2761d978cf121e44fa2773a5c06e4cc7b5-full-28-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-28a6b7c134abfaeb0ab58a018313f6c87a61a40a4d9ec9bedf53aa1d12f3ee37-delta-7-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-28a6b7c134abfaeb0ab58a018313f6c87a61a40a4d9ec9bedf53aa1d12f3ee37-full-7-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-30a6bfe7cecbeda259a295dc6de3a436357f52388c3b03d86901e7da68565aeb-delta-19-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-30a6bfe7cecbeda259a295dc6de3a436357f52388c3b03d86901e7da68565aeb-full-19-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-343a2bf9add798e3ac2e6a571823cf9fa7e8a1bed532143354ead2648bd036ef-delta-10-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-343a2bf9add798e3ac2e6a571823cf9fa7e8a1bed532143354ead2648bd036ef-full-10-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-4d90efbc1fb3df324193831ea4a57dd5e10e67d9653343eb18d178272adb0447-delta-17-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-4d90efbc1fb3df324193831ea4a57dd5e10e67d9653343eb18d178272adb0447-full-17-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-4dd2ea099e91635c441f40b36d3f84078a2d818d2dc601c7278e72cbdfe3eca8-delta-20-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-4dd2ea099e91635c441f40b36d3f84078a2d818d2dc601c7278e72cbdfe3eca8-full-20-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-509effbdca78639023b933ce6c08a0465fb247e1cd5329e9e9c553940e4b6e46-delta-31-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-509effbdca78639023b933ce6c08a0465fb247e1cd5329e9e9c553940e4b6e46-full-31-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-5379a4d9ff29c29d1ef0906d22e82c52472753d31806189ab813c43365341b78-delta-40-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-5379a4d9ff29c29d1ef0906d22e82c52472753d31806189ab813c43365341b78-full-40-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-55908eda5686a8f89e4c50672cbe893ec1734fb23449dc03325efe7c414f9aa4-delta-49-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-55908eda5686a8f89e4c50672cbe893ec1734fb23449dc03325efe7c414f9aa4-full-49-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-57cc2691fb1fb986c99a58bcb0e029d0cd0cff41553d703147c54196d7d9ca63-delta-14-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-57cc2691fb1fb986c99a58bcb0e029d0cd0cff41553d703147c54196d7d9ca63-full-14-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-5943bf8ae4f5e59969d8570e4f40a8223299febdcfbcf188b3b3e2ab11044e18-delta-34-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-5943bf8ae4f5e59969d8570e4f40a8223299febdcfbcf188b3b3e2ab11044e18-full-34-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6518527b7c939bee60ce6b024cbe90d3b9d8913c56b8ce11a4df5da7ff7db1c8-delta-8-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6518527b7c939bee60ce6b024cbe90d3b9d8913c56b8ce11a4df5da7ff7db1c8-full-8-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-66ff26a26620379e14a7c91252d27ee4dbe06ad69a3a390a88642fe757f2b288-delta-45-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-66ff26a26620379e14a7c91252d27ee4dbe06ad69a3a390a88642fe757f2b288-full-45-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6bd0a508ee2c4afbe9d4daa811139fd6e54e7f4e16850cbce999fa30f8bdccd2-delta-6-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6bd0a508ee2c4afbe9d4daa811139fd6e54e7f4e16850cbce999fa30f8bdccd2-full-6-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6ce850d0d77ca743fcc2fc792747472e5d2c1c0813aa43abbb370554428fc897-delta-48-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6ce850d0d77ca743fcc2fc792747472e5d2c1c0813aa43abbb370554428fc897-full-48-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6eb4ca2e1552b156c5969396b49070eb08ad6c96b347359387519be59f7ccaed-delta-26-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6eb4ca2e1552b156c5969396b49070eb08ad6c96b347359387519be59f7ccaed-full-26-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-71c797fb7592d3f0a5a20c79ab8497ddaa0fd9ec17712e109d25c91b3f3c76e5-delta-3-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-71c797fb7592d3f0a5a20c79ab8497ddaa0fd9ec17712e109d25c91b3f3c76e5-full-3-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-73357026053d5a4969e7a6b9aeeef91c14cc6d5f32fc700fe6d21d2a1b22496c-delta-25-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-73357026053d5a4969e7a6b9aeeef91c14cc6d5f32fc700fe6d21d2a1b22496c-full-25-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-7c897e5c46e834ced65bde7de87716acfaa5dffbdb30b5cd9377d8c319df2034-delta-35-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-7c897e5c46e834ced65bde7de87716acfaa5dffbdb30b5cd9377d8c319df2034-full-35-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-87b8394d80d08117a5a1cd04ed8a682564eab7197a2c090159863591b5108874-delta-4-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-87b8394d80d08117a5a1cd04ed8a682564eab7197a2c090159863591b5108874-full-4-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-89eb40b9cc0921c5f5c3feb20927c13a9ada5760f82d219dcee153b7d400165c-delta-41-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-89eb40b9cc0921c5f5c3feb20927c13a9ada5760f82d219dcee153b7d400165c-full-41-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-8b649433156b8c924436cdec9c6de26106fd6f73a0528570f48748f7b40d7f8a-delta-21-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-8b649433156b8c924436cdec9c6de26106fd6f73a0528570f48748f7b40d7f8a-full-21-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-8d364023a0834c8c3077e236a465493acbf488e4f9d1f4c6cc230343c10a8f7d-delta-42-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-8d364023a0834c8c3077e236a465493acbf488e4f9d1f4c6cc230343c10a8f7d-full-42-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-925689e24a3d98d98676d816cdd8b73e7b2df057d9d4503da9b27bf91d79666c-delta-38-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-925689e24a3d98d98676d816cdd8b73e7b2df057d9d4503da9b27bf91d79666c-full-38-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-937be3d428b19f521be4f98faecc3307ae11ee731c76992f417fa4268d13859e-delta-11-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-937be3d428b19f521be4f98faecc3307ae11ee731c76992f417fa4268d13859e-full-11-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-97f34af499b79e2111fc296a598fc9654c2467ea038dfea41fd58241fb3642de-delta-32-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-97f34af499b79e2111fc296a598fc9654c2467ea038dfea41fd58241fb3642de-full-32-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-9d1b737243b8a1d0022f2b36ac53333c6280354a74d77f2a3642dcab35204e59-delta-33-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-9d1b737243b8a1d0022f2b36ac53333c6280354a74d77f2a3642dcab35204e59-full-33-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-a6663f98ef6ddf6db55f01163e34bb2e87aa82f0347e79ce31e8dbfa390c480c-delta-47-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-a6663f98ef6ddf6db55f01163e34bb2e87aa82f0347e79ce31e8dbfa390c480c-full-47-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-aa77376d1ccd3664e5c6366e010c52a978fedbf40f5ce262fee71b2e7fe0c6a9-delta-50-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-aa77376d1ccd3664e5c6366e010c52a978fedbf40f5ce262fee71b2e7fe0c6a9-full-50-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-b0f28514741ed1a71f5c6544bf92f9e0e493c5f3cf28328909771d8404eff626-delta-24-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-b0f28514741ed1a71f5c6544bf92f9e0e493c5f3cf28328909771d8404eff626-full-24-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-b3efee5358e6eb89ab3b60db2d128d57eef39e8538fb63c5632412d4f8e7d09e-delta-44-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-b3efee5358e6eb89ab3b60db2d128d57eef39e8538fb63c5632412d4f8e7d09e-full-44-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bb0b56b6eb7acbb4e80893b04c72412fe833418232e1ed7b06d97d7a7f08b4e1-delta-16-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bb0b56b6eb7acbb4e80893b04c72412fe833418232e1ed7b06d97d7a7f08b4e1-full-16-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bc45262b757ff494b53bd2a8fba0f5511cc1f9c2a2c5360e04ea8cebbf6409df-delta-13-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bc45262b757ff494b53bd2a8fba0f5511cc1f9c2a2c5360e04ea8cebbf6409df-full-13-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bd0494ba430aff13458b557113b073d226eaf11257dfe26ff3323fa1cfe1335b-delta-39-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bd0494ba430aff13458b557113b073d226eaf11257dfe26ff3323fa1cfe1335b-full-39-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cd04f5fbba1553fa728b4dd8131d4723aaac288e0c7dc080447fbf0872c0a6eb-delta-36-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cd04f5fbba1553fa728b4dd8131d4723aaac288e0c7dc080447fbf0872c0a6eb-full-36-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cdd2399557fb3163a848f08831fdc833703354edb19a0d32a965fdb140f160c2-delta-18-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cdd2399557fb3163a848f08831fdc833703354edb19a0d32a965fdb140f160c2-full-18-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cf7a08fca7b1332095242e4d9800f4b94a3f4eaae88fe8407da42736d54b9e18-delta-37-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cf7a08fca7b1332095242e4d9800f4b94a3f4eaae88fe8407da42736d54b9e18-full-37-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-d1f97465a9f52187e2ef3a0d811a1258f52380a65340c55f3e8e65b92753bc13-delta-15-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-d1f97465a9f52187e2ef3a0d811a1258f52380a65340c55f3e8e65b92753bc13-full-15-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-e475eccd4ee597e5ff67b1a249e37d65d6e3f754c3f0379fdb43692513588fef-delta-46-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-e475eccd4ee597e5ff67b1a249e37d65d6e3f754c3f0379fdb43692513588fef-full-46-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-e82e63517d78fd65b23a05c3b9a98cf905ddad7026995a238bfe634006b84cd0-delta-27-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-e82e63517d78fd65b23a05c3b9a98cf905ddad7026995a238bfe634006b84cd0-full-27-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-ed2cf0fd6c0f6237c87c161e1fca303b3fbe6c04e01f652b88720b4572143349-delta-12-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-ed2cf0fd6c0f6237c87c161e1fca303b3fbe6c04e01f652b88720b4572143349-full-12-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-f6e454eaf24a83c46a7bed4c19260a0a3ce0ed5c51739cb6d748d4913dc2ef58-delta-30-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-f6e454eaf24a83c46a7bed4c19260a0a3ce0ed5c51739cb6d748d4913dc2ef58-full-30-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-f7ad2bdf86d9609b4d6381086ec1e296bf558e2ff467ead29dd7fa6e31bacc56-delta-43-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-f7ad2bdf86d9609b4d6381086ec1e296bf558e2ff467ead29dd7fa6e31bacc56-full-43-v1.0.dat +0 -0
- chia/_tests/core/data_layer/old_format/files/__init__.py +0 -0
- chia/_tests/core/data_layer/old_format/old_db.sqlite +0 -0
- chia/_tests/core/data_layer/test_data_layer_util.py +18 -21
- chia/_tests/core/data_layer/test_data_rpc.py +77 -28
- chia/_tests/core/data_layer/test_data_store.py +637 -700
- chia/_tests/core/data_layer/test_data_store_schema.py +2 -209
- chia/_tests/core/full_node/ram_db.py +1 -1
- chia/_tests/core/full_node/stores/test_block_store.py +4 -10
- chia/_tests/core/full_node/stores/test_coin_store.py +1 -1
- chia/_tests/core/full_node/test_address_manager.py +3 -3
- chia/_tests/core/full_node/test_block_height_map.py +1 -1
- chia/_tests/core/full_node/test_full_node.py +91 -30
- chia/_tests/core/full_node/test_generator_tools.py +17 -10
- chia/_tests/core/mempool/test_mempool.py +190 -90
- chia/_tests/core/mempool/test_mempool_fee_estimator.py +2 -4
- chia/_tests/core/mempool/test_mempool_item_queries.py +1 -1
- chia/_tests/core/mempool/test_mempool_manager.py +252 -77
- chia/_tests/core/mempool/test_singleton_fast_forward.py +9 -27
- chia/_tests/core/server/serve.py +0 -2
- chia/_tests/core/server/test_rate_limits.py +400 -347
- chia/_tests/core/server/test_server.py +2 -2
- chia/_tests/core/services/test_services.py +7 -7
- chia/_tests/core/test_cost_calculation.py +31 -10
- chia/_tests/core/test_crawler.py +4 -4
- chia/_tests/core/test_db_conversion.py +7 -14
- chia/_tests/core/test_db_validation.py +2 -6
- chia/_tests/core/test_farmer_harvester_rpc.py +34 -1
- chia/_tests/core/test_full_node_rpc.py +28 -24
- chia/_tests/core/test_merkle_set.py +1 -4
- chia/_tests/core/test_seeder.py +1 -1
- chia/_tests/core/util/test_keychain.py +2 -2
- chia/_tests/core/util/test_lru_cache.py +16 -0
- chia/_tests/core/util/test_streamable.py +85 -4
- chia/_tests/environments/wallet.py +4 -1
- chia/_tests/farmer_harvester/test_farmer.py +8 -6
- chia/_tests/farmer_harvester/test_farmer_harvester.py +306 -8
- chia/_tests/farmer_harvester/test_filter_prefix_bits.py +3 -3
- chia/_tests/farmer_harvester/test_third_party_harvesters.py +11 -11
- chia/_tests/fee_estimation/test_fee_estimation_integration.py +2 -2
- chia/_tests/fee_estimation/test_fee_estimation_rpc.py +1 -1
- chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +1 -2
- chia/_tests/generator/test_rom.py +2 -1
- chia/_tests/harvester/__init__.py +0 -0
- chia/_tests/harvester/config.py +4 -0
- chia/_tests/harvester/test_harvester_api.py +157 -0
- chia/_tests/plot_sync/test_plot_sync.py +6 -3
- chia/_tests/plot_sync/test_receiver.py +16 -4
- chia/_tests/plot_sync/test_sender.py +8 -7
- chia/_tests/plot_sync/test_sync_simulated.py +15 -13
- chia/_tests/plot_sync/util.py +3 -2
- chia/_tests/plotting/test_plot_manager.py +21 -5
- chia/_tests/plotting/test_prover.py +106 -0
- chia/_tests/pools/test_pool_cmdline.py +7 -6
- chia/_tests/pools/test_pool_puzzles_lifecycle.py +10 -3
- chia/_tests/pools/test_pool_rpc.py +92 -64
- chia/_tests/solver/__init__.py +0 -0
- chia/_tests/solver/config.py +4 -0
- chia/_tests/solver/test_solver_service.py +29 -0
- chia/_tests/timelord/test_new_peak.py +1 -1
- chia/_tests/timelord/test_timelord.py +1 -1
- chia/_tests/util/benchmarks.py +5 -12
- chia/_tests/util/blockchain.py +1 -1
- chia/_tests/util/build_network_protocol_files.py +7 -0
- chia/_tests/util/network_protocol_data.py +26 -0
- chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
- chia/_tests/util/protocol_messages_json.py +19 -0
- chia/_tests/util/setup_nodes.py +21 -2
- chia/_tests/util/spend_sim.py +9 -3
- chia/_tests/util/test_condition_tools.py +3 -2
- chia/_tests/util/test_full_block_utils.py +10 -9
- chia/_tests/util/test_misc.py +10 -10
- chia/_tests/util/test_network.py +32 -1
- chia/_tests/util/test_network_protocol_files.py +333 -318
- chia/_tests/util/test_network_protocol_json.py +6 -0
- chia/_tests/util/test_network_protocol_test.py +27 -0
- chia/_tests/util/test_priority_mutex.py +1 -1
- chia/_tests/util/test_replace_str_to_bytes.py +6 -6
- chia/_tests/wallet/cat_wallet/test_cat_wallet.py +17 -13
- chia/_tests/wallet/cat_wallet/test_trades.py +55 -55
- chia/_tests/wallet/did_wallet/test_did.py +118 -1229
- chia/_tests/wallet/nft_wallet/config.py +1 -1
- chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +73 -96
- chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +15 -12
- chia/_tests/wallet/nft_wallet/test_nft_offers.py +67 -134
- chia/_tests/wallet/nft_wallet/test_nft_wallet.py +31 -26
- chia/_tests/wallet/rpc/test_wallet_rpc.py +765 -371
- chia/_tests/wallet/sync/test_wallet_sync.py +6 -0
- chia/_tests/wallet/test_new_wallet_protocol.py +1 -1
- chia/_tests/wallet/test_signer_protocol.py +2 -2
- chia/_tests/wallet/test_singleton_lifecycle_fast.py +3 -4
- chia/_tests/wallet/test_transaction_store.py +42 -33
- chia/_tests/wallet/test_wallet.py +22 -31
- chia/_tests/wallet/test_wallet_state_manager.py +14 -7
- chia/_tests/wallet/vc_wallet/test_vc_wallet.py +53 -32
- chia/apis.py +2 -0
- chia/cmds/beta.py +7 -3
- chia/cmds/chia.py +2 -0
- chia/cmds/cmd_classes.py +11 -27
- chia/cmds/cmds_util.py +3 -0
- chia/cmds/coin_funcs.py +27 -22
- chia/cmds/configure.py +42 -18
- chia/cmds/dev/data.py +22 -3
- chia/cmds/farm.py +32 -0
- chia/cmds/farm_funcs.py +54 -5
- chia/cmds/init_funcs.py +4 -0
- chia/cmds/keys_funcs.py +8 -10
- chia/cmds/peer_funcs.py +8 -10
- chia/cmds/plotnft_funcs.py +24 -16
- chia/cmds/rpc.py +11 -1
- chia/cmds/show_funcs.py +5 -5
- chia/cmds/solver.py +33 -0
- chia/cmds/solver_funcs.py +21 -0
- chia/cmds/wallet.py +1 -1
- chia/cmds/wallet_funcs.py +149 -96
- chia/consensus/block_body_validation.py +8 -9
- chia/consensus/block_creation.py +9 -10
- chia/consensus/block_header_validation.py +61 -69
- chia/{full_node → consensus}/block_height_map.py +2 -1
- chia/consensus/block_height_map_protocol.py +21 -0
- chia/consensus/block_rewards.py +12 -12
- chia/consensus/blockchain.py +8 -18
- chia/consensus/default_constants.py +6 -6
- chia/consensus/generator_tools.py +1 -1
- chia/consensus/get_block_challenge.py +24 -25
- chia/consensus/pos_quality.py +28 -2
- chia/consensus/pot_iterations.py +15 -17
- chia/daemon/keychain_proxy.py +5 -0
- chia/daemon/server.py +2 -3
- chia/data_layer/data_layer.py +32 -24
- chia/data_layer/data_layer_errors.py +5 -0
- chia/data_layer/data_layer_rpc_api.py +1 -1
- chia/data_layer/data_layer_service.py +8 -0
- chia/data_layer/data_layer_util.py +49 -89
- chia/data_layer/data_layer_wallet.py +20 -17
- chia/data_layer/data_store.py +1051 -1462
- chia/data_layer/download_data.py +44 -115
- chia/{server → data_layer}/start_data_layer.py +2 -1
- chia/data_layer/util/benchmark.py +38 -53
- chia/farmer/farmer.py +3 -0
- chia/farmer/farmer_api.py +104 -5
- chia/farmer/farmer_rpc_api.py +20 -0
- chia/farmer/farmer_rpc_client.py +6 -2
- chia/farmer/farmer_service.py +8 -0
- chia/{server → farmer}/start_farmer.py +9 -3
- chia/full_node/block_store.py +20 -10
- chia/full_node/coin_store.py +12 -4
- chia/full_node/eligible_coin_spends.py +17 -72
- chia/full_node/full_node.py +68 -71
- chia/full_node/full_node_api.py +26 -32
- chia/full_node/full_node_rpc_api.py +44 -33
- chia/full_node/full_node_rpc_client.py +67 -79
- chia/full_node/full_node_service.py +8 -0
- chia/full_node/full_node_store.py +5 -3
- chia/full_node/mempool.py +15 -16
- chia/full_node/mempool_manager.py +73 -89
- chia/{server → full_node}/start_full_node.py +1 -1
- chia/full_node/subscriptions.py +2 -2
- chia/full_node/weight_proof.py +14 -15
- chia/harvester/harvester.py +8 -1
- chia/harvester/harvester_api.py +178 -44
- chia/harvester/harvester_service.py +8 -0
- chia/{server → harvester}/start_harvester.py +1 -1
- chia/introducer/introducer_service.py +8 -0
- chia/{server → introducer}/start_introducer.py +1 -1
- chia/plot_sync/receiver.py +6 -1
- chia/plot_sync/sender.py +7 -4
- chia/plotting/cache.py +37 -28
- chia/plotting/check_plots.py +83 -48
- chia/plotting/create_plots.py +3 -4
- chia/plotting/manager.py +18 -13
- chia/plotting/prover.py +153 -0
- chia/plotting/util.py +14 -6
- chia/pools/pool_wallet.py +6 -4
- chia/protocols/harvester_protocol.py +14 -0
- chia/protocols/outbound_message.py +1 -0
- chia/protocols/pool_protocol.py +1 -1
- chia/protocols/protocol_message_types.py +7 -0
- chia/protocols/shared_protocol.py +2 -0
- chia/protocols/solver_protocol.py +18 -0
- chia/rpc/rpc_server.py +1 -1
- chia/seeder/crawl_store.py +4 -8
- chia/seeder/crawler.py +2 -2
- chia/seeder/crawler_service.py +8 -0
- chia/seeder/start_crawler.py +1 -1
- chia/server/address_manager.py +12 -15
- chia/server/introducer_peers.py +1 -1
- chia/server/node_discovery.py +9 -10
- chia/server/rate_limit_numbers.py +157 -168
- chia/server/rate_limits.py +44 -41
- chia/server/resolve_peer_info.py +5 -0
- chia/server/server.py +17 -7
- chia/server/start_service.py +0 -1
- chia/simulator/block_tools.py +92 -58
- chia/simulator/full_node_simulator.py +1 -1
- chia/simulator/setup_services.py +52 -15
- chia/solver/__init__.py +0 -0
- chia/solver/solver.py +100 -0
- chia/solver/solver_api.py +59 -0
- chia/solver/solver_rpc_api.py +31 -0
- chia/solver/solver_rpc_client.py +16 -0
- chia/solver/solver_service.py +8 -0
- chia/solver/start_solver.py +102 -0
- {mozilla-ca → chia/ssl}/cacert.pem +0 -27
- chia/ssl/create_ssl.py +3 -2
- chia/{server → timelord}/start_timelord.py +1 -1
- chia/timelord/timelord.py +12 -13
- chia/timelord/timelord_service.py +8 -0
- chia/types/blockchain_format/proof_of_space.py +61 -17
- chia/types/coin_spend.py +0 -8
- chia/types/internal_mempool_item.py +3 -3
- chia/types/mempool_item.py +15 -8
- chia/types/mempool_submission_status.py +1 -1
- chia/util/config.py +1 -3
- chia/util/db_wrapper.py +7 -8
- chia/util/initial-config.yaml +46 -0
- chia/util/lru_cache.py +8 -4
- chia/util/network.py +9 -0
- chia/util/streamable.py +38 -8
- chia/util/virtual_project_analysis.py +1 -1
- chia/wallet/cat_wallet/cat_outer_puzzle.py +7 -4
- chia/wallet/cat_wallet/cat_wallet.py +13 -7
- chia/wallet/cat_wallet/r_cat_wallet.py +4 -1
- chia/wallet/conditions.py +1 -3
- chia/wallet/did_wallet/did_wallet.py +27 -332
- chia/wallet/nft_wallet/nft_puzzle_utils.py +1 -1
- chia/wallet/nft_wallet/nft_wallet.py +9 -7
- chia/wallet/puzzle_drivers.py +7 -8
- chia/{server → wallet}/start_wallet.py +1 -1
- chia/wallet/trade_manager.py +12 -9
- chia/wallet/transaction_record.py +14 -51
- chia/wallet/util/clvm_streamable.py +28 -41
- chia/wallet/util/merkle_utils.py +2 -2
- chia/wallet/util/tx_config.py +3 -6
- chia/wallet/vc_wallet/cr_cat_wallet.py +12 -6
- chia/wallet/vc_wallet/vc_wallet.py +13 -15
- chia/wallet/wallet.py +5 -3
- chia/wallet/wallet_node.py +25 -30
- chia/wallet/wallet_request_types.py +538 -101
- chia/wallet/wallet_rpc_api.py +398 -570
- chia/wallet/wallet_rpc_client.py +144 -332
- chia/wallet/wallet_service.py +8 -0
- chia/wallet/wallet_state_manager.py +53 -42
- chia/wallet/wallet_transaction_store.py +13 -5
- {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7.dist-info}/METADATA +31 -31
- {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7.dist-info}/RECORD +368 -240
- {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7.dist-info}/WHEEL +1 -1
- {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7.dist-info}/entry_points.txt +8 -7
- chia/full_node/mempool_check_conditions.py +0 -102
- chia/server/aliases.py +0 -35
- {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7.dist-info/licenses}/LICENSE +0 -0
chia/full_node/mempool.py
CHANGED
|
@@ -11,7 +11,6 @@ from typing import Optional
|
|
|
11
11
|
|
|
12
12
|
from chia_rs import (
|
|
13
13
|
DONT_VALIDATE_SIGNATURE,
|
|
14
|
-
MEMPOOL_MODE,
|
|
15
14
|
AugSchemeMPL,
|
|
16
15
|
BlockBuilder,
|
|
17
16
|
Coin,
|
|
@@ -67,7 +66,7 @@ MEMPOOL_ITEM_FEE_LIMIT = 2**50
|
|
|
67
66
|
|
|
68
67
|
@dataclass
|
|
69
68
|
class MempoolRemoveInfo:
|
|
70
|
-
items:
|
|
69
|
+
items: dict[bytes32, InternalMempoolItem]
|
|
71
70
|
reason: MempoolRemoveReason
|
|
72
71
|
|
|
73
72
|
|
|
@@ -158,7 +157,7 @@ class Mempool:
|
|
|
158
157
|
item = self._items[name]
|
|
159
158
|
|
|
160
159
|
return MempoolItem(
|
|
161
|
-
item.
|
|
160
|
+
item.aggregated_signature,
|
|
162
161
|
uint64(fee),
|
|
163
162
|
item.conds,
|
|
164
163
|
name,
|
|
@@ -340,7 +339,7 @@ class Mempool:
|
|
|
340
339
|
Removes an item from the mempool.
|
|
341
340
|
"""
|
|
342
341
|
if items == []:
|
|
343
|
-
return MempoolRemoveInfo(
|
|
342
|
+
return MempoolRemoveInfo({}, reason)
|
|
344
343
|
|
|
345
344
|
removed_items: list[MempoolItemInfo] = []
|
|
346
345
|
if reason != MempoolRemoveReason.BLOCK_INCLUSION:
|
|
@@ -356,7 +355,7 @@ class Mempool:
|
|
|
356
355
|
item = MempoolItemInfo(int(row[1]), int(row[2]), internal_item.height_added_to_mempool)
|
|
357
356
|
removed_items.append(item)
|
|
358
357
|
|
|
359
|
-
removed_internal_items =
|
|
358
|
+
removed_internal_items = {name: self._items.pop(name) for name in items}
|
|
360
359
|
|
|
361
360
|
for batch in to_batches(items, SQLITE_MAX_VARIABLE_NUMBER):
|
|
362
361
|
args = ",".join(["?"] * len(batch.entries))
|
|
@@ -481,7 +480,7 @@ class Mempool:
|
|
|
481
480
|
conn.executemany("INSERT OR IGNORE INTO spends VALUES(?, ?)", all_coin_spends)
|
|
482
481
|
|
|
483
482
|
self._items[item_name] = InternalMempoolItem(
|
|
484
|
-
item.
|
|
483
|
+
item.aggregated_signature, item.conds, item.height_added_to_mempool, item.bundle_coin_spends
|
|
485
484
|
)
|
|
486
485
|
self._total_cost += item.cost
|
|
487
486
|
self._total_fee += item.fee
|
|
@@ -535,7 +534,7 @@ class Mempool:
|
|
|
535
534
|
f"spends: {len(removals)} additions: {len(additions)}",
|
|
536
535
|
)
|
|
537
536
|
|
|
538
|
-
flags = get_flags_for_height_and_constants(height, constants) |
|
|
537
|
+
flags = get_flags_for_height_and_constants(height, constants) | DONT_VALIDATE_SIGNATURE
|
|
539
538
|
|
|
540
539
|
err, conds = run_block_generator2(
|
|
541
540
|
block_program,
|
|
@@ -611,9 +610,9 @@ class Mempool:
|
|
|
611
610
|
# might fit, but we also want to avoid spending too much
|
|
612
611
|
# time on potentially expensive ones, hence this shortcut.
|
|
613
612
|
if any(
|
|
614
|
-
sd.eligible_for_dedup or sd.
|
|
613
|
+
sd.eligible_for_dedup or sd.supports_fast_forward for sd in item.bundle_coin_spends.values()
|
|
615
614
|
):
|
|
616
|
-
log.info(f"Skipping transaction with dedup or FF spends {
|
|
615
|
+
log.info(f"Skipping transaction with dedup or FF spends {name}")
|
|
617
616
|
continue
|
|
618
617
|
|
|
619
618
|
unique_coin_spends = []
|
|
@@ -627,7 +626,7 @@ class Mempool:
|
|
|
627
626
|
mempool_item=item, height=height, constants=constants
|
|
628
627
|
)
|
|
629
628
|
unique_coin_spends, cost_saving, unique_additions = dedup_coin_spends.get_deduplication_info(
|
|
630
|
-
bundle_coin_spends=bundle_coin_spends
|
|
629
|
+
bundle_coin_spends=bundle_coin_spends
|
|
631
630
|
)
|
|
632
631
|
item_cost = cost - cost_saving
|
|
633
632
|
log.info(
|
|
@@ -653,7 +652,7 @@ class Mempool:
|
|
|
653
652
|
break
|
|
654
653
|
coin_spends.extend(unique_coin_spends)
|
|
655
654
|
additions.extend(unique_additions)
|
|
656
|
-
sigs.append(item.
|
|
655
|
+
sigs.append(item.aggregated_signature)
|
|
657
656
|
cost_sum = new_cost_sum
|
|
658
657
|
fee_sum = new_fee_sum
|
|
659
658
|
processed_spend_bundles += 1
|
|
@@ -726,7 +725,7 @@ class Mempool:
|
|
|
726
725
|
mempool_item=item, height=height, constants=constants
|
|
727
726
|
)
|
|
728
727
|
unique_coin_spends, cost_saving, unique_additions = dedup_coin_spends.get_deduplication_info(
|
|
729
|
-
bundle_coin_spends=bundle_coin_spends
|
|
728
|
+
bundle_coin_spends=bundle_coin_spends
|
|
730
729
|
)
|
|
731
730
|
new_fee_sum = fee_sum + fee
|
|
732
731
|
if new_fee_sum > DEFAULT_CONSTANTS.MAX_COIN_AMOUNT:
|
|
@@ -750,6 +749,7 @@ class Mempool:
|
|
|
750
749
|
f"cost: {batch_cost} total cost: {block_cost}"
|
|
751
750
|
)
|
|
752
751
|
else:
|
|
752
|
+
log.info(f"Skipping transaction batch cumulative cost: {block_cost} batch cost: {batch_cost}")
|
|
753
753
|
skipped_items += 1
|
|
754
754
|
|
|
755
755
|
batch_cost = 0
|
|
@@ -760,7 +760,7 @@ class Mempool:
|
|
|
760
760
|
break
|
|
761
761
|
|
|
762
762
|
batch_cost += cost - cost_saving
|
|
763
|
-
batch_transactions.append(SpendBundle(unique_coin_spends, item.
|
|
763
|
+
batch_transactions.append(SpendBundle(unique_coin_spends, item.aggregated_signature))
|
|
764
764
|
batch_spends += len(unique_coin_spends)
|
|
765
765
|
batch_additions.extend(unique_additions)
|
|
766
766
|
fee_sum = new_fee_sum
|
|
@@ -775,12 +775,12 @@ class Mempool:
|
|
|
775
775
|
|
|
776
776
|
if len(batch_transactions) > 0:
|
|
777
777
|
added, _ = builder.add_spend_bundles(batch_transactions, uint64(batch_cost), constants)
|
|
778
|
+
log.info(f"trying to add residual batch: {len(batch_transactions)} batch cost: {batch_cost} added: {added}")
|
|
778
779
|
|
|
779
780
|
if added:
|
|
780
781
|
added_spends += batch_spends
|
|
781
782
|
additions.extend(batch_additions)
|
|
782
783
|
removals.extend([cs.coin for sb in batch_transactions for cs in sb.coin_spends])
|
|
783
|
-
block_cost = builder.cost()
|
|
784
784
|
log.info(
|
|
785
785
|
f"adding TX batch, additions: {len(batch_additions)} removals: {batch_spends} "
|
|
786
786
|
f"cost: {batch_cost} total cost: {block_cost}"
|
|
@@ -797,7 +797,6 @@ class Mempool:
|
|
|
797
797
|
f"create_block_generator2() took {duration:0.4f} seconds. "
|
|
798
798
|
f"block cost: {cost} spends: {added_spends} additions: {len(additions)}",
|
|
799
799
|
)
|
|
800
|
-
assert block_cost == cost
|
|
801
800
|
|
|
802
801
|
return NewBlockGenerator(
|
|
803
802
|
SerializedProgram.from_bytes(block_program),
|
|
@@ -806,5 +805,5 @@ class Mempool:
|
|
|
806
805
|
signature,
|
|
807
806
|
additions,
|
|
808
807
|
removals,
|
|
809
|
-
uint64(
|
|
808
|
+
uint64(cost),
|
|
810
809
|
)
|
|
@@ -11,10 +11,12 @@ from typing import Callable, Optional, TypeVar
|
|
|
11
11
|
from chia_rs import (
|
|
12
12
|
ELIGIBLE_FOR_DEDUP,
|
|
13
13
|
ELIGIBLE_FOR_FF,
|
|
14
|
+
MEMPOOL_MODE,
|
|
14
15
|
BLSCache,
|
|
15
16
|
ConsensusConstants,
|
|
16
17
|
SpendBundle,
|
|
17
18
|
SpendBundleConditions,
|
|
19
|
+
get_flags_for_height_and_constants,
|
|
18
20
|
supports_fast_forward,
|
|
19
21
|
validate_clvm_and_signature,
|
|
20
22
|
)
|
|
@@ -24,9 +26,7 @@ from chiabip158 import PyBIP158
|
|
|
24
26
|
|
|
25
27
|
from chia.consensus.block_record import BlockRecordProtocol
|
|
26
28
|
from chia.consensus.check_time_locks import check_time_locks
|
|
27
|
-
from chia.consensus.cost_calculator import NPCResult
|
|
28
29
|
from chia.full_node.bitcoin_fee_estimator import create_bitcoin_fee_estimator
|
|
29
|
-
from chia.full_node.eligible_coin_spends import EligibilityAndAdditions
|
|
30
30
|
from chia.full_node.fee_estimation import FeeBlockInfo, MempoolInfo, MempoolItemInfo
|
|
31
31
|
from chia.full_node.fee_estimator_interface import FeeEstimatorInterface
|
|
32
32
|
from chia.full_node.mempool import MEMPOOL_ITEM_FEE_LIMIT, Mempool, MempoolRemoveInfo, MempoolRemoveReason
|
|
@@ -133,17 +133,10 @@ class SpendBundleAddInfo:
|
|
|
133
133
|
|
|
134
134
|
@dataclass
|
|
135
135
|
class NewPeakInfo:
|
|
136
|
-
|
|
136
|
+
spend_bundle_ids: list[bytes32]
|
|
137
137
|
removals: list[MempoolRemoveInfo]
|
|
138
138
|
|
|
139
139
|
|
|
140
|
-
@dataclass
|
|
141
|
-
class NewPeakItem:
|
|
142
|
-
transaction_id: bytes32
|
|
143
|
-
spend_bundle: SpendBundle
|
|
144
|
-
conds: SpendBundleConditions
|
|
145
|
-
|
|
146
|
-
|
|
147
140
|
# For block overhead cost calculation
|
|
148
141
|
QUOTE_BYTES = 2
|
|
149
142
|
QUOTE_EXECUTION_COST = 20
|
|
@@ -250,7 +243,7 @@ def check_removals(
|
|
|
250
243
|
conflicts = set()
|
|
251
244
|
for coin_id, coin_bcs in bundle_coin_spends.items():
|
|
252
245
|
# 1. Checks if it's been spent already
|
|
253
|
-
if removals[coin_id].spent and not coin_bcs.
|
|
246
|
+
if removals[coin_id].spent and not coin_bcs.supports_fast_forward:
|
|
254
247
|
return Err.DOUBLE_SPEND, []
|
|
255
248
|
|
|
256
249
|
# 2. Checks if there's a mempool conflict
|
|
@@ -276,12 +269,12 @@ def check_removals(
|
|
|
276
269
|
return Err.INVALID_SPEND_BUNDLE, []
|
|
277
270
|
# if the spend we're adding to the mempool is not DEDUP nor FF, it's
|
|
278
271
|
# just a regular conflict
|
|
279
|
-
if not coin_bcs.
|
|
272
|
+
if not coin_bcs.supports_fast_forward and not coin_bcs.eligible_for_dedup:
|
|
280
273
|
conflicts.add(item)
|
|
281
274
|
|
|
282
275
|
# if the spend we're adding is FF, but there's a conflicting spend
|
|
283
276
|
# that isn't FF, they can't be chained, so that's a conflict
|
|
284
|
-
elif coin_bcs.
|
|
277
|
+
elif coin_bcs.supports_fast_forward and not conflict_bcs.supports_fast_forward:
|
|
285
278
|
conflicts.add(item)
|
|
286
279
|
|
|
287
280
|
# if the spend we're adding is DEDUP, but there's a conflicting spend
|
|
@@ -456,30 +449,35 @@ class MempoolManager:
|
|
|
456
449
|
|
|
457
450
|
self._worker_queue_size += 1
|
|
458
451
|
try:
|
|
452
|
+
flags = get_flags_for_height_and_constants(self.peak.height, self.constants)
|
|
459
453
|
sbc, new_cache_entries, duration = await asyncio.get_running_loop().run_in_executor(
|
|
460
454
|
self.pool,
|
|
461
455
|
validate_clvm_and_signature,
|
|
462
456
|
spend_bundle,
|
|
463
457
|
self.max_tx_clvm_cost,
|
|
464
458
|
self.constants,
|
|
465
|
-
|
|
459
|
+
flags | MEMPOOL_MODE,
|
|
466
460
|
)
|
|
467
|
-
# validate_clvm_and_signature raises a
|
|
468
|
-
except
|
|
461
|
+
# validate_clvm_and_signature raises a ValueError with an error code
|
|
462
|
+
except ValueError as e:
|
|
469
463
|
# Convert that to a ValidationError
|
|
470
|
-
if len(e.args) >
|
|
471
|
-
error = Err(e.args[
|
|
464
|
+
if len(e.args) > 1:
|
|
465
|
+
error = Err(e.args[1])
|
|
472
466
|
raise ValidationError(error)
|
|
473
467
|
else:
|
|
474
468
|
raise ValidationError(Err.UNKNOWN) # pragma: no cover
|
|
475
469
|
finally:
|
|
476
470
|
self._worker_queue_size -= 1
|
|
477
471
|
|
|
472
|
+
if sbc.num_atoms > sbc.cost * 60_000_000 / self.constants.MAX_BLOCK_COST_CLVM:
|
|
473
|
+
raise ValidationError(Err.INVALID_SPEND_BUNDLE, "too many atoms")
|
|
474
|
+
|
|
475
|
+
if sbc.num_pairs > sbc.cost * 60_000_000 / self.constants.MAX_BLOCK_COST_CLVM:
|
|
476
|
+
raise ValidationError(Err.INVALID_SPEND_BUNDLE, "too many pairs")
|
|
477
|
+
|
|
478
478
|
if bls_cache is not None:
|
|
479
479
|
bls_cache.update(new_cache_entries)
|
|
480
480
|
|
|
481
|
-
ret = NPCResult(None, sbc)
|
|
482
|
-
|
|
483
481
|
if spend_bundle_id is None:
|
|
484
482
|
spend_bundle_id = spend_bundle.name()
|
|
485
483
|
|
|
@@ -488,10 +486,7 @@ class MempoolManager:
|
|
|
488
486
|
f"pre_validate_spendbundle took {duration:0.4f} seconds "
|
|
489
487
|
f"for {spend_bundle_id} (queue-size: {self._worker_queue_size})",
|
|
490
488
|
)
|
|
491
|
-
|
|
492
|
-
raise ValidationError(Err(ret.error), "pre_validate_spendbundle failed")
|
|
493
|
-
assert ret.conds is not None
|
|
494
|
-
return ret.conds
|
|
489
|
+
return sbc
|
|
495
490
|
|
|
496
491
|
async def add_spend_bundle(
|
|
497
492
|
self,
|
|
@@ -505,14 +500,16 @@ class MempoolManager:
|
|
|
505
500
|
] = None,
|
|
506
501
|
) -> SpendBundleAddInfo:
|
|
507
502
|
"""
|
|
508
|
-
Validates and adds to mempool a new_spend with the given
|
|
509
|
-
|
|
510
|
-
|
|
503
|
+
Validates and adds to mempool a new_spend with the given
|
|
504
|
+
SpendBundleConditions, and spend_name, and the current mempool. The mempool
|
|
505
|
+
should be locked during this call (blockchain lock). If there are mempool
|
|
506
|
+
conflicts, the conflicting spends might be removed (if the new spend is
|
|
507
|
+
a superset of the previous). Otherwise, the new spend might be
|
|
511
508
|
added to the potential pool.
|
|
512
509
|
|
|
513
510
|
Args:
|
|
514
511
|
new_spend: spend bundle to validate and add
|
|
515
|
-
conds:
|
|
512
|
+
conds: SpendBundleConditions resulting from running the clvm in the spend bundle's coin spends
|
|
516
513
|
spend_name: hash of the spend bundle data, passed in as an optimization
|
|
517
514
|
|
|
518
515
|
Returns:
|
|
@@ -599,64 +596,57 @@ class MempoolManager:
|
|
|
599
596
|
removal_names: set[bytes32] = set()
|
|
600
597
|
additions_dict: dict[bytes32, Coin] = {}
|
|
601
598
|
addition_amount: int = 0
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
for spend in conds.spends
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
spend_additions.append(child_coin)
|
|
611
|
-
additions_dict[child_coin.name()] = child_coin
|
|
612
|
-
addition_amount += child_coin.amount
|
|
613
|
-
is_eligible_for_dedup = bool(spend.flags & ELIGIBLE_FOR_DEDUP)
|
|
614
|
-
is_eligible_for_ff = bool(spend.flags & ELIGIBLE_FOR_FF)
|
|
615
|
-
eligibility_and_additions[coin_id] = EligibilityAndAdditions(
|
|
616
|
-
is_eligible_for_dedup=is_eligible_for_dedup,
|
|
617
|
-
spend_additions=spend_additions,
|
|
618
|
-
ff_puzzle_hash=bytes32(spend.puzzle_hash) if is_eligible_for_ff else None,
|
|
619
|
-
)
|
|
620
|
-
removal_names_from_coin_spends: set[bytes32] = set()
|
|
599
|
+
|
|
600
|
+
# Map of coin ID to SpendConditions
|
|
601
|
+
spend_conditions = {bytes32(spend.coin_id): spend for spend in conds.spends}
|
|
602
|
+
|
|
603
|
+
# if this happens, the SpendBundle doesn't match the
|
|
604
|
+
# SpendBundleConditions.
|
|
605
|
+
assert len(new_spend.coin_spends) == len(spend_conditions)
|
|
606
|
+
|
|
621
607
|
bundle_coin_spends: dict[bytes32, BundleCoinSpend] = {}
|
|
622
608
|
for coin_spend in new_spend.coin_spends:
|
|
623
609
|
coin_id = coin_spend.coin.name()
|
|
624
|
-
|
|
625
|
-
eligibility_info = eligibility_and_additions.get(
|
|
626
|
-
coin_id,
|
|
627
|
-
EligibilityAndAdditions(is_eligible_for_dedup=False, spend_additions=[], ff_puzzle_hash=None),
|
|
628
|
-
)
|
|
610
|
+
removal_names.add(coin_id)
|
|
629
611
|
|
|
630
|
-
|
|
631
|
-
|
|
612
|
+
# if this coin_id isn't found, the SpendBundle doesn't match the
|
|
613
|
+
# SpendBundleConditions.
|
|
614
|
+
spend_conds = spend_conditions.pop(coin_id)
|
|
615
|
+
|
|
616
|
+
if bool(spend_conds.flags & ELIGIBLE_FOR_DEDUP) and not is_clvm_canonical(bytes(coin_spend.solution)):
|
|
632
617
|
return Err.INVALID_COIN_SOLUTION, None, []
|
|
633
618
|
|
|
634
|
-
mark_as_fast_forward = eligibility_info.ff_puzzle_hash is not None and supports_fast_forward(coin_spend)
|
|
635
619
|
lineage_info = None
|
|
636
|
-
if
|
|
620
|
+
if bool(spend_conds.flags & ELIGIBLE_FOR_FF) and supports_fast_forward(coin_spend):
|
|
637
621
|
# Make sure the fast forward spend still has a version that is
|
|
638
|
-
# still unspent, because if the singleton has been
|
|
639
|
-
# fast forward spend will never become valid.
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
622
|
+
# still unspent, because if the singleton has been spent in a
|
|
623
|
+
# non-FF spend, this fast forward spend will never become valid.
|
|
624
|
+
# So treat this as a normal spend, which requires the exact coin
|
|
625
|
+
# to exist and be unspent.
|
|
626
|
+
# Singletons that were created before the optimization of using
|
|
627
|
+
# spent_index will also fail this test, and such spends will
|
|
628
|
+
# fall back to be treated as non-FF spends.
|
|
629
|
+
lineage_info = await get_unspent_lineage_info_for_puzzle_hash(spend_conds.puzzle_hash)
|
|
630
|
+
|
|
631
|
+
spend_additions = []
|
|
632
|
+
for puzzle_hash, amount, _ in spend_conds.create_coin:
|
|
633
|
+
child_coin = Coin(coin_id, puzzle_hash, uint64(amount))
|
|
634
|
+
spend_additions.append(child_coin)
|
|
635
|
+
additions_dict[child_coin.name()] = child_coin
|
|
636
|
+
addition_amount += amount
|
|
637
|
+
|
|
644
638
|
bundle_coin_spends[coin_id] = BundleCoinSpend(
|
|
645
639
|
coin_spend=coin_spend,
|
|
646
|
-
eligible_for_dedup=
|
|
647
|
-
|
|
648
|
-
|
|
640
|
+
eligible_for_dedup=bool(spend_conds.flags & ELIGIBLE_FOR_DEDUP),
|
|
641
|
+
additions=spend_additions,
|
|
642
|
+
cost=uint64(spend_conds.condition_cost + spend_conds.execution_cost),
|
|
649
643
|
latest_singleton_lineage=lineage_info,
|
|
650
644
|
)
|
|
651
645
|
|
|
652
|
-
if removal_names != removal_names_from_coin_spends:
|
|
653
|
-
# If you reach here it's probably because your program reveal doesn't match the coin's puzzle hash
|
|
654
|
-
return Err.INVALID_SPEND_BUNDLE, None, []
|
|
655
|
-
|
|
656
646
|
# fast forward spends are only allowed when bundled with other, non-FF, spends
|
|
657
647
|
# in order to evict an FF spend, it must be associated with a normal
|
|
658
648
|
# spend that can be included in a block or invalidated some other way
|
|
659
|
-
if all([s.
|
|
649
|
+
if all([s.supports_fast_forward for s in bundle_coin_spends.values()]):
|
|
660
650
|
return Err.INVALID_SPEND_BUNDLE, None, []
|
|
661
651
|
|
|
662
652
|
removal_record_dict: dict[bytes32, CoinRecord] = {}
|
|
@@ -757,7 +747,7 @@ class MempoolManager:
|
|
|
757
747
|
return Err.IMPOSSIBLE_SECONDS_ABSOLUTE_CONSTRAINTS, None, [] # MempoolInclusionStatus.FAILED
|
|
758
748
|
|
|
759
749
|
potential = MempoolItem(
|
|
760
|
-
new_spend,
|
|
750
|
+
new_spend.aggregated_signature,
|
|
761
751
|
uint64(fees),
|
|
762
752
|
conds,
|
|
763
753
|
spend_name,
|
|
@@ -776,7 +766,7 @@ class MempoolManager:
|
|
|
776
766
|
|
|
777
767
|
if fail_reason is Err.MEMPOOL_CONFLICT:
|
|
778
768
|
log.debug(f"Replace attempted. number of MempoolItems: {len(conflicts)}")
|
|
779
|
-
if not can_replace(conflicts,
|
|
769
|
+
if not can_replace(conflicts, potential):
|
|
780
770
|
return Err.MEMPOOL_CONFLICT, potential, []
|
|
781
771
|
|
|
782
772
|
duration = time.monotonic() - start_time
|
|
@@ -797,7 +787,7 @@ class MempoolManager:
|
|
|
797
787
|
"""Returns a full SpendBundle if it's inside one the mempools"""
|
|
798
788
|
item: Optional[MempoolItem] = self.mempool.get_item_by_id(bundle_hash)
|
|
799
789
|
if item is not None:
|
|
800
|
-
return item.
|
|
790
|
+
return item.to_spend_bundle()
|
|
801
791
|
return None
|
|
802
792
|
|
|
803
793
|
def get_mempool_item(self, bundle_hash: bytes32, include_pending: bool = False) -> Optional[MempoolItem]:
|
|
@@ -950,8 +940,7 @@ class MempoolManager:
|
|
|
950
940
|
|
|
951
941
|
removals: set[bytes32] = set()
|
|
952
942
|
for item in old_pool.all_items():
|
|
953
|
-
|
|
954
|
-
removals.add(s.coin.name())
|
|
943
|
+
removals.update(item.bundle_coin_spends)
|
|
955
944
|
|
|
956
945
|
for record in await self.get_coin_records(removals):
|
|
957
946
|
name = record.coin.name()
|
|
@@ -967,7 +956,7 @@ class MempoolManager:
|
|
|
967
956
|
|
|
968
957
|
for item in old_pool.all_items():
|
|
969
958
|
info = await self.add_spend_bundle(
|
|
970
|
-
item.
|
|
959
|
+
item.to_spend_bundle(),
|
|
971
960
|
item.conds,
|
|
972
961
|
item.spend_bundle_name,
|
|
973
962
|
item.height_added_to_mempool,
|
|
@@ -989,7 +978,7 @@ class MempoolManager:
|
|
|
989
978
|
txs_added = []
|
|
990
979
|
for item in potential_txs.values():
|
|
991
980
|
info = await self.add_spend_bundle(
|
|
992
|
-
item.
|
|
981
|
+
item.to_spend_bundle(),
|
|
993
982
|
item.conds,
|
|
994
983
|
item.spend_bundle_name,
|
|
995
984
|
item.height_added_to_mempool,
|
|
@@ -997,7 +986,7 @@ class MempoolManager:
|
|
|
997
986
|
lineage_cache.get_unspent_lineage_info,
|
|
998
987
|
)
|
|
999
988
|
if info.status == MempoolInclusionStatus.SUCCESS:
|
|
1000
|
-
txs_added.append(
|
|
989
|
+
txs_added.append(item.spend_bundle_name)
|
|
1001
990
|
mempool_item_removals.extend(info.removals)
|
|
1002
991
|
log.info(
|
|
1003
992
|
f"Size of mempool: {self.mempool.size()} spends, "
|
|
@@ -1020,7 +1009,7 @@ class MempoolManager:
|
|
|
1020
1009
|
return items
|
|
1021
1010
|
if mempool_filter.Match(bytearray(item.spend_bundle_name)):
|
|
1022
1011
|
continue
|
|
1023
|
-
items.append(item.
|
|
1012
|
+
items.append(item.to_spend_bundle())
|
|
1024
1013
|
|
|
1025
1014
|
return items
|
|
1026
1015
|
|
|
@@ -1036,17 +1025,12 @@ def optional_max(a: Optional[T], b: Optional[T]) -> Optional[T]:
|
|
|
1036
1025
|
return max((v for v in [a, b] if v is not None), default=None)
|
|
1037
1026
|
|
|
1038
1027
|
|
|
1039
|
-
def can_replace(
|
|
1040
|
-
conflicting_items: list[MempoolItem],
|
|
1041
|
-
removal_names: set[bytes32],
|
|
1042
|
-
new_item: MempoolItem,
|
|
1043
|
-
) -> bool:
|
|
1028
|
+
def can_replace(conflicting_items: list[MempoolItem], new_item: MempoolItem) -> bool:
|
|
1044
1029
|
"""
|
|
1045
1030
|
This function implements the mempool replacement rules. Given a Mempool item
|
|
1046
1031
|
we're attempting to insert into the mempool (new_item) and the set of existing
|
|
1047
1032
|
mempool items that conflict with it, this function answers the question whether
|
|
1048
|
-
the existing items can be replaced by the new one.
|
|
1049
|
-
the coin IDs the new mempool item is spending.
|
|
1033
|
+
the existing items can be replaced by the new one.
|
|
1050
1034
|
"""
|
|
1051
1035
|
|
|
1052
1036
|
conflicting_fees = 0
|
|
@@ -1071,10 +1055,10 @@ def can_replace(
|
|
|
1071
1055
|
# fee than AB therefore kicking out A altogether. The better way to solve this would be to keep a cache
|
|
1072
1056
|
# of booted transactions like A, and retry them after they get removed from mempool due to a conflict.
|
|
1073
1057
|
for coin_id, bcs in item.bundle_coin_spends.items():
|
|
1074
|
-
if coin_id not in
|
|
1058
|
+
if coin_id not in new_item.bundle_coin_spends:
|
|
1075
1059
|
log.debug("Rejecting conflicting tx as it does not spend conflicting coin %s", coin_id)
|
|
1076
1060
|
return False
|
|
1077
|
-
if bcs.
|
|
1061
|
+
if bcs.supports_fast_forward:
|
|
1078
1062
|
existing_ff_spends.add(bytes32(coin_id))
|
|
1079
1063
|
if bcs.eligible_for_dedup:
|
|
1080
1064
|
existing_dedup_spends.add(bytes32(coin_id))
|
|
@@ -1125,7 +1109,7 @@ def can_replace(
|
|
|
1125
1109
|
|
|
1126
1110
|
if len(existing_ff_spends) > 0 or len(existing_dedup_spends) > 0:
|
|
1127
1111
|
for coin_id, bcs in new_item.bundle_coin_spends.items():
|
|
1128
|
-
if not bcs.
|
|
1112
|
+
if not bcs.supports_fast_forward and coin_id in existing_ff_spends:
|
|
1129
1113
|
log.debug("Rejecting conflicting tx due to changing ELIGIBLE_FOR_FF of coin spend %s", coin_id)
|
|
1130
1114
|
return False
|
|
1131
1115
|
|
|
@@ -15,8 +15,8 @@ from chia.consensus.default_constants import DEFAULT_CONSTANTS, update_testnet_o
|
|
|
15
15
|
from chia.full_node.full_node import FullNode
|
|
16
16
|
from chia.full_node.full_node_api import FullNodeAPI
|
|
17
17
|
from chia.full_node.full_node_rpc_api import FullNodeRpcApi
|
|
18
|
+
from chia.full_node.full_node_service import FullNodeService
|
|
18
19
|
from chia.protocols.outbound_message import NodeType
|
|
19
|
-
from chia.server.aliases import FullNodeService
|
|
20
20
|
from chia.server.resolve_peer_info import get_unresolved_peer_infos
|
|
21
21
|
from chia.server.signal_handlers import SignalHandlers
|
|
22
22
|
from chia.server.start_service import RpcInfo, Service, async_run
|
chia/full_node/subscriptions.py
CHANGED
|
@@ -225,11 +225,11 @@ def peers_for_spend_bundle(
|
|
|
225
225
|
|
|
226
226
|
for spend in conds.spends:
|
|
227
227
|
coin_ids.add(bytes32(spend.coin_id))
|
|
228
|
-
puzzle_hashes.add(
|
|
228
|
+
puzzle_hashes.add(spend.puzzle_hash)
|
|
229
229
|
|
|
230
230
|
for puzzle_hash, amount, memo in spend.create_coin:
|
|
231
231
|
coin_ids.add(Coin(spend.coin_id, puzzle_hash, uint64(amount)).name())
|
|
232
|
-
puzzle_hashes.add(
|
|
232
|
+
puzzle_hashes.add(puzzle_hash)
|
|
233
233
|
|
|
234
234
|
if memo is not None and len(memo) == 32:
|
|
235
235
|
puzzle_hashes.add(bytes32(memo))
|
chia/full_node/weight_proof.py
CHANGED
|
@@ -411,17 +411,16 @@ class WeightProofHandler:
|
|
|
411
411
|
while not curr_sub_rec.sub_epoch_summary_included:
|
|
412
412
|
curr_sub_rec = blocks[curr_sub_rec.prev_hash]
|
|
413
413
|
first_rc_end_of_slot_vdf = self.first_rc_end_of_slot_vdf(header_block, blocks, header_blocks)
|
|
414
|
+
elif header_block_sub_rec.overflow and header_block_sub_rec.first_in_sub_slot:
|
|
415
|
+
sub_slots_num = 2
|
|
416
|
+
while sub_slots_num > 0 and curr_sub_rec.height > 0:
|
|
417
|
+
if curr_sub_rec.first_in_sub_slot:
|
|
418
|
+
assert curr_sub_rec.finished_challenge_slot_hashes is not None
|
|
419
|
+
sub_slots_num -= len(curr_sub_rec.finished_challenge_slot_hashes)
|
|
420
|
+
curr_sub_rec = blocks[curr_sub_rec.prev_hash]
|
|
414
421
|
else:
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
while sub_slots_num > 0 and curr_sub_rec.height > 0:
|
|
418
|
-
if curr_sub_rec.first_in_sub_slot:
|
|
419
|
-
assert curr_sub_rec.finished_challenge_slot_hashes is not None
|
|
420
|
-
sub_slots_num -= len(curr_sub_rec.finished_challenge_slot_hashes)
|
|
421
|
-
curr_sub_rec = blocks[curr_sub_rec.prev_hash]
|
|
422
|
-
else:
|
|
423
|
-
while not curr_sub_rec.first_in_sub_slot and curr_sub_rec.height > 0:
|
|
424
|
-
curr_sub_rec = blocks[curr_sub_rec.prev_hash]
|
|
422
|
+
while not curr_sub_rec.first_in_sub_slot and curr_sub_rec.height > 0:
|
|
423
|
+
curr_sub_rec = blocks[curr_sub_rec.prev_hash]
|
|
425
424
|
|
|
426
425
|
curr = header_blocks[curr_sub_rec.header_hash]
|
|
427
426
|
sub_slots_data: list[SubSlotData] = []
|
|
@@ -673,7 +672,7 @@ def _get_weights_for_sampling(
|
|
|
673
672
|
q = 1 - delta**u
|
|
674
673
|
# todo check division and type conversions
|
|
675
674
|
weight = q * float(total_weight)
|
|
676
|
-
weight_to_check.append(uint128(
|
|
675
|
+
weight_to_check.append(uint128(weight))
|
|
677
676
|
weight_to_check.sort()
|
|
678
677
|
return weight_to_check
|
|
679
678
|
|
|
@@ -1533,10 +1532,10 @@ def _get_last_ses_hash(
|
|
|
1533
1532
|
) -> tuple[Optional[bytes32], uint32]:
|
|
1534
1533
|
for idx, block in enumerate(reversed(recent_reward_chain)):
|
|
1535
1534
|
if (block.reward_chain_block.height % constants.SUB_EPOCH_BLOCKS) == 0:
|
|
1536
|
-
|
|
1535
|
+
original_idx = len(recent_reward_chain) - 1 - idx # reverse
|
|
1537
1536
|
# find first block after sub slot end
|
|
1538
|
-
while
|
|
1539
|
-
curr = recent_reward_chain[
|
|
1537
|
+
while original_idx < len(recent_reward_chain):
|
|
1538
|
+
curr = recent_reward_chain[original_idx]
|
|
1540
1539
|
if len(curr.finished_sub_slots) > 0:
|
|
1541
1540
|
for slot in curr.finished_sub_slots:
|
|
1542
1541
|
if slot.challenge_chain.subepoch_summary_hash is not None:
|
|
@@ -1544,7 +1543,7 @@ def _get_last_ses_hash(
|
|
|
1544
1543
|
slot.challenge_chain.subepoch_summary_hash,
|
|
1545
1544
|
curr.reward_chain_block.height,
|
|
1546
1545
|
)
|
|
1547
|
-
|
|
1546
|
+
original_idx += 1
|
|
1548
1547
|
return None, uint32(0)
|
|
1549
1548
|
|
|
1550
1549
|
|
chia/harvester/harvester.py
CHANGED
|
@@ -190,10 +190,17 @@ class Harvester:
|
|
|
190
190
|
with self.plot_manager:
|
|
191
191
|
for path, plot_info in self.plot_manager.plots.items():
|
|
192
192
|
prover = plot_info.prover
|
|
193
|
+
size = prover.get_size()
|
|
194
|
+
if size.size_v1 is not None:
|
|
195
|
+
k = size.size_v1
|
|
196
|
+
else:
|
|
197
|
+
assert size.size_v2 is not None
|
|
198
|
+
k = size.size_v2
|
|
199
|
+
# TODO: todo_v2_plots support v2 plots in RPC response
|
|
193
200
|
response_plots.append(
|
|
194
201
|
{
|
|
195
202
|
"filename": str(path),
|
|
196
|
-
"size":
|
|
203
|
+
"size": k,
|
|
197
204
|
"plot_id": prover.get_id(),
|
|
198
205
|
"pool_public_key": plot_info.pool_public_key,
|
|
199
206
|
"pool_contract_puzzle_hash": plot_info.pool_contract_puzzle_hash,
|