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
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
import builtins
|
|
4
3
|
from dataclasses import dataclass
|
|
5
|
-
from typing import
|
|
4
|
+
from typing import Generic, Optional, TypeVar
|
|
6
5
|
|
|
7
6
|
from chia_rs import SpendBundle
|
|
8
7
|
from chia_rs.sized_bytes import bytes32
|
|
@@ -11,7 +10,7 @@ from chia_rs.sized_ints import uint8, uint32, uint64
|
|
|
11
10
|
from chia.consensus.coinbase import farmer_parent_id, pool_parent_id
|
|
12
11
|
from chia.types.blockchain_format.coin import Coin
|
|
13
12
|
from chia.types.mempool_inclusion_status import MempoolInclusionStatus
|
|
14
|
-
from chia.util.bech32m import decode_puzzle_hash
|
|
13
|
+
from chia.util.bech32m import decode_puzzle_hash
|
|
15
14
|
from chia.util.errors import Err
|
|
16
15
|
from chia.util.streamable import Streamable, streamable
|
|
17
16
|
from chia.wallet.conditions import ConditionValidTimes
|
|
@@ -19,7 +18,6 @@ from chia.wallet.util.transaction_type import TransactionType
|
|
|
19
18
|
from chia.wallet.wallet_spend_bundle import WalletSpendBundle
|
|
20
19
|
|
|
21
20
|
T = TypeVar("T")
|
|
22
|
-
_T_TransactionRecord = TypeVar("_T_TransactionRecord", bound="TransactionRecordOld")
|
|
23
21
|
|
|
24
22
|
minimum_send_attempts = 6
|
|
25
23
|
|
|
@@ -57,7 +55,7 @@ class TransactionRecordOld(Streamable):
|
|
|
57
55
|
|
|
58
56
|
# name is also called bundle_id and tx_id
|
|
59
57
|
name: bytes32
|
|
60
|
-
memos:
|
|
58
|
+
memos: dict[bytes32, list[bytes]]
|
|
61
59
|
|
|
62
60
|
def is_in_mempool(self) -> bool:
|
|
63
61
|
# If one of the nodes we sent it to responded with success or pending, we return True
|
|
@@ -81,51 +79,6 @@ class TransactionRecordOld(Streamable):
|
|
|
81
79
|
return uint32(block_index)
|
|
82
80
|
return None
|
|
83
81
|
|
|
84
|
-
def get_memos(self) -> dict[bytes32, list[bytes]]:
|
|
85
|
-
return {coin_id: ms for coin_id, ms in self.memos}
|
|
86
|
-
|
|
87
|
-
@classmethod
|
|
88
|
-
def from_json_dict_convenience(
|
|
89
|
-
cls: builtins.type[_T_TransactionRecord], modified_tx_input: dict
|
|
90
|
-
) -> _T_TransactionRecord:
|
|
91
|
-
modified_tx = modified_tx_input.copy()
|
|
92
|
-
if "to_address" in modified_tx:
|
|
93
|
-
modified_tx["to_puzzle_hash"] = decode_puzzle_hash(modified_tx["to_address"]).hex()
|
|
94
|
-
if "to_address" in modified_tx:
|
|
95
|
-
del modified_tx["to_address"]
|
|
96
|
-
# Converts memos from a flat dict into a nested list
|
|
97
|
-
memos_dict: dict[str, list[str]] = {}
|
|
98
|
-
memos_list: list = []
|
|
99
|
-
if "memos" in modified_tx:
|
|
100
|
-
for coin_id, memo in modified_tx["memos"].items():
|
|
101
|
-
if coin_id not in memos_dict:
|
|
102
|
-
memos_dict[coin_id] = []
|
|
103
|
-
memos_dict[coin_id].append(memo)
|
|
104
|
-
for coin_id, memos in memos_dict.items():
|
|
105
|
-
memos_list.append((coin_id, memos))
|
|
106
|
-
modified_tx["memos"] = memos_list
|
|
107
|
-
return cls.from_json_dict(modified_tx)
|
|
108
|
-
|
|
109
|
-
@classmethod
|
|
110
|
-
def from_json_dict(cls: builtins.type[_T_TransactionRecord], json_dict: dict[str, Any]) -> _T_TransactionRecord:
|
|
111
|
-
try:
|
|
112
|
-
return super().from_json_dict(json_dict)
|
|
113
|
-
except Exception:
|
|
114
|
-
return cls.from_json_dict_convenience(json_dict)
|
|
115
|
-
|
|
116
|
-
def to_json_dict_convenience(self, config: dict) -> dict:
|
|
117
|
-
selected = config["selected_network"]
|
|
118
|
-
prefix = config["network_overrides"]["config"][selected]["address_prefix"]
|
|
119
|
-
formatted = self.to_json_dict()
|
|
120
|
-
formatted["to_address"] = encode_puzzle_hash(self.to_puzzle_hash, prefix)
|
|
121
|
-
formatted["memos"] = {
|
|
122
|
-
coin_id.hex(): memo.hex()
|
|
123
|
-
for coin_id, memos in self.get_memos().items()
|
|
124
|
-
for memo in memos
|
|
125
|
-
if memo is not None
|
|
126
|
-
}
|
|
127
|
-
return formatted
|
|
128
|
-
|
|
129
82
|
def is_valid(self) -> bool:
|
|
130
83
|
if len(self.sent_to) < minimum_send_attempts:
|
|
131
84
|
# we haven't tried enough peers yet
|
|
@@ -139,13 +92,23 @@ class TransactionRecordOld(Streamable):
|
|
|
139
92
|
return False
|
|
140
93
|
|
|
141
94
|
def hint_dict(self) -> dict[bytes32, bytes32]:
|
|
142
|
-
return {
|
|
95
|
+
return {
|
|
96
|
+
coin_id: bytes32(memos[0])
|
|
97
|
+
for coin_id, memos in self.memos.items()
|
|
98
|
+
if len(memos) > 0 and len(memos[0]) == 32
|
|
99
|
+
}
|
|
143
100
|
|
|
144
101
|
|
|
145
102
|
@streamable
|
|
146
103
|
@dataclass(frozen=True)
|
|
147
104
|
class TransactionRecord(TransactionRecordOld):
|
|
148
105
|
valid_times: ConditionValidTimes
|
|
106
|
+
to_address: str
|
|
107
|
+
|
|
108
|
+
def __post_init__(self) -> None:
|
|
109
|
+
if decode_puzzle_hash(self.to_address) != self.to_puzzle_hash:
|
|
110
|
+
raise ValueError("Invalid tx record initialization, to_address must match to_puzzle_hash")
|
|
111
|
+
return super().__post_init__()
|
|
149
112
|
|
|
150
113
|
|
|
151
114
|
@streamable
|
|
@@ -3,17 +3,16 @@ from __future__ import annotations
|
|
|
3
3
|
import dataclasses
|
|
4
4
|
import functools
|
|
5
5
|
from types import MappingProxyType
|
|
6
|
-
from typing import Any, Callable, Generic, Optional, TypeVar, Union,
|
|
6
|
+
from typing import Any, Callable, Generic, Optional, TypeVar, Union, get_type_hints
|
|
7
7
|
|
|
8
8
|
from hsms.clvm_serde import from_program_for_type, to_program_for_type
|
|
9
9
|
from typing_extensions import TypeGuard
|
|
10
10
|
|
|
11
11
|
from chia.types.blockchain_format.program import Program
|
|
12
|
+
from chia.util.byte_types import hexstr_to_bytes
|
|
12
13
|
from chia.util.streamable import (
|
|
13
14
|
Streamable,
|
|
14
15
|
function_to_convert_one_item,
|
|
15
|
-
is_type_List,
|
|
16
|
-
is_type_SpecificOptional,
|
|
17
16
|
is_type_Tuple,
|
|
18
17
|
recurse_jsonify,
|
|
19
18
|
streamable,
|
|
@@ -94,14 +93,10 @@ def byte_deserialize_clvm_streamable(
|
|
|
94
93
|
)
|
|
95
94
|
|
|
96
95
|
|
|
97
|
-
def is_compound_type(typ: Any) -> bool:
|
|
98
|
-
return is_type_SpecificOptional(typ) or is_type_Tuple(typ) or is_type_List(typ)
|
|
99
|
-
|
|
100
|
-
|
|
101
96
|
# TODO: this is more than _just_ a Streamable, but it is also a Streamable and that's
|
|
102
97
|
# useful for now
|
|
103
|
-
def is_clvm_streamable_type(v: type[object]) ->
|
|
104
|
-
return issubclass(v, Streamable) and hasattr(v, "_clvm_streamable")
|
|
98
|
+
def is_clvm_streamable_type(v: type[object]) -> bool:
|
|
99
|
+
return isinstance(v, type) and issubclass(v, Streamable) and hasattr(v, "_clvm_streamable")
|
|
105
100
|
|
|
106
101
|
|
|
107
102
|
# TODO: this is more than _just_ a Streamable, but it is also a Streamable and that's
|
|
@@ -115,48 +110,40 @@ def json_deserialize_with_clvm_streamable(
|
|
|
115
110
|
streamable_type: type[_T_Streamable],
|
|
116
111
|
translation_layer: Optional[TranslationLayer] = None,
|
|
117
112
|
) -> _T_Streamable:
|
|
118
|
-
|
|
113
|
+
# This function is flawed for compound types because it's highjacking the function_to_convert_one_item func
|
|
114
|
+
# which does not call back to it. More examination is needed.
|
|
115
|
+
if is_clvm_streamable_type(streamable_type) and isinstance(json_dict, str):
|
|
119
116
|
return byte_deserialize_clvm_streamable(
|
|
120
|
-
|
|
117
|
+
hexstr_to_bytes(json_dict), streamable_type, translation_layer=translation_layer
|
|
121
118
|
)
|
|
122
|
-
|
|
119
|
+
elif hasattr(streamable_type, "streamable_fields"):
|
|
123
120
|
old_streamable_fields = streamable_type.streamable_fields()
|
|
124
121
|
new_streamable_fields = []
|
|
125
122
|
for old_field in old_streamable_fields:
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
convert_function=function_to_convert_one_item(
|
|
133
|
-
old_field.type,
|
|
134
|
-
functools.partial(
|
|
135
|
-
json_deserialize_with_clvm_streamable,
|
|
136
|
-
streamable_type=inner_type,
|
|
137
|
-
translation_layer=translation_layer,
|
|
138
|
-
),
|
|
139
|
-
),
|
|
140
|
-
)
|
|
141
|
-
)
|
|
142
|
-
else:
|
|
143
|
-
new_streamable_fields.append(old_field)
|
|
144
|
-
elif is_clvm_streamable_type(old_field.type):
|
|
145
|
-
new_streamable_fields.append(
|
|
146
|
-
dataclasses.replace(
|
|
147
|
-
old_field,
|
|
148
|
-
convert_function=functools.partial(
|
|
123
|
+
new_streamable_fields.append(
|
|
124
|
+
dataclasses.replace(
|
|
125
|
+
old_field,
|
|
126
|
+
convert_function=function_to_convert_one_item(
|
|
127
|
+
old_field.type,
|
|
128
|
+
functools.partial(
|
|
149
129
|
json_deserialize_with_clvm_streamable,
|
|
150
|
-
streamable_type=old_field.type,
|
|
151
130
|
translation_layer=translation_layer,
|
|
152
131
|
),
|
|
153
|
-
)
|
|
132
|
+
),
|
|
154
133
|
)
|
|
155
|
-
|
|
156
|
-
new_streamable_fields.append(old_field)
|
|
157
|
-
|
|
134
|
+
)
|
|
158
135
|
setattr(streamable_type, "_streamable_fields", tuple(new_streamable_fields))
|
|
159
|
-
return streamable_type.from_json_dict(json_dict)
|
|
136
|
+
return streamable_type.from_json_dict(json_dict) # type: ignore[arg-type]
|
|
137
|
+
elif hasattr(streamable_type, "from_json_dict"):
|
|
138
|
+
return streamable_type.from_json_dict(json_dict) # type: ignore[arg-type]
|
|
139
|
+
else:
|
|
140
|
+
return function_to_convert_one_item( # type: ignore[return-value]
|
|
141
|
+
streamable_type,
|
|
142
|
+
functools.partial(
|
|
143
|
+
json_deserialize_with_clvm_streamable,
|
|
144
|
+
translation_layer=translation_layer,
|
|
145
|
+
),
|
|
146
|
+
)(json_dict)
|
|
160
147
|
|
|
161
148
|
|
|
162
149
|
_T_ClvmStreamable = TypeVar("_T_ClvmStreamable", bound="Streamable")
|
chia/wallet/util/merkle_utils.py
CHANGED
|
@@ -39,9 +39,9 @@ def build_merkle_tree_from_binary_tree(tuples: TupleTree) -> tuple[bytes32, dict
|
|
|
39
39
|
proof.append(right_root)
|
|
40
40
|
new_proofs[name] = (path, proof)
|
|
41
41
|
for name, (path, proof) in right_proofs.items():
|
|
42
|
-
path
|
|
42
|
+
appended_path = path | (1 << len(proof))
|
|
43
43
|
proof.append(left_root)
|
|
44
|
-
new_proofs[name] = (
|
|
44
|
+
new_proofs[name] = (appended_path, proof)
|
|
45
45
|
return new_root, new_proofs
|
|
46
46
|
|
|
47
47
|
|
chia/wallet/util/tx_config.py
CHANGED
|
@@ -88,7 +88,7 @@ class CoinSelectionConfigLoader(Streamable):
|
|
|
88
88
|
|
|
89
89
|
@classmethod
|
|
90
90
|
def from_json_dict(cls, json_dict: dict[str, Any]) -> Self:
|
|
91
|
-
if "excluded_coins"
|
|
91
|
+
if json_dict.get("excluded_coins") is not None:
|
|
92
92
|
excluded_coins: list[Coin] = [Coin.from_json_dict(c) for c in json_dict["excluded_coins"]]
|
|
93
93
|
excluded_coin_ids: list[str] = [c.name().hex() for c in excluded_coins]
|
|
94
94
|
if "excluded_coin_ids" in json_dict:
|
|
@@ -98,7 +98,8 @@ class CoinSelectionConfigLoader(Streamable):
|
|
|
98
98
|
return super().from_json_dict(json_dict)
|
|
99
99
|
|
|
100
100
|
# This function is purely for ergonomics
|
|
101
|
-
|
|
101
|
+
# But creates a small linting complication
|
|
102
|
+
def override(self, **kwargs: Any) -> Self:
|
|
102
103
|
return dataclasses.replace(self, **kwargs)
|
|
103
104
|
|
|
104
105
|
|
|
@@ -138,10 +139,6 @@ class TXConfigLoader(CoinSelectionConfigLoader):
|
|
|
138
139
|
reuse_puzhash,
|
|
139
140
|
)
|
|
140
141
|
|
|
141
|
-
# This function is purely for ergonomics
|
|
142
|
-
def override(self, **kwargs: Any) -> TXConfigLoader:
|
|
143
|
-
return dataclasses.replace(self, **kwargs)
|
|
144
|
-
|
|
145
142
|
|
|
146
143
|
DEFAULT_COIN_SELECTION_CONFIG = CoinSelectionConfig(uint64(0), uint64(DEFAULT_CONSTANTS.MAX_COIN_AMOUNT), [], [])
|
|
147
144
|
DEFAULT_TX_CONFIG = TXConfig(
|
|
@@ -136,8 +136,11 @@ class CRCATWallet(CATWallet):
|
|
|
136
136
|
puzzle_driver: PuzzleInfo,
|
|
137
137
|
name: Optional[str] = None,
|
|
138
138
|
# We're hinting this as Any for mypy by should explore adding this to the wallet protocol and hinting properly
|
|
139
|
-
potential_subclasses: dict[AssetType, Any] =
|
|
139
|
+
potential_subclasses: Optional[dict[AssetType, Any]] = None,
|
|
140
140
|
) -> Any:
|
|
141
|
+
if potential_subclasses is None:
|
|
142
|
+
potential_subclasses = {}
|
|
143
|
+
|
|
141
144
|
cr_layer: Optional[PuzzleInfo] = puzzle_driver.also()
|
|
142
145
|
if cr_layer is None: # pragma: no cover
|
|
143
146
|
raise ValueError("create_from_puzzle_info called on CRCATWallet with a non CR-CAT puzzle driver")
|
|
@@ -250,6 +253,7 @@ class CRCATWallet(CATWallet):
|
|
|
250
253
|
confirmed_at_height=height,
|
|
251
254
|
created_at_time=uint64(created_timestamp),
|
|
252
255
|
to_puzzle_hash=hint_dict[coin.name()],
|
|
256
|
+
to_address=self.wallet_state_manager.encode_puzzle_hash(hint_dict[coin.name()]),
|
|
253
257
|
amount=uint64(coin.amount),
|
|
254
258
|
fee_amount=uint64(0),
|
|
255
259
|
confirmed=True,
|
|
@@ -262,7 +266,7 @@ class CRCATWallet(CATWallet):
|
|
|
262
266
|
trade_id=None,
|
|
263
267
|
type=uint32(TransactionType.INCOMING_CRCAT_PENDING),
|
|
264
268
|
name=coin.name(),
|
|
265
|
-
memos=
|
|
269
|
+
memos=memos,
|
|
266
270
|
valid_times=ConditionValidTimes(),
|
|
267
271
|
)
|
|
268
272
|
await self.wallet_state_manager.tx_store.add_transaction_record(tx_record)
|
|
@@ -657,8 +661,9 @@ class CRCATWallet(CATWallet):
|
|
|
657
661
|
tx_list = [
|
|
658
662
|
TransactionRecord(
|
|
659
663
|
confirmed_at_height=uint32(0),
|
|
660
|
-
created_at_time=uint64(
|
|
664
|
+
created_at_time=uint64(time.time()),
|
|
661
665
|
to_puzzle_hash=payment.puzzle_hash,
|
|
666
|
+
to_address=self.wallet_state_manager.encode_puzzle_hash(payment.puzzle_hash),
|
|
662
667
|
amount=payment.amount,
|
|
663
668
|
fee_amount=fee,
|
|
664
669
|
confirmed=False,
|
|
@@ -671,7 +676,7 @@ class CRCATWallet(CATWallet):
|
|
|
671
676
|
trade_id=None,
|
|
672
677
|
type=uint32(TransactionType.OUTGOING_TX.value),
|
|
673
678
|
name=spend_bundle.name() if i == 0 else payment.to_program().get_tree_hash(),
|
|
674
|
-
memos=
|
|
679
|
+
memos=compute_memos(spend_bundle),
|
|
675
680
|
valid_times=parse_timelock_info(extra_conditions),
|
|
676
681
|
)
|
|
677
682
|
for i, payment in enumerate(payments)
|
|
@@ -788,8 +793,9 @@ class CRCATWallet(CATWallet):
|
|
|
788
793
|
interface.side_effects.transactions.append(
|
|
789
794
|
TransactionRecord(
|
|
790
795
|
confirmed_at_height=uint32(0),
|
|
791
|
-
created_at_time=uint64(
|
|
796
|
+
created_at_time=uint64(time.time()),
|
|
792
797
|
to_puzzle_hash=to_puzzle_hash,
|
|
798
|
+
to_address=self.wallet_state_manager.encode_puzzle_hash(to_puzzle_hash),
|
|
793
799
|
amount=uint64(sum(c.amount for c in coins)),
|
|
794
800
|
fee_amount=fee,
|
|
795
801
|
confirmed=False,
|
|
@@ -802,7 +808,7 @@ class CRCATWallet(CATWallet):
|
|
|
802
808
|
trade_id=None,
|
|
803
809
|
type=uint32(TransactionType.INCOMING_TX.value),
|
|
804
810
|
name=claim_bundle.name(),
|
|
805
|
-
memos=
|
|
811
|
+
memos=compute_memos(claim_bundle),
|
|
806
812
|
valid_times=parse_timelock_info(extra_conditions),
|
|
807
813
|
)
|
|
808
814
|
)
|
|
@@ -200,7 +200,7 @@ class VCWallet:
|
|
|
200
200
|
puzzle = await self.standard_wallet.puzzle_for_puzzle_hash(coin.puzzle_hash)
|
|
201
201
|
coin_spends.append(make_spend(coin, puzzle, solution))
|
|
202
202
|
spend_bundle = WalletSpendBundle(coin_spends, G2Element())
|
|
203
|
-
now = uint64(
|
|
203
|
+
now = uint64(time.time())
|
|
204
204
|
add_list: list[Coin] = list(spend_bundle.additions())
|
|
205
205
|
rem_list: list[Coin] = list(spend_bundle.removals())
|
|
206
206
|
vc_record: VCRecord = VCRecord(vc, uint32(0))
|
|
@@ -210,6 +210,7 @@ class VCWallet:
|
|
|
210
210
|
confirmed_at_height=uint32(0),
|
|
211
211
|
created_at_time=now,
|
|
212
212
|
to_puzzle_hash=inner_puzzle_hash,
|
|
213
|
+
to_address=self.wallet_state_manager.encode_puzzle_hash(inner_puzzle_hash),
|
|
213
214
|
amount=uint64(1),
|
|
214
215
|
fee_amount=uint64(fee),
|
|
215
216
|
confirmed=False,
|
|
@@ -222,7 +223,7 @@ class VCWallet:
|
|
|
222
223
|
trade_id=None,
|
|
223
224
|
type=uint32(TransactionType.OUTGOING_TX.value),
|
|
224
225
|
name=spend_bundle.name(),
|
|
225
|
-
memos=
|
|
226
|
+
memos=compute_memos(spend_bundle),
|
|
226
227
|
valid_times=parse_timelock_info(extra_conditions),
|
|
227
228
|
)
|
|
228
229
|
)
|
|
@@ -339,7 +340,7 @@ class VCWallet:
|
|
|
339
340
|
) # pragma: no cover
|
|
340
341
|
add_list: list[Coin] = list(spend_bundle.additions())
|
|
341
342
|
rem_list: list[Coin] = list(spend_bundle.removals())
|
|
342
|
-
now = uint64(
|
|
343
|
+
now = uint64(time.time())
|
|
343
344
|
|
|
344
345
|
async with action_scope.use() as interface:
|
|
345
346
|
interface.side_effects.transactions.append(
|
|
@@ -347,6 +348,7 @@ class VCWallet:
|
|
|
347
348
|
confirmed_at_height=uint32(0),
|
|
348
349
|
created_at_time=now,
|
|
349
350
|
to_puzzle_hash=puzzle_hashes[0],
|
|
351
|
+
to_address=self.wallet_state_manager.encode_puzzle_hash(puzzle_hashes[0]),
|
|
350
352
|
amount=uint64(1),
|
|
351
353
|
fee_amount=uint64(fee),
|
|
352
354
|
confirmed=False,
|
|
@@ -359,7 +361,7 @@ class VCWallet:
|
|
|
359
361
|
trade_id=None,
|
|
360
362
|
type=uint32(TransactionType.OUTGOING_TX.value),
|
|
361
363
|
name=spend_bundle.name(),
|
|
362
|
-
memos=
|
|
364
|
+
memos=compute_memos(spend_bundle),
|
|
363
365
|
valid_times=parse_timelock_info(extra_conditions),
|
|
364
366
|
)
|
|
365
367
|
)
|
|
@@ -400,11 +402,6 @@ class VCWallet:
|
|
|
400
402
|
)
|
|
401
403
|
return
|
|
402
404
|
|
|
403
|
-
recovery_info: Optional[tuple[bytes32, bytes32, uint64]] = await did_wallet.get_info_for_recovery()
|
|
404
|
-
if recovery_info is None:
|
|
405
|
-
raise RuntimeError("DID could not currently be accessed while trying to revoke VC") # pragma: no cover
|
|
406
|
-
_, provider_inner_puzhash, _ = recovery_info
|
|
407
|
-
|
|
408
405
|
# Generate spend specific nonce
|
|
409
406
|
coins = {await did_wallet.get_coin()}
|
|
410
407
|
coins.add(vc.coin)
|
|
@@ -421,7 +418,10 @@ class VCWallet:
|
|
|
421
418
|
)
|
|
422
419
|
|
|
423
420
|
# Assemble final bundle
|
|
424
|
-
|
|
421
|
+
assert did_wallet.did_info.current_inner is not None
|
|
422
|
+
expected_did_announcement, vc_spend = vc.activate_backdoor(
|
|
423
|
+
did_wallet.did_info.current_inner.get_tree_hash(), announcement_nonce=nonce
|
|
424
|
+
)
|
|
425
425
|
await did_wallet.create_message_spend(
|
|
426
426
|
action_scope,
|
|
427
427
|
extra_conditions=(*extra_conditions, expected_did_announcement, vc_announcement),
|
|
@@ -455,12 +455,10 @@ class VCWallet:
|
|
|
455
455
|
crcat_spends.append(crcat_spend)
|
|
456
456
|
if spend in offer._bundle.coin_spends:
|
|
457
457
|
spends_to_fix[spend.coin.name()] = spend
|
|
458
|
-
|
|
459
|
-
if spend in offer._bundle.coin_spends: # pragma: no cover
|
|
460
|
-
other_spends.append(spend)
|
|
461
|
-
else:
|
|
462
|
-
if spend in offer._bundle.coin_spends:
|
|
458
|
+
elif spend in offer._bundle.coin_spends: # pragma: no cover
|
|
463
459
|
other_spends.append(spend)
|
|
460
|
+
elif spend in offer._bundle.coin_spends:
|
|
461
|
+
other_spends.append(spend)
|
|
464
462
|
|
|
465
463
|
# Figure out what VC announcements are needed
|
|
466
464
|
announcements_to_make: dict[bytes32, list[CreatePuzzleAnnouncement]] = {}
|
chia/wallet/wallet.py
CHANGED
|
@@ -420,7 +420,7 @@ class Wallet:
|
|
|
420
420
|
assert len(transaction) > 0
|
|
421
421
|
spend_bundle = WalletSpendBundle(transaction, G2Element())
|
|
422
422
|
|
|
423
|
-
now = uint64(
|
|
423
|
+
now = uint64(time.time())
|
|
424
424
|
add_list: list[Coin] = list(spend_bundle.additions())
|
|
425
425
|
rem_list: list[Coin] = list(spend_bundle.removals())
|
|
426
426
|
|
|
@@ -431,12 +431,14 @@ class Wallet:
|
|
|
431
431
|
else:
|
|
432
432
|
assert output_amount == input_amount
|
|
433
433
|
|
|
434
|
+
to_ph = add_list[0].puzzle_hash if len(add_list) > 0 else bytes32.zeros
|
|
434
435
|
async with action_scope.use() as interface:
|
|
435
436
|
interface.side_effects.transactions.append(
|
|
436
437
|
TransactionRecord(
|
|
437
438
|
confirmed_at_height=uint32(0),
|
|
438
439
|
created_at_time=now,
|
|
439
|
-
to_puzzle_hash=
|
|
440
|
+
to_puzzle_hash=to_ph,
|
|
441
|
+
to_address=self.wallet_state_manager.encode_puzzle_hash(to_ph),
|
|
440
442
|
amount=uint64(non_change_amount),
|
|
441
443
|
fee_amount=uint64(fee),
|
|
442
444
|
confirmed=False,
|
|
@@ -449,7 +451,7 @@ class Wallet:
|
|
|
449
451
|
trade_id=None,
|
|
450
452
|
type=uint32(TransactionType.OUTGOING_TX.value),
|
|
451
453
|
name=spend_bundle.name(),
|
|
452
|
-
memos=
|
|
454
|
+
memos=compute_memos(spend_bundle),
|
|
453
455
|
valid_times=parse_timelock_info(extra_conditions),
|
|
454
456
|
)
|
|
455
457
|
)
|
chia/wallet/wallet_node.py
CHANGED
|
@@ -911,14 +911,13 @@ class WalletNode:
|
|
|
911
911
|
):
|
|
912
912
|
# only one peer told us to rollback so only clear for that peer
|
|
913
913
|
await self.perform_atomic_rollback(fork_height, cache=cache)
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
cache.rollback_race_cache(fork_height=fork_height)
|
|
914
|
+
elif fork_height is not None:
|
|
915
|
+
# only one peer told us to rollback so only clear for that peer
|
|
916
|
+
cache.clear_after_height(fork_height)
|
|
917
|
+
self.log.info(f"clear_after_height {fork_height} for peer {peer}")
|
|
918
|
+
if not trusted:
|
|
919
|
+
# Rollback race_cache not in clear_after_height to avoid applying rollbacks from new peak processing
|
|
920
|
+
cache.rollback_race_cache(fork_height=fork_height)
|
|
922
921
|
|
|
923
922
|
all_tasks: list[asyncio.Task[None]] = []
|
|
924
923
|
target_concurrent_tasks: int = 30
|
|
@@ -989,18 +988,17 @@ class WalletNode:
|
|
|
989
988
|
)
|
|
990
989
|
if not await self.wallet_state_manager.add_coin_states(batch.entries, peer, fork_height):
|
|
991
990
|
return False
|
|
991
|
+
elif fork_height is not None:
|
|
992
|
+
cache.add_states_to_race_cache(batch.entries)
|
|
992
993
|
else:
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
await asyncio.
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
await asyncio.gather(*all_tasks)
|
|
1002
|
-
return False
|
|
1003
|
-
all_tasks.append(create_referenced_task(validate_and_add(batch.entries, idx)))
|
|
994
|
+
while len(all_tasks) >= target_concurrent_tasks:
|
|
995
|
+
all_tasks = [task for task in all_tasks if not task.done()]
|
|
996
|
+
await asyncio.sleep(0.1)
|
|
997
|
+
if self._shut_down:
|
|
998
|
+
self.log.info("Terminating receipt and validation due to shut down request")
|
|
999
|
+
await asyncio.gather(*all_tasks)
|
|
1000
|
+
return False
|
|
1001
|
+
all_tasks.append(create_referenced_task(validate_and_add(batch.entries, idx)))
|
|
1004
1002
|
idx += len(batch.entries)
|
|
1005
1003
|
|
|
1006
1004
|
still_connected = self._server is not None and peer.peer_node_id in self.server.all_connections
|
|
@@ -1158,9 +1156,8 @@ class WalletNode:
|
|
|
1158
1156
|
await self.new_peak_from_trusted(
|
|
1159
1157
|
new_peak_hb, latest_timestamp, peer, new_peak.fork_point_with_previous_peak
|
|
1160
1158
|
)
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
return
|
|
1159
|
+
elif not await self.new_peak_from_untrusted(new_peak_hb, peer):
|
|
1160
|
+
return
|
|
1164
1161
|
|
|
1165
1162
|
# todo why do we call this if there was an exception / the sync is not finished
|
|
1166
1163
|
async with self.wallet_state_manager.lock:
|
|
@@ -1272,10 +1269,9 @@ class WalletNode:
|
|
|
1272
1269
|
)
|
|
1273
1270
|
if success:
|
|
1274
1271
|
self.synced_peers.add(peer.peer_node_id)
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
return False
|
|
1272
|
+
elif peak_hb is not None and new_peak_hb.weight <= peak_hb.weight:
|
|
1273
|
+
# Don't process blocks at the same weight
|
|
1274
|
+
return False
|
|
1279
1275
|
|
|
1280
1276
|
# For every block, we need to apply the cache from race_cache
|
|
1281
1277
|
for potential_height in range(backtrack_fork_height + 1, new_peak_hb.height + 1):
|
|
@@ -1663,10 +1659,9 @@ class WalletNode:
|
|
|
1663
1659
|
if not prev_block_rc_hash == reversed_slots[-1].reward_chain.end_of_slot_vdf.challenge:
|
|
1664
1660
|
self.log.error("Failed validation 7")
|
|
1665
1661
|
return False
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
return False
|
|
1662
|
+
elif not prev_block_rc_hash == reward_chain_hash:
|
|
1663
|
+
self.log.error("Failed validation 8")
|
|
1664
|
+
return False
|
|
1670
1665
|
blocks_to_cache.append((reward_chain_hash, en_block.height))
|
|
1671
1666
|
|
|
1672
1667
|
agg_sig: G2Element = AugSchemeMPL.aggregate([sig for (_, _, sig) in pk_m_sig])
|