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
@@ -1,171 +1,17 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import sqlite3
4
- from typing import Any
5
4
 
6
5
  import pytest
7
6
  from chia_rs.sized_bytes import bytes32
8
7
 
9
- from chia._tests.core.data_layer.util import add_01234567_example, create_valid_node_values
10
- from chia.data_layer.data_layer_util import NodeType, Side, Status
8
+ from chia._tests.core.data_layer.util import add_01234567_example
9
+ from chia.data_layer.data_layer_util import Status
11
10
  from chia.data_layer.data_store import DataStore
12
11
 
13
12
  pytestmark = pytest.mark.data_layer
14
13
 
15
14
 
16
- @pytest.mark.anyio
17
- async def test_node_update_fails(data_store: DataStore, store_id: bytes32) -> None:
18
- await add_01234567_example(data_store=data_store, store_id=store_id)
19
- node = await data_store.get_node_by_key(key=b"\x04", store_id=store_id)
20
-
21
- async with data_store.db_wrapper.writer() as writer:
22
- with pytest.raises(sqlite3.IntegrityError, match=r"^updates not allowed to the node table$"):
23
- await writer.execute(
24
- "UPDATE node SET value = :value WHERE hash == :hash",
25
- {
26
- "hash": node.hash,
27
- "value": node.value,
28
- },
29
- )
30
-
31
-
32
- @pytest.mark.parametrize(argnames="length", argvalues=sorted(set(range(50)) - {32}))
33
- @pytest.mark.anyio
34
- async def test_node_hash_must_be_32(
35
- data_store: DataStore,
36
- store_id: bytes32,
37
- length: int,
38
- valid_node_values: dict[str, Any],
39
- ) -> None:
40
- valid_node_values["hash"] = bytes([0] * length)
41
-
42
- async with data_store.db_wrapper.writer() as writer:
43
- with pytest.raises(sqlite3.IntegrityError, match=r"^CHECK constraint failed:"):
44
- await writer.execute(
45
- """
46
- INSERT INTO node(hash, node_type, left, right, key, value)
47
- VALUES(:hash, :node_type, :left, :right, :key, :value)
48
- """,
49
- valid_node_values,
50
- )
51
-
52
-
53
- @pytest.mark.anyio
54
- async def test_node_hash_must_not_be_null(
55
- data_store: DataStore,
56
- store_id: bytes32,
57
- valid_node_values: dict[str, Any],
58
- ) -> None:
59
- valid_node_values["hash"] = None
60
-
61
- async with data_store.db_wrapper.writer() as writer:
62
- with pytest.raises(sqlite3.IntegrityError, match=r"^NOT NULL constraint failed: node.hash$"):
63
- await writer.execute(
64
- """
65
- INSERT INTO node(hash, node_type, left, right, key, value)
66
- VALUES(:hash, :node_type, :left, :right, :key, :value)
67
- """,
68
- valid_node_values,
69
- )
70
-
71
-
72
- @pytest.mark.anyio
73
- async def test_node_type_must_be_valid(
74
- data_store: DataStore,
75
- node_type: NodeType,
76
- bad_node_type: int,
77
- valid_node_values: dict[str, Any],
78
- ) -> None:
79
- valid_node_values["node_type"] = bad_node_type
80
-
81
- async with data_store.db_wrapper.writer() as writer:
82
- with pytest.raises(sqlite3.IntegrityError, match=r"^CHECK constraint failed:"):
83
- await writer.execute(
84
- """
85
- INSERT INTO node(hash, node_type, left, right, key, value)
86
- VALUES(:hash, :node_type, :left, :right, :key, :value)
87
- """,
88
- valid_node_values,
89
- )
90
-
91
-
92
- @pytest.mark.parametrize(argnames="side", argvalues=Side)
93
- @pytest.mark.anyio
94
- async def test_node_internal_child_not_null(data_store: DataStore, store_id: bytes32, side: Side) -> None:
95
- await add_01234567_example(data_store=data_store, store_id=store_id)
96
- node_a = await data_store.get_node_by_key(key=b"\x02", store_id=store_id)
97
- node_b = await data_store.get_node_by_key(key=b"\x04", store_id=store_id)
98
-
99
- values = create_valid_node_values(node_type=NodeType.INTERNAL, left_hash=node_a.hash, right_hash=node_b.hash)
100
-
101
- if side == Side.LEFT:
102
- values["left"] = None
103
- elif side == Side.RIGHT:
104
- values["right"] = None
105
-
106
- async with data_store.db_wrapper.writer() as writer:
107
- with pytest.raises(sqlite3.IntegrityError, match=r"^CHECK constraint failed:"):
108
- await writer.execute(
109
- """
110
- INSERT INTO node(hash, node_type, left, right, key, value)
111
- VALUES(:hash, :node_type, :left, :right, :key, :value)
112
- """,
113
- values,
114
- )
115
-
116
-
117
- @pytest.mark.parametrize(argnames="bad_child_hash", argvalues=[b"\x01" * 32, b"\0" * 31, b""])
118
- @pytest.mark.parametrize(argnames="side", argvalues=Side)
119
- @pytest.mark.anyio
120
- async def test_node_internal_must_be_valid_reference(
121
- data_store: DataStore,
122
- store_id: bytes32,
123
- bad_child_hash: bytes,
124
- side: Side,
125
- ) -> None:
126
- await add_01234567_example(data_store=data_store, store_id=store_id)
127
- node_a = await data_store.get_node_by_key(key=b"\x02", store_id=store_id)
128
- node_b = await data_store.get_node_by_key(key=b"\x04", store_id=store_id)
129
-
130
- values = create_valid_node_values(node_type=NodeType.INTERNAL, left_hash=node_a.hash, right_hash=node_b.hash)
131
-
132
- if side == Side.LEFT:
133
- values["left"] = bad_child_hash
134
- elif side == Side.RIGHT:
135
- values["right"] = bad_child_hash
136
- else: # pragma: no cover
137
- assert False
138
-
139
- async with data_store.db_wrapper.writer() as writer:
140
- with pytest.raises(sqlite3.IntegrityError, match=r"^FOREIGN KEY constraint failed$"):
141
- await writer.execute(
142
- """
143
- INSERT INTO node(hash, node_type, left, right, key, value)
144
- VALUES(:hash, :node_type, :left, :right, :key, :value)
145
- """,
146
- values,
147
- )
148
-
149
-
150
- @pytest.mark.parametrize(argnames="key_or_value", argvalues=["key", "value"])
151
- @pytest.mark.anyio
152
- async def test_node_terminal_key_value_not_null(data_store: DataStore, store_id: bytes32, key_or_value: str) -> None:
153
- await add_01234567_example(data_store=data_store, store_id=store_id)
154
-
155
- values = create_valid_node_values(node_type=NodeType.TERMINAL)
156
- values[key_or_value] = None
157
-
158
- async with data_store.db_wrapper.writer() as writer:
159
- with pytest.raises(sqlite3.IntegrityError, match=r"^CHECK constraint failed:"):
160
- await writer.execute(
161
- """
162
- INSERT INTO node(hash, node_type, left, right, key, value)
163
- VALUES(:hash, :node_type, :left, :right, :key, :value)
164
- """,
165
- values,
166
- )
167
-
168
-
169
15
  @pytest.mark.parametrize(argnames="length", argvalues=sorted(set(range(50)) - {32}))
170
16
  @pytest.mark.anyio
171
17
  async def test_root_store_id_must_be_32(data_store: DataStore, store_id: bytes32, length: int) -> None:
@@ -250,21 +96,6 @@ async def test_root_generation_must_not_be_null(data_store: DataStore, store_id:
250
96
  )
251
97
 
252
98
 
253
- @pytest.mark.anyio
254
- async def test_root_node_hash_must_reference(data_store: DataStore) -> None:
255
- values = {"tree_id": bytes32.zeros, "generation": 0, "node_hash": bytes32.zeros, "status": Status.PENDING}
256
-
257
- async with data_store.db_wrapper.writer() as writer:
258
- with pytest.raises(sqlite3.IntegrityError, match=r"^FOREIGN KEY constraint failed$"):
259
- await writer.execute(
260
- """
261
- INSERT INTO root(tree_id, generation, node_hash, status)
262
- VALUES(:tree_id, :generation, :node_hash, :status)
263
- """,
264
- values,
265
- )
266
-
267
-
268
99
  @pytest.mark.parametrize(argnames="bad_status", argvalues=sorted(set(range(-20, 20)) - {*Status}))
269
100
  @pytest.mark.anyio
270
101
  async def test_root_status_must_be_valid(data_store: DataStore, store_id: bytes32, bad_status: int) -> None:
@@ -319,44 +150,6 @@ async def test_root_store_id_generation_must_be_unique(data_store: DataStore, st
319
150
  )
320
151
 
321
152
 
322
- @pytest.mark.parametrize(argnames="length", argvalues=sorted(set(range(50)) - {32}))
323
- @pytest.mark.anyio
324
- async def test_ancestors_ancestor_must_be_32(
325
- data_store: DataStore,
326
- store_id: bytes32,
327
- length: int,
328
- ) -> None:
329
- async with data_store.db_wrapper.writer() as writer:
330
- node_hash = await data_store._insert_terminal_node(key=b"\x00", value=b"\x01")
331
- with pytest.raises(sqlite3.IntegrityError, match=r"^CHECK constraint failed:"):
332
- await writer.execute(
333
- """
334
- INSERT INTO ancestors(hash, ancestor, tree_id, generation)
335
- VALUES(:hash, :ancestor, :tree_id, :generation)
336
- """,
337
- {"hash": node_hash, "ancestor": bytes([0] * length), "tree_id": bytes32.zeros, "generation": 0},
338
- )
339
-
340
-
341
- @pytest.mark.parametrize(argnames="length", argvalues=sorted(set(range(50)) - {32}))
342
- @pytest.mark.anyio
343
- async def test_ancestors_store_id_must_be_32(
344
- data_store: DataStore,
345
- store_id: bytes32,
346
- length: int,
347
- ) -> None:
348
- async with data_store.db_wrapper.writer() as writer:
349
- node_hash = await data_store._insert_terminal_node(key=b"\x00", value=b"\x01")
350
- with pytest.raises(sqlite3.IntegrityError, match=r"^CHECK constraint failed:"):
351
- await writer.execute(
352
- """
353
- INSERT INTO ancestors(hash, ancestor, tree_id, generation)
354
- VALUES(:hash, :ancestor, :tree_id, :generation)
355
- """,
356
- {"hash": node_hash, "ancestor": bytes32.zeros, "tree_id": bytes([0] * length), "generation": 0},
357
- )
358
-
359
-
360
153
  @pytest.mark.parametrize(argnames="length", argvalues=sorted(set(range(50)) - {32}))
361
154
  @pytest.mark.anyio
362
155
  async def test_subscriptions_store_id_must_be_32(
@@ -7,8 +7,8 @@ from pathlib import Path
7
7
 
8
8
  from chia_rs import ConsensusConstants
9
9
 
10
+ from chia.consensus.block_height_map import BlockHeightMap
10
11
  from chia.consensus.blockchain import Blockchain
11
- from chia.full_node.block_height_map import BlockHeightMap
12
12
  from chia.full_node.block_store import BlockStore
13
13
  from chia.full_node.coin_store import CoinStore
14
14
  from chia.util.db_wrapper import DBWrapper2
@@ -18,10 +18,10 @@ from chia_rs.sized_ints import uint8, uint32, uint64
18
18
  from chia._tests.blockchain.blockchain_test_utils import _validate_and_add_block
19
19
  from chia._tests.util.db_connection import DBConnection, PathDBConnection
20
20
  from chia.consensus.block_body_validation import ForkInfo
21
+ from chia.consensus.block_height_map import BlockHeightMap
21
22
  from chia.consensus.blockchain import AddBlockResult, Blockchain
22
23
  from chia.consensus.default_constants import DEFAULT_CONSTANTS
23
24
  from chia.consensus.full_block_to_block_record import header_block_to_sub_block_record
24
- from chia.full_node.block_height_map import BlockHeightMap
25
25
  from chia.full_node.block_store import BlockStore
26
26
  from chia.full_node.coin_store import CoinStore
27
27
  from chia.full_node.full_block_utils import GeneratorBlockInfo
@@ -369,16 +369,10 @@ async def test_count_uncompactified_blocks(bt: BlockTools, tmp_dir: Path, db_ver
369
369
  async def test_replace_proof(bt: BlockTools, tmp_dir: Path, db_version: int, use_cache: bool) -> None:
370
370
  blocks = bt.get_consecutive_blocks(10)
371
371
 
372
- def rand_bytes(num: int) -> bytes:
373
- ret = bytearray(num)
374
- for i in range(num):
375
- ret[i] = random.getrandbits(8)
376
- return bytes(ret)
377
-
378
372
  def rand_vdf_proof() -> VDFProof:
379
373
  return VDFProof(
380
374
  uint8(1), # witness_type
381
- rand_bytes(32), # witness
375
+ random.randbytes(32), # witness
382
376
  bool(random.randint(0, 1)), # normalized_to_identity
383
377
  )
384
378
 
@@ -424,8 +418,8 @@ async def test_get_generator(bt: BlockTools, db_version: int, use_cache: bool) -
424
418
  store = await BlockStore.create(db_wrapper, use_cache=use_cache)
425
419
 
426
420
  new_blocks = []
427
- for i, block in enumerate(blocks):
428
- block = block.replace(transactions_generator=generator(i))
421
+ for i, original_block in enumerate(blocks):
422
+ block = original_block.replace(transactions_generator=generator(i))
429
423
  block_record = header_block_to_sub_block_record(
430
424
  DEFAULT_CONSTANTS, uint64(0), block, uint64(0), False, uint8(0), uint32(max(0, block.height - 1)), None
431
425
  )
@@ -16,10 +16,10 @@ from chia._tests.util.coin_store import add_coin_records_to_db
16
16
  from chia._tests.util.db_connection import DBConnection
17
17
  from chia._tests.util.misc import Marks, datacases
18
18
  from chia.consensus.block_body_validation import ForkInfo
19
+ from chia.consensus.block_height_map import BlockHeightMap
19
20
  from chia.consensus.block_rewards import calculate_base_farmer_reward, calculate_pool_reward
20
21
  from chia.consensus.blockchain import AddBlockResult, Blockchain
21
22
  from chia.consensus.coinbase import create_farmer_coin, create_pool_coin
22
- from chia.full_node.block_height_map import BlockHeightMap
23
23
  from chia.full_node.block_store import BlockStore
24
24
  from chia.full_node.coin_store import CoinStore
25
25
  from chia.full_node.hint_store import HintStore
@@ -560,7 +560,7 @@ class TestPeerManager:
560
560
  # use tmp_path pytest fixture to create a temporary directory
561
561
  async def test_serialization(self, tmp_path: Path):
562
562
  addrman = AddressManagerTest()
563
- now = int(math.floor(time.time()))
563
+ now = math.floor(time.time())
564
564
  t_peer1 = TimestampedPeerInfo("250.7.1.1", uint16(8333), uint64(now - 10000))
565
565
  t_peer2 = TimestampedPeerInfo("1050:0000:0000:0000:0005:0600:300c:326b", uint16(9999), uint64(now - 20000))
566
566
  t_peer3 = TimestampedPeerInfo("250.7.3.3", uint16(9999), uint64(now - 30000))
@@ -587,7 +587,7 @@ class TestPeerManager:
587
587
  @pytest.mark.anyio
588
588
  async def test_bad_ip_encoding(self, tmp_path: Path):
589
589
  addrman = AddressManagerTest()
590
- now = int(math.floor(time.time()))
590
+ now = math.floor(time.time())
591
591
  t_peer1 = TimestampedPeerInfo("250.7.1.1", uint16(8333), uint64(now - 10000))
592
592
  t_peer2 = TimestampedPeerInfo("1050:0000:0000:0000:0005:0600:300c:326b", uint16(9999), uint64(now - 20000))
593
593
  t_peer3 = TimestampedPeerInfo("250.7.3.3", uint16(9999), uint64(now - 30000))
@@ -725,7 +725,7 @@ class TestPeerManager:
725
725
 
726
726
  # create a file with the old serialization, then migrate to new serialization
727
727
  addrman = AddressManagerTest()
728
- now = int(math.floor(time.time()))
728
+ now = math.floor(time.time())
729
729
  t_peer1 = TimestampedPeerInfo("250.7.1.1", uint16(8333), uint64(now - 10000))
730
730
  t_peer2 = TimestampedPeerInfo("1050:0000:0000:0000:0005:0600:300c:326b", uint16(9999), uint64(now - 20000))
731
731
  t_peer3 = TimestampedPeerInfo("250.7.3.3", uint16(9999), uint64(now - 30000))
@@ -11,7 +11,7 @@ from chia_rs.sized_bytes import bytes32
11
11
  from chia_rs.sized_ints import uint8, uint32
12
12
 
13
13
  from chia._tests.util.db_connection import DBConnection
14
- from chia.full_node.block_height_map import BlockHeightMap, SesCache
14
+ from chia.consensus.block_height_map import BlockHeightMap, SesCache
15
15
  from chia.util.db_wrapper import DBWrapper2
16
16
  from chia.util.files import write_file_async
17
17
 
@@ -112,11 +112,11 @@ from chia.wallet.wallet_spend_bundle import WalletSpendBundle
112
112
 
113
113
 
114
114
  def test_pre_validation_result() -> None:
115
- conds = SpendBundleConditions([], 0, 0, 0, None, None, [], 0, 0, 0, True, 0, 0)
115
+ conds = SpendBundleConditions([], 0, 0, 0, None, None, [], 0, 0, 0, True, 0, 0, 0, 0, 0)
116
116
  results = PreValidationResult(None, uint64(1), conds, uint32(0))
117
117
  assert results.validated_signature is True
118
118
 
119
- conds = SpendBundleConditions([], 0, 0, 0, None, None, [], 0, 0, 0, False, 0, 0)
119
+ conds = SpendBundleConditions([], 0, 0, 0, None, None, [], 0, 0, 0, False, 0, 0, 0, 0, 0)
120
120
  results = PreValidationResult(None, uint64(1), conds, uint32(0))
121
121
  assert results.validated_signature is False
122
122
 
@@ -548,7 +548,7 @@ async def test_request_peers(
548
548
  async def have_msgs(full_node_peers: FullNodePeers) -> bool:
549
549
  assert full_node_peers.address_manager is not None
550
550
  await full_node_peers.address_manager.add_to_new_table(
551
- [TimestampedPeerInfo("127.0.0.1", uint16(1000), uint64(int(time.time()) - 1000))],
551
+ [TimestampedPeerInfo("127.0.0.1", uint16(1000), uint64(time.time() - 1000))],
552
552
  None,
553
553
  )
554
554
  assert server_2._port is not None
@@ -919,6 +919,10 @@ async def test_new_peak(
919
919
 
920
920
 
921
921
  @pytest.mark.anyio
922
+ @pytest.mark.limit_consensus_modes(
923
+ allowed=[ConsensusMode.HARD_FORK_2_0, ConsensusMode.HARD_FORK_3_0],
924
+ reason="We can no longer (reliably) farm blocks from before the hard fork",
925
+ )
922
926
  async def test_new_transaction_and_mempool(
923
927
  wallet_nodes: tuple[
924
928
  FullNodeSimulator, FullNodeSimulator, ChiaServer, ChiaServer, WalletTool, WalletTool, BlockTools
@@ -946,8 +950,10 @@ async def test_new_transaction_and_mempool(
946
950
 
947
951
  # Makes a bunch of coins
948
952
  conditions_dict: dict[ConditionOpcode, list[ConditionWithArgs]] = {ConditionOpcode.CREATE_COIN: []}
949
- # This should fit in one transaction
950
- for _ in range(100):
953
+ # This should fit in one transaction. The test constants have a max block cost of 400,000,000
954
+ # and the default max *transaction* cost is half that, so 200,000,000. CREATE_COIN has a cost of
955
+ # 1,800,000, we create 80 coins
956
+ for _ in range(80):
951
957
  receiver_puzzlehash = wallet_receiver.get_new_puzzlehash()
952
958
  puzzle_hashes.append(receiver_puzzlehash)
953
959
  output = ConditionWithArgs(ConditionOpcode.CREATE_COIN, [receiver_puzzlehash, int_to_bytes(10000000000)])
@@ -1046,8 +1052,8 @@ async def test_new_transaction_and_mempool(
1046
1052
  # these numbers reflect the capacity of the mempool. In these
1047
1053
  # tests MEMPOOL_BLOCK_BUFFER is 1. The other factors are COST_PER_BYTE
1048
1054
  # and MAX_BLOCK_COST_CLVM
1049
- assert included_tx == 23
1050
- assert not_included_tx == 10
1055
+ assert included_tx == 20
1056
+ assert not_included_tx == 7
1051
1057
  assert seen_bigger_transaction_has_high_fee
1052
1058
 
1053
1059
  # Mempool is full
@@ -1882,7 +1888,9 @@ async def test_new_signage_point_caching(
1882
1888
  ) -> None:
1883
1889
  full_node_1, _full_node_2, server_1, server_2, _wallet_a, _wallet_receiver, bt = wallet_nodes
1884
1890
  blocks = await full_node_1.get_all_full_blocks()
1885
-
1891
+ assert full_node_1.full_node.full_node_store.get_signage_point_by_index_and_cc_output(
1892
+ bytes32.zeros, full_node_1.full_node.constants.GENESIS_CHALLENGE, uint8(0)
1893
+ ) == SignagePoint(None, None, None, None)
1886
1894
  peer = await connect_and_get_peer(server_1, server_2, self_hostname)
1887
1895
  blocks = bt.get_consecutive_blocks(3, block_list_input=blocks, skip_slots=2)
1888
1896
  await full_node_1.full_node.add_block(blocks[-3])
@@ -1951,10 +1959,6 @@ async def test_new_signage_point_caching(
1951
1959
  is not None
1952
1960
  )
1953
1961
 
1954
- assert full_node_1.full_node.full_node_store.get_signage_point_by_index_and_cc_output(
1955
- full_node_1.full_node.constants.GENESIS_CHALLENGE, bytes32.zeros, uint8(0)
1956
- ) == SignagePoint(None, None, None, None)
1957
-
1958
1962
 
1959
1963
  @pytest.mark.anyio
1960
1964
  async def test_slot_catch_up_genesis(
@@ -2678,16 +2682,15 @@ async def test_long_reorg_nodes(
2678
2682
  blocks = default_10000_blocks[: 1600 - chain_length]
2679
2683
  reorg_blocks = test_long_reorg_blocks_light[: 1600 - chain_length]
2680
2684
  reorg_height = 2000
2681
- else:
2682
- if fork_point == 1500:
2683
- blocks = default_10000_blocks[: 1900 - chain_length]
2684
- reorg_blocks = test_long_reorg_1500_blocks[: 1900 - chain_length]
2685
- reorg_height = 2300
2686
- else: # pragma: no cover
2687
- pytest.skip("We rely on the light-blocks test for a 0 forkpoint")
2688
- blocks = default_10000_blocks[: 1100 - chain_length]
2689
- # reorg_blocks = test_long_reorg_blocks[: 1100 - chain_length]
2690
- reorg_height = 1600
2685
+ elif fork_point == 1500:
2686
+ blocks = default_10000_blocks[: 1900 - chain_length]
2687
+ reorg_blocks = test_long_reorg_1500_blocks[: 1900 - chain_length]
2688
+ reorg_height = 2300
2689
+ else: # pragma: no cover
2690
+ pytest.skip("We rely on the light-blocks test for a 0 forkpoint")
2691
+ blocks = default_10000_blocks[: 1100 - chain_length]
2692
+ # reorg_blocks = test_long_reorg_blocks[: 1100 - chain_length]
2693
+ reorg_height = 1600
2691
2694
 
2692
2695
  # this is a pre-requisite for a reorg to happen
2693
2696
  assert default_10000_blocks[reorg_height].weight > reorg_blocks[-1].weight
@@ -3163,15 +3166,14 @@ async def declare_pos_unfinished_block(
3163
3166
  challenge_chain_sp = block.reward_chain_block.challenge_chain_sp_vdf.output.get_hash()
3164
3167
  if block.reward_chain_block.reward_chain_sp_vdf is not None:
3165
3168
  reward_chain_sp = block.reward_chain_block.reward_chain_sp_vdf.output.get_hash()
3169
+ elif len(block.finished_sub_slots) > 0:
3170
+ reward_chain_sp = block.finished_sub_slots[-1].reward_chain.get_hash()
3166
3171
  else:
3167
- if len(block.finished_sub_slots) > 0:
3168
- reward_chain_sp = block.finished_sub_slots[-1].reward_chain.get_hash()
3169
- else:
3170
- curr = blockchain.block_record(block.prev_header_hash)
3171
- while not curr.first_in_sub_slot:
3172
- curr = blockchain.block_record(curr.prev_hash)
3173
- assert curr.finished_reward_slot_hashes is not None
3174
- reward_chain_sp = curr.finished_reward_slot_hashes[-1]
3172
+ curr = blockchain.block_record(block.prev_header_hash)
3173
+ while not curr.first_in_sub_slot:
3174
+ curr = blockchain.block_record(curr.prev_hash)
3175
+ assert curr.finished_reward_slot_hashes is not None
3176
+ reward_chain_sp = curr.finished_reward_slot_hashes[-1]
3175
3177
  farmer_reward_address = block.foliage.foliage_block_data.farmer_reward_puzzle_hash
3176
3178
  pool_target = block.foliage.foliage_block_data.pool_target
3177
3179
  pool_target_signature = block.foliage.foliage_block_data.pool_signature
@@ -3296,3 +3298,62 @@ def compare_unfinished_blocks(block1: UnfinishedBlock, block2: UnfinishedBlock)
3296
3298
  # Final assertion to check the entire block
3297
3299
  assert block1 == block2, "The entire block objects are not identical"
3298
3300
  return True
3301
+
3302
+
3303
+ @pytest.mark.anyio
3304
+ @pytest.mark.parametrize(
3305
+ "condition, error",
3306
+ [
3307
+ (ConditionOpcode.ASSERT_HEIGHT_RELATIVE, "ASSERT_HEIGHT_RELATIVE_FAILED"),
3308
+ (ConditionOpcode.ASSERT_HEIGHT_ABSOLUTE, "ASSERT_HEIGHT_ABSOLUTE_FAILED"),
3309
+ ],
3310
+ )
3311
+ async def test_pending_tx_cache_retry_on_new_peak(
3312
+ condition: ConditionOpcode, error: str, blockchain_constants: ConsensusConstants, caplog: pytest.LogCaptureFixture
3313
+ ) -> None:
3314
+ """
3315
+ Covers PendingTXCache items that are placed there due to unmet relative or
3316
+ absolute height conditions, to make sure those items get retried at peak
3317
+ post processing when those conditions are met.
3318
+ """
3319
+ async with setup_simulators_and_wallets(1, 0, blockchain_constants) as new:
3320
+ full_node_api = new.simulators[0].peer_api
3321
+ bt = new.bt
3322
+ wallet = WalletTool(test_constants)
3323
+ ph = wallet.get_new_puzzlehash()
3324
+ blocks = bt.get_consecutive_blocks(
3325
+ 3, guarantee_transaction_block=True, farmer_reward_puzzle_hash=ph, pool_reward_puzzle_hash=ph
3326
+ )
3327
+ for block in blocks:
3328
+ await full_node_api.full_node.add_block(block)
3329
+ peak = full_node_api.full_node.blockchain.get_peak()
3330
+ assert peak is not None
3331
+ current_height = peak.height
3332
+ # Create a transaction with a height condition that makes it pending
3333
+ coin = blocks[-1].get_included_reward_coins()[0]
3334
+ if condition == ConditionOpcode.ASSERT_HEIGHT_RELATIVE:
3335
+ condition_height = 1
3336
+ else:
3337
+ condition_height = current_height + 1
3338
+ condition_dic = {condition: [ConditionWithArgs(condition, [int_to_bytes(condition_height)])]}
3339
+ sb = wallet.generate_signed_transaction(uint64(42), ph, coin, condition_dic)
3340
+ sb_name = sb.name()
3341
+ # Send the transaction
3342
+ res = await full_node_api.send_transaction(SendTransaction(sb))
3343
+ assert res is not None
3344
+ assert ProtocolMessageTypes(res.type) == ProtocolMessageTypes.transaction_ack
3345
+ transaction_ack = TransactionAck.from_bytes(res.data)
3346
+ assert transaction_ack.status == MempoolInclusionStatus.PENDING.value
3347
+ assert transaction_ack.error == error
3348
+ # Make sure it ends up in the pending cache, not the mempool
3349
+ assert full_node_api.full_node.mempool_manager.get_mempool_item(sb_name, include_pending=False) is None
3350
+ assert full_node_api.full_node.mempool_manager.get_mempool_item(sb_name, include_pending=True) is not None
3351
+ # Advance peak to meet the asserted height condition
3352
+ with caplog.at_level(logging.DEBUG):
3353
+ blocks = bt.get_consecutive_blocks(2, block_list_input=blocks, guarantee_transaction_block=True)
3354
+ for block in blocks:
3355
+ await full_node_api.full_node.add_block(block)
3356
+ # This should trigger peak post processing with the added transaction
3357
+ assert f"Added transaction to mempool: {sb_name}\n" in caplog.text
3358
+ # Make sure the transaction was retried and got added to the mempool
3359
+ assert full_node_api.full_node.mempool_manager.get_mempool_item(sb_name, include_pending=False) is not None
@@ -2,12 +2,15 @@ from __future__ import annotations
2
2
 
3
3
  import pytest
4
4
  from chia_rs import Program as SerializedProgram
5
- from chia_rs import SpendBundleConditions, SpendConditions
6
- from chia_rs.sized_bytes import bytes32
5
+ from chia_rs import (
6
+ SpendBundleConditions,
7
+ SpendConditions,
8
+ get_spends_for_trusted_block,
9
+ get_spends_for_trusted_block_with_conditions,
10
+ )
7
11
  from chia_rs.sized_ints import uint32, uint64
8
12
 
9
13
  from chia.consensus.generator_tools import tx_removals_and_additions
10
- from chia.full_node.mempool_check_conditions import get_spends_for_block, get_spends_for_block_with_conditions
11
14
  from chia.simulator.block_tools import test_constants
12
15
  from chia.types.blockchain_format.coin import Coin
13
16
  from chia.types.generator_types import BlockGenerator
@@ -43,6 +46,7 @@ spends: list[SpendConditions] = [
43
46
  0,
44
47
  execution_cost=0,
45
48
  condition_cost=0,
49
+ fingerprint=b"",
46
50
  ),
47
51
  SpendConditions(
48
52
  coin_ids[1],
@@ -70,19 +74,20 @@ spends: list[SpendConditions] = [
70
74
  0,
71
75
  execution_cost=0,
72
76
  condition_cost=0,
77
+ fingerprint=b"",
73
78
  ),
74
79
  ]
75
80
 
76
81
 
77
82
  def test_tx_removals_and_additions() -> None:
78
83
  conditions = SpendBundleConditions(
79
- spends, uint64(0), uint32(0), uint64(0), None, None, [], uint64(0), 0, 0, False, 0, 0
84
+ spends, uint64(0), uint32(0), uint64(0), None, None, [], uint64(0), 0, 0, False, 0, 0, 0, 0, 0
80
85
  )
81
86
  expected_rems = [coin_ids[0], coin_ids[1]]
82
87
  expected_additions = []
83
88
  for spend in spends:
84
89
  for puzzle_hash, am, _ in spend.create_coin:
85
- expected_additions.append(Coin(bytes32(spend.coin_id), bytes32(puzzle_hash), uint64(am)))
90
+ expected_additions.append(Coin(spend.coin_id, puzzle_hash, uint64(am)))
86
91
  rems, adds = tx_removals_and_additions(conditions)
87
92
  assert rems == expected_rems
88
93
  assert adds == expected_additions
@@ -102,12 +107,14 @@ TEST_GENERATOR = BlockGenerator(
102
107
 
103
108
 
104
109
  def test_get_spends_for_block(caplog: pytest.LogCaptureFixture) -> None:
105
- conditions = get_spends_for_block(TEST_GENERATOR, 100, test_constants)
106
- assert conditions == []
107
- assert "get_spends_for_block() encountered a puzzle we couldn't serialize: " in caplog.text
110
+ conditions = get_spends_for_trusted_block(
111
+ test_constants, TEST_GENERATOR.program, TEST_GENERATOR.generator_refs, 100
112
+ )
113
+ assert conditions["block_spends"] == []
108
114
 
109
115
 
110
116
  def test_get_spends_for_block_with_conditions(caplog: pytest.LogCaptureFixture) -> None:
111
- conditions = get_spends_for_block_with_conditions(TEST_GENERATOR, 100, test_constants)
117
+ conditions = get_spends_for_trusted_block_with_conditions(
118
+ test_constants, TEST_GENERATOR.program, TEST_GENERATOR.generator_refs, 100
119
+ )
112
120
  assert conditions == []
113
- assert "get_spends_for_block_with_conditions() encountered a puzzle we couldn't serialize: " in caplog.text