chia-blockchain 2.5.6rc2__py3-none-any.whl → 2.5.7__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. chia/_tests/blockchain/blockchain_test_utils.py +6 -7
  2. chia/_tests/blockchain/test_augmented_chain.py +4 -3
  3. chia/_tests/blockchain/test_blockchain.py +10 -5
  4. chia/_tests/clvm/coin_store.py +1 -1
  5. chia/_tests/cmds/cmd_test_utils.py +84 -97
  6. chia/_tests/cmds/test_dev_gh.py +1 -1
  7. chia/_tests/cmds/test_farm_cmd.py +56 -2
  8. chia/_tests/cmds/wallet/test_consts.py +3 -1
  9. chia/_tests/cmds/wallet/test_did.py +3 -8
  10. chia/_tests/cmds/wallet/test_nft.py +6 -6
  11. chia/_tests/cmds/wallet/test_notifications.py +39 -21
  12. chia/_tests/cmds/wallet/test_vcs.py +2 -1
  13. chia/_tests/cmds/wallet/test_wallet.py +160 -136
  14. chia/_tests/conftest.py +51 -26
  15. chia/_tests/core/cmds/test_wallet.py +4 -3
  16. chia/_tests/core/consensus/test_pot_iterations.py +71 -24
  17. chia/_tests/core/custom_types/test_proof_of_space.py +60 -30
  18. chia/_tests/core/custom_types/test_spend_bundle.py +1 -4
  19. chia/_tests/core/data_layer/conftest.py +7 -2
  20. chia/_tests/core/data_layer/old_format/__init__.py +0 -0
  21. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-005876c1cdc4d5f1726551b207b9f63efc9cd2f72df80a3a26a1ba73d40d6745-delta-23-v1.0.dat +0 -0
  22. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-005876c1cdc4d5f1726551b207b9f63efc9cd2f72df80a3a26a1ba73d40d6745-full-23-v1.0.dat +0 -0
  23. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-01b36e72a975cdc00d6514eea81668d19e8ea3150217ae98cb3361688a016fab-delta-9-v1.0.dat +0 -0
  24. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-01b36e72a975cdc00d6514eea81668d19e8ea3150217ae98cb3361688a016fab-full-9-v1.0.dat +0 -0
  25. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-06147c3b12d73e9b83b686a8c10b4a36a513c8a93c0ff99ae197f06326278be9-delta-5-v1.0.dat +0 -0
  26. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-06147c3b12d73e9b83b686a8c10b4a36a513c8a93c0ff99ae197f06326278be9-full-5-v1.0.dat +0 -0
  27. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-073c051a5934ad3b8db39eee2189e4300e55f48aaa17ff4ae30eeae088ff544a-delta-22-v1.0.dat +0 -0
  28. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-073c051a5934ad3b8db39eee2189e4300e55f48aaa17ff4ae30eeae088ff544a-full-22-v1.0.dat +0 -0
  29. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-0cc077559b9c7b4aefe8f8f591c195e0779bebdf89f2ad8285a00ea5f859d965-delta-1-v1.0.dat +0 -0
  30. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-0cc077559b9c7b4aefe8f8f591c195e0779bebdf89f2ad8285a00ea5f859d965-full-1-v1.0.dat +0 -0
  31. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-16377275567b723b20936d3f1ec0a2fd83f6ac379b922351a5e4c54949069f3b-delta-2-v1.0.dat +0 -0
  32. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-16377275567b723b20936d3f1ec0a2fd83f6ac379b922351a5e4c54949069f3b-full-2-v1.0.dat +0 -0
  33. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-1cb824a7a5f02cd30ac6c38e8f6216780d9bfa2d24811d282a368dcd541438a7-delta-29-v1.0.dat +0 -0
  34. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-1cb824a7a5f02cd30ac6c38e8f6216780d9bfa2d24811d282a368dcd541438a7-full-29-v1.0.dat +0 -0
  35. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-27b89dc4809ebc5a3b87757d35e95e2761d978cf121e44fa2773a5c06e4cc7b5-delta-28-v1.0.dat +0 -0
  36. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-27b89dc4809ebc5a3b87757d35e95e2761d978cf121e44fa2773a5c06e4cc7b5-full-28-v1.0.dat +0 -0
  37. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-28a6b7c134abfaeb0ab58a018313f6c87a61a40a4d9ec9bedf53aa1d12f3ee37-delta-7-v1.0.dat +0 -0
  38. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-28a6b7c134abfaeb0ab58a018313f6c87a61a40a4d9ec9bedf53aa1d12f3ee37-full-7-v1.0.dat +0 -0
  39. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-30a6bfe7cecbeda259a295dc6de3a436357f52388c3b03d86901e7da68565aeb-delta-19-v1.0.dat +0 -0
  40. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-30a6bfe7cecbeda259a295dc6de3a436357f52388c3b03d86901e7da68565aeb-full-19-v1.0.dat +0 -0
  41. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-343a2bf9add798e3ac2e6a571823cf9fa7e8a1bed532143354ead2648bd036ef-delta-10-v1.0.dat +0 -0
  42. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-343a2bf9add798e3ac2e6a571823cf9fa7e8a1bed532143354ead2648bd036ef-full-10-v1.0.dat +0 -0
  43. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-4d90efbc1fb3df324193831ea4a57dd5e10e67d9653343eb18d178272adb0447-delta-17-v1.0.dat +0 -0
  44. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-4d90efbc1fb3df324193831ea4a57dd5e10e67d9653343eb18d178272adb0447-full-17-v1.0.dat +0 -0
  45. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-4dd2ea099e91635c441f40b36d3f84078a2d818d2dc601c7278e72cbdfe3eca8-delta-20-v1.0.dat +0 -0
  46. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-4dd2ea099e91635c441f40b36d3f84078a2d818d2dc601c7278e72cbdfe3eca8-full-20-v1.0.dat +0 -0
  47. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-509effbdca78639023b933ce6c08a0465fb247e1cd5329e9e9c553940e4b6e46-delta-31-v1.0.dat +0 -0
  48. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-509effbdca78639023b933ce6c08a0465fb247e1cd5329e9e9c553940e4b6e46-full-31-v1.0.dat +0 -0
  49. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-5379a4d9ff29c29d1ef0906d22e82c52472753d31806189ab813c43365341b78-delta-40-v1.0.dat +0 -0
  50. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-5379a4d9ff29c29d1ef0906d22e82c52472753d31806189ab813c43365341b78-full-40-v1.0.dat +0 -0
  51. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-55908eda5686a8f89e4c50672cbe893ec1734fb23449dc03325efe7c414f9aa4-delta-49-v1.0.dat +0 -0
  52. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-55908eda5686a8f89e4c50672cbe893ec1734fb23449dc03325efe7c414f9aa4-full-49-v1.0.dat +0 -0
  53. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-57cc2691fb1fb986c99a58bcb0e029d0cd0cff41553d703147c54196d7d9ca63-delta-14-v1.0.dat +0 -0
  54. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-57cc2691fb1fb986c99a58bcb0e029d0cd0cff41553d703147c54196d7d9ca63-full-14-v1.0.dat +0 -0
  55. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-5943bf8ae4f5e59969d8570e4f40a8223299febdcfbcf188b3b3e2ab11044e18-delta-34-v1.0.dat +0 -0
  56. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-5943bf8ae4f5e59969d8570e4f40a8223299febdcfbcf188b3b3e2ab11044e18-full-34-v1.0.dat +0 -0
  57. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6518527b7c939bee60ce6b024cbe90d3b9d8913c56b8ce11a4df5da7ff7db1c8-delta-8-v1.0.dat +0 -0
  58. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6518527b7c939bee60ce6b024cbe90d3b9d8913c56b8ce11a4df5da7ff7db1c8-full-8-v1.0.dat +0 -0
  59. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-66ff26a26620379e14a7c91252d27ee4dbe06ad69a3a390a88642fe757f2b288-delta-45-v1.0.dat +0 -0
  60. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-66ff26a26620379e14a7c91252d27ee4dbe06ad69a3a390a88642fe757f2b288-full-45-v1.0.dat +0 -0
  61. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6bd0a508ee2c4afbe9d4daa811139fd6e54e7f4e16850cbce999fa30f8bdccd2-delta-6-v1.0.dat +0 -0
  62. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6bd0a508ee2c4afbe9d4daa811139fd6e54e7f4e16850cbce999fa30f8bdccd2-full-6-v1.0.dat +0 -0
  63. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6ce850d0d77ca743fcc2fc792747472e5d2c1c0813aa43abbb370554428fc897-delta-48-v1.0.dat +0 -0
  64. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6ce850d0d77ca743fcc2fc792747472e5d2c1c0813aa43abbb370554428fc897-full-48-v1.0.dat +0 -0
  65. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6eb4ca2e1552b156c5969396b49070eb08ad6c96b347359387519be59f7ccaed-delta-26-v1.0.dat +0 -0
  66. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6eb4ca2e1552b156c5969396b49070eb08ad6c96b347359387519be59f7ccaed-full-26-v1.0.dat +0 -0
  67. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-71c797fb7592d3f0a5a20c79ab8497ddaa0fd9ec17712e109d25c91b3f3c76e5-delta-3-v1.0.dat +0 -0
  68. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-71c797fb7592d3f0a5a20c79ab8497ddaa0fd9ec17712e109d25c91b3f3c76e5-full-3-v1.0.dat +0 -0
  69. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-73357026053d5a4969e7a6b9aeeef91c14cc6d5f32fc700fe6d21d2a1b22496c-delta-25-v1.0.dat +0 -0
  70. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-73357026053d5a4969e7a6b9aeeef91c14cc6d5f32fc700fe6d21d2a1b22496c-full-25-v1.0.dat +0 -0
  71. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-7c897e5c46e834ced65bde7de87716acfaa5dffbdb30b5cd9377d8c319df2034-delta-35-v1.0.dat +0 -0
  72. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-7c897e5c46e834ced65bde7de87716acfaa5dffbdb30b5cd9377d8c319df2034-full-35-v1.0.dat +0 -0
  73. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-87b8394d80d08117a5a1cd04ed8a682564eab7197a2c090159863591b5108874-delta-4-v1.0.dat +0 -0
  74. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-87b8394d80d08117a5a1cd04ed8a682564eab7197a2c090159863591b5108874-full-4-v1.0.dat +0 -0
  75. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-89eb40b9cc0921c5f5c3feb20927c13a9ada5760f82d219dcee153b7d400165c-delta-41-v1.0.dat +0 -0
  76. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-89eb40b9cc0921c5f5c3feb20927c13a9ada5760f82d219dcee153b7d400165c-full-41-v1.0.dat +0 -0
  77. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-8b649433156b8c924436cdec9c6de26106fd6f73a0528570f48748f7b40d7f8a-delta-21-v1.0.dat +0 -0
  78. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-8b649433156b8c924436cdec9c6de26106fd6f73a0528570f48748f7b40d7f8a-full-21-v1.0.dat +0 -0
  79. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-8d364023a0834c8c3077e236a465493acbf488e4f9d1f4c6cc230343c10a8f7d-delta-42-v1.0.dat +0 -0
  80. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-8d364023a0834c8c3077e236a465493acbf488e4f9d1f4c6cc230343c10a8f7d-full-42-v1.0.dat +0 -0
  81. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-925689e24a3d98d98676d816cdd8b73e7b2df057d9d4503da9b27bf91d79666c-delta-38-v1.0.dat +0 -0
  82. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-925689e24a3d98d98676d816cdd8b73e7b2df057d9d4503da9b27bf91d79666c-full-38-v1.0.dat +0 -0
  83. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-937be3d428b19f521be4f98faecc3307ae11ee731c76992f417fa4268d13859e-delta-11-v1.0.dat +0 -0
  84. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-937be3d428b19f521be4f98faecc3307ae11ee731c76992f417fa4268d13859e-full-11-v1.0.dat +0 -0
  85. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-97f34af499b79e2111fc296a598fc9654c2467ea038dfea41fd58241fb3642de-delta-32-v1.0.dat +0 -0
  86. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-97f34af499b79e2111fc296a598fc9654c2467ea038dfea41fd58241fb3642de-full-32-v1.0.dat +0 -0
  87. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-9d1b737243b8a1d0022f2b36ac53333c6280354a74d77f2a3642dcab35204e59-delta-33-v1.0.dat +0 -0
  88. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-9d1b737243b8a1d0022f2b36ac53333c6280354a74d77f2a3642dcab35204e59-full-33-v1.0.dat +0 -0
  89. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-a6663f98ef6ddf6db55f01163e34bb2e87aa82f0347e79ce31e8dbfa390c480c-delta-47-v1.0.dat +0 -0
  90. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-a6663f98ef6ddf6db55f01163e34bb2e87aa82f0347e79ce31e8dbfa390c480c-full-47-v1.0.dat +0 -0
  91. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-aa77376d1ccd3664e5c6366e010c52a978fedbf40f5ce262fee71b2e7fe0c6a9-delta-50-v1.0.dat +0 -0
  92. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-aa77376d1ccd3664e5c6366e010c52a978fedbf40f5ce262fee71b2e7fe0c6a9-full-50-v1.0.dat +0 -0
  93. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-b0f28514741ed1a71f5c6544bf92f9e0e493c5f3cf28328909771d8404eff626-delta-24-v1.0.dat +0 -0
  94. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-b0f28514741ed1a71f5c6544bf92f9e0e493c5f3cf28328909771d8404eff626-full-24-v1.0.dat +0 -0
  95. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-b3efee5358e6eb89ab3b60db2d128d57eef39e8538fb63c5632412d4f8e7d09e-delta-44-v1.0.dat +0 -0
  96. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-b3efee5358e6eb89ab3b60db2d128d57eef39e8538fb63c5632412d4f8e7d09e-full-44-v1.0.dat +0 -0
  97. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bb0b56b6eb7acbb4e80893b04c72412fe833418232e1ed7b06d97d7a7f08b4e1-delta-16-v1.0.dat +0 -0
  98. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bb0b56b6eb7acbb4e80893b04c72412fe833418232e1ed7b06d97d7a7f08b4e1-full-16-v1.0.dat +0 -0
  99. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bc45262b757ff494b53bd2a8fba0f5511cc1f9c2a2c5360e04ea8cebbf6409df-delta-13-v1.0.dat +0 -0
  100. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bc45262b757ff494b53bd2a8fba0f5511cc1f9c2a2c5360e04ea8cebbf6409df-full-13-v1.0.dat +0 -0
  101. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bd0494ba430aff13458b557113b073d226eaf11257dfe26ff3323fa1cfe1335b-delta-39-v1.0.dat +0 -0
  102. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bd0494ba430aff13458b557113b073d226eaf11257dfe26ff3323fa1cfe1335b-full-39-v1.0.dat +0 -0
  103. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cd04f5fbba1553fa728b4dd8131d4723aaac288e0c7dc080447fbf0872c0a6eb-delta-36-v1.0.dat +0 -0
  104. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cd04f5fbba1553fa728b4dd8131d4723aaac288e0c7dc080447fbf0872c0a6eb-full-36-v1.0.dat +0 -0
  105. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cdd2399557fb3163a848f08831fdc833703354edb19a0d32a965fdb140f160c2-delta-18-v1.0.dat +0 -0
  106. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cdd2399557fb3163a848f08831fdc833703354edb19a0d32a965fdb140f160c2-full-18-v1.0.dat +0 -0
  107. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cf7a08fca7b1332095242e4d9800f4b94a3f4eaae88fe8407da42736d54b9e18-delta-37-v1.0.dat +0 -0
  108. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cf7a08fca7b1332095242e4d9800f4b94a3f4eaae88fe8407da42736d54b9e18-full-37-v1.0.dat +0 -0
  109. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-d1f97465a9f52187e2ef3a0d811a1258f52380a65340c55f3e8e65b92753bc13-delta-15-v1.0.dat +0 -0
  110. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-d1f97465a9f52187e2ef3a0d811a1258f52380a65340c55f3e8e65b92753bc13-full-15-v1.0.dat +0 -0
  111. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-e475eccd4ee597e5ff67b1a249e37d65d6e3f754c3f0379fdb43692513588fef-delta-46-v1.0.dat +0 -0
  112. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-e475eccd4ee597e5ff67b1a249e37d65d6e3f754c3f0379fdb43692513588fef-full-46-v1.0.dat +0 -0
  113. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-e82e63517d78fd65b23a05c3b9a98cf905ddad7026995a238bfe634006b84cd0-delta-27-v1.0.dat +0 -0
  114. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-e82e63517d78fd65b23a05c3b9a98cf905ddad7026995a238bfe634006b84cd0-full-27-v1.0.dat +0 -0
  115. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-ed2cf0fd6c0f6237c87c161e1fca303b3fbe6c04e01f652b88720b4572143349-delta-12-v1.0.dat +0 -0
  116. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-ed2cf0fd6c0f6237c87c161e1fca303b3fbe6c04e01f652b88720b4572143349-full-12-v1.0.dat +0 -0
  117. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-f6e454eaf24a83c46a7bed4c19260a0a3ce0ed5c51739cb6d748d4913dc2ef58-delta-30-v1.0.dat +0 -0
  118. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-f6e454eaf24a83c46a7bed4c19260a0a3ce0ed5c51739cb6d748d4913dc2ef58-full-30-v1.0.dat +0 -0
  119. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-f7ad2bdf86d9609b4d6381086ec1e296bf558e2ff467ead29dd7fa6e31bacc56-delta-43-v1.0.dat +0 -0
  120. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-f7ad2bdf86d9609b4d6381086ec1e296bf558e2ff467ead29dd7fa6e31bacc56-full-43-v1.0.dat +0 -0
  121. chia/_tests/core/data_layer/old_format/files/__init__.py +0 -0
  122. chia/_tests/core/data_layer/old_format/old_db.sqlite +0 -0
  123. chia/_tests/core/data_layer/test_data_layer_util.py +18 -21
  124. chia/_tests/core/data_layer/test_data_rpc.py +77 -28
  125. chia/_tests/core/data_layer/test_data_store.py +637 -700
  126. chia/_tests/core/data_layer/test_data_store_schema.py +2 -209
  127. chia/_tests/core/full_node/ram_db.py +1 -1
  128. chia/_tests/core/full_node/stores/test_block_store.py +4 -10
  129. chia/_tests/core/full_node/stores/test_coin_store.py +1 -1
  130. chia/_tests/core/full_node/test_address_manager.py +3 -3
  131. chia/_tests/core/full_node/test_block_height_map.py +1 -1
  132. chia/_tests/core/full_node/test_full_node.py +91 -30
  133. chia/_tests/core/full_node/test_generator_tools.py +17 -10
  134. chia/_tests/core/mempool/test_mempool.py +190 -90
  135. chia/_tests/core/mempool/test_mempool_fee_estimator.py +2 -4
  136. chia/_tests/core/mempool/test_mempool_item_queries.py +1 -1
  137. chia/_tests/core/mempool/test_mempool_manager.py +252 -77
  138. chia/_tests/core/mempool/test_singleton_fast_forward.py +9 -27
  139. chia/_tests/core/server/serve.py +0 -2
  140. chia/_tests/core/server/test_rate_limits.py +400 -347
  141. chia/_tests/core/server/test_server.py +2 -2
  142. chia/_tests/core/services/test_services.py +7 -7
  143. chia/_tests/core/test_cost_calculation.py +31 -10
  144. chia/_tests/core/test_crawler.py +4 -4
  145. chia/_tests/core/test_db_conversion.py +7 -14
  146. chia/_tests/core/test_db_validation.py +2 -6
  147. chia/_tests/core/test_farmer_harvester_rpc.py +34 -1
  148. chia/_tests/core/test_full_node_rpc.py +28 -24
  149. chia/_tests/core/test_merkle_set.py +1 -4
  150. chia/_tests/core/test_seeder.py +1 -1
  151. chia/_tests/core/util/test_keychain.py +2 -2
  152. chia/_tests/core/util/test_lru_cache.py +16 -0
  153. chia/_tests/core/util/test_streamable.py +85 -4
  154. chia/_tests/environments/wallet.py +4 -1
  155. chia/_tests/farmer_harvester/test_farmer.py +8 -6
  156. chia/_tests/farmer_harvester/test_farmer_harvester.py +306 -8
  157. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +3 -3
  158. chia/_tests/farmer_harvester/test_third_party_harvesters.py +11 -11
  159. chia/_tests/fee_estimation/test_fee_estimation_integration.py +2 -2
  160. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +1 -1
  161. chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +1 -2
  162. chia/_tests/generator/test_rom.py +2 -1
  163. chia/_tests/harvester/__init__.py +0 -0
  164. chia/_tests/harvester/config.py +4 -0
  165. chia/_tests/harvester/test_harvester_api.py +157 -0
  166. chia/_tests/plot_sync/test_plot_sync.py +6 -3
  167. chia/_tests/plot_sync/test_receiver.py +16 -4
  168. chia/_tests/plot_sync/test_sender.py +8 -7
  169. chia/_tests/plot_sync/test_sync_simulated.py +15 -13
  170. chia/_tests/plot_sync/util.py +3 -2
  171. chia/_tests/plotting/test_plot_manager.py +21 -5
  172. chia/_tests/plotting/test_prover.py +106 -0
  173. chia/_tests/pools/test_pool_cmdline.py +7 -6
  174. chia/_tests/pools/test_pool_puzzles_lifecycle.py +10 -3
  175. chia/_tests/pools/test_pool_rpc.py +92 -64
  176. chia/_tests/solver/__init__.py +0 -0
  177. chia/_tests/solver/config.py +4 -0
  178. chia/_tests/solver/test_solver_service.py +29 -0
  179. chia/_tests/timelord/test_new_peak.py +1 -1
  180. chia/_tests/timelord/test_timelord.py +1 -1
  181. chia/_tests/util/benchmarks.py +5 -12
  182. chia/_tests/util/blockchain.py +1 -1
  183. chia/_tests/util/build_network_protocol_files.py +7 -0
  184. chia/_tests/util/network_protocol_data.py +26 -0
  185. chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
  186. chia/_tests/util/protocol_messages_json.py +19 -0
  187. chia/_tests/util/setup_nodes.py +21 -2
  188. chia/_tests/util/spend_sim.py +9 -3
  189. chia/_tests/util/test_condition_tools.py +3 -2
  190. chia/_tests/util/test_full_block_utils.py +10 -9
  191. chia/_tests/util/test_misc.py +10 -10
  192. chia/_tests/util/test_network.py +32 -1
  193. chia/_tests/util/test_network_protocol_files.py +333 -318
  194. chia/_tests/util/test_network_protocol_json.py +6 -0
  195. chia/_tests/util/test_network_protocol_test.py +27 -0
  196. chia/_tests/util/test_priority_mutex.py +1 -1
  197. chia/_tests/util/test_replace_str_to_bytes.py +6 -6
  198. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +17 -13
  199. chia/_tests/wallet/cat_wallet/test_trades.py +55 -55
  200. chia/_tests/wallet/did_wallet/test_did.py +118 -1229
  201. chia/_tests/wallet/nft_wallet/config.py +1 -1
  202. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +73 -96
  203. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +15 -12
  204. chia/_tests/wallet/nft_wallet/test_nft_offers.py +67 -134
  205. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +31 -26
  206. chia/_tests/wallet/rpc/test_wallet_rpc.py +765 -371
  207. chia/_tests/wallet/sync/test_wallet_sync.py +6 -0
  208. chia/_tests/wallet/test_new_wallet_protocol.py +1 -1
  209. chia/_tests/wallet/test_signer_protocol.py +2 -2
  210. chia/_tests/wallet/test_singleton_lifecycle_fast.py +3 -4
  211. chia/_tests/wallet/test_transaction_store.py +42 -33
  212. chia/_tests/wallet/test_wallet.py +22 -31
  213. chia/_tests/wallet/test_wallet_state_manager.py +14 -7
  214. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +53 -32
  215. chia/apis.py +2 -0
  216. chia/cmds/beta.py +7 -3
  217. chia/cmds/chia.py +2 -0
  218. chia/cmds/cmd_classes.py +11 -27
  219. chia/cmds/cmds_util.py +3 -0
  220. chia/cmds/coin_funcs.py +27 -22
  221. chia/cmds/configure.py +42 -18
  222. chia/cmds/dev/data.py +22 -3
  223. chia/cmds/farm.py +32 -0
  224. chia/cmds/farm_funcs.py +54 -5
  225. chia/cmds/init_funcs.py +4 -0
  226. chia/cmds/keys_funcs.py +8 -10
  227. chia/cmds/peer_funcs.py +8 -10
  228. chia/cmds/plotnft_funcs.py +24 -16
  229. chia/cmds/rpc.py +11 -1
  230. chia/cmds/show_funcs.py +5 -5
  231. chia/cmds/solver.py +33 -0
  232. chia/cmds/solver_funcs.py +21 -0
  233. chia/cmds/wallet.py +1 -1
  234. chia/cmds/wallet_funcs.py +149 -96
  235. chia/consensus/block_body_validation.py +8 -9
  236. chia/consensus/block_creation.py +9 -10
  237. chia/consensus/block_header_validation.py +61 -69
  238. chia/{full_node → consensus}/block_height_map.py +2 -1
  239. chia/consensus/block_height_map_protocol.py +21 -0
  240. chia/consensus/block_rewards.py +12 -12
  241. chia/consensus/blockchain.py +8 -18
  242. chia/consensus/default_constants.py +6 -6
  243. chia/consensus/generator_tools.py +1 -1
  244. chia/consensus/get_block_challenge.py +24 -25
  245. chia/consensus/pos_quality.py +28 -2
  246. chia/consensus/pot_iterations.py +15 -17
  247. chia/daemon/keychain_proxy.py +5 -0
  248. chia/daemon/server.py +2 -3
  249. chia/data_layer/data_layer.py +32 -24
  250. chia/data_layer/data_layer_errors.py +5 -0
  251. chia/data_layer/data_layer_rpc_api.py +1 -1
  252. chia/data_layer/data_layer_service.py +8 -0
  253. chia/data_layer/data_layer_util.py +49 -89
  254. chia/data_layer/data_layer_wallet.py +20 -17
  255. chia/data_layer/data_store.py +1051 -1462
  256. chia/data_layer/download_data.py +44 -115
  257. chia/{server → data_layer}/start_data_layer.py +2 -1
  258. chia/data_layer/util/benchmark.py +38 -53
  259. chia/farmer/farmer.py +3 -0
  260. chia/farmer/farmer_api.py +104 -5
  261. chia/farmer/farmer_rpc_api.py +20 -0
  262. chia/farmer/farmer_rpc_client.py +6 -2
  263. chia/farmer/farmer_service.py +8 -0
  264. chia/{server → farmer}/start_farmer.py +9 -3
  265. chia/full_node/block_store.py +20 -10
  266. chia/full_node/coin_store.py +12 -4
  267. chia/full_node/eligible_coin_spends.py +17 -72
  268. chia/full_node/full_node.py +68 -71
  269. chia/full_node/full_node_api.py +26 -32
  270. chia/full_node/full_node_rpc_api.py +44 -33
  271. chia/full_node/full_node_rpc_client.py +67 -79
  272. chia/full_node/full_node_service.py +8 -0
  273. chia/full_node/full_node_store.py +5 -3
  274. chia/full_node/mempool.py +15 -16
  275. chia/full_node/mempool_manager.py +73 -89
  276. chia/{server → full_node}/start_full_node.py +1 -1
  277. chia/full_node/subscriptions.py +2 -2
  278. chia/full_node/weight_proof.py +14 -15
  279. chia/harvester/harvester.py +8 -1
  280. chia/harvester/harvester_api.py +178 -44
  281. chia/harvester/harvester_service.py +8 -0
  282. chia/{server → harvester}/start_harvester.py +1 -1
  283. chia/introducer/introducer_service.py +8 -0
  284. chia/{server → introducer}/start_introducer.py +1 -1
  285. chia/plot_sync/receiver.py +6 -1
  286. chia/plot_sync/sender.py +7 -4
  287. chia/plotting/cache.py +37 -28
  288. chia/plotting/check_plots.py +83 -48
  289. chia/plotting/create_plots.py +3 -4
  290. chia/plotting/manager.py +18 -13
  291. chia/plotting/prover.py +153 -0
  292. chia/plotting/util.py +14 -6
  293. chia/pools/pool_wallet.py +6 -4
  294. chia/protocols/harvester_protocol.py +14 -0
  295. chia/protocols/outbound_message.py +1 -0
  296. chia/protocols/pool_protocol.py +1 -1
  297. chia/protocols/protocol_message_types.py +7 -0
  298. chia/protocols/shared_protocol.py +2 -0
  299. chia/protocols/solver_protocol.py +18 -0
  300. chia/rpc/rpc_server.py +1 -1
  301. chia/seeder/crawl_store.py +4 -8
  302. chia/seeder/crawler.py +2 -2
  303. chia/seeder/crawler_service.py +8 -0
  304. chia/seeder/start_crawler.py +1 -1
  305. chia/server/address_manager.py +12 -15
  306. chia/server/introducer_peers.py +1 -1
  307. chia/server/node_discovery.py +9 -10
  308. chia/server/rate_limit_numbers.py +157 -168
  309. chia/server/rate_limits.py +44 -41
  310. chia/server/resolve_peer_info.py +5 -0
  311. chia/server/server.py +17 -7
  312. chia/server/start_service.py +0 -1
  313. chia/simulator/block_tools.py +92 -58
  314. chia/simulator/full_node_simulator.py +1 -1
  315. chia/simulator/setup_services.py +52 -15
  316. chia/solver/__init__.py +0 -0
  317. chia/solver/solver.py +100 -0
  318. chia/solver/solver_api.py +59 -0
  319. chia/solver/solver_rpc_api.py +31 -0
  320. chia/solver/solver_rpc_client.py +16 -0
  321. chia/solver/solver_service.py +8 -0
  322. chia/solver/start_solver.py +102 -0
  323. {mozilla-ca → chia/ssl}/cacert.pem +0 -27
  324. chia/ssl/create_ssl.py +3 -2
  325. chia/{server → timelord}/start_timelord.py +1 -1
  326. chia/timelord/timelord.py +12 -13
  327. chia/timelord/timelord_service.py +8 -0
  328. chia/types/blockchain_format/proof_of_space.py +61 -17
  329. chia/types/coin_spend.py +0 -8
  330. chia/types/internal_mempool_item.py +3 -3
  331. chia/types/mempool_item.py +15 -8
  332. chia/types/mempool_submission_status.py +1 -1
  333. chia/util/config.py +1 -3
  334. chia/util/db_wrapper.py +7 -8
  335. chia/util/initial-config.yaml +46 -0
  336. chia/util/lru_cache.py +8 -4
  337. chia/util/network.py +9 -0
  338. chia/util/streamable.py +38 -8
  339. chia/util/virtual_project_analysis.py +1 -1
  340. chia/wallet/cat_wallet/cat_outer_puzzle.py +7 -4
  341. chia/wallet/cat_wallet/cat_wallet.py +13 -7
  342. chia/wallet/cat_wallet/r_cat_wallet.py +4 -1
  343. chia/wallet/conditions.py +1 -3
  344. chia/wallet/did_wallet/did_wallet.py +27 -332
  345. chia/wallet/nft_wallet/nft_puzzle_utils.py +1 -1
  346. chia/wallet/nft_wallet/nft_wallet.py +9 -7
  347. chia/wallet/puzzle_drivers.py +7 -8
  348. chia/{server → wallet}/start_wallet.py +1 -1
  349. chia/wallet/trade_manager.py +12 -9
  350. chia/wallet/transaction_record.py +14 -51
  351. chia/wallet/util/clvm_streamable.py +28 -41
  352. chia/wallet/util/merkle_utils.py +2 -2
  353. chia/wallet/util/tx_config.py +3 -6
  354. chia/wallet/vc_wallet/cr_cat_wallet.py +12 -6
  355. chia/wallet/vc_wallet/vc_wallet.py +13 -15
  356. chia/wallet/wallet.py +5 -3
  357. chia/wallet/wallet_node.py +25 -30
  358. chia/wallet/wallet_request_types.py +538 -101
  359. chia/wallet/wallet_rpc_api.py +398 -570
  360. chia/wallet/wallet_rpc_client.py +144 -332
  361. chia/wallet/wallet_service.py +8 -0
  362. chia/wallet/wallet_state_manager.py +53 -42
  363. chia/wallet/wallet_transaction_store.py +13 -5
  364. {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7.dist-info}/METADATA +31 -31
  365. {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7.dist-info}/RECORD +368 -240
  366. {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7.dist-info}/WHEEL +1 -1
  367. {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7.dist-info}/entry_points.txt +8 -7
  368. chia/full_node/mempool_check_conditions.py +0 -102
  369. chia/server/aliases.py +0 -35
  370. {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7.dist-info/licenses}/LICENSE +0 -0
@@ -4,7 +4,7 @@ import dataclasses
4
4
  import logging
5
5
  import time
6
6
  from collections import Counter
7
- from typing import Optional
7
+ from typing import Callable, Optional, Union
8
8
 
9
9
  from chia.protocols.outbound_message import Message
10
10
  from chia.protocols.protocol_message_types import ProtocolMessageTypes
@@ -18,14 +18,22 @@ log = logging.getLogger(__name__)
18
18
  class RateLimiter:
19
19
  incoming: bool
20
20
  reset_seconds: int
21
- current_minute: int
21
+ current_slot: int
22
22
  message_counts: Counter[ProtocolMessageTypes]
23
23
  message_cumulative_sizes: Counter[ProtocolMessageTypes]
24
24
  percentage_of_limit: int
25
25
  non_tx_message_counts: int = 0
26
26
  non_tx_cumulative_size: int = 0
27
+ get_time: Callable[[], float]
27
28
 
28
- def __init__(self, incoming: bool, reset_seconds: int = 60, percentage_of_limit: int = 100):
29
+ def __init__(
30
+ self,
31
+ incoming: bool,
32
+ reset_seconds: int = 60,
33
+ percentage_of_limit: int = 100,
34
+ *,
35
+ get_time: Callable[[], float] = time.monotonic,
36
+ ):
29
37
  """
30
38
  The incoming parameter affects whether counters are incremented
31
39
  unconditionally or not. For incoming messages, the counters are always
@@ -33,9 +41,10 @@ class RateLimiter:
33
41
  if they are allowed to be sent by the rate limiter, since we won't send
34
42
  the messages otherwise.
35
43
  """
44
+ self.get_time = get_time
36
45
  self.incoming = incoming
37
46
  self.reset_seconds = reset_seconds
38
- self.current_minute = int(time.time() // reset_seconds)
47
+ self.current_slot = int(get_time() // reset_seconds)
39
48
  self.message_counts = Counter()
40
49
  self.message_cumulative_sizes = Counter()
41
50
  self.percentage_of_limit = percentage_of_limit
@@ -51,9 +60,9 @@ class RateLimiter:
51
60
  hit and the message is good to be sent or received.
52
61
  """
53
62
 
54
- current_minute = int(time.time() // self.reset_seconds)
55
- if current_minute != self.current_minute:
56
- self.current_minute = current_minute
63
+ current_slot = int(self.get_time() // self.reset_seconds)
64
+ if current_slot != self.current_slot:
65
+ self.current_slot = current_slot
57
66
  self.message_counts = Counter()
58
67
  self.message_cumulative_sizes = Counter()
59
68
  self.non_tx_message_counts = 0
@@ -71,39 +80,33 @@ class RateLimiter:
71
80
  proportion_of_limit: float = self.percentage_of_limit / 100
72
81
 
73
82
  ret: bool = False
74
- rate_limits = get_rate_limits_to_use(our_capabilities, peer_capabilities)
83
+ rate_limits: dict[ProtocolMessageTypes, Union[RLSettings, Unlimited]]
84
+ rate_limits, agg_limit = get_rate_limits_to_use(our_capabilities, peer_capabilities)
75
85
 
76
86
  try:
77
- limits: RLSettings = rate_limits["default_settings"]
78
- if message_type in rate_limits["rate_limits_tx"]:
79
- limits = rate_limits["rate_limits_tx"][message_type]
80
- elif message_type in rate_limits["rate_limits_other"]:
81
- limits = rate_limits["rate_limits_other"][message_type]
82
- if isinstance(limits, RLSettings):
83
- non_tx_freq = rate_limits["non_tx_freq"]
84
- non_tx_max_total_size = rate_limits["non_tx_max_total_size"]
85
- new_non_tx_count = self.non_tx_message_counts + 1
86
- new_non_tx_size = self.non_tx_cumulative_size + len(message.data)
87
- if new_non_tx_count > non_tx_freq * proportion_of_limit:
88
- return " ".join(
89
- [
90
- f"non-tx count: {new_non_tx_count}",
91
- f"> {non_tx_freq * proportion_of_limit}",
92
- f"(scale factor: {proportion_of_limit})",
93
- ]
94
- )
95
- if new_non_tx_size > non_tx_max_total_size * proportion_of_limit:
96
- return " ".join(
97
- [
98
- f"non-tx size: {new_non_tx_size}",
99
- f"> {non_tx_max_total_size * proportion_of_limit}",
100
- f"(scale factor: {proportion_of_limit})",
101
- ]
102
- )
103
- else: # pragma: no cover
104
- log.warning(
105
- f"Message type {message_type} not found in rate limits (scale factor: {proportion_of_limit})",
106
- )
87
+ limits: Union[RLSettings, Unlimited] = rate_limits[message_type]
88
+ if isinstance(limits, RLSettings) and limits.aggregate_limit:
89
+ non_tx_freq = agg_limit.frequency
90
+ assert agg_limit.max_total_size is not None
91
+ non_tx_max_total_size = agg_limit.max_total_size
92
+ new_non_tx_count = self.non_tx_message_counts + 1
93
+ new_non_tx_size = self.non_tx_cumulative_size + len(message.data)
94
+ if new_non_tx_count > non_tx_freq * proportion_of_limit:
95
+ return " ".join(
96
+ [
97
+ f"non-tx count: {new_non_tx_count}",
98
+ f"> {non_tx_freq * proportion_of_limit}",
99
+ f"(scale factor: {proportion_of_limit})",
100
+ ]
101
+ )
102
+ if new_non_tx_size > non_tx_max_total_size * proportion_of_limit:
103
+ return " ".join(
104
+ [
105
+ f"non-tx size: {new_non_tx_size}",
106
+ f"> {non_tx_max_total_size * proportion_of_limit}",
107
+ f"(scale factor: {proportion_of_limit})",
108
+ ]
109
+ )
107
110
 
108
111
  if isinstance(limits, Unlimited):
109
112
  # this message type is not rate limited. This is used for
@@ -121,9 +124,9 @@ class RateLimiter:
121
124
  if new_message_counts > limits.frequency * proportion_of_limit:
122
125
  return " ".join(
123
126
  [
124
- f"message count: {new_message_counts}"
125
- f"> {limits.frequency * proportion_of_limit}"
126
- f"(scale factor: {proportion_of_limit})"
127
+ f"message count: {new_message_counts}",
128
+ f"> {limits.frequency * proportion_of_limit}",
129
+ f"(scale factor: {proportion_of_limit})",
127
130
  ]
128
131
  )
129
132
  if len(message.data) > limits.max_size:
@@ -11,6 +11,7 @@ log = logging.getLogger(__name__)
11
11
  PEER_INFO_MAPPING: dict[NodeType, str] = {
12
12
  NodeType.FULL_NODE: "full_node_peer",
13
13
  NodeType.FARMER: "farmer_peer",
14
+ NodeType.SOLVER: "solver_peer",
14
15
  }
15
16
 
16
17
 
@@ -21,6 +22,10 @@ def get_unresolved_peer_infos(service_config: dict[str, Any], peer_type: NodeTyp
21
22
  if peer_info is not None:
22
23
  peer_infos.append(peer_info)
23
24
 
25
+ # Default solver peer if none configured
26
+ if peer_type == NodeType.SOLVER and not peer_infos:
27
+ peer_infos = [{"host": "localhost", "port": 8666}]
28
+
24
29
  return {UnresolvedPeerInfo(host=peer["host"], port=peer["port"]) for peer in peer_infos}
25
30
 
26
31
 
chia/server/server.py CHANGED
@@ -173,7 +173,12 @@ class ChiaServer:
173
173
  public_cert_path, public_key_path = None, None
174
174
 
175
175
  authenticated_client_types = {NodeType.HARVESTER}
176
- authenticated_server_types = {NodeType.HARVESTER, NodeType.FARMER, NodeType.WALLET, NodeType.DATA_LAYER}
176
+ authenticated_server_types = {
177
+ NodeType.HARVESTER,
178
+ NodeType.FARMER,
179
+ NodeType.WALLET,
180
+ NodeType.DATA_LAYER,
181
+ }
177
182
 
178
183
  if local_type in authenticated_client_types:
179
184
  # Authenticated clients
@@ -260,9 +265,8 @@ class ChiaServer:
260
265
  if is_crawler is not None:
261
266
  if time.time() - connection.creation_time > 5:
262
267
  to_remove.append(connection)
263
- else:
264
- if time.time() - connection.last_message_time > 1800:
265
- to_remove.append(connection)
268
+ elif time.time() - connection.last_message_time > 1800:
269
+ to_remove.append(connection)
266
270
  for connection in to_remove:
267
271
  self.log.debug(f"Garbage collecting connection {connection.peer_info.host} due to inactivity")
268
272
  if connection.closed:
@@ -548,9 +552,15 @@ class ChiaServer:
548
552
  # in this case we still want to do the banning logic and remove the connection from the list
549
553
  # but the other cleanup should already have been done so we skip that
550
554
 
551
- if is_localhost(connection.peer_info.host) and ban_time != 0:
552
- self.log.warning(f"Trying to ban localhost for {ban_time}, but will not ban")
553
- ban_time = 0
555
+ if ban_time > 0:
556
+ if is_localhost(connection.peer_info.host):
557
+ self.log.warning(f"Trying to ban localhost for {ban_time}, but will not ban")
558
+ ban_time = 0
559
+ elif self.is_trusted_peer(connection, self.config.get("trusted_peers", {})):
560
+ self.log.warning(
561
+ f"Trying to ban trusted peer {connection.peer_info.host} for {ban_time}, but will not ban"
562
+ )
563
+ ban_time = 0
554
564
  if ban_time > 0:
555
565
  ban_until: float = time.time() + ban_time
556
566
  self.log.warning(f"Banning {connection.peer_info.host} for {ban_time} seconds")
@@ -3,7 +3,6 @@ from __future__ import annotations
3
3
  import asyncio
4
4
  import contextlib
5
5
  import logging
6
- import logging.config
7
6
  import os
8
7
  import signal
9
8
  from collections.abc import AsyncIterator, Awaitable, Coroutine
@@ -14,7 +14,7 @@ from collections.abc import Sequence
14
14
  from dataclasses import dataclass, replace
15
15
  from pathlib import Path
16
16
  from random import Random
17
- from typing import Any, Callable, Optional
17
+ from typing import Any, Callable, Optional, Union
18
18
 
19
19
  import anyio
20
20
  from chia_puzzles_py.programs import CHIALISP_DESERIALISATION, ROM_BOOTSTRAP_GENERATOR
@@ -28,7 +28,6 @@ from chia_rs import (
28
28
  G1Element,
29
29
  G2Element,
30
30
  InfusedChallengeChainSubSlot,
31
- PlotSize,
32
31
  PoolTarget,
33
32
  PrivateKey,
34
33
  ProofOfSpace,
@@ -65,6 +64,7 @@ from chia.daemon.keychain_proxy import KeychainProxy, connect_to_keychain_and_va
65
64
  from chia.full_node.bundle_tools import simple_solution_generator, simple_solution_generator_backrefs
66
65
  from chia.plotting.create_plots import PlotKeys, create_plots
67
66
  from chia.plotting.manager import PlotManager
67
+ from chia.plotting.prover import PlotVersion
68
68
  from chia.plotting.util import (
69
69
  Params,
70
70
  PlotRefreshEvents,
@@ -92,9 +92,13 @@ from chia.types.blockchain_format.program import DEFAULT_FLAGS, INFINITE_COST, P
92
92
  from chia.types.blockchain_format.proof_of_space import (
93
93
  calculate_pos_challenge,
94
94
  calculate_prefix_bits,
95
+ calculate_required_plot_strength,
95
96
  generate_plot_public_key,
96
97
  generate_taproot_sk,
98
+ make_pos,
97
99
  passes_plot_filter,
100
+ quality_for_partial_proof,
101
+ solve_proof,
98
102
  )
99
103
  from chia.types.blockchain_format.serialized_program import SerializedProgram
100
104
  from chia.types.blockchain_format.vdf import VDFInfo, VDFProof
@@ -772,7 +776,7 @@ class BlockTools:
772
776
  seed,
773
777
  force_overflow=force_overflow,
774
778
  skip_slots=skip_slots,
775
- timestamp=(uint64(int(time.time())) if genesis_timestamp is None else genesis_timestamp),
779
+ timestamp=(uint64(time.time()) if genesis_timestamp is None else genesis_timestamp),
776
780
  )
777
781
  self.log.info(f"Created block 0 iters: {genesis.total_iters}")
778
782
  num_empty_slots_added = skip_slots
@@ -898,11 +902,10 @@ class BlockTools:
898
902
  # address, so continue until a proof of space tied to a pk is found
899
903
  continue
900
904
  pool_target = PoolTarget(proof_of_space.pool_contract_puzzle_hash, uint32(0))
905
+ elif pool_reward_puzzle_hash is not None:
906
+ pool_target = PoolTarget(pool_reward_puzzle_hash, uint32(0))
901
907
  else:
902
- if pool_reward_puzzle_hash is not None:
903
- pool_target = PoolTarget(pool_reward_puzzle_hash, uint32(0))
904
- else:
905
- pool_target = PoolTarget(self.pool_ph, uint32(0))
908
+ pool_target = PoolTarget(self.pool_ph, uint32(0))
906
909
 
907
910
  new_gen = self.setup_new_gen(
908
911
  tx_block_heights,
@@ -966,7 +969,6 @@ class BlockTools:
966
969
  block_list.append(full_block)
967
970
 
968
971
  if include_transactions:
969
- prev_tx_height = full_block.height
970
972
  for coin in full_block.get_included_reward_coins():
971
973
  if coin.puzzle_hash == self.farmer_ph:
972
974
  pending_rewards.append(coin)
@@ -980,6 +982,7 @@ class BlockTools:
980
982
 
981
983
  if full_block.transactions_generator is not None:
982
984
  tx_block_heights.append(full_block.height)
985
+ prev_tx_height = full_block.height
983
986
 
984
987
  blocks_added_this_sub_slot += 1
985
988
  blocks[full_block.header_hash] = block_record
@@ -1193,11 +1196,10 @@ class BlockTools:
1193
1196
  # address, so continue until a proof of space tied to a pk is found
1194
1197
  continue
1195
1198
  pool_target = PoolTarget(proof_of_space.pool_contract_puzzle_hash, uint32(0))
1199
+ elif pool_reward_puzzle_hash is not None:
1200
+ pool_target = PoolTarget(pool_reward_puzzle_hash, uint32(0))
1196
1201
  else:
1197
- if pool_reward_puzzle_hash is not None:
1198
- pool_target = PoolTarget(pool_reward_puzzle_hash, uint32(0))
1199
- else:
1200
- pool_target = PoolTarget(self.pool_ph, uint32(0))
1202
+ pool_target = PoolTarget(self.pool_ph, uint32(0))
1201
1203
 
1202
1204
  new_gen = self.setup_new_gen(
1203
1205
  tx_block_heights,
@@ -1261,7 +1263,6 @@ class BlockTools:
1261
1263
  block_list.append(full_block)
1262
1264
 
1263
1265
  if include_transactions:
1264
- prev_tx_height = full_block.height
1265
1266
  for coin in full_block.get_included_reward_coins():
1266
1267
  if coin.puzzle_hash == self.farmer_ph:
1267
1268
  pending_rewards.append(coin)
@@ -1275,6 +1276,7 @@ class BlockTools:
1275
1276
 
1276
1277
  if full_block.transactions_generator is not None:
1277
1278
  tx_block_heights.append(full_block.height)
1279
+ prev_tx_height = full_block.height
1278
1280
 
1279
1281
  blocks_added_this_sub_slot += 1
1280
1282
  blocks[full_block.header_hash] = block_record
@@ -1311,7 +1313,7 @@ class BlockTools:
1311
1313
  skip_slots: int = 0,
1312
1314
  ) -> FullBlock:
1313
1315
  if timestamp is None:
1314
- timestamp = uint64(int(time.time()))
1316
+ timestamp = uint64(time.time())
1315
1317
 
1316
1318
  finished_sub_slots: list[EndOfSubSlotBundle] = []
1317
1319
  unfinished_block: Optional[UnfinishedBlock] = None
@@ -1502,53 +1504,81 @@ class BlockTools:
1502
1504
  found_proofs: list[tuple[uint64, ProofOfSpace]] = []
1503
1505
  rng = random.Random()
1504
1506
  rng.seed(seed)
1507
+
1508
+ required_plot_strength = calculate_required_plot_strength(constants, prev_transaction_b_height)
1509
+
1505
1510
  for plot_info in self.plot_manager.plots.values():
1506
1511
  plot_id: bytes32 = plot_info.prover.get_id()
1507
1512
  if force_plot_id is not None and plot_id != force_plot_id:
1508
1513
  continue
1509
- # TODO: todo_v2_plots support v2 plots in the plot manager
1510
- prefix_bits = calculate_prefix_bits(constants, height, PlotSize.make_v1(plot_info.prover.get_size()))
1511
- if passes_plot_filter(prefix_bits, plot_id, challenge_hash, signage_point):
1512
- new_challenge: bytes32 = calculate_pos_challenge(plot_id, challenge_hash, signage_point)
1513
- qualities = plot_info.prover.get_qualities_for_challenge(new_challenge)
1514
-
1515
- for proof_index, quality_str in enumerate(qualities):
1516
- required_iters = calculate_iterations_quality(
1517
- constants,
1518
- quality_str,
1519
- # TODO: todo_v2_plots support v2 plots in the plot manager
1520
- PlotSize.make_v1(plot_info.prover.get_size()),
1521
- difficulty,
1522
- signage_point,
1523
- sub_slot_iters,
1524
- prev_transaction_b_height,
1525
- )
1526
- if required_iters < calculate_sp_interval_iters(constants, sub_slot_iters):
1527
- proof_xs: bytes = plot_info.prover.get_full_proof(new_challenge, proof_index)
1514
+ prefix_bits = calculate_prefix_bits(constants, height, plot_info.prover.get_size())
1515
+ if not passes_plot_filter(prefix_bits, plot_id, challenge_hash, signage_point):
1516
+ continue
1528
1517
 
1529
- # Look up local_sk from plot to save locked memory
1530
- (
1531
- pool_public_key_or_puzzle_hash,
1532
- farmer_public_key,
1533
- local_master_sk,
1534
- ) = parse_plot_info(plot_info.prover.get_memo())
1535
- local_sk = master_sk_to_local_sk(local_master_sk)
1536
-
1537
- if isinstance(pool_public_key_or_puzzle_hash, G1Element):
1538
- include_taproot = False
1539
- else:
1540
- assert isinstance(pool_public_key_or_puzzle_hash, bytes32)
1541
- include_taproot = True
1542
- plot_pk = generate_plot_public_key(local_sk.get_g1(), farmer_public_key, include_taproot)
1543
- proof_of_space: ProofOfSpace = ProofOfSpace(
1544
- new_challenge,
1545
- plot_info.pool_public_key,
1546
- plot_info.pool_contract_puzzle_hash,
1547
- plot_pk,
1548
- plot_info.prover.get_size(),
1549
- proof_xs,
1550
- )
1551
- found_proofs.append((required_iters, proof_of_space))
1518
+ # v2 plots aren't valid until after the hard fork
1519
+ if (
1520
+ prev_transaction_b_height < constants.HARD_FORK2_HEIGHT
1521
+ and plot_info.prover.get_version() == PlotVersion.V2
1522
+ ):
1523
+ continue
1524
+
1525
+ new_challenge: bytes32 = calculate_pos_challenge(plot_id, challenge_hash, signage_point)
1526
+
1527
+ # these are either qualities (v1) or partial proofs (v2)
1528
+ proofs: Sequence[Union[bytes32, bytes]]
1529
+ v = plot_info.prover.get_version()
1530
+ if v == PlotVersion.V1:
1531
+ proofs = plot_info.prover.get_qualities_for_challenge(new_challenge)
1532
+ else:
1533
+ proofs = plot_info.prover.get_partial_proofs_for_challenge(new_challenge, required_plot_strength)
1534
+
1535
+ for proof_index, proof in enumerate(proofs):
1536
+ if v == PlotVersion.V2:
1537
+ quality_str = quality_for_partial_proof(proof, new_challenge)
1538
+ elif v == PlotVersion.V1:
1539
+ quality_str = bytes32(proof)
1540
+
1541
+ required_iters = calculate_iterations_quality(
1542
+ constants,
1543
+ quality_str,
1544
+ plot_info.prover.get_size(),
1545
+ difficulty,
1546
+ signage_point,
1547
+ sub_slot_iters,
1548
+ prev_transaction_b_height,
1549
+ )
1550
+ if required_iters >= calculate_sp_interval_iters(constants, sub_slot_iters):
1551
+ continue
1552
+
1553
+ proof_xs: bytes
1554
+ if v == PlotVersion.V1:
1555
+ proof_xs = plot_info.prover.get_full_proof(new_challenge, proof_index)
1556
+ else:
1557
+ proof_xs = solve_proof(proof)
1558
+
1559
+ # Look up local_sk from plot to save locked memory
1560
+ (
1561
+ pool_public_key_or_puzzle_hash,
1562
+ farmer_public_key,
1563
+ local_master_sk,
1564
+ ) = parse_plot_info(plot_info.prover.get_memo())
1565
+ local_sk = master_sk_to_local_sk(local_master_sk)
1566
+
1567
+ if isinstance(pool_public_key_or_puzzle_hash, G1Element):
1568
+ include_taproot = False
1569
+ else:
1570
+ assert isinstance(pool_public_key_or_puzzle_hash, bytes32)
1571
+ include_taproot = True
1572
+ plot_pk = generate_plot_public_key(local_sk.get_g1(), farmer_public_key, include_taproot)
1573
+ proof_of_space: ProofOfSpace = make_pos(
1574
+ new_challenge,
1575
+ plot_info.pool_public_key,
1576
+ plot_info.pool_contract_puzzle_hash,
1577
+ plot_pk,
1578
+ plot_info.prover.get_size(),
1579
+ proof_xs,
1580
+ )
1581
+ found_proofs.append((required_iters, proof_of_space))
1552
1582
  random_sample = found_proofs
1553
1583
  if len(found_proofs) >= 1:
1554
1584
  if rng.random() < 0.1:
@@ -1734,7 +1764,8 @@ def get_plot_dir(plot_dir_name: str = "test-plots", automated_testing: bool = Tr
1734
1764
  if not automated_testing: # make sure we don't accidentally stack directories.
1735
1765
  root_dir = (
1736
1766
  root_dir.parent
1737
- if root_dir.parts[-1] == plot_dir_name.split("/")[0] or root_dir.parts[-1] == plot_dir_name.split("\\")[0]
1767
+ if root_dir.parts[-1] == plot_dir_name.split("/", maxsplit=1)[0]
1768
+ or root_dir.parts[-1] == plot_dir_name.split("\\", maxsplit=1)[0]
1738
1769
  else root_dir
1739
1770
  )
1740
1771
  cache_path = root_dir.joinpath(plot_dir_name)
@@ -1758,6 +1789,7 @@ def load_block_list(
1758
1789
  sub_slot_iters = uint64(constants.SUB_SLOT_ITERS_STARTING)
1759
1790
  height_to_hash: dict[uint32, bytes32] = {}
1760
1791
  blocks: dict[bytes32, BlockRecord] = {}
1792
+ prev_transaction_b_height = uint32(0)
1761
1793
  for full_block in block_list:
1762
1794
  if full_block.height != 0:
1763
1795
  if len(full_block.finished_sub_slots) > 0:
@@ -1774,7 +1806,6 @@ def load_block_list(
1774
1806
  sp_hash = full_block.reward_chain_block.challenge_chain_sp_vdf.output.get_hash()
1775
1807
 
1776
1808
  cache = BlockCache(blocks)
1777
- prev_transaction_b_height = uint32(0) # TODO: todo_v2_plots
1778
1809
 
1779
1810
  required_iters = validate_pospace_and_get_required_iters(
1780
1811
  constants,
@@ -1788,6 +1819,9 @@ def load_block_list(
1788
1819
  )
1789
1820
  assert required_iters is not None
1790
1821
 
1822
+ if full_block.is_transaction_block():
1823
+ prev_transaction_b_height = full_block.height
1824
+
1791
1825
  blocks[full_block.header_hash] = block_to_block_record(
1792
1826
  constants,
1793
1827
  cache,
@@ -167,7 +167,7 @@ class FullNodeSimulator(FullNodeAPI):
167
167
  raise ValueError("Cannot revert to a height less than 1.")
168
168
  block_record: BlockRecord = self.full_node.blockchain.height_to_block_record(new_height)
169
169
  # remove enough data to allow a bunch of blocks to be wiped.
170
- async with self.full_node.block_store.db_wrapper.writer():
170
+ async with self.full_node.block_store.transaction():
171
171
  # set coinstore
172
172
  await self.full_node.coin_store.rollback_to_block(new_height)
173
173
  # set blockstore to new height
@@ -18,33 +18,31 @@ from chia_rs.sized_ints import uint16
18
18
  from chia.cmds.init_funcs import init
19
19
  from chia.consensus.constants import replace_str_to_bytes
20
20
  from chia.daemon.server import WebSocketServer, daemon_launch_lock_path
21
+ from chia.farmer.farmer_service import FarmerService
22
+ from chia.farmer.start_farmer import create_farmer_service
23
+ from chia.full_node.full_node_service import FullNodeService
24
+ from chia.full_node.start_full_node import create_full_node_service
25
+ from chia.harvester.harvester_service import HarvesterService
26
+ from chia.harvester.start_harvester import create_harvester_service
27
+ from chia.introducer.introducer_service import IntroducerService
28
+ from chia.introducer.start_introducer import create_introducer_service
21
29
  from chia.protocols.outbound_message import NodeType
22
30
  from chia.protocols.shared_protocol import Capability, default_capabilities
31
+ from chia.seeder.crawler_service import CrawlerService
23
32
  from chia.seeder.dns_server import DNSServer, create_dns_server_service
24
33
  from chia.seeder.start_crawler import create_full_node_crawler_service
25
- from chia.server.aliases import (
26
- CrawlerService,
27
- FarmerService,
28
- FullNodeService,
29
- HarvesterService,
30
- IntroducerService,
31
- TimelordService,
32
- WalletService,
33
- )
34
34
  from chia.server.resolve_peer_info import set_peer_info
35
35
  from chia.server.signal_handlers import SignalHandlers
36
- from chia.server.start_farmer import create_farmer_service
37
- from chia.server.start_full_node import create_full_node_service
38
- from chia.server.start_harvester import create_harvester_service
39
- from chia.server.start_introducer import create_introducer_service
40
- from chia.server.start_timelord import create_timelord_service
41
- from chia.server.start_wallet import create_wallet_service
42
36
  from chia.simulator.block_tools import BlockTools, test_constants
43
37
  from chia.simulator.keyring import TempKeyring
44
38
  from chia.simulator.ssl_certs import get_next_nodes_certs_and_keys, get_next_private_ca_cert_and_key
45
39
  from chia.simulator.start_simulator import SimulatorFullNodeService, create_full_node_simulator_service
40
+ from chia.solver.solver_service import SolverService
41
+ from chia.solver.start_solver import create_solver_service
46
42
  from chia.ssl.create_ssl import create_all_ssl
43
+ from chia.timelord.start_timelord import create_timelord_service
47
44
  from chia.timelord.timelord_launcher import VDFClientProcessMgr, find_vdf_client, spawn_process
45
+ from chia.timelord.timelord_service import TimelordService
48
46
  from chia.types.peer_info import UnresolvedPeerInfo
49
47
  from chia.util.bech32m import encode_puzzle_hash
50
48
  from chia.util.config import config_path_for_filename, load_config, lock_and_load_config, save_config
@@ -52,6 +50,8 @@ from chia.util.db_wrapper import generate_in_memory_db_uri
52
50
  from chia.util.keychain import bytes_to_mnemonic
53
51
  from chia.util.lock import Lockfile
54
52
  from chia.util.task_referencer import create_referenced_task
53
+ from chia.wallet.start_wallet import create_wallet_service
54
+ from chia.wallet.wallet_service import WalletService
55
55
 
56
56
  log = logging.getLogger(__name__)
57
57
 
@@ -359,6 +359,7 @@ async def setup_farmer(
359
359
  full_node_port: Optional[uint16] = None,
360
360
  start_service: bool = True,
361
361
  port: uint16 = uint16(0),
362
+ solver_peer: Optional[UnresolvedPeerInfo] = None,
362
363
  ) -> AsyncGenerator[FarmerService, None]:
363
364
  with create_lock_and_load_config(b_tools.root_path / "config" / "ssl" / "ca", root_path) as root_config:
364
365
  root_config["logging"]["log_stdout"] = True
@@ -386,6 +387,16 @@ async def setup_farmer(
386
387
  service_config.pop("full_node_peer", None)
387
388
  service_config.pop("full_node_peers", None)
388
389
 
390
+ if solver_peer:
391
+ service_config["solver_peers"] = [
392
+ {
393
+ "host": solver_peer.host,
394
+ "port": solver_peer.port,
395
+ },
396
+ ]
397
+ else:
398
+ service_config.pop("solver_peers", None)
399
+
389
400
  service = create_farmer_service(
390
401
  root_path,
391
402
  root_config,
@@ -393,6 +404,7 @@ async def setup_farmer(
393
404
  consensus_constants,
394
405
  b_tools.local_keychain,
395
406
  connect_to_daemon=False,
407
+ solver_peer=solver_peer,
396
408
  )
397
409
 
398
410
  async with service.manage(start=start_service):
@@ -506,3 +518,28 @@ async def setup_timelord(
506
518
 
507
519
  async with service.manage():
508
520
  yield service
521
+
522
+
523
+ @asynccontextmanager
524
+ async def setup_solver(
525
+ root_path: Path,
526
+ b_tools: BlockTools,
527
+ consensus_constants: ConsensusConstants,
528
+ start_service: bool = True,
529
+ ) -> AsyncGenerator[SolverService, None]:
530
+ with create_lock_and_load_config(b_tools.root_path / "config" / "ssl" / "ca", root_path) as config:
531
+ config["logging"]["log_stdout"] = True
532
+ config["solver"]["enable_upnp"] = True
533
+ config["solver"]["selected_network"] = "testnet0"
534
+ config["solver"]["port"] = 0
535
+ config["solver"]["rpc_port"] = 0
536
+ config["solver"]["num_threads"] = 1
537
+ save_config(root_path, "config.yaml", config)
538
+ service = create_solver_service(
539
+ root_path,
540
+ config,
541
+ consensus_constants,
542
+ )
543
+
544
+ async with service.manage(start=start_service):
545
+ yield service
File without changes