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.
Files changed (370) 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 +252 -77
  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 +9 -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 -33
  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 +15 -16
  275. chia/full_node/mempool_manager.py +73 -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 +52 -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/streamable.py +38 -8
  339. chia/util/virtual_project_analysis.py +1 -1
  340. chia/wallet/cat_wallet/cat_outer_puzzle.py +7 -4
  341. chia/wallet/cat_wallet/cat_wallet.py +13 -7
  342. chia/wallet/cat_wallet/r_cat_wallet.py +4 -1
  343. chia/wallet/conditions.py +1 -3
  344. chia/wallet/did_wallet/did_wallet.py +27 -332
  345. chia/wallet/nft_wallet/nft_puzzle_utils.py +1 -1
  346. chia/wallet/nft_wallet/nft_wallet.py +9 -7
  347. chia/wallet/puzzle_drivers.py +7 -8
  348. chia/{server → wallet}/start_wallet.py +1 -1
  349. chia/wallet/trade_manager.py +12 -9
  350. chia/wallet/transaction_record.py +14 -51
  351. chia/wallet/util/clvm_streamable.py +28 -41
  352. chia/wallet/util/merkle_utils.py +2 -2
  353. chia/wallet/util/tx_config.py +3 -6
  354. chia/wallet/vc_wallet/cr_cat_wallet.py +12 -6
  355. chia/wallet/vc_wallet/vc_wallet.py +13 -15
  356. chia/wallet/wallet.py +5 -3
  357. chia/wallet/wallet_node.py +25 -30
  358. chia/wallet/wallet_request_types.py +538 -101
  359. chia/wallet/wallet_rpc_api.py +398 -570
  360. chia/wallet/wallet_rpc_client.py +144 -332
  361. chia/wallet/wallet_service.py +8 -0
  362. chia/wallet/wallet_state_manager.py +53 -42
  363. chia/wallet/wallet_transaction_store.py +13 -5
  364. {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7.dist-info}/METADATA +31 -31
  365. {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7.dist-info}/RECORD +368 -240
  366. {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7.dist-info}/WHEEL +1 -1
  367. {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7.dist-info}/entry_points.txt +8 -7
  368. chia/full_node/mempool_check_conditions.py +0 -102
  369. chia/server/aliases.py +0 -35
  370. {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7.dist-info/licenses}/LICENSE +0 -0
@@ -0,0 +1,157 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import AsyncGenerator, Iterator
4
+ from contextlib import contextmanager
5
+ from dataclasses import dataclass
6
+ from pathlib import Path
7
+ from unittest.mock import MagicMock, patch
8
+
9
+ import pytest
10
+ from chia_rs import ConsensusConstants, FullBlock, ProofOfSpace
11
+ from chia_rs.sized_bytes import bytes32
12
+ from chia_rs.sized_ints import uint64
13
+
14
+ from chia._tests.conftest import HarvesterFarmerEnvironment
15
+ from chia._tests.plotting.util import get_test_plots
16
+ from chia._tests.util.time_out_assert import time_out_assert
17
+ from chia.harvester.harvester_api import HarvesterAPI
18
+ from chia.plotting.util import PlotInfo
19
+ from chia.protocols import harvester_protocol
20
+ from chia.protocols.harvester_protocol import PoolDifficulty
21
+ from chia.protocols.protocol_message_types import ProtocolMessageTypes
22
+ from chia.server.ws_connection import WSChiaConnection
23
+
24
+
25
+ @dataclass
26
+ class HarvesterTestEnvironment:
27
+ """Test environment with real plots loaded for harvester testing."""
28
+
29
+ harvester_api: HarvesterAPI
30
+ plot_info: PlotInfo
31
+ plot_path: Path
32
+
33
+
34
+ @pytest.fixture(scope="function")
35
+ async def harvester_environment(
36
+ harvester_farmer_environment: HarvesterFarmerEnvironment,
37
+ ) -> AsyncGenerator[HarvesterTestEnvironment, None]:
38
+ """Create a test environment with real plots loaded."""
39
+ _, _, harvester_service, _, _ = harvester_farmer_environment
40
+ harvester_api = harvester_service._server.api
41
+ assert isinstance(harvester_api, HarvesterAPI)
42
+ test_plots = get_test_plots()
43
+ assert len(test_plots) > 0, "no test plots available"
44
+ plot_manager = harvester_api.harvester.plot_manager
45
+ plot_manager.start_refreshing()
46
+ await time_out_assert(10, lambda: len(plot_manager.plots) > 0, True)
47
+ plot_path, plot_info = next(iter(plot_manager.plots.items()))
48
+ yield HarvesterTestEnvironment(harvester_api, plot_info, plot_path)
49
+ plot_manager.stop_refreshing()
50
+
51
+
52
+ def signage_point_from_block(
53
+ block: FullBlock, constants: ConsensusConstants
54
+ ) -> harvester_protocol.NewSignagePointHarvester2:
55
+ sp_index = block.reward_chain_block.signage_point_index
56
+ challenge_hash = block.reward_chain_block.pos_ss_cc_challenge_hash
57
+ sp_hash = (
58
+ block.reward_chain_block.reward_chain_sp_vdf.output.get_hash()
59
+ if block.reward_chain_block.reward_chain_sp_vdf
60
+ else challenge_hash
61
+ )
62
+ return harvester_protocol.NewSignagePointHarvester2(
63
+ challenge_hash=challenge_hash,
64
+ difficulty=uint64(constants.DIFFICULTY_STARTING),
65
+ sub_slot_iters=uint64(constants.SUB_SLOT_ITERS_STARTING),
66
+ signage_point_index=sp_index,
67
+ sp_hash=sp_hash,
68
+ pool_difficulties=[],
69
+ peak_height=block.height,
70
+ last_tx_height=block.height,
71
+ )
72
+
73
+
74
+ def create_test_setup(
75
+ harvester_environment: HarvesterTestEnvironment,
76
+ default_400_blocks: list[FullBlock],
77
+ blockchain_constants: ConsensusConstants,
78
+ ) -> tuple[HarvesterTestEnvironment, harvester_protocol.NewSignagePointHarvester2, MagicMock]:
79
+ env = harvester_environment
80
+ block = default_400_blocks[2]
81
+ new_challenge = signage_point_from_block(block, blockchain_constants)
82
+ mock_peer = MagicMock(spec=WSChiaConnection)
83
+ return env, new_challenge, mock_peer
84
+
85
+
86
+ @contextmanager
87
+ def mock_successful_proof(plot_info: PlotInfo) -> Iterator[None]:
88
+ with patch.object(plot_info.prover, "get_full_proof") as mock_get_proof:
89
+ mock_proof = MagicMock(spec=ProofOfSpace)
90
+ mock_get_proof.return_value = mock_proof, None
91
+ yield
92
+
93
+
94
+ def assert_farming_info_sent(mock_peer: MagicMock) -> None:
95
+ mock_peer.send_message.assert_called()
96
+ farming_info_calls = [
97
+ call
98
+ for call in mock_peer.send_message.call_args_list
99
+ if call[0][0].type == ProtocolMessageTypes.farming_info.value
100
+ ]
101
+ assert len(farming_info_calls) == 1
102
+
103
+
104
+ @pytest.mark.anyio
105
+ async def test_new_signage_point_harvester(
106
+ harvester_environment: HarvesterTestEnvironment,
107
+ default_400_blocks: list[FullBlock],
108
+ blockchain_constants: ConsensusConstants,
109
+ ) -> None:
110
+ env, new_challenge, mock_peer = create_test_setup(harvester_environment, default_400_blocks, blockchain_constants)
111
+ with mock_successful_proof(env.plot_info):
112
+ await env.harvester_api.new_signage_point_harvester(new_challenge, mock_peer)
113
+ assert_farming_info_sent(mock_peer)
114
+
115
+
116
+ @pytest.mark.anyio
117
+ async def test_new_signage_point_harvester_pool_difficulty(
118
+ harvester_environment: HarvesterTestEnvironment,
119
+ default_400_blocks: list[FullBlock],
120
+ blockchain_constants: ConsensusConstants,
121
+ ) -> None:
122
+ env, new_challenge, mock_peer = create_test_setup(harvester_environment, default_400_blocks, blockchain_constants)
123
+ pool_puzzle_hash = bytes32(b"pool" + b"0" * 28)
124
+ env.plot_info.pool_contract_puzzle_hash = pool_puzzle_hash
125
+ pool_difficulty = PoolDifficulty(
126
+ pool_contract_puzzle_hash=pool_puzzle_hash,
127
+ difficulty=uint64(500),
128
+ sub_slot_iters=uint64(67108864),
129
+ )
130
+
131
+ new_challenge = harvester_protocol.NewSignagePointHarvester2(
132
+ challenge_hash=new_challenge.challenge_hash,
133
+ difficulty=new_challenge.difficulty,
134
+ sub_slot_iters=new_challenge.sub_slot_iters,
135
+ signage_point_index=new_challenge.signage_point_index,
136
+ sp_hash=new_challenge.sp_hash,
137
+ pool_difficulties=[pool_difficulty], # add pool difficulty
138
+ peak_height=new_challenge.peak_height,
139
+ last_tx_height=new_challenge.last_tx_height,
140
+ )
141
+
142
+ with mock_successful_proof(env.plot_info):
143
+ await env.harvester_api.new_signage_point_harvester(new_challenge, mock_peer)
144
+
145
+ assert_farming_info_sent(mock_peer)
146
+
147
+
148
+ @pytest.mark.anyio
149
+ async def test_new_signage_point_harvester_prover_error(
150
+ harvester_environment: HarvesterTestEnvironment,
151
+ default_400_blocks: list[FullBlock],
152
+ blockchain_constants: ConsensusConstants,
153
+ ) -> None:
154
+ env, new_challenge, mock_peer = create_test_setup(harvester_environment, default_400_blocks, blockchain_constants)
155
+ with patch.object(env.plot_info.prover, "get_qualities_for_challenge", side_effect=RuntimeError("test error")):
156
+ # should not raise exception, should handle error gracefully
157
+ await env.harvester_api.new_signage_point_harvester(new_challenge, mock_peer)
@@ -20,7 +20,9 @@ from chia._tests.plotting.util import get_test_plots
20
20
  from chia._tests.util.split_managers import SplitAsyncManager, split_async_manager
21
21
  from chia._tests.util.time_out_assert import time_out_assert
22
22
  from chia.farmer.farmer import Farmer
23
+ from chia.farmer.farmer_service import FarmerService
23
24
  from chia.harvester.harvester import Harvester
25
+ from chia.harvester.harvester_service import HarvesterService
24
26
  from chia.plot_sync.delta import Delta, PathListDelta, PlotListDelta
25
27
  from chia.plot_sync.receiver import Receiver
26
28
  from chia.plot_sync.sender import Sender
@@ -29,7 +31,6 @@ from chia.plotting.manager import PlotManager
29
31
  from chia.plotting.util import add_plot_directory, remove_plot_directory
30
32
  from chia.protocols.harvester_protocol import Plot
31
33
  from chia.protocols.protocol_message_types import ProtocolMessageTypes
32
- from chia.server.aliases import FarmerService, HarvesterService
33
34
  from chia.simulator.block_tools import BlockTools
34
35
  from chia.util.config import create_default_chia_config, lock_and_load_config, save_config
35
36
  from chia.util.streamable import _T_Streamable
@@ -194,7 +195,8 @@ class Environment:
194
195
  plot = harvester.plot_manager.plots.get(Path(path), None)
195
196
  assert plot is not None
196
197
  assert plot.prover.get_filename() == delta.valid.additions[path].filename
197
- assert plot.prover.get_size() == delta.valid.additions[path].size
198
+ # TODO: todo_v2_plots support v2 plots
199
+ assert plot.prover.get_size().size_v1 == delta.valid.additions[path].size
198
200
  assert plot.prover.get_id() == delta.valid.additions[path].plot_id
199
201
  assert plot.prover.get_compression_level() == delta.valid.additions[path].compression_level
200
202
  assert plot.pool_public_key == delta.valid.additions[path].pool_public_key
@@ -255,7 +257,8 @@ class Environment:
255
257
  for path, plot_info in plot_manager.plots.items():
256
258
  assert str(path) in receiver.plots()
257
259
  assert plot_info.prover.get_filename() == receiver.plots()[str(path)].filename
258
- assert plot_info.prover.get_size() == receiver.plots()[str(path)].size
260
+ # TODO: todo_v2_plots support v2 plots
261
+ assert plot_info.prover.get_size().size_v1 == receiver.plots()[str(path)].size
259
262
  assert plot_info.prover.get_id() == receiver.plots()[str(path)].plot_id
260
263
  assert plot_info.prover.get_compression_level() == receiver.plots()[str(path)].compression_level
261
264
  assert plot_info.pool_public_key == receiver.plots()[str(path)].pool_public_key
@@ -7,7 +7,7 @@ import time
7
7
  from typing import Any, Callable, Union
8
8
 
9
9
  import pytest
10
- from chia_rs import G1Element
10
+ from chia_rs import G1Element, PlotSize
11
11
  from chia_rs.sized_bytes import bytes32
12
12
  from chia_rs.sized_ints import uint8, uint32, uint64
13
13
 
@@ -185,8 +185,12 @@ def plot_sync_setup(seeded_random: random.Random) -> tuple[Receiver, list[SyncSt
185
185
  # Manually add the plots we want to remove in tests
186
186
  receiver._plots = {plot_info.filename: plot_info for plot_info in plot_info_list[0:10]}
187
187
  receiver._total_plot_size = sum(plot.file_size for plot in receiver.plots().values())
188
+ # TODO: todo_v2_plots support v2 plots
188
189
  receiver._total_effective_plot_size = int(
189
- sum(UI_ACTUAL_SPACE_CONSTANT_FACTOR * int(_expected_plot_size(plot.size)) for plot in receiver.plots().values())
190
+ sum(
191
+ UI_ACTUAL_SPACE_CONSTANT_FACTOR * int(_expected_plot_size(PlotSize.make_v1(plot.size)))
192
+ for plot in receiver.plots().values()
193
+ )
190
194
  )
191
195
  sync_steps: list[SyncStepData] = [
192
196
  SyncStepData(
@@ -266,7 +270,11 @@ async def test_to_dict(counts_only: bool, seeded_random: random.Random) -> None:
266
270
  assert get_list_or_len(plot_sync_dict_1["duplicates"], not counts_only) == 0
267
271
  assert plot_sync_dict_1["total_plot_size"] == sum(plot.file_size for plot in receiver.plots().values())
268
272
  assert plot_sync_dict_1["total_effective_plot_size"] == int(
269
- sum(UI_ACTUAL_SPACE_CONSTANT_FACTOR * int(_expected_plot_size(plot.size)) for plot in receiver.plots().values())
273
+ # TODO: todo_v2_plots support v2 plots
274
+ sum(
275
+ UI_ACTUAL_SPACE_CONSTANT_FACTOR * int(_expected_plot_size(PlotSize.make_v1(plot.size)))
276
+ for plot in receiver.plots().values()
277
+ )
270
278
  )
271
279
  assert plot_sync_dict_1["syncing"] is None
272
280
  assert plot_sync_dict_1["last_sync_time"] is None
@@ -312,8 +320,12 @@ async def test_to_dict(counts_only: bool, seeded_random: random.Random) -> None:
312
320
  assert get_list_or_len(sync_steps[State.duplicates].args[0], counts_only) == plot_sync_dict_3["duplicates"]
313
321
 
314
322
  assert plot_sync_dict_3["total_plot_size"] == sum(plot.file_size for plot in receiver.plots().values())
323
+ # TODO: todo_v2_plots support v2 plots
315
324
  assert plot_sync_dict_3["total_effective_plot_size"] == int(
316
- sum(UI_ACTUAL_SPACE_CONSTANT_FACTOR * int(_expected_plot_size(plot.size)) for plot in receiver.plots().values())
325
+ sum(
326
+ UI_ACTUAL_SPACE_CONSTANT_FACTOR * int(_expected_plot_size(PlotSize.make_v1(plot.size)))
327
+ for plot in receiver.plots().values()
328
+ )
317
329
  )
318
330
  assert plot_sync_dict_3["last_sync_time"] > 0
319
331
  assert plot_sync_dict_3["syncing"] is None
@@ -14,6 +14,7 @@ from chia.plotting.util import HarvestingMode
14
14
  from chia.protocols.harvester_protocol import PlotSyncIdentifier, PlotSyncResponse
15
15
  from chia.protocols.outbound_message import NodeType
16
16
  from chia.protocols.protocol_message_types import ProtocolMessageTypes
17
+ from chia.server.ws_connection import WSChiaConnection
17
18
  from chia.simulator.block_tools import BlockTools
18
19
 
19
20
 
@@ -37,11 +38,11 @@ def test_set_connection_values(bt: BlockTools, seeded_random: random.Random) ->
37
38
  # Test invalid NodeType values
38
39
  for connection_type in NodeType:
39
40
  if connection_type != NodeType.FARMER:
40
- pytest.raises(
41
- InvalidConnectionTypeError,
42
- sender.set_connection,
43
- get_dummy_connection(connection_type, farmer_connection.peer_node_id),
44
- )
41
+ with pytest.raises(InvalidConnectionTypeError):
42
+ dummy_connection: WSChiaConnection = get_dummy_connection(
43
+ connection_type, farmer_connection.peer_node_id
44
+ ) # type: ignore[assignment]
45
+ sender.set_connection(dummy_connection)
45
46
  # Test setting a valid connection works
46
47
  sender.set_connection(farmer_connection) # type:ignore[arg-type]
47
48
  assert sender._connection is not None
@@ -74,7 +75,7 @@ def test_set_response(bt: BlockTools) -> None:
74
75
 
75
76
  def new_response_message(sync_id: int, message_id: int, message_type: ProtocolMessageTypes) -> PlotSyncResponse:
76
77
  return PlotSyncResponse(
77
- plot_sync_identifier(uint64(sync_id), uint64(message_id)), int16(int(message_type.value)), None
78
+ plot_sync_identifier(uint64(sync_id), uint64(message_id)), int16(message_type.value), None
78
79
  )
79
80
 
80
81
  response_message = new_response_message(0, 1, ProtocolMessageTypes.plot_sync_start)
@@ -96,7 +97,7 @@ def test_set_response(bt: BlockTools) -> None:
96
97
  expected_response.identifier.sync_id,
97
98
  expected_response.identifier.message_id,
98
99
  )
99
- expired_message = PlotSyncResponse(expired_identifier, int16(int(ProtocolMessageTypes.plot_sync_start.value)), None)
100
+ expired_message = PlotSyncResponse(expired_identifier, int16(ProtocolMessageTypes.plot_sync_start.value), None)
100
101
  assert not sender.set_response(expired_message)
101
102
  # Test invalid sync-id
102
103
  sender._response = new_expected_response(2, 0, ProtocolMessageTypes.plot_sync_start)
@@ -20,16 +20,18 @@ from chia_rs.sized_ints import int16, uint8, uint64
20
20
  from chia._tests.plot_sync.util import start_harvester_service
21
21
  from chia._tests.util.time_out_assert import time_out_assert
22
22
  from chia.farmer.farmer import Farmer
23
+ from chia.farmer.farmer_service import FarmerService
23
24
  from chia.harvester.harvester import Harvester
25
+ from chia.harvester.harvester_service import HarvesterService
24
26
  from chia.plot_sync.receiver import Receiver
25
27
  from chia.plot_sync.sender import Sender
26
28
  from chia.plot_sync.util import Constants
27
29
  from chia.plotting.manager import PlotManager
30
+ from chia.plotting.prover import V1Prover
28
31
  from chia.plotting.util import PlotInfo
29
32
  from chia.protocols.harvester_protocol import PlotSyncError, PlotSyncResponse
30
33
  from chia.protocols.outbound_message import make_msg
31
34
  from chia.protocols.protocol_message_types import ProtocolMessageTypes
32
- from chia.server.aliases import FarmerService, HarvesterService
33
35
  from chia.server.ws_connection import WSChiaConnection
34
36
  from chia.simulator.block_tools import BlockTools
35
37
  from chia.util.batches import to_batches
@@ -68,17 +70,17 @@ class TestData:
68
70
  initial: bool,
69
71
  ) -> None:
70
72
  for plot_info in loaded:
71
- assert plot_info.prover.get_filename() not in self.plots
73
+ assert Path(plot_info.prover.get_filename()) not in self.plots
72
74
  for plot_info in removed:
73
- assert plot_info.prover.get_filename() in self.plots
75
+ assert Path(plot_info.prover.get_filename()) in self.plots
74
76
 
75
77
  self.invalid = invalid
76
78
  self.keys_missing = keys_missing
77
79
  self.duplicates = duplicates
78
80
 
79
- removed_paths: list[Path] = [p.prover.get_filename() for p in removed] if removed is not None else []
80
- invalid_dict: dict[Path, int] = {p.prover.get_filename(): 0 for p in self.invalid}
81
- keys_missing_set: set[Path] = {p.prover.get_filename() for p in self.keys_missing}
81
+ removed_paths: list[Path] = [Path(p.prover.get_filename()) for p in removed] if removed is not None else []
82
+ invalid_dict: dict[Path, int] = {Path(p.prover.get_filename()): 0 for p in self.invalid}
83
+ keys_missing_set: set[Path] = {Path(p.prover.get_filename()) for p in self.keys_missing}
82
84
  duplicates_set: set[str] = {p.prover.get_filename() for p in self.duplicates}
83
85
 
84
86
  # Inject invalid plots into `PlotManager` of the harvester so that the callback calls below can use them
@@ -122,9 +124,9 @@ class TestData:
122
124
  await time_out_assert(60, sync_done)
123
125
 
124
126
  for plot_info in loaded:
125
- self.plots[plot_info.prover.get_filename()] = plot_info
127
+ self.plots[Path(plot_info.prover.get_filename())] = plot_info
126
128
  for plot_info in removed:
127
- del self.plots[plot_info.prover.get_filename()]
129
+ del self.plots[Path(plot_info.prover.get_filename())]
128
130
 
129
131
  def validate_plot_sync(self) -> None:
130
132
  assert len(self.plots) == len(self.plot_sync_receiver.plots())
@@ -140,7 +142,7 @@ class TestData:
140
142
  assert plot_info.pool_contract_puzzle_hash == synced_plot.pool_contract_puzzle_hash
141
143
  assert plot_info.plot_public_key == synced_plot.plot_public_key
142
144
  assert plot_info.file_size == synced_plot.file_size
143
- assert uint64(int(plot_info.time_modified)) == synced_plot.time_modified
145
+ assert uint64(plot_info.time_modified) == synced_plot.time_modified
144
146
  for plot_info in self.invalid:
145
147
  assert plot_info.prover.get_filename() not in self.plot_sync_receiver.plots()
146
148
  assert plot_info.prover.get_filename() in self.plot_sync_receiver.invalid()
@@ -284,7 +286,7 @@ def create_example_plots(count: int, seeded_random: random.Random) -> list[PlotI
284
286
 
285
287
  return [
286
288
  PlotInfo(
287
- prover=DiskProver(f"{x}", bytes32.random(seeded_random), 25 + x % 26),
289
+ prover=V1Prover(DiskProver(f"{x}", bytes32.random(seeded_random), 25 + x % 26)),
288
290
  pool_public_key=None,
289
291
  pool_contract_puzzle_hash=None,
290
292
  plot_public_key=G1Element(),
@@ -416,7 +418,7 @@ async def test_sync_reset_cases(
416
418
  # Inject some data into `PlotManager` of the harvester so that we can validate the reset worked and triggered a
417
419
  # fresh sync of all available data of the plot manager
418
420
  for plot_info in plots[0:10]:
419
- test_data.plots[plot_info.prover.get_filename()] = plot_info
421
+ test_data.plots[Path(plot_info.prover.get_filename())] = plot_info
420
422
  plot_manager.plots = test_data.plots
421
423
  test_data.invalid = plots[10:20]
422
424
  test_data.keys_missing = plots[20:30]
@@ -424,8 +426,8 @@ async def test_sync_reset_cases(
424
426
  sender: Sender = test_runner.test_data[0].plot_sync_sender
425
427
  started_sync_id: uint64 = uint64(0)
426
428
 
427
- plot_manager.failed_to_open_filenames = {p.prover.get_filename(): 0 for p in test_data.invalid}
428
- plot_manager.no_key_filenames = {p.prover.get_filename() for p in test_data.keys_missing}
429
+ plot_manager.failed_to_open_filenames = {Path(p.prover.get_filename()): 0 for p in test_data.invalid}
430
+ plot_manager.no_key_filenames = {Path(p.prover.get_filename()) for p in test_data.keys_missing}
429
431
 
430
432
  async def wait_for_reset() -> bool:
431
433
  assert started_sync_id != 0
@@ -11,11 +11,12 @@ from chia_rs.sized_ints import uint16, uint64
11
11
 
12
12
  from chia._tests.util.split_managers import SplitAsyncManager, split_async_manager
13
13
  from chia._tests.util.time_out_assert import time_out_assert
14
+ from chia.farmer.farmer_service import FarmerService
14
15
  from chia.harvester.harvester import Harvester
16
+ from chia.harvester.harvester_service import HarvesterService
15
17
  from chia.plot_sync.sender import Sender
16
18
  from chia.protocols.harvester_protocol import PlotSyncIdentifier
17
19
  from chia.protocols.outbound_message import Message, NodeType
18
- from chia.server.aliases import FarmerService, HarvesterService
19
20
  from chia.types.peer_info import PeerInfo, UnresolvedPeerInfo
20
21
 
21
22
 
@@ -38,7 +39,7 @@ def get_dummy_connection(node_type: NodeType, peer_id: bytes32) -> WSChiaConnect
38
39
 
39
40
 
40
41
  def plot_sync_identifier(current_sync_id: uint64, message_id: uint64) -> PlotSyncIdentifier:
41
- return PlotSyncIdentifier(uint64(int(time.time())), current_sync_id, message_id)
42
+ return PlotSyncIdentifier(uint64(time.time()), current_sync_id, message_id)
42
43
 
43
44
 
44
45
  @contextlib.asynccontextmanager
@@ -13,12 +13,14 @@ from typing import Callable, Optional, cast
13
13
  import pytest
14
14
  from chia_rs import G1Element
15
15
  from chia_rs.sized_ints import uint16, uint32
16
+ from chiapos import DiskProver
16
17
 
17
18
  from chia._tests.plotting.util import get_test_plots
18
19
  from chia._tests.util.misc import boolean_datacases
19
20
  from chia._tests.util.time_out_assert import time_out_assert
20
21
  from chia.plotting.cache import CURRENT_VERSION, CacheDataV1
21
22
  from chia.plotting.manager import Cache, PlotManager
23
+ from chia.plotting.prover import V1Prover
22
24
  from chia.plotting.util import (
23
25
  PlotInfo,
24
26
  PlotRefreshEvents,
@@ -115,10 +117,9 @@ class PlotRefreshTester:
115
117
  if plot_info.prover.get_filename() == value.prover.get_filename():
116
118
  values_found += 1
117
119
  continue
118
- else:
119
- if value in expected_list:
120
- values_found += 1
121
- continue
120
+ elif value in expected_list:
121
+ values_found += 1
122
+ continue
122
123
  if values_found != len(expected_list):
123
124
  log.error(f"{name} invalid: values_found {values_found} expected {len(expected_list)}")
124
125
  return
@@ -507,7 +508,8 @@ async def test_plot_info_caching(environment, bt):
507
508
  assert plot_manager.plots[path].prover.get_filename() == plot_info.prover.get_filename()
508
509
  assert plot_manager.plots[path].prover.get_id() == plot_info.prover.get_id()
509
510
  assert plot_manager.plots[path].prover.get_memo() == plot_info.prover.get_memo()
510
- assert plot_manager.plots[path].prover.get_size() == plot_info.prover.get_size()
511
+ assert plot_manager.plots[path].prover.get_size().size_v1 == plot_info.prover.get_size().size_v1
512
+ assert plot_manager.plots[path].prover.get_size().size_v2 == plot_info.prover.get_size().size_v2
511
513
  assert plot_manager.plots[path].prover.get_compression_level() == plot_info.prover.get_compression_level()
512
514
  assert plot_manager.plots[path].pool_public_key == plot_info.pool_public_key
513
515
  assert plot_manager.plots[path].pool_contract_puzzle_hash == plot_info.pool_contract_puzzle_hash
@@ -743,6 +745,20 @@ async def test_recursive_plot_scan(environment: Environment) -> None:
743
745
  await env.refresh_tester.run(expected_result)
744
746
 
745
747
 
748
+ @pytest.mark.anyio
749
+ async def test_disk_prover_from_bytes(environment: Environment):
750
+ env: Environment = environment
751
+ expected_result = PlotRefreshResult()
752
+ expected_result.loaded = env.dir_1.plot_info_list() # type: ignore[assignment]
753
+ expected_result.processed = len(env.dir_1)
754
+ add_plot_directory(env.root_path, str(env.dir_1.path))
755
+ await env.refresh_tester.run(expected_result)
756
+ _, plot_info = next(iter(env.refresh_tester.plot_manager.plots.items()))
757
+ recreated_prover = V1Prover(DiskProver.from_bytes(bytes(plot_info.prover)))
758
+ assert recreated_prover.get_id() == plot_info.prover.get_id()
759
+ assert recreated_prover.get_filename() == plot_info.prover.get_filename()
760
+
761
+
746
762
  @boolean_datacases(name="follow_links", false="no_follow", true="follow")
747
763
  @pytest.mark.anyio
748
764
  async def test_recursive_plot_scan_symlinks(environment: Environment, follow_links: bool) -> None:
@@ -0,0 +1,106 @@
1
+ from __future__ import annotations
2
+
3
+ import tempfile
4
+ from pathlib import Path
5
+ from unittest.mock import MagicMock, patch
6
+
7
+ import pytest
8
+ from chia_rs.sized_bytes import bytes32
9
+ from chia_rs.sized_ints import uint8
10
+
11
+ from chia.plotting.prover import PlotVersion, V1Prover, V2Prover, get_prover_from_bytes, get_prover_from_file
12
+
13
+
14
+ class TestProver:
15
+ def test_v2_prover_init_with_nonexistent_file(self) -> None:
16
+ prover = V2Prover("/nonexistent/path/test.plot2")
17
+ assert prover.get_version() == PlotVersion.V2
18
+ assert prover.get_filename() == "/nonexistent/path/test.plot2"
19
+
20
+ def test_v2_prover_get_size_raises_error(self) -> None:
21
+ prover = V2Prover("/nonexistent/path/test.plot2")
22
+ with pytest.raises(NotImplementedError, match="V2 plot format is not yet implemented"):
23
+ prover.get_size()
24
+
25
+ def test_v2_prover_get_memo_raises_error(self) -> None:
26
+ prover = V2Prover("/nonexistent/path/test.plot2")
27
+ with pytest.raises(NotImplementedError, match="V2 plot format is not yet implemented"):
28
+ prover.get_memo()
29
+
30
+ def test_v2_prover_get_compression_level(self) -> None:
31
+ prover = V2Prover("/nonexistent/path/test.plot2")
32
+ assert prover.get_compression_level() == uint8(0)
33
+
34
+ def test_v2_prover_get_id_raises_error(self) -> None:
35
+ prover = V2Prover("/nonexistent/path/test.plot2")
36
+ with pytest.raises(NotImplementedError, match="V2 plot format is not yet implemented"):
37
+ prover.get_id()
38
+
39
+ def test_v2_prover_get_qualities_for_challenge_raises_error(self) -> None:
40
+ prover = V2Prover("/nonexistent/path/test.plot2")
41
+ with pytest.raises(
42
+ AssertionError, match="V2 plot format does not support qualities directly, use partial proofs"
43
+ ):
44
+ prover.get_qualities_for_challenge(bytes32(b"1" * 32))
45
+
46
+ def test_v2_prover_get_full_proof_raises_error(self) -> None:
47
+ prover = V2Prover("/nonexistent/path/test.plot2")
48
+ with pytest.raises(AssertionError, match="V2 plot format require solver to get full proof"):
49
+ prover.get_full_proof(bytes32(b"1" * 32), 0)
50
+
51
+ def test_v2_prover_bytes_raises_error(self) -> None:
52
+ prover = V2Prover("/nonexistent/path/test.plot2")
53
+ with pytest.raises(NotImplementedError, match="V2 plot format is not yet implemented"):
54
+ bytes(prover)
55
+
56
+ def test_v2_prover_from_bytes_raises_error(self) -> None:
57
+ with pytest.raises(NotImplementedError, match="V2 plot format is not yet implemented"):
58
+ V2Prover.from_bytes(b"test_data")
59
+
60
+ def test_get_prover_from_file(self) -> None:
61
+ prover = get_prover_from_file("/nonexistent/path/test.plot2")
62
+ assert prover.get_version() == PlotVersion.V2
63
+ with pytest.raises(NotImplementedError, match="V2 plot format is not yet implemented"):
64
+ prover.get_size()
65
+
66
+ def test_get_prover_from_file_with_plot1_still_works(self) -> None:
67
+ with tempfile.NamedTemporaryFile(suffix=".plot", delete=False) as f:
68
+ temp_path = f.name
69
+ try:
70
+ with pytest.raises(Exception) as exc_info:
71
+ get_prover_from_file(temp_path)
72
+ assert not isinstance(exc_info.value, NotImplementedError)
73
+ finally:
74
+ Path(temp_path).unlink()
75
+
76
+ def test_unsupported_file_extension_raises_value_error(self) -> None:
77
+ with pytest.raises(ValueError, match="Unsupported plot file"):
78
+ get_prover_from_file("/nonexistent/path/test.txt")
79
+
80
+
81
+ class TestV1Prover:
82
+ def test_v1_prover_get_version(self) -> None:
83
+ """Test that V1Prover.get_version() returns PlotVersion.V1"""
84
+ mock_disk_prover = MagicMock()
85
+ prover = V1Prover(mock_disk_prover)
86
+ assert prover.get_version() == PlotVersion.V1
87
+
88
+
89
+ class TestGetProverFromBytes:
90
+ def test_get_prover_from_bytes_v2_plot(self) -> None:
91
+ with patch("chia.plotting.prover.V2Prover.from_bytes") as mock_v2_from_bytes:
92
+ mock_prover = MagicMock()
93
+ mock_v2_from_bytes.return_value = mock_prover
94
+ result = get_prover_from_bytes("test.plot2", b"test_data")
95
+ assert result == mock_prover
96
+
97
+ def test_get_prover_from_bytes_v1_plot(self) -> None:
98
+ with patch("chia.plotting.prover.DiskProver") as mock_disk_prover_class:
99
+ mock_disk_prover = MagicMock()
100
+ mock_disk_prover_class.from_bytes.return_value = mock_disk_prover
101
+ result = get_prover_from_bytes("test.plot", b"test_data")
102
+ assert isinstance(result, V1Prover)
103
+
104
+ def test_get_prover_from_bytes_unsupported_extension(self) -> None:
105
+ with pytest.raises(ValueError, match="Unsupported plot file"):
106
+ get_prover_from_bytes("test.txt", b"test_data")
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import json
4
+ import re
4
5
  from dataclasses import dataclass
5
6
  from io import StringIO
6
7
  from typing import Optional, cast
@@ -9,7 +10,7 @@ import click
9
10
  import pytest
10
11
  from chia_rs import G1Element
11
12
  from chia_rs.sized_bytes import bytes32
12
- from chia_rs.sized_ints import uint32, uint64
13
+ from chia_rs.sized_ints import uint16, uint32, uint64
13
14
 
14
15
  # TODO: update after resolution in https://github.com/pytest-dev/pytest/issues/7469
15
16
  from pytest_mock import MockerFixture
@@ -46,7 +47,7 @@ from chia.util.errors import CliRpcConnectionError
46
47
  from chia.wallet.util.address_type import AddressType
47
48
  from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG
48
49
  from chia.wallet.util.wallet_types import WalletType
49
- from chia.wallet.wallet_request_types import PWStatus
50
+ from chia.wallet.wallet_request_types import GetWallets, PWStatus
50
51
  from chia.wallet.wallet_rpc_client import WalletRpcClient
51
52
  from chia.wallet.wallet_state_manager import WalletStateManager
52
53
 
@@ -153,9 +154,9 @@ async def test_plotnft_cli_create(
153
154
  ]
154
155
  )
155
156
 
156
- summaries_response = await wallet_rpc.get_wallets(WalletType.POOLING_WALLET)
157
- assert len(summaries_response) == 1
158
- wallet_id: int = summaries_response[0]["id"]
157
+ summaries_response = await wallet_rpc.get_wallets(GetWallets(type=uint16(WalletType.POOLING_WALLET)))
158
+ assert len(summaries_response.wallets) == 1
159
+ wallet_id: int = summaries_response.wallets[0].id
159
160
 
160
161
  await verify_pool_state(wallet_rpc, wallet_id, PoolSingletonState.SELF_POOLING)
161
162
 
@@ -484,7 +485,7 @@ async def test_plotnft_cli_join(
484
485
  wallet_id = await create_new_plotnft(wallet_environments)
485
486
 
486
487
  # Test joining the same pool again
487
- with pytest.raises(click.ClickException, match="already farming to pool http://pool.example.com"):
488
+ with pytest.raises(click.ClickException, match=re.escape("already farming to pool http://pool.example.com")):
488
489
  await JoinPlotNFTCMD(
489
490
  rpc_info=NeedsWalletRPC(
490
491
  client_info=client_info,
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import copy
4
+ import re
4
5
  from unittest import TestCase
5
6
 
6
7
  import pytest
@@ -31,6 +32,7 @@ from chia.pools.pool_wallet_info import PoolState
31
32
  from chia.types.blockchain_format.coin import Coin
32
33
  from chia.types.blockchain_format.program import Program
33
34
  from chia.types.coin_spend import make_spend
35
+ from chia.util.errors import Err
34
36
  from chia.wallet.puzzles import singleton_top_layer
35
37
  from chia.wallet.puzzles.p2_conditions import puzzle_for_conditions
36
38
  from chia.wallet.puzzles.p2_delegated_puzzle_or_hidden_puzzle import (
@@ -242,7 +244,8 @@ class TestPoolPuzzles(TestCase):
242
244
  )
243
245
  # Spend it and hope it fails!
244
246
  with pytest.raises(
245
- BadSpendBundleError, match="condition validation failure Err.ASSERT_ANNOUNCE_CONSUMED_FAILED"
247
+ BadSpendBundleError,
248
+ match=re.escape(f"condition validation failure {Err.ASSERT_ANNOUNCE_CONSUMED_FAILED!s}"),
246
249
  ):
247
250
  coin_db.update_coin_store_for_spend_bundle(
248
251
  SpendBundle([singleton_coinsol], G2Element()), time, DEFAULT_CONSTANTS.MAX_BLOCK_COST_CLVM
@@ -269,7 +272,8 @@ class TestPoolPuzzles(TestCase):
269
272
  )
270
273
  # Spend it and hope it fails!
271
274
  with pytest.raises(
272
- BadSpendBundleError, match="condition validation failure Err.ASSERT_ANNOUNCE_CONSUMED_FAILED"
275
+ BadSpendBundleError,
276
+ match=re.escape(f"condition validation failure {Err.ASSERT_ANNOUNCE_CONSUMED_FAILED!s}"),
273
277
  ):
274
278
  coin_db.update_coin_store_for_spend_bundle(
275
279
  SpendBundle([singleton_coinsol, bad_coinsol], G2Element()), time, DEFAULT_CONSTANTS.MAX_BLOCK_COST_CLVM
@@ -320,7 +324,10 @@ class TestPoolPuzzles(TestCase):
320
324
  (data + singleton.name() + DEFAULT_CONSTANTS.AGG_SIG_ME_ADDITIONAL_DATA),
321
325
  )
322
326
  # Spend it and hope it fails!
323
- with pytest.raises(BadSpendBundleError, match="condition validation failure Err.ASSERT_HEIGHT_RELATIVE_FAILED"):
327
+ with pytest.raises(
328
+ BadSpendBundleError,
329
+ match=re.escape(f"condition validation failure {Err.ASSERT_HEIGHT_RELATIVE_FAILED!s}"),
330
+ ):
324
331
  coin_db.update_coin_store_for_spend_bundle(
325
332
  SpendBundle([return_coinsol], sig), time, DEFAULT_CONSTANTS.MAX_BLOCK_COST_CLVM
326
333
  )