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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (371) hide show
  1. chia/_tests/blockchain/blockchain_test_utils.py +6 -7
  2. chia/_tests/blockchain/test_augmented_chain.py +4 -3
  3. chia/_tests/blockchain/test_blockchain.py +10 -5
  4. chia/_tests/clvm/coin_store.py +1 -1
  5. chia/_tests/cmds/cmd_test_utils.py +84 -97
  6. chia/_tests/cmds/test_dev_gh.py +1 -1
  7. chia/_tests/cmds/test_farm_cmd.py +56 -2
  8. chia/_tests/cmds/wallet/test_consts.py +3 -1
  9. chia/_tests/cmds/wallet/test_did.py +3 -8
  10. chia/_tests/cmds/wallet/test_nft.py +6 -6
  11. chia/_tests/cmds/wallet/test_notifications.py +39 -21
  12. chia/_tests/cmds/wallet/test_vcs.py +2 -1
  13. chia/_tests/cmds/wallet/test_wallet.py +160 -136
  14. chia/_tests/conftest.py +51 -26
  15. chia/_tests/core/cmds/test_wallet.py +4 -3
  16. chia/_tests/core/consensus/test_pot_iterations.py +71 -24
  17. chia/_tests/core/custom_types/test_proof_of_space.py +60 -30
  18. chia/_tests/core/custom_types/test_spend_bundle.py +1 -4
  19. chia/_tests/core/data_layer/conftest.py +7 -2
  20. chia/_tests/core/data_layer/old_format/__init__.py +0 -0
  21. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-005876c1cdc4d5f1726551b207b9f63efc9cd2f72df80a3a26a1ba73d40d6745-delta-23-v1.0.dat +0 -0
  22. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-005876c1cdc4d5f1726551b207b9f63efc9cd2f72df80a3a26a1ba73d40d6745-full-23-v1.0.dat +0 -0
  23. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-01b36e72a975cdc00d6514eea81668d19e8ea3150217ae98cb3361688a016fab-delta-9-v1.0.dat +0 -0
  24. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-01b36e72a975cdc00d6514eea81668d19e8ea3150217ae98cb3361688a016fab-full-9-v1.0.dat +0 -0
  25. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-06147c3b12d73e9b83b686a8c10b4a36a513c8a93c0ff99ae197f06326278be9-delta-5-v1.0.dat +0 -0
  26. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-06147c3b12d73e9b83b686a8c10b4a36a513c8a93c0ff99ae197f06326278be9-full-5-v1.0.dat +0 -0
  27. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-073c051a5934ad3b8db39eee2189e4300e55f48aaa17ff4ae30eeae088ff544a-delta-22-v1.0.dat +0 -0
  28. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-073c051a5934ad3b8db39eee2189e4300e55f48aaa17ff4ae30eeae088ff544a-full-22-v1.0.dat +0 -0
  29. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-0cc077559b9c7b4aefe8f8f591c195e0779bebdf89f2ad8285a00ea5f859d965-delta-1-v1.0.dat +0 -0
  30. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-0cc077559b9c7b4aefe8f8f591c195e0779bebdf89f2ad8285a00ea5f859d965-full-1-v1.0.dat +0 -0
  31. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-16377275567b723b20936d3f1ec0a2fd83f6ac379b922351a5e4c54949069f3b-delta-2-v1.0.dat +0 -0
  32. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-16377275567b723b20936d3f1ec0a2fd83f6ac379b922351a5e4c54949069f3b-full-2-v1.0.dat +0 -0
  33. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-1cb824a7a5f02cd30ac6c38e8f6216780d9bfa2d24811d282a368dcd541438a7-delta-29-v1.0.dat +0 -0
  34. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-1cb824a7a5f02cd30ac6c38e8f6216780d9bfa2d24811d282a368dcd541438a7-full-29-v1.0.dat +0 -0
  35. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-27b89dc4809ebc5a3b87757d35e95e2761d978cf121e44fa2773a5c06e4cc7b5-delta-28-v1.0.dat +0 -0
  36. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-27b89dc4809ebc5a3b87757d35e95e2761d978cf121e44fa2773a5c06e4cc7b5-full-28-v1.0.dat +0 -0
  37. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-28a6b7c134abfaeb0ab58a018313f6c87a61a40a4d9ec9bedf53aa1d12f3ee37-delta-7-v1.0.dat +0 -0
  38. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-28a6b7c134abfaeb0ab58a018313f6c87a61a40a4d9ec9bedf53aa1d12f3ee37-full-7-v1.0.dat +0 -0
  39. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-30a6bfe7cecbeda259a295dc6de3a436357f52388c3b03d86901e7da68565aeb-delta-19-v1.0.dat +0 -0
  40. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-30a6bfe7cecbeda259a295dc6de3a436357f52388c3b03d86901e7da68565aeb-full-19-v1.0.dat +0 -0
  41. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-343a2bf9add798e3ac2e6a571823cf9fa7e8a1bed532143354ead2648bd036ef-delta-10-v1.0.dat +0 -0
  42. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-343a2bf9add798e3ac2e6a571823cf9fa7e8a1bed532143354ead2648bd036ef-full-10-v1.0.dat +0 -0
  43. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-4d90efbc1fb3df324193831ea4a57dd5e10e67d9653343eb18d178272adb0447-delta-17-v1.0.dat +0 -0
  44. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-4d90efbc1fb3df324193831ea4a57dd5e10e67d9653343eb18d178272adb0447-full-17-v1.0.dat +0 -0
  45. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-4dd2ea099e91635c441f40b36d3f84078a2d818d2dc601c7278e72cbdfe3eca8-delta-20-v1.0.dat +0 -0
  46. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-4dd2ea099e91635c441f40b36d3f84078a2d818d2dc601c7278e72cbdfe3eca8-full-20-v1.0.dat +0 -0
  47. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-509effbdca78639023b933ce6c08a0465fb247e1cd5329e9e9c553940e4b6e46-delta-31-v1.0.dat +0 -0
  48. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-509effbdca78639023b933ce6c08a0465fb247e1cd5329e9e9c553940e4b6e46-full-31-v1.0.dat +0 -0
  49. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-5379a4d9ff29c29d1ef0906d22e82c52472753d31806189ab813c43365341b78-delta-40-v1.0.dat +0 -0
  50. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-5379a4d9ff29c29d1ef0906d22e82c52472753d31806189ab813c43365341b78-full-40-v1.0.dat +0 -0
  51. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-55908eda5686a8f89e4c50672cbe893ec1734fb23449dc03325efe7c414f9aa4-delta-49-v1.0.dat +0 -0
  52. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-55908eda5686a8f89e4c50672cbe893ec1734fb23449dc03325efe7c414f9aa4-full-49-v1.0.dat +0 -0
  53. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-57cc2691fb1fb986c99a58bcb0e029d0cd0cff41553d703147c54196d7d9ca63-delta-14-v1.0.dat +0 -0
  54. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-57cc2691fb1fb986c99a58bcb0e029d0cd0cff41553d703147c54196d7d9ca63-full-14-v1.0.dat +0 -0
  55. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-5943bf8ae4f5e59969d8570e4f40a8223299febdcfbcf188b3b3e2ab11044e18-delta-34-v1.0.dat +0 -0
  56. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-5943bf8ae4f5e59969d8570e4f40a8223299febdcfbcf188b3b3e2ab11044e18-full-34-v1.0.dat +0 -0
  57. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6518527b7c939bee60ce6b024cbe90d3b9d8913c56b8ce11a4df5da7ff7db1c8-delta-8-v1.0.dat +0 -0
  58. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6518527b7c939bee60ce6b024cbe90d3b9d8913c56b8ce11a4df5da7ff7db1c8-full-8-v1.0.dat +0 -0
  59. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-66ff26a26620379e14a7c91252d27ee4dbe06ad69a3a390a88642fe757f2b288-delta-45-v1.0.dat +0 -0
  60. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-66ff26a26620379e14a7c91252d27ee4dbe06ad69a3a390a88642fe757f2b288-full-45-v1.0.dat +0 -0
  61. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6bd0a508ee2c4afbe9d4daa811139fd6e54e7f4e16850cbce999fa30f8bdccd2-delta-6-v1.0.dat +0 -0
  62. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6bd0a508ee2c4afbe9d4daa811139fd6e54e7f4e16850cbce999fa30f8bdccd2-full-6-v1.0.dat +0 -0
  63. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6ce850d0d77ca743fcc2fc792747472e5d2c1c0813aa43abbb370554428fc897-delta-48-v1.0.dat +0 -0
  64. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6ce850d0d77ca743fcc2fc792747472e5d2c1c0813aa43abbb370554428fc897-full-48-v1.0.dat +0 -0
  65. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6eb4ca2e1552b156c5969396b49070eb08ad6c96b347359387519be59f7ccaed-delta-26-v1.0.dat +0 -0
  66. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6eb4ca2e1552b156c5969396b49070eb08ad6c96b347359387519be59f7ccaed-full-26-v1.0.dat +0 -0
  67. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-71c797fb7592d3f0a5a20c79ab8497ddaa0fd9ec17712e109d25c91b3f3c76e5-delta-3-v1.0.dat +0 -0
  68. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-71c797fb7592d3f0a5a20c79ab8497ddaa0fd9ec17712e109d25c91b3f3c76e5-full-3-v1.0.dat +0 -0
  69. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-73357026053d5a4969e7a6b9aeeef91c14cc6d5f32fc700fe6d21d2a1b22496c-delta-25-v1.0.dat +0 -0
  70. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-73357026053d5a4969e7a6b9aeeef91c14cc6d5f32fc700fe6d21d2a1b22496c-full-25-v1.0.dat +0 -0
  71. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-7c897e5c46e834ced65bde7de87716acfaa5dffbdb30b5cd9377d8c319df2034-delta-35-v1.0.dat +0 -0
  72. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-7c897e5c46e834ced65bde7de87716acfaa5dffbdb30b5cd9377d8c319df2034-full-35-v1.0.dat +0 -0
  73. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-87b8394d80d08117a5a1cd04ed8a682564eab7197a2c090159863591b5108874-delta-4-v1.0.dat +0 -0
  74. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-87b8394d80d08117a5a1cd04ed8a682564eab7197a2c090159863591b5108874-full-4-v1.0.dat +0 -0
  75. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-89eb40b9cc0921c5f5c3feb20927c13a9ada5760f82d219dcee153b7d400165c-delta-41-v1.0.dat +0 -0
  76. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-89eb40b9cc0921c5f5c3feb20927c13a9ada5760f82d219dcee153b7d400165c-full-41-v1.0.dat +0 -0
  77. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-8b649433156b8c924436cdec9c6de26106fd6f73a0528570f48748f7b40d7f8a-delta-21-v1.0.dat +0 -0
  78. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-8b649433156b8c924436cdec9c6de26106fd6f73a0528570f48748f7b40d7f8a-full-21-v1.0.dat +0 -0
  79. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-8d364023a0834c8c3077e236a465493acbf488e4f9d1f4c6cc230343c10a8f7d-delta-42-v1.0.dat +0 -0
  80. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-8d364023a0834c8c3077e236a465493acbf488e4f9d1f4c6cc230343c10a8f7d-full-42-v1.0.dat +0 -0
  81. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-925689e24a3d98d98676d816cdd8b73e7b2df057d9d4503da9b27bf91d79666c-delta-38-v1.0.dat +0 -0
  82. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-925689e24a3d98d98676d816cdd8b73e7b2df057d9d4503da9b27bf91d79666c-full-38-v1.0.dat +0 -0
  83. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-937be3d428b19f521be4f98faecc3307ae11ee731c76992f417fa4268d13859e-delta-11-v1.0.dat +0 -0
  84. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-937be3d428b19f521be4f98faecc3307ae11ee731c76992f417fa4268d13859e-full-11-v1.0.dat +0 -0
  85. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-97f34af499b79e2111fc296a598fc9654c2467ea038dfea41fd58241fb3642de-delta-32-v1.0.dat +0 -0
  86. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-97f34af499b79e2111fc296a598fc9654c2467ea038dfea41fd58241fb3642de-full-32-v1.0.dat +0 -0
  87. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-9d1b737243b8a1d0022f2b36ac53333c6280354a74d77f2a3642dcab35204e59-delta-33-v1.0.dat +0 -0
  88. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-9d1b737243b8a1d0022f2b36ac53333c6280354a74d77f2a3642dcab35204e59-full-33-v1.0.dat +0 -0
  89. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-a6663f98ef6ddf6db55f01163e34bb2e87aa82f0347e79ce31e8dbfa390c480c-delta-47-v1.0.dat +0 -0
  90. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-a6663f98ef6ddf6db55f01163e34bb2e87aa82f0347e79ce31e8dbfa390c480c-full-47-v1.0.dat +0 -0
  91. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-aa77376d1ccd3664e5c6366e010c52a978fedbf40f5ce262fee71b2e7fe0c6a9-delta-50-v1.0.dat +0 -0
  92. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-aa77376d1ccd3664e5c6366e010c52a978fedbf40f5ce262fee71b2e7fe0c6a9-full-50-v1.0.dat +0 -0
  93. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-b0f28514741ed1a71f5c6544bf92f9e0e493c5f3cf28328909771d8404eff626-delta-24-v1.0.dat +0 -0
  94. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-b0f28514741ed1a71f5c6544bf92f9e0e493c5f3cf28328909771d8404eff626-full-24-v1.0.dat +0 -0
  95. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-b3efee5358e6eb89ab3b60db2d128d57eef39e8538fb63c5632412d4f8e7d09e-delta-44-v1.0.dat +0 -0
  96. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-b3efee5358e6eb89ab3b60db2d128d57eef39e8538fb63c5632412d4f8e7d09e-full-44-v1.0.dat +0 -0
  97. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bb0b56b6eb7acbb4e80893b04c72412fe833418232e1ed7b06d97d7a7f08b4e1-delta-16-v1.0.dat +0 -0
  98. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bb0b56b6eb7acbb4e80893b04c72412fe833418232e1ed7b06d97d7a7f08b4e1-full-16-v1.0.dat +0 -0
  99. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bc45262b757ff494b53bd2a8fba0f5511cc1f9c2a2c5360e04ea8cebbf6409df-delta-13-v1.0.dat +0 -0
  100. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bc45262b757ff494b53bd2a8fba0f5511cc1f9c2a2c5360e04ea8cebbf6409df-full-13-v1.0.dat +0 -0
  101. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bd0494ba430aff13458b557113b073d226eaf11257dfe26ff3323fa1cfe1335b-delta-39-v1.0.dat +0 -0
  102. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bd0494ba430aff13458b557113b073d226eaf11257dfe26ff3323fa1cfe1335b-full-39-v1.0.dat +0 -0
  103. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cd04f5fbba1553fa728b4dd8131d4723aaac288e0c7dc080447fbf0872c0a6eb-delta-36-v1.0.dat +0 -0
  104. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cd04f5fbba1553fa728b4dd8131d4723aaac288e0c7dc080447fbf0872c0a6eb-full-36-v1.0.dat +0 -0
  105. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cdd2399557fb3163a848f08831fdc833703354edb19a0d32a965fdb140f160c2-delta-18-v1.0.dat +0 -0
  106. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cdd2399557fb3163a848f08831fdc833703354edb19a0d32a965fdb140f160c2-full-18-v1.0.dat +0 -0
  107. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cf7a08fca7b1332095242e4d9800f4b94a3f4eaae88fe8407da42736d54b9e18-delta-37-v1.0.dat +0 -0
  108. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cf7a08fca7b1332095242e4d9800f4b94a3f4eaae88fe8407da42736d54b9e18-full-37-v1.0.dat +0 -0
  109. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-d1f97465a9f52187e2ef3a0d811a1258f52380a65340c55f3e8e65b92753bc13-delta-15-v1.0.dat +0 -0
  110. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-d1f97465a9f52187e2ef3a0d811a1258f52380a65340c55f3e8e65b92753bc13-full-15-v1.0.dat +0 -0
  111. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-e475eccd4ee597e5ff67b1a249e37d65d6e3f754c3f0379fdb43692513588fef-delta-46-v1.0.dat +0 -0
  112. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-e475eccd4ee597e5ff67b1a249e37d65d6e3f754c3f0379fdb43692513588fef-full-46-v1.0.dat +0 -0
  113. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-e82e63517d78fd65b23a05c3b9a98cf905ddad7026995a238bfe634006b84cd0-delta-27-v1.0.dat +0 -0
  114. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-e82e63517d78fd65b23a05c3b9a98cf905ddad7026995a238bfe634006b84cd0-full-27-v1.0.dat +0 -0
  115. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-ed2cf0fd6c0f6237c87c161e1fca303b3fbe6c04e01f652b88720b4572143349-delta-12-v1.0.dat +0 -0
  116. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-ed2cf0fd6c0f6237c87c161e1fca303b3fbe6c04e01f652b88720b4572143349-full-12-v1.0.dat +0 -0
  117. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-f6e454eaf24a83c46a7bed4c19260a0a3ce0ed5c51739cb6d748d4913dc2ef58-delta-30-v1.0.dat +0 -0
  118. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-f6e454eaf24a83c46a7bed4c19260a0a3ce0ed5c51739cb6d748d4913dc2ef58-full-30-v1.0.dat +0 -0
  119. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-f7ad2bdf86d9609b4d6381086ec1e296bf558e2ff467ead29dd7fa6e31bacc56-delta-43-v1.0.dat +0 -0
  120. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-f7ad2bdf86d9609b4d6381086ec1e296bf558e2ff467ead29dd7fa6e31bacc56-full-43-v1.0.dat +0 -0
  121. chia/_tests/core/data_layer/old_format/files/__init__.py +0 -0
  122. chia/_tests/core/data_layer/old_format/old_db.sqlite +0 -0
  123. chia/_tests/core/data_layer/test_data_layer_util.py +18 -21
  124. chia/_tests/core/data_layer/test_data_rpc.py +77 -28
  125. chia/_tests/core/data_layer/test_data_store.py +637 -700
  126. chia/_tests/core/data_layer/test_data_store_schema.py +2 -209
  127. chia/_tests/core/full_node/ram_db.py +1 -1
  128. chia/_tests/core/full_node/stores/test_block_store.py +4 -10
  129. chia/_tests/core/full_node/stores/test_coin_store.py +1 -1
  130. chia/_tests/core/full_node/test_address_manager.py +3 -3
  131. chia/_tests/core/full_node/test_block_height_map.py +1 -1
  132. chia/_tests/core/full_node/test_full_node.py +91 -30
  133. chia/_tests/core/full_node/test_generator_tools.py +17 -10
  134. chia/_tests/core/mempool/test_mempool.py +190 -90
  135. chia/_tests/core/mempool/test_mempool_fee_estimator.py +2 -4
  136. chia/_tests/core/mempool/test_mempool_item_queries.py +1 -1
  137. chia/_tests/core/mempool/test_mempool_manager.py +134 -75
  138. chia/_tests/core/mempool/test_singleton_fast_forward.py +9 -27
  139. chia/_tests/core/server/serve.py +0 -2
  140. chia/_tests/core/server/test_rate_limits.py +400 -347
  141. chia/_tests/core/server/test_server.py +2 -2
  142. chia/_tests/core/services/test_services.py +7 -7
  143. chia/_tests/core/test_cost_calculation.py +31 -10
  144. chia/_tests/core/test_crawler.py +4 -4
  145. chia/_tests/core/test_db_conversion.py +7 -14
  146. chia/_tests/core/test_db_validation.py +2 -6
  147. chia/_tests/core/test_farmer_harvester_rpc.py +34 -1
  148. chia/_tests/core/test_full_node_rpc.py +28 -24
  149. chia/_tests/core/test_merkle_set.py +1 -4
  150. chia/_tests/core/test_seeder.py +1 -1
  151. chia/_tests/core/util/test_keychain.py +2 -2
  152. chia/_tests/core/util/test_lru_cache.py +16 -0
  153. chia/_tests/core/util/test_streamable.py +85 -4
  154. chia/_tests/environments/wallet.py +4 -1
  155. chia/_tests/farmer_harvester/test_farmer.py +8 -6
  156. chia/_tests/farmer_harvester/test_farmer_harvester.py +306 -8
  157. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +3 -3
  158. chia/_tests/farmer_harvester/test_third_party_harvesters.py +11 -11
  159. chia/_tests/fee_estimation/test_fee_estimation_integration.py +2 -2
  160. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +1 -1
  161. chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +1 -2
  162. chia/_tests/generator/test_rom.py +2 -1
  163. chia/_tests/harvester/__init__.py +0 -0
  164. chia/_tests/harvester/config.py +4 -0
  165. chia/_tests/harvester/test_harvester_api.py +157 -0
  166. chia/_tests/plot_sync/test_plot_sync.py +6 -3
  167. chia/_tests/plot_sync/test_receiver.py +16 -4
  168. chia/_tests/plot_sync/test_sender.py +8 -7
  169. chia/_tests/plot_sync/test_sync_simulated.py +15 -13
  170. chia/_tests/plot_sync/util.py +3 -2
  171. chia/_tests/plotting/test_plot_manager.py +21 -5
  172. chia/_tests/plotting/test_prover.py +106 -0
  173. chia/_tests/pools/test_pool_cmdline.py +7 -6
  174. chia/_tests/pools/test_pool_puzzles_lifecycle.py +10 -3
  175. chia/_tests/pools/test_pool_rpc.py +92 -64
  176. chia/_tests/solver/__init__.py +0 -0
  177. chia/_tests/solver/config.py +4 -0
  178. chia/_tests/solver/test_solver_service.py +29 -0
  179. chia/_tests/timelord/test_new_peak.py +1 -1
  180. chia/_tests/timelord/test_timelord.py +1 -1
  181. chia/_tests/util/benchmarks.py +5 -12
  182. chia/_tests/util/blockchain.py +1 -1
  183. chia/_tests/util/build_network_protocol_files.py +7 -0
  184. chia/_tests/util/network_protocol_data.py +26 -0
  185. chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
  186. chia/_tests/util/protocol_messages_json.py +19 -0
  187. chia/_tests/util/setup_nodes.py +21 -2
  188. chia/_tests/util/spend_sim.py +9 -3
  189. chia/_tests/util/test_condition_tools.py +3 -2
  190. chia/_tests/util/test_full_block_utils.py +10 -9
  191. chia/_tests/util/test_misc.py +10 -10
  192. chia/_tests/util/test_network.py +32 -1
  193. chia/_tests/util/test_network_protocol_files.py +333 -318
  194. chia/_tests/util/test_network_protocol_json.py +6 -0
  195. chia/_tests/util/test_network_protocol_test.py +27 -0
  196. chia/_tests/util/test_priority_mutex.py +1 -1
  197. chia/_tests/util/test_replace_str_to_bytes.py +6 -6
  198. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +17 -13
  199. chia/_tests/wallet/cat_wallet/test_trades.py +55 -55
  200. chia/_tests/wallet/did_wallet/test_did.py +118 -1229
  201. chia/_tests/wallet/nft_wallet/config.py +1 -1
  202. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +73 -96
  203. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +15 -12
  204. chia/_tests/wallet/nft_wallet/test_nft_offers.py +67 -134
  205. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +31 -26
  206. chia/_tests/wallet/rpc/test_wallet_rpc.py +765 -371
  207. chia/_tests/wallet/sync/test_wallet_sync.py +6 -0
  208. chia/_tests/wallet/test_new_wallet_protocol.py +1 -1
  209. chia/_tests/wallet/test_signer_protocol.py +2 -2
  210. chia/_tests/wallet/test_singleton_lifecycle_fast.py +3 -4
  211. chia/_tests/wallet/test_transaction_store.py +42 -33
  212. chia/_tests/wallet/test_wallet.py +22 -31
  213. chia/_tests/wallet/test_wallet_state_manager.py +14 -7
  214. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +53 -32
  215. chia/apis.py +2 -0
  216. chia/cmds/beta.py +7 -3
  217. chia/cmds/chia.py +2 -0
  218. chia/cmds/cmd_classes.py +11 -27
  219. chia/cmds/cmds_util.py +3 -0
  220. chia/cmds/coin_funcs.py +27 -22
  221. chia/cmds/configure.py +42 -18
  222. chia/cmds/dev/data.py +22 -3
  223. chia/cmds/farm.py +32 -0
  224. chia/cmds/farm_funcs.py +54 -5
  225. chia/cmds/init_funcs.py +4 -0
  226. chia/cmds/keys_funcs.py +8 -10
  227. chia/cmds/peer_funcs.py +8 -10
  228. chia/cmds/plotnft_funcs.py +24 -16
  229. chia/cmds/rpc.py +11 -1
  230. chia/cmds/show_funcs.py +5 -5
  231. chia/cmds/solver.py +33 -0
  232. chia/cmds/solver_funcs.py +21 -0
  233. chia/cmds/wallet.py +1 -1
  234. chia/cmds/wallet_funcs.py +149 -96
  235. chia/consensus/block_body_validation.py +8 -9
  236. chia/consensus/block_creation.py +9 -10
  237. chia/consensus/block_header_validation.py +61 -69
  238. chia/{full_node → consensus}/block_height_map.py +2 -1
  239. chia/consensus/block_height_map_protocol.py +21 -0
  240. chia/consensus/block_rewards.py +12 -12
  241. chia/consensus/blockchain.py +8 -18
  242. chia/consensus/default_constants.py +6 -6
  243. chia/consensus/generator_tools.py +1 -1
  244. chia/consensus/get_block_challenge.py +24 -25
  245. chia/consensus/pos_quality.py +28 -2
  246. chia/consensus/pot_iterations.py +15 -17
  247. chia/daemon/keychain_proxy.py +5 -0
  248. chia/daemon/server.py +2 -3
  249. chia/data_layer/data_layer.py +32 -24
  250. chia/data_layer/data_layer_errors.py +5 -0
  251. chia/data_layer/data_layer_rpc_api.py +1 -1
  252. chia/data_layer/data_layer_service.py +8 -0
  253. chia/data_layer/data_layer_util.py +49 -89
  254. chia/data_layer/data_layer_wallet.py +20 -17
  255. chia/data_layer/data_store.py +1051 -1462
  256. chia/data_layer/download_data.py +44 -115
  257. chia/{server → data_layer}/start_data_layer.py +2 -1
  258. chia/data_layer/util/benchmark.py +38 -53
  259. chia/farmer/farmer.py +3 -0
  260. chia/farmer/farmer_api.py +104 -5
  261. chia/farmer/farmer_rpc_api.py +20 -0
  262. chia/farmer/farmer_rpc_client.py +6 -2
  263. chia/farmer/farmer_service.py +8 -0
  264. chia/{server → farmer}/start_farmer.py +4 -3
  265. chia/full_node/block_store.py +20 -10
  266. chia/full_node/coin_store.py +12 -4
  267. chia/full_node/eligible_coin_spends.py +17 -72
  268. chia/full_node/full_node.py +68 -71
  269. chia/full_node/full_node_api.py +26 -32
  270. chia/full_node/full_node_rpc_api.py +44 -32
  271. chia/full_node/full_node_rpc_client.py +67 -79
  272. chia/full_node/full_node_service.py +8 -0
  273. chia/full_node/full_node_store.py +5 -3
  274. chia/full_node/mempool.py +14 -14
  275. chia/full_node/mempool_manager.py +67 -89
  276. chia/{server → full_node}/start_full_node.py +1 -1
  277. chia/full_node/subscriptions.py +2 -2
  278. chia/full_node/weight_proof.py +14 -15
  279. chia/harvester/harvester.py +8 -1
  280. chia/harvester/harvester_api.py +178 -44
  281. chia/harvester/harvester_service.py +8 -0
  282. chia/{server → harvester}/start_harvester.py +1 -1
  283. chia/introducer/introducer_service.py +8 -0
  284. chia/{server → introducer}/start_introducer.py +1 -1
  285. chia/plot_sync/receiver.py +6 -1
  286. chia/plot_sync/sender.py +7 -4
  287. chia/plotting/cache.py +37 -28
  288. chia/plotting/check_plots.py +83 -48
  289. chia/plotting/create_plots.py +3 -4
  290. chia/plotting/manager.py +18 -13
  291. chia/plotting/prover.py +153 -0
  292. chia/plotting/util.py +14 -6
  293. chia/pools/pool_wallet.py +6 -4
  294. chia/protocols/harvester_protocol.py +14 -0
  295. chia/protocols/outbound_message.py +1 -0
  296. chia/protocols/pool_protocol.py +1 -1
  297. chia/protocols/protocol_message_types.py +7 -0
  298. chia/protocols/shared_protocol.py +2 -0
  299. chia/protocols/solver_protocol.py +18 -0
  300. chia/rpc/rpc_server.py +1 -1
  301. chia/seeder/crawl_store.py +4 -8
  302. chia/seeder/crawler.py +2 -2
  303. chia/seeder/crawler_service.py +8 -0
  304. chia/seeder/start_crawler.py +1 -1
  305. chia/server/address_manager.py +12 -15
  306. chia/server/introducer_peers.py +1 -1
  307. chia/server/node_discovery.py +9 -10
  308. chia/server/rate_limit_numbers.py +157 -168
  309. chia/server/rate_limits.py +44 -41
  310. chia/server/resolve_peer_info.py +5 -0
  311. chia/server/server.py +17 -7
  312. chia/server/start_service.py +0 -1
  313. chia/simulator/block_tools.py +92 -58
  314. chia/simulator/full_node_simulator.py +1 -1
  315. chia/simulator/setup_services.py +51 -15
  316. chia/solver/__init__.py +0 -0
  317. chia/solver/solver.py +100 -0
  318. chia/solver/solver_api.py +59 -0
  319. chia/solver/solver_rpc_api.py +31 -0
  320. chia/solver/solver_rpc_client.py +16 -0
  321. chia/solver/solver_service.py +8 -0
  322. chia/solver/start_solver.py +102 -0
  323. {mozilla-ca → chia/ssl}/cacert.pem +0 -27
  324. chia/ssl/create_ssl.py +3 -2
  325. chia/{server → timelord}/start_timelord.py +1 -1
  326. chia/timelord/timelord.py +12 -13
  327. chia/timelord/timelord_service.py +8 -0
  328. chia/types/blockchain_format/proof_of_space.py +61 -17
  329. chia/types/coin_spend.py +0 -8
  330. chia/types/internal_mempool_item.py +3 -3
  331. chia/types/mempool_item.py +15 -8
  332. chia/types/mempool_submission_status.py +1 -1
  333. chia/util/config.py +1 -3
  334. chia/util/db_wrapper.py +7 -8
  335. chia/util/initial-config.yaml +46 -0
  336. chia/util/lru_cache.py +8 -4
  337. chia/util/network.py +9 -0
  338. chia/util/service_groups.py +3 -1
  339. chia/util/streamable.py +38 -8
  340. chia/util/virtual_project_analysis.py +1 -1
  341. chia/wallet/cat_wallet/cat_outer_puzzle.py +7 -4
  342. chia/wallet/cat_wallet/cat_wallet.py +13 -7
  343. chia/wallet/cat_wallet/r_cat_wallet.py +4 -1
  344. chia/wallet/conditions.py +1 -3
  345. chia/wallet/did_wallet/did_wallet.py +27 -332
  346. chia/wallet/nft_wallet/nft_puzzle_utils.py +1 -1
  347. chia/wallet/nft_wallet/nft_wallet.py +9 -7
  348. chia/wallet/puzzle_drivers.py +7 -8
  349. chia/{server → wallet}/start_wallet.py +1 -1
  350. chia/wallet/trade_manager.py +12 -9
  351. chia/wallet/transaction_record.py +14 -51
  352. chia/wallet/util/clvm_streamable.py +28 -41
  353. chia/wallet/util/merkle_utils.py +2 -2
  354. chia/wallet/util/tx_config.py +3 -6
  355. chia/wallet/vc_wallet/cr_cat_wallet.py +12 -6
  356. chia/wallet/vc_wallet/vc_wallet.py +13 -15
  357. chia/wallet/wallet.py +5 -3
  358. chia/wallet/wallet_node.py +25 -30
  359. chia/wallet/wallet_request_types.py +538 -101
  360. chia/wallet/wallet_rpc_api.py +398 -570
  361. chia/wallet/wallet_rpc_client.py +144 -332
  362. chia/wallet/wallet_service.py +8 -0
  363. chia/wallet/wallet_state_manager.py +53 -42
  364. chia/wallet/wallet_transaction_store.py +13 -5
  365. {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7rc2.dist-info}/METADATA +31 -31
  366. {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7rc2.dist-info}/RECORD +369 -241
  367. {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7rc2.dist-info}/WHEEL +1 -1
  368. {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7rc2.dist-info}/entry_points.txt +8 -7
  369. chia/full_node/mempool_check_conditions.py +0 -102
  370. chia/server/aliases.py +0 -35
  371. {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7rc2.dist-info/licenses}/LICENSE +0 -0
@@ -14,6 +14,7 @@ from chia._tests.connection_utils import connect_and_get_peer
14
14
  from chia._tests.util.setup_nodes import SimulatorsAndWalletsServices
15
15
  from chia._tests.util.time_out_assert import time_out_assert
16
16
  from chia.full_node.full_node_api import FullNodeAPI
17
+ from chia.full_node.start_full_node import create_full_node_service
17
18
  from chia.protocols.full_node_protocol import RejectBlock, RequestBlock, RequestTransaction
18
19
  from chia.protocols.outbound_message import NodeType, make_msg
19
20
  from chia.protocols.protocol_message_types import ProtocolMessageTypes
@@ -21,12 +22,11 @@ from chia.protocols.shared_protocol import Error, protocol_version
21
22
  from chia.protocols.wallet_protocol import RejectHeaderRequest
22
23
  from chia.server.api_protocol import ApiMetadata
23
24
  from chia.server.server import ChiaServer
24
- from chia.server.start_full_node import create_full_node_service
25
- from chia.server.start_wallet import create_wallet_service
26
25
  from chia.server.ws_connection import WSChiaConnection, error_response_version
27
26
  from chia.simulator.block_tools import BlockTools
28
27
  from chia.types.peer_info import PeerInfo
29
28
  from chia.util.errors import ApiError, Err
29
+ from chia.wallet.start_wallet import create_wallet_service
30
30
 
31
31
 
32
32
  @dataclass
@@ -86,15 +86,15 @@ async def test_daemon_terminates(signal_number: signal.Signals, chia_root: ChiaR
86
86
  @pytest.mark.parametrize(
87
87
  argnames=["create_service", "module_path", "service_config_name"],
88
88
  argvalues=[
89
- [DataLayerRpcClient.create_as_context, "chia.server.start_data_layer", "data_layer"],
90
- [FarmerRpcClient.create_as_context, "chia.server.start_farmer", "farmer"],
91
- [FullNodeRpcClient.create_as_context, "chia.server.start_full_node", "full_node"],
92
- [HarvesterRpcClient.create_as_context, "chia.server.start_harvester", "harvester"],
93
- [WalletRpcClient.create_as_context, "chia.server.start_wallet", "wallet"],
94
- [None, "chia.server.start_introducer", "introducer"],
89
+ [DataLayerRpcClient.create_as_context, "chia.data_layer.start_data_layer", "data_layer"],
90
+ [FarmerRpcClient.create_as_context, "chia.farmer.start_farmer", "farmer"],
91
+ [FullNodeRpcClient.create_as_context, "chia.full_node.start_full_node", "full_node"],
92
+ [HarvesterRpcClient.create_as_context, "chia.harvester.start_harvester", "harvester"],
93
+ [WalletRpcClient.create_as_context, "chia.wallet.start_wallet", "wallet"],
94
+ [None, "chia.introducer.start_introducer", "introducer"],
95
95
  # TODO: fails... make it not do that
96
96
  # [None, "chia.seeder.start_crawler", "crawler"],
97
- [None, "chia.server.start_timelord", "timelord"],
97
+ [None, "chia.timelord.start_timelord", "timelord"],
98
98
  pytest.param(
99
99
  None,
100
100
  "chia.timelord.timelord_launcher",
@@ -4,7 +4,8 @@ import logging
4
4
  import pathlib
5
5
 
6
6
  import pytest
7
- from chia_rs import G1Element
7
+ from chia_rs import G1Element, get_flags_for_height_and_constants
8
+ from chia_rs import get_puzzle_and_solution_for_coin2 as get_puzzle_and_solution_for_coin
8
9
  from chia_rs.sized_bytes import bytes32
9
10
  from chia_rs.sized_ints import uint32, uint64
10
11
  from clvm_tools import binutils
@@ -16,7 +17,6 @@ from chia.consensus.condition_costs import ConditionCost
16
17
  from chia.consensus.cost_calculator import NPCResult
17
18
  from chia.consensus.default_constants import DEFAULT_CONSTANTS
18
19
  from chia.full_node.bundle_tools import simple_solution_generator
19
- from chia.full_node.mempool_check_conditions import get_puzzle_and_solution_for_coin
20
20
  from chia.simulator.block_tools import BlockTools, test_constants
21
21
  from chia.types.blockchain_format.coin import Coin
22
22
  from chia.types.blockchain_format.program import Program, run_with_cost
@@ -89,9 +89,15 @@ async def test_basics(softfork_height: int, bt: BlockTools) -> None:
89
89
  coin_spend = spend_bundle.coin_spends[0]
90
90
  assert npc_result.conds is not None
91
91
  assert coin_spend.coin.name() == npc_result.conds.spends[0].coin_id
92
- spend_info = get_puzzle_and_solution_for_coin(program, coin_spend.coin, softfork_height, bt.constants)
93
- assert spend_info.puzzle == coin_spend.puzzle_reveal
94
- assert spend_info.solution == coin_spend.solution
92
+ puzzle, solution = get_puzzle_and_solution_for_coin(
93
+ program.program,
94
+ program.generator_refs,
95
+ bt.constants.MAX_BLOCK_COST_CLVM,
96
+ coin_spend.coin,
97
+ get_flags_for_height_and_constants(softfork_height, bt.constants),
98
+ )
99
+ assert puzzle == coin_spend.puzzle_reveal
100
+ assert solution == coin_spend.solution
95
101
 
96
102
  if softfork_height >= bt.constants.HARD_FORK_HEIGHT:
97
103
  clvm_cost = 27360
@@ -170,8 +176,14 @@ async def test_mempool_mode(softfork_height: int, bt: BlockTools) -> None:
170
176
  bytes32.fromhex("14947eb0e69ee8fc8279190fc2d38cb4bbb61ba28f1a270cfd643a0e8d759576"),
171
177
  uint64(300),
172
178
  )
173
- spend_info = get_puzzle_and_solution_for_coin(generator, coin, softfork_height, bt.constants)
174
- assert spend_info.puzzle == puzzle.to_serialized()
179
+ puz, _solution = get_puzzle_and_solution_for_coin(
180
+ generator.program,
181
+ generator.generator_refs,
182
+ bt.constants.MAX_BLOCK_COST_CLVM,
183
+ coin,
184
+ get_flags_for_height_and_constants(0, bt.constants),
185
+ )
186
+ assert puz == puzzle.to_serialized()
175
187
 
176
188
 
177
189
  @pytest.mark.anyio
@@ -282,8 +294,11 @@ async def test_standard_tx(benchmark_runner: BenchmarkRunner) -> None:
282
294
 
283
295
  @pytest.mark.anyio
284
296
  async def test_get_puzzle_and_solution_for_coin_performance(benchmark_runner: BenchmarkRunner) -> None:
297
+ from chia_puzzles_py.programs import CHIALISP_DESERIALISATION
298
+
285
299
  from chia._tests.core.large_block import LARGE_BLOCK
286
- from chia.full_node.mempool_check_conditions import DESERIALIZE_MOD
300
+
301
+ DESERIALIZE_MOD = Program.from_bytes(CHIALISP_DESERIALISATION)
287
302
 
288
303
  assert LARGE_BLOCK.transactions_generator is not None
289
304
  # first, list all spent coins in the block
@@ -309,5 +324,11 @@ async def test_get_puzzle_and_solution_for_coin_performance(benchmark_runner: Be
309
324
  with benchmark_runner.assert_runtime(seconds=8.5):
310
325
  for _ in range(3):
311
326
  for c in spent_coins:
312
- spend_info = get_puzzle_and_solution_for_coin(generator, c, 0, test_constants)
313
- assert spend_info.puzzle.get_tree_hash() == c.puzzle_hash
327
+ puz, _solution = get_puzzle_and_solution_for_coin(
328
+ generator.program,
329
+ generator.generator_refs,
330
+ test_constants.MAX_BLOCK_COST_CLVM,
331
+ c,
332
+ get_flags_for_height_and_constants(0, test_constants),
333
+ )
334
+ assert puz.get_tree_hash() == c.puzzle_hash
@@ -16,8 +16,8 @@ from chia.protocols.full_node_protocol import NewPeak
16
16
  from chia.protocols.outbound_message import make_msg
17
17
  from chia.protocols.protocol_message_types import ProtocolMessageTypes
18
18
  from chia.protocols.wallet_protocol import RequestChildren
19
+ from chia.seeder.crawler_service import CrawlerService
19
20
  from chia.seeder.peer_record import PeerRecord, PeerReliability
20
- from chia.server.aliases import CrawlerService
21
21
  from chia.types.peer_info import PeerInfo
22
22
 
23
23
 
@@ -111,7 +111,7 @@ async def test_crawler_to_db(crawler_service_no_loop: CrawlerService, one_node:
111
111
  uint64(0),
112
112
  uint32(0),
113
113
  uint64(0),
114
- uint64(int(time.time())),
114
+ uint64(time.time()),
115
115
  uint64(0),
116
116
  "undefined",
117
117
  uint64(0),
@@ -153,8 +153,8 @@ async def test_crawler_peer_cleanup(
153
153
  uint64(0),
154
154
  uint32(0),
155
155
  uint64(0),
156
- uint64(int(time.time())),
157
- uint64(int((datetime.now() - timedelta(days=idx * 10)).timestamp())),
156
+ uint64(time.time()),
157
+ uint64((datetime.now() - timedelta(days=idx * 10)).timestamp()),
158
158
  "undefined",
159
159
  uint64(0),
160
160
  tls_version="unknown",
@@ -10,9 +10,9 @@ from chia_rs.sized_ints import uint32, uint64
10
10
  from chia._tests.util.temp_file import TempFile
11
11
  from chia.cmds.db_upgrade_func import convert_v1_to_v2
12
12
  from chia.consensus.block_body_validation import ForkInfo
13
+ from chia.consensus.block_height_map import BlockHeightMap
13
14
  from chia.consensus.blockchain import Blockchain
14
15
  from chia.consensus.multiprocess_validation import PreValidationResult
15
- from chia.full_node.block_height_map import BlockHeightMap
16
16
  from chia.full_node.block_store import BlockStore
17
17
  from chia.full_node.coin_store import CoinStore
18
18
  from chia.full_node.hint_store import HintStore
@@ -20,13 +20,6 @@ from chia.simulator.block_tools import test_constants
20
20
  from chia.util.db_wrapper import DBWrapper2
21
21
 
22
22
 
23
- def rand_bytes(num) -> bytes:
24
- ret = bytearray(num)
25
- for i in range(num):
26
- ret[i] = random.getrandbits(8)
27
- return bytes(ret)
28
-
29
-
30
23
  @pytest.mark.anyio
31
24
  @pytest.mark.parametrize("with_hints", [True, False])
32
25
  @pytest.mark.skip("we no longer support DB v1")
@@ -35,21 +28,21 @@ async def test_blocks(default_1000_blocks, with_hints: bool):
35
28
 
36
29
  hints: list[tuple[bytes32, bytes]] = []
37
30
  for i in range(351):
38
- hints.append((bytes32(rand_bytes(32)), rand_bytes(20)))
31
+ hints.append((bytes32.random(), random.randbytes(20)))
39
32
 
40
33
  # the v1 schema allows duplicates in the hints table
41
34
  for i in range(10):
42
- coin_id = bytes32(rand_bytes(32))
43
- hint = rand_bytes(20)
35
+ coin_id = bytes32.random()
36
+ hint = random.randbytes(20)
44
37
  hints.append((coin_id, hint))
45
38
  hints.append((coin_id, hint))
46
39
 
47
40
  for i in range(2000):
48
- hints.append((bytes32(rand_bytes(32)), rand_bytes(20)))
41
+ hints.append((bytes32.random(), random.randbytes(20)))
49
42
 
50
43
  for i in range(5):
51
- coin_id = bytes32(rand_bytes(32))
52
- hint = rand_bytes(20)
44
+ coin_id = bytes32.random()
45
+ hint = random.randbytes(20)
53
46
  hints.append((coin_id, hint))
54
47
  hints.append((coin_id, hint))
55
48
 
@@ -1,6 +1,5 @@
1
1
  from __future__ import annotations
2
2
 
3
- import random
4
3
  import sqlite3
5
4
  from contextlib import closing
6
5
  from pathlib import Path
@@ -14,10 +13,10 @@ from chia_rs.sized_ints import uint32, uint64
14
13
  from chia._tests.util.temp_file import TempFile
15
14
  from chia.cmds.db_validate_func import validate_v2
16
15
  from chia.consensus.block_body_validation import ForkInfo
16
+ from chia.consensus.block_height_map import BlockHeightMap
17
17
  from chia.consensus.blockchain import Blockchain
18
18
  from chia.consensus.default_constants import DEFAULT_CONSTANTS
19
19
  from chia.consensus.multiprocess_validation import PreValidationResult
20
- from chia.full_node.block_height_map import BlockHeightMap
21
20
  from chia.full_node.block_store import BlockStore
22
21
  from chia.full_node.coin_store import CoinStore
23
22
  from chia.simulator.block_tools import test_constants
@@ -25,10 +24,7 @@ from chia.util.db_wrapper import DBWrapper2
25
24
 
26
25
 
27
26
  def rand_hash() -> bytes32:
28
- ret = bytearray(32)
29
- for i in range(32):
30
- ret[i] = random.getrandbits(8)
31
- return bytes32(ret)
27
+ return bytes32.random()
32
28
 
33
29
 
34
30
  def make_version(conn: sqlite3.Connection, version: int) -> None:
@@ -30,11 +30,15 @@ from chia.farmer.farmer_rpc_api import (
30
30
  plot_matches_filter,
31
31
  )
32
32
  from chia.farmer.farmer_rpc_client import FarmerRpcClient
33
+ from chia.farmer.farmer_service import FarmerService
34
+ from chia.harvester.harvester_service import HarvesterService
33
35
  from chia.plot_sync.receiver import Receiver, get_list_or_len
34
36
  from chia.plotting.util import add_plot_directory
35
37
  from chia.protocols import farmer_protocol
36
38
  from chia.protocols.harvester_protocol import Plot
37
- from chia.simulator.block_tools import get_plot_dir
39
+ from chia.rpc.rpc_client import ResponseFailureError
40
+ from chia.simulator.block_tools import BlockTools, get_plot_dir
41
+ from chia.solver.solver_service import SolverService
38
42
  from chia.util.bech32m import decode_puzzle_hash, encode_puzzle_hash
39
43
  from chia.util.config import load_config, lock_and_load_config, save_config
40
44
  from chia.util.hash import std_hash
@@ -503,3 +507,32 @@ async def test_harvester_add_plot_directory(harvester_farmer_environment: Harves
503
507
  added_directories = await harvester_rpc_client.get_plot_directories()
504
508
  assert str(test_path) in added_directories
505
509
  assert str(test_path_other) in added_directories
510
+
511
+
512
+ @pytest.mark.anyio
513
+ async def test_farmer_connect_to_solver(
514
+ farmer_one_harvester_solver: tuple[list[HarvesterService], FarmerService, SolverService, BlockTools],
515
+ ) -> None:
516
+ _, farmer_service, solver_service, bt = farmer_one_harvester_solver
517
+ assert farmer_service.rpc_server is not None
518
+ farmer_rpc_client = await FarmerRpcClient.create(
519
+ bt.config["self_hostname"],
520
+ farmer_service.rpc_server.listen_port,
521
+ farmer_service.root_path,
522
+ farmer_service.config,
523
+ )
524
+
525
+ try:
526
+ # Test successful connection to existing solver
527
+ solver_host = bt.config["self_hostname"]
528
+ solver_port = solver_service._server.get_port()
529
+ result = await farmer_rpc_client.connect_to_solver(solver_host, solver_port)
530
+ assert result["success"] is True
531
+
532
+ # Test connection failure to non-existent solver
533
+ with pytest.raises(ResponseFailureError) as exc_info:
534
+ await farmer_rpc_client.connect_to_solver("localhost", 65000)
535
+ assert "Could not connect to solver" in exc_info.value.response["error"]
536
+ finally:
537
+ farmer_rpc_client.close()
538
+ await farmer_rpc_client.await_closed()
@@ -88,8 +88,8 @@ async def test1(
88
88
 
89
89
  peak_block = await client.get_block(state["peak"].header_hash)
90
90
  assert peak_block == blocks[-1]
91
- assert (await client.get_block(bytes32([1] * 32))) is None
92
-
91
+ with pytest.raises(ValueError, match="not found"):
92
+ await client.get_block(bytes32([1] * 32))
93
93
  block_record = await client.get_block_record_by_height(2)
94
94
  assert block_record is not None
95
95
  assert block_record.header_hash == blocks[2].header_hash
@@ -150,8 +150,10 @@ async def test1(
150
150
 
151
151
  assert len(await client.get_all_mempool_items()) == 0
152
152
  assert len(await client.get_all_mempool_tx_ids()) == 0
153
- assert (await client.get_mempool_item_by_tx_id(spend_bundle.name())) is None
154
- assert (await client.get_mempool_item_by_tx_id(spend_bundle.name(), False)) is None
153
+ with pytest.raises(ValueError, match="not in the mempool"):
154
+ await client.get_mempool_item_by_tx_id(spend_bundle.name())
155
+ with pytest.raises(ValueError, match="not in the mempool"):
156
+ await client.get_mempool_item_by_tx_id(spend_bundle.name(), False)
155
157
 
156
158
  await client.push_tx(spend_bundle)
157
159
  coin = spend_bundle.additions()[0]
@@ -168,7 +170,8 @@ async def test1(
168
170
  mempool_item = await client.get_mempool_item_by_tx_id(spend_bundle.name())
169
171
  assert mempool_item is not None
170
172
  assert WalletSpendBundle.from_json_dict(mempool_item["spend_bundle"]) == spend_bundle
171
- assert (await client.get_coin_record_by_name(coin.name())) is None
173
+ with pytest.raises(ValueError, match="not found"):
174
+ await client.get_coin_record_by_name(coin.name())
172
175
 
173
176
  # Verify that the include_pending arg to get_mempool_item_by_tx_id works
174
177
  coin_to_spend_pending = included_reward_coins[1]
@@ -181,11 +184,11 @@ async def test1(
181
184
  condition_dic=condition_dic,
182
185
  )
183
186
  await client.push_tx(spend_bundle_pending)
184
- # not strictly in the mempool
185
- assert (await client.get_mempool_item_by_tx_id(spend_bundle_pending.name(), False)) is None
187
+ with pytest.raises(ValueError, match="not in the mempool"):
188
+ # not strictly in the mempool
189
+ await client.get_mempool_item_by_tx_id(spend_bundle_pending.name(), False)
186
190
  # pending entry into mempool, so include_pending fetches
187
191
  mempool_item = await client.get_mempool_item_by_tx_id(spend_bundle_pending.name(), True)
188
- assert mempool_item is not None
189
192
  assert WalletSpendBundle.from_json_dict(mempool_item["spend_bundle"]) == spend_bundle_pending
190
193
 
191
194
  await full_node_api_1.farm_new_transaction_block(FarmNewBlockProtocol(ph_2))
@@ -254,7 +257,8 @@ async def test1(
254
257
  assert coin_spend_with_conditions.coin_spend.solution == SerializedProgram.fromhex(
255
258
  "ff80ffff01ffff33ffa063c767818f8b7cc8f3760ce34a09b7f34cd9ddf09d345c679b6897e7620c575cff8601977420dc0080ffff3cffa0a2366d6d8e1ce7496175528f5618a13da8401b02f2bac1eaae8f28aea9ee54798080ff8080"
256
259
  )
257
- assert coin_spend_with_conditions.conditions == [
260
+
261
+ expected = [
258
262
  ConditionWithArgs(
259
263
  ConditionOpcode(b"2"),
260
264
  [
@@ -279,6 +283,8 @@ async def test1(
279
283
  ),
280
284
  ]
281
285
 
286
+ assert coin_spend_with_conditions.conditions == expected
287
+
282
288
  coin_spend_with_conditions = block_spends_with_conditions[2]
283
289
 
284
290
  assert coin_spend_with_conditions.coin_spend.coin == Coin(
@@ -451,17 +457,15 @@ async def test_signage_points(
451
457
  full_node_service_1.config,
452
458
  ) as client:
453
459
  # Only provide one
454
- res = await client.get_recent_signage_point_or_eos(None, None)
455
- assert res is None
456
- res = await client.get_recent_signage_point_or_eos(std_hash(b"0"), std_hash(b"1"))
457
- assert res is None
458
-
460
+ with pytest.raises(ValueError, match="sp_hash or challenge_hash must be provided"):
461
+ await client.get_recent_signage_point_or_eos(None, None)
462
+ with pytest.raises(ValueError, match="Either sp_hash or challenge_hash must be provided, not both"):
463
+ await client.get_recent_signage_point_or_eos(std_hash(b"0"), std_hash(b"1"))
459
464
  # Not found
460
- res = await client.get_recent_signage_point_or_eos(std_hash(b"0"), None)
461
- assert res is None
462
- res = await client.get_recent_signage_point_or_eos(None, std_hash(b"0"))
463
- assert res is None
464
-
465
+ with pytest.raises(ValueError, match="in cache"):
466
+ await client.get_recent_signage_point_or_eos(std_hash(b"0"), None)
467
+ with pytest.raises(ValueError, match="in cache"):
468
+ await client.get_recent_signage_point_or_eos(None, std_hash(b"0"))
465
469
  blocks = bt.get_consecutive_blocks(5)
466
470
  for block in blocks:
467
471
  await full_node_api_1.full_node.add_block(block)
@@ -491,8 +495,8 @@ async def test_signage_points(
491
495
  assert sp.rc_proof is not None
492
496
  assert sp.rc_vdf is not None
493
497
  # Don't have SP yet
494
- res = await client.get_recent_signage_point_or_eos(sp.cc_vdf.output.get_hash(), None)
495
- assert res is None
498
+ with pytest.raises(ValueError, match="Did not find sp"):
499
+ await client.get_recent_signage_point_or_eos(sp.cc_vdf.output.get_hash(), None)
496
500
 
497
501
  # Add the last block
498
502
  await full_node_api_1.full_node.add_block(blocks[-1])
@@ -514,9 +518,8 @@ async def test_signage_points(
514
518
  selected_eos = blocks[-1].finished_sub_slots[0]
515
519
 
516
520
  # Don't have EOS yet
517
- res = await client.get_recent_signage_point_or_eos(None, selected_eos.challenge_chain.get_hash())
518
- assert res is None
519
-
521
+ with pytest.raises(ValueError, match="Did not find eos"):
522
+ await client.get_recent_signage_point_or_eos(None, selected_eos.challenge_chain.get_hash())
520
523
  # Properly fetch an EOS
521
524
  for eos in blocks[-1].finished_sub_slots:
522
525
  await full_node_api_1.full_node.add_end_of_sub_slot(eos, peer)
@@ -545,6 +548,7 @@ async def test_signage_points(
545
548
 
546
549
  # Signage point is no longer in the blockchain
547
550
  res = await client.get_recent_signage_point_or_eos(sp.cc_vdf.output.get_hash(), None)
551
+ assert res is not None
548
552
  assert res["reverted"]
549
553
  assert res["signage_point"] == sp
550
554
  assert "eos" not in res
@@ -279,10 +279,7 @@ async def test_merkle_right_edge() -> None:
279
279
 
280
280
 
281
281
  def rand_hash(rng: random.Random) -> bytes32:
282
- ret = bytearray(32)
283
- for i in range(32):
284
- ret[i] = rng.getrandbits(8)
285
- return bytes32(ret)
282
+ return bytes32.random(r=rng)
286
283
 
287
284
 
288
285
  @pytest.mark.anyio
@@ -83,7 +83,7 @@ def database_peers() -> dict[str, PeerReliability]:
83
83
  uint64(0),
84
84
  uint32(0),
85
85
  uint64(0),
86
- uint64(int(time.time())),
86
+ uint64(time.time()),
87
87
  uint64(0),
88
88
  "undefined",
89
89
  uint64(0),
@@ -220,9 +220,9 @@ class TestKeychain:
220
220
  test_vectors_path = importlib_resources.files(chia._tests.util.__name__).joinpath("bip39_test_vectors.json")
221
221
  all_vectors = json.loads(test_vectors_path.read_text(encoding="utf-8"))
222
222
 
223
- for idx, [entropy_hex, full_mnemonic, seed, short_mnemonic] in enumerate(all_vectors["english"]):
223
+ for idx, [entropy_hex, full_mnemonic, seed_hex, short_mnemonic] in enumerate(all_vectors["english"]):
224
224
  entropy_bytes = bytes.fromhex(entropy_hex)
225
- seed = bytes.fromhex(seed)
225
+ seed = bytes.fromhex(seed_hex)
226
226
 
227
227
  assert mnemonic_from_short_words(short_mnemonic) == full_mnemonic
228
228
  assert bytes_from_mnemonic(short_mnemonic) == entropy_bytes
@@ -2,6 +2,8 @@ from __future__ import annotations
2
2
 
3
3
  import unittest
4
4
 
5
+ import pytest
6
+
5
7
  from chia.util.lru_cache import LRUCache
6
8
 
7
9
 
@@ -54,3 +56,17 @@ class TestLRUCache(unittest.TestCase):
54
56
  assert len(cache.cache) == 5
55
57
  assert cache.get(b"0") is None
56
58
  assert cache.get(b"1") == 1
59
+
60
+
61
+ @pytest.mark.parametrize(argnames="capacity", argvalues=[-10, -1, 0])
62
+ def test_with_zero_capacity(capacity: int) -> None:
63
+ cache: LRUCache[bytes, int] = LRUCache(capacity=capacity)
64
+ cache.put(b"0", 1)
65
+ assert cache.get(b"0") is None
66
+ assert len(cache.cache) == 0
67
+
68
+
69
+ @pytest.mark.parametrize(argnames="capacity", argvalues=[-10, -1, 0, 1, 5, 10])
70
+ def test_get_capacity(capacity: int) -> None:
71
+ cache: LRUCache[object, object] = LRUCache(capacity=capacity)
72
+ assert cache.get_capacity() == capacity
@@ -3,6 +3,7 @@ from __future__ import annotations
3
3
  import io
4
4
  import re
5
5
  from dataclasses import dataclass, field, fields
6
+ from enum import Enum
6
7
  from typing import Any, Callable, ClassVar, Optional, get_type_hints
7
8
 
8
9
  import pytest
@@ -27,6 +28,7 @@ from chia.util.streamable import (
27
28
  function_to_parse_one_item,
28
29
  function_to_stream_one_item,
29
30
  is_type_Dict,
31
+ is_type_Enum,
30
32
  is_type_List,
31
33
  is_type_SpecificOptional,
32
34
  is_type_Tuple,
@@ -39,6 +41,7 @@ from chia.util.streamable import (
39
41
  parse_uint32,
40
42
  recurse_jsonify,
41
43
  streamable,
44
+ streamable_enum,
42
45
  streamable_from_dict,
43
46
  write_uint32,
44
47
  )
@@ -372,10 +375,29 @@ def test_not_lists() -> None:
372
375
 
373
376
  def test_basic_optional() -> None:
374
377
  assert is_type_SpecificOptional(Optional[int])
375
- assert is_type_SpecificOptional(Optional[Optional[int]])
378
+ assert is_type_SpecificOptional(Optional[int])
376
379
  assert not is_type_SpecificOptional(list[int])
377
380
 
378
381
 
382
+ class BasicEnum(Enum):
383
+ A = 1
384
+ B = 2
385
+
386
+
387
+ def test_basic_enum() -> None:
388
+ assert is_type_Enum(BasicEnum)
389
+ assert not is_type_Enum(list[int])
390
+
391
+
392
+ def test_enum_needs_proxy() -> None:
393
+ with pytest.raises(UnsupportedType):
394
+
395
+ @streamable
396
+ @dataclass(frozen=True)
397
+ class EnumStreamable(Streamable):
398
+ enum: BasicEnum
399
+
400
+
379
401
  @streamable
380
402
  @dataclass(frozen=True)
381
403
  class PostInitTestClassBasic(Streamable):
@@ -398,8 +420,8 @@ class PostInitTestClassBad(Streamable):
398
420
  class PostInitTestClassOptional(Streamable):
399
421
  a: Optional[uint8]
400
422
  b: Optional[uint8]
401
- c: Optional[Optional[uint8]]
402
- d: Optional[Optional[uint8]]
423
+ c: Optional[uint8]
424
+ d: Optional[uint8]
403
425
 
404
426
 
405
427
  @streamable
@@ -423,6 +445,25 @@ class PostInitTestClassDict(Streamable):
423
445
  b: dict[bytes32, dict[uint8, str]]
424
446
 
425
447
 
448
+ @streamable_enum(uint32)
449
+ class IntegerEnum(Enum):
450
+ A = 1
451
+ B = 2
452
+
453
+
454
+ @streamable_enum(str)
455
+ class StringEnum(Enum):
456
+ A = "foo"
457
+ B = "bar"
458
+
459
+
460
+ @streamable
461
+ @dataclass(frozen=True)
462
+ class PostInitTestClassEnum(Streamable):
463
+ a: IntegerEnum
464
+ b: StringEnum
465
+
466
+
426
467
  @pytest.mark.parametrize(
427
468
  "test_class, args",
428
469
  [
@@ -433,6 +474,7 @@ class PostInitTestClassDict(Streamable):
433
474
  (PostInitTestClassTuple, ((1, "test"), ((200, "test_2"), b"\xba" * 32))),
434
475
  (PostInitTestClassDict, ({1: "bar"}, {bytes32.zeros: {1: "bar"}})),
435
476
  (PostInitTestClassOptional, (12, None, 13, None)),
477
+ (PostInitTestClassEnum, (IntegerEnum.A, StringEnum.B)),
436
478
  ],
437
479
  )
438
480
  def test_post_init_valid(test_class: type[Any], args: tuple[Any, ...]) -> None:
@@ -453,6 +495,8 @@ def test_post_init_valid(test_class: type[Any], args: tuple[Any, ...]) -> None:
453
495
  return validate_item_type(key_type, next(iter(item.keys()))) and validate_item_type(
454
496
  value_type, next(iter(item.values()))
455
497
  )
498
+ if is_type_Enum(type_in):
499
+ return validate_item_type(type_in._streamable_proxy, type_in._streamable_proxy(item.value)) # type: ignore[attr-defined]
456
500
  return isinstance(item, type_in)
457
501
 
458
502
  test_object = test_class(*args)
@@ -497,6 +541,8 @@ def test_basic() -> None:
497
541
  f: Optional[uint32]
498
542
  g: tuple[uint32, str, bytes]
499
543
  h: dict[uint32, str]
544
+ i: IntegerEnum
545
+ j: StringEnum
500
546
 
501
547
  # we want to test invalid here, hence the ignore.
502
548
  a = TestClass(
@@ -508,6 +554,8 @@ def test_basic() -> None:
508
554
  None,
509
555
  (uint32(383), "hello", b"goodbye"),
510
556
  {uint32(1): "foo"},
557
+ IntegerEnum.A,
558
+ StringEnum.B,
511
559
  )
512
560
 
513
561
  b: bytes = bytes(a)
@@ -619,10 +667,21 @@ def test_ambiguous_deserialization_int() -> None:
619
667
  a: uint32
620
668
 
621
669
  # Does not have the required uint size
622
- with pytest.raises(ValueError):
670
+ with pytest.raises(ValueError, match=re.escape("uint32.from_bytes() requires 4 bytes but got: 2")):
623
671
  TestClassUint.from_bytes(b"\x00\x00")
624
672
 
625
673
 
674
+ def test_ambiguous_deserialization_int_enum() -> None:
675
+ @streamable
676
+ @dataclass(frozen=True)
677
+ class TestClassIntegerEnum(Streamable):
678
+ a: IntegerEnum
679
+
680
+ # passed bytes are incorrect size for serialization proxy
681
+ with pytest.raises(ValueError, match=re.escape("uint32.from_bytes() requires 4 bytes but got: 2")):
682
+ TestClassIntegerEnum.from_bytes(b"\x00\x00")
683
+
684
+
626
685
  def test_ambiguous_deserialization_list() -> None:
627
686
  @streamable
628
687
  @dataclass(frozen=True)
@@ -656,6 +715,28 @@ def test_ambiguous_deserialization_str() -> None:
656
715
  TestClassStr.from_bytes(bytes([0, 0, 100, 24, 52]))
657
716
 
658
717
 
718
+ def test_ambiguous_deserialization_str_enum() -> None:
719
+ @streamable
720
+ @dataclass(frozen=True)
721
+ class TestClassStr(Streamable):
722
+ a: StringEnum
723
+
724
+ # passed bytes are incorrect size for serialization proxy
725
+ with pytest.raises(AssertionError):
726
+ TestClassStr.from_bytes(bytes([0, 0, 100, 24, 52]))
727
+
728
+
729
+ def test_deserialization_to_invalid_enum() -> None:
730
+ @streamable
731
+ @dataclass(frozen=True)
732
+ class TestClassStr(Streamable):
733
+ a: StringEnum
734
+
735
+ # encodes the string "baz" which is not a valid value for StringEnum
736
+ with pytest.raises(ValueError, match=re.escape("'baz' is not a valid StringEnum")):
737
+ TestClassStr.from_bytes(bytes([0, 0, 0, 3, 98, 97, 122]))
738
+
739
+
659
740
  def test_ambiguous_deserialization_bytes() -> None:
660
741
  @streamable
661
742
  @dataclass(frozen=True)