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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. chia/_tests/blockchain/blockchain_test_utils.py +6 -7
  2. chia/_tests/blockchain/test_augmented_chain.py +4 -3
  3. chia/_tests/blockchain/test_blockchain.py +10 -5
  4. chia/_tests/clvm/coin_store.py +1 -1
  5. chia/_tests/cmds/cmd_test_utils.py +84 -97
  6. chia/_tests/cmds/test_dev_gh.py +1 -1
  7. chia/_tests/cmds/test_farm_cmd.py +56 -2
  8. chia/_tests/cmds/wallet/test_consts.py +3 -1
  9. chia/_tests/cmds/wallet/test_did.py +3 -8
  10. chia/_tests/cmds/wallet/test_nft.py +6 -6
  11. chia/_tests/cmds/wallet/test_notifications.py +39 -21
  12. chia/_tests/cmds/wallet/test_vcs.py +2 -1
  13. chia/_tests/cmds/wallet/test_wallet.py +160 -136
  14. chia/_tests/conftest.py +51 -26
  15. chia/_tests/core/cmds/test_wallet.py +4 -3
  16. chia/_tests/core/consensus/test_pot_iterations.py +71 -24
  17. chia/_tests/core/custom_types/test_proof_of_space.py +60 -30
  18. chia/_tests/core/custom_types/test_spend_bundle.py +1 -4
  19. chia/_tests/core/data_layer/conftest.py +7 -2
  20. chia/_tests/core/data_layer/old_format/__init__.py +0 -0
  21. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-005876c1cdc4d5f1726551b207b9f63efc9cd2f72df80a3a26a1ba73d40d6745-delta-23-v1.0.dat +0 -0
  22. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-005876c1cdc4d5f1726551b207b9f63efc9cd2f72df80a3a26a1ba73d40d6745-full-23-v1.0.dat +0 -0
  23. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-01b36e72a975cdc00d6514eea81668d19e8ea3150217ae98cb3361688a016fab-delta-9-v1.0.dat +0 -0
  24. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-01b36e72a975cdc00d6514eea81668d19e8ea3150217ae98cb3361688a016fab-full-9-v1.0.dat +0 -0
  25. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-06147c3b12d73e9b83b686a8c10b4a36a513c8a93c0ff99ae197f06326278be9-delta-5-v1.0.dat +0 -0
  26. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-06147c3b12d73e9b83b686a8c10b4a36a513c8a93c0ff99ae197f06326278be9-full-5-v1.0.dat +0 -0
  27. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-073c051a5934ad3b8db39eee2189e4300e55f48aaa17ff4ae30eeae088ff544a-delta-22-v1.0.dat +0 -0
  28. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-073c051a5934ad3b8db39eee2189e4300e55f48aaa17ff4ae30eeae088ff544a-full-22-v1.0.dat +0 -0
  29. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-0cc077559b9c7b4aefe8f8f591c195e0779bebdf89f2ad8285a00ea5f859d965-delta-1-v1.0.dat +0 -0
  30. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-0cc077559b9c7b4aefe8f8f591c195e0779bebdf89f2ad8285a00ea5f859d965-full-1-v1.0.dat +0 -0
  31. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-16377275567b723b20936d3f1ec0a2fd83f6ac379b922351a5e4c54949069f3b-delta-2-v1.0.dat +0 -0
  32. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-16377275567b723b20936d3f1ec0a2fd83f6ac379b922351a5e4c54949069f3b-full-2-v1.0.dat +0 -0
  33. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-1cb824a7a5f02cd30ac6c38e8f6216780d9bfa2d24811d282a368dcd541438a7-delta-29-v1.0.dat +0 -0
  34. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-1cb824a7a5f02cd30ac6c38e8f6216780d9bfa2d24811d282a368dcd541438a7-full-29-v1.0.dat +0 -0
  35. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-27b89dc4809ebc5a3b87757d35e95e2761d978cf121e44fa2773a5c06e4cc7b5-delta-28-v1.0.dat +0 -0
  36. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-27b89dc4809ebc5a3b87757d35e95e2761d978cf121e44fa2773a5c06e4cc7b5-full-28-v1.0.dat +0 -0
  37. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-28a6b7c134abfaeb0ab58a018313f6c87a61a40a4d9ec9bedf53aa1d12f3ee37-delta-7-v1.0.dat +0 -0
  38. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-28a6b7c134abfaeb0ab58a018313f6c87a61a40a4d9ec9bedf53aa1d12f3ee37-full-7-v1.0.dat +0 -0
  39. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-30a6bfe7cecbeda259a295dc6de3a436357f52388c3b03d86901e7da68565aeb-delta-19-v1.0.dat +0 -0
  40. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-30a6bfe7cecbeda259a295dc6de3a436357f52388c3b03d86901e7da68565aeb-full-19-v1.0.dat +0 -0
  41. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-343a2bf9add798e3ac2e6a571823cf9fa7e8a1bed532143354ead2648bd036ef-delta-10-v1.0.dat +0 -0
  42. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-343a2bf9add798e3ac2e6a571823cf9fa7e8a1bed532143354ead2648bd036ef-full-10-v1.0.dat +0 -0
  43. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-4d90efbc1fb3df324193831ea4a57dd5e10e67d9653343eb18d178272adb0447-delta-17-v1.0.dat +0 -0
  44. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-4d90efbc1fb3df324193831ea4a57dd5e10e67d9653343eb18d178272adb0447-full-17-v1.0.dat +0 -0
  45. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-4dd2ea099e91635c441f40b36d3f84078a2d818d2dc601c7278e72cbdfe3eca8-delta-20-v1.0.dat +0 -0
  46. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-4dd2ea099e91635c441f40b36d3f84078a2d818d2dc601c7278e72cbdfe3eca8-full-20-v1.0.dat +0 -0
  47. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-509effbdca78639023b933ce6c08a0465fb247e1cd5329e9e9c553940e4b6e46-delta-31-v1.0.dat +0 -0
  48. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-509effbdca78639023b933ce6c08a0465fb247e1cd5329e9e9c553940e4b6e46-full-31-v1.0.dat +0 -0
  49. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-5379a4d9ff29c29d1ef0906d22e82c52472753d31806189ab813c43365341b78-delta-40-v1.0.dat +0 -0
  50. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-5379a4d9ff29c29d1ef0906d22e82c52472753d31806189ab813c43365341b78-full-40-v1.0.dat +0 -0
  51. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-55908eda5686a8f89e4c50672cbe893ec1734fb23449dc03325efe7c414f9aa4-delta-49-v1.0.dat +0 -0
  52. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-55908eda5686a8f89e4c50672cbe893ec1734fb23449dc03325efe7c414f9aa4-full-49-v1.0.dat +0 -0
  53. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-57cc2691fb1fb986c99a58bcb0e029d0cd0cff41553d703147c54196d7d9ca63-delta-14-v1.0.dat +0 -0
  54. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-57cc2691fb1fb986c99a58bcb0e029d0cd0cff41553d703147c54196d7d9ca63-full-14-v1.0.dat +0 -0
  55. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-5943bf8ae4f5e59969d8570e4f40a8223299febdcfbcf188b3b3e2ab11044e18-delta-34-v1.0.dat +0 -0
  56. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-5943bf8ae4f5e59969d8570e4f40a8223299febdcfbcf188b3b3e2ab11044e18-full-34-v1.0.dat +0 -0
  57. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6518527b7c939bee60ce6b024cbe90d3b9d8913c56b8ce11a4df5da7ff7db1c8-delta-8-v1.0.dat +0 -0
  58. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6518527b7c939bee60ce6b024cbe90d3b9d8913c56b8ce11a4df5da7ff7db1c8-full-8-v1.0.dat +0 -0
  59. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-66ff26a26620379e14a7c91252d27ee4dbe06ad69a3a390a88642fe757f2b288-delta-45-v1.0.dat +0 -0
  60. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-66ff26a26620379e14a7c91252d27ee4dbe06ad69a3a390a88642fe757f2b288-full-45-v1.0.dat +0 -0
  61. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6bd0a508ee2c4afbe9d4daa811139fd6e54e7f4e16850cbce999fa30f8bdccd2-delta-6-v1.0.dat +0 -0
  62. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6bd0a508ee2c4afbe9d4daa811139fd6e54e7f4e16850cbce999fa30f8bdccd2-full-6-v1.0.dat +0 -0
  63. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6ce850d0d77ca743fcc2fc792747472e5d2c1c0813aa43abbb370554428fc897-delta-48-v1.0.dat +0 -0
  64. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6ce850d0d77ca743fcc2fc792747472e5d2c1c0813aa43abbb370554428fc897-full-48-v1.0.dat +0 -0
  65. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6eb4ca2e1552b156c5969396b49070eb08ad6c96b347359387519be59f7ccaed-delta-26-v1.0.dat +0 -0
  66. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-6eb4ca2e1552b156c5969396b49070eb08ad6c96b347359387519be59f7ccaed-full-26-v1.0.dat +0 -0
  67. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-71c797fb7592d3f0a5a20c79ab8497ddaa0fd9ec17712e109d25c91b3f3c76e5-delta-3-v1.0.dat +0 -0
  68. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-71c797fb7592d3f0a5a20c79ab8497ddaa0fd9ec17712e109d25c91b3f3c76e5-full-3-v1.0.dat +0 -0
  69. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-73357026053d5a4969e7a6b9aeeef91c14cc6d5f32fc700fe6d21d2a1b22496c-delta-25-v1.0.dat +0 -0
  70. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-73357026053d5a4969e7a6b9aeeef91c14cc6d5f32fc700fe6d21d2a1b22496c-full-25-v1.0.dat +0 -0
  71. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-7c897e5c46e834ced65bde7de87716acfaa5dffbdb30b5cd9377d8c319df2034-delta-35-v1.0.dat +0 -0
  72. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-7c897e5c46e834ced65bde7de87716acfaa5dffbdb30b5cd9377d8c319df2034-full-35-v1.0.dat +0 -0
  73. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-87b8394d80d08117a5a1cd04ed8a682564eab7197a2c090159863591b5108874-delta-4-v1.0.dat +0 -0
  74. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-87b8394d80d08117a5a1cd04ed8a682564eab7197a2c090159863591b5108874-full-4-v1.0.dat +0 -0
  75. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-89eb40b9cc0921c5f5c3feb20927c13a9ada5760f82d219dcee153b7d400165c-delta-41-v1.0.dat +0 -0
  76. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-89eb40b9cc0921c5f5c3feb20927c13a9ada5760f82d219dcee153b7d400165c-full-41-v1.0.dat +0 -0
  77. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-8b649433156b8c924436cdec9c6de26106fd6f73a0528570f48748f7b40d7f8a-delta-21-v1.0.dat +0 -0
  78. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-8b649433156b8c924436cdec9c6de26106fd6f73a0528570f48748f7b40d7f8a-full-21-v1.0.dat +0 -0
  79. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-8d364023a0834c8c3077e236a465493acbf488e4f9d1f4c6cc230343c10a8f7d-delta-42-v1.0.dat +0 -0
  80. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-8d364023a0834c8c3077e236a465493acbf488e4f9d1f4c6cc230343c10a8f7d-full-42-v1.0.dat +0 -0
  81. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-925689e24a3d98d98676d816cdd8b73e7b2df057d9d4503da9b27bf91d79666c-delta-38-v1.0.dat +0 -0
  82. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-925689e24a3d98d98676d816cdd8b73e7b2df057d9d4503da9b27bf91d79666c-full-38-v1.0.dat +0 -0
  83. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-937be3d428b19f521be4f98faecc3307ae11ee731c76992f417fa4268d13859e-delta-11-v1.0.dat +0 -0
  84. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-937be3d428b19f521be4f98faecc3307ae11ee731c76992f417fa4268d13859e-full-11-v1.0.dat +0 -0
  85. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-97f34af499b79e2111fc296a598fc9654c2467ea038dfea41fd58241fb3642de-delta-32-v1.0.dat +0 -0
  86. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-97f34af499b79e2111fc296a598fc9654c2467ea038dfea41fd58241fb3642de-full-32-v1.0.dat +0 -0
  87. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-9d1b737243b8a1d0022f2b36ac53333c6280354a74d77f2a3642dcab35204e59-delta-33-v1.0.dat +0 -0
  88. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-9d1b737243b8a1d0022f2b36ac53333c6280354a74d77f2a3642dcab35204e59-full-33-v1.0.dat +0 -0
  89. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-a6663f98ef6ddf6db55f01163e34bb2e87aa82f0347e79ce31e8dbfa390c480c-delta-47-v1.0.dat +0 -0
  90. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-a6663f98ef6ddf6db55f01163e34bb2e87aa82f0347e79ce31e8dbfa390c480c-full-47-v1.0.dat +0 -0
  91. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-aa77376d1ccd3664e5c6366e010c52a978fedbf40f5ce262fee71b2e7fe0c6a9-delta-50-v1.0.dat +0 -0
  92. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-aa77376d1ccd3664e5c6366e010c52a978fedbf40f5ce262fee71b2e7fe0c6a9-full-50-v1.0.dat +0 -0
  93. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-b0f28514741ed1a71f5c6544bf92f9e0e493c5f3cf28328909771d8404eff626-delta-24-v1.0.dat +0 -0
  94. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-b0f28514741ed1a71f5c6544bf92f9e0e493c5f3cf28328909771d8404eff626-full-24-v1.0.dat +0 -0
  95. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-b3efee5358e6eb89ab3b60db2d128d57eef39e8538fb63c5632412d4f8e7d09e-delta-44-v1.0.dat +0 -0
  96. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-b3efee5358e6eb89ab3b60db2d128d57eef39e8538fb63c5632412d4f8e7d09e-full-44-v1.0.dat +0 -0
  97. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bb0b56b6eb7acbb4e80893b04c72412fe833418232e1ed7b06d97d7a7f08b4e1-delta-16-v1.0.dat +0 -0
  98. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bb0b56b6eb7acbb4e80893b04c72412fe833418232e1ed7b06d97d7a7f08b4e1-full-16-v1.0.dat +0 -0
  99. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bc45262b757ff494b53bd2a8fba0f5511cc1f9c2a2c5360e04ea8cebbf6409df-delta-13-v1.0.dat +0 -0
  100. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bc45262b757ff494b53bd2a8fba0f5511cc1f9c2a2c5360e04ea8cebbf6409df-full-13-v1.0.dat +0 -0
  101. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bd0494ba430aff13458b557113b073d226eaf11257dfe26ff3323fa1cfe1335b-delta-39-v1.0.dat +0 -0
  102. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-bd0494ba430aff13458b557113b073d226eaf11257dfe26ff3323fa1cfe1335b-full-39-v1.0.dat +0 -0
  103. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cd04f5fbba1553fa728b4dd8131d4723aaac288e0c7dc080447fbf0872c0a6eb-delta-36-v1.0.dat +0 -0
  104. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cd04f5fbba1553fa728b4dd8131d4723aaac288e0c7dc080447fbf0872c0a6eb-full-36-v1.0.dat +0 -0
  105. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cdd2399557fb3163a848f08831fdc833703354edb19a0d32a965fdb140f160c2-delta-18-v1.0.dat +0 -0
  106. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cdd2399557fb3163a848f08831fdc833703354edb19a0d32a965fdb140f160c2-full-18-v1.0.dat +0 -0
  107. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cf7a08fca7b1332095242e4d9800f4b94a3f4eaae88fe8407da42736d54b9e18-delta-37-v1.0.dat +0 -0
  108. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-cf7a08fca7b1332095242e4d9800f4b94a3f4eaae88fe8407da42736d54b9e18-full-37-v1.0.dat +0 -0
  109. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-d1f97465a9f52187e2ef3a0d811a1258f52380a65340c55f3e8e65b92753bc13-delta-15-v1.0.dat +0 -0
  110. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-d1f97465a9f52187e2ef3a0d811a1258f52380a65340c55f3e8e65b92753bc13-full-15-v1.0.dat +0 -0
  111. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-e475eccd4ee597e5ff67b1a249e37d65d6e3f754c3f0379fdb43692513588fef-delta-46-v1.0.dat +0 -0
  112. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-e475eccd4ee597e5ff67b1a249e37d65d6e3f754c3f0379fdb43692513588fef-full-46-v1.0.dat +0 -0
  113. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-e82e63517d78fd65b23a05c3b9a98cf905ddad7026995a238bfe634006b84cd0-delta-27-v1.0.dat +0 -0
  114. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-e82e63517d78fd65b23a05c3b9a98cf905ddad7026995a238bfe634006b84cd0-full-27-v1.0.dat +0 -0
  115. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-ed2cf0fd6c0f6237c87c161e1fca303b3fbe6c04e01f652b88720b4572143349-delta-12-v1.0.dat +0 -0
  116. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-ed2cf0fd6c0f6237c87c161e1fca303b3fbe6c04e01f652b88720b4572143349-full-12-v1.0.dat +0 -0
  117. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-f6e454eaf24a83c46a7bed4c19260a0a3ce0ed5c51739cb6d748d4913dc2ef58-delta-30-v1.0.dat +0 -0
  118. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-f6e454eaf24a83c46a7bed4c19260a0a3ce0ed5c51739cb6d748d4913dc2ef58-full-30-v1.0.dat +0 -0
  119. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-f7ad2bdf86d9609b4d6381086ec1e296bf558e2ff467ead29dd7fa6e31bacc56-delta-43-v1.0.dat +0 -0
  120. chia/_tests/core/data_layer/old_format/files/2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e612073746f7265206964-f7ad2bdf86d9609b4d6381086ec1e296bf558e2ff467ead29dd7fa6e31bacc56-full-43-v1.0.dat +0 -0
  121. chia/_tests/core/data_layer/old_format/files/__init__.py +0 -0
  122. chia/_tests/core/data_layer/old_format/old_db.sqlite +0 -0
  123. chia/_tests/core/data_layer/test_data_layer_util.py +18 -21
  124. chia/_tests/core/data_layer/test_data_rpc.py +77 -28
  125. chia/_tests/core/data_layer/test_data_store.py +637 -700
  126. chia/_tests/core/data_layer/test_data_store_schema.py +2 -209
  127. chia/_tests/core/full_node/ram_db.py +1 -1
  128. chia/_tests/core/full_node/stores/test_block_store.py +4 -10
  129. chia/_tests/core/full_node/stores/test_coin_store.py +1 -1
  130. chia/_tests/core/full_node/test_address_manager.py +3 -3
  131. chia/_tests/core/full_node/test_block_height_map.py +1 -1
  132. chia/_tests/core/full_node/test_full_node.py +91 -30
  133. chia/_tests/core/full_node/test_generator_tools.py +17 -10
  134. chia/_tests/core/mempool/test_mempool.py +190 -90
  135. chia/_tests/core/mempool/test_mempool_fee_estimator.py +2 -4
  136. chia/_tests/core/mempool/test_mempool_item_queries.py +1 -1
  137. chia/_tests/core/mempool/test_mempool_manager.py +252 -77
  138. chia/_tests/core/mempool/test_singleton_fast_forward.py +9 -27
  139. chia/_tests/core/server/serve.py +0 -2
  140. chia/_tests/core/server/test_rate_limits.py +400 -347
  141. chia/_tests/core/server/test_server.py +2 -2
  142. chia/_tests/core/services/test_services.py +7 -7
  143. chia/_tests/core/test_cost_calculation.py +31 -10
  144. chia/_tests/core/test_crawler.py +4 -4
  145. chia/_tests/core/test_db_conversion.py +7 -14
  146. chia/_tests/core/test_db_validation.py +2 -6
  147. chia/_tests/core/test_farmer_harvester_rpc.py +34 -1
  148. chia/_tests/core/test_full_node_rpc.py +28 -24
  149. chia/_tests/core/test_merkle_set.py +1 -4
  150. chia/_tests/core/test_seeder.py +1 -1
  151. chia/_tests/core/util/test_keychain.py +2 -2
  152. chia/_tests/core/util/test_lru_cache.py +16 -0
  153. chia/_tests/core/util/test_streamable.py +85 -4
  154. chia/_tests/environments/wallet.py +4 -1
  155. chia/_tests/farmer_harvester/test_farmer.py +8 -6
  156. chia/_tests/farmer_harvester/test_farmer_harvester.py +306 -8
  157. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +3 -3
  158. chia/_tests/farmer_harvester/test_third_party_harvesters.py +11 -11
  159. chia/_tests/fee_estimation/test_fee_estimation_integration.py +2 -2
  160. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +1 -1
  161. chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +1 -2
  162. chia/_tests/generator/test_rom.py +2 -1
  163. chia/_tests/harvester/__init__.py +0 -0
  164. chia/_tests/harvester/config.py +4 -0
  165. chia/_tests/harvester/test_harvester_api.py +157 -0
  166. chia/_tests/plot_sync/test_plot_sync.py +6 -3
  167. chia/_tests/plot_sync/test_receiver.py +16 -4
  168. chia/_tests/plot_sync/test_sender.py +8 -7
  169. chia/_tests/plot_sync/test_sync_simulated.py +15 -13
  170. chia/_tests/plot_sync/util.py +3 -2
  171. chia/_tests/plotting/test_plot_manager.py +21 -5
  172. chia/_tests/plotting/test_prover.py +106 -0
  173. chia/_tests/pools/test_pool_cmdline.py +7 -6
  174. chia/_tests/pools/test_pool_puzzles_lifecycle.py +10 -3
  175. chia/_tests/pools/test_pool_rpc.py +92 -64
  176. chia/_tests/solver/__init__.py +0 -0
  177. chia/_tests/solver/config.py +4 -0
  178. chia/_tests/solver/test_solver_service.py +29 -0
  179. chia/_tests/timelord/test_new_peak.py +1 -1
  180. chia/_tests/timelord/test_timelord.py +1 -1
  181. chia/_tests/util/benchmarks.py +5 -12
  182. chia/_tests/util/blockchain.py +1 -1
  183. chia/_tests/util/build_network_protocol_files.py +7 -0
  184. chia/_tests/util/network_protocol_data.py +26 -0
  185. chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
  186. chia/_tests/util/protocol_messages_json.py +19 -0
  187. chia/_tests/util/setup_nodes.py +21 -2
  188. chia/_tests/util/spend_sim.py +9 -3
  189. chia/_tests/util/test_condition_tools.py +3 -2
  190. chia/_tests/util/test_full_block_utils.py +10 -9
  191. chia/_tests/util/test_misc.py +10 -10
  192. chia/_tests/util/test_network.py +32 -1
  193. chia/_tests/util/test_network_protocol_files.py +333 -318
  194. chia/_tests/util/test_network_protocol_json.py +6 -0
  195. chia/_tests/util/test_network_protocol_test.py +27 -0
  196. chia/_tests/util/test_priority_mutex.py +1 -1
  197. chia/_tests/util/test_replace_str_to_bytes.py +6 -6
  198. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +17 -13
  199. chia/_tests/wallet/cat_wallet/test_trades.py +55 -55
  200. chia/_tests/wallet/did_wallet/test_did.py +118 -1229
  201. chia/_tests/wallet/nft_wallet/config.py +1 -1
  202. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +73 -96
  203. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +15 -12
  204. chia/_tests/wallet/nft_wallet/test_nft_offers.py +67 -134
  205. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +31 -26
  206. chia/_tests/wallet/rpc/test_wallet_rpc.py +765 -371
  207. chia/_tests/wallet/sync/test_wallet_sync.py +6 -0
  208. chia/_tests/wallet/test_new_wallet_protocol.py +1 -1
  209. chia/_tests/wallet/test_signer_protocol.py +2 -2
  210. chia/_tests/wallet/test_singleton_lifecycle_fast.py +3 -4
  211. chia/_tests/wallet/test_transaction_store.py +42 -33
  212. chia/_tests/wallet/test_wallet.py +22 -31
  213. chia/_tests/wallet/test_wallet_state_manager.py +14 -7
  214. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +53 -32
  215. chia/apis.py +2 -0
  216. chia/cmds/beta.py +7 -3
  217. chia/cmds/chia.py +2 -0
  218. chia/cmds/cmd_classes.py +11 -27
  219. chia/cmds/cmds_util.py +3 -0
  220. chia/cmds/coin_funcs.py +27 -22
  221. chia/cmds/configure.py +42 -18
  222. chia/cmds/dev/data.py +22 -3
  223. chia/cmds/farm.py +32 -0
  224. chia/cmds/farm_funcs.py +54 -5
  225. chia/cmds/init_funcs.py +4 -0
  226. chia/cmds/keys_funcs.py +8 -10
  227. chia/cmds/peer_funcs.py +8 -10
  228. chia/cmds/plotnft_funcs.py +24 -16
  229. chia/cmds/rpc.py +11 -1
  230. chia/cmds/show_funcs.py +5 -5
  231. chia/cmds/solver.py +33 -0
  232. chia/cmds/solver_funcs.py +21 -0
  233. chia/cmds/wallet.py +1 -1
  234. chia/cmds/wallet_funcs.py +149 -96
  235. chia/consensus/block_body_validation.py +8 -9
  236. chia/consensus/block_creation.py +9 -10
  237. chia/consensus/block_header_validation.py +61 -69
  238. chia/{full_node → consensus}/block_height_map.py +2 -1
  239. chia/consensus/block_height_map_protocol.py +21 -0
  240. chia/consensus/block_rewards.py +12 -12
  241. chia/consensus/blockchain.py +8 -18
  242. chia/consensus/default_constants.py +6 -6
  243. chia/consensus/generator_tools.py +1 -1
  244. chia/consensus/get_block_challenge.py +24 -25
  245. chia/consensus/pos_quality.py +28 -2
  246. chia/consensus/pot_iterations.py +15 -17
  247. chia/daemon/keychain_proxy.py +5 -0
  248. chia/daemon/server.py +2 -3
  249. chia/data_layer/data_layer.py +32 -24
  250. chia/data_layer/data_layer_errors.py +5 -0
  251. chia/data_layer/data_layer_rpc_api.py +1 -1
  252. chia/data_layer/data_layer_service.py +8 -0
  253. chia/data_layer/data_layer_util.py +49 -89
  254. chia/data_layer/data_layer_wallet.py +20 -17
  255. chia/data_layer/data_store.py +1051 -1462
  256. chia/data_layer/download_data.py +44 -115
  257. chia/{server → data_layer}/start_data_layer.py +2 -1
  258. chia/data_layer/util/benchmark.py +38 -53
  259. chia/farmer/farmer.py +3 -0
  260. chia/farmer/farmer_api.py +104 -5
  261. chia/farmer/farmer_rpc_api.py +20 -0
  262. chia/farmer/farmer_rpc_client.py +6 -2
  263. chia/farmer/farmer_service.py +8 -0
  264. chia/{server → farmer}/start_farmer.py +9 -3
  265. chia/full_node/block_store.py +20 -10
  266. chia/full_node/coin_store.py +12 -4
  267. chia/full_node/eligible_coin_spends.py +17 -72
  268. chia/full_node/full_node.py +68 -71
  269. chia/full_node/full_node_api.py +26 -32
  270. chia/full_node/full_node_rpc_api.py +44 -33
  271. chia/full_node/full_node_rpc_client.py +67 -79
  272. chia/full_node/full_node_service.py +8 -0
  273. chia/full_node/full_node_store.py +5 -3
  274. chia/full_node/mempool.py +15 -16
  275. chia/full_node/mempool_manager.py +73 -89
  276. chia/{server → full_node}/start_full_node.py +1 -1
  277. chia/full_node/subscriptions.py +2 -2
  278. chia/full_node/weight_proof.py +14 -15
  279. chia/harvester/harvester.py +8 -1
  280. chia/harvester/harvester_api.py +178 -44
  281. chia/harvester/harvester_service.py +8 -0
  282. chia/{server → harvester}/start_harvester.py +1 -1
  283. chia/introducer/introducer_service.py +8 -0
  284. chia/{server → introducer}/start_introducer.py +1 -1
  285. chia/plot_sync/receiver.py +6 -1
  286. chia/plot_sync/sender.py +7 -4
  287. chia/plotting/cache.py +37 -28
  288. chia/plotting/check_plots.py +83 -48
  289. chia/plotting/create_plots.py +3 -4
  290. chia/plotting/manager.py +18 -13
  291. chia/plotting/prover.py +153 -0
  292. chia/plotting/util.py +14 -6
  293. chia/pools/pool_wallet.py +6 -4
  294. chia/protocols/harvester_protocol.py +14 -0
  295. chia/protocols/outbound_message.py +1 -0
  296. chia/protocols/pool_protocol.py +1 -1
  297. chia/protocols/protocol_message_types.py +7 -0
  298. chia/protocols/shared_protocol.py +2 -0
  299. chia/protocols/solver_protocol.py +18 -0
  300. chia/rpc/rpc_server.py +1 -1
  301. chia/seeder/crawl_store.py +4 -8
  302. chia/seeder/crawler.py +2 -2
  303. chia/seeder/crawler_service.py +8 -0
  304. chia/seeder/start_crawler.py +1 -1
  305. chia/server/address_manager.py +12 -15
  306. chia/server/introducer_peers.py +1 -1
  307. chia/server/node_discovery.py +9 -10
  308. chia/server/rate_limit_numbers.py +157 -168
  309. chia/server/rate_limits.py +44 -41
  310. chia/server/resolve_peer_info.py +5 -0
  311. chia/server/server.py +17 -7
  312. chia/server/start_service.py +0 -1
  313. chia/simulator/block_tools.py +92 -58
  314. chia/simulator/full_node_simulator.py +1 -1
  315. chia/simulator/setup_services.py +52 -15
  316. chia/solver/__init__.py +0 -0
  317. chia/solver/solver.py +100 -0
  318. chia/solver/solver_api.py +59 -0
  319. chia/solver/solver_rpc_api.py +31 -0
  320. chia/solver/solver_rpc_client.py +16 -0
  321. chia/solver/solver_service.py +8 -0
  322. chia/solver/start_solver.py +102 -0
  323. {mozilla-ca → chia/ssl}/cacert.pem +0 -27
  324. chia/ssl/create_ssl.py +3 -2
  325. chia/{server → timelord}/start_timelord.py +1 -1
  326. chia/timelord/timelord.py +12 -13
  327. chia/timelord/timelord_service.py +8 -0
  328. chia/types/blockchain_format/proof_of_space.py +61 -17
  329. chia/types/coin_spend.py +0 -8
  330. chia/types/internal_mempool_item.py +3 -3
  331. chia/types/mempool_item.py +15 -8
  332. chia/types/mempool_submission_status.py +1 -1
  333. chia/util/config.py +1 -3
  334. chia/util/db_wrapper.py +7 -8
  335. chia/util/initial-config.yaml +46 -0
  336. chia/util/lru_cache.py +8 -4
  337. chia/util/network.py +9 -0
  338. chia/util/streamable.py +38 -8
  339. chia/util/virtual_project_analysis.py +1 -1
  340. chia/wallet/cat_wallet/cat_outer_puzzle.py +7 -4
  341. chia/wallet/cat_wallet/cat_wallet.py +13 -7
  342. chia/wallet/cat_wallet/r_cat_wallet.py +4 -1
  343. chia/wallet/conditions.py +1 -3
  344. chia/wallet/did_wallet/did_wallet.py +27 -332
  345. chia/wallet/nft_wallet/nft_puzzle_utils.py +1 -1
  346. chia/wallet/nft_wallet/nft_wallet.py +9 -7
  347. chia/wallet/puzzle_drivers.py +7 -8
  348. chia/{server → wallet}/start_wallet.py +1 -1
  349. chia/wallet/trade_manager.py +12 -9
  350. chia/wallet/transaction_record.py +14 -51
  351. chia/wallet/util/clvm_streamable.py +28 -41
  352. chia/wallet/util/merkle_utils.py +2 -2
  353. chia/wallet/util/tx_config.py +3 -6
  354. chia/wallet/vc_wallet/cr_cat_wallet.py +12 -6
  355. chia/wallet/vc_wallet/vc_wallet.py +13 -15
  356. chia/wallet/wallet.py +5 -3
  357. chia/wallet/wallet_node.py +25 -30
  358. chia/wallet/wallet_request_types.py +538 -101
  359. chia/wallet/wallet_rpc_api.py +398 -570
  360. chia/wallet/wallet_rpc_client.py +144 -332
  361. chia/wallet/wallet_service.py +8 -0
  362. chia/wallet/wallet_state_manager.py +53 -42
  363. chia/wallet/wallet_transaction_store.py +13 -5
  364. {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7.dist-info}/METADATA +31 -31
  365. {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7.dist-info}/RECORD +368 -240
  366. {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7.dist-info}/WHEEL +1 -1
  367. {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7.dist-info}/entry_points.txt +8 -7
  368. chia/full_node/mempool_check_conditions.py +0 -102
  369. chia/server/aliases.py +0 -35
  370. {chia_blockchain-2.5.6rc2.dist-info → chia_blockchain-2.5.7.dist-info/licenses}/LICENSE +0 -0
@@ -1,7 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from collections.abc import Sequence
4
- from typing import Any, Optional, Union, cast
3
+ from typing import Any, Optional, Union
5
4
 
6
5
  from chia_rs.sized_bytes import bytes32
7
6
  from chia_rs.sized_ints import uint32, uint64
@@ -9,18 +8,13 @@ from chia_rs.sized_ints import uint32, uint64
9
8
  from chia.data_layer.data_layer_util import DLProof, VerifyProofResponse
10
9
  from chia.rpc.rpc_client import RpcClient
11
10
  from chia.types.blockchain_format.coin import Coin
12
- from chia.types.blockchain_format.program import Program
13
- from chia.types.coin_record import CoinRecord
14
11
  from chia.wallet.conditions import Condition, ConditionValidTimes, conditions_to_json_dicts
15
12
  from chia.wallet.puzzles.clawback.metadata import AutoClaimSettings
16
13
  from chia.wallet.trade_record import TradeRecord
17
14
  from chia.wallet.trading.offer import Offer
18
15
  from chia.wallet.transaction_record import TransactionRecord
19
- from chia.wallet.transaction_sorting import SortKey
20
16
  from chia.wallet.util.clvm_streamable import json_deserialize_with_clvm_streamable
21
- from chia.wallet.util.query_filter import TransactionTypeFilter
22
- from chia.wallet.util.tx_config import CoinSelectionConfig, TXConfig
23
- from chia.wallet.util.wallet_types import WalletType
17
+ from chia.wallet.util.tx_config import TXConfig
24
18
  from chia.wallet.wallet_coin_store import GetCoinRecords
25
19
  from chia.wallet.wallet_request_types import (
26
20
  AddKey,
@@ -29,9 +23,20 @@ from chia.wallet.wallet_request_types import (
29
23
  ApplySignaturesResponse,
30
24
  CancelOfferResponse,
31
25
  CancelOffersResponse,
26
+ CATAssetIDToName,
27
+ CATAssetIDToNameResponse,
28
+ CATGetAssetID,
29
+ CATGetAssetIDResponse,
30
+ CATGetName,
31
+ CATGetNameResponse,
32
+ CATSetName,
33
+ CATSetNameResponse,
34
+ CATSpend,
32
35
  CATSpendResponse,
33
36
  CheckDeleteKey,
34
37
  CheckDeleteKeyResponse,
38
+ CheckOfferValidity,
39
+ CheckOfferValidityResponse,
35
40
  CombineCoins,
36
41
  CombineCoinsResponse,
37
42
  CreateNewDL,
@@ -39,6 +44,8 @@ from chia.wallet.wallet_request_types import (
39
44
  CreateOfferForIDsResponse,
40
45
  CreateSignedTransactionsResponse,
41
46
  DeleteKey,
47
+ DeleteNotifications,
48
+ DeleteUnconfirmedTransactions,
42
49
  DIDCreateBackupFile,
43
50
  DIDCreateBackupFileResponse,
44
51
  DIDFindLostDID,
@@ -53,10 +60,6 @@ from chia.wallet.wallet_request_types import (
53
60
  DIDGetMetadataResponse,
54
61
  DIDGetPubkey,
55
62
  DIDGetPubkeyResponse,
56
- DIDGetRecoveryInfo,
57
- DIDGetRecoveryInfoResponse,
58
- DIDGetRecoveryList,
59
- DIDGetRecoveryListResponse,
60
63
  DIDGetWalletName,
61
64
  DIDGetWalletNameResponse,
62
65
  DIDMessageSpend,
@@ -67,8 +70,6 @@ from chia.wallet.wallet_request_types import (
67
70
  DIDTransferDIDResponse,
68
71
  DIDUpdateMetadata,
69
72
  DIDUpdateMetadataResponse,
70
- DIDUpdateRecoveryIDs,
71
- DIDUpdateRecoveryIDsResponse,
72
73
  DLDeleteMirror,
73
74
  DLDeleteMirrorResponse,
74
75
  DLGetMirrors,
@@ -90,23 +91,45 @@ from chia.wallet.wallet_request_types import (
90
91
  DLUpdateRootResponse,
91
92
  ExecuteSigningInstructions,
92
93
  ExecuteSigningInstructionsResponse,
94
+ ExtendDerivationIndex,
95
+ ExtendDerivationIndexResponse,
93
96
  GatherSigningInfo,
94
97
  GatherSigningInfoResponse,
95
98
  GenerateMnemonicResponse,
96
99
  GetCATListResponse,
100
+ GetCoinRecordsByNames,
101
+ GetCoinRecordsByNamesResponse,
102
+ GetCurrentDerivationIndexResponse,
97
103
  GetHeightInfoResponse,
98
104
  GetLoggedInFingerprintResponse,
105
+ GetNextAddress,
106
+ GetNextAddressResponse,
99
107
  GetNotifications,
100
108
  GetNotificationsResponse,
101
109
  GetOffersCountResponse,
102
110
  GetPrivateKey,
103
111
  GetPrivateKeyResponse,
104
112
  GetPublicKeysResponse,
113
+ GetSpendableCoins,
114
+ GetSpendableCoinsResponse,
115
+ GetStrayCATsResponse,
105
116
  GetSyncStatusResponse,
106
117
  GetTimestampForHeight,
107
118
  GetTimestampForHeightResponse,
119
+ GetTransaction,
120
+ GetTransactionCount,
121
+ GetTransactionCountResponse,
108
122
  GetTransactionMemo,
109
123
  GetTransactionMemoResponse,
124
+ GetTransactionResponse,
125
+ GetTransactions,
126
+ GetTransactionsResponse,
127
+ GetWalletBalance,
128
+ GetWalletBalanceResponse,
129
+ GetWalletBalances,
130
+ GetWalletBalancesResponse,
131
+ GetWallets,
132
+ GetWalletsResponse,
110
133
  LogIn,
111
134
  LogInResponse,
112
135
  NFTAddURI,
@@ -148,9 +171,20 @@ from chia.wallet.wallet_request_types import (
148
171
  PWSelfPoolResponse,
149
172
  PWStatus,
150
173
  PWStatusResponse,
174
+ SelectCoins,
175
+ SelectCoinsResponse,
176
+ SendNotification,
177
+ SendNotificationResponse,
178
+ SendTransaction,
151
179
  SendTransactionMultiResponse,
152
180
  SendTransactionResponse,
153
181
  SetWalletResyncOnStartup,
182
+ SignMessageByAddress,
183
+ SignMessageByAddressResponse,
184
+ SignMessageByID,
185
+ SignMessageByIDResponse,
186
+ SpendClawbackCoins,
187
+ SpendClawbackCoinsResponse,
154
188
  SplitCoins,
155
189
  SplitCoinsResponse,
156
190
  SubmitTransactions,
@@ -176,7 +210,7 @@ from chia.wallet.wallet_request_types import (
176
210
 
177
211
  def parse_result_transactions(result: dict[str, Any]) -> dict[str, Any]:
178
212
  result["transaction"] = TransactionRecord.from_json_dict(result["transaction"])
179
- result["transactions"] = [TransactionRecord.from_json_dict_convenience(tx) for tx in result["transactions"]]
213
+ result["transactions"] = [TransactionRecord.from_json_dict(tx) for tx in result["transactions"]]
180
214
  if result["fee_transaction"]:
181
215
  result["fee_transaction"] = TransactionRecord.from_json_dict(result["fee_transaction"])
182
216
  return result
@@ -257,112 +291,43 @@ class WalletRpcClient(RpcClient):
257
291
  return AutoClaimSettings.from_json_dict(await self.fetch("get_auto_claim", {}))
258
292
 
259
293
  # Wallet Management APIs
260
- async def get_wallets(self, wallet_type: Optional[WalletType] = None) -> list[dict[str, Any]]:
261
- if wallet_type is None:
262
- request = {}
263
- else:
264
- request = {"type": wallet_type}
265
- response = await self.fetch("get_wallets", request)
266
- # TODO: casting due to lack of type checked deserialization
267
- return cast(list[dict[str, Any]], response["wallets"])
294
+ async def get_wallets(self, request: GetWallets) -> GetWalletsResponse:
295
+ return GetWalletsResponse.from_json_dict(await self.fetch("get_wallets", request.to_json_dict()))
268
296
 
269
297
  # Wallet APIs
270
- async def get_wallet_balance(self, wallet_id: int) -> dict[str, Any]:
271
- request = {"wallet_id": wallet_id}
272
- response = await self.fetch("get_wallet_balance", request)
273
- # TODO: casting due to lack of type checked deserialization
274
- return cast(dict[str, Any], response["wallet_balance"])
275
-
276
- async def get_wallet_balances(self, wallet_ids: Optional[list[int]] = None) -> dict[str, dict[str, Any]]:
277
- request = {"wallet_ids": wallet_ids}
278
- response = await self.fetch("get_wallet_balances", request)
279
- # TODO: casting due to lack of type checked deserialization
280
- return cast(dict[str, dict[str, Any]], response["wallet_balances"])
281
-
282
- async def get_transaction(self, transaction_id: bytes32) -> TransactionRecord:
283
- request = {"transaction_id": transaction_id.hex()}
284
- response = await self.fetch("get_transaction", request)
285
- return TransactionRecord.from_json_dict_convenience(response["transaction"])
286
-
287
- async def get_transactions(
288
- self,
289
- wallet_id: int,
290
- start: Optional[int] = None,
291
- end: Optional[int] = None,
292
- sort_key: Optional[SortKey] = None,
293
- reverse: bool = False,
294
- to_address: Optional[str] = None,
295
- type_filter: Optional[TransactionTypeFilter] = None,
296
- confirmed: Optional[bool] = None,
297
- ) -> list[TransactionRecord]:
298
- request: dict[str, Any] = {"wallet_id": wallet_id}
299
-
300
- if start is not None:
301
- request["start"] = start
302
- if end is not None:
303
- request["end"] = end
304
- if sort_key is not None:
305
- request["sort_key"] = sort_key.name
306
- request["reverse"] = reverse
307
-
308
- if to_address is not None:
309
- request["to_address"] = to_address
310
-
311
- if type_filter is not None:
312
- request["type_filter"] = type_filter.to_json_dict()
313
-
314
- if confirmed is not None:
315
- request["confirmed"] = confirmed
316
-
317
- res = await self.fetch("get_transactions", request)
318
- return [TransactionRecord.from_json_dict_convenience(tx) for tx in res["transactions"]]
319
-
320
- async def get_transaction_count(
321
- self, wallet_id: int, confirmed: Optional[bool] = None, type_filter: Optional[TransactionTypeFilter] = None
322
- ) -> int:
323
- request: dict[str, Any] = {"wallet_id": wallet_id}
324
- if type_filter is not None:
325
- request["type_filter"] = type_filter.to_json_dict()
326
- if confirmed is not None:
327
- request["confirmed"] = confirmed
328
- res = await self.fetch("get_transaction_count", request)
329
- # TODO: casting due to lack of type checked deserialization
330
- return cast(int, res["count"])
331
-
332
- async def get_next_address(self, wallet_id: int, new_address: bool) -> str:
333
- request = {"wallet_id": wallet_id, "new_address": new_address}
334
- response = await self.fetch("get_next_address", request)
335
- # TODO: casting due to lack of type checked deserialization
336
- return cast(str, response["address"])
298
+ async def get_wallet_balance(self, request: GetWalletBalance) -> GetWalletBalanceResponse:
299
+ return GetWalletBalanceResponse.from_json_dict(await self.fetch("get_wallet_balance", request.to_json_dict()))
300
+
301
+ async def get_wallet_balances(self, request: GetWalletBalances) -> GetWalletBalancesResponse:
302
+ return GetWalletBalancesResponse.from_json_dict(await self.fetch("get_wallet_balances", request.to_json_dict()))
303
+
304
+ async def get_transaction(self, request: GetTransaction) -> GetTransactionResponse:
305
+ return GetTransactionResponse.from_json_dict(await self.fetch("get_transaction", request.to_json_dict()))
306
+
307
+ async def get_transactions(self, request: GetTransactions) -> GetTransactionsResponse:
308
+ return GetTransactionsResponse.from_json_dict(await self.fetch("get_transactions", request.to_json_dict()))
309
+
310
+ async def get_transaction_count(self, request: GetTransactionCount) -> GetTransactionCountResponse:
311
+ return GetTransactionCountResponse.from_json_dict(
312
+ await self.fetch("get_transaction_count", request.to_json_dict())
313
+ )
314
+
315
+ async def get_next_address(self, request: GetNextAddress) -> GetNextAddressResponse:
316
+ return GetNextAddressResponse.from_json_dict(await self.fetch("get_next_address", request.to_json_dict()))
337
317
 
338
318
  async def send_transaction(
339
319
  self,
340
- wallet_id: int,
341
- amount: uint64,
342
- address: str,
320
+ request: SendTransaction,
343
321
  tx_config: TXConfig,
344
- fee: uint64 = uint64(0),
345
- memos: Optional[list[str]] = None,
346
- puzzle_decorator_override: Optional[list[dict[str, Union[str, int, bool]]]] = None,
347
322
  extra_conditions: tuple[Condition, ...] = tuple(),
348
323
  timelock_info: ConditionValidTimes = ConditionValidTimes(),
349
- push: bool = True,
350
324
  ) -> SendTransactionResponse:
351
- request = {
352
- "wallet_id": wallet_id,
353
- "amount": amount,
354
- "address": address,
355
- "fee": fee,
356
- "puzzle_decorator": puzzle_decorator_override,
357
- "extra_conditions": conditions_to_json_dicts(extra_conditions),
358
- "push": push,
359
- **tx_config.to_json_dict(),
360
- **timelock_info.to_json_dict(),
361
- }
362
- if memos is not None:
363
- request["memos"] = memos
364
- response = await self.fetch("send_transaction", request)
365
- return json_deserialize_with_clvm_streamable(response, SendTransactionResponse)
325
+ return SendTransactionResponse.from_json_dict(
326
+ await self.fetch(
327
+ "send_transaction",
328
+ request.json_serialize_for_transport(tx_config, extra_conditions, timelock_info),
329
+ )
330
+ )
366
331
 
367
332
  async def send_transaction_multi(
368
333
  self,
@@ -396,39 +361,30 @@ class WalletRpcClient(RpcClient):
396
361
 
397
362
  async def spend_clawback_coins(
398
363
  self,
399
- coin_ids: list[bytes32],
400
- fee: int = 0,
401
- force: bool = False,
402
- push: bool = True,
364
+ request: SpendClawbackCoins,
365
+ tx_config: TXConfig,
403
366
  extra_conditions: tuple[Condition, ...] = tuple(),
404
367
  timelock_info: ConditionValidTimes = ConditionValidTimes(),
405
- ) -> dict[str, Any]:
406
- request = {
407
- "coin_ids": [cid.hex() for cid in coin_ids],
408
- "fee": fee,
409
- "force": force,
410
- "extra_conditions": conditions_to_json_dicts(extra_conditions),
411
- "push": push,
412
- **timelock_info.to_json_dict(),
413
- }
414
- response = await self.fetch("spend_clawback_coins", request)
415
- return response
368
+ ) -> SpendClawbackCoinsResponse:
369
+ return SpendClawbackCoinsResponse.from_json_dict(
370
+ await self.fetch(
371
+ "spend_clawback_coins", request.json_serialize_for_transport(tx_config, extra_conditions, timelock_info)
372
+ )
373
+ )
416
374
 
417
- async def delete_unconfirmed_transactions(self, wallet_id: int) -> None:
418
- await self.fetch("delete_unconfirmed_transactions", {"wallet_id": wallet_id})
375
+ async def delete_unconfirmed_transactions(self, request: DeleteUnconfirmedTransactions) -> None:
376
+ await self.fetch("delete_unconfirmed_transactions", request.to_json_dict())
419
377
 
420
- async def get_current_derivation_index(self) -> str:
421
- response = await self.fetch("get_current_derivation_index", {})
422
- index = response["index"]
423
- return str(index)
378
+ async def get_current_derivation_index(self) -> GetCurrentDerivationIndexResponse:
379
+ return GetCurrentDerivationIndexResponse.from_json_dict(await self.fetch("get_current_derivation_index", {}))
424
380
 
425
- async def extend_derivation_index(self, index: int) -> str:
426
- response = await self.fetch("extend_derivation_index", {"index": index})
427
- updated_index = response["index"]
428
- return str(updated_index)
381
+ async def extend_derivation_index(self, request: ExtendDerivationIndex) -> ExtendDerivationIndexResponse:
382
+ return ExtendDerivationIndexResponse.from_json_dict(
383
+ await self.fetch("extend_derivation_index", request.to_json_dict())
384
+ )
429
385
 
430
- async def get_farmed_amount(self) -> dict[str, Any]:
431
- return await self.fetch("get_farmed_amount", {})
386
+ async def get_farmed_amount(self, include_pool_rewards: bool = False) -> dict[str, Any]:
387
+ return await self.fetch("get_farmed_amount", {"include_pool_rewards": include_pool_rewards})
432
388
 
433
389
  async def create_signed_transactions(
434
390
  self,
@@ -467,43 +423,19 @@ class WalletRpcClient(RpcClient):
467
423
  response = await self.fetch("create_signed_transaction", request)
468
424
  return json_deserialize_with_clvm_streamable(response, CreateSignedTransactionsResponse)
469
425
 
470
- async def select_coins(self, amount: int, wallet_id: int, coin_selection_config: CoinSelectionConfig) -> list[Coin]:
471
- request = {"amount": amount, "wallet_id": wallet_id, **coin_selection_config.to_json_dict()}
472
- response = await self.fetch("select_coins", request)
473
- return [Coin.from_json_dict(coin) for coin in response["coins"]]
426
+ async def select_coins(self, request: SelectCoins) -> SelectCoinsResponse:
427
+ return SelectCoinsResponse.from_json_dict(await self.fetch("select_coins", request.to_json_dict()))
474
428
 
475
429
  async def get_coin_records(self, request: GetCoinRecords) -> dict[str, Any]:
476
430
  return await self.fetch("get_coin_records", request.to_json_dict())
477
431
 
478
- async def get_spendable_coins(
479
- self, wallet_id: int, coin_selection_config: CoinSelectionConfig
480
- ) -> tuple[list[CoinRecord], list[CoinRecord], list[Coin]]:
481
- """
482
- We return a tuple containing: (confirmed records, unconfirmed removals, unconfirmed additions)
483
- """
484
- request = {"wallet_id": wallet_id, **coin_selection_config.to_json_dict()}
485
- response = await self.fetch("get_spendable_coins", request)
486
- confirmed_wrs = [CoinRecord.from_json_dict(coin) for coin in response["confirmed_records"]]
487
- unconfirmed_removals = [CoinRecord.from_json_dict(coin) for coin in response["unconfirmed_removals"]]
488
- unconfirmed_additions = [Coin.from_json_dict(coin) for coin in response["unconfirmed_additions"]]
489
- return confirmed_wrs, unconfirmed_removals, unconfirmed_additions
490
-
491
- async def get_coin_records_by_names(
492
- self,
493
- names: list[bytes32],
494
- include_spent_coins: bool = True,
495
- start_height: Optional[int] = None,
496
- end_height: Optional[int] = None,
497
- ) -> list[CoinRecord]:
498
- names_hex = [name.hex() for name in names]
499
- request = {"names": names_hex, "include_spent_coins": include_spent_coins}
500
- if start_height is not None:
501
- request["start_height"] = start_height
502
- if end_height is not None:
503
- request["end_height"] = end_height
504
-
505
- response = await self.fetch("get_coin_records_by_names", request)
506
- return [CoinRecord.from_json_dict(cr) for cr in response["coin_records"]]
432
+ async def get_spendable_coins(self, request: GetSpendableCoins) -> GetSpendableCoinsResponse:
433
+ return GetSpendableCoinsResponse.from_json_dict(await self.fetch("get_spendable_coins", request.to_json_dict()))
434
+
435
+ async def get_coin_records_by_names(self, request: GetCoinRecordsByNames) -> GetCoinRecordsByNamesResponse:
436
+ return GetCoinRecordsByNamesResponse.from_json_dict(
437
+ await self.fetch("get_coin_records_by_names", request.to_json_dict())
438
+ )
507
439
 
508
440
  # DID wallet
509
441
  async def create_new_did_wallet(
@@ -548,25 +480,6 @@ class WalletRpcClient(RpcClient):
548
480
  await self.fetch("did_create_backup_file", request.to_json_dict())
549
481
  )
550
482
 
551
- async def update_did_recovery_list(
552
- self,
553
- request: DIDUpdateRecoveryIDs,
554
- tx_config: TXConfig,
555
- extra_conditions: tuple[Condition, ...] = tuple(),
556
- timelock_info: ConditionValidTimes = ConditionValidTimes(),
557
- ) -> DIDUpdateRecoveryIDsResponse:
558
- return DIDUpdateRecoveryIDsResponse.from_json_dict(
559
- await self.fetch(
560
- "did_update_recovery_ids",
561
- request.json_serialize_for_transport(tx_config, extra_conditions, timelock_info),
562
- )
563
- )
564
-
565
- async def get_did_recovery_list(self, request: DIDGetRecoveryList) -> DIDGetRecoveryListResponse:
566
- return DIDGetRecoveryListResponse.from_json_dict(
567
- await self.fetch("did_get_recovery_list", request.to_json_dict())
568
- )
569
-
570
483
  async def did_message_spend(
571
484
  self,
572
485
  request: DIDMessageSpend,
@@ -609,43 +522,11 @@ class WalletRpcClient(RpcClient):
609
522
  response = await self.fetch("create_new_wallet", request)
610
523
  return response
611
524
 
612
- async def did_create_attest(
613
- self,
614
- wallet_id: int,
615
- coin_name: str,
616
- pubkey: str,
617
- puzhash: str,
618
- file_name: str,
619
- extra_conditions: tuple[Condition, ...] = tuple(),
620
- timelock_info: ConditionValidTimes = ConditionValidTimes(),
621
- ) -> dict[str, Any]:
622
- request = {
623
- "wallet_id": wallet_id,
624
- "coin_name": coin_name,
625
- "pubkey": pubkey,
626
- "puzhash": puzhash,
627
- "filename": file_name,
628
- "extra_conditions": conditions_to_json_dicts(extra_conditions),
629
- **timelock_info.to_json_dict(),
630
- }
631
- response = await self.fetch("did_create_attest", request)
632
- return response
633
-
634
- async def did_get_recovery_info(self, request: DIDGetRecoveryInfo) -> DIDGetRecoveryInfoResponse:
635
- return DIDGetRecoveryInfoResponse.from_json_dict(
636
- await self.fetch("did_get_information_needed_for_recovery", request.to_json_dict())
637
- )
638
-
639
525
  async def did_get_current_coin_info(self, request: DIDGetCurrentCoinInfo) -> DIDGetCurrentCoinInfoResponse:
640
526
  return DIDGetCurrentCoinInfoResponse.from_json_dict(
641
527
  await self.fetch("did_get_current_coin_info", request.to_json_dict())
642
528
  )
643
529
 
644
- async def did_recovery_spend(self, wallet_id: int, attest_filenames: str) -> dict[str, Any]:
645
- request = {"wallet_id": wallet_id, "attest_filenames": attest_filenames}
646
- response = await self.fetch("did_recovery_spend", request)
647
- return response
648
-
649
530
  async def did_transfer_did(
650
531
  self,
651
532
  request: DIDTransferDID,
@@ -754,82 +635,33 @@ class WalletRpcClient(RpcClient):
754
635
  request = {"wallet_type": "cat_wallet", "asset_id": asset_id.hex(), "mode": "existing"}
755
636
  return await self.fetch("create_new_wallet", request)
756
637
 
757
- async def get_cat_asset_id(self, wallet_id: int) -> bytes32:
758
- request = {"wallet_id": wallet_id}
759
- return bytes32.from_hexstr((await self.fetch("cat_get_asset_id", request))["asset_id"])
760
-
761
- async def get_stray_cats(self) -> list[dict[str, Any]]:
762
- response = await self.fetch("get_stray_cats", {})
763
- # TODO: casting due to lack of type checked deserialization
764
- return cast(list[dict[str, Any]], response["stray_cats"])
765
-
766
- async def cat_asset_id_to_name(self, asset_id: bytes32) -> Optional[tuple[Optional[uint32], str]]:
767
- request = {"asset_id": asset_id.hex()}
768
- try:
769
- res = await self.fetch("cat_asset_id_to_name", request)
770
- except ValueError:
771
- return None
772
-
773
- wallet_id: Optional[uint32] = None if res["wallet_id"] is None else uint32(int(res["wallet_id"]))
774
- return wallet_id, res["name"]
775
-
776
- async def get_cat_name(self, wallet_id: int) -> str:
777
- request = {"wallet_id": wallet_id}
778
- response = await self.fetch("cat_get_name", request)
779
- # TODO: casting due to lack of type checked deserialization
780
- return cast(str, response["name"])
781
-
782
- async def set_cat_name(self, wallet_id: int, name: str) -> None:
783
- request: dict[str, Any] = {
784
- "wallet_id": wallet_id,
785
- "name": name,
786
- }
787
- await self.fetch("cat_set_name", request)
638
+ async def get_cat_asset_id(self, request: CATGetAssetID) -> CATGetAssetIDResponse:
639
+ return CATGetAssetIDResponse.from_json_dict(await self.fetch("cat_get_asset_id", request.to_json_dict()))
640
+
641
+ async def get_stray_cats(self) -> GetStrayCATsResponse:
642
+ return GetStrayCATsResponse.from_json_dict(await self.fetch("get_stray_cats", {}))
643
+
644
+ async def cat_asset_id_to_name(self, request: CATAssetIDToName) -> CATAssetIDToNameResponse:
645
+ return CATAssetIDToNameResponse.from_json_dict(await self.fetch("cat_asset_id_to_name", request.to_json_dict()))
646
+
647
+ async def get_cat_name(self, request: CATGetName) -> CATGetNameResponse:
648
+ return CATGetNameResponse.from_json_dict(await self.fetch("cat_get_name", request.to_json_dict()))
649
+
650
+ async def set_cat_name(self, request: CATSetName) -> CATSetNameResponse:
651
+ return CATSetNameResponse.from_json_dict(await self.fetch("cat_set_name", request.to_json_dict()))
788
652
 
789
653
  async def cat_spend(
790
654
  self,
791
- wallet_id: int,
655
+ request: CATSpend,
792
656
  tx_config: TXConfig,
793
- amount: Optional[uint64] = None,
794
- inner_address: Optional[str] = None,
795
- fee: uint64 = uint64(0),
796
- memos: Optional[list[str]] = None,
797
- additions: Optional[list[dict[str, Any]]] = None,
798
- removals: Optional[list[Coin]] = None,
799
- cat_discrepancy: Optional[tuple[int, Program, Program]] = None, # (extra_delta, tail_reveal, tail_solution)
800
657
  extra_conditions: tuple[Condition, ...] = tuple(),
801
658
  timelock_info: ConditionValidTimes = ConditionValidTimes(),
802
- push: bool = True,
803
659
  ) -> CATSpendResponse:
804
- send_dict: dict[str, Any] = {
805
- "wallet_id": wallet_id,
806
- "fee": fee,
807
- "memos": memos if memos is not None else [],
808
- "extra_conditions": conditions_to_json_dicts(extra_conditions),
809
- "push": push,
810
- **tx_config.to_json_dict(),
811
- **timelock_info.to_json_dict(),
812
- }
813
- if amount is not None and inner_address is not None:
814
- send_dict["amount"] = amount
815
- send_dict["inner_address"] = inner_address
816
- elif additions is not None:
817
- additions_hex = []
818
- for ad in additions:
819
- additions_hex.append({"amount": ad["amount"], "puzzle_hash": ad["puzzle_hash"].hex()})
820
- if "memos" in ad:
821
- additions_hex[-1]["memos"] = ad["memos"]
822
- send_dict["additions"] = additions_hex
823
- else:
824
- raise ValueError("Must specify either amount and inner_address or additions")
825
- if removals is not None and len(removals) > 0:
826
- send_dict["coins"] = [c.to_json_dict() for c in removals]
827
- if cat_discrepancy is not None:
828
- send_dict["extra_delta"] = cat_discrepancy[0]
829
- send_dict["tail_reveal"] = bytes(cat_discrepancy[1]).hex()
830
- send_dict["tail_solution"] = bytes(cat_discrepancy[2]).hex()
831
- res = await self.fetch("cat_spend", send_dict)
832
- return json_deserialize_with_clvm_streamable(res, CATSpendResponse)
660
+ return CATSpendResponse.from_json_dict(
661
+ await self.fetch(
662
+ "cat_spend", request.json_serialize_for_transport(tx_config, extra_conditions, timelock_info)
663
+ )
664
+ )
833
665
 
834
666
  # Offers
835
667
  async def create_offer_for_ids(
@@ -866,9 +698,10 @@ class WalletRpcClient(RpcClient):
866
698
  res = await self.fetch("get_offer_summary", {"offer": offer.to_bech32(), "advanced": advanced})
867
699
  return bytes32.from_hexstr(res["id"]), res["summary"]
868
700
 
869
- async def check_offer_validity(self, offer: Offer) -> tuple[bytes32, bool]:
870
- res = await self.fetch("check_offer_validity", {"offer": offer.to_bech32()})
871
- return bytes32.from_hexstr(res["id"]), res["valid"]
701
+ async def check_offer_validity(self, request: CheckOfferValidity) -> CheckOfferValidityResponse:
702
+ return CheckOfferValidityResponse.from_json_dict(
703
+ await self.fetch("check_offer_validity", request.to_json_dict())
704
+ )
872
705
 
873
706
  async def take_offer(
874
707
  self,
@@ -1215,50 +1048,29 @@ class WalletRpcClient(RpcClient):
1215
1048
  response = await self.fetch("get_notifications", request.to_json_dict())
1216
1049
  return json_deserialize_with_clvm_streamable(response, GetNotificationsResponse)
1217
1050
 
1218
- async def delete_notifications(self, ids: Optional[Sequence[bytes32]] = None) -> bool:
1219
- request = {}
1220
- if ids is not None:
1221
- request["ids"] = [id.hex() for id in ids]
1222
- response = await self.fetch("delete_notifications", request)
1223
- # TODO: casting due to lack of type checked deserialization
1224
- result = cast(bool, response["success"])
1225
- return result
1051
+ async def delete_notifications(self, request: DeleteNotifications) -> None:
1052
+ await self.fetch("delete_notifications", request.to_json_dict())
1226
1053
 
1227
1054
  async def send_notification(
1228
1055
  self,
1229
- target: bytes32,
1230
- msg: bytes,
1231
- amount: uint64,
1232
- fee: uint64 = uint64(0),
1056
+ request: SendNotification,
1057
+ tx_config: TXConfig,
1233
1058
  extra_conditions: tuple[Condition, ...] = tuple(),
1234
1059
  timelock_info: ConditionValidTimes = ConditionValidTimes(),
1235
- push: bool = True,
1236
- ) -> TransactionRecord:
1237
- response = await self.fetch(
1238
- "send_notification",
1239
- {
1240
- "target": target.hex(),
1241
- "message": msg.hex(),
1242
- "amount": amount,
1243
- "fee": fee,
1244
- "extra_conditions": conditions_to_json_dicts(extra_conditions),
1245
- "push": push,
1246
- **timelock_info.to_json_dict(),
1247
- },
1060
+ ) -> SendNotificationResponse:
1061
+ return SendNotificationResponse.from_json_dict(
1062
+ await self.fetch(
1063
+ "send_notification", request.json_serialize_for_transport(tx_config, extra_conditions, timelock_info)
1064
+ )
1248
1065
  )
1249
- return TransactionRecord.from_json_dict_convenience(response["tx"])
1250
1066
 
1251
- async def sign_message_by_address(self, address: str, message: str) -> tuple[str, str, str]:
1252
- response = await self.fetch("sign_message_by_address", {"address": address, "message": message})
1253
- return response["pubkey"], response["signature"], response["signing_mode"]
1254
-
1255
- async def sign_message_by_id(
1256
- self, id: str, message: str, is_hex: bool = False, safe_mode: bool = True
1257
- ) -> tuple[str, str, str]:
1258
- response = await self.fetch(
1259
- "sign_message_by_id", {"id": id, "message": message, "is_hex": is_hex, "safe_mode": safe_mode}
1067
+ async def sign_message_by_address(self, request: SignMessageByAddress) -> SignMessageByAddressResponse:
1068
+ return SignMessageByAddressResponse.from_json_dict(
1069
+ await self.fetch("sign_message_by_address", request.to_json_dict())
1260
1070
  )
1261
- return response["pubkey"], response["signature"], response["signing_mode"]
1071
+
1072
+ async def sign_message_by_id(self, request: SignMessageByID) -> SignMessageByIDResponse:
1073
+ return SignMessageByIDResponse.from_json_dict(await self.fetch("sign_message_by_id", request.to_json_dict()))
1262
1074
 
1263
1075
  async def verify_signature(self, request: VerifySignature) -> VerifySignatureResponse:
1264
1076
  return VerifySignatureResponse.from_json_dict(await self.fetch("verify_signature", {**request.to_json_dict()}))
@@ -1341,7 +1153,7 @@ class WalletRpcClient(RpcClient):
1341
1153
  **timelock_info.to_json_dict(),
1342
1154
  },
1343
1155
  )
1344
- return [TransactionRecord.from_json_dict_convenience(tx) for tx in response["transactions"]]
1156
+ return [TransactionRecord.from_json_dict(tx) for tx in response["transactions"]]
1345
1157
 
1346
1158
  async def gather_signing_info(
1347
1159
  self,