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
@@ -32,10 +32,8 @@ from chia.consensus.condition_costs import ConditionCost
32
32
  from chia.consensus.default_constants import DEFAULT_CONSTANTS
33
33
  from chia.full_node.eligible_coin_spends import (
34
34
  DedupCoinSpend,
35
- EligibilityAndAdditions,
36
35
  IdenticalSpendDedup,
37
36
  SkipDedup,
38
- run_for_cost,
39
37
  )
40
38
  from chia.full_node.mempool import MAX_SKIPPED_ITEMS, PRIORITY_TX_THRESHOLD
41
39
  from chia.full_node.mempool_manager import (
@@ -361,6 +359,7 @@ def make_test_conds(
361
359
  flags,
362
360
  execution_cost=0,
363
361
  condition_cost=0,
362
+ fingerprint=b"",
364
363
  )
365
364
  for coin_id, parent_id, puzzle_hash, amount, flags, create_coin in spend_info
366
365
  ],
@@ -376,6 +375,9 @@ def make_test_conds(
376
375
  False,
377
376
  0,
378
377
  0,
378
+ 0,
379
+ 0,
380
+ 0,
379
381
  )
380
382
 
381
383
 
@@ -559,44 +561,43 @@ def make_bundle_spends_map_and_fee(
559
561
  spend_bundle: SpendBundle, conds: SpendBundleConditions
560
562
  ) -> tuple[dict[bytes32, BundleCoinSpend], uint64]:
561
563
  bundle_coin_spends: dict[bytes32, BundleCoinSpend] = {}
562
- eligibility_and_additions: dict[bytes32, EligibilityAndAdditions] = {}
564
+
565
+ spend_conditions = {bytes32(spend.coin_id): spend for spend in conds.spends}
566
+
563
567
  removals_amount = 0
564
568
  additions_amount = 0
565
- for spend in conds.spends:
566
- coin_id = bytes32(spend.coin_id)
567
- spend_additions = []
568
- for puzzle_hash, amount, _ in spend.create_coin:
569
- spend_additions.append(Coin(coin_id, puzzle_hash, uint64(amount)))
570
- additions_amount += amount
571
- eligibility_and_additions[coin_id] = EligibilityAndAdditions(
572
- is_eligible_for_dedup=bool(spend.flags & ELIGIBLE_FOR_DEDUP),
573
- spend_additions=spend_additions,
574
- ff_puzzle_hash=bytes32(spend.puzzle_hash) if bool(spend.flags & ELIGIBLE_FOR_FF) else None,
575
- )
576
569
  for coin_spend in spend_bundle.coin_spends:
577
570
  coin_id = coin_spend.coin.name()
578
571
  removals_amount += coin_spend.coin.amount
579
- eligibility_info = eligibility_and_additions.get(
580
- coin_id, EligibilityAndAdditions(is_eligible_for_dedup=False, spend_additions=[], ff_puzzle_hash=None)
581
- )
572
+ spend_conds = spend_conditions.pop(coin_id)
573
+
574
+ additions = []
575
+ for puzzle_hash, amount, _ in spend_conds.create_coin:
576
+ additions.append(Coin(coin_id, puzzle_hash, uint64(amount)))
577
+ additions_amount += amount
578
+
582
579
  bundle_coin_spends[coin_id] = BundleCoinSpend(
583
580
  coin_spend=coin_spend,
584
- eligible_for_dedup=eligibility_info.is_eligible_for_dedup,
585
- eligible_for_fast_forward=eligibility_info.ff_puzzle_hash is not None,
586
- additions=eligibility_info.spend_additions,
581
+ eligible_for_dedup=bool(spend_conds.flags & ELIGIBLE_FOR_DEDUP),
582
+ additions=additions,
583
+ cost=uint64(spend_conds.condition_cost + spend_conds.execution_cost),
587
584
  latest_singleton_lineage=UnspentLineageInfo(coin_id, coin_spend.coin.parent_coin_info, bytes32([0] * 32))
588
- if eligibility_info.ff_puzzle_hash is not None
585
+ if bool(spend_conds.flags & ELIGIBLE_FOR_FF)
589
586
  else None,
590
587
  )
588
+ assert additions_amount == conds.addition_amount
589
+ assert removals_amount == conds.removal_amount
591
590
  fee = uint64(removals_amount - additions_amount)
592
591
  return bundle_coin_spends, fee
593
592
 
594
593
 
595
594
  def mempool_item_from_spendbundle(spend_bundle: SpendBundle) -> MempoolItem:
596
- conds = get_conditions_from_spendbundle(spend_bundle, INFINITE_COST, DEFAULT_CONSTANTS, uint32(0))
595
+ conds = get_conditions_from_spendbundle(
596
+ spend_bundle, INFINITE_COST, DEFAULT_CONSTANTS, DEFAULT_CONSTANTS.HARD_FORK2_HEIGHT
597
+ )
597
598
  bundle_coin_spends, fee = make_bundle_spends_map_and_fee(spend_bundle, conds)
598
599
  return MempoolItem(
599
- spend_bundle=spend_bundle,
600
+ aggregated_signature=spend_bundle.aggregated_signature,
600
601
  fee=fee,
601
602
  conds=conds,
602
603
  spend_bundle_name=spend_bundle.name(),
@@ -888,8 +889,13 @@ def mk_bcs(coin_spend: CoinSpend, flags: int = 0) -> BundleCoinSpend:
888
889
  return BundleCoinSpend(
889
890
  coin_spend=coin_spend,
890
891
  eligible_for_dedup=bool(flags & ELIGIBLE_FOR_DEDUP),
891
- eligible_for_fast_forward=bool(flags & ELIGIBLE_FOR_FF),
892
892
  additions=[],
893
+ cost=uint64(0),
894
+ latest_singleton_lineage=UnspentLineageInfo(
895
+ coin_spend.coin.name(), coin_spend.coin.parent_coin_info, bytes32([0] * 32)
896
+ )
897
+ if flags & ELIGIBLE_FOR_FF
898
+ else None,
893
899
  )
894
900
 
895
901
 
@@ -921,7 +927,7 @@ def mk_item(
921
927
  spend_bundle = SpendBundle(coin_spends, G2Element())
922
928
  conds = make_test_conds(cost=cost, spend_ids=spend_ids)
923
929
  return MempoolItem(
924
- spend_bundle=spend_bundle,
930
+ aggregated_signature=spend_bundle.aggregated_signature,
925
931
  fee=uint64(fee),
926
932
  conds=conds,
927
933
  spend_bundle_name=spend_bundle.name(),
@@ -1116,8 +1122,7 @@ coins = make_test_coins()
1116
1122
  ],
1117
1123
  )
1118
1124
  def test_can_replace(existing_items: list[MempoolItem], new_item: MempoolItem, expected: bool) -> None:
1119
- removals = {c.name() for c in new_item.spend_bundle.removals()}
1120
- assert can_replace(existing_items, removals, new_item) == expected
1125
+ assert can_replace(existing_items, new_item) == expected
1121
1126
 
1122
1127
 
1123
1128
  @pytest.mark.anyio
@@ -1583,21 +1588,6 @@ async def test_replacing_one_with_an_eligible_coin() -> None:
1583
1588
  assert_sb_in_pool(mempool_manager, sb123e4)
1584
1589
 
1585
1590
 
1586
- @pytest.mark.parametrize("amount", [0, 1])
1587
- def test_run_for_cost(amount: int) -> None:
1588
- conditions = [[ConditionOpcode.CREATE_COIN, IDENTITY_PUZZLE_HASH, amount]]
1589
- solution = SerializedProgram.to(conditions)
1590
- cost = run_for_cost(IDENTITY_PUZZLE, solution, additions_count=1, max_cost=uint64(10000000))
1591
- assert cost == uint64(1800044)
1592
-
1593
-
1594
- def test_run_for_cost_max_cost() -> None:
1595
- conditions = [[ConditionOpcode.CREATE_COIN, IDENTITY_PUZZLE_HASH, 1]]
1596
- solution = SerializedProgram.to(conditions)
1597
- with pytest.raises(ValueError, match="cost exceeded"):
1598
- run_for_cost(IDENTITY_PUZZLE, solution, additions_count=1, max_cost=uint64(43))
1599
-
1600
-
1601
1591
  def test_dedup_info_nothing_to_do() -> None:
1602
1592
  # No eligible coins, nothing to deduplicate, item gets considered normally
1603
1593
 
@@ -1613,7 +1603,7 @@ def test_dedup_info_nothing_to_do() -> None:
1613
1603
  mempool_item = mempool_item_from_spendbundle(sb)
1614
1604
  dedup_coin_spends = IdenticalSpendDedup()
1615
1605
  unique_coin_spends, cost_saving, unique_additions = dedup_coin_spends.get_deduplication_info(
1616
- bundle_coin_spends=mempool_item.bundle_coin_spends, max_cost=mempool_item.conds.cost
1606
+ bundle_coin_spends=mempool_item.bundle_coin_spends
1617
1607
  )
1618
1608
  assert unique_coin_spends == sb.coin_spends
1619
1609
  assert cost_saving == 0
@@ -1633,7 +1623,7 @@ def test_dedup_info_eligible_1st_time() -> None:
1633
1623
  dedup_coin_spends = IdenticalSpendDedup()
1634
1624
  solution = SerializedProgram.to(conditions)
1635
1625
  unique_coin_spends, cost_saving, unique_additions = dedup_coin_spends.get_deduplication_info(
1636
- bundle_coin_spends=mempool_item.bundle_coin_spends, max_cost=mempool_item.conds.cost
1626
+ bundle_coin_spends=mempool_item.bundle_coin_spends
1637
1627
  )
1638
1628
  assert unique_coin_spends == sb.coin_spends
1639
1629
  assert cost_saving == 0
@@ -1641,7 +1631,10 @@ def test_dedup_info_eligible_1st_time() -> None:
1641
1631
  Coin(TEST_COIN_ID, IDENTITY_PUZZLE_HASH, uint64(1)),
1642
1632
  Coin(TEST_COIN_ID, IDENTITY_PUZZLE_HASH, uint64(TEST_COIN_AMOUNT - 1)),
1643
1633
  }
1644
- assert dedup_coin_spends == IdenticalSpendDedup({TEST_COIN_ID: DedupCoinSpend(solution=solution, cost=None)})
1634
+ expected_cost = mempool_item.bundle_coin_spends[TEST_COIN_ID].cost
1635
+ assert dedup_coin_spends == IdenticalSpendDedup(
1636
+ {TEST_COIN_ID: DedupCoinSpend(solution=solution, cost=expected_cost)}
1637
+ )
1645
1638
 
1646
1639
 
1647
1640
  def test_dedup_info_eligible_but_different_solution() -> None:
@@ -1651,14 +1644,12 @@ def test_dedup_info_eligible_but_different_solution() -> None:
1651
1644
  [ConditionOpcode.CREATE_COIN, IDENTITY_PUZZLE_HASH, TEST_COIN_AMOUNT],
1652
1645
  ]
1653
1646
  initial_solution = SerializedProgram.to(initial_conditions)
1654
- dedup_coin_spends = IdenticalSpendDedup({TEST_COIN_ID: DedupCoinSpend(solution=initial_solution, cost=None)})
1647
+ dedup_coin_spends = IdenticalSpendDedup({TEST_COIN_ID: DedupCoinSpend(solution=initial_solution, cost=uint64(10))})
1655
1648
  conditions = [[ConditionOpcode.CREATE_COIN, IDENTITY_PUZZLE_HASH, TEST_COIN_AMOUNT]]
1656
1649
  sb = spend_bundle_from_conditions(conditions, TEST_COIN)
1657
1650
  mempool_item = mempool_item_from_spendbundle(sb)
1658
1651
  with pytest.raises(SkipDedup, match="Solution is different from what we're deduplicating on"):
1659
- dedup_coin_spends.get_deduplication_info(
1660
- bundle_coin_spends=mempool_item.bundle_coin_spends, max_cost=mempool_item.conds.cost
1661
- )
1652
+ dedup_coin_spends.get_deduplication_info(bundle_coin_spends=mempool_item.bundle_coin_spends)
1662
1653
 
1663
1654
 
1664
1655
  def test_dedup_info_eligible_2nd_time_and_another_1st_time() -> None:
@@ -1668,7 +1659,10 @@ def test_dedup_info_eligible_2nd_time_and_another_1st_time() -> None:
1668
1659
  [ConditionOpcode.CREATE_COIN, IDENTITY_PUZZLE_HASH, TEST_COIN_AMOUNT - 1],
1669
1660
  ]
1670
1661
  initial_solution = SerializedProgram.to(initial_conditions)
1671
- dedup_coin_spends = IdenticalSpendDedup({TEST_COIN_ID: DedupCoinSpend(solution=initial_solution, cost=None)})
1662
+ test_coin_cost = uint64(1337)
1663
+ dedup_coin_spends = IdenticalSpendDedup(
1664
+ {TEST_COIN_ID: DedupCoinSpend(solution=initial_solution, cost=test_coin_cost)}
1665
+ )
1672
1666
  sb1 = spend_bundle_from_conditions(initial_conditions, TEST_COIN)
1673
1667
  second_conditions = [[ConditionOpcode.CREATE_COIN, IDENTITY_PUZZLE_HASH, TEST_COIN_AMOUNT2]]
1674
1668
  second_solution = SerializedProgram.to(second_conditions)
@@ -1677,19 +1671,19 @@ def test_dedup_info_eligible_2nd_time_and_another_1st_time() -> None:
1677
1671
  mempool_item = mempool_item_from_spendbundle(sb)
1678
1672
  assert mempool_item.conds is not None
1679
1673
  unique_coin_spends, cost_saving, unique_additions = dedup_coin_spends.get_deduplication_info(
1680
- bundle_coin_spends=mempool_item.bundle_coin_spends, max_cost=mempool_item.conds.cost
1674
+ bundle_coin_spends=mempool_item.bundle_coin_spends
1681
1675
  )
1682
1676
  # Only the eligible one that we encountered more than once gets deduplicated
1683
1677
  assert unique_coin_spends == sb2.coin_spends
1684
- saved_cost = uint64(3600044)
1685
- assert cost_saving == saved_cost
1678
+ assert cost_saving == test_coin_cost
1686
1679
  assert unique_additions == [Coin(TEST_COIN_ID2, IDENTITY_PUZZLE_HASH, TEST_COIN_AMOUNT2)]
1687
- # The coin we encountered a second time has its cost and additions properly updated
1688
- # The coin we encountered for the first time gets cost None and an empty set of additions
1680
+ # The coin we encountered a second time is already in the map
1681
+ # The coin we encountered for the first time gets added with its solution and cost
1682
+ test_coin2_cost = mempool_item.bundle_coin_spends[TEST_COIN_ID2].cost
1689
1683
  expected_dedup_coin_spends = IdenticalSpendDedup(
1690
1684
  {
1691
- TEST_COIN_ID: DedupCoinSpend(solution=initial_solution, cost=saved_cost),
1692
- TEST_COIN_ID2: DedupCoinSpend(solution=second_solution, cost=None),
1685
+ TEST_COIN_ID: DedupCoinSpend(solution=initial_solution, cost=test_coin_cost),
1686
+ TEST_COIN_ID2: DedupCoinSpend(solution=second_solution, cost=test_coin2_cost),
1693
1687
  }
1694
1688
  )
1695
1689
  assert dedup_coin_spends == expected_dedup_coin_spends
@@ -1704,11 +1698,12 @@ def test_dedup_info_eligible_3rd_time_another_2nd_time_and_one_non_eligible() ->
1704
1698
  initial_solution = SerializedProgram.to(initial_conditions)
1705
1699
  second_conditions = [[ConditionOpcode.CREATE_COIN, IDENTITY_PUZZLE_HASH, TEST_COIN_AMOUNT2]]
1706
1700
  second_solution = SerializedProgram.to(second_conditions)
1707
- saved_cost = uint64(3600044)
1701
+ test_coin_cost = uint64(42)
1702
+ test_coin2_cost = uint64(1337)
1708
1703
  dedup_coin_spends = IdenticalSpendDedup(
1709
1704
  {
1710
- TEST_COIN_ID: DedupCoinSpend(solution=initial_solution, cost=saved_cost),
1711
- TEST_COIN_ID2: DedupCoinSpend(solution=second_solution, cost=None),
1705
+ TEST_COIN_ID: DedupCoinSpend(solution=initial_solution, cost=test_coin_cost),
1706
+ TEST_COIN_ID2: DedupCoinSpend(solution=second_solution, cost=test_coin2_cost),
1712
1707
  }
1713
1708
  )
1714
1709
  sb1 = spend_bundle_from_conditions(initial_conditions, TEST_COIN)
@@ -1725,16 +1720,16 @@ def test_dedup_info_eligible_3rd_time_another_2nd_time_and_one_non_eligible() ->
1725
1720
  mempool_item = mempool_item_from_spendbundle(sb)
1726
1721
  assert mempool_item.conds is not None
1727
1722
  unique_coin_spends, cost_saving, unique_additions = dedup_coin_spends.get_deduplication_info(
1728
- bundle_coin_spends=mempool_item.bundle_coin_spends, max_cost=mempool_item.conds.cost
1723
+ bundle_coin_spends=mempool_item.bundle_coin_spends
1729
1724
  )
1730
1725
  assert unique_coin_spends == sb3.coin_spends
1731
- saved_cost2 = uint64(1800044)
1732
- assert cost_saving == saved_cost + saved_cost2
1726
+ assert cost_saving == test_coin_cost + test_coin2_cost
1733
1727
  assert unique_additions == [Coin(TEST_COIN_ID3, IDENTITY_PUZZLE_HASH, TEST_COIN_AMOUNT3)]
1728
+ # TEST_COIN_ID3 is non-eligible, so it doesn't end up in this map
1734
1729
  expected_dedup_coin_spends = IdenticalSpendDedup(
1735
1730
  {
1736
- TEST_COIN_ID: DedupCoinSpend(initial_solution, saved_cost),
1737
- TEST_COIN_ID2: DedupCoinSpend(second_solution, saved_cost2),
1731
+ TEST_COIN_ID: DedupCoinSpend(initial_solution, test_coin_cost),
1732
+ TEST_COIN_ID2: DedupCoinSpend(second_solution, test_coin2_cost),
1738
1733
  }
1739
1734
  )
1740
1735
  assert dedup_coin_spends == expected_dedup_coin_spends
@@ -1804,18 +1799,21 @@ async def test_bundle_coin_spends() -> None:
1804
1799
  await send_spendbundle(mempool_manager, sb123e)
1805
1800
  mi123e = mempool_manager.get_mempool_item(sb123e.name())
1806
1801
  assert mi123e is not None
1802
+ execution_cost = 44
1807
1803
  for i in range(3):
1808
1804
  assert mi123e.bundle_coin_spends[coins[i].name()] == BundleCoinSpend(
1809
1805
  coin_spend=sb123.coin_spends[i],
1810
1806
  eligible_for_dedup=False,
1811
- eligible_for_fast_forward=False,
1812
1807
  additions=[Coin(coins[i].name(), IDENTITY_PUZZLE_HASH, coins[i].amount)],
1808
+ cost=uint64(ConditionCost.CREATE_COIN.value + ConditionCost.AGG_SIG.value + execution_cost),
1809
+ latest_singleton_lineage=None,
1813
1810
  )
1814
1811
  assert mi123e.bundle_coin_spends[coins[3].name()] == BundleCoinSpend(
1815
1812
  coin_spend=eligible_sb.coin_spends[0],
1816
1813
  eligible_for_dedup=True,
1817
- eligible_for_fast_forward=False,
1818
1814
  additions=[Coin(coins[3].name(), IDENTITY_PUZZLE_HASH, coins[3].amount)],
1815
+ cost=uint64(ConditionCost.CREATE_COIN.value + execution_cost),
1816
+ latest_singleton_lineage=None,
1819
1817
  )
1820
1818
 
1821
1819
 
@@ -2467,7 +2465,7 @@ async def test_new_peak_ff_eviction(
2467
2465
  item = mempool_manager.get_mempool_item(bundle.name())
2468
2466
  assert item is not None
2469
2467
  singleton_name = singleton_spend.coin.name()
2470
- assert item.bundle_coin_spends[singleton_name].eligible_for_fast_forward
2468
+ assert item.bundle_coin_spends[singleton_name].supports_fast_forward
2471
2469
  latest_singleton_lineage = item.bundle_coin_spends[singleton_name].latest_singleton_lineage
2472
2470
  assert latest_singleton_lineage is not None
2473
2471
  assert latest_singleton_lineage.coin_id == singleton_name
@@ -2499,7 +2497,7 @@ async def test_new_peak_ff_eviction(
2499
2497
  else:
2500
2498
  item = mempool_manager.get_mempool_item(bundle.name())
2501
2499
  assert item is not None
2502
- assert item.bundle_coin_spends[singleton_spend.coin.name()].eligible_for_fast_forward
2500
+ assert item.bundle_coin_spends[singleton_spend.coin.name()].supports_fast_forward
2503
2501
  latest_singleton_lineage = item.bundle_coin_spends[singleton_spend.coin.name()].latest_singleton_lineage
2504
2502
  assert latest_singleton_lineage is not None
2505
2503
  assert latest_singleton_lineage.coin_id == singleton_spend.coin.name()
@@ -2556,9 +2554,9 @@ async def test_multiple_ff(use_optimization: bool) -> None:
2556
2554
 
2557
2555
  item = mempool_manager.get_mempool_item(bundle.name())
2558
2556
  assert item is not None
2559
- assert item.bundle_coin_spends[singleton_spend1.coin.name()].eligible_for_fast_forward
2560
- assert item.bundle_coin_spends[singleton_spend2.coin.name()].eligible_for_fast_forward
2561
- assert not item.bundle_coin_spends[coin_spend.coin.name()].eligible_for_fast_forward
2557
+ assert item.bundle_coin_spends[singleton_spend1.coin.name()].supports_fast_forward
2558
+ assert item.bundle_coin_spends[singleton_spend2.coin.name()].supports_fast_forward
2559
+ assert not item.bundle_coin_spends[coin_spend.coin.name()].supports_fast_forward
2562
2560
 
2563
2561
  # spend the singleton coin2 and make coin3 the latest version
2564
2562
  coins.update_lineage(singleton_ph, singleton_spend3.coin)
@@ -2620,7 +2618,7 @@ async def test_advancing_ff(use_optimization: bool) -> None:
2620
2618
  item = mempool_manager.get_mempool_item(bundle.name())
2621
2619
  assert item is not None
2622
2620
  spend = item.bundle_coin_spends[spend_a.coin.name()]
2623
- assert spend.eligible_for_fast_forward
2621
+ assert spend.supports_fast_forward
2624
2622
  assert spend.latest_singleton_lineage is not None
2625
2623
  assert spend.latest_singleton_lineage.coin_id == spend_a.coin.name()
2626
2624
 
@@ -2632,7 +2630,7 @@ async def test_advancing_ff(use_optimization: bool) -> None:
2632
2630
  item = mempool_manager.get_mempool_item(bundle.name())
2633
2631
  assert item is not None
2634
2632
  spend = item.bundle_coin_spends[spend_a.coin.name()]
2635
- assert spend.eligible_for_fast_forward
2633
+ assert spend.supports_fast_forward
2636
2634
  assert spend.latest_singleton_lineage is not None
2637
2635
  assert spend.latest_singleton_lineage.coin_id == spend_b.coin.name()
2638
2636
 
@@ -2644,7 +2642,7 @@ async def test_advancing_ff(use_optimization: bool) -> None:
2644
2642
  item = mempool_manager.get_mempool_item(bundle.name())
2645
2643
  assert item is not None
2646
2644
  spend = item.bundle_coin_spends[spend_a.coin.name()]
2647
- assert spend.eligible_for_fast_forward
2645
+ assert spend.supports_fast_forward
2648
2646
  assert spend.latest_singleton_lineage is not None
2649
2647
  assert spend.latest_singleton_lineage.coin_id == spend_c.coin.name()
2650
2648
 
@@ -3269,3 +3267,64 @@ async def test_different_ff_versions() -> None:
3269
3267
  latest_singleton_lineage2 = new_mi2.bundle_coin_spends[version2_id].latest_singleton_lineage
3270
3268
  assert latest_singleton_lineage2 is not None
3271
3269
  assert latest_singleton_lineage2.coin_id == new_latest_lineage_id
3270
+
3271
+
3272
+ @pytest.mark.anyio
3273
+ @pytest.mark.parametrize(
3274
+ "condition_and_error",
3275
+ [
3276
+ (ConditionOpcode.ASSERT_HEIGHT_RELATIVE, Err.ASSERT_HEIGHT_RELATIVE_FAILED),
3277
+ (ConditionOpcode.ASSERT_HEIGHT_ABSOLUTE, Err.ASSERT_HEIGHT_ABSOLUTE_FAILED),
3278
+ ],
3279
+ )
3280
+ @pytest.mark.parametrize("optimized_path", [True, False])
3281
+ async def test_new_peak_txs_added(condition_and_error: tuple[ConditionOpcode, Err], optimized_path: bool) -> None:
3282
+ """
3283
+ Tests that deferred transactions because of time-lock are retried once the
3284
+ time-lock allows them to be reconsidered.
3285
+ """
3286
+ coins = TestCoins([TEST_COIN], {})
3287
+ mempool_manager = await setup_mempool(coins)
3288
+ # Add an item that should go to the pending cache
3289
+ assert mempool_manager.peak is not None
3290
+ condition_height = mempool_manager.peak.height + 1
3291
+ condition, expected_error = condition_and_error
3292
+ _, sb_name, result = await generate_and_add_spendbundle(mempool_manager, [[condition, condition_height]])
3293
+ _, status, error = result
3294
+ assert status == MempoolInclusionStatus.PENDING
3295
+ assert error == expected_error
3296
+ # Advance the mempool beyond the asserted height to retry the test item
3297
+ if optimized_path:
3298
+ spent_coins: Optional[list[bytes32]] = []
3299
+ new_peak_info = await mempool_manager.new_peak(
3300
+ create_test_block_record(height=uint32(condition_height)), spent_coins
3301
+ )
3302
+ # We're not there yet (needs to be higher, not equal)
3303
+ assert new_peak_info.spend_bundle_ids == []
3304
+ assert mempool_manager.get_mempool_item(sb_name, include_pending=False) is None
3305
+ else:
3306
+ spent_coins = None
3307
+ new_peak_info = await mempool_manager.new_peak(
3308
+ create_test_block_record(height=uint32(condition_height + 1)), spent_coins
3309
+ )
3310
+ # The item gets retried successfully now
3311
+ assert new_peak_info.spend_bundle_ids == [sb_name]
3312
+ assert mempool_manager.get_mempool_item(sb_name, include_pending=False) is not None
3313
+
3314
+
3315
+ @pytest.mark.anyio
3316
+ async def test_mempool_item_to_spend_bundle() -> None:
3317
+ """
3318
+ Tests that we can properly go back to a `SpendBundle` from a `MempoolItem`.
3319
+ """
3320
+ coins = [Coin(bytes32.random(), IDENTITY_PUZZLE_HASH, uint64(i + 1)) for i in range(random.randint(42, 1337))]
3321
+ mempool_manager = await setup_mempool(TestCoins(coins, {}))
3322
+ random_sample = random.sample(coins, 42)
3323
+ sb = SpendBundle([CoinSpend(c, IDENTITY_PUZZLE, SerializedProgram.to(None)) for c in random_sample], G2Element())
3324
+ sb_name = sb.name()
3325
+ await add_spendbundle(mempool_manager, sb, sb_name)
3326
+ mi = mempool_manager.get_mempool_item(sb_name)
3327
+ assert mi is not None
3328
+ result = mi.to_spend_bundle()
3329
+ assert result == sb
3330
+ assert result.name() == sb_name
@@ -52,8 +52,10 @@ def test_process_fast_forward_spends_nothing_to_do() -> None:
52
52
  sb = spend_bundle_from_conditions(conditions, TEST_COIN, sig)
53
53
  item = mempool_item_from_spendbundle(sb)
54
54
  # This coin is not eligible for fast forward
55
- assert item.bundle_coin_spends[TEST_COIN_ID].eligible_for_fast_forward is False
56
- internal_mempool_item = InternalMempoolItem(sb, item.conds, item.height_added_to_mempool, item.bundle_coin_spends)
55
+ assert not item.bundle_coin_spends[TEST_COIN_ID].supports_fast_forward
56
+ internal_mempool_item = InternalMempoolItem(
57
+ sb.aggregated_signature, item.conds, item.height_added_to_mempool, item.bundle_coin_spends
58
+ )
57
59
  original_version = dataclasses.replace(internal_mempool_item)
58
60
  singleton_ff = SingletonFastForward()
59
61
  bundle_coin_spends = singleton_ff.process_fast_forward_spends(
@@ -63,28 +65,6 @@ def test_process_fast_forward_spends_nothing_to_do() -> None:
63
65
  assert bundle_coin_spends == original_version.bundle_coin_spends
64
66
 
65
67
 
66
- def test_process_fast_forward_spends_unknown_ff() -> None:
67
- """
68
- This tests the case when we process for the first time but we are unable
69
- to lookup the latest version from the item's latest singleton lineage
70
- """
71
- test_coin = Coin(TEST_COIN_ID, IDENTITY_PUZZLE_HASH, uint64(1))
72
- conditions = [[ConditionOpcode.CREATE_COIN, IDENTITY_PUZZLE_HASH, 1]]
73
- sb = spend_bundle_from_conditions(conditions, test_coin)
74
- item = mempool_item_from_spendbundle(sb)
75
- # The coin is eligible for fast forward
76
- assert item.bundle_coin_spends[test_coin.name()].eligible_for_fast_forward is True
77
- item.bundle_coin_spends[test_coin.name()].latest_singleton_lineage = None
78
- internal_mempool_item = InternalMempoolItem(sb, item.conds, item.height_added_to_mempool, item.bundle_coin_spends)
79
- singleton_ff = SingletonFastForward()
80
- # We have no fast forward records yet, so we'll process this coin for the
81
- # first time here, but the item's latest singleton lineage returns None
82
- with pytest.raises(ValueError, match="Cannot proceed with singleton spend fast forward."):
83
- singleton_ff.process_fast_forward_spends(
84
- mempool_item=internal_mempool_item, height=TEST_HEIGHT, constants=DEFAULT_CONSTANTS
85
- )
86
-
87
-
88
68
  def test_process_fast_forward_spends_latest_unspent() -> None:
89
69
  """
90
70
  This tests the case when we are the latest singleton version already, so
@@ -103,9 +83,11 @@ def test_process_fast_forward_spends_latest_unspent() -> None:
103
83
  conditions = [[ConditionOpcode.CREATE_COIN, IDENTITY_PUZZLE_HASH, test_amount]]
104
84
  sb = spend_bundle_from_conditions(conditions, test_coin)
105
85
  item = mempool_item_from_spendbundle(sb)
106
- assert item.bundle_coin_spends[test_coin.name()].eligible_for_fast_forward is True
86
+ assert item.bundle_coin_spends[test_coin.name()].supports_fast_forward
107
87
  item.bundle_coin_spends[test_coin.name()].latest_singleton_lineage = test_unspent_lineage_info
108
- internal_mempool_item = InternalMempoolItem(sb, item.conds, item.height_added_to_mempool, item.bundle_coin_spends)
88
+ internal_mempool_item = InternalMempoolItem(
89
+ sb.aggregated_signature, item.conds, item.height_added_to_mempool, item.bundle_coin_spends
90
+ )
109
91
  original_version = dataclasses.replace(internal_mempool_item)
110
92
  singleton_ff = SingletonFastForward()
111
93
  bundle_coin_spends = singleton_ff.process_fast_forward_spends(
@@ -168,12 +150,12 @@ def test_perform_the_fast_forward() -> None:
168
150
  "517b0dadb0c310ded24dd86dff8205398080ff808080"
169
151
  )
170
152
  test_coin_spend = CoinSpend(test_coin, test_puzzle_reveal, test_solution)
171
- test_spend_data = BundleCoinSpend(test_coin_spend, False, True, [test_child_coin])
172
153
  test_unspent_lineage_info = UnspentLineageInfo(
173
154
  coin_id=latest_unspent_coin.name(),
174
155
  parent_id=latest_unspent_coin.parent_coin_info,
175
156
  parent_parent_id=test_child_coin.parent_coin_info,
176
157
  )
158
+ test_spend_data = BundleCoinSpend(test_coin_spend, False, [test_child_coin], uint64(0), test_unspent_lineage_info)
177
159
  # Start from a fresh state of fast forward spends
178
160
  fast_forward_spends: dict[bytes32, UnspentLineageInfo] = {}
179
161
  # Perform the fast forward on the test coin (the grandparent)
@@ -1,8 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import asyncio
4
- import asyncio.events
5
- import asyncio.protocols
6
4
  import dataclasses
7
5
  import functools
8
6
  import logging.config