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.
Files changed (371) hide show
  1. chia/_tests/blockchain/blockchain_test_utils.py +6 -7
  2. chia/_tests/blockchain/test_augmented_chain.py +4 -3
  3. chia/_tests/blockchain/test_blockchain.py +10 -5
  4. chia/_tests/clvm/coin_store.py +1 -1
  5. chia/_tests/cmds/cmd_test_utils.py +84 -97
  6. chia/_tests/cmds/test_dev_gh.py +1 -1
  7. chia/_tests/cmds/test_farm_cmd.py +56 -2
  8. chia/_tests/cmds/wallet/test_consts.py +3 -1
  9. chia/_tests/cmds/wallet/test_did.py +3 -8
  10. chia/_tests/cmds/wallet/test_nft.py +6 -6
  11. chia/_tests/cmds/wallet/test_notifications.py +39 -21
  12. chia/_tests/cmds/wallet/test_vcs.py +2 -1
  13. chia/_tests/cmds/wallet/test_wallet.py +160 -136
  14. chia/_tests/conftest.py +51 -26
  15. chia/_tests/core/cmds/test_wallet.py +4 -3
  16. chia/_tests/core/consensus/test_pot_iterations.py +71 -24
  17. chia/_tests/core/custom_types/test_proof_of_space.py +60 -30
  18. chia/_tests/core/custom_types/test_spend_bundle.py +1 -4
  19. chia/_tests/core/data_layer/conftest.py +7 -2
  20. chia/_tests/core/data_layer/old_format/__init__.py +0 -0
  21. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-005876c1cdc4d5f1726551b207b9f63efc9cd2f72df80a3a26a1ba73d40d6745-delta-23-v1.0.dat +0 -0
  22. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-005876c1cdc4d5f1726551b207b9f63efc9cd2f72df80a3a26a1ba73d40d6745-full-23-v1.0.dat +0 -0
  23. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-01b36e72a975cdc00d6514eea81668d19e8ea3150217ae98cb3361688a016fab-delta-9-v1.0.dat +0 -0
  24. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-01b36e72a975cdc00d6514eea81668d19e8ea3150217ae98cb3361688a016fab-full-9-v1.0.dat +0 -0
  25. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-06147c3b12d73e9b83b686a8c10b4a36a513c8a93c0ff99ae197f06326278be9-delta-5-v1.0.dat +0 -0
  26. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-06147c3b12d73e9b83b686a8c10b4a36a513c8a93c0ff99ae197f06326278be9-full-5-v1.0.dat +0 -0
  27. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-073c051a5934ad3b8db39eee2189e4300e55f48aaa17ff4ae30eeae088ff544a-delta-22-v1.0.dat +0 -0
  28. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-073c051a5934ad3b8db39eee2189e4300e55f48aaa17ff4ae30eeae088ff544a-full-22-v1.0.dat +0 -0
  29. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-0cc077559b9c7b4aefe8f8f591c195e0779bebdf89f2ad8285a00ea5f859d965-delta-1-v1.0.dat +0 -0
  30. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-0cc077559b9c7b4aefe8f8f591c195e0779bebdf89f2ad8285a00ea5f859d965-full-1-v1.0.dat +0 -0
  31. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-16377275567b723b20936d3f1ec0a2fd83f6ac379b922351a5e4c54949069f3b-delta-2-v1.0.dat +0 -0
  32. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-16377275567b723b20936d3f1ec0a2fd83f6ac379b922351a5e4c54949069f3b-full-2-v1.0.dat +0 -0
  33. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-1cb824a7a5f02cd30ac6c38e8f6216780d9bfa2d24811d282a368dcd541438a7-delta-29-v1.0.dat +0 -0
  34. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-1cb824a7a5f02cd30ac6c38e8f6216780d9bfa2d24811d282a368dcd541438a7-full-29-v1.0.dat +0 -0
  35. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-27b89dc4809ebc5a3b87757d35e95e2761d978cf121e44fa2773a5c06e4cc7b5-delta-28-v1.0.dat +0 -0
  36. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-27b89dc4809ebc5a3b87757d35e95e2761d978cf121e44fa2773a5c06e4cc7b5-full-28-v1.0.dat +0 -0
  37. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-28a6b7c134abfaeb0ab58a018313f6c87a61a40a4d9ec9bedf53aa1d12f3ee37-delta-7-v1.0.dat +0 -0
  38. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-28a6b7c134abfaeb0ab58a018313f6c87a61a40a4d9ec9bedf53aa1d12f3ee37-full-7-v1.0.dat +0 -0
  39. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-30a6bfe7cecbeda259a295dc6de3a436357f52388c3b03d86901e7da68565aeb-delta-19-v1.0.dat +0 -0
  40. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-30a6bfe7cecbeda259a295dc6de3a436357f52388c3b03d86901e7da68565aeb-full-19-v1.0.dat +0 -0
  41. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-343a2bf9add798e3ac2e6a571823cf9fa7e8a1bed532143354ead2648bd036ef-delta-10-v1.0.dat +0 -0
  42. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-343a2bf9add798e3ac2e6a571823cf9fa7e8a1bed532143354ead2648bd036ef-full-10-v1.0.dat +0 -0
  43. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-4d90efbc1fb3df324193831ea4a57dd5e10e67d9653343eb18d178272adb0447-delta-17-v1.0.dat +0 -0
  44. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-4d90efbc1fb3df324193831ea4a57dd5e10e67d9653343eb18d178272adb0447-full-17-v1.0.dat +0 -0
  45. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-4dd2ea099e91635c441f40b36d3f84078a2d818d2dc601c7278e72cbdfe3eca8-delta-20-v1.0.dat +0 -0
  46. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-4dd2ea099e91635c441f40b36d3f84078a2d818d2dc601c7278e72cbdfe3eca8-full-20-v1.0.dat +0 -0
  47. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-509effbdca78639023b933ce6c08a0465fb247e1cd5329e9e9c553940e4b6e46-delta-31-v1.0.dat +0 -0
  48. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-509effbdca78639023b933ce6c08a0465fb247e1cd5329e9e9c553940e4b6e46-full-31-v1.0.dat +0 -0
  49. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-5379a4d9ff29c29d1ef0906d22e82c52472753d31806189ab813c43365341b78-delta-40-v1.0.dat +0 -0
  50. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-5379a4d9ff29c29d1ef0906d22e82c52472753d31806189ab813c43365341b78-full-40-v1.0.dat +0 -0
  51. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-55908eda5686a8f89e4c50672cbe893ec1734fb23449dc03325efe7c414f9aa4-delta-49-v1.0.dat +0 -0
  52. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-55908eda5686a8f89e4c50672cbe893ec1734fb23449dc03325efe7c414f9aa4-full-49-v1.0.dat +0 -0
  53. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-57cc2691fb1fb986c99a58bcb0e029d0cd0cff41553d703147c54196d7d9ca63-delta-14-v1.0.dat +0 -0
  54. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-57cc2691fb1fb986c99a58bcb0e029d0cd0cff41553d703147c54196d7d9ca63-full-14-v1.0.dat +0 -0
  55. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-5943bf8ae4f5e59969d8570e4f40a8223299febdcfbcf188b3b3e2ab11044e18-delta-34-v1.0.dat +0 -0
  56. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-5943bf8ae4f5e59969d8570e4f40a8223299febdcfbcf188b3b3e2ab11044e18-full-34-v1.0.dat +0 -0
  57. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6518527b7c939bee60ce6b024cbe90d3b9d8913c56b8ce11a4df5da7ff7db1c8-delta-8-v1.0.dat +0 -0
  58. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6518527b7c939bee60ce6b024cbe90d3b9d8913c56b8ce11a4df5da7ff7db1c8-full-8-v1.0.dat +0 -0
  59. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-66ff26a26620379e14a7c91252d27ee4dbe06ad69a3a390a88642fe757f2b288-delta-45-v1.0.dat +0 -0
  60. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-66ff26a26620379e14a7c91252d27ee4dbe06ad69a3a390a88642fe757f2b288-full-45-v1.0.dat +0 -0
  61. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6bd0a508ee2c4afbe9d4daa811139fd6e54e7f4e16850cbce999fa30f8bdccd2-delta-6-v1.0.dat +0 -0
  62. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6bd0a508ee2c4afbe9d4daa811139fd6e54e7f4e16850cbce999fa30f8bdccd2-full-6-v1.0.dat +0 -0
  63. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6ce850d0d77ca743fcc2fc792747472e5d2c1c0813aa43abbb370554428fc897-delta-48-v1.0.dat +0 -0
  64. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6ce850d0d77ca743fcc2fc792747472e5d2c1c0813aa43abbb370554428fc897-full-48-v1.0.dat +0 -0
  65. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6eb4ca2e1552b156c5969396b49070eb08ad6c96b347359387519be59f7ccaed-delta-26-v1.0.dat +0 -0
  66. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6eb4ca2e1552b156c5969396b49070eb08ad6c96b347359387519be59f7ccaed-full-26-v1.0.dat +0 -0
  67. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-71c797fb7592d3f0a5a20c79ab8497ddaa0fd9ec17712e109d25c91b3f3c76e5-delta-3-v1.0.dat +0 -0
  68. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-71c797fb7592d3f0a5a20c79ab8497ddaa0fd9ec17712e109d25c91b3f3c76e5-full-3-v1.0.dat +0 -0
  69. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-73357026053d5a4969e7a6b9aeeef91c14cc6d5f32fc700fe6d21d2a1b22496c-delta-25-v1.0.dat +0 -0
  70. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-73357026053d5a4969e7a6b9aeeef91c14cc6d5f32fc700fe6d21d2a1b22496c-full-25-v1.0.dat +0 -0
  71. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-7c897e5c46e834ced65bde7de87716acfaa5dffbdb30b5cd9377d8c319df2034-delta-35-v1.0.dat +0 -0
  72. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-7c897e5c46e834ced65bde7de87716acfaa5dffbdb30b5cd9377d8c319df2034-full-35-v1.0.dat +0 -0
  73. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-87b8394d80d08117a5a1cd04ed8a682564eab7197a2c090159863591b5108874-delta-4-v1.0.dat +0 -0
  74. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-87b8394d80d08117a5a1cd04ed8a682564eab7197a2c090159863591b5108874-full-4-v1.0.dat +0 -0
  75. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-89eb40b9cc0921c5f5c3feb20927c13a9ada5760f82d219dcee153b7d400165c-delta-41-v1.0.dat +0 -0
  76. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-89eb40b9cc0921c5f5c3feb20927c13a9ada5760f82d219dcee153b7d400165c-full-41-v1.0.dat +0 -0
  77. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-8b649433156b8c924436cdec9c6de26106fd6f73a0528570f48748f7b40d7f8a-delta-21-v1.0.dat +0 -0
  78. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-8b649433156b8c924436cdec9c6de26106fd6f73a0528570f48748f7b40d7f8a-full-21-v1.0.dat +0 -0
  79. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-8d364023a0834c8c3077e236a465493acbf488e4f9d1f4c6cc230343c10a8f7d-delta-42-v1.0.dat +0 -0
  80. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-8d364023a0834c8c3077e236a465493acbf488e4f9d1f4c6cc230343c10a8f7d-full-42-v1.0.dat +0 -0
  81. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-925689e24a3d98d98676d816cdd8b73e7b2df057d9d4503da9b27bf91d79666c-delta-38-v1.0.dat +0 -0
  82. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-925689e24a3d98d98676d816cdd8b73e7b2df057d9d4503da9b27bf91d79666c-full-38-v1.0.dat +0 -0
  83. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-937be3d428b19f521be4f98faecc3307ae11ee731c76992f417fa4268d13859e-delta-11-v1.0.dat +0 -0
  84. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-937be3d428b19f521be4f98faecc3307ae11ee731c76992f417fa4268d13859e-full-11-v1.0.dat +0 -0
  85. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-97f34af499b79e2111fc296a598fc9654c2467ea038dfea41fd58241fb3642de-delta-32-v1.0.dat +0 -0
  86. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-97f34af499b79e2111fc296a598fc9654c2467ea038dfea41fd58241fb3642de-full-32-v1.0.dat +0 -0
  87. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-9d1b737243b8a1d0022f2b36ac53333c6280354a74d77f2a3642dcab35204e59-delta-33-v1.0.dat +0 -0
  88. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-9d1b737243b8a1d0022f2b36ac53333c6280354a74d77f2a3642dcab35204e59-full-33-v1.0.dat +0 -0
  89. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-a6663f98ef6ddf6db55f01163e34bb2e87aa82f0347e79ce31e8dbfa390c480c-delta-47-v1.0.dat +0 -0
  90. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-a6663f98ef6ddf6db55f01163e34bb2e87aa82f0347e79ce31e8dbfa390c480c-full-47-v1.0.dat +0 -0
  91. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-aa77376d1ccd3664e5c6366e010c52a978fedbf40f5ce262fee71b2e7fe0c6a9-delta-50-v1.0.dat +0 -0
  92. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-aa77376d1ccd3664e5c6366e010c52a978fedbf40f5ce262fee71b2e7fe0c6a9-full-50-v1.0.dat +0 -0
  93. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-b0f28514741ed1a71f5c6544bf92f9e0e493c5f3cf28328909771d8404eff626-delta-24-v1.0.dat +0 -0
  94. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-b0f28514741ed1a71f5c6544bf92f9e0e493c5f3cf28328909771d8404eff626-full-24-v1.0.dat +0 -0
  95. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-b3efee5358e6eb89ab3b60db2d128d57eef39e8538fb63c5632412d4f8e7d09e-delta-44-v1.0.dat +0 -0
  96. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-b3efee5358e6eb89ab3b60db2d128d57eef39e8538fb63c5632412d4f8e7d09e-full-44-v1.0.dat +0 -0
  97. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bb0b56b6eb7acbb4e80893b04c72412fe833418232e1ed7b06d97d7a7f08b4e1-delta-16-v1.0.dat +0 -0
  98. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bb0b56b6eb7acbb4e80893b04c72412fe833418232e1ed7b06d97d7a7f08b4e1-full-16-v1.0.dat +0 -0
  99. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bc45262b757ff494b53bd2a8fba0f5511cc1f9c2a2c5360e04ea8cebbf6409df-delta-13-v1.0.dat +0 -0
  100. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bc45262b757ff494b53bd2a8fba0f5511cc1f9c2a2c5360e04ea8cebbf6409df-full-13-v1.0.dat +0 -0
  101. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bd0494ba430aff13458b557113b073d226eaf11257dfe26ff3323fa1cfe1335b-delta-39-v1.0.dat +0 -0
  102. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bd0494ba430aff13458b557113b073d226eaf11257dfe26ff3323fa1cfe1335b-full-39-v1.0.dat +0 -0
  103. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cd04f5fbba1553fa728b4dd8131d4723aaac288e0c7dc080447fbf0872c0a6eb-delta-36-v1.0.dat +0 -0
  104. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cd04f5fbba1553fa728b4dd8131d4723aaac288e0c7dc080447fbf0872c0a6eb-full-36-v1.0.dat +0 -0
  105. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cdd2399557fb3163a848f08831fdc833703354edb19a0d32a965fdb140f160c2-delta-18-v1.0.dat +0 -0
  106. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cdd2399557fb3163a848f08831fdc833703354edb19a0d32a965fdb140f160c2-full-18-v1.0.dat +0 -0
  107. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cf7a08fca7b1332095242e4d9800f4b94a3f4eaae88fe8407da42736d54b9e18-delta-37-v1.0.dat +0 -0
  108. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cf7a08fca7b1332095242e4d9800f4b94a3f4eaae88fe8407da42736d54b9e18-full-37-v1.0.dat +0 -0
  109. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-d1f97465a9f52187e2ef3a0d811a1258f52380a65340c55f3e8e65b92753bc13-delta-15-v1.0.dat +0 -0
  110. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-d1f97465a9f52187e2ef3a0d811a1258f52380a65340c55f3e8e65b92753bc13-full-15-v1.0.dat +0 -0
  111. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-e475eccd4ee597e5ff67b1a249e37d65d6e3f754c3f0379fdb43692513588fef-delta-46-v1.0.dat +0 -0
  112. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-e475eccd4ee597e5ff67b1a249e37d65d6e3f754c3f0379fdb43692513588fef-full-46-v1.0.dat +0 -0
  113. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-e82e63517d78fd65b23a05c3b9a98cf905ddad7026995a238bfe634006b84cd0-delta-27-v1.0.dat +0 -0
  114. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-e82e63517d78fd65b23a05c3b9a98cf905ddad7026995a238bfe634006b84cd0-full-27-v1.0.dat +0 -0
  115. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-ed2cf0fd6c0f6237c87c161e1fca303b3fbe6c04e01f652b88720b4572143349-delta-12-v1.0.dat +0 -0
  116. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-ed2cf0fd6c0f6237c87c161e1fca303b3fbe6c04e01f652b88720b4572143349-full-12-v1.0.dat +0 -0
  117. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-f6e454eaf24a83c46a7bed4c19260a0a3ce0ed5c51739cb6d748d4913dc2ef58-delta-30-v1.0.dat +0 -0
  118. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-f6e454eaf24a83c46a7bed4c19260a0a3ce0ed5c51739cb6d748d4913dc2ef58-full-30-v1.0.dat +0 -0
  119. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-f7ad2bdf86d9609b4d6381086ec1e296bf558e2ff467ead29dd7fa6e31bacc56-delta-43-v1.0.dat +0 -0
  120. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-f7ad2bdf86d9609b4d6381086ec1e296bf558e2ff467ead29dd7fa6e31bacc56-full-43-v1.0.dat +0 -0
  121. chia/_tests/core/data_layer/old_format/files/__init__.py +0 -0
  122. chia/_tests/core/data_layer/old_format/old_db.sqlite +0 -0
  123. chia/_tests/core/data_layer/test_data_layer_util.py +18 -21
  124. chia/_tests/core/data_layer/test_data_rpc.py +77 -28
  125. chia/_tests/core/data_layer/test_data_store.py +637 -700
  126. chia/_tests/core/data_layer/test_data_store_schema.py +2 -209
  127. chia/_tests/core/full_node/ram_db.py +1 -1
  128. chia/_tests/core/full_node/stores/test_block_store.py +4 -10
  129. chia/_tests/core/full_node/stores/test_coin_store.py +1 -1
  130. chia/_tests/core/full_node/test_address_manager.py +3 -3
  131. chia/_tests/core/full_node/test_block_height_map.py +1 -1
  132. chia/_tests/core/full_node/test_full_node.py +91 -30
  133. chia/_tests/core/full_node/test_generator_tools.py +17 -10
  134. chia/_tests/core/mempool/test_mempool.py +190 -90
  135. chia/_tests/core/mempool/test_mempool_fee_estimator.py +2 -4
  136. chia/_tests/core/mempool/test_mempool_item_queries.py +1 -1
  137. chia/_tests/core/mempool/test_mempool_manager.py +134 -75
  138. chia/_tests/core/mempool/test_singleton_fast_forward.py +9 -27
  139. chia/_tests/core/server/serve.py +0 -2
  140. chia/_tests/core/server/test_rate_limits.py +400 -347
  141. chia/_tests/core/server/test_server.py +2 -2
  142. chia/_tests/core/services/test_services.py +7 -7
  143. chia/_tests/core/test_cost_calculation.py +31 -10
  144. chia/_tests/core/test_crawler.py +4 -4
  145. chia/_tests/core/test_db_conversion.py +7 -14
  146. chia/_tests/core/test_db_validation.py +2 -6
  147. chia/_tests/core/test_farmer_harvester_rpc.py +34 -1
  148. chia/_tests/core/test_full_node_rpc.py +28 -24
  149. chia/_tests/core/test_merkle_set.py +1 -4
  150. chia/_tests/core/test_seeder.py +1 -1
  151. chia/_tests/core/util/test_keychain.py +2 -2
  152. chia/_tests/core/util/test_lru_cache.py +16 -0
  153. chia/_tests/core/util/test_streamable.py +85 -4
  154. chia/_tests/environments/wallet.py +4 -1
  155. chia/_tests/farmer_harvester/test_farmer.py +8 -6
  156. chia/_tests/farmer_harvester/test_farmer_harvester.py +306 -8
  157. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +3 -3
  158. chia/_tests/farmer_harvester/test_third_party_harvesters.py +11 -11
  159. chia/_tests/fee_estimation/test_fee_estimation_integration.py +2 -2
  160. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +1 -1
  161. chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +1 -2
  162. chia/_tests/generator/test_rom.py +2 -1
  163. chia/_tests/harvester/__init__.py +0 -0
  164. chia/_tests/harvester/config.py +4 -0
  165. chia/_tests/harvester/test_harvester_api.py +157 -0
  166. chia/_tests/plot_sync/test_plot_sync.py +6 -3
  167. chia/_tests/plot_sync/test_receiver.py +16 -4
  168. chia/_tests/plot_sync/test_sender.py +8 -7
  169. chia/_tests/plot_sync/test_sync_simulated.py +15 -13
  170. chia/_tests/plot_sync/util.py +3 -2
  171. chia/_tests/plotting/test_plot_manager.py +21 -5
  172. chia/_tests/plotting/test_prover.py +106 -0
  173. chia/_tests/pools/test_pool_cmdline.py +7 -6
  174. chia/_tests/pools/test_pool_puzzles_lifecycle.py +10 -3
  175. chia/_tests/pools/test_pool_rpc.py +92 -64
  176. chia/_tests/solver/__init__.py +0 -0
  177. chia/_tests/solver/config.py +4 -0
  178. chia/_tests/solver/test_solver_service.py +29 -0
  179. chia/_tests/timelord/test_new_peak.py +1 -1
  180. chia/_tests/timelord/test_timelord.py +1 -1
  181. chia/_tests/util/benchmarks.py +5 -12
  182. chia/_tests/util/blockchain.py +1 -1
  183. chia/_tests/util/build_network_protocol_files.py +7 -0
  184. chia/_tests/util/network_protocol_data.py +26 -0
  185. chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
  186. chia/_tests/util/protocol_messages_json.py +19 -0
  187. chia/_tests/util/setup_nodes.py +21 -2
  188. chia/_tests/util/spend_sim.py +9 -3
  189. chia/_tests/util/test_condition_tools.py +3 -2
  190. chia/_tests/util/test_full_block_utils.py +10 -9
  191. chia/_tests/util/test_misc.py +10 -10
  192. chia/_tests/util/test_network.py +32 -1
  193. chia/_tests/util/test_network_protocol_files.py +333 -318
  194. chia/_tests/util/test_network_protocol_json.py +6 -0
  195. chia/_tests/util/test_network_protocol_test.py +27 -0
  196. chia/_tests/util/test_priority_mutex.py +1 -1
  197. chia/_tests/util/test_replace_str_to_bytes.py +6 -6
  198. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +17 -13
  199. chia/_tests/wallet/cat_wallet/test_trades.py +55 -55
  200. chia/_tests/wallet/did_wallet/test_did.py +118 -1229
  201. chia/_tests/wallet/nft_wallet/config.py +1 -1
  202. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +73 -96
  203. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +15 -12
  204. chia/_tests/wallet/nft_wallet/test_nft_offers.py +67 -134
  205. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +31 -26
  206. chia/_tests/wallet/rpc/test_wallet_rpc.py +765 -371
  207. chia/_tests/wallet/sync/test_wallet_sync.py +6 -0
  208. chia/_tests/wallet/test_new_wallet_protocol.py +1 -1
  209. chia/_tests/wallet/test_signer_protocol.py +2 -2
  210. chia/_tests/wallet/test_singleton_lifecycle_fast.py +3 -4
  211. chia/_tests/wallet/test_transaction_store.py +42 -33
  212. chia/_tests/wallet/test_wallet.py +22 -31
  213. chia/_tests/wallet/test_wallet_state_manager.py +14 -7
  214. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +53 -32
  215. chia/apis.py +2 -0
  216. chia/cmds/beta.py +7 -3
  217. chia/cmds/chia.py +2 -0
  218. chia/cmds/cmd_classes.py +11 -27
  219. chia/cmds/cmds_util.py +3 -0
  220. chia/cmds/coin_funcs.py +27 -22
  221. chia/cmds/configure.py +42 -18
  222. chia/cmds/dev/data.py +22 -3
  223. chia/cmds/farm.py +32 -0
  224. chia/cmds/farm_funcs.py +54 -5
  225. chia/cmds/init_funcs.py +4 -0
  226. chia/cmds/keys_funcs.py +8 -10
  227. chia/cmds/peer_funcs.py +8 -10
  228. chia/cmds/plotnft_funcs.py +24 -16
  229. chia/cmds/rpc.py +11 -1
  230. chia/cmds/show_funcs.py +5 -5
  231. chia/cmds/solver.py +33 -0
  232. chia/cmds/solver_funcs.py +21 -0
  233. chia/cmds/wallet.py +1 -1
  234. chia/cmds/wallet_funcs.py +149 -96
  235. chia/consensus/block_body_validation.py +8 -9
  236. chia/consensus/block_creation.py +9 -10
  237. chia/consensus/block_header_validation.py +61 -69
  238. chia/{full_node → consensus}/block_height_map.py +2 -1
  239. chia/consensus/block_height_map_protocol.py +21 -0
  240. chia/consensus/block_rewards.py +12 -12
  241. chia/consensus/blockchain.py +8 -18
  242. chia/consensus/default_constants.py +6 -6
  243. chia/consensus/generator_tools.py +1 -1
  244. chia/consensus/get_block_challenge.py +24 -25
  245. chia/consensus/pos_quality.py +28 -2
  246. chia/consensus/pot_iterations.py +15 -17
  247. chia/daemon/keychain_proxy.py +5 -0
  248. chia/daemon/server.py +2 -3
  249. chia/data_layer/data_layer.py +32 -24
  250. chia/data_layer/data_layer_errors.py +5 -0
  251. chia/data_layer/data_layer_rpc_api.py +1 -1
  252. chia/data_layer/data_layer_service.py +8 -0
  253. chia/data_layer/data_layer_util.py +49 -89
  254. chia/data_layer/data_layer_wallet.py +20 -17
  255. chia/data_layer/data_store.py +1051 -1462
  256. chia/data_layer/download_data.py +44 -115
  257. chia/{server → data_layer}/start_data_layer.py +2 -1
  258. chia/data_layer/util/benchmark.py +38 -53
  259. chia/farmer/farmer.py +3 -0
  260. chia/farmer/farmer_api.py +104 -5
  261. chia/farmer/farmer_rpc_api.py +20 -0
  262. chia/farmer/farmer_rpc_client.py +6 -2
  263. chia/farmer/farmer_service.py +8 -0
  264. chia/{server → farmer}/start_farmer.py +4 -3
  265. chia/full_node/block_store.py +20 -10
  266. chia/full_node/coin_store.py +12 -4
  267. chia/full_node/eligible_coin_spends.py +17 -72
  268. chia/full_node/full_node.py +68 -71
  269. chia/full_node/full_node_api.py +26 -32
  270. chia/full_node/full_node_rpc_api.py +44 -32
  271. chia/full_node/full_node_rpc_client.py +67 -79
  272. chia/full_node/full_node_service.py +8 -0
  273. chia/full_node/full_node_store.py +5 -3
  274. chia/full_node/mempool.py +14 -14
  275. chia/full_node/mempool_manager.py +67 -89
  276. chia/{server → full_node}/start_full_node.py +1 -1
  277. chia/full_node/subscriptions.py +2 -2
  278. chia/full_node/weight_proof.py +14 -15
  279. chia/harvester/harvester.py +8 -1
  280. chia/harvester/harvester_api.py +178 -44
  281. chia/harvester/harvester_service.py +8 -0
  282. chia/{server → harvester}/start_harvester.py +1 -1
  283. chia/introducer/introducer_service.py +8 -0
  284. chia/{server → introducer}/start_introducer.py +1 -1
  285. chia/plot_sync/receiver.py +6 -1
  286. chia/plot_sync/sender.py +7 -4
  287. chia/plotting/cache.py +37 -28
  288. chia/plotting/check_plots.py +83 -48
  289. chia/plotting/create_plots.py +3 -4
  290. chia/plotting/manager.py +18 -13
  291. chia/plotting/prover.py +153 -0
  292. chia/plotting/util.py +14 -6
  293. chia/pools/pool_wallet.py +6 -4
  294. chia/protocols/harvester_protocol.py +14 -0
  295. chia/protocols/outbound_message.py +1 -0
  296. chia/protocols/pool_protocol.py +1 -1
  297. chia/protocols/protocol_message_types.py +7 -0
  298. chia/protocols/shared_protocol.py +2 -0
  299. chia/protocols/solver_protocol.py +18 -0
  300. chia/rpc/rpc_server.py +1 -1
  301. chia/seeder/crawl_store.py +4 -8
  302. chia/seeder/crawler.py +2 -2
  303. chia/seeder/crawler_service.py +8 -0
  304. chia/seeder/start_crawler.py +1 -1
  305. chia/server/address_manager.py +12 -15
  306. chia/server/introducer_peers.py +1 -1
  307. chia/server/node_discovery.py +9 -10
  308. chia/server/rate_limit_numbers.py +157 -168
  309. chia/server/rate_limits.py +44 -41
  310. chia/server/resolve_peer_info.py +5 -0
  311. chia/server/server.py +17 -7
  312. chia/server/start_service.py +0 -1
  313. chia/simulator/block_tools.py +92 -58
  314. chia/simulator/full_node_simulator.py +1 -1
  315. chia/simulator/setup_services.py +51 -15
  316. chia/solver/__init__.py +0 -0
  317. chia/solver/solver.py +100 -0
  318. chia/solver/solver_api.py +59 -0
  319. chia/solver/solver_rpc_api.py +31 -0
  320. chia/solver/solver_rpc_client.py +16 -0
  321. chia/solver/solver_service.py +8 -0
  322. chia/solver/start_solver.py +102 -0
  323. {mozilla-ca → chia/ssl}/cacert.pem +0 -27
  324. chia/ssl/create_ssl.py +3 -2
  325. chia/{server → timelord}/start_timelord.py +1 -1
  326. chia/timelord/timelord.py +12 -13
  327. chia/timelord/timelord_service.py +8 -0
  328. chia/types/blockchain_format/proof_of_space.py +61 -17
  329. chia/types/coin_spend.py +0 -8
  330. chia/types/internal_mempool_item.py +3 -3
  331. chia/types/mempool_item.py +15 -8
  332. chia/types/mempool_submission_status.py +1 -1
  333. chia/util/config.py +1 -3
  334. chia/util/db_wrapper.py +7 -8
  335. chia/util/initial-config.yaml +46 -0
  336. chia/util/lru_cache.py +8 -4
  337. chia/util/network.py +9 -0
  338. chia/util/service_groups.py +3 -1
  339. chia/util/streamable.py +38 -8
  340. chia/util/virtual_project_analysis.py +1 -1
  341. chia/wallet/cat_wallet/cat_outer_puzzle.py +7 -4
  342. chia/wallet/cat_wallet/cat_wallet.py +13 -7
  343. chia/wallet/cat_wallet/r_cat_wallet.py +4 -1
  344. chia/wallet/conditions.py +1 -3
  345. chia/wallet/did_wallet/did_wallet.py +27 -332
  346. chia/wallet/nft_wallet/nft_puzzle_utils.py +1 -1
  347. chia/wallet/nft_wallet/nft_wallet.py +9 -7
  348. chia/wallet/puzzle_drivers.py +7 -8
  349. chia/{server → wallet}/start_wallet.py +1 -1
  350. chia/wallet/trade_manager.py +12 -9
  351. chia/wallet/transaction_record.py +14 -51
  352. chia/wallet/util/clvm_streamable.py +28 -41
  353. chia/wallet/util/merkle_utils.py +2 -2
  354. chia/wallet/util/tx_config.py +3 -6
  355. chia/wallet/vc_wallet/cr_cat_wallet.py +12 -6
  356. chia/wallet/vc_wallet/vc_wallet.py +13 -15
  357. chia/wallet/wallet.py +5 -3
  358. chia/wallet/wallet_node.py +25 -30
  359. chia/wallet/wallet_request_types.py +538 -101
  360. chia/wallet/wallet_rpc_api.py +398 -570
  361. chia/wallet/wallet_rpc_client.py +144 -332
  362. chia/wallet/wallet_service.py +8 -0
  363. chia/wallet/wallet_state_manager.py +53 -42
  364. chia/wallet/wallet_transaction_store.py +13 -5
  365. {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7rc2.dist-info}/METADATA +31 -31
  366. {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7rc2.dist-info}/RECORD +369 -241
  367. {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7rc2.dist-info}/WHEEL +1 -1
  368. {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7rc2.dist-info}/entry_points.txt +8 -7
  369. chia/full_node/mempool_check_conditions.py +0 -102
  370. chia/server/aliases.py +0 -35
  371. {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 Any, Generic, Optional, TypeVar
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, encode_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: list[tuple[bytes32, list[bytes]]]
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 {coin_id: bytes32(memos[0]) for coin_id, memos in self.memos if len(memos) > 0 and len(memos[0]) == 32}
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, get_args, get_type_hints
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]) -> TypeGuard[type[Streamable]]:
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
- if isinstance(json_dict, str):
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
- bytes.fromhex(json_dict), streamable_type, translation_layer=translation_layer
117
+ hexstr_to_bytes(json_dict), streamable_type, translation_layer=translation_layer
121
118
  )
122
- else:
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
- if is_compound_type(old_field.type):
127
- inner_type = get_args(old_field.type)[0]
128
- if is_clvm_streamable_type(inner_type):
129
- new_streamable_fields.append(
130
- dataclasses.replace(
131
- old_field,
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
- else:
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")
@@ -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 |= 1 << len(proof)
42
+ appended_path = path | (1 << len(proof))
43
43
  proof.append(left_root)
44
- new_proofs[name] = (path, proof)
44
+ new_proofs[name] = (appended_path, proof)
45
45
  return new_root, new_proofs
46
46
 
47
47
 
@@ -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" in json_dict:
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
- def override(self, **kwargs: Any) -> CoinSelectionConfigLoader:
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=list(memos.items()),
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(int(time.time())),
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=list(compute_memos(spend_bundle).items()),
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(int(time.time())),
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=list(compute_memos(claim_bundle).items()),
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(int(time.time()))
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=list(compute_memos(spend_bundle).items()),
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(int(time.time()))
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=list(compute_memos(spend_bundle).items()),
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
- expected_did_announcement, vc_spend = vc.activate_backdoor(provider_inner_puzhash, announcement_nonce=nonce)
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
- else:
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(int(time.time()))
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=add_list[0].puzzle_hash if len(add_list) > 0 else bytes32.zeros,
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=list(compute_memos(spend_bundle).items()),
454
+ memos=compute_memos(spend_bundle),
453
455
  valid_times=parse_timelock_info(extra_conditions),
454
456
  )
455
457
  )
@@ -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
- else:
915
- if fork_height is not None:
916
- # only one peer told us to rollback so only clear for that peer
917
- cache.clear_after_height(fork_height)
918
- self.log.info(f"clear_after_height {fork_height} for peer {peer}")
919
- if not trusted:
920
- # Rollback race_cache not in clear_after_height to avoid applying rollbacks from new peak processing
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
- if fork_height is not None:
994
- cache.add_states_to_race_cache(batch.entries)
995
- else:
996
- while len(all_tasks) >= target_concurrent_tasks:
997
- all_tasks = [task for task in all_tasks if not task.done()]
998
- await asyncio.sleep(0.1)
999
- if self._shut_down:
1000
- self.log.info("Terminating receipt and validation due to shut down request")
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
- else:
1162
- if not await self.new_peak_from_untrusted(new_peak_hb, peer):
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
- else:
1276
- if peak_hb is not None and new_peak_hb.weight <= peak_hb.weight:
1277
- # Don't process blocks at the same weight
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
- else:
1667
- if not prev_block_rc_hash == reward_chain_hash:
1668
- self.log.error("Failed validation 8")
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])