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
chia/solver/solver.py ADDED
@@ -0,0 +1,100 @@
1
+ from __future__ import annotations
2
+
3
+ import asyncio
4
+ import contextlib
5
+ import logging
6
+ from collections.abc import AsyncIterator
7
+ from concurrent.futures.thread import ThreadPoolExecutor
8
+ from pathlib import Path
9
+ from typing import TYPE_CHECKING, Any, ClassVar, Optional, cast
10
+
11
+ from chia_rs import ConsensusConstants
12
+
13
+ from chia.protocols.outbound_message import NodeType
14
+ from chia.rpc.rpc_server import StateChangedProtocol, default_get_connections
15
+ from chia.server.server import ChiaServer
16
+ from chia.server.ws_connection import WSChiaConnection
17
+ from chia.types.blockchain_format.proof_of_space import solve_proof
18
+
19
+ log = logging.getLogger(__name__)
20
+
21
+
22
+ class Solver:
23
+ if TYPE_CHECKING:
24
+ from chia.rpc.rpc_server import RpcServiceProtocol
25
+
26
+ _protocol_check: ClassVar[RpcServiceProtocol] = cast("Solver", None)
27
+
28
+ root_path: Path
29
+ _server: Optional[ChiaServer]
30
+ _shut_down: bool
31
+ started: bool = False
32
+ executor: ThreadPoolExecutor
33
+ state_changed_callback: Optional[StateChangedProtocol] = None
34
+ constants: ConsensusConstants
35
+ event_loop: asyncio.events.AbstractEventLoop
36
+
37
+ @property
38
+ def server(self) -> ChiaServer:
39
+ if self._server is None:
40
+ raise RuntimeError("server not assigned")
41
+
42
+ return self._server
43
+
44
+ def __init__(self, root_path: Path, config: dict[str, Any], constants: ConsensusConstants):
45
+ self.log = log
46
+ self.root_path = root_path
47
+ self.config = config
48
+ self._shut_down = False
49
+ num_threads = config["num_threads"]
50
+ self.log.info(f"Initializing solver with {num_threads} threads")
51
+ self.executor = ThreadPoolExecutor(max_workers=num_threads, thread_name_prefix="solver-")
52
+ self._server = None
53
+ self.constants = constants
54
+ self.state_changed_callback: Optional[StateChangedProtocol] = None
55
+ self.log.info("Solver initialization complete")
56
+
57
+ @contextlib.asynccontextmanager
58
+ async def manage(self) -> AsyncIterator[None]:
59
+ try:
60
+ self.log.info("Starting solver service")
61
+ self.started = True
62
+ self.log.info("Solver service started successfully")
63
+ yield
64
+ finally:
65
+ self.log.info("Shutting down solver service")
66
+ self._shut_down = True
67
+ self.executor.shutdown(wait=True)
68
+ self.log.info("Solver service shutdown complete")
69
+
70
+ def solve(self, partial_proof: bytes) -> Optional[bytes]:
71
+ self.log.debug(f"Solve request: partial={partial_proof.hex()}")
72
+ try:
73
+ return solve_proof(partial_proof)
74
+ except Exception:
75
+ self.log.exception("solve_proof()")
76
+ return None
77
+
78
+ def get_connections(self, request_node_type: Optional[NodeType]) -> list[dict[str, Any]]:
79
+ return default_get_connections(server=self.server, request_node_type=request_node_type)
80
+
81
+ async def on_connect(self, connection: WSChiaConnection) -> None:
82
+ if self.server.is_trusted_peer(connection, self.config.get("trusted_peers", {})):
83
+ self.log.info(f"Accepting connection from {connection.get_peer_logging()}")
84
+ return
85
+ if not self.config.get("trusted_peers_only", True):
86
+ self.log.info(
87
+ f"trusted peers check disabled, Accepting connection from untrusted {connection.get_peer_logging()}"
88
+ )
89
+ return
90
+ self.log.warning(f"Rejecting untrusted connection from {connection.get_peer_logging()}")
91
+ await connection.close()
92
+
93
+ async def on_disconnect(self, connection: WSChiaConnection) -> None:
94
+ self.log.info(f"peer disconnected {connection.get_peer_logging()}")
95
+
96
+ def set_server(self, server: ChiaServer) -> None:
97
+ self._server = server
98
+
99
+ def _set_state_changed_callback(self, callback: StateChangedProtocol) -> None:
100
+ self.state_changed_callback = callback
@@ -0,0 +1,59 @@
1
+ from __future__ import annotations
2
+
3
+ import logging
4
+ from typing import TYPE_CHECKING, ClassVar, Optional, cast
5
+
6
+ from chia.protocols.outbound_message import Message, make_msg
7
+ from chia.protocols.protocol_message_types import ProtocolMessageTypes
8
+ from chia.protocols.solver_protocol import SolverInfo, SolverResponse
9
+ from chia.server.api_protocol import ApiMetadata
10
+ from chia.solver.solver import Solver
11
+
12
+
13
+ class SolverAPI:
14
+ if TYPE_CHECKING:
15
+ from chia.server.api_protocol import ApiProtocol
16
+
17
+ _protocol_check: ClassVar[ApiProtocol] = cast("SolverAPI", None)
18
+
19
+ log: logging.Logger
20
+ solver: Solver
21
+ metadata: ClassVar[ApiMetadata] = ApiMetadata()
22
+
23
+ def __init__(self, solver: Solver) -> None:
24
+ self.log = logging.getLogger(__name__)
25
+ self.solver = solver
26
+
27
+ def ready(self) -> bool:
28
+ return self.solver.started
29
+
30
+ @metadata.request(peer_required=False, reply_types=[ProtocolMessageTypes.solution_response])
31
+ async def solve(
32
+ self,
33
+ request: SolverInfo,
34
+ ) -> Optional[Message]:
35
+ """
36
+ Solve a V2 plot partial proof to get the full proof of space.
37
+ This is called by the farmer when it receives V2 parital proofs from harvester.
38
+ """
39
+ if not self.solver.started:
40
+ self.log.error("Solver is not started")
41
+ return None
42
+
43
+ self.log.debug(f"Solving partial {request.partial_proof.hex()}")
44
+
45
+ try:
46
+ proof = self.solver.solve(request.partial_proof)
47
+ if proof is None:
48
+ self.log.warning(f"Solver returned no proof for parital {request.partial_proof.hex()}")
49
+ return None
50
+
51
+ self.log.debug(f"Successfully solved partial proof, returning {len(proof)} byte proof")
52
+ return make_msg(
53
+ ProtocolMessageTypes.solution_response,
54
+ SolverResponse(proof=proof, partial_proof=request.partial_proof),
55
+ )
56
+
57
+ except Exception as e:
58
+ self.log.error(f"Error solving parital {request.partial_proof.hex()}: {e}")
59
+ return None
@@ -0,0 +1,31 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import TYPE_CHECKING, Any, ClassVar, Optional, cast
4
+
5
+ from chia.rpc.rpc_server import Endpoint, EndpointResult
6
+ from chia.solver.solver import Solver
7
+ from chia.util.ws_message import WsRpcMessage
8
+
9
+
10
+ class SolverRpcApi:
11
+ if TYPE_CHECKING:
12
+ from chia.rpc.rpc_server import RpcApiProtocol
13
+
14
+ _protocol_check: ClassVar[RpcApiProtocol] = cast("SolverRpcApi", None)
15
+
16
+ def __init__(self, solver: Solver):
17
+ self.service = solver
18
+ self.service_name = "chia_solver"
19
+
20
+ def get_routes(self) -> dict[str, Endpoint]:
21
+ return {
22
+ "/get_state": self.get_state,
23
+ }
24
+
25
+ async def _state_changed(self, change: str, change_data: Optional[dict[str, Any]] = None) -> list[WsRpcMessage]:
26
+ return []
27
+
28
+ async def get_state(self, _: dict[str, Any]) -> EndpointResult:
29
+ return {
30
+ "started": self.service.started,
31
+ }
@@ -0,0 +1,16 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any
4
+
5
+ from chia.rpc.rpc_client import RpcClient
6
+
7
+
8
+ class SolverRpcClient(RpcClient):
9
+ """
10
+ Client to Chia RPC, connects to a local solver. Uses HTTP/JSON, and converts back from
11
+ JSON into native python objects before returning. All api calls use POST requests.
12
+ """
13
+
14
+ async def get_state(self) -> dict[str, Any]:
15
+ """Get solver state."""
16
+ return await self.fetch("get_state", {})
@@ -0,0 +1,8 @@
1
+ from __future__ import annotations
2
+
3
+ from chia.server.start_service import Service
4
+ from chia.solver.solver import Solver
5
+ from chia.solver.solver_api import SolverAPI
6
+ from chia.solver.solver_rpc_api import SolverRpcApi
7
+
8
+ SolverService = Service[Solver, SolverAPI, SolverRpcApi]
@@ -0,0 +1,102 @@
1
+ from __future__ import annotations
2
+
3
+ import os
4
+ import pathlib
5
+ import sys
6
+ from multiprocessing import freeze_support
7
+ from typing import Any, Optional
8
+
9
+ from chia_rs import ConsensusConstants
10
+ from chia_rs.sized_ints import uint16
11
+
12
+ from chia.apis import ApiProtocolRegistry
13
+ from chia.consensus.constants import replace_str_to_bytes
14
+ from chia.consensus.default_constants import DEFAULT_CONSTANTS, update_testnet_overrides
15
+ from chia.protocols.outbound_message import NodeType
16
+ from chia.server.signal_handlers import SignalHandlers
17
+ from chia.server.start_service import Service, async_run
18
+ from chia.solver.solver import Solver
19
+ from chia.solver.solver_api import SolverAPI
20
+ from chia.solver.solver_rpc_api import SolverRpcApi
21
+ from chia.solver.solver_service import SolverService
22
+ from chia.util.chia_logging import initialize_service_logging
23
+ from chia.util.config import load_config, load_config_cli
24
+ from chia.util.default_root import resolve_root_path
25
+ from chia.util.task_timing import maybe_manage_task_instrumentation
26
+
27
+ # See: https://bugs.python.org/issue29288
28
+ "".encode("idna")
29
+
30
+ SERVICE_NAME = "solver"
31
+
32
+
33
+ def create_solver_service(
34
+ root_path: pathlib.Path,
35
+ config: dict[str, Any],
36
+ consensus_constants: ConsensusConstants,
37
+ connect_to_daemon: bool = True,
38
+ override_capabilities: Optional[list[tuple[uint16, str]]] = None,
39
+ ) -> SolverService:
40
+ service_config = config[SERVICE_NAME]
41
+
42
+ network_id = service_config["selected_network"]
43
+ upnp_list = []
44
+ if service_config["enable_upnp"]:
45
+ upnp_list = [service_config["port"]]
46
+
47
+ node = Solver(root_path, service_config, consensus_constants)
48
+ peer_api = SolverAPI(node)
49
+ network_id = service_config["selected_network"]
50
+
51
+ rpc_info = None
52
+ if service_config.get("start_rpc_server", True):
53
+ rpc_info = (SolverRpcApi, service_config["rpc_port"])
54
+
55
+ return Service(
56
+ root_path=root_path,
57
+ config=config,
58
+ node=node,
59
+ peer_api=peer_api,
60
+ node_type=NodeType.SOLVER,
61
+ advertised_port=service_config["port"],
62
+ service_name=SERVICE_NAME,
63
+ upnp_ports=upnp_list,
64
+ on_connect_callback=node.on_connect,
65
+ network_id=network_id,
66
+ rpc_info=rpc_info,
67
+ connect_to_daemon=connect_to_daemon,
68
+ override_capabilities=override_capabilities,
69
+ class_for_type=ApiProtocolRegistry,
70
+ )
71
+
72
+
73
+ async def async_main(service_config: dict[str, Any], root_path: pathlib.Path) -> int:
74
+ config = load_config(root_path, "config.yaml", fill_missing_services=True)
75
+ config[SERVICE_NAME] = service_config
76
+ network_id = service_config["selected_network"]
77
+ overrides = service_config["network_overrides"]["constants"][network_id]
78
+ update_testnet_overrides(network_id, overrides)
79
+ updated_constants = replace_str_to_bytes(DEFAULT_CONSTANTS, **overrides)
80
+ initialize_service_logging(service_name=SERVICE_NAME, config=config, root_path=root_path)
81
+
82
+ service = create_solver_service(root_path, config, updated_constants)
83
+ async with SignalHandlers.manage() as signal_handlers:
84
+ await service.setup_process_global_state(signal_handlers=signal_handlers)
85
+ await service.run()
86
+
87
+ return 0
88
+
89
+
90
+ def main() -> int:
91
+ freeze_support()
92
+ root_path = resolve_root_path(override=None)
93
+
94
+ with maybe_manage_task_instrumentation(
95
+ enable=os.environ.get(f"CHIA_INSTRUMENT_{SERVICE_NAME.upper()}") is not None
96
+ ):
97
+ service_config = load_config_cli(root_path, "config.yaml", SERVICE_NAME)
98
+ return async_run(coro=async_main(service_config, root_path=root_path))
99
+
100
+
101
+ if __name__ == "__main__":
102
+ sys.exit(main())
@@ -1,28 +1,3 @@
1
- ##
2
- ## Bundle of CA Root Certificates
3
- ##
4
- ## Certificate data from Mozilla as of: Tue May 20 03:12:02 2025 GMT
5
- ##
6
- ## Find updated versions here: https://curl.se/docs/caextract.html
7
- ##
8
- ## This is a bundle of X.509 certificates of public Certificate Authorities
9
- ## (CA). These were automatically extracted from Mozilla's root certificates
10
- ## file (certdata.txt). This file can be found in the mozilla source tree:
11
- ## https://raw.githubusercontent.com/mozilla-firefox/firefox/refs/heads/release/security/nss/lib/ckfw/builtins/certdata.txt
12
- ##
13
- ## It contains the certificates in PEM format and therefore
14
- ## can be directly used with curl / libcurl / php_curl, or with
15
- ## an Apache+mod_ssl webserver for SSL client authentication.
16
- ## Just configure this file as the SSLCACertificateFile.
17
- ##
18
- ## Conversion done with mk-ca-bundle.pl version 1.29.
19
- ## SHA256: 8944ec6b572b577daee4fc681a425881f841ec2660e4cb5f0eee727f84620697
20
- ##
21
-
22
-
23
- Entrust Root Certification Authority
24
- ====================================
25
- -----BEGIN CERTIFICATE-----
26
1
  MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV
27
2
  BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw
28
3
  b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG
@@ -44,11 +19,9 @@ Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa
44
19
  v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS
45
20
  W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
46
21
  tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
47
- -----END CERTIFICATE-----
48
22
 
49
23
  QuoVadis Root CA 2
50
24
  ==================
51
- -----BEGIN CERTIFICATE-----
52
25
  MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
53
26
  EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx
54
27
  ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
chia/ssl/create_ssl.py CHANGED
@@ -24,8 +24,9 @@ _all_private_node_names: list[str] = [
24
24
  "crawler",
25
25
  "data_layer",
26
26
  "daemon",
27
+ "solver",
27
28
  ]
28
- _all_public_node_names: list[str] = ["full_node", "wallet", "farmer", "introducer", "timelord", "data_layer"]
29
+ _all_public_node_names: list[str] = ["full_node", "wallet", "farmer", "introducer", "timelord", "data_layer", "solver"]
29
30
 
30
31
 
31
32
  def get_chia_ca_crt_key() -> tuple[Any, Any]:
@@ -36,7 +37,7 @@ def get_chia_ca_crt_key() -> tuple[Any, Any]:
36
37
 
37
38
 
38
39
  def get_mozilla_ca_crt() -> str:
39
- mozilla_path = Path(__file__).parent.parent.parent.absolute() / "mozilla-ca/cacert.pem"
40
+ mozilla_path = Path(__file__).parent.absolute() / "cacert.pem"
40
41
  return str(mozilla_path)
41
42
 
42
43
 
@@ -11,13 +11,13 @@ from chia.apis import ApiProtocolRegistry
11
11
  from chia.consensus.constants import replace_str_to_bytes
12
12
  from chia.consensus.default_constants import DEFAULT_CONSTANTS, update_testnet_overrides
13
13
  from chia.protocols.outbound_message import NodeType
14
- from chia.server.aliases import TimelordService
15
14
  from chia.server.resolve_peer_info import get_unresolved_peer_infos
16
15
  from chia.server.signal_handlers import SignalHandlers
17
16
  from chia.server.start_service import RpcInfo, Service, async_run
18
17
  from chia.timelord.timelord import Timelord
19
18
  from chia.timelord.timelord_api import TimelordAPI
20
19
  from chia.timelord.timelord_rpc_api import TimelordRpcApi
20
+ from chia.timelord.timelord_service import TimelordService
21
21
  from chia.util.chia_logging import initialize_service_logging
22
22
  from chia.util.config import load_config, load_config_cli
23
23
  from chia.util.default_root import resolve_root_path
chia/timelord/timelord.py CHANGED
@@ -160,20 +160,19 @@ class Timelord:
160
160
  slow_bluebox = self.config.get("slow_bluebox", False)
161
161
  if not self.bluebox_mode:
162
162
  self.main_loop = create_referenced_task(self._manage_chains())
163
+ elif os.name == "nt" or slow_bluebox:
164
+ # `vdf_client` doesn't build on windows, use `prove()` from chiavdf.
165
+ workers = self.config.get("slow_bluebox_process_count", 1)
166
+ self._executor_shutdown_tempfile = _create_shutdown_file()
167
+ self.bluebox_pool = ThreadPoolExecutor(
168
+ max_workers=workers,
169
+ thread_name_prefix="blue-box-",
170
+ )
171
+ self.main_loop = create_referenced_task(
172
+ self._start_manage_discriminant_queue_sanitizer_slow(self.bluebox_pool, workers)
173
+ )
163
174
  else:
164
- if os.name == "nt" or slow_bluebox:
165
- # `vdf_client` doesn't build on windows, use `prove()` from chiavdf.
166
- workers = self.config.get("slow_bluebox_process_count", 1)
167
- self._executor_shutdown_tempfile = _create_shutdown_file()
168
- self.bluebox_pool = ThreadPoolExecutor(
169
- max_workers=workers,
170
- thread_name_prefix="blue-box-",
171
- )
172
- self.main_loop = create_referenced_task(
173
- self._start_manage_discriminant_queue_sanitizer_slow(self.bluebox_pool, workers)
174
- )
175
- else:
176
- self.main_loop = create_referenced_task(self._manage_discriminant_queue_sanitizer())
175
+ self.main_loop = create_referenced_task(self._manage_discriminant_queue_sanitizer())
177
176
  log.info(f"Started timelord, listening on port {self.get_vdf_server_port()}")
178
177
  try:
179
178
  yield
@@ -0,0 +1,8 @@
1
+ from __future__ import annotations
2
+
3
+ from chia.server.start_service import Service
4
+ from chia.timelord.timelord import Timelord
5
+ from chia.timelord.timelord_api import TimelordAPI
6
+ from chia.timelord.timelord_rpc_api import TimelordRpcApi
7
+
8
+ TimelordService = Service[Timelord, TimelordAPI, TimelordRpcApi]
@@ -13,23 +13,64 @@ from chia.util.hash import std_hash
13
13
 
14
14
  log = logging.getLogger(__name__)
15
15
 
16
-
17
- def get_plot_id(pos: ProofOfSpace) -> bytes32:
18
- assert pos.pool_public_key is None or pos.pool_contract_puzzle_hash is None
19
- if pos.pool_public_key is None:
20
- assert pos.pool_contract_puzzle_hash is not None
21
- return calculate_plot_id_ph(pos.pool_contract_puzzle_hash, pos.plot_public_key)
22
- return calculate_plot_id_pk(pos.pool_public_key, pos.plot_public_key)
16
+ # These are temporary stubs for chiapos2, that we build against until it's ready to be integrated.
23
17
 
24
18
 
25
19
  # returns quality string for v2 plot, or None if invalid
26
20
  def validate_proof_v2(
27
- plot_id: bytes32, size: uint8, difficulty: uint8, challenge: bytes32, proof: bytes
21
+ plot_id: bytes32, size: uint8, required_plot_strength: uint8, challenge: bytes32, proof: bytes
28
22
  ) -> Optional[bytes32]:
29
23
  # TODO: todo_v2_plots call into new chiapos library
30
24
  raise NotImplementedError
31
25
 
32
26
 
27
+ # this is compute intensive, solving a partial proof returning a full proof
28
+ def solve_proof(partial_proof: bytes) -> bytes:
29
+ # TODO: todo_v2_plots call into new chiapos library
30
+ raise NotImplementedError
31
+
32
+
33
+ # given a partial proof, computes the quality. This is used to compute required iters.
34
+ def quality_for_partial_proof(partial_proof: bytes, challenge: bytes32) -> bytes32:
35
+ # TODO: todo_v2_plots call into new chiapos library
36
+ return std_hash(partial_proof + challenge)
37
+
38
+
39
+ def make_pos(
40
+ challenge: bytes32,
41
+ pool_public_key: Optional[G1Element],
42
+ pool_contract_puzzle_hash: Optional[bytes32],
43
+ plot_public_key: G1Element,
44
+ version_and_size: PlotSize,
45
+ proof: bytes,
46
+ ) -> ProofOfSpace:
47
+ k: int
48
+ if version_and_size.size_v1 is not None:
49
+ k = version_and_size.size_v1
50
+ else:
51
+ assert version_and_size.size_v2 is not None
52
+ k = version_and_size.size_v2
53
+ assert k is not None
54
+ k |= 0x80
55
+
56
+ return ProofOfSpace(
57
+ challenge,
58
+ pool_public_key,
59
+ pool_contract_puzzle_hash,
60
+ plot_public_key,
61
+ uint8(k),
62
+ proof,
63
+ )
64
+
65
+
66
+ def get_plot_id(pos: ProofOfSpace) -> bytes32:
67
+ assert pos.pool_public_key is None or pos.pool_contract_puzzle_hash is None
68
+ if pos.pool_public_key is None:
69
+ assert pos.pool_contract_puzzle_hash is not None
70
+ return calculate_plot_id_ph(pos.pool_contract_puzzle_hash, pos.plot_public_key)
71
+ return calculate_plot_id_pk(pos.pool_public_key, pos.plot_public_key)
72
+
73
+
33
74
  def check_plot_size(constants: ConsensusConstants, ps: PlotSize) -> bool:
34
75
  size_v1 = ps.size_v1
35
76
  if size_v1 is not None:
@@ -50,6 +91,9 @@ def check_plot_size(constants: ConsensusConstants, ps: PlotSize) -> bool:
50
91
  if size_v2 > constants.MAX_PLOT_SIZE_V2:
51
92
  log.error("Plot size is higher than the maximum")
52
93
  return False
94
+ if (size_v2 & 1) == 1:
95
+ log.error("Plot size is odd")
96
+ return False
53
97
  return True
54
98
 
55
99
 
@@ -98,8 +142,8 @@ def verify_and_get_quality_string(
98
142
  # === V2 plots ===
99
143
  assert plot_size.size_v2 is not None
100
144
 
101
- plot_difficulty = calculate_plot_difficulty(constants, height)
102
- return validate_proof_v2(plot_id, plot_size.size_v2, plot_difficulty, pos.challenge, bytes(pos.proof))
145
+ required_plot_strength = calculate_required_plot_strength(constants, height)
146
+ return validate_proof_v2(plot_id, plot_size.size_v2, required_plot_strength, pos.challenge, bytes(pos.proof))
103
147
 
104
148
 
105
149
  def passes_plot_filter(
@@ -137,16 +181,16 @@ def calculate_prefix_bits(constants: ConsensusConstants, height: uint32, plot_si
137
181
  return max(0, prefix_bits)
138
182
 
139
183
 
140
- def calculate_plot_difficulty(constants: ConsensusConstants, height: uint32) -> uint8:
141
- if height < constants.PLOT_DIFFICULTY_4_HEIGHT:
142
- return constants.PLOT_DIFFICULTY_INITIAL
143
- if height < constants.PLOT_DIFFICULTY_5_HEIGHT:
184
+ def calculate_required_plot_strength(constants: ConsensusConstants, height: uint32) -> uint8:
185
+ if height < constants.PLOT_STRENGTH_4_HEIGHT:
186
+ return constants.PLOT_STRENGTH_INITIAL
187
+ if height < constants.PLOT_STRENGTH_5_HEIGHT:
144
188
  return uint8(4)
145
- if height < constants.PLOT_DIFFICULTY_6_HEIGHT:
189
+ if height < constants.PLOT_STRENGTH_6_HEIGHT:
146
190
  return uint8(5)
147
- if height < constants.PLOT_DIFFICULTY_7_HEIGHT:
191
+ if height < constants.PLOT_STRENGTH_7_HEIGHT:
148
192
  return uint8(6)
149
- if height < constants.PLOT_DIFFICULTY_8_HEIGHT:
193
+ if height < constants.PLOT_STRENGTH_8_HEIGHT:
150
194
  return uint8(7)
151
195
  else:
152
196
  return uint8(8)
chia/types/coin_spend.py CHANGED
@@ -10,7 +10,6 @@ from chia.types.blockchain_format.program import Program
10
10
  from chia.types.blockchain_format.serialized_program import SerializedProgram
11
11
  from chia.types.condition_opcodes import ConditionOpcode
12
12
  from chia.types.condition_with_args import ConditionWithArgs
13
- from chia.util.streamable import Streamable, streamable
14
13
 
15
14
 
16
15
  def make_spend(
@@ -36,13 +35,6 @@ def make_spend(
36
35
  return CoinSpend(coin, pr, sol)
37
36
 
38
37
 
39
- @streamable
40
- @dataclass(frozen=True)
41
- class SpendInfo(Streamable):
42
- puzzle: SerializedProgram
43
- solution: SerializedProgram
44
-
45
-
46
38
  @dataclass(frozen=True)
47
39
  class CoinSpendWithConditions:
48
40
  coin_spend: CoinSpend
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  from dataclasses import dataclass
4
4
 
5
- from chia_rs import SpendBundle, SpendBundleConditions
5
+ from chia_rs import G2Element, SpendBundleConditions
6
6
  from chia_rs.sized_bytes import bytes32
7
7
  from chia_rs.sized_ints import uint32
8
8
 
@@ -11,8 +11,8 @@ from chia.types.mempool_item import BundleCoinSpend
11
11
 
12
12
  @dataclass(frozen=True)
13
13
  class InternalMempoolItem:
14
- spend_bundle: SpendBundle
14
+ aggregated_signature: G2Element
15
15
  conds: SpendBundleConditions
16
16
  height_added_to_mempool: uint32
17
- # Map of coin ID to coin spend data between the bundle and its NPCResult
17
+ # Map of coin ID to coin spend data between the bundle and its SpendBundleConditions
18
18
  bundle_coin_spends: dict[bytes32, BundleCoinSpend]
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
  from dataclasses import dataclass, field
4
4
  from typing import Any, Optional
5
5
 
6
- from chia_rs import CoinSpend, SpendBundle, SpendBundleConditions
6
+ from chia_rs import CoinSpend, G2Element, SpendBundle, SpendBundleConditions
7
7
  from chia_rs.sized_bytes import bytes32
8
8
  from chia_rs.sized_ints import uint32, uint64
9
9
 
@@ -22,21 +22,25 @@ class UnspentLineageInfo:
22
22
  class BundleCoinSpend:
23
23
  coin_spend: CoinSpend
24
24
  eligible_for_dedup: bool
25
- eligible_for_fast_forward: bool
26
25
  additions: list[Coin]
27
- # cost on the specific solution in this item
28
- cost: Optional[uint64] = None
26
+ # cost on the specific solution in this item. The cost includes execution
27
+ # cost and conditions cost, not byte-cost.
28
+ cost: uint64
29
29
 
30
30
  # if this spend is eligible for fast forward, this may be set to the
31
31
  # current unspent lineage belonging to this singleton, that we would rebase
32
32
  # this spend on top of if we were to make a block now
33
33
  # When finding MempoolItems by coin ID, we use Coin ID from it if it's set
34
- latest_singleton_lineage: Optional[UnspentLineageInfo] = None
34
+ latest_singleton_lineage: Optional[UnspentLineageInfo]
35
+
36
+ @property
37
+ def supports_fast_forward(self) -> bool:
38
+ return self.latest_singleton_lineage is not None
35
39
 
36
40
 
37
41
  @dataclass(frozen=True)
38
42
  class MempoolItem:
39
- spend_bundle: SpendBundle
43
+ aggregated_signature: G2Element
40
44
  fee: uint64
41
45
  conds: SpendBundleConditions
42
46
  spend_bundle_name: bytes32
@@ -83,11 +87,11 @@ class MempoolItem:
83
87
 
84
88
  @property
85
89
  def removals(self) -> list[Coin]:
86
- return self.spend_bundle.removals()
90
+ return [bcs.coin_spend.coin for bcs in self.bundle_coin_spends.values()]
87
91
 
88
92
  def to_json_dict(self) -> dict[str, Any]:
89
93
  return {
90
- "spend_bundle": recurse_jsonify(self.spend_bundle),
94
+ "spend_bundle": recurse_jsonify(self.to_spend_bundle()),
91
95
  "fee": recurse_jsonify(self.fee),
92
96
  "npc_result": {"Error": None, "conds": recurse_jsonify(self.conds)},
93
97
  "cost": recurse_jsonify(self.cost),
@@ -95,3 +99,6 @@ class MempoolItem:
95
99
  "additions": recurse_jsonify(self.additions),
96
100
  "removals": recurse_jsonify(self.removals),
97
101
  }
102
+
103
+ def to_spend_bundle(self) -> SpendBundle:
104
+ return SpendBundle([bcs.coin_spend for bcs in self.bundle_coin_spends.values()], self.aggregated_signature)
@@ -22,7 +22,7 @@ class MempoolSubmissionStatus(Streamable):
22
22
  inclusion_status: uint8 # MempoolInclusionStatus
23
23
  error_msg: Optional[str]
24
24
 
25
- def to_json_dict_convenience(self) -> dict[str, Union[str, MempoolInclusionStatus, Optional[str]]]:
25
+ def to_json_dict_convenience(self) -> dict[str, Union[str, MempoolInclusionStatus, None]]:
26
26
  formatted = self.to_json_dict()
27
27
  formatted["inclusion_status"] = MempoolInclusionStatus(self.inclusion_status).name
28
28
  return formatted