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/data_layer/data_layer.py
CHANGED
|
@@ -15,6 +15,7 @@ from pathlib import Path
|
|
|
15
15
|
from typing import TYPE_CHECKING, Any, ClassVar, Optional, Union, cast, final
|
|
16
16
|
|
|
17
17
|
import aiohttp
|
|
18
|
+
from chia_rs.datalayer import ProofOfInclusion, ProofOfInclusionLayer
|
|
18
19
|
from chia_rs.sized_bytes import bytes32
|
|
19
20
|
from chia_rs.sized_ints import uint32, uint64
|
|
20
21
|
|
|
@@ -32,10 +33,9 @@ from chia.data_layer.data_layer_util import (
|
|
|
32
33
|
PluginRemote,
|
|
33
34
|
PluginStatus,
|
|
34
35
|
Proof,
|
|
35
|
-
ProofOfInclusion,
|
|
36
|
-
ProofOfInclusionLayer,
|
|
37
36
|
Root,
|
|
38
37
|
ServerInfo,
|
|
38
|
+
Side,
|
|
39
39
|
Status,
|
|
40
40
|
StoreProofs,
|
|
41
41
|
Subscription,
|
|
@@ -43,18 +43,16 @@ from chia.data_layer.data_layer_util import (
|
|
|
43
43
|
TerminalNode,
|
|
44
44
|
Unspecified,
|
|
45
45
|
UnsubscribeData,
|
|
46
|
+
calculate_sibling_sides_integer,
|
|
47
|
+
collect_sibling_hashes,
|
|
48
|
+
get_delta_filename_path,
|
|
49
|
+
get_full_tree_filename_path,
|
|
46
50
|
leaf_hash,
|
|
47
51
|
unspecified,
|
|
48
52
|
)
|
|
49
53
|
from chia.data_layer.data_layer_wallet import DataLayerWallet, Mirror, verify_offer
|
|
50
54
|
from chia.data_layer.data_store import DataStore
|
|
51
|
-
from chia.data_layer.download_data import
|
|
52
|
-
delete_full_file_if_exists,
|
|
53
|
-
get_delta_filename_path,
|
|
54
|
-
get_full_tree_filename_path,
|
|
55
|
-
insert_from_delta_file,
|
|
56
|
-
write_files_for_root,
|
|
57
|
-
)
|
|
55
|
+
from chia.data_layer.download_data import delete_full_file_if_exists, insert_from_delta_file, write_files_for_root
|
|
58
56
|
from chia.data_layer.singleton_record import SingletonRecord
|
|
59
57
|
from chia.protocols.outbound_message import NodeType
|
|
60
58
|
from chia.rpc.rpc_server import StateChangedProtocol, default_get_connections
|
|
@@ -120,6 +118,8 @@ class DataLayer:
|
|
|
120
118
|
_protocol_check: ClassVar[RpcServiceProtocol] = cast("DataLayer", None)
|
|
121
119
|
|
|
122
120
|
db_path: Path
|
|
121
|
+
merkle_blobs_path: Path
|
|
122
|
+
key_value_blobs_path: Path
|
|
123
123
|
config: dict[str, Any]
|
|
124
124
|
root_path: Path
|
|
125
125
|
log: logging.Logger
|
|
@@ -189,6 +189,12 @@ class DataLayer:
|
|
|
189
189
|
server_files_replaced = server_files_path_from_config(config, root_path)
|
|
190
190
|
|
|
191
191
|
db_path_replaced: str = config["database_path"].replace("CHALLENGE", config["selected_network"])
|
|
192
|
+
merkle_blobs_path_replaced: str = config.get(
|
|
193
|
+
"merkle_blobs_path", "data_layer/db/merkle_blobs_CHALLENGE"
|
|
194
|
+
).replace("CHALLENGE", config["selected_network"])
|
|
195
|
+
key_value_blobs_path_replaced: str = config.get(
|
|
196
|
+
"key_value_blobs_path", "data_layer/db/key_value_blobs_CHALLENGE"
|
|
197
|
+
).replace("CHALLENGE", config["selected_network"])
|
|
192
198
|
|
|
193
199
|
self = cls(
|
|
194
200
|
config=config,
|
|
@@ -196,6 +202,8 @@ class DataLayer:
|
|
|
196
202
|
wallet_rpc_init=wallet_rpc_init,
|
|
197
203
|
log=logging.getLogger(name if name is None else __name__),
|
|
198
204
|
db_path=path_from_root(root_path, db_path_replaced),
|
|
205
|
+
merkle_blobs_path=path_from_root(root_path, merkle_blobs_path_replaced),
|
|
206
|
+
key_value_blobs_path=path_from_root(root_path, key_value_blobs_path_replaced),
|
|
199
207
|
server_files_location=server_files_replaced,
|
|
200
208
|
downloaders=downloaders,
|
|
201
209
|
uploaders=uploaders,
|
|
@@ -209,6 +217,8 @@ class DataLayer:
|
|
|
209
217
|
)
|
|
210
218
|
|
|
211
219
|
self.db_path.parent.mkdir(parents=True, exist_ok=True)
|
|
220
|
+
self.merkle_blobs_path.mkdir(parents=True, exist_ok=True)
|
|
221
|
+
self.key_value_blobs_path.mkdir(parents=True, exist_ok=True)
|
|
212
222
|
self.server_files_location.mkdir(parents=True, exist_ok=True)
|
|
213
223
|
|
|
214
224
|
return self
|
|
@@ -219,11 +229,18 @@ class DataLayer:
|
|
|
219
229
|
if self.config.get("log_sqlite_cmds", False):
|
|
220
230
|
sql_log_path = path_from_root(self.root_path, "log/data_sql.log")
|
|
221
231
|
self.log.info(f"logging SQL commands to {sql_log_path}")
|
|
222
|
-
|
|
223
|
-
|
|
232
|
+
cache_capacity = self.config.get("merkle_blobs_cache_size", 1)
|
|
233
|
+
|
|
234
|
+
async with DataStore.managed(
|
|
235
|
+
database=self.db_path,
|
|
236
|
+
merkle_blobs_path=self.merkle_blobs_path,
|
|
237
|
+
key_value_blobs_path=self.key_value_blobs_path,
|
|
238
|
+
sql_log_path=sql_log_path,
|
|
239
|
+
cache_capacity=cache_capacity,
|
|
240
|
+
) as self._data_store:
|
|
224
241
|
self._wallet_rpc = await self.wallet_rpc_init
|
|
225
242
|
|
|
226
|
-
await self._data_store.migrate_db()
|
|
243
|
+
await self._data_store.migrate_db(self.server_files_location)
|
|
227
244
|
self.periodically_manage_data_task = create_referenced_task(self.periodically_manage_data())
|
|
228
245
|
try:
|
|
229
246
|
yield
|
|
@@ -278,7 +295,6 @@ class DataLayer:
|
|
|
278
295
|
) -> Optional[TransactionRecord]:
|
|
279
296
|
status = Status.PENDING if submit_on_chain else Status.PENDING_BATCH
|
|
280
297
|
await self.batch_insert(store_id=store_id, changelist=changelist, status=status)
|
|
281
|
-
await self.data_store.clean_node_table()
|
|
282
298
|
|
|
283
299
|
if submit_on_chain:
|
|
284
300
|
return await self.publish_update(store_id=store_id, fee=fee)
|
|
@@ -312,8 +328,6 @@ class DataLayer:
|
|
|
312
328
|
status = Status.PENDING if submit_on_chain else Status.PENDING_BATCH
|
|
313
329
|
await self.batch_insert(store_id=store_id, changelist=changelist, status=status)
|
|
314
330
|
|
|
315
|
-
await self.data_store.clean_node_table()
|
|
316
|
-
|
|
317
331
|
if submit_on_chain:
|
|
318
332
|
updates: list[LauncherRootPair] = []
|
|
319
333
|
for store_id in store_ids:
|
|
@@ -570,7 +584,6 @@ class DataLayer:
|
|
|
570
584
|
and pending_root.status == Status.PENDING
|
|
571
585
|
):
|
|
572
586
|
await self.data_store.change_root_status(pending_root, Status.COMMITTED)
|
|
573
|
-
await self.data_store.build_ancestor_table_for_latest_root(store_id=store_id)
|
|
574
587
|
await self.data_store.clear_pending_roots(store_id=store_id)
|
|
575
588
|
|
|
576
589
|
async def fetch_and_validate(self, store_id: bytes32) -> None:
|
|
@@ -877,8 +890,6 @@ class DataLayer:
|
|
|
877
890
|
# stop tracking first, then unsubscribe from the data store
|
|
878
891
|
await self.wallet_rpc.dl_stop_tracking(DLStopTracking(store_id))
|
|
879
892
|
await self.data_store.unsubscribe(store_id)
|
|
880
|
-
if not retain_data:
|
|
881
|
-
await self.data_store.delete_store_data(store_id)
|
|
882
893
|
|
|
883
894
|
self.log.info(f"Unsubscribed to {store_id}")
|
|
884
895
|
for file_path in paths:
|
|
@@ -1116,7 +1127,7 @@ class DataLayer:
|
|
|
1116
1127
|
node_hash=proof_of_inclusion.node_hash,
|
|
1117
1128
|
layers=tuple(
|
|
1118
1129
|
Layer(
|
|
1119
|
-
other_hash_side=layer.other_hash_side,
|
|
1130
|
+
other_hash_side=Side(layer.other_hash_side),
|
|
1120
1131
|
other_hash=layer.other_hash,
|
|
1121
1132
|
combined_hash=layer.combined_hash,
|
|
1122
1133
|
)
|
|
@@ -1183,7 +1194,6 @@ class DataLayer:
|
|
|
1183
1194
|
|
|
1184
1195
|
verify_offer(maker=offer.maker, taker=offer.taker, summary=summary)
|
|
1185
1196
|
|
|
1186
|
-
await self.data_store.clean_node_table()
|
|
1187
1197
|
return offer
|
|
1188
1198
|
|
|
1189
1199
|
async def take_offer(
|
|
@@ -1216,12 +1226,12 @@ class DataLayer:
|
|
|
1216
1226
|
for layer in proof.layers
|
|
1217
1227
|
]
|
|
1218
1228
|
proof_of_inclusion = ProofOfInclusion(node_hash=proof.node_hash, layers=layers)
|
|
1219
|
-
sibling_sides_integer = proof_of_inclusion
|
|
1229
|
+
sibling_sides_integer = calculate_sibling_sides_integer(proof_of_inclusion)
|
|
1220
1230
|
proofs_of_inclusion.append(
|
|
1221
1231
|
(
|
|
1222
1232
|
root.hex(),
|
|
1223
1233
|
str(sibling_sides_integer),
|
|
1224
|
-
["0x" + sibling_hash.hex() for sibling_hash in proof_of_inclusion
|
|
1234
|
+
["0x" + sibling_hash.hex() for sibling_hash in collect_sibling_hashes(proof_of_inclusion)],
|
|
1225
1235
|
)
|
|
1226
1236
|
)
|
|
1227
1237
|
|
|
@@ -1242,8 +1252,6 @@ class DataLayer:
|
|
|
1242
1252
|
},
|
|
1243
1253
|
}
|
|
1244
1254
|
|
|
1245
|
-
await self.data_store.clean_node_table()
|
|
1246
|
-
|
|
1247
1255
|
# Excluding wallet from transaction since failures in the wallet may occur
|
|
1248
1256
|
# after the transaction is submitted to the chain. If we roll back data we
|
|
1249
1257
|
# may lose published data.
|
|
@@ -38,6 +38,11 @@ class KeyNotFoundError(Exception):
|
|
|
38
38
|
super().__init__(f"Key not found: {key.hex()}")
|
|
39
39
|
|
|
40
40
|
|
|
41
|
+
class MerkleBlobNotFoundError(Exception):
|
|
42
|
+
def __init__(self, root_hash: bytes32) -> None:
|
|
43
|
+
super().__init__(f"Cannot find merkle blob for root hash {root_hash.hex()}")
|
|
44
|
+
|
|
45
|
+
|
|
41
46
|
class OfferIntegrityError(Exception):
|
|
42
47
|
pass
|
|
43
48
|
|
|
@@ -609,7 +609,7 @@ class DataLayerRpcApi:
|
|
|
609
609
|
for key in request.keys:
|
|
610
610
|
node = await self.service.data_store.get_node_by_key(store_id=request.store_id, key=key)
|
|
611
611
|
pi = await self.service.data_store.get_proof_of_inclusion_by_hash(
|
|
612
|
-
store_id=request.store_id, node_hash=node.hash
|
|
612
|
+
store_id=request.store_id, node_hash=node.hash
|
|
613
613
|
)
|
|
614
614
|
|
|
615
615
|
proof = HashOnlyProof.from_key_value(
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from chia.data_layer.data_layer import DataLayer
|
|
4
|
+
from chia.data_layer.data_layer_api import DataLayerAPI
|
|
5
|
+
from chia.data_layer.data_layer_rpc_api import DataLayerRpcApi
|
|
6
|
+
from chia.server.start_service import Service
|
|
7
|
+
|
|
8
|
+
DataLayerService = Service[DataLayer, DataLayerAPI, DataLayerRpcApi]
|
|
@@ -4,9 +4,11 @@ import dataclasses
|
|
|
4
4
|
from dataclasses import dataclass, field
|
|
5
5
|
from enum import Enum, IntEnum
|
|
6
6
|
from hashlib import sha256
|
|
7
|
+
from pathlib import Path
|
|
7
8
|
from typing import TYPE_CHECKING, Any, Optional, Union
|
|
8
9
|
|
|
9
10
|
import aiosqlite
|
|
11
|
+
from chia_rs.datalayer import ProofOfInclusion, ProofOfInclusionLayer
|
|
10
12
|
from chia_rs.sized_bytes import bytes32
|
|
11
13
|
from chia_rs.sized_ints import uint8, uint64
|
|
12
14
|
from typing_extensions import final
|
|
@@ -48,6 +50,45 @@ def key_hash(key: bytes) -> bytes32:
|
|
|
48
50
|
return bytes32(sha256(b"\1" + key).digest())
|
|
49
51
|
|
|
50
52
|
|
|
53
|
+
# TODO: allow Optional[bytes32] for `node_hash` and resolve the filenames here
|
|
54
|
+
def get_full_tree_filename(store_id: bytes32, node_hash: bytes32, generation: int, group_by_store: bool = False) -> str:
|
|
55
|
+
if group_by_store:
|
|
56
|
+
return f"{store_id}/{node_hash}-full-{generation}-v1.0.dat"
|
|
57
|
+
return f"{store_id}-{node_hash}-full-{generation}-v1.0.dat"
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def get_delta_filename(store_id: bytes32, node_hash: bytes32, generation: int, group_by_store: bool = False) -> str:
|
|
61
|
+
if group_by_store:
|
|
62
|
+
return f"{store_id}/{node_hash}-delta-{generation}-v1.0.dat"
|
|
63
|
+
return f"{store_id}-{node_hash}-delta-{generation}-v1.0.dat"
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def get_full_tree_filename_path(
|
|
67
|
+
foldername: Path,
|
|
68
|
+
store_id: bytes32,
|
|
69
|
+
node_hash: bytes32,
|
|
70
|
+
generation: int,
|
|
71
|
+
group_by_store: bool = False,
|
|
72
|
+
) -> Path:
|
|
73
|
+
if group_by_store:
|
|
74
|
+
path = foldername.joinpath(f"{store_id}")
|
|
75
|
+
return path.joinpath(f"{node_hash}-full-{generation}-v1.0.dat")
|
|
76
|
+
return foldername.joinpath(f"{store_id}-{node_hash}-full-{generation}-v1.0.dat")
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def get_delta_filename_path(
|
|
80
|
+
foldername: Path,
|
|
81
|
+
store_id: bytes32,
|
|
82
|
+
node_hash: bytes32,
|
|
83
|
+
generation: int,
|
|
84
|
+
group_by_store: bool = False,
|
|
85
|
+
) -> Path:
|
|
86
|
+
if group_by_store:
|
|
87
|
+
path = foldername.joinpath(f"{store_id}")
|
|
88
|
+
return path.joinpath(f"{node_hash}-delta-{generation}-v1.0.dat")
|
|
89
|
+
return foldername.joinpath(f"{store_id}-{node_hash}-delta-{generation}-v1.0.dat")
|
|
90
|
+
|
|
91
|
+
|
|
51
92
|
@dataclasses.dataclass(frozen=True)
|
|
52
93
|
class PaginationData:
|
|
53
94
|
total_pages: int
|
|
@@ -94,7 +135,6 @@ async def _dot_dump(
|
|
|
94
135
|
root_hash: bytes32,
|
|
95
136
|
) -> str:
|
|
96
137
|
terminal_nodes = await data_store.get_keys_values(store_id=store_id, root_hash=root_hash)
|
|
97
|
-
internal_nodes = await data_store.get_internal_nodes(store_id=store_id, root_hash=root_hash)
|
|
98
138
|
|
|
99
139
|
n = 8
|
|
100
140
|
|
|
@@ -108,16 +148,7 @@ async def _dot_dump(
|
|
|
108
148
|
value = terminal_node.value.hex()
|
|
109
149
|
dot_nodes.append(f"""node_{hash} [shape=box, label="{hash[:n]}\\nkey: {key}\\nvalue: {value}"];""")
|
|
110
150
|
|
|
111
|
-
for
|
|
112
|
-
hash = internal_node.hash.hex()
|
|
113
|
-
left = internal_node.left_hash.hex()
|
|
114
|
-
right = internal_node.right_hash.hex()
|
|
115
|
-
dot_nodes.append(f"""node_{hash} [label="{hash[:n]}"]""")
|
|
116
|
-
dot_connections.append(f"""node_{hash} -> node_{left} [label="L"];""")
|
|
117
|
-
dot_connections.append(f"""node_{hash} -> node_{right} [label="R"];""")
|
|
118
|
-
dot_pair_boxes.append(
|
|
119
|
-
f"node [shape = box]; {{rank = same; node_{left}->node_{right}[style=invis]; rankdir = LR}}"
|
|
120
|
-
)
|
|
151
|
+
# TODO: implement for internal nodes. currently this prints only terminal nodes
|
|
121
152
|
|
|
122
153
|
lines = [
|
|
123
154
|
"digraph {",
|
|
@@ -130,11 +161,6 @@ async def _dot_dump(
|
|
|
130
161
|
return "\n".join(lines)
|
|
131
162
|
|
|
132
163
|
|
|
133
|
-
def row_to_node(row: aiosqlite.Row) -> Node:
|
|
134
|
-
cls = node_type_to_class[row["node_type"]]
|
|
135
|
-
return cls.from_row(row=row)
|
|
136
|
-
|
|
137
|
-
|
|
138
164
|
class Status(IntEnum):
|
|
139
165
|
PENDING = 1
|
|
140
166
|
COMMITTED = 2
|
|
@@ -147,9 +173,9 @@ class NodeType(IntEnum):
|
|
|
147
173
|
|
|
148
174
|
|
|
149
175
|
@final
|
|
150
|
-
class Side(
|
|
151
|
-
LEFT = 0
|
|
152
|
-
RIGHT = 1
|
|
176
|
+
class Side(uint8, Enum):
|
|
177
|
+
LEFT = uint8(0)
|
|
178
|
+
RIGHT = uint8(1)
|
|
153
179
|
|
|
154
180
|
def other(self) -> Side:
|
|
155
181
|
if self == Side.LEFT:
|
|
@@ -208,78 +234,12 @@ class TerminalNode:
|
|
|
208
234
|
)
|
|
209
235
|
|
|
210
236
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
class ProofOfInclusionLayer:
|
|
214
|
-
other_hash_side: Side
|
|
215
|
-
other_hash: bytes32
|
|
216
|
-
combined_hash: bytes32
|
|
217
|
-
|
|
218
|
-
@classmethod
|
|
219
|
-
def from_internal_node(
|
|
220
|
-
cls,
|
|
221
|
-
internal_node: InternalNode,
|
|
222
|
-
traversal_child_hash: bytes32,
|
|
223
|
-
) -> ProofOfInclusionLayer:
|
|
224
|
-
return ProofOfInclusionLayer(
|
|
225
|
-
other_hash_side=internal_node.other_child_side(hash=traversal_child_hash),
|
|
226
|
-
other_hash=internal_node.other_child_hash(hash=traversal_child_hash),
|
|
227
|
-
combined_hash=internal_node.hash,
|
|
228
|
-
)
|
|
229
|
-
|
|
230
|
-
@classmethod
|
|
231
|
-
def from_hashes(cls, primary_hash: bytes32, other_hash_side: Side, other_hash: bytes32) -> ProofOfInclusionLayer:
|
|
232
|
-
combined_hash = calculate_internal_hash(
|
|
233
|
-
hash=primary_hash,
|
|
234
|
-
other_hash_side=other_hash_side,
|
|
235
|
-
other_hash=other_hash,
|
|
236
|
-
)
|
|
237
|
-
|
|
238
|
-
return cls(other_hash_side=other_hash_side, other_hash=other_hash, combined_hash=combined_hash)
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
other_side_to_bit = {Side.LEFT: 1, Side.RIGHT: 0}
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
@dataclass(frozen=True)
|
|
245
|
-
class ProofOfInclusion:
|
|
246
|
-
node_hash: bytes32
|
|
247
|
-
# children before parents
|
|
248
|
-
layers: list[ProofOfInclusionLayer]
|
|
249
|
-
|
|
250
|
-
@property
|
|
251
|
-
def root_hash(self) -> bytes32:
|
|
252
|
-
if len(self.layers) == 0:
|
|
253
|
-
return self.node_hash
|
|
254
|
-
|
|
255
|
-
return self.layers[-1].combined_hash
|
|
256
|
-
|
|
257
|
-
def sibling_sides_integer(self) -> int:
|
|
258
|
-
return sum(other_side_to_bit[layer.other_hash_side] << index for index, layer in enumerate(self.layers))
|
|
259
|
-
|
|
260
|
-
def sibling_hashes(self) -> list[bytes32]:
|
|
261
|
-
return [layer.other_hash for layer in self.layers]
|
|
262
|
-
|
|
263
|
-
def as_program(self) -> Program:
|
|
264
|
-
return Program.to([self.sibling_sides_integer(), self.sibling_hashes()])
|
|
265
|
-
|
|
266
|
-
def valid(self) -> bool:
|
|
267
|
-
existing_hash = self.node_hash
|
|
268
|
-
|
|
269
|
-
for layer in self.layers:
|
|
270
|
-
calculated_hash = calculate_internal_hash(
|
|
271
|
-
hash=existing_hash, other_hash_side=layer.other_hash_side, other_hash=layer.other_hash
|
|
272
|
-
)
|
|
273
|
-
|
|
274
|
-
if calculated_hash != layer.combined_hash:
|
|
275
|
-
return False
|
|
276
|
-
|
|
277
|
-
existing_hash = calculated_hash
|
|
237
|
+
def calculate_sibling_sides_integer(proof: ProofOfInclusion) -> int:
|
|
238
|
+
return sum((1 << index if layer.other_hash_side == Side.LEFT else 0) for index, layer in enumerate(proof.layers))
|
|
278
239
|
|
|
279
|
-
if existing_hash != self.root_hash:
|
|
280
|
-
return False
|
|
281
240
|
|
|
282
|
-
|
|
241
|
+
def collect_sibling_hashes(proof: ProofOfInclusion) -> list[bytes32]:
|
|
242
|
+
return [layer.other_hash for layer in proof.layers]
|
|
283
243
|
|
|
284
244
|
|
|
285
245
|
@final
|
|
@@ -6,13 +6,14 @@ import time
|
|
|
6
6
|
from typing import TYPE_CHECKING, Any, ClassVar, Optional, cast
|
|
7
7
|
|
|
8
8
|
from chia_rs import BlockRecord, CoinSpend, CoinState, G1Element, G2Element
|
|
9
|
+
from chia_rs.datalayer import ProofOfInclusion, ProofOfInclusionLayer
|
|
9
10
|
from chia_rs.sized_bytes import bytes32
|
|
10
11
|
from chia_rs.sized_ints import uint8, uint32, uint64, uint128
|
|
11
12
|
from clvm.EvalError import EvalError
|
|
12
13
|
from typing_extensions import Unpack, final
|
|
13
14
|
|
|
14
15
|
from chia.data_layer.data_layer_errors import LauncherCoinNotFoundError, OfferIntegrityError
|
|
15
|
-
from chia.data_layer.data_layer_util import OfferStore,
|
|
16
|
+
from chia.data_layer.data_layer_util import OfferStore, StoreProofs, leaf_hash
|
|
16
17
|
from chia.data_layer.singleton_record import SingletonRecord
|
|
17
18
|
from chia.server.ws_connection import WSChiaConnection
|
|
18
19
|
from chia.types.blockchain_format.coin import Coin
|
|
@@ -536,8 +537,9 @@ class DataLayerWallet:
|
|
|
536
537
|
|
|
537
538
|
dl_tx = TransactionRecord(
|
|
538
539
|
confirmed_at_height=uint32(0),
|
|
539
|
-
created_at_time=uint64(
|
|
540
|
+
created_at_time=uint64(time.time()),
|
|
540
541
|
to_puzzle_hash=new_puz_hash,
|
|
542
|
+
to_address=self.wallet_state_manager.encode_puzzle_hash(new_puz_hash),
|
|
541
543
|
amount=uint64(singleton_record.lineage_proof.amount),
|
|
542
544
|
fee_amount=fee,
|
|
543
545
|
confirmed=False,
|
|
@@ -545,7 +547,7 @@ class DataLayerWallet:
|
|
|
545
547
|
spend_bundle=spend_bundle,
|
|
546
548
|
additions=spend_bundle.additions(),
|
|
547
549
|
removals=spend_bundle.removals(),
|
|
548
|
-
memos=
|
|
550
|
+
memos=compute_memos(spend_bundle),
|
|
549
551
|
wallet_id=self.id(),
|
|
550
552
|
sent_to=[],
|
|
551
553
|
trade_id=None,
|
|
@@ -589,15 +591,14 @@ class DataLayerWallet:
|
|
|
589
591
|
if coins is None or len(coins) == 0:
|
|
590
592
|
if launcher_id is None:
|
|
591
593
|
raise ValueError("Not enough info to know which DL coin to send")
|
|
594
|
+
elif len(coins) != 1:
|
|
595
|
+
raise ValueError("The wallet can only send one DL coin at a time")
|
|
592
596
|
else:
|
|
593
|
-
|
|
594
|
-
|
|
597
|
+
record = await self.wallet_state_manager.dl_store.get_singleton_record(next(iter(coins)).name())
|
|
598
|
+
if record is None:
|
|
599
|
+
raise ValueError("The specified coin is not a tracked DL")
|
|
595
600
|
else:
|
|
596
|
-
|
|
597
|
-
if record is None:
|
|
598
|
-
raise ValueError("The specified coin is not a tracked DL")
|
|
599
|
-
else:
|
|
600
|
-
launcher_id = record.launcher_id
|
|
601
|
+
launcher_id = record.launcher_id
|
|
601
602
|
|
|
602
603
|
if len(amounts) != 1 or len(puzzle_hashes) != 1:
|
|
603
604
|
raise ValueError("The wallet can only send one DL coin to one place at a time")
|
|
@@ -731,8 +732,9 @@ class DataLayerWallet:
|
|
|
731
732
|
interface.side_effects.transactions.append(
|
|
732
733
|
TransactionRecord(
|
|
733
734
|
confirmed_at_height=uint32(0),
|
|
734
|
-
created_at_time=uint64(
|
|
735
|
+
created_at_time=uint64(time.time()),
|
|
735
736
|
to_puzzle_hash=new_puzhash,
|
|
737
|
+
to_address=self.wallet_state_manager.encode_puzzle_hash(new_puzhash),
|
|
736
738
|
amount=uint64(mirror_coin.amount),
|
|
737
739
|
fee_amount=fee,
|
|
738
740
|
confirmed=False,
|
|
@@ -740,7 +742,7 @@ class DataLayerWallet:
|
|
|
740
742
|
spend_bundle=mirror_bundle,
|
|
741
743
|
additions=mirror_bundle.additions(),
|
|
742
744
|
removals=mirror_bundle.removals(),
|
|
743
|
-
memos=
|
|
745
|
+
memos=compute_memos(mirror_bundle),
|
|
744
746
|
wallet_id=self.id(), # This is being called before the wallet is created so we're using a ID of 0
|
|
745
747
|
sent_to=[],
|
|
746
748
|
trade_id=None,
|
|
@@ -1088,12 +1090,13 @@ class DataLayerWallet:
|
|
|
1088
1090
|
# Create all of the new solutions
|
|
1089
1091
|
new_spends: list[CoinSpend] = []
|
|
1090
1092
|
for spend in offer.coin_spends():
|
|
1093
|
+
spend_to_add = spend
|
|
1091
1094
|
solution = Program.from_serialized(spend.solution)
|
|
1092
1095
|
if match_dl_singleton(spend.puzzle_reveal)[0]:
|
|
1093
1096
|
try:
|
|
1094
1097
|
graftroot: Program = solution.at("rrffrf")
|
|
1095
1098
|
except EvalError:
|
|
1096
|
-
new_spends.append(
|
|
1099
|
+
new_spends.append(spend_to_add)
|
|
1097
1100
|
continue
|
|
1098
1101
|
mod, curried_args_prg = graftroot.uncurry()
|
|
1099
1102
|
if mod == GRAFTROOT_DL_OFFERS:
|
|
@@ -1136,9 +1139,9 @@ class DataLayerWallet:
|
|
|
1136
1139
|
]
|
|
1137
1140
|
)
|
|
1138
1141
|
)
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
new_spends.append(
|
|
1142
|
+
spend_to_add = spend.replace(solution=new_solution.to_serialized())
|
|
1143
|
+
|
|
1144
|
+
new_spends.append(spend_to_add)
|
|
1142
1145
|
|
|
1143
1146
|
return Offer({}, WalletSpendBundle(new_spends, offer.aggregated_signature()), offer.driver_dict)
|
|
1144
1147
|
|
|
@@ -1224,7 +1227,7 @@ def verify_offer(
|
|
|
1224
1227
|
raise OfferIntegrityError("maker: invalid proof of inclusion found")
|
|
1225
1228
|
|
|
1226
1229
|
# TODO: verify each kv hash to the proof's node hash
|
|
1227
|
-
roots = {proof.root_hash for proof in proofs}
|
|
1230
|
+
roots = {proof.root_hash() for proof in proofs}
|
|
1228
1231
|
if len(roots) > 1:
|
|
1229
1232
|
raise OfferIntegrityError("maker: multiple roots referenced for a single store id")
|
|
1230
1233
|
if len(roots) < 1:
|