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
@@ -3,8 +3,10 @@ from __future__ import annotations
3
3
  import dataclasses
4
4
  import logging
5
5
  import sqlite3
6
+ from contextlib import AbstractAsyncContextManager
6
7
  from typing import Optional
7
8
 
9
+ import aiosqlite
8
10
  import typing_extensions
9
11
  import zstd
10
12
  from chia_rs import BlockRecord, FullBlock, SubEpochChallengeSegment, SubEpochSegments
@@ -12,6 +14,7 @@ from chia_rs.sized_bytes import bytes32
12
14
  from chia_rs.sized_ints import uint32
13
15
 
14
16
  from chia.full_node.full_block_utils import GeneratorBlockInfo, block_info_from_block, generator_from_block
17
+ from chia.util.batches import to_batches
15
18
  from chia.util.db_wrapper import DBWrapper2, execute_fetchone
16
19
  from chia.util.errors import Err
17
20
  from chia.util.lru_cache import LRUCache
@@ -189,6 +192,12 @@ class BlockStore:
189
192
  return challenge_segments
190
193
  return None
191
194
 
195
+ def transaction(self) -> AbstractAsyncContextManager[aiosqlite.Connection]:
196
+ return self.db_wrapper.writer()
197
+
198
+ def get_block_from_cache(self, header_hash: bytes32) -> Optional[FullBlock]:
199
+ return self.block_cache.get(header_hash)
200
+
192
201
  def rollback_cache_block(self, header_hash: bytes32) -> None:
193
202
  try:
194
203
  self.block_cache.remove(header_hash)
@@ -322,20 +331,21 @@ class BlockStore:
322
331
  Returns a list of Block Records, ordered by the same order in which header_hashes are passed in.
323
332
  Throws an exception if the blocks are not present
324
333
  """
334
+
325
335
  if len(header_hashes) == 0:
326
336
  return []
327
337
 
328
338
  all_blocks: dict[bytes32, BlockRecord] = {}
329
- async with self.db_wrapper.reader_no_transaction() as conn:
330
- async with conn.execute(
331
- "SELECT header_hash,block_record "
332
- "FROM full_blocks "
333
- f"WHERE header_hash in ({'?,' * (len(header_hashes) - 1)}?)",
334
- header_hashes,
335
- ) as cursor:
336
- for row in await cursor.fetchall():
337
- block_rec = BlockRecord.from_bytes(row[1])
338
- all_blocks[block_rec.header_hash] = block_rec
339
+ for batch in to_batches(header_hashes, self.db_wrapper.host_parameter_limit):
340
+ async with self.db_wrapper.reader_no_transaction() as conn:
341
+ async with conn.execute(
342
+ "SELECT header_hash,block_record FROM full_blocks "
343
+ f"WHERE header_hash in ({'?,' * (len(batch.entries) - 1)}?)",
344
+ batch.entries,
345
+ ) as cursor:
346
+ for row in await cursor.fetchall():
347
+ block_rec = BlockRecord.from_bytes(row[1])
348
+ all_blocks[block_rec.header_hash] = block_rec
339
349
 
340
350
  ret: list[BlockRecord] = []
341
351
  for hh in header_hashes:
@@ -163,13 +163,21 @@ class CoinStore:
163
163
  await self._set_spent(tx_removals, height)
164
164
 
165
165
  end = time.monotonic()
166
- log.log(
167
- logging.WARNING if end - start > 10 else logging.DEBUG,
166
+ took_too_long = end - start > 10
167
+
168
+ message = (
168
169
  f"Height {height}: It took {end - start:0.2f}s to apply {len(tx_additions)} additions and "
169
- + f"{len(tx_removals)} removals to the coin store. Make sure "
170
- + "blockchain database is on a fast drive",
170
+ + f"{len(tx_removals)} removals to the coin store."
171
171
  )
172
172
 
173
+ if took_too_long:
174
+ level = logging.WARNING
175
+ message += " Make sure blockchain database is on a fast drive"
176
+ else:
177
+ level = logging.DEBUG
178
+
179
+ log.log(level, message)
180
+
173
181
  # Checks DB and DiffStores for CoinRecord with coin_name and returns it
174
182
  async def get_coin_record(self, coin_name: bytes32) -> Optional[CoinRecord]:
175
183
  async with self.db_wrapper.reader_no_transaction() as conn:
@@ -1,44 +1,22 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import dataclasses
4
- from typing import Optional
5
4
 
6
5
  from chia_rs import CoinSpend, ConsensusConstants, SpendBundle, fast_forward_singleton, get_conditions_from_spendbundle
7
6
  from chia_rs.sized_bytes import bytes32
8
7
  from chia_rs.sized_ints import uint32, uint64
9
8
 
10
- from chia.consensus.condition_costs import ConditionCost
11
9
  from chia.types.blockchain_format.coin import Coin
12
- from chia.types.blockchain_format.program import run_mempool_with_cost
13
10
  from chia.types.blockchain_format.serialized_program import SerializedProgram
14
11
  from chia.types.internal_mempool_item import InternalMempoolItem
15
12
  from chia.types.mempool_item import BundleCoinSpend, UnspentLineageInfo
16
13
  from chia.util.errors import Err
17
14
 
18
15
 
19
- @dataclasses.dataclass(frozen=True)
20
- class EligibilityAndAdditions:
21
- is_eligible_for_dedup: bool
22
- spend_additions: list[Coin]
23
- # This is the spend puzzle hash. It's set to `None` if the spend is not
24
- # eligible for fast forward. When the spend is eligible, we use its puzzle
25
- # hash to check if the singleton has an unspent coin or not.
26
- ff_puzzle_hash: Optional[bytes32] = None
27
-
28
-
29
- def run_for_cost(
30
- puzzle_reveal: SerializedProgram, solution: SerializedProgram, additions_count: int, max_cost: int
31
- ) -> uint64:
32
- create_coins_cost = additions_count * ConditionCost.CREATE_COIN.value
33
- clvm_cost, _ = run_mempool_with_cost(puzzle_reveal, max_cost, solution)
34
- saved_cost = uint64(clvm_cost + create_coins_cost)
35
- return saved_cost
36
-
37
-
38
16
  @dataclasses.dataclass(frozen=True)
39
17
  class DedupCoinSpend:
40
18
  solution: SerializedProgram
41
- cost: Optional[uint64]
19
+ cost: uint64
42
20
 
43
21
 
44
22
  def set_next_singleton_version(
@@ -138,7 +116,7 @@ class IdenticalSpendDedup:
138
116
  deduplication_spends: dict[bytes32, DedupCoinSpend] = dataclasses.field(default_factory=dict)
139
117
 
140
118
  def get_deduplication_info(
141
- self, *, bundle_coin_spends: dict[bytes32, BundleCoinSpend], max_cost: int
119
+ self, *, bundle_coin_spends: dict[bytes32, BundleCoinSpend]
142
120
  ) -> tuple[list[CoinSpend], uint64, list[Coin]]:
143
121
  """
144
122
  Checks all coin spends of a mempool item for deduplication eligibility and
@@ -147,7 +125,6 @@ class IdenticalSpendDedup:
147
125
 
148
126
  Args:
149
127
  bundle_coin_spends: the mempool item's coin spends data
150
- max_cost: the maximum limit when running for cost
151
128
 
152
129
  Returns:
153
130
  list[CoinSpend]: list of unique coin spends in this mempool item
@@ -156,7 +133,7 @@ class IdenticalSpendDedup:
156
133
 
157
134
  Raises:
158
135
  ValueError to skip the mempool item we're currently in, if it's
159
- attempting to spend an eligible coin with a different solution than the
136
+ attempting to spend an dedup coin with a different solution than the
160
137
  one we're already deduplicating on.
161
138
  """
162
139
  cost_saving = 0
@@ -175,45 +152,16 @@ class IdenticalSpendDedup:
175
152
  if dedup_coin_spend is None:
176
153
  # We didn't process an item with this coin before. If we end up including
177
154
  # this item, add this pair to deduplication_spends
178
- new_dedup_spends[coin_id] = DedupCoinSpend(spend_data.coin_spend.solution, None)
155
+ new_dedup_spends[coin_id] = DedupCoinSpend(spend_data.coin_spend.solution, spend_data.cost)
179
156
  unique_coin_spends.append(spend_data.coin_spend)
180
157
  unique_additions.extend(spend_data.additions)
181
158
  continue
182
159
  # See if the solution was identical
183
- current_solution, duplicate_cost = dataclasses.astuple(dedup_coin_spend)
184
- if current_solution != spend_data.coin_spend.solution:
185
- # It wasn't, so let's skip this whole item because it's relying on
186
- # spending this coin with a different solution and that would
187
- # conflict with the coin spends that we're deduplicating already
188
- # NOTE: We can miss an opportunity to deduplicate on other solutions
189
- # even if they end up saving more cost, as we're going for the first
190
- # solution we see from the relatively highest FPC item, to avoid
191
- # severe performance and/or time-complexity impact
160
+ if dedup_coin_spend.solution != spend_data.coin_spend.solution:
161
+ # This should not happen. DEDUP spends of the same coin with
162
+ # different solutions are rejected in check_removals().
192
163
  raise SkipDedup("Solution is different from what we're deduplicating on")
193
- # Let's calculate the saved cost if we never did that before
194
- if duplicate_cost is None:
195
- # See first if this mempool item had this cost computed before
196
- # This can happen if this item didn't get included in the previous block
197
- spend_cost = spend_data.cost
198
- if spend_cost is None:
199
- spend_cost = run_for_cost(
200
- puzzle_reveal=spend_data.coin_spend.puzzle_reveal,
201
- solution=spend_data.coin_spend.solution,
202
- additions_count=len(spend_data.additions),
203
- max_cost=max_cost,
204
- )
205
- # Update this mempool item's coin spends map
206
- bundle_coin_spends[coin_id] = BundleCoinSpend(
207
- coin_spend=spend_data.coin_spend,
208
- eligible_for_dedup=spend_data.eligible_for_dedup,
209
- eligible_for_fast_forward=spend_data.eligible_for_fast_forward,
210
- additions=spend_data.additions,
211
- cost=spend_cost,
212
- )
213
- duplicate_cost = spend_cost
214
- # If we end up including this item, update this entry's cost
215
- new_dedup_spends[coin_id] = DedupCoinSpend(current_solution, duplicate_cost)
216
- cost_saving += duplicate_cost
164
+ cost_saving += dedup_coin_spend.cost
217
165
  # Update the eligible coin spends data
218
166
  self.deduplication_spends.update(new_dedup_spends)
219
167
  return unique_coin_spends, uint64(cost_saving), unique_additions
@@ -248,7 +196,7 @@ class SingletonFastForward:
248
196
  new_bundle_coin_spends = {}
249
197
  fast_forwarded_spends = 0
250
198
  for coin_id, spend_data in mempool_item.bundle_coin_spends.items():
251
- if not spend_data.eligible_for_fast_forward:
199
+ if not spend_data.supports_fast_forward:
252
200
  # Nothing to do for this spend, moving on
253
201
  new_coin_spends.append(spend_data.coin_spend)
254
202
  new_bundle_coin_spends[coin_id] = spend_data
@@ -262,8 +210,7 @@ class SingletonFastForward:
262
210
  unspent_lineage_info = self.fast_forward_spends.get(spend_data.coin_spend.coin.puzzle_hash)
263
211
  if unspent_lineage_info is None:
264
212
  # We didn't, so let's check the item's latest lineage info
265
- if spend_data.latest_singleton_lineage is None:
266
- raise ValueError("Cannot proceed with singleton spend fast forward.")
213
+ assert spend_data.latest_singleton_lineage is not None
267
214
  unspent_lineage_info = spend_data.latest_singleton_lineage
268
215
  # See if we're the most recent version
269
216
  if unspent_lineage_info.coin_id == coin_id:
@@ -287,9 +234,9 @@ class SingletonFastForward:
287
234
  new_bundle_coin_spends[new_coin_spend.coin.name()] = BundleCoinSpend(
288
235
  coin_spend=new_coin_spend,
289
236
  eligible_for_dedup=spend_data.eligible_for_dedup,
290
- eligible_for_fast_forward=spend_data.eligible_for_fast_forward,
291
237
  additions=patched_additions,
292
238
  cost=spend_data.cost,
239
+ latest_singleton_lineage=self.fast_forward_spends.get(spend_data.coin_spend.coin.puzzle_hash),
293
240
  )
294
241
  # Update the list of coins spends that will make the new fast
295
242
  # forward spend bundle
@@ -310,9 +257,9 @@ class SingletonFastForward:
310
257
  new_bundle_coin_spends[new_coin_spend.coin.name()] = BundleCoinSpend(
311
258
  coin_spend=new_coin_spend,
312
259
  eligible_for_dedup=spend_data.eligible_for_dedup,
313
- eligible_for_fast_forward=spend_data.eligible_for_fast_forward,
314
260
  additions=patched_additions,
315
261
  cost=spend_data.cost,
262
+ latest_singleton_lineage=self.fast_forward_spends.get(spend_data.coin_spend.coin.puzzle_hash),
316
263
  )
317
264
  # Update the list of coins spends that make the new fast forward bundle
318
265
  new_coin_spends.append(new_coin_spend)
@@ -321,19 +268,17 @@ class SingletonFastForward:
321
268
  # This item doesn't have any fast forward coins, nothing to do here
322
269
  return new_bundle_coin_spends
323
270
  # Update the mempool item after validating the new spend bundle
324
- new_sb = SpendBundle(
325
- coin_spends=new_coin_spends, aggregated_signature=mempool_item.spend_bundle.aggregated_signature
326
- )
271
+ new_sb = SpendBundle(coin_spends=new_coin_spends, aggregated_signature=mempool_item.aggregated_signature)
327
272
  assert mempool_item.conds is not None
328
273
  try:
329
274
  # Run the new spend bundle to make sure it remains valid. What we
330
275
  # care about here is whether this call throws or not.
331
276
  get_conditions_from_spendbundle(new_sb, mempool_item.conds.cost, constants, height)
332
- # get_conditions_from_spendbundle raises a TypeError with an error code
333
- except TypeError as e:
277
+ # get_conditions_from_spendbundle raises a ValueError with an error code
278
+ except ValueError as e:
334
279
  # Convert that to a ValidationError
335
- if len(e.args) > 0:
336
- error = Err(e.args[0])
280
+ if len(e.args) > 1:
281
+ error = Err(e.args[1])
337
282
  raise ValueError(f"Mempool item became invalid after singleton fast forward with error {error}.")
338
283
  else:
339
284
  raise ValueError(
@@ -39,6 +39,7 @@ from packaging.version import Version
39
39
  from chia.consensus.augmented_chain import AugmentedBlockchain
40
40
  from chia.consensus.block_body_validation import ForkInfo
41
41
  from chia.consensus.block_creation import unfinished_block_to_full_block
42
+ from chia.consensus.block_height_map import BlockHeightMap
42
43
  from chia.consensus.blockchain import AddBlockResult, Blockchain, BlockchainMutexPriority, StateChangeSummary
43
44
  from chia.consensus.blockchain_interface import BlockchainInterface
44
45
  from chia.consensus.coin_store_protocol import CoinStoreProtocol
@@ -49,7 +50,6 @@ from chia.consensus.make_sub_epoch_summary import next_sub_epoch_summary
49
50
  from chia.consensus.multiprocess_validation import PreValidationResult, pre_validate_block
50
51
  from chia.consensus.pot_iterations import calculate_sp_iters
51
52
  from chia.consensus.signage_point import SignagePoint
52
- from chia.full_node.block_height_map import BlockHeightMap
53
53
  from chia.full_node.block_store import BlockStore
54
54
  from chia.full_node.check_fork_next_block import check_fork_next_block
55
55
  from chia.full_node.coin_store import CoinStore
@@ -58,7 +58,7 @@ from chia.full_node.full_node_store import FullNodeStore, FullNodeStorePeakResul
58
58
  from chia.full_node.hint_management import get_hints_and_subscription_coin_ids
59
59
  from chia.full_node.hint_store import HintStore
60
60
  from chia.full_node.mempool import MempoolRemoveInfo
61
- from chia.full_node.mempool_manager import MempoolManager, NewPeakItem
61
+ from chia.full_node.mempool_manager import MempoolManager
62
62
  from chia.full_node.subscriptions import PeerSubscriptions, peers_for_spend_bundle
63
63
  from chia.full_node.sync_store import Peak, SyncStore
64
64
  from chia.full_node.tx_processing_queue import TransactionQueue, TransactionQueueEntry
@@ -68,6 +68,7 @@ from chia.protocols.farmer_protocol import SignagePointSourceData, SPSubSlotSour
68
68
  from chia.protocols.full_node_protocol import RequestBlocks, RespondBlock, RespondBlocks, RespondSignagePoint
69
69
  from chia.protocols.outbound_message import Message, NodeType, make_msg
70
70
  from chia.protocols.protocol_message_types import ProtocolMessageTypes
71
+ from chia.protocols.protocol_timing import CONSENSUS_ERROR_BAN_SECONDS
71
72
  from chia.protocols.shared_protocol import Capability
72
73
  from chia.protocols.wallet_protocol import CoinStateUpdate, RemovedMempoolItem
73
74
  from chia.rpc.rpc_server import StateChangedProtocol
@@ -99,7 +100,8 @@ from chia.util.task_referencer import create_referenced_task
99
100
  # This is the result of calling peak_post_processing, which is then fed into peak_post_processing_2
100
101
  @dataclasses.dataclass
101
102
  class PeakPostProcessingResult:
102
- mempool_peak_result: list[NewPeakItem] # The new items from calling MempoolManager.new_peak
103
+ # The added transactions IDs from calling MempoolManager.new_peak
104
+ mempool_peak_added_tx_ids: list[bytes32]
103
105
  mempool_removals: list[MempoolRemoveInfo] # The removed mempool items from calling MempoolManager.new_peak
104
106
  fns_peak_result: FullNodeStorePeakResult # The result of calling FullNodeStore.new_peak
105
107
  hints: list[tuple[bytes32, bytes]] # The hints added to the DB
@@ -321,7 +323,8 @@ class FullNode:
321
323
  )
322
324
  async with self.blockchain.priority_mutex.acquire(priority=BlockchainMutexPriority.high):
323
325
  pending_tx = await self.mempool_manager.new_peak(self.blockchain.get_tx_peak(), None)
324
- assert len(pending_tx.items) == 0 # no pending transactions when starting up
326
+ # No pending transactions when starting up
327
+ assert len(pending_tx.spend_bundle_ids) == 0
325
328
 
326
329
  full_peak: Optional[FullBlock] = await self.blockchain.get_full_peak()
327
330
  assert full_peak is not None
@@ -500,11 +503,16 @@ class FullNode:
500
503
  except asyncio.CancelledError:
501
504
  error_stack = traceback.format_exc()
502
505
  self.log.debug(f"Cancelling _handle_one_transaction, closing: {error_stack}")
506
+ except ValidationError as e:
507
+ self.log.exception("ValidationError in _handle_one_transaction, closing")
508
+ if peer is not None:
509
+ await peer.close(CONSENSUS_ERROR_BAN_SECONDS)
510
+ entry.done.set((MempoolInclusionStatus.FAILED, e.code))
503
511
  except Exception:
504
- error_stack = traceback.format_exc()
505
- self.log.error(f"Error in _handle_one_transaction, closing: {error_stack}")
512
+ self.log.exception("Error in _handle_one_transaction, closing")
506
513
  if peer is not None:
507
- await peer.close()
514
+ await peer.close(CONSENSUS_ERROR_BAN_SECONDS)
515
+ entry.done.set((MempoolInclusionStatus.FAILED, Err.UNKNOWN))
508
516
  finally:
509
517
  self.add_transaction_semaphore.release()
510
518
 
@@ -887,7 +895,7 @@ class FullNode:
887
895
 
888
896
  async def synced(self, block_is_current_at: Optional[uint64] = None) -> bool:
889
897
  if block_is_current_at is None:
890
- block_is_current_at = uint64(int(time.time() - 60 * 7))
898
+ block_is_current_at = uint64(time.time() - 60 * 7)
891
899
  if "simulator" in str(self.config.get("selected_network")):
892
900
  return True # sim is always synced because it has no peers
893
901
  curr: Optional[BlockRecord] = self.blockchain.get_peak()
@@ -1090,13 +1098,13 @@ class FullNode:
1090
1098
  response = await weight_proof_peer.call_api(FullNodeAPI.request_proof_of_weight, request, timeout=wp_timeout)
1091
1099
  # Disconnect from this peer, because they have not behaved properly
1092
1100
  if response is None or not isinstance(response, full_node_protocol.RespondProofOfWeight):
1093
- await weight_proof_peer.close(600)
1101
+ await weight_proof_peer.close(CONSENSUS_ERROR_BAN_SECONDS)
1094
1102
  raise RuntimeError(f"Weight proof did not arrive in time from peer: {weight_proof_peer.peer_info.host}")
1095
1103
  if response.wp.recent_chain_data[-1].reward_chain_block.height != peak_height:
1096
- await weight_proof_peer.close(600)
1104
+ await weight_proof_peer.close(CONSENSUS_ERROR_BAN_SECONDS)
1097
1105
  raise RuntimeError(f"Weight proof had the wrong height: {weight_proof_peer.peer_info.host}")
1098
1106
  if response.wp.recent_chain_data[-1].reward_chain_block.weight != peak_weight:
1099
- await weight_proof_peer.close(600)
1107
+ await weight_proof_peer.close(CONSENSUS_ERROR_BAN_SECONDS)
1100
1108
  raise RuntimeError(f"Weight proof had the wrong weight: {weight_proof_peer.peer_info.host}")
1101
1109
  if self.in_bad_peak_cache(response.wp):
1102
1110
  raise ValueError("Weight proof failed bad peak cache validation")
@@ -1111,10 +1119,10 @@ class FullNode:
1111
1119
  try:
1112
1120
  validated, fork_point, summaries = await self.weight_proof_handler.validate_weight_proof(response.wp)
1113
1121
  except Exception as e:
1114
- await weight_proof_peer.close(600)
1122
+ await weight_proof_peer.close(CONSENSUS_ERROR_BAN_SECONDS)
1115
1123
  raise ValueError(f"Weight proof validation threw an error {e}")
1116
1124
  if not validated:
1117
- await weight_proof_peer.close(600)
1125
+ await weight_proof_peer.close(CONSENSUS_ERROR_BAN_SECONDS)
1118
1126
  raise ValueError("Weight proof validation failed")
1119
1127
  self.log.info(f"Re-checked peers: total of {len(peers_with_peak)} peers with peak {peak_height}")
1120
1128
  self.sync_store.set_sync_mode(True)
@@ -1376,7 +1384,7 @@ class FullNode:
1376
1384
  vs,
1377
1385
  )
1378
1386
  if err is not None:
1379
- await peer.close(600)
1387
+ await peer.close(CONSENSUS_ERROR_BAN_SECONDS)
1380
1388
  raise ValueError(f"Failed to validate block batch {start_height} to {end_height}: {err}")
1381
1389
  if end_height - block_rate_height > 100:
1382
1390
  now = time.monotonic()
@@ -1623,6 +1631,7 @@ class FullNode:
1623
1631
  for i, block in enumerate(blocks_to_validate):
1624
1632
  header_hash = block.header_hash
1625
1633
  assert vs.prev_ses_block is None or vs.prev_ses_block.height < block.height
1634
+ assert pre_validation_results[i].error is None
1626
1635
  assert pre_validation_results[i].required_iters is not None
1627
1636
  state_change_summary: Optional[StateChangeSummary]
1628
1637
  # when adding blocks in batches, we won't have any overlapping
@@ -1938,7 +1947,7 @@ class FullNode:
1938
1947
  mempool_new_peak_result = await self.mempool_manager.new_peak(self.blockchain.get_tx_peak(), spent_coins)
1939
1948
 
1940
1949
  return PeakPostProcessingResult(
1941
- mempool_new_peak_result.items,
1950
+ mempool_new_peak_result.spend_bundle_ids,
1942
1951
  mempool_new_peak_result.removals,
1943
1952
  fns_peak_result,
1944
1953
  hints_to_add,
@@ -1960,9 +1969,9 @@ class FullNode:
1960
1969
  record = state_change_summary.peak
1961
1970
  for signage_point in ppp_result.signage_points:
1962
1971
  await self.signage_point_post_processing(*signage_point)
1963
- for new_peak_item in ppp_result.mempool_peak_result:
1964
- self.log.debug(f"Added transaction to mempool: {new_peak_item.transaction_id}")
1965
- mempool_item = self.mempool_manager.get_mempool_item(new_peak_item.transaction_id)
1972
+ for transaction_id in ppp_result.mempool_peak_added_tx_ids:
1973
+ self.log.debug(f"Added transaction to mempool: {transaction_id}")
1974
+ mempool_item = self.mempool_manager.get_mempool_item(transaction_id)
1966
1975
  assert mempool_item is not None
1967
1976
  await self.broadcast_added_tx(mempool_item)
1968
1977
 
@@ -2764,66 +2773,56 @@ class FullNode:
2764
2773
  return MempoolInclusionStatus.SUCCESS, None
2765
2774
  if self.mempool_manager.seen(spend_name):
2766
2775
  return MempoolInclusionStatus.FAILED, Err.ALREADY_INCLUDING_TRANSACTION
2767
- self.mempool_manager.add_and_maybe_pop_seen(spend_name)
2768
2776
  self.log.debug(f"Processing transaction: {spend_name}")
2769
2777
  # Ignore if syncing or if we have not yet received a block
2770
2778
  # the mempool must have a peak to validate transactions
2771
2779
  if self.sync_store.get_sync_mode() or self.mempool_manager.peak is None:
2772
- status = MempoolInclusionStatus.FAILED
2773
- error: Optional[Err] = Err.NO_TRANSACTIONS_WHILE_SYNCING
2774
- self.mempool_manager.remove_seen(spend_name)
2775
- else:
2780
+ return MempoolInclusionStatus.FAILED, Err.NO_TRANSACTIONS_WHILE_SYNCING
2781
+
2782
+ cost_result = await self.mempool_manager.pre_validate_spendbundle(transaction, spend_name, self._bls_cache)
2783
+
2784
+ self.mempool_manager.add_and_maybe_pop_seen(spend_name)
2785
+
2786
+ if self.config.get("log_mempool", False): # pragma: no cover
2776
2787
  try:
2777
- cost_result = await self.mempool_manager.pre_validate_spendbundle(
2778
- transaction, spend_name, self._bls_cache
2779
- )
2780
- except ValidationError as e:
2781
- self.mempool_manager.remove_seen(spend_name)
2782
- return MempoolInclusionStatus.FAILED, e.code
2788
+ mempool_dir = path_from_root(self.root_path, "mempool-log") / f"{self.blockchain.get_peak_height()}"
2789
+ mempool_dir.mkdir(parents=True, exist_ok=True)
2790
+ with open(mempool_dir / f"{spend_name}.bundle", "wb+") as f:
2791
+ f.write(bytes(transaction))
2783
2792
  except Exception:
2784
- self.mempool_manager.remove_seen(spend_name)
2785
- raise
2793
+ self.log.exception(f"Failed to log mempool item: {spend_name}")
2786
2794
 
2787
- if self.config.get("log_mempool", False): # pragma: no cover
2788
- try:
2789
- mempool_dir = path_from_root(self.root_path, "mempool-log") / f"{self.blockchain.get_peak_height()}"
2790
- mempool_dir.mkdir(parents=True, exist_ok=True)
2791
- with open(mempool_dir / f"{spend_name}.bundle", "wb+") as f:
2792
- f.write(bytes(transaction))
2793
- except Exception:
2794
- self.log.exception(f"Failed to log mempool item: {spend_name}")
2795
-
2796
- async with self.blockchain.priority_mutex.acquire(priority=BlockchainMutexPriority.low):
2797
- if self.mempool_manager.get_spendbundle(spend_name) is not None:
2798
- self.mempool_manager.remove_seen(spend_name)
2799
- return MempoolInclusionStatus.SUCCESS, None
2800
- if self.mempool_manager.peak is None:
2801
- return MempoolInclusionStatus.FAILED, Err.MEMPOOL_NOT_INITIALIZED
2802
- info = await self.mempool_manager.add_spend_bundle(
2803
- transaction, cost_result, spend_name, self.mempool_manager.peak.height
2804
- )
2805
- status = info.status
2806
- error = info.error
2807
- if status == MempoolInclusionStatus.SUCCESS:
2808
- self.log.debug(
2809
- f"Added transaction to mempool: {spend_name} mempool size: "
2810
- f"{self.mempool_manager.mempool.total_mempool_cost()} normalized "
2811
- f"{self.mempool_manager.mempool.total_mempool_cost() / 5000000}"
2812
- )
2795
+ async with self.blockchain.priority_mutex.acquire(priority=BlockchainMutexPriority.low):
2796
+ if self.mempool_manager.get_spendbundle(spend_name) is not None:
2797
+ self.mempool_manager.remove_seen(spend_name)
2798
+ return MempoolInclusionStatus.SUCCESS, None
2799
+ if self.mempool_manager.peak is None:
2800
+ return MempoolInclusionStatus.FAILED, Err.MEMPOOL_NOT_INITIALIZED
2801
+ info = await self.mempool_manager.add_spend_bundle(
2802
+ transaction, cost_result, spend_name, self.mempool_manager.peak.height
2803
+ )
2804
+ status = info.status
2805
+ error = info.error
2806
+ if status == MempoolInclusionStatus.SUCCESS:
2807
+ self.log.debug(
2808
+ f"Added transaction to mempool: {spend_name} mempool size: "
2809
+ f"{self.mempool_manager.mempool.total_mempool_cost()} normalized "
2810
+ f"{self.mempool_manager.mempool.total_mempool_cost() / 5000000}"
2811
+ )
2813
2812
 
2814
- # Only broadcast successful transactions, not pending ones. Otherwise it's a DOS
2815
- # vector.
2816
- mempool_item = self.mempool_manager.get_mempool_item(spend_name)
2817
- assert mempool_item is not None
2818
- await self.broadcast_removed_tx(info.removals)
2819
- await self.broadcast_added_tx(mempool_item, current_peer=peer)
2813
+ # Only broadcast successful transactions, not pending ones. Otherwise it's a DOS
2814
+ # vector.
2815
+ mempool_item = self.mempool_manager.get_mempool_item(spend_name)
2816
+ assert mempool_item is not None
2817
+ await self.broadcast_removed_tx(info.removals)
2818
+ await self.broadcast_added_tx(mempool_item, current_peer=peer)
2820
2819
 
2821
- if self.simulator_transaction_callback is not None: # callback
2822
- await self.simulator_transaction_callback(spend_name)
2820
+ if self.simulator_transaction_callback is not None: # callback
2821
+ await self.simulator_transaction_callback(spend_name)
2823
2822
 
2824
- else:
2825
- self.mempool_manager.remove_seen(spend_name)
2826
- self.log.debug(f"Wasn't able to add transaction with id {spend_name}, status {status} error: {error}")
2823
+ else:
2824
+ self.mempool_manager.remove_seen(spend_name)
2825
+ self.log.debug(f"Wasn't able to add transaction with id {spend_name}, status {status} error: {error}")
2827
2826
  return status, error
2828
2827
 
2829
2828
  async def broadcast_added_tx(
@@ -2904,7 +2903,7 @@ class FullNode:
2904
2903
  removals_to_send: dict[bytes32, list[RemovedMempoolItem]] = dict()
2905
2904
 
2906
2905
  for removal_info in mempool_removals:
2907
- for internal_mempool_item in removal_info.items:
2906
+ for transaction_id, internal_mempool_item in removal_info.items.items():
2908
2907
  conds = internal_mempool_item.conds
2909
2908
  assert conds is not None
2910
2909
 
@@ -2916,8 +2915,6 @@ class FullNode:
2916
2915
  if len(peer_ids) == 0:
2917
2916
  continue
2918
2917
 
2919
- transaction_id = internal_mempool_item.spend_bundle.name()
2920
-
2921
2918
  self.log.debug(f"Broadcasting removed transaction {transaction_id} to wallet peers {peer_ids}")
2922
2919
 
2923
2920
  for peer_id in peer_ids: