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
@@ -3,16 +3,20 @@ from __future__ import annotations
3
3
  import concurrent.futures
4
4
  import logging
5
5
  from collections import Counter
6
+ from collections.abc import Sequence
6
7
  from pathlib import Path
7
8
  from threading import Lock
8
- from time import sleep, time
9
- from typing import Optional
9
+ from time import monotonic, sleep
10
+ from typing import Optional, Union
10
11
 
11
12
  from chia_rs import G1Element
12
- from chia_rs.sized_ints import uint32
13
+ from chia_rs.sized_bytes import bytes32
14
+ from chia_rs.sized_ints import uint8, uint32
13
15
  from chiapos import Verifier
14
16
 
17
+ from chia.consensus.default_constants import DEFAULT_CONSTANTS
15
18
  from chia.plotting.manager import PlotManager
19
+ from chia.plotting.prover import PlotVersion
16
20
  from chia.plotting.util import (
17
21
  PlotInfo,
18
22
  PlotRefreshEvents,
@@ -22,6 +26,10 @@ from chia.plotting.util import (
22
26
  get_plot_filenames,
23
27
  parse_plot_info,
24
28
  )
29
+ from chia.types.blockchain_format.proof_of_space import (
30
+ quality_for_partial_proof,
31
+ solve_proof,
32
+ )
25
33
  from chia.util.bech32m import encode_puzzle_hash
26
34
  from chia.util.config import load_config
27
35
  from chia.util.cpu import available_logical_cores
@@ -133,14 +141,16 @@ def check_plots(
133
141
  log.info("")
134
142
  log.info("")
135
143
  log.info(f"Starting to test each plot with {num} challenges each\n")
136
- total_good_plots: Counter[str] = Counter()
144
+ total_good_plots_v1: Counter[uint8] = Counter()
145
+ total_good_plots_v2: Counter[uint8] = Counter()
137
146
  total_size = 0
138
147
  bad_plots_list: list[Path] = []
139
148
 
140
149
  with plot_manager:
141
150
 
142
151
  def process_plot(plot_path: Path, plot_info: PlotInfo, num_start: int, num_end: int, lock: Lock) -> None:
143
- nonlocal total_good_plots
152
+ nonlocal total_good_plots_v1
153
+ nonlocal total_good_plots_v2
144
154
  nonlocal total_size
145
155
  nonlocal bad_plots_list
146
156
 
@@ -166,48 +176,26 @@ def check_plots(
166
176
 
167
177
  total_proofs = 0
168
178
  caught_exception: bool = False
179
+ version = pr.get_version()
169
180
  for i in range(num_start, num_end):
170
181
  challenge = std_hash(i.to_bytes(32, "big"))
182
+ # these are either qualities (v1) or partial proofs (v2)
183
+ proofs: Sequence[Union[bytes32, bytes]]
171
184
  # Some plot errors cause get_qualities_for_challenge to throw a RuntimeError
172
185
  try:
173
- quality_start_time = int(round(time() * 1000))
174
- for index, quality_str in enumerate(pr.get_qualities_for_challenge(challenge)):
175
- quality_spent_time = int(round(time() * 1000)) - quality_start_time
176
- if quality_spent_time > 8000:
177
- log.warning(
178
- f"\tLooking up qualities took: {quality_spent_time} ms. This should be below 8 seconds "
179
- f"to minimize risk of losing rewards. Filepath: {plot_path}"
180
- )
181
- else:
182
- log.info(f"\tLooking up qualities took: {quality_spent_time} ms. Filepath: {plot_path}")
183
-
184
- # Other plot errors cause get_full_proof or validate_proof to throw an AssertionError
185
- try:
186
- proof_start_time = int(round(time() * 1000))
187
- proof = pr.get_full_proof(challenge, index, parallel_read)
188
- proof_spent_time = int(round(time() * 1000)) - proof_start_time
189
- if proof_spent_time > 15000:
190
- log.warning(
191
- f"\tFinding proof took: {proof_spent_time} ms. This should be below 15 seconds "
192
- f"to minimize risk of losing rewards. Filepath: {plot_path}"
193
- )
194
- else:
195
- log.info(f"\tFinding proof took: {proof_spent_time} ms. Filepath: {plot_path}")
196
-
197
- ver_quality_str = v.validate_proof(pr.get_id(), pr.get_size(), challenge, proof)
198
- if quality_str == ver_quality_str:
199
- total_proofs += 1
200
- else:
201
- log.warning(
202
- f"\tQuality doesn't match with proof. Filepath: {plot_path} "
203
- "This can occasionally happen with a compressed plot."
204
- )
205
- except AssertionError as e:
206
- log.error(
207
- f"{type(e)}: {e} error in proving/verifying for plot {plot_path}. Filepath: {plot_path}"
208
- )
209
- caught_exception = True
210
- quality_start_time = int(round(time() * 1000))
186
+ quality_start_time = round(monotonic() * 1000)
187
+ if version == PlotVersion.V1:
188
+ proofs = pr.get_qualities_for_challenge(challenge)
189
+ else:
190
+ proofs = pr.get_partial_proofs_for_challenge(challenge, DEFAULT_CONSTANTS.PLOT_STRENGTH_INITIAL)
191
+ quality_spent_time = round(monotonic() * 1000) - quality_start_time
192
+ if quality_spent_time > 8000:
193
+ log.warning(
194
+ f"\tLooking up qualities took: {quality_spent_time} ms. This should be below 8 seconds "
195
+ f"to minimize risk of losing rewards. Filepath: {plot_path}"
196
+ )
197
+ else:
198
+ log.info(f"\tLooking up qualities took: {quality_spent_time} ms. Filepath: {plot_path}")
211
199
  except KeyboardInterrupt:
212
200
  log.warning("Interrupted, closing")
213
201
  return
@@ -221,9 +209,46 @@ def check_plots(
221
209
  else:
222
210
  log.error(f"{type(e)}: {e} error in getting challenge qualities for plot {plot_path}")
223
211
  caught_exception = True
212
+ continue
224
213
  except Exception as e:
225
214
  log.error(f"{type(e)}: {e} error in getting challenge qualities for plot {plot_path}")
226
215
  caught_exception = True
216
+ break
217
+
218
+ for index, proof in enumerate(proofs):
219
+ # Other plot errors cause get_full_proof or validate_proof to throw an AssertionError
220
+ try:
221
+ proof_start_time = round(monotonic() * 1000)
222
+ if version == PlotVersion.V1:
223
+ quality_str = bytes32(proof)
224
+ full_proof = pr.get_full_proof(challenge, index, parallel_read)
225
+ proof_spent_time = round(monotonic() * 1000) - proof_start_time
226
+ else:
227
+ quality_str = quality_for_partial_proof(proof, challenge)
228
+ proof_spent_time = round(monotonic() * 1000) - proof_start_time
229
+ full_proof = solve_proof(proof)
230
+
231
+ if proof_spent_time > 15000:
232
+ log.warning(
233
+ f"\tFinding proof took: {proof_spent_time} ms. This should be below 15 seconds "
234
+ f"to minimize risk of losing rewards. Filepath: {plot_path}"
235
+ )
236
+ else:
237
+ log.info(f"\tFinding proof took: {proof_spent_time} ms. Filepath: {plot_path}")
238
+
239
+ ver_quality_str = v.validate_proof(pr.get_id(), pr.get_size().size_v1, challenge, full_proof)
240
+ if quality_str == ver_quality_str:
241
+ total_proofs += 1
242
+ else:
243
+ log.warning(
244
+ f"\tQuality doesn't match with proof. Filepath: {plot_path} "
245
+ "This can occasionally happen with a compressed plot."
246
+ )
247
+ except AssertionError as e:
248
+ log.error(
249
+ f"{type(e)}: {e} error in proving/verifying for plot {plot_path}. Filepath: {plot_path}"
250
+ )
251
+ caught_exception = True
227
252
  if caught_exception is True:
228
253
  break
229
254
 
@@ -232,8 +257,16 @@ def check_plots(
232
257
  f"\tProofs {total_proofs} / {challenges}, {round(total_proofs / float(challenges), 4)}. "
233
258
  f"Filepath: {plot_path}"
234
259
  )
235
- total_good_plots[pr.get_size()] += 1
236
- total_size += plot_path.stat().st_size
260
+ version_and_size = pr.get_size()
261
+ if version_and_size.size_v1 is not None:
262
+ k = version_and_size.size_v1
263
+ total_good_plots_v1[k] += 1
264
+ total_size += plot_path.stat().st_size
265
+ else:
266
+ assert version_and_size.size_v2 is not None
267
+ k = version_and_size.size_v2
268
+ total_good_plots_v2[k] += 1
269
+ total_size += plot_path.stat().st_size
237
270
  else:
238
271
  log.error(
239
272
  f"\tProofs {total_proofs} / {challenges}, {round(total_proofs / float(challenges), 4)} "
@@ -255,10 +288,12 @@ def check_plots(
255
288
  log.info("")
256
289
  log.info("")
257
290
  log.info("Summary")
258
- total_plots: int = sum(list(total_good_plots.values()))
291
+ total_plots: int = sum(list(total_good_plots_v1.values()) + list(total_good_plots_v2.values()))
259
292
  log.info(f"Found {total_plots} valid plots, total size {total_size / (1024 * 1024 * 1024 * 1024):.5f} TiB")
260
- for k, count in sorted(dict(total_good_plots).items()):
261
- log.info(f"{count} plots of size {k}")
293
+ for k, count in sorted(dict(total_good_plots_v1).items()):
294
+ log.info(f"{count} v1 plots of size {k}")
295
+ for k, count in sorted(dict(total_good_plots_v2).items()):
296
+ log.info(f"{count} v2 plots of size {k}")
262
297
  grand_total_bad = len(bad_plots_list) + len(plot_manager.failed_to_open_filenames)
263
298
  if grand_total_bad > 0:
264
299
  log.warning(f"{grand_total_bad} invalid plots found:")
@@ -83,10 +83,9 @@ class PlotKeysResolver:
83
83
  if self.pool_contract_address is not None:
84
84
  raise RuntimeError("Choose one of pool_contract_address and pool_public_key")
85
85
  pool_public_key = G1Element.from_bytes(bytes.fromhex(self.pool_public_key))
86
- else:
87
- if self.pool_contract_address is None:
88
- # If nothing is set, farms to the provided key (or the first key)
89
- pool_public_key = await self.get_pool_public_key(keychain_proxy)
86
+ elif self.pool_contract_address is None:
87
+ # If nothing is set, farms to the provided key (or the first key)
88
+ pool_public_key = await self.get_pool_public_key(keychain_proxy)
90
89
 
91
90
  self.resolved_keys = PlotKeys(farmer_public_key, pool_public_key, self.pool_contract_address)
92
91
  finally:
chia/plotting/manager.py CHANGED
@@ -9,10 +9,11 @@ from pathlib import Path
9
9
  from typing import Any, Callable, Optional
10
10
 
11
11
  from chia_rs import G1Element
12
- from chiapos import DiskProver, decompressor_context_queue
12
+ from chiapos import decompressor_context_queue
13
13
 
14
14
  from chia.consensus.pos_quality import UI_ACTUAL_SPACE_CONSTANT_FACTOR, _expected_plot_size
15
15
  from chia.plotting.cache import Cache, CacheEntry
16
+ from chia.plotting.prover import get_prover_from_file
16
17
  from chia.plotting.util import (
17
18
  HarvestingMode,
18
19
  PlotInfo,
@@ -323,7 +324,7 @@ class PlotManager:
323
324
  cache_entry = self.cache.get(file_path)
324
325
  cache_hit = cache_entry is not None
325
326
  if not cache_hit:
326
- prover = DiskProver(str(file_path))
327
+ prover = get_prover_from_file(str(file_path))
327
328
 
328
329
  log.debug(f"process_file {file_path!s}")
329
330
 
@@ -332,18 +333,22 @@ class PlotManager:
332
333
  # TODO: consider checking if the file was just written to (which would mean that the file is still
333
334
  # being copied). A segfault might happen in this edge case.
334
335
 
336
+ k = prover.get_size()
335
337
  level = prover.get_compression_level()
336
- if level == 0:
337
- if prover.get_size() >= 30 and stat_info.st_size < 0.98 * expected_size:
338
- log.warning(
339
- f"Not farming plot {file_path}. "
340
- f"Size is {stat_info.st_size / (1024**3)} GiB, "
341
- f"but expected at least: {expected_size / (1024**3)} GiB. "
342
- "We assume the file is being copied."
343
- )
344
- return None
345
-
346
- cache_entry = CacheEntry.from_disk_prover(prover)
338
+ if (
339
+ level == 0
340
+ and stat_info.st_size < 0.98 * expected_size
341
+ and ((k.size_v1 is not None and k.size_v1 >= 30) or (k.size_v2 is not None and k.size_v2 >= 28))
342
+ ):
343
+ log.warning(
344
+ f"Not farming plot {file_path}. "
345
+ f"Size is {stat_info.st_size / (1024**3)} GiB, "
346
+ f"but expected at least: {expected_size / (1024**3)} GiB. "
347
+ "We assume the file is being copied."
348
+ )
349
+ return None
350
+
351
+ cache_entry = CacheEntry.from_prover(prover)
347
352
  self.cache.update(file_path, cache_entry)
348
353
 
349
354
  assert cache_entry is not None
@@ -0,0 +1,153 @@
1
+ from __future__ import annotations
2
+
3
+ from enum import IntEnum
4
+ from typing import TYPE_CHECKING, ClassVar, Protocol, cast
5
+
6
+ from chia_rs import PlotSize
7
+ from chia_rs.sized_bytes import bytes32
8
+ from chia_rs.sized_ints import uint8
9
+ from chiapos import DiskProver
10
+
11
+ if TYPE_CHECKING:
12
+ from chiapos import DiskProver
13
+
14
+
15
+ class PlotVersion(IntEnum):
16
+ """Enum for plot format versions"""
17
+
18
+ V1 = 1
19
+ V2 = 2
20
+
21
+
22
+ class ProverProtocol(Protocol):
23
+ def get_filename(self) -> str: ...
24
+ def get_size(self) -> PlotSize: ...
25
+ def get_memo(self) -> bytes: ...
26
+ def get_compression_level(self) -> uint8: ...
27
+ def get_version(self) -> PlotVersion: ...
28
+ def __bytes__(self) -> bytes: ...
29
+ def get_id(self) -> bytes32: ...
30
+ def get_qualities_for_challenge(self, challenge: bytes32) -> list[bytes32]: ...
31
+
32
+ # this is only supported by v2 plots
33
+ def get_partial_proofs_for_challenge(self, challenge: bytes32, required_plot_strength: uint8) -> list[bytes]: ...
34
+
35
+ # this is only supported by v1 plots. v2 plots first get the partial proof
36
+ # and turn it into a full proof by calling solve_proof(), or pass it to the solver service
37
+ def get_full_proof(self, challenge: bytes32, index: int, parallel_read: bool = True) -> bytes: ...
38
+
39
+ @classmethod
40
+ def from_bytes(cls, data: bytes) -> ProverProtocol: ...
41
+
42
+
43
+ class V2Prover:
44
+ """Placeholder for future V2 plot format support"""
45
+
46
+ if TYPE_CHECKING:
47
+ _protocol_check: ClassVar[ProverProtocol] = cast("V2Prover", None)
48
+
49
+ def __init__(self, filename: str):
50
+ self._filename = filename
51
+
52
+ def get_filename(self) -> str:
53
+ return str(self._filename)
54
+
55
+ def get_size(self) -> PlotSize:
56
+ # TODO: todo_v2_plots get k size from plot
57
+ raise NotImplementedError("V2 plot format is not yet implemented")
58
+
59
+ def get_memo(self) -> bytes:
60
+ # TODO: todo_v2_plots
61
+ raise NotImplementedError("V2 plot format is not yet implemented")
62
+
63
+ def get_compression_level(self) -> uint8:
64
+ # v2 plots are never compressed
65
+ return uint8(0)
66
+
67
+ def get_version(self) -> PlotVersion:
68
+ return PlotVersion.V2
69
+
70
+ def __bytes__(self) -> bytes:
71
+ # TODO: todo_v2_plots Implement prover serialization for caching
72
+ raise NotImplementedError("V2 plot format is not yet implemented")
73
+
74
+ def get_id(self) -> bytes32:
75
+ # TODO: Extract plot ID from V2 plot file
76
+ raise NotImplementedError("V2 plot format is not yet implemented")
77
+
78
+ def get_qualities_for_challenge(self, challenge: bytes32) -> list[bytes32]:
79
+ raise AssertionError("V2 plot format does not support qualities directly, use partial proofs")
80
+
81
+ def get_partial_proofs_for_challenge(self, challenge: bytes, required_plot_strength: uint8) -> list[bytes]:
82
+ # TODO: todo_v2_plots Implement plot partial proof lookup
83
+ raise NotImplementedError("V2 plot format is not yet implemented")
84
+
85
+ def get_full_proof(self, challenge: bytes32, index: int, parallel_read: bool = True) -> bytes:
86
+ raise AssertionError("V2 plot format require solver to get full proof")
87
+
88
+ @classmethod
89
+ def from_bytes(cls, data: bytes) -> V2Prover:
90
+ # TODO: todo_v2_plots Implement prover deserialization from cache
91
+ raise NotImplementedError("V2 plot format is not yet implemented")
92
+
93
+
94
+ class V1Prover:
95
+ """Wrapper for existing DiskProver to implement ProverProtocol"""
96
+
97
+ if TYPE_CHECKING:
98
+ _protocol_check: ClassVar[ProverProtocol] = cast("V1Prover", None)
99
+
100
+ def __init__(self, disk_prover: DiskProver) -> None:
101
+ self._disk_prover = disk_prover
102
+
103
+ def get_filename(self) -> str:
104
+ return str(self._disk_prover.get_filename())
105
+
106
+ def get_size(self) -> PlotSize:
107
+ return PlotSize.make_v1(uint8(self._disk_prover.get_size()))
108
+
109
+ def get_memo(self) -> bytes:
110
+ return bytes(self._disk_prover.get_memo())
111
+
112
+ def get_compression_level(self) -> uint8:
113
+ return uint8(self._disk_prover.get_compression_level())
114
+
115
+ def get_version(self) -> PlotVersion:
116
+ return PlotVersion.V1
117
+
118
+ def __bytes__(self) -> bytes:
119
+ return bytes(self._disk_prover)
120
+
121
+ def get_id(self) -> bytes32:
122
+ return bytes32(self._disk_prover.get_id())
123
+
124
+ def get_qualities_for_challenge(self, challenge: bytes32) -> list[bytes32]:
125
+ return [bytes32(quality) for quality in self._disk_prover.get_qualities_for_challenge(challenge)]
126
+
127
+ def get_partial_proofs_for_challenge(self, challenge: bytes32, required_plot_strength: uint8) -> list[bytes]:
128
+ raise AssertionError("V1 plot format doesn't use partial proofs")
129
+
130
+ def get_full_proof(self, challenge: bytes32, index: int, parallel_read: bool = True) -> bytes:
131
+ return bytes(self._disk_prover.get_full_proof(challenge, index, parallel_read))
132
+
133
+ @classmethod
134
+ def from_bytes(cls, data: bytes) -> V1Prover:
135
+ return cls(DiskProver.from_bytes(data))
136
+
137
+
138
+ def get_prover_from_bytes(filename: str, prover_data: bytes) -> ProverProtocol:
139
+ if filename.endswith(".plot2"):
140
+ return V2Prover.from_bytes(prover_data)
141
+ elif filename.endswith(".plot"):
142
+ return V1Prover(DiskProver.from_bytes(prover_data))
143
+ else:
144
+ raise ValueError(f"Unsupported plot file: {filename}")
145
+
146
+
147
+ def get_prover_from_file(filename: str) -> ProverProtocol:
148
+ if filename.endswith(".plot2"):
149
+ return V2Prover(filename)
150
+ elif filename.endswith(".plot"):
151
+ return V1Prover(DiskProver(filename))
152
+ else:
153
+ raise ValueError(f"Unsupported plot file: {filename}")
chia/plotting/util.py CHANGED
@@ -4,12 +4,14 @@ import logging
4
4
  from dataclasses import dataclass, field
5
5
  from enum import Enum, IntEnum
6
6
  from pathlib import Path
7
- from typing import Any, Optional, Union
7
+ from typing import TYPE_CHECKING, Any, Optional, Union
8
+
9
+ if TYPE_CHECKING:
10
+ from chia.plotting.prover import ProverProtocol
8
11
 
9
12
  from chia_rs import G1Element, PrivateKey
10
13
  from chia_rs.sized_bytes import bytes32
11
14
  from chia_rs.sized_ints import uint32
12
- from chiapos import DiskProver
13
15
  from typing_extensions import final
14
16
 
15
17
  from chia.util.config import load_config, lock_and_load_config, save_config
@@ -39,7 +41,7 @@ class PlotsRefreshParameter(Streamable):
39
41
 
40
42
  @dataclass
41
43
  class PlotInfo:
42
- prover: DiskProver
44
+ prover: ProverProtocol
43
45
  pool_public_key: Optional[G1Element]
44
46
  pool_contract_puzzle_hash: Optional[bytes32]
45
47
  plot_public_key: G1Element
@@ -233,16 +235,22 @@ def get_filenames(directory: Path, recursive: bool, follow_links: bool) -> list[
233
235
  if follow_links and recursive:
234
236
  import glob
235
237
 
236
- files = glob.glob(str(directory / "**" / "*.plot"), recursive=True)
237
- for file in files:
238
+ v1_file_strs = glob.glob(str(directory / "**" / "*.plot"), recursive=True)
239
+ v2_file_strs = glob.glob(str(directory / "**" / "*.plot2"), recursive=True)
240
+
241
+ for file in v1_file_strs + v2_file_strs:
238
242
  filepath = Path(file).resolve()
239
243
  if filepath.is_file() and not filepath.name.startswith("._"):
240
244
  all_files.append(filepath)
241
245
  else:
242
246
  glob_function = directory.rglob if recursive else directory.glob
243
- all_files = [
247
+ v1_files: list[Path] = [
244
248
  child for child in glob_function("*.plot") if child.is_file() and not child.name.startswith("._")
245
249
  ]
250
+ v2_files: list[Path] = [
251
+ child for child in glob_function("*.plot2") if child.is_file() and not child.name.startswith("._")
252
+ ]
253
+ all_files = v1_files + v2_files
246
254
  log.debug(f"get_filenames: {len(all_files)} files found in {directory}, recursive: {recursive}")
247
255
  except Exception as e:
248
256
  log.warning(f"Error reading directory {directory} {e}")
chia/pools/pool_wallet.py CHANGED
@@ -525,8 +525,9 @@ class PoolWallet:
525
525
  interface.side_effects.transactions.append(
526
526
  TransactionRecord(
527
527
  confirmed_at_height=uint32(0),
528
- created_at_time=uint64(int(time.time())),
528
+ created_at_time=uint64(time.time()),
529
529
  to_puzzle_hash=new_full_puzzle.get_tree_hash(),
530
+ to_address=self.wallet_state_manager.encode_puzzle_hash(new_full_puzzle.get_tree_hash()),
530
531
  amount=uint64(1),
531
532
  fee_amount=fee,
532
533
  confirmed=False,
@@ -537,7 +538,7 @@ class PoolWallet:
537
538
  wallet_id=self.id(),
538
539
  sent_to=[],
539
540
  trade_id=None,
540
- memos=[],
541
+ memos={},
541
542
  type=uint32(TransactionType.OUTGOING_TX.value),
542
543
  name=unsigned_spend_bundle.name(),
543
544
  valid_times=ConditionValidTimes(),
@@ -792,7 +793,7 @@ class PoolWallet:
792
793
  ),
793
794
  )
794
795
 
795
- current_time = uint64(int(time.time()))
796
+ current_time = uint64(time.time())
796
797
  # The claim spend, minus the fee amount from the main wallet
797
798
  async with action_scope.use() as interface:
798
799
  interface.side_effects.transactions.append(
@@ -800,6 +801,7 @@ class PoolWallet:
800
801
  confirmed_at_height=uint32(0),
801
802
  created_at_time=current_time,
802
803
  to_puzzle_hash=current_state.current.target_puzzle_hash,
804
+ to_address=self.wallet_state_manager.encode_puzzle_hash(current_state.current.target_puzzle_hash),
803
805
  amount=uint64(total_amount),
804
806
  fee_amount=fee, # This will not be double counted in self.standard_wallet
805
807
  confirmed=False,
@@ -809,7 +811,7 @@ class PoolWallet:
809
811
  removals=claim_spend.removals(),
810
812
  wallet_id=uint32(self.wallet_id),
811
813
  sent_to=[],
812
- memos=[],
814
+ memos={},
813
815
  trade_id=None,
814
816
  type=uint32(TransactionType.OUTGOING_TX.value),
815
817
  name=claim_spend.name(),
@@ -77,6 +77,20 @@ class NewProofOfSpace(Streamable):
77
77
  fee_info: Optional[ProofOfSpaceFeeInfo]
78
78
 
79
79
 
80
+ @streamable
81
+ @dataclass(frozen=True)
82
+ class PartialProofsData(Streamable):
83
+ challenge_hash: bytes32
84
+ sp_hash: bytes32
85
+ plot_identifier: str
86
+ partial_proofs: list[bytes] # 16 * k bits blobs instead of 32-byte quality strings
87
+ signage_point_index: uint8
88
+ plot_size: uint8
89
+ pool_public_key: Optional[G1Element]
90
+ pool_contract_puzzle_hash: Optional[bytes32]
91
+ plot_public_key: G1Element
92
+
93
+
80
94
  # Source data corresponding to the hash that is sent to the Harvester for signing
81
95
  class SigningDataKind(IntEnum):
82
96
  FOLIAGE_BLOCK_DATA = 1
@@ -18,6 +18,7 @@ class NodeType(IntEnum):
18
18
  INTRODUCER = 5
19
19
  WALLET = 6
20
20
  DATA_LAYER = 7
21
+ SOLVER = 8
21
22
 
22
23
 
23
24
  @streamable
@@ -168,7 +168,7 @@ class ErrorResponse(Streamable):
168
168
 
169
169
  # Get the current authentication token according to "Farmer authentication" in SPECIFICATION.md
170
170
  def get_current_authentication_token(timeout: uint8) -> uint64:
171
- return uint64(int(int(time.time() / 60) / timeout))
171
+ return uint64(int(time.time() / 60) / timeout)
172
172
 
173
173
 
174
174
  # Validate a given authentication token against our local time
@@ -13,6 +13,7 @@ class ProtocolMessageTypes(Enum):
13
13
  new_proof_of_space = 5
14
14
  request_signatures = 6
15
15
  respond_signatures = 7
16
+ partial_proofs = 110
16
17
 
17
18
  # Farmer protocol (farmer <-> full_node)
18
19
  new_signage_point = 8
@@ -136,4 +137,10 @@ class ProtocolMessageTypes(Enum):
136
137
  request_cost_info = 106
137
138
  respond_cost_info = 107
138
139
 
140
+ # new farmer protocol messages
141
+ solution_response = 108
142
+
143
+ # solver protocol
144
+ solve = 109
145
+
139
146
  error = 255
@@ -17,6 +17,7 @@ protocol_version = {
17
17
  NodeType.INTRODUCER: "0.0.36",
18
18
  NodeType.WALLET: "0.0.38",
19
19
  NodeType.DATA_LAYER: "0.0.36",
20
+ NodeType.SOLVER: "0.0.37",
20
21
  }
21
22
 
22
23
  """
@@ -65,6 +66,7 @@ default_capabilities = {
65
66
  NodeType.INTRODUCER: _capabilities,
66
67
  NodeType.WALLET: _capabilities,
67
68
  NodeType.DATA_LAYER: _capabilities,
69
+ NodeType.SOLVER: _capabilities,
68
70
  }
69
71
 
70
72
 
@@ -0,0 +1,18 @@
1
+ from __future__ import annotations
2
+
3
+ from dataclasses import dataclass
4
+
5
+ from chia.util.streamable import Streamable, streamable
6
+
7
+
8
+ @streamable
9
+ @dataclass(frozen=True)
10
+ class SolverInfo(Streamable):
11
+ partial_proof: bytes # 16 * k bits blob, k (plot size) can be derived from this
12
+
13
+
14
+ @streamable
15
+ @dataclass(frozen=True)
16
+ class SolverResponse(Streamable):
17
+ partial_proof: bytes
18
+ proof: bytes
chia/rpc/rpc_server.py CHANGED
@@ -292,7 +292,7 @@ class RpcServer(Generic[_T_RpcApiProtocol]):
292
292
  async def open_connection(self, request: dict[str, Any]) -> EndpointResult:
293
293
  host = request["host"]
294
294
  port = request["port"]
295
- target_node: PeerInfo = PeerInfo(await resolve(host, prefer_ipv6=self.prefer_ipv6), uint16(int(port)))
295
+ target_node: PeerInfo = PeerInfo(await resolve(host, prefer_ipv6=self.prefer_ipv6), uint16(port))
296
296
  on_connect = None
297
297
  if hasattr(self.rpc_api.service, "on_connect"):
298
298
  on_connect = self.rpc_api.service.on_connect
@@ -195,11 +195,10 @@ class CrawlStore:
195
195
  counter += 1
196
196
  if reliability.ignore_till < now and reliability.ban_till < now:
197
197
  add = True
198
- else:
199
- if reliability.ban_till >= now:
200
- self.banned_peers += 1
201
- elif reliability.ignore_till >= now:
202
- self.ignored_peers += 1
198
+ elif reliability.ban_till >= now:
199
+ self.banned_peers += 1
200
+ elif reliability.ignore_till >= now:
201
+ self.ignored_peers += 1
203
202
  record = self.host_to_records[peer_id]
204
203
  if record.last_try_timestamp == 0 and record.connected_timestamp == 0:
205
204
  add = True
@@ -342,9 +341,6 @@ class CrawlStore:
342
341
  handshake = {}
343
342
 
344
343
  for host, record in self.host_to_records.items():
345
- if host not in self.host_to_records:
346
- continue
347
- record = self.host_to_records[host]
348
344
  if record.version == "undefined":
349
345
  continue
350
346
  if record.handshake_time < time.time() - 5 * 24 * 3600: