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
@@ -7,7 +7,7 @@ from typing import Any, Callable, Optional
7
7
  import pytest
8
8
  from chia_rs import G2Element
9
9
  from chia_rs.sized_bytes import bytes32
10
- from chia_rs.sized_ints import uint64
10
+ from chia_rs.sized_ints import uint8, uint16, uint32, uint64
11
11
  from typing_extensions import Literal
12
12
 
13
13
  from chia._tests.environments.wallet import WalletEnvironment, WalletStateTransition, WalletTestFramework
@@ -31,6 +31,9 @@ from chia.wallet.vc_wallet.vc_store import VCProofs, VCRecord
31
31
  from chia.wallet.wallet import Wallet
32
32
  from chia.wallet.wallet_node import WalletNode
33
33
  from chia.wallet.wallet_request_types import (
34
+ CATSpend,
35
+ GetTransactions,
36
+ GetWallets,
34
37
  VCAddProofs,
35
38
  VCGet,
36
39
  VCGetList,
@@ -38,6 +41,7 @@ from chia.wallet.wallet_request_types import (
38
41
  VCMint,
39
42
  VCRevoke,
40
43
  VCSpend,
44
+ WalletInfoResponse,
41
45
  )
42
46
  from chia.wallet.wallet_rpc_client import WalletRpcClient
43
47
  from chia.wallet.wallet_spend_bundle import WalletSpendBundle
@@ -363,26 +367,32 @@ async def test_vc_lifecycle(wallet_environments: WalletTestFramework) -> None:
363
367
  wallet_node_0.wallet_state_manager.main_wallet,
364
368
  (await wallet_node_0.wallet_state_manager.get_all_wallet_info_entries(wallet_type=WalletType.CRCAT))[0],
365
369
  )
366
- assert {
367
- "data": bytes(cr_cat_wallet_0.info).hex(),
368
- "id": env_0.dealias_wallet_id("crcat"),
369
- "name": cr_cat_wallet_0.get_name(),
370
- "type": cr_cat_wallet_0.type(),
371
- "authorized_providers": [p.hex() for p in cr_cat_wallet_0.info.authorized_providers],
372
- "flags_needed": cr_cat_wallet_0.info.proofs_checker.flags,
373
- } == (await client_0.get_wallets(wallet_type=cr_cat_wallet_0.type()))[0]
370
+ assert (
371
+ WalletInfoResponse(
372
+ data=bytes(cr_cat_wallet_0.info).hex(),
373
+ id=env_0.dealias_wallet_id("crcat"),
374
+ name=cr_cat_wallet_0.get_name(),
375
+ type=uint8(cr_cat_wallet_0.type()),
376
+ authorized_providers=cr_cat_wallet_0.info.authorized_providers,
377
+ flags_needed=cr_cat_wallet_0.info.proofs_checker.flags,
378
+ )
379
+ == (await client_0.get_wallets(GetWallets(type=uint16(cr_cat_wallet_0.type())))).wallets[0]
380
+ )
374
381
  assert await wallet_node_0.wallet_state_manager.get_wallet_for_asset_id(cr_cat_wallet_0.get_asset_id()) is not None
375
382
  async with wallet_1.wallet_state_manager.new_action_scope(wallet_environments.tx_config, push=True) as action_scope:
376
383
  wallet_1_ph = await action_scope.get_puzzle_hash(wallet_1.wallet_state_manager)
377
384
  wallet_1_addr = encode_puzzle_hash(wallet_1_ph, "txch")
378
385
  txs = (
379
386
  await client_0.cat_spend(
380
- cr_cat_wallet_0.id(),
387
+ CATSpend(
388
+ wallet_id=cr_cat_wallet_0.id(),
389
+ amount=uint64(90),
390
+ inner_address=wallet_1_addr,
391
+ fee=uint64(2000000000),
392
+ memos=["hey"],
393
+ push=True,
394
+ ),
381
395
  wallet_environments.tx_config,
382
- uint64(90),
383
- wallet_1_addr,
384
- uint64(2000000000),
385
- memos=["hey"],
386
396
  )
387
397
  ).transactions
388
398
  await wallet_environments.process_pending_states(
@@ -449,13 +459,17 @@ async def test_vc_lifecycle(wallet_environments: WalletTestFramework) -> None:
449
459
  assert await wallet_node_1.wallet_state_manager.wallets[env_1.dealias_wallet_id("crcat")].match_hinted_coin(
450
460
  next(c for tx in txs for c in tx.additions if c.amount == 90), wallet_1_ph
451
461
  )
452
- pending_tx = await client_1.get_transactions(
453
- env_1.dealias_wallet_id("crcat"),
454
- 0,
455
- 1,
456
- reverse=True,
457
- type_filter=TransactionTypeFilter.include([TransactionType.INCOMING_CRCAT_PENDING]),
458
- )
462
+ pending_tx = (
463
+ await client_1.get_transactions(
464
+ GetTransactions(
465
+ uint32(env_1.dealias_wallet_id("crcat")),
466
+ uint16(0),
467
+ uint16(1),
468
+ reverse=True,
469
+ type_filter=TransactionTypeFilter.include([TransactionType.INCOMING_CRCAT_PENDING]),
470
+ )
471
+ )
472
+ ).transactions
459
473
  assert len(pending_tx) == 1
460
474
 
461
475
  # Send the VC to wallet_1 to use for the CR-CATs
@@ -547,10 +561,12 @@ async def test_vc_lifecycle(wallet_environments: WalletTestFramework) -> None:
547
561
  # (Negative test) Try to spend a CR-CAT that we don't have a valid VC for
548
562
  with pytest.raises(ValueError):
549
563
  await client_0.cat_spend(
550
- cr_cat_wallet_0.id(),
551
- wallet_environments.tx_config,
552
- uint64(10),
553
- wallet_1_addr,
564
+ CATSpend(
565
+ wallet_id=cr_cat_wallet_0.id(),
566
+ amount=uint64(10),
567
+ inner_address=wallet_1_addr,
568
+ ),
569
+ tx_config=wallet_environments.tx_config,
554
570
  )
555
571
 
556
572
  # Test melting a CRCAT
@@ -558,12 +574,17 @@ async def test_vc_lifecycle(wallet_environments: WalletTestFramework) -> None:
558
574
  with wallet_environments.new_puzzle_hashes_allowed():
559
575
  tx = (
560
576
  await client_1.cat_spend(
561
- env_1.dealias_wallet_id("crcat"),
562
- wallet_environments.tx_config,
563
- uint64(20),
564
- wallet_1_addr,
565
- uint64(0),
566
- cat_discrepancy=(-50, Program.to(None), Program.to(None)),
577
+ CATSpend(
578
+ wallet_id=env_1.dealias_wallet_id("crcat"),
579
+ amount=uint64(20),
580
+ inner_address=wallet_1_addr,
581
+ fee=uint64(0),
582
+ extra_delta=str(-50),
583
+ tail_reveal=b"\x80",
584
+ tail_solution=b"\x80",
585
+ push=True,
586
+ ),
587
+ tx_config=wallet_environments.tx_config,
567
588
  )
568
589
  ).transaction
569
590
  [tx] = await wallet_node_1.wallet_state_manager.add_pending_transactions([tx])
@@ -748,7 +769,7 @@ async def test_self_revoke(wallet_environments: WalletTestFramework) -> None:
748
769
  async with did_wallet.wallet_state_manager.new_action_scope(
749
770
  wallet_environments.tx_config, push=True
750
771
  ) as action_scope:
751
- await did_wallet.transfer_did(bytes32.zeros, uint64(0), False, action_scope)
772
+ await did_wallet.transfer_did(bytes32.zeros, uint64(0), action_scope)
752
773
 
753
774
  await wallet_environments.process_pending_states(
754
775
  [
chia/apis.py CHANGED
@@ -6,6 +6,7 @@ from chia.harvester.harvester_api import HarvesterAPI
6
6
  from chia.introducer.introducer_api import IntroducerAPI
7
7
  from chia.protocols.outbound_message import NodeType
8
8
  from chia.server.api_protocol import ApiProtocol
9
+ from chia.solver.solver_api import SolverAPI
9
10
  from chia.timelord.timelord_api import TimelordAPI
10
11
  from chia.wallet.wallet_node_api import WalletNodeAPI
11
12
 
@@ -16,4 +17,5 @@ ApiProtocolRegistry: dict[NodeType, type[ApiProtocol]] = {
16
17
  NodeType.TIMELORD: TimelordAPI,
17
18
  NodeType.FARMER: FarmerAPI,
18
19
  NodeType.HARVESTER: HarvesterAPI,
20
+ NodeType.SOLVER: SolverAPI,
19
21
  }
chia/cmds/beta.py CHANGED
@@ -92,10 +92,14 @@ def enable_cmd(ctx: click.Context, force: bool, path: Optional[str]) -> None:
92
92
  current_path = config.get("beta", {}).get("path")
93
93
  current_path = None if current_path is None else Path(current_path)
94
94
 
95
- if path is None and current_path is None:
96
- beta_root_path = prompt_for_beta_path(current_path or default_beta_root_path())
95
+ path_to_use: Optional[Path] = None if path is None else Path(path)
96
+ if path_to_use is None:
97
+ path_to_use = current_path
98
+
99
+ if path_to_use is None:
100
+ beta_root_path = prompt_for_beta_path(default_beta_root_path())
97
101
  else:
98
- beta_root_path = Path(path or current_path)
102
+ beta_root_path = path_to_use
99
103
  validate_beta_path(beta_root_path)
100
104
 
101
105
  update_beta_config(True, beta_root_path, metrics_log_interval_default, config)
chia/cmds/chia.py CHANGED
@@ -24,6 +24,7 @@ from chia.cmds.plots import plots_cmd
24
24
  from chia.cmds.plotters import plotters_cmd
25
25
  from chia.cmds.rpc import rpc_cmd
26
26
  from chia.cmds.show import show_cmd
27
+ from chia.cmds.solver import solver_cmd
27
28
  from chia.cmds.start import start_cmd
28
29
  from chia.cmds.stop import stop_cmd
29
30
  from chia.cmds.wallet import wallet_cmd
@@ -127,6 +128,7 @@ cli.add_command(configure_cmd)
127
128
  cli.add_command(init_cmd)
128
129
  cli.add_command(rpc_cmd)
129
130
  cli.add_command(show_cmd)
131
+ cli.add_command(solver_cmd)
130
132
  cli.add_command(start_cmd)
131
133
  cli.add_command(stop_cmd)
132
134
  cli.add_command(netspace_cmd)
chia/cmds/cmd_classes.py CHANGED
@@ -5,7 +5,6 @@ import collections
5
5
  import dataclasses
6
6
  import inspect
7
7
  import pathlib
8
- import sys
9
8
  from dataclasses import MISSING, dataclass, field, fields
10
9
  from typing import (
11
10
  Any,
@@ -45,12 +44,6 @@ ChiaCommand = Union[SyncChiaCommand, AsyncChiaCommand]
45
44
 
46
45
 
47
46
  def option(*param_decls: str, **kwargs: Any) -> Any:
48
- if sys.version_info >= (3, 10):
49
- default_default = MISSING
50
- else: # versions < 3.10 don't know about kw_only and they complain about lacks of defaults
51
- # Can't get coverage on this because we only test on one version
52
- default_default = None # pragma: no cover
53
-
54
47
  return field(
55
48
  metadata=dict(
56
49
  option_args=dict(
@@ -58,7 +51,7 @@ def option(*param_decls: str, **kwargs: Any) -> Any:
58
51
  **kwargs,
59
52
  ),
60
53
  ),
61
- default=kwargs.get("default", default_default),
54
+ default=kwargs.get("default", MISSING),
62
55
  )
63
56
 
64
57
 
@@ -181,10 +174,10 @@ def _generate_command_parser(cls: type[ChiaCommand]) -> _CommandParsingStage:
181
174
  needs_context: bool = False
182
175
 
183
176
  hints = get_type_hints(cls)
184
- _fields = fields(cls) # type: ignore[arg-type]
177
+ cls_fields = fields(cls) # type: ignore[arg-type]
185
178
 
186
- for _field in _fields:
187
- field_name = _field.name
179
+ for cls_field in cls_fields:
180
+ field_name = cls_field.name
188
181
  if getattr(hints[field_name], COMMAND_HELPER_ATTRIBUTE_NAME, False):
189
182
  members[field_name] = _generate_command_parser(hints[field_name])
190
183
  elif field_name == "context":
@@ -193,9 +186,9 @@ def _generate_command_parser(cls: type[ChiaCommand]) -> _CommandParsingStage:
193
186
  else:
194
187
  needs_context = True
195
188
  kwarg_names.append(field_name)
196
- elif "option_args" in _field.metadata:
189
+ elif "option_args" in cls_field.metadata:
197
190
  option_args: dict[str, Any] = {"multiple": False, "required": False}
198
- option_args.update(_field.metadata["option_args"])
191
+ option_args.update(cls_field.metadata["option_args"])
199
192
 
200
193
  if "type" not in option_args:
201
194
  origin = get_origin(hints[field_name])
@@ -270,16 +263,10 @@ def chia_command(
270
263
  def _chia_command(cls: type[ChiaCommand]) -> type[ChiaCommand]:
271
264
  # The type ignores here are largely due to the fact that the class information is not preserved after being
272
265
  # passed through the dataclass wrapper. Not sure what to do about this right now.
273
- if sys.version_info >= (3, 10):
274
- wrapped_cls: type[ChiaCommand] = dataclass(
275
- frozen=True,
276
- kw_only=True,
277
- )(cls)
278
- else: # pragma: no cover
279
- # stuff below 3.10 doesn't know about kw_only
280
- wrapped_cls: type[ChiaCommand] = dataclass(
281
- frozen=True,
282
- )(cls)
266
+ wrapped_cls: type[ChiaCommand] = dataclass(
267
+ frozen=True,
268
+ kw_only=True,
269
+ )(cls)
283
270
 
284
271
  metadata = Metadata(
285
272
  command=click.command(
@@ -316,9 +303,6 @@ def get_chia_command_metadata(cls: type[ChiaCommand]) -> Metadata:
316
303
 
317
304
  @dataclass_transform(frozen_default=True)
318
305
  def command_helper(cls: type[Any]) -> type[Any]:
319
- if sys.version_info >= (3, 10):
320
- new_cls = dataclass(frozen=True, kw_only=True)(cls)
321
- else: # stuff below 3.10 doesn't support kw_only
322
- new_cls = dataclass(frozen=True)(cls) # pragma: no cover
306
+ new_cls = dataclass(frozen=True, kw_only=True)(cls)
323
307
  setattr(new_cls, COMMAND_HELPER_ATTRIBUTE_NAME, True)
324
308
  return new_cls
chia/cmds/cmds_util.py CHANGED
@@ -23,6 +23,7 @@ from chia.full_node.full_node_rpc_client import FullNodeRpcClient
23
23
  from chia.harvester.harvester_rpc_client import HarvesterRpcClient
24
24
  from chia.rpc.rpc_client import ResponseFailureError, RpcClient
25
25
  from chia.simulator.simulator_full_node_rpc_client import SimulatorFullNodeRpcClient
26
+ from chia.solver.solver_rpc_client import SolverRpcClient
26
27
  from chia.types.mempool_submission_status import MempoolSubmissionStatus
27
28
  from chia.util.config import load_config
28
29
  from chia.util.errors import CliRpcConnectionError, InvalidPathError
@@ -42,6 +43,7 @@ NODE_TYPES: dict[str, type[RpcClient]] = {
42
43
  "harvester": HarvesterRpcClient,
43
44
  "data_layer": DataLayerRpcClient,
44
45
  "simulator": SimulatorFullNodeRpcClient,
46
+ "solver": SolverRpcClient,
45
47
  }
46
48
 
47
49
  node_config_section_names: dict[type[RpcClient], str] = {
@@ -52,6 +54,7 @@ node_config_section_names: dict[type[RpcClient], str] = {
52
54
  HarvesterRpcClient: "harvester",
53
55
  DataLayerRpcClient: "data_layer",
54
56
  SimulatorFullNodeRpcClient: "full_node",
57
+ SolverRpcClient: "solver",
55
58
  }
56
59
 
57
60
  _T_RpcClient = TypeVar("_T_RpcClient", bound=RpcClient)
chia/cmds/coin_funcs.py CHANGED
@@ -18,7 +18,7 @@ from chia.util.config import selected_network_address_prefix
18
18
  from chia.wallet.conditions import ConditionValidTimes
19
19
  from chia.wallet.transaction_record import TransactionRecord
20
20
  from chia.wallet.util.wallet_types import WalletType
21
- from chia.wallet.wallet_request_types import CombineCoins, SplitCoins
21
+ from chia.wallet.wallet_request_types import CombineCoins, GetCoinRecordsByNames, GetSpendableCoins, SplitCoins
22
22
 
23
23
 
24
24
  async def async_list(
@@ -44,23 +44,28 @@ async def async_list(
44
44
  if not (await client_info.client.get_sync_status()).synced:
45
45
  print("Wallet not synced. Please wait.")
46
46
  return
47
- conf_coins, unconfirmed_removals, unconfirmed_additions = await client_info.client.get_spendable_coins(
48
- wallet_id=wallet_id,
49
- coin_selection_config=CMDCoinSelectionConfigLoader(
50
- max_coin_amount=max_coin_amount,
51
- min_coin_amount=min_coin_amount,
52
- excluded_coin_amounts=list(excluded_amounts),
53
- excluded_coin_ids=list(excluded_coin_ids),
54
- ).to_coin_selection_config(mojo_per_unit),
47
+ response = await client_info.client.get_spendable_coins(
48
+ GetSpendableCoins.from_coin_selection_config(
49
+ wallet_id=uint32(wallet_id),
50
+ coin_selection_config=CMDCoinSelectionConfigLoader(
51
+ max_coin_amount=max_coin_amount,
52
+ min_coin_amount=min_coin_amount,
53
+ excluded_coin_amounts=list(excluded_amounts),
54
+ excluded_coin_ids=list(excluded_coin_ids),
55
+ ).to_coin_selection_config(mojo_per_unit),
56
+ )
57
+ )
58
+ print(
59
+ f"There are a total of {len(response.confirmed_records) + len(response.unconfirmed_additions)}"
60
+ f" coins in wallet {wallet_id}."
55
61
  )
56
- print(f"There are a total of {len(conf_coins) + len(unconfirmed_additions)} coins in wallet {wallet_id}.")
57
- print(f"{len(conf_coins)} confirmed coins.")
58
- print(f"{len(unconfirmed_additions)} unconfirmed additions.")
59
- print(f"{len(unconfirmed_removals)} unconfirmed removals.")
62
+ print(f"{len(response.confirmed_records)} confirmed coins.")
63
+ print(f"{len(response.unconfirmed_additions)} unconfirmed additions.")
64
+ print(f"{len(response.unconfirmed_removals)} unconfirmed removals.")
60
65
  print("Confirmed coins:")
61
66
  print_coins(
62
67
  "\tAddress: {} Amount: {}, Confirmed in block: {}\n",
63
- [(cr.coin, str(cr.confirmed_block_index)) for cr in conf_coins],
68
+ [(cr.coin, str(cr.confirmed_block_index)) for cr in response.confirmed_records],
64
69
  mojo_per_unit,
65
70
  addr_prefix,
66
71
  paginate,
@@ -69,7 +74,7 @@ async def async_list(
69
74
  print("\nUnconfirmed Removals:")
70
75
  print_coins(
71
76
  "\tPrevious Address: {} Amount: {}, Confirmed in block: {}\n",
72
- [(cr.coin, str(cr.confirmed_block_index)) for cr in unconfirmed_removals],
77
+ [(cr.coin, str(cr.confirmed_block_index)) for cr in response.unconfirmed_removals],
73
78
  mojo_per_unit,
74
79
  addr_prefix,
75
80
  paginate,
@@ -77,7 +82,7 @@ async def async_list(
77
82
  print("\nUnconfirmed Additions:")
78
83
  print_coins(
79
84
  "\tNew Address: {} Amount: {}, Not yet confirmed in a block.{}\n",
80
- [(coin, "") for coin in unconfirmed_additions],
85
+ [(coin, "") for coin in response.unconfirmed_additions],
81
86
  mojo_per_unit,
82
87
  addr_prefix,
83
88
  paginate,
@@ -217,19 +222,19 @@ async def async_split(
217
222
  return []
218
223
 
219
224
  if number_of_coins is None:
220
- coins = await client_info.client.get_coin_records_by_names([target_coin_id])
221
- if len(coins) == 0:
225
+ response = await client_info.client.get_coin_records_by_names(GetCoinRecordsByNames([target_coin_id]))
226
+ if len(response.coin_records) == 0:
222
227
  print("Could not find target coin.")
223
228
  return []
224
229
  assert amount_per_coin is not None
225
- number_of_coins = int(coins[0].coin.amount // amount_per_coin.convert_amount(mojo_per_unit))
230
+ number_of_coins = int(response.coin_records[0].coin.amount // amount_per_coin.convert_amount(mojo_per_unit))
226
231
  elif amount_per_coin is None:
227
- coins = await client_info.client.get_coin_records_by_names([target_coin_id])
228
- if len(coins) == 0:
232
+ response = await client_info.client.get_coin_records_by_names(GetCoinRecordsByNames([target_coin_id]))
233
+ if len(response.coin_records) == 0:
229
234
  print("Could not find target coin.")
230
235
  return []
231
236
  assert number_of_coins is not None
232
- amount_per_coin = CliAmount(True, uint64(coins[0].coin.amount // number_of_coins))
237
+ amount_per_coin = CliAmount(True, uint64(response.coin_records[0].coin.amount // number_of_coins))
233
238
 
234
239
  final_amount_per_coin = amount_per_coin.convert_amount(mojo_per_unit)
235
240
 
chia/cmds/configure.py CHANGED
@@ -16,11 +16,13 @@ from chia.util.config import (
16
16
  save_config,
17
17
  str2bool,
18
18
  )
19
+ from chia.util.network import parse_host_port
19
20
 
20
21
 
21
22
  def configure(
22
23
  root_path: Path,
23
24
  set_farmer_peer: str,
25
+ set_solver_peer: str,
24
26
  set_node_introducer: str,
25
27
  set_fullnode_port: str,
26
28
  set_harvester_port: str,
@@ -34,6 +36,7 @@ def configure(
34
36
  crawler_minimum_version_count: Optional[int],
35
37
  seeder_domain_name: str,
36
38
  seeder_nameserver: str,
39
+ set_solver_trusted_peers_only: str,
37
40
  ) -> None:
38
41
  config_yaml = "config.yaml"
39
42
  with lock_and_load_config(root_path, config_yaml, fill_missing_services=True) as config:
@@ -42,30 +45,41 @@ def configure(
42
45
  change_made = False
43
46
  if set_node_introducer:
44
47
  try:
45
- if set_node_introducer.index(":"):
46
- host, port = (
47
- ":".join(set_node_introducer.split(":")[:-1]),
48
- set_node_introducer.split(":")[-1],
49
- )
50
- config["full_node"]["introducer_peer"]["host"] = host
51
- config["full_node"]["introducer_peer"]["port"] = int(port)
52
- config["introducer"]["port"] = int(port)
53
- print("Node introducer updated")
54
- change_made = True
48
+ host, port = parse_host_port(set_node_introducer)
49
+ config["full_node"]["introducer_peer"]["host"] = host
50
+ config["full_node"]["introducer_peer"]["port"] = port
51
+ config["introducer"]["port"] = port
52
+ print("Node introducer updated")
53
+ change_made = True
55
54
  except ValueError:
56
55
  print("Node introducer address must be in format [IP:Port]")
57
56
  if set_farmer_peer:
58
57
  try:
59
- if set_farmer_peer.index(":"):
60
- host, port = (
61
- ":".join(set_farmer_peer.split(":")[:-1]),
62
- set_farmer_peer.split(":")[-1],
63
- )
64
- set_peer_info(config["harvester"], peer_type=NodeType.FARMER, peer_host=host, peer_port=int(port))
65
- print("Farmer peer updated, make sure your harvester has the proper cert installed")
66
- change_made = True
58
+ host, port = parse_host_port(set_farmer_peer)
59
+ set_peer_info(config["harvester"], peer_type=NodeType.FARMER, peer_host=host, peer_port=port)
60
+ print("Farmer peer updated, make sure your harvester has the proper cert installed")
61
+ change_made = True
67
62
  except ValueError:
68
63
  print("Farmer address must be in format [IP:Port]")
64
+ if set_solver_peer:
65
+ try:
66
+ host, port = parse_host_port(set_solver_peer)
67
+ # ensure farmer section has solver_peers field
68
+ if "solver_peers" not in config["farmer"]:
69
+ config["farmer"]["solver_peers"] = []
70
+ # Set single solver peer (overrides any existing)
71
+ config["farmer"]["solver_peers"] = [{"host": host, "port": port}]
72
+ print(f"Solver peer updated to {host}:{port}")
73
+ change_made = True
74
+ except ValueError:
75
+ print("Solver address must be in format [IP:Port]")
76
+ if set_solver_trusted_peers_only:
77
+ config["solver"]["trusted_peers_only"] = str2bool(set_solver_trusted_peers_only)
78
+ if str2bool(set_solver_trusted_peers_only):
79
+ print("Solver will only accept trusted peer connections")
80
+ else:
81
+ print("Solver will accept connections from all peers")
82
+ change_made = True
69
83
  if set_fullnode_port:
70
84
  config["full_node"]["port"] = int(set_fullnode_port)
71
85
  config["full_node"]["introducer_peer"]["port"] = int(set_fullnode_port)
@@ -244,6 +258,12 @@ def configure(
244
258
  )
245
259
  @click.option("--set-node-introducer", help="Set the introducer for node - IP:Port", type=str)
246
260
  @click.option("--set-farmer-peer", help="Set the farmer peer for harvester - IP:Port", type=str)
261
+ @click.option("--set-solver-peer", help="Set the solver peer for farmer - IP:Port", type=str)
262
+ @click.option(
263
+ "--set-solver-trusted-peers-only",
264
+ help="Enable/disable trusted peer requirement for solver connections",
265
+ type=click.Choice(["true", "t", "false", "f"]),
266
+ )
247
267
  @click.option(
248
268
  "--set-fullnode-port",
249
269
  help="Set the port to use for the fullnode, useful for testing",
@@ -299,6 +319,7 @@ def configure(
299
319
  def configure_cmd(
300
320
  ctx: click.Context,
301
321
  set_farmer_peer: str,
322
+ set_solver_peer: str,
302
323
  set_node_introducer: str,
303
324
  set_fullnode_port: str,
304
325
  set_harvester_port: str,
@@ -312,10 +333,12 @@ def configure_cmd(
312
333
  crawler_minimum_version_count: int,
313
334
  seeder_domain_name: str,
314
335
  seeder_nameserver: str,
336
+ set_solver_trusted_peers_only: str,
315
337
  ) -> None:
316
338
  configure(
317
339
  ChiaCliContext.set_default(ctx).root_path,
318
340
  set_farmer_peer,
341
+ set_solver_peer,
319
342
  set_node_introducer,
320
343
  set_fullnode_port,
321
344
  set_harvester_port,
@@ -329,4 +352,5 @@ def configure_cmd(
329
352
  crawler_minimum_version_count,
330
353
  seeder_domain_name,
331
354
  seeder_nameserver,
355
+ set_solver_trusted_peers_only,
332
356
  )
chia/cmds/dev/data.py CHANGED
@@ -23,7 +23,7 @@ from chia.cmds.cmd_classes import ChiaCliContext, chia_command, option
23
23
  from chia.cmds.cmd_helpers import NeedsWalletRPC
24
24
  from chia.data_layer.data_layer import server_files_path_from_config
25
25
  from chia.data_layer.data_layer_util import ServerInfo, Status, Subscription
26
- from chia.data_layer.data_store import DataStore
26
+ from chia.data_layer.data_store import DataStore, default_prefer_file_kv_blob_length
27
27
  from chia.data_layer.download_data import insert_from_delta_file
28
28
  from chia.util.chia_logging import initialize_logging
29
29
  from chia.util.config import load_config
@@ -78,6 +78,11 @@ class SyncTimeCommand:
78
78
  profile_tasks: bool = option("--profile-tasks/--no-profile-tasks")
79
79
  restart_all: bool = option("--restart-all/--no-restart-all")
80
80
  working_path: Optional[Path] = option("--working-path", default=None)
81
+ prefer_db_kv_blob_length: int = option(
82
+ "--prefer-db-kv-blob-length",
83
+ default=default_prefer_file_kv_blob_length,
84
+ type=int,
85
+ )
81
86
 
82
87
  async def run(self) -> None:
83
88
  config = load_config(self.context.root_path, "config.yaml", "data_layer", fill_missing_services=True)
@@ -104,14 +109,28 @@ class SyncTimeCommand:
104
109
  working_path = self.working_path
105
110
  working_path.mkdir(parents=True, exist_ok=True)
106
111
 
112
+ print_date(f"working in: {working_path}")
113
+
107
114
  database_path = working_path.joinpath("datalayer.sqlite")
108
- print_date(f"working with database at: {database_path}")
115
+
116
+ merkle_blob_path = working_path.joinpath("merkle-blobs")
117
+ merkle_blob_path.mkdir(parents=True, exist_ok=True)
118
+
119
+ key_value_blob_path = working_path.joinpath("key-value-blobs")
120
+ key_value_blob_path.mkdir(parents=True, exist_ok=True)
109
121
 
110
122
  wallet_client_info = await exit_stack.enter_async_context(self.wallet_rpc_info.wallet_rpc())
111
123
  wallet_rpc = wallet_client_info.client
112
124
  await wallet_rpc.dl_track_new(DLTrackNew(launcher_id=self.store_id))
113
125
 
114
- data_store = await exit_stack.enter_async_context(DataStore.managed(database=database_path))
126
+ data_store = await exit_stack.enter_async_context(
127
+ DataStore.managed(
128
+ database=database_path,
129
+ merkle_blobs_path=merkle_blob_path,
130
+ key_value_blobs_path=key_value_blob_path,
131
+ prefer_db_kv_blob_length=self.prefer_db_kv_blob_length,
132
+ )
133
+ )
115
134
 
116
135
  await data_store.subscribe(subscription=Subscription(store_id=self.store_id, servers_info=[]))
117
136
 
chia/cmds/farm.py CHANGED
@@ -49,6 +49,13 @@ def farm_cmd() -> None:
49
49
  default=None,
50
50
  show_default=True,
51
51
  )
52
+ @click.option(
53
+ "-i",
54
+ "--include-pool-rewards",
55
+ help="Include pool farming rewards in the total farmed amount",
56
+ is_flag=True,
57
+ default=False,
58
+ )
52
59
  @click.pass_context
53
60
  def summary_cmd(
54
61
  ctx: click.Context,
@@ -56,6 +63,7 @@ def summary_cmd(
56
63
  wallet_rpc_port: Optional[int],
57
64
  harvester_rpc_port: Optional[int],
58
65
  farmer_rpc_port: Optional[int],
66
+ include_pool_rewards: bool,
59
67
  ) -> None:
60
68
  import asyncio
61
69
 
@@ -67,6 +75,7 @@ def summary_cmd(
67
75
  wallet_rpc_port,
68
76
  harvester_rpc_port,
69
77
  farmer_rpc_port,
78
+ include_pool_rewards,
70
79
  root_path=ChiaCliContext.set_default(ctx).root_path,
71
80
  )
72
81
  )
@@ -96,3 +105,26 @@ def challenges_cmd(ctx: click.Context, farmer_rpc_port: Optional[int], limit: in
96
105
  from chia.cmds.farm_funcs import challenges
97
106
 
98
107
  asyncio.run(challenges(ChiaCliContext.set_default(ctx).root_path, farmer_rpc_port, limit))
108
+
109
+
110
+ @farm_cmd.command("connect-solver", help="Connect to a solver")
111
+ @click.option(
112
+ "-fp",
113
+ "--farmer-rpc-port",
114
+ help="Set the port where the Farmer is hosting the RPC interface",
115
+ type=int,
116
+ default=None,
117
+ show_default=True,
118
+ )
119
+ @click.argument("solver_address", required=True)
120
+ @click.pass_context
121
+ def connect_solver_cmd(
122
+ ctx: click.Context,
123
+ farmer_rpc_port: Optional[int],
124
+ solver_address: str,
125
+ ) -> None:
126
+ import asyncio
127
+
128
+ from chia.cmds.farm_funcs import solver_connect
129
+
130
+ asyncio.run(solver_connect(ChiaCliContext.set_default(ctx).root_path, farmer_rpc_port, solver_address))