chia-blockchain 2.5.0rc2__py3-none-any.whl → 2.5.1rc2__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 (637) hide show
  1. chia/_tests/README.md +1 -1
  2. chia/_tests/blockchain/blockchain_test_utils.py +24 -26
  3. chia/_tests/blockchain/test_augmented_chain.py +6 -8
  4. chia/_tests/blockchain/test_blockchain.py +409 -307
  5. chia/_tests/blockchain/test_blockchain_transactions.py +56 -75
  6. chia/_tests/blockchain/test_build_chains.py +11 -13
  7. chia/_tests/blockchain/test_get_block_generator.py +8 -8
  8. chia/_tests/blockchain/test_lookup_fork_chain.py +3 -4
  9. chia/_tests/build-init-files.py +3 -4
  10. chia/_tests/build-job-matrix.py +9 -9
  11. chia/_tests/check_sql_statements.py +2 -3
  12. chia/_tests/clvm/benchmark_costs.py +1 -1
  13. chia/_tests/clvm/coin_store.py +7 -5
  14. chia/_tests/clvm/test_chialisp_deserialization.py +8 -8
  15. chia/_tests/clvm/test_condition_codes.py +2 -2
  16. chia/_tests/clvm/test_curry_and_treehash.py +2 -4
  17. chia/_tests/clvm/test_message_conditions.py +184 -0
  18. chia/_tests/clvm/test_puzzle_compression.py +1 -2
  19. chia/_tests/clvm/test_puzzle_drivers.py +3 -3
  20. chia/_tests/clvm/test_puzzles.py +13 -18
  21. chia/_tests/clvm/test_singletons.py +17 -17
  22. chia/_tests/clvm/test_spend_sim.py +7 -7
  23. chia/_tests/cmds/cmd_test_utils.py +42 -45
  24. chia/_tests/cmds/conftest.py +2 -2
  25. chia/_tests/cmds/test_click_types.py +21 -16
  26. chia/_tests/cmds/test_cmd_framework.py +255 -35
  27. chia/_tests/cmds/test_cmds_util.py +2 -2
  28. chia/_tests/cmds/test_daemon.py +3 -3
  29. chia/_tests/cmds/test_dev_gh.py +131 -0
  30. chia/_tests/cmds/test_farm_cmd.py +1 -2
  31. chia/_tests/cmds/test_show.py +6 -6
  32. chia/_tests/cmds/test_tx_config_args.py +2 -1
  33. chia/_tests/cmds/wallet/test_dao.py +23 -23
  34. chia/_tests/cmds/wallet/test_did.py +29 -29
  35. chia/_tests/cmds/wallet/test_nft.py +24 -23
  36. chia/_tests/cmds/wallet/test_notifications.py +8 -8
  37. chia/_tests/cmds/wallet/test_tx_decorators.py +3 -3
  38. chia/_tests/cmds/wallet/test_vcs.py +97 -73
  39. chia/_tests/cmds/wallet/test_wallet.py +74 -75
  40. chia/_tests/cmds/wallet/test_wallet_check.py +5 -7
  41. chia/_tests/conftest.py +153 -38
  42. chia/_tests/connection_utils.py +7 -6
  43. chia/_tests/core/cmds/test_beta.py +3 -3
  44. chia/_tests/core/cmds/test_keys.py +6 -6
  45. chia/_tests/core/cmds/test_wallet.py +3 -3
  46. chia/_tests/core/consensus/test_block_creation.py +3 -5
  47. chia/_tests/core/custom_types/test_coin.py +1 -3
  48. chia/_tests/core/custom_types/test_spend_bundle.py +3 -4
  49. chia/_tests/core/daemon/test_daemon.py +58 -58
  50. chia/_tests/core/daemon/test_keychain_proxy.py +2 -1
  51. chia/_tests/core/data_layer/conftest.py +4 -3
  52. chia/_tests/core/data_layer/test_data_cli.py +1 -2
  53. chia/_tests/core/data_layer/test_data_layer.py +5 -5
  54. chia/_tests/core/data_layer/test_data_layer_util.py +8 -9
  55. chia/_tests/core/data_layer/test_data_rpc.py +75 -93
  56. chia/_tests/core/data_layer/test_data_store.py +38 -37
  57. chia/_tests/core/data_layer/test_data_store_schema.py +11 -11
  58. chia/_tests/core/data_layer/util.py +11 -10
  59. chia/_tests/core/farmer/test_farmer_api.py +6 -4
  60. chia/_tests/core/full_node/full_sync/test_full_sync.py +5 -10
  61. chia/_tests/core/full_node/ram_db.py +2 -2
  62. chia/_tests/core/full_node/stores/test_block_store.py +113 -11
  63. chia/_tests/core/full_node/stores/test_coin_store.py +37 -28
  64. chia/_tests/core/full_node/stores/test_full_node_store.py +34 -30
  65. chia/_tests/core/full_node/stores/test_hint_store.py +3 -4
  66. chia/_tests/core/full_node/test_address_manager.py +2 -2
  67. chia/_tests/core/full_node/test_block_height_map.py +1 -1
  68. chia/_tests/core/full_node/test_conditions.py +10 -12
  69. chia/_tests/core/full_node/test_full_node.py +2077 -1822
  70. chia/_tests/core/full_node/test_generator_tools.py +4 -4
  71. chia/_tests/core/full_node/test_hint_management.py +2 -2
  72. chia/_tests/core/full_node/test_performance.py +2 -5
  73. chia/_tests/core/full_node/test_subscriptions.py +4 -4
  74. chia/_tests/core/full_node/test_tx_processing_queue.py +5 -4
  75. chia/_tests/core/make_block_generator.py +5 -7
  76. chia/_tests/core/mempool/test_mempool.py +205 -208
  77. chia/_tests/core/mempool/test_mempool_fee_protocol.py +5 -5
  78. chia/_tests/core/mempool/test_mempool_item_queries.py +2 -4
  79. chia/_tests/core/mempool/test_mempool_manager.py +109 -80
  80. chia/_tests/core/mempool/test_mempool_performance.py +3 -4
  81. chia/_tests/core/mempool/test_singleton_fast_forward.py +12 -12
  82. chia/_tests/core/server/flood.py +6 -4
  83. chia/_tests/core/server/serve.py +10 -7
  84. chia/_tests/core/server/test_api_protocol.py +21 -0
  85. chia/_tests/core/server/test_capabilities.py +3 -5
  86. chia/_tests/core/server/test_dos.py +15 -16
  87. chia/_tests/core/server/test_loop.py +14 -10
  88. chia/_tests/core/server/test_node_discovery.py +1 -2
  89. chia/_tests/core/server/test_rate_limits.py +156 -44
  90. chia/_tests/core/server/test_server.py +8 -7
  91. chia/_tests/core/services/test_services.py +59 -37
  92. chia/_tests/core/ssl/test_ssl.py +5 -3
  93. chia/_tests/core/test_cost_calculation.py +5 -6
  94. chia/_tests/core/test_crawler.py +2 -2
  95. chia/_tests/core/test_db_conversion.py +5 -4
  96. chia/_tests/core/test_db_validation.py +6 -5
  97. chia/_tests/core/test_farmer_harvester_rpc.py +8 -7
  98. chia/_tests/core/test_filter.py +3 -5
  99. chia/_tests/core/test_full_node_rpc.py +64 -90
  100. chia/_tests/core/test_merkle_set.py +10 -10
  101. chia/_tests/core/test_program.py +2 -4
  102. chia/_tests/core/test_rpc_util.py +1 -2
  103. chia/_tests/core/test_seeder.py +124 -12
  104. chia/_tests/core/util/test_block_cache.py +5 -5
  105. chia/_tests/core/util/test_cached_bls.py +3 -3
  106. chia/_tests/core/util/test_config.py +13 -13
  107. chia/_tests/core/util/test_files.py +2 -2
  108. chia/_tests/core/util/test_jsonify.py +9 -9
  109. chia/_tests/core/util/test_keychain.py +13 -5
  110. chia/_tests/core/util/test_keyring_wrapper.py +6 -5
  111. chia/_tests/core/util/test_log_exceptions.py +3 -3
  112. chia/_tests/core/util/test_streamable.py +38 -38
  113. chia/_tests/db/test_db_wrapper.py +13 -12
  114. chia/_tests/environments/common.py +2 -2
  115. chia/_tests/environments/full_node.py +2 -2
  116. chia/_tests/environments/wallet.py +109 -48
  117. chia/_tests/farmer_harvester/test_farmer.py +35 -35
  118. chia/_tests/farmer_harvester/test_farmer_harvester.py +17 -17
  119. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +6 -5
  120. chia/_tests/farmer_harvester/test_third_party_harvesters.py +73 -46
  121. chia/_tests/fee_estimation/test_fee_estimation_integration.py +8 -8
  122. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +47 -47
  123. chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +6 -7
  124. chia/_tests/fee_estimation/test_mempoolitem_height_added.py +11 -11
  125. chia/_tests/generator/test_compression.py +13 -30
  126. chia/_tests/generator/test_generator_types.py +3 -3
  127. chia/_tests/generator/test_rom.py +7 -9
  128. chia/_tests/plot_sync/test_delta.py +2 -3
  129. chia/_tests/plot_sync/test_plot_sync.py +25 -24
  130. chia/_tests/plot_sync/test_receiver.py +9 -9
  131. chia/_tests/plot_sync/test_sender.py +1 -1
  132. chia/_tests/plot_sync/test_sync_simulated.py +27 -26
  133. chia/_tests/plot_sync/util.py +2 -1
  134. chia/_tests/plotting/test_plot_manager.py +54 -11
  135. chia/_tests/plotting/util.py +2 -3
  136. chia/_tests/pools/test_pool_cli_parsing.py +128 -0
  137. chia/_tests/pools/test_pool_cmdline.py +993 -15
  138. chia/_tests/pools/test_pool_config.py +3 -5
  139. chia/_tests/pools/test_pool_puzzles_lifecycle.py +10 -11
  140. chia/_tests/pools/test_pool_rpc.py +203 -90
  141. chia/_tests/pools/test_pool_wallet.py +12 -8
  142. chia/_tests/pools/test_wallet_pool_store.py +3 -3
  143. chia/_tests/process_junit.py +16 -17
  144. chia/_tests/rpc/test_rpc_client.py +59 -2
  145. chia/_tests/rpc/test_rpc_server.py +183 -0
  146. chia/_tests/simulation/test_simulation.py +5 -5
  147. chia/_tests/simulation/test_simulator.py +8 -10
  148. chia/_tests/simulation/test_start_simulator.py +5 -4
  149. chia/_tests/timelord/test_new_peak.py +19 -19
  150. chia/_tests/tools/test_run_block.py +1 -2
  151. chia/_tests/tools/test_virtual_project.py +591 -0
  152. chia/_tests/util/benchmark_cost.py +9 -9
  153. chia/_tests/util/benchmarks.py +1 -2
  154. chia/_tests/util/blockchain.py +12 -11
  155. chia/_tests/util/blockchain_mock.py +15 -15
  156. chia/_tests/util/build_network_protocol_files.py +12 -12
  157. chia/_tests/util/db_connection.py +3 -2
  158. chia/_tests/util/full_sync.py +14 -6
  159. chia/_tests/util/gen_ssl_certs.py +4 -5
  160. chia/_tests/util/generator_tools_testing.py +5 -7
  161. chia/_tests/util/get_name_puzzle_conditions.py +52 -0
  162. chia/_tests/util/key_tool.py +2 -3
  163. chia/_tests/util/misc.py +59 -106
  164. chia/_tests/util/network_protocol_data.py +7 -9
  165. chia/_tests/util/protocol_messages_json.py +112 -111
  166. chia/_tests/util/rpc.py +3 -0
  167. chia/_tests/util/run_block.py +16 -16
  168. chia/_tests/util/setup_nodes.py +25 -23
  169. chia/{clvm → _tests/util}/spend_sim.py +59 -55
  170. chia/_tests/util/split_managers.py +12 -9
  171. chia/_tests/util/temp_file.py +1 -1
  172. chia/_tests/util/test_action_scope.py +2 -1
  173. chia/_tests/util/test_async_pool.py +8 -8
  174. chia/_tests/util/test_build_job_matrix.py +2 -3
  175. chia/_tests/util/test_condition_tools.py +4 -6
  176. chia/_tests/util/test_config.py +5 -5
  177. chia/_tests/util/test_dump_keyring.py +1 -1
  178. chia/_tests/util/test_full_block_utils.py +19 -11
  179. chia/_tests/util/test_limited_semaphore.py +4 -3
  180. chia/_tests/util/test_logging_filter.py +2 -3
  181. chia/_tests/util/test_misc.py +29 -28
  182. chia/_tests/util/test_network.py +32 -31
  183. chia/_tests/util/test_network_protocol_files.py +2 -3
  184. chia/_tests/util/test_network_protocol_json.py +1 -0
  185. chia/_tests/util/test_network_protocol_test.py +18 -19
  186. chia/_tests/util/test_paginator.py +3 -4
  187. chia/_tests/util/test_pprint.py +1 -1
  188. chia/_tests/util/test_priority_mutex.py +18 -17
  189. chia/_tests/util/test_recursive_replace.py +2 -2
  190. chia/_tests/util/test_testnet_overrides.py +3 -3
  191. chia/_tests/util/test_timing.py +1 -1
  192. chia/_tests/util/test_trusted_peer.py +2 -2
  193. chia/_tests/util/time_out_assert.py +43 -6
  194. chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +13 -13
  195. chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +1 -1
  196. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +117 -29
  197. chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +15 -15
  198. chia/_tests/wallet/cat_wallet/test_trades.py +50 -28
  199. chia/_tests/wallet/clawback/test_clawback_decorator.py +3 -5
  200. chia/_tests/wallet/clawback/test_clawback_lifecycle.py +6 -6
  201. chia/_tests/wallet/clawback/test_clawback_metadata.py +1 -2
  202. chia/_tests/wallet/conftest.py +135 -74
  203. chia/_tests/wallet/dao_wallet/test_dao_clvm.py +25 -17
  204. chia/_tests/wallet/dao_wallet/test_dao_wallets.py +75 -75
  205. chia/_tests/wallet/db_wallet/test_db_graftroot.py +10 -12
  206. chia/_tests/wallet/db_wallet/test_dl_offers.py +6 -6
  207. chia/_tests/wallet/db_wallet/test_dl_wallet.py +18 -18
  208. chia/_tests/wallet/did_wallet/test_did.py +1277 -474
  209. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +12 -11
  210. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +115 -105
  211. chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +6 -7
  212. chia/_tests/wallet/nft_wallet/test_nft_offers.py +16 -16
  213. chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +3 -3
  214. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +38 -12
  215. chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +1 -1
  216. chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +31 -33
  217. chia/_tests/wallet/rpc/test_wallet_rpc.py +218 -171
  218. chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +36 -37
  219. chia/_tests/wallet/sync/test_wallet_sync.py +241 -78
  220. chia/_tests/wallet/test_address_type.py +20 -20
  221. chia/_tests/wallet/test_clvm_streamable.py +5 -5
  222. chia/_tests/wallet/test_coin_management.py +354 -0
  223. chia/_tests/wallet/test_coin_selection.py +34 -35
  224. chia/_tests/wallet/test_conditions.py +28 -16
  225. chia/_tests/wallet/test_debug_spend_bundle.py +156 -14
  226. chia/_tests/wallet/test_new_wallet_protocol.py +29 -31
  227. chia/_tests/wallet/test_nft_store.py +1 -2
  228. chia/_tests/wallet/test_notifications.py +2 -2
  229. chia/_tests/wallet/test_offer_parsing_performance.py +1 -1
  230. chia/_tests/wallet/test_puzzle_store.py +2 -3
  231. chia/_tests/wallet/test_sign_coin_spends.py +3 -3
  232. chia/_tests/wallet/test_signer_protocol.py +33 -34
  233. chia/_tests/wallet/test_singleton_lifecycle_fast.py +29 -29
  234. chia/_tests/wallet/test_taproot.py +1 -1
  235. chia/_tests/wallet/test_transaction_store.py +23 -19
  236. chia/_tests/wallet/test_util.py +36 -32
  237. chia/_tests/wallet/test_wallet.py +37 -37
  238. chia/_tests/wallet/test_wallet_action_scope.py +8 -8
  239. chia/_tests/wallet/test_wallet_blockchain.py +4 -6
  240. chia/_tests/wallet/test_wallet_coin_store.py +34 -34
  241. chia/_tests/wallet/test_wallet_node.py +69 -72
  242. chia/_tests/wallet/test_wallet_retry.py +3 -3
  243. chia/_tests/wallet/test_wallet_state_manager.py +12 -5
  244. chia/_tests/wallet/test_wallet_trade_store.py +2 -2
  245. chia/_tests/wallet/test_wallet_utils.py +5 -4
  246. chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -3
  247. chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +18 -18
  248. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +69 -40
  249. chia/_tests/wallet/wallet_block_tools.py +27 -27
  250. chia/_tests/weight_proof/test_weight_proof.py +30 -30
  251. chia/apis.py +19 -0
  252. chia/cmds/beta.py +8 -7
  253. chia/cmds/beta_funcs.py +15 -11
  254. chia/cmds/check_wallet_db.py +29 -27
  255. chia/cmds/chia.py +17 -9
  256. chia/cmds/cmd_classes.py +87 -79
  257. chia/cmds/cmd_helpers.py +242 -0
  258. chia/cmds/cmds_util.py +56 -66
  259. chia/cmds/coin_funcs.py +168 -153
  260. chia/cmds/coins.py +156 -194
  261. chia/cmds/configure.py +4 -3
  262. chia/cmds/dao.py +89 -33
  263. chia/cmds/dao_funcs.py +55 -33
  264. chia/cmds/data.py +7 -6
  265. chia/cmds/data_funcs.py +26 -21
  266. chia/cmds/db.py +4 -3
  267. chia/cmds/db_backup_func.py +2 -2
  268. chia/cmds/db_upgrade_func.py +3 -3
  269. chia/cmds/db_validate_func.py +2 -2
  270. chia/cmds/dev.py +2 -0
  271. chia/cmds/farm.py +18 -5
  272. chia/cmds/farm_funcs.py +17 -24
  273. chia/cmds/gh.py +275 -0
  274. chia/cmds/init.py +4 -11
  275. chia/cmds/init_funcs.py +9 -9
  276. chia/cmds/installers.py +5 -3
  277. chia/cmds/keys.py +56 -39
  278. chia/cmds/keys_funcs.py +30 -31
  279. chia/cmds/netspace.py +6 -3
  280. chia/cmds/netspace_funcs.py +3 -2
  281. chia/cmds/param_types.py +16 -6
  282. chia/cmds/passphrase.py +8 -7
  283. chia/cmds/passphrase_funcs.py +7 -61
  284. chia/cmds/peer.py +2 -1
  285. chia/cmds/peer_funcs.py +5 -5
  286. chia/cmds/plotnft.py +207 -153
  287. chia/cmds/plotnft_funcs.py +205 -174
  288. chia/cmds/plots.py +14 -6
  289. chia/cmds/plotters.py +2 -1
  290. chia/cmds/rpc.py +48 -28
  291. chia/cmds/show.py +2 -1
  292. chia/cmds/show_funcs.py +7 -6
  293. chia/cmds/signer.py +50 -58
  294. chia/cmds/sim.py +22 -14
  295. chia/cmds/sim_funcs.py +11 -11
  296. chia/cmds/start.py +3 -3
  297. chia/cmds/start_funcs.py +9 -12
  298. chia/cmds/stop.py +4 -3
  299. chia/cmds/units.py +1 -3
  300. chia/cmds/wallet.py +252 -96
  301. chia/cmds/wallet_funcs.py +217 -143
  302. chia/consensus/block_body_validation.py +133 -86
  303. chia/consensus/block_creation.py +42 -21
  304. chia/consensus/block_header_validation.py +32 -37
  305. chia/consensus/block_record.py +1 -2
  306. chia/consensus/blockchain.py +167 -180
  307. chia/consensus/blockchain_interface.py +10 -10
  308. chia/consensus/constants.py +2 -2
  309. chia/consensus/default_constants.py +3 -4
  310. chia/consensus/difficulty_adjustment.py +5 -5
  311. chia/consensus/find_fork_point.py +5 -5
  312. chia/consensus/full_block_to_block_record.py +4 -4
  313. chia/consensus/get_block_challenge.py +2 -2
  314. chia/consensus/get_block_generator.py +4 -3
  315. chia/consensus/multiprocess_validation.py +207 -304
  316. chia/consensus/vdf_info_computation.py +3 -3
  317. chia/daemon/client.py +46 -27
  318. chia/daemon/keychain_proxy.py +10 -9
  319. chia/daemon/keychain_server.py +18 -18
  320. chia/daemon/server.py +103 -113
  321. chia/daemon/windows_signal.py +2 -2
  322. chia/data_layer/data_layer.py +64 -76
  323. chia/data_layer/data_layer_api.py +8 -0
  324. chia/data_layer/data_layer_errors.py +3 -3
  325. chia/data_layer/data_layer_server.py +2 -2
  326. chia/data_layer/data_layer_util.py +71 -71
  327. chia/data_layer/data_layer_wallet.py +63 -67
  328. chia/data_layer/data_store.py +72 -72
  329. chia/data_layer/dl_wallet_store.py +10 -10
  330. chia/data_layer/download_data.py +5 -5
  331. chia/data_layer/s3_plugin_service.py +9 -9
  332. chia/data_layer/util/benchmark.py +0 -1
  333. chia/data_layer/util/plugin.py +2 -3
  334. chia/farmer/farmer.py +46 -43
  335. chia/farmer/farmer_api.py +27 -21
  336. chia/full_node/block_height_map.py +6 -6
  337. chia/full_node/block_store.py +41 -35
  338. chia/full_node/coin_store.py +42 -41
  339. chia/full_node/fee_estimate.py +2 -2
  340. chia/full_node/fee_estimation.py +1 -2
  341. chia/full_node/fee_history.py +5 -6
  342. chia/full_node/fee_tracker.py +24 -24
  343. chia/full_node/full_node.py +574 -300
  344. chia/full_node/full_node_api.py +181 -130
  345. chia/full_node/full_node_store.py +43 -43
  346. chia/full_node/hint_management.py +4 -4
  347. chia/full_node/hint_store.py +9 -10
  348. chia/full_node/mempool.py +25 -19
  349. chia/full_node/mempool_check_conditions.py +11 -42
  350. chia/full_node/mempool_manager.py +48 -53
  351. chia/full_node/pending_tx_cache.py +9 -9
  352. chia/full_node/subscriptions.py +23 -24
  353. chia/full_node/sync_store.py +8 -7
  354. chia/full_node/tx_processing_queue.py +3 -3
  355. chia/full_node/util/__init__.py +0 -0
  356. chia/full_node/weight_proof.py +79 -78
  357. chia/harvester/harvester.py +9 -8
  358. chia/harvester/harvester_api.py +19 -13
  359. chia/introducer/introducer.py +7 -5
  360. chia/introducer/introducer_api.py +9 -3
  361. chia/legacy/keyring.py +6 -5
  362. chia/plot_sync/delta.py +8 -8
  363. chia/plot_sync/receiver.py +12 -11
  364. chia/plot_sync/sender.py +15 -12
  365. chia/plotters/bladebit.py +12 -12
  366. chia/plotters/chiapos.py +2 -2
  367. chia/plotters/madmax.py +8 -8
  368. chia/plotters/plotters.py +6 -6
  369. chia/plotters/plotters_util.py +6 -4
  370. chia/plotting/cache.py +8 -7
  371. chia/plotting/check_plots.py +8 -8
  372. chia/plotting/create_plots.py +6 -6
  373. chia/plotting/manager.py +22 -22
  374. chia/plotting/util.py +31 -19
  375. chia/pools/pool_config.py +7 -7
  376. chia/pools/pool_puzzles.py +16 -16
  377. chia/pools/pool_wallet.py +64 -57
  378. chia/pools/pool_wallet_info.py +3 -3
  379. chia/protocols/full_node_protocol.py +3 -3
  380. chia/protocols/harvester_protocol.py +12 -12
  381. chia/protocols/introducer_protocol.py +1 -2
  382. chia/protocols/protocol_message_types.py +4 -4
  383. chia/protocols/protocol_state_machine.py +2 -2
  384. chia/protocols/protocol_timing.py +1 -0
  385. chia/protocols/shared_protocol.py +3 -3
  386. chia/protocols/timelord_protocol.py +2 -2
  387. chia/protocols/wallet_protocol.py +33 -33
  388. chia/rpc/crawler_rpc_api.py +12 -7
  389. chia/rpc/data_layer_rpc_api.py +49 -44
  390. chia/rpc/data_layer_rpc_client.py +41 -41
  391. chia/rpc/data_layer_rpc_util.py +7 -11
  392. chia/rpc/farmer_rpc_api.py +32 -27
  393. chia/rpc/farmer_rpc_client.py +14 -14
  394. chia/rpc/full_node_rpc_api.py +53 -48
  395. chia/rpc/full_node_rpc_client.py +30 -30
  396. chia/rpc/harvester_rpc_api.py +16 -11
  397. chia/rpc/harvester_rpc_client.py +6 -6
  398. chia/rpc/rpc_client.py +34 -14
  399. chia/rpc/rpc_server.py +117 -43
  400. chia/rpc/timelord_rpc_api.py +9 -4
  401. chia/rpc/util.py +11 -211
  402. chia/rpc/wallet_request_types.py +276 -60
  403. chia/rpc/wallet_rpc_api.py +563 -399
  404. chia/rpc/wallet_rpc_client.py +220 -250
  405. chia/seeder/crawl_store.py +6 -8
  406. chia/seeder/crawler.py +23 -36
  407. chia/seeder/crawler_api.py +28 -22
  408. chia/seeder/dns_server.py +99 -50
  409. chia/seeder/start_crawler.py +13 -9
  410. chia/server/address_manager.py +19 -19
  411. chia/server/address_manager_store.py +17 -17
  412. chia/server/api_protocol.py +106 -1
  413. chia/server/capabilities.py +3 -3
  414. chia/server/chia_policy.py +17 -16
  415. chia/server/introducer_peers.py +3 -3
  416. chia/server/node_discovery.py +34 -38
  417. chia/server/rate_limit_numbers.py +26 -16
  418. chia/server/rate_limits.py +67 -27
  419. chia/server/server.py +52 -31
  420. chia/server/signal_handlers.py +6 -3
  421. chia/server/ssl_context.py +5 -5
  422. chia/server/start_data_layer.py +37 -23
  423. chia/server/start_farmer.py +28 -16
  424. chia/server/start_full_node.py +29 -23
  425. chia/server/start_harvester.py +28 -15
  426. chia/server/start_introducer.py +27 -15
  427. chia/server/start_service.py +17 -29
  428. chia/server/start_timelord.py +25 -18
  429. chia/server/start_wallet.py +22 -18
  430. chia/server/upnp.py +4 -3
  431. chia/server/ws_connection.py +68 -54
  432. chia/simulator/add_blocks_in_batches.py +54 -0
  433. chia/simulator/block_tools.py +65 -64
  434. chia/simulator/full_node_simulator.py +66 -74
  435. chia/simulator/setup_services.py +10 -9
  436. chia/simulator/simulator_full_node_rpc_api.py +12 -14
  437. chia/simulator/simulator_full_node_rpc_client.py +3 -5
  438. chia/simulator/simulator_test_tools.py +8 -7
  439. chia/simulator/socket.py +1 -4
  440. chia/simulator/ssl_certs.py +5 -5
  441. chia/simulator/ssl_certs_1.py +2 -4
  442. chia/simulator/ssl_certs_10.py +2 -4
  443. chia/simulator/ssl_certs_2.py +2 -4
  444. chia/simulator/ssl_certs_3.py +2 -4
  445. chia/simulator/ssl_certs_4.py +2 -4
  446. chia/simulator/ssl_certs_5.py +2 -4
  447. chia/simulator/ssl_certs_6.py +2 -4
  448. chia/simulator/ssl_certs_7.py +2 -4
  449. chia/simulator/ssl_certs_8.py +2 -4
  450. chia/simulator/ssl_certs_9.py +2 -4
  451. chia/simulator/start_simulator.py +14 -6
  452. chia/simulator/wallet_tools.py +21 -20
  453. chia/ssl/create_ssl.py +11 -11
  454. chia/timelord/iters_from_block.py +2 -2
  455. chia/timelord/timelord.py +57 -33
  456. chia/timelord/timelord_api.py +12 -6
  457. chia/timelord/timelord_launcher.py +10 -8
  458. chia/timelord/timelord_state.py +5 -5
  459. chia/types/block_protocol.py +2 -2
  460. chia/types/blockchain_format/coin.py +3 -3
  461. chia/types/blockchain_format/program.py +17 -18
  462. chia/types/blockchain_format/tree_hash.py +9 -9
  463. chia/types/coin_spend.py +8 -8
  464. chia/types/condition_with_args.py +1 -2
  465. chia/types/eligible_coin_spends.py +16 -15
  466. chia/types/generator_types.py +1 -2
  467. chia/types/internal_mempool_item.py +1 -2
  468. chia/types/mempool_item.py +7 -7
  469. chia/types/mempool_submission_status.py +2 -2
  470. chia/types/peer_info.py +1 -1
  471. chia/types/spend_bundle.py +1 -2
  472. chia/types/transaction_queue_entry.py +2 -2
  473. chia/types/unfinished_header_block.py +2 -2
  474. chia/types/validation_state.py +14 -0
  475. chia/types/weight_proof.py +5 -6
  476. chia/util/action_scope.py +8 -8
  477. chia/util/async_pool.py +6 -4
  478. chia/util/augmented_chain.py +13 -9
  479. chia/util/batches.py +5 -2
  480. chia/util/bech32m.py +14 -11
  481. chia/util/beta_metrics.py +5 -4
  482. chia/util/block_cache.py +5 -5
  483. chia/util/byte_types.py +2 -0
  484. chia/util/check_fork_next_block.py +3 -2
  485. chia/util/chia_logging.py +41 -21
  486. chia/util/collection.py +3 -3
  487. chia/util/condition_tools.py +18 -18
  488. chia/util/config.py +26 -25
  489. chia/util/cpu.py +2 -0
  490. chia/util/db_synchronous.py +2 -0
  491. chia/util/db_version.py +2 -0
  492. chia/util/db_wrapper.py +13 -10
  493. chia/util/default_root.py +17 -0
  494. chia/util/dump_keyring.py +6 -6
  495. chia/util/errors.py +5 -3
  496. chia/util/file_keyring.py +22 -33
  497. chia/util/files.py +2 -0
  498. chia/util/full_block_utils.py +31 -7
  499. chia/util/generator_tools.py +18 -8
  500. chia/util/hash.py +3 -1
  501. chia/util/initial-config.yaml +19 -0
  502. chia/util/inline_executor.py +2 -0
  503. chia/util/ip_address.py +39 -0
  504. chia/util/json_util.py +0 -4
  505. chia/util/keychain.py +27 -24
  506. chia/util/keyring_wrapper.py +65 -4
  507. chia/util/limited_semaphore.py +3 -1
  508. chia/util/lock.py +4 -2
  509. chia/util/log_exceptions.py +5 -2
  510. chia/util/logging.py +3 -1
  511. chia/util/lru_cache.py +2 -0
  512. chia/util/math.py +4 -4
  513. chia/util/network.py +15 -73
  514. chia/util/paginator.py +3 -1
  515. chia/util/path.py +2 -0
  516. chia/util/permissions.py +3 -2
  517. chia/util/prev_transaction_block.py +1 -3
  518. chia/util/priority_mutex.py +6 -3
  519. chia/util/profiler.py +7 -4
  520. chia/util/recursive_replace.py +2 -0
  521. chia/util/safe_cancel_task.py +2 -0
  522. chia/util/service_groups.py +2 -2
  523. chia/util/setproctitle.py +2 -0
  524. chia/util/significant_bits.py +2 -0
  525. chia/util/ssl_check.py +11 -11
  526. chia/util/streamable.py +44 -56
  527. chia/util/task_referencer.py +59 -0
  528. chia/util/task_timing.py +22 -18
  529. chia/util/timing.py +4 -1
  530. chia/util/vdf_prover.py +2 -3
  531. chia/util/virtual_project_analysis.py +540 -0
  532. chia/util/ws_message.py +6 -6
  533. chia/wallet/cat_wallet/cat_info.py +3 -3
  534. chia/wallet/cat_wallet/cat_outer_puzzle.py +3 -3
  535. chia/wallet/cat_wallet/cat_utils.py +5 -4
  536. chia/wallet/cat_wallet/cat_wallet.py +56 -70
  537. chia/wallet/cat_wallet/dao_cat_info.py +3 -3
  538. chia/wallet/cat_wallet/dao_cat_wallet.py +18 -18
  539. chia/wallet/cat_wallet/lineage_store.py +2 -2
  540. chia/wallet/coin_selection.py +15 -15
  541. chia/wallet/conditions.py +257 -71
  542. chia/wallet/dao_wallet/dao_info.py +4 -4
  543. chia/wallet/dao_wallet/dao_utils.py +43 -42
  544. chia/wallet/dao_wallet/dao_wallet.py +66 -68
  545. chia/wallet/db_wallet/db_wallet_puzzles.py +12 -8
  546. chia/wallet/derive_keys.py +11 -11
  547. chia/wallet/did_wallet/did_info.py +3 -3
  548. chia/wallet/did_wallet/did_wallet.py +56 -47
  549. chia/wallet/did_wallet/did_wallet_puzzles.py +7 -6
  550. chia/wallet/lineage_proof.py +4 -4
  551. chia/wallet/nft_wallet/metadata_outer_puzzle.py +2 -2
  552. chia/wallet/nft_wallet/nft_info.py +4 -4
  553. chia/wallet/nft_wallet/nft_puzzles.py +16 -16
  554. chia/wallet/nft_wallet/nft_wallet.py +90 -89
  555. chia/wallet/nft_wallet/ownership_outer_puzzle.py +2 -2
  556. chia/wallet/nft_wallet/singleton_outer_puzzle.py +2 -2
  557. chia/wallet/nft_wallet/transfer_program_puzzle.py +2 -2
  558. chia/wallet/nft_wallet/uncurry_nft.py +2 -2
  559. chia/wallet/notification_manager.py +5 -5
  560. chia/wallet/notification_store.py +6 -6
  561. chia/wallet/outer_puzzles.py +2 -2
  562. chia/wallet/payment.py +4 -5
  563. chia/wallet/puzzle_drivers.py +4 -4
  564. chia/wallet/puzzles/clawback/drivers.py +5 -5
  565. chia/wallet/puzzles/clawback/puzzle_decorator.py +7 -7
  566. chia/wallet/puzzles/load_clvm.py +2 -3
  567. chia/wallet/puzzles/p2_conditions.py +1 -2
  568. chia/wallet/puzzles/p2_delegated_conditions.py +1 -2
  569. chia/wallet/puzzles/p2_delegated_puzzle.py +2 -3
  570. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +3 -4
  571. chia/wallet/puzzles/p2_m_of_n_delegate_direct.py +1 -2
  572. chia/wallet/puzzles/p2_puzzle_hash.py +1 -2
  573. chia/wallet/puzzles/puzzle_utils.py +7 -7
  574. chia/wallet/puzzles/singleton_top_layer.py +6 -5
  575. chia/wallet/puzzles/singleton_top_layer_v1_1.py +6 -5
  576. chia/wallet/puzzles/tails.py +34 -30
  577. chia/wallet/signer_protocol.py +7 -8
  578. chia/wallet/singleton.py +4 -4
  579. chia/wallet/trade_manager.py +155 -141
  580. chia/wallet/trade_record.py +5 -5
  581. chia/wallet/trading/offer.py +100 -101
  582. chia/wallet/trading/trade_store.py +14 -14
  583. chia/wallet/transaction_record.py +31 -16
  584. chia/wallet/util/address_type.py +4 -4
  585. chia/wallet/util/blind_signer_tl.py +8 -12
  586. chia/wallet/util/clvm_streamable.py +15 -15
  587. chia/wallet/util/compute_hints.py +5 -5
  588. chia/wallet/util/compute_memos.py +4 -6
  589. chia/wallet/util/curry_and_treehash.py +3 -2
  590. chia/wallet/util/debug_spend_bundle.py +6 -8
  591. chia/wallet/util/merkle_tree.py +10 -10
  592. chia/wallet/util/merkle_utils.py +10 -10
  593. chia/wallet/util/new_peak_queue.py +3 -3
  594. chia/wallet/util/peer_request_cache.py +8 -8
  595. chia/{util → wallet/util}/pprint.py +2 -3
  596. chia/wallet/util/puzzle_compression.py +3 -4
  597. chia/wallet/util/puzzle_decorator.py +10 -10
  598. chia/wallet/util/query_filter.py +9 -10
  599. chia/wallet/util/tx_config.py +12 -12
  600. chia/wallet/util/wallet_sync_utils.py +24 -21
  601. chia/wallet/util/wallet_types.py +9 -2
  602. chia/wallet/vc_wallet/cr_cat_drivers.py +28 -27
  603. chia/wallet/vc_wallet/cr_cat_wallet.py +42 -40
  604. chia/wallet/vc_wallet/cr_outer_puzzle.py +4 -4
  605. chia/wallet/vc_wallet/vc_drivers.py +16 -16
  606. chia/wallet/vc_wallet/vc_store.py +9 -9
  607. chia/wallet/vc_wallet/vc_wallet.py +35 -35
  608. chia/wallet/wallet.py +54 -54
  609. chia/wallet/wallet_action_scope.py +14 -13
  610. chia/wallet/wallet_blockchain.py +10 -10
  611. chia/wallet/wallet_coin_record.py +2 -2
  612. chia/wallet/wallet_coin_store.py +10 -10
  613. chia/wallet/wallet_info.py +1 -2
  614. chia/wallet/wallet_interested_store.py +5 -5
  615. chia/wallet/wallet_nft_store.py +6 -6
  616. chia/wallet/wallet_node.py +72 -76
  617. chia/wallet/wallet_node_api.py +33 -27
  618. chia/wallet/wallet_pool_store.py +1 -2
  619. chia/wallet/wallet_protocol.py +15 -15
  620. chia/wallet/wallet_puzzle_store.py +35 -4
  621. chia/wallet/wallet_retry_store.py +2 -2
  622. chia/wallet/wallet_singleton_store.py +10 -9
  623. chia/wallet/wallet_spend_bundle.py +4 -20
  624. chia/wallet/wallet_state_manager.py +223 -224
  625. chia/wallet/wallet_transaction_store.py +44 -18
  626. chia/wallet/wallet_user_store.py +2 -2
  627. chia/wallet/wallet_weight_proof_handler.py +2 -2
  628. {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/LICENSE +1 -1
  629. {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/METADATA +67 -72
  630. chia_blockchain-2.5.1rc2.dist-info/RECORD +1042 -0
  631. {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/WHEEL +1 -1
  632. mozilla-ca/cacert.pem +32 -87
  633. chia/_tests/cmds/wallet/test_coins.py +0 -195
  634. chia/consensus/block_root_validation.py +0 -46
  635. chia/util/api_decorators.py +0 -89
  636. chia_blockchain-2.5.0rc2.dist-info/RECORD +0 -1028
  637. {chia_blockchain-2.5.0rc2.dist-info → chia_blockchain-2.5.1rc2.dist-info}/entry_points.txt +0 -0
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import asyncio
4
4
  import time
5
- from typing import Any, Callable, Dict, List
5
+ from typing import Any, Callable
6
6
 
7
7
  import pytest
8
8
  from chia_rs import AugSchemeMPL, G1Element, G2Element
@@ -49,9 +49,9 @@ async def get_wallet_number(manager: WalletStateManager) -> int:
49
49
  async def wait_rpc_state_condition(
50
50
  timeout: float,
51
51
  async_function: Any,
52
- params: List[Any],
53
- condition_func: Callable[[Dict[str, Any]], bool],
54
- ) -> Dict[str, Any]:
52
+ params: list[Any],
53
+ condition_func: Callable[[dict[str, Any]], bool],
54
+ ) -> dict[str, Any]:
55
55
  __tracebackhide__ = True
56
56
 
57
57
  timeout = adjusted_timeout(timeout=timeout)
@@ -298,10 +298,11 @@ async def test_nft_wallet_creation_and_transfer(wallet_environments: WalletTestF
298
298
  height = full_node_api.full_node.blockchain.get_peak_height()
299
299
  assert height is not None
300
300
  await full_node_api.reorg_from_index_to_new_index(
301
- ReorgProtocol(uint32(height - 1), uint32(height + 1), bytes32([0] * 32), None)
301
+ ReorgProtocol(uint32(height - 1), uint32(height + 1), bytes32.zeros, None)
302
302
  )
303
303
  await time_out_assert(60, full_node_api.full_node.blockchain.get_peak_height, height + 1)
304
- await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node_0)
304
+ await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node_0, peak_height=uint32(height + 1), timeout=10)
305
+ await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node_1, peak_height=uint32(height + 1), timeout=10)
305
306
  await env_0.change_balances(
306
307
  {
307
308
  "xch": {
@@ -477,7 +478,7 @@ async def test_nft_wallet_creation_and_transfer(wallet_environments: WalletTestF
477
478
  height = full_node_api.full_node.blockchain.get_peak_height()
478
479
  assert height is not None
479
480
  await full_node_api.reorg_from_index_to_new_index(
480
- ReorgProtocol(uint32(height - 1), uint32(height + 2), bytes32([0] * 32), None)
481
+ ReorgProtocol(uint32(height - 1), uint32(height + 2), bytes32.zeros, None)
481
482
  )
482
483
 
483
484
  await full_node_api.wait_for_self_synced()
@@ -595,7 +596,7 @@ async def test_nft_wallet_rpc_creation_and_list(wallet_environments: WalletTestF
595
596
  ["nft_get_nfts", dict(wallet_id=env.wallet_aliases["nft"])],
596
597
  lambda x: x["success"] and len(x["nft_list"]) == 2,
597
598
  )
598
- coins: List[NFTInfo] = [NFTInfo.from_json_dict(d) for d in coins_response["nft_list"]]
599
+ coins: list[NFTInfo] = [NFTInfo.from_json_dict(d) for d in coins_response["nft_list"]]
599
600
  uris = []
600
601
  for coin in coins:
601
602
  assert not coin.supports_did
@@ -670,7 +671,7 @@ async def test_nft_wallet_rpc_update_metadata(wallet_environments: WalletTestFra
670
671
  ]
671
672
  )
672
673
 
673
- coins: List[Dict[str, Any]] = (await env.rpc_client.list_nfts(nft_wallet.id(), start_index=0, num=1))["nft_list"]
674
+ coins: list[dict[str, Any]] = (await env.rpc_client.list_nfts(nft_wallet.id(), start_index=0, num=1))["nft_list"]
674
675
  coin = coins[0]
675
676
  assert coin["mint_height"] > 0
676
677
  assert coin["data_hash"] == "0xd4584ad463139fa8c0d9f68f4b59f185"
@@ -876,6 +877,7 @@ async def test_nft_with_did_wallet_creation(wallet_environments: WalletTestFrame
876
877
  "spendable_balance": -1,
877
878
  "pending_change": 1,
878
879
  "pending_coin_removal_count": 1,
880
+ "max_send_amount": -1,
879
881
  },
880
882
  "nft_w_did": {"pending_coin_removal_count": 1},
881
883
  },
@@ -885,6 +887,7 @@ async def test_nft_with_did_wallet_creation(wallet_environments: WalletTestFrame
885
887
  "spendable_balance": 1,
886
888
  "pending_change": -1,
887
889
  "pending_coin_removal_count": -1,
890
+ "max_send_amount": 1,
888
891
  },
889
892
  "nft_w_did": {"pending_coin_removal_count": -1, "unspent_coin_count": 1},
890
893
  },
@@ -927,7 +930,7 @@ async def test_nft_with_did_wallet_creation(wallet_environments: WalletTestFrame
927
930
  ]
928
931
  )
929
932
  # Check DID NFT
930
- coins: List[Dict[str, Any]] = (await env.rpc_client.list_nfts(nft_wallet.id(), start_index=0, num=1))["nft_list"]
933
+ coins: list[dict[str, Any]] = (await env.rpc_client.list_nfts(nft_wallet.id(), start_index=0, num=1))["nft_list"]
931
934
  assert len(coins) == 1
932
935
  did_nft = coins[0]
933
936
  assert did_nft["mint_height"] > 0
@@ -1042,6 +1045,7 @@ async def test_nft_rpc_mint(wallet_environments: WalletTestFramework) -> None:
1042
1045
  "spendable_balance": -1,
1043
1046
  "pending_change": 1,
1044
1047
  "pending_coin_removal_count": 1,
1048
+ "max_send_amount": -1,
1045
1049
  },
1046
1050
  "nft_w_did": {"pending_coin_removal_count": 1},
1047
1051
  },
@@ -1051,6 +1055,7 @@ async def test_nft_rpc_mint(wallet_environments: WalletTestFramework) -> None:
1051
1055
  "spendable_balance": 1,
1052
1056
  "pending_change": -1,
1053
1057
  "pending_coin_removal_count": -1,
1058
+ "max_send_amount": 1,
1054
1059
  },
1055
1060
  "nft_w_did": {"pending_coin_removal_count": -1, "unspent_coin_count": 1},
1056
1061
  },
@@ -1058,7 +1063,7 @@ async def test_nft_rpc_mint(wallet_environments: WalletTestFramework) -> None:
1058
1063
  ]
1059
1064
  )
1060
1065
 
1061
- coins: List[Dict[str, Any]] = (
1066
+ coins: list[dict[str, Any]] = (
1062
1067
  await env.rpc_client.list_nfts(env.wallet_aliases["nft_w_did"], start_index=0, num=1)
1063
1068
  )["nft_list"]
1064
1069
  assert len(coins) == 1
@@ -1169,6 +1174,7 @@ async def test_nft_transfer_nft_with_did(wallet_environments: WalletTestFramewor
1169
1174
  "spendable_balance": -1,
1170
1175
  "pending_change": 1,
1171
1176
  "pending_coin_removal_count": 1,
1177
+ "max_send_amount": -1,
1172
1178
  },
1173
1179
  "nft": {"pending_coin_removal_count": 1},
1174
1180
  },
@@ -1184,6 +1190,7 @@ async def test_nft_transfer_nft_with_did(wallet_environments: WalletTestFramewor
1184
1190
  "spendable_balance": 1,
1185
1191
  "pending_change": -1,
1186
1192
  "pending_coin_removal_count": -1,
1193
+ "max_send_amount": 1,
1187
1194
  },
1188
1195
  "nft": {"pending_coin_removal_count": -1, "unspent_coin_count": 1},
1189
1196
  },
@@ -1193,7 +1200,7 @@ async def test_nft_transfer_nft_with_did(wallet_environments: WalletTestFramewor
1193
1200
  )
1194
1201
 
1195
1202
  # Check DID NFT
1196
- coins: List[Dict[str, Any]] = (await env_0.rpc_client.list_nfts(env_0.wallet_aliases["nft"], start_index=0, num=1))[
1203
+ coins: list[dict[str, Any]] = (await env_0.rpc_client.list_nfts(env_0.wallet_aliases["nft"], start_index=0, num=1))[
1197
1204
  "nft_list"
1198
1205
  ]
1199
1206
  assert len(coins) == 1
@@ -1218,6 +1225,7 @@ async def test_nft_transfer_nft_with_did(wallet_environments: WalletTestFramewor
1218
1225
  "unconfirmed_wallet_balance": -1,
1219
1226
  "spendable_balance": -1,
1220
1227
  "pending_coin_removal_count": 1,
1228
+ "max_send_amount": -1,
1221
1229
  }
1222
1230
  },
1223
1231
  post_block_balance_updates={}, # DID wallet is deleted
@@ -1313,6 +1321,7 @@ async def test_nft_transfer_nft_with_did(wallet_environments: WalletTestFramewor
1313
1321
  "spendable_balance": -1,
1314
1322
  "pending_change": 1,
1315
1323
  "pending_coin_removal_count": 1,
1324
+ "max_send_amount": -1,
1316
1325
  },
1317
1326
  "nft": {"pending_coin_removal_count": 1},
1318
1327
  },
@@ -1328,6 +1337,7 @@ async def test_nft_transfer_nft_with_did(wallet_environments: WalletTestFramewor
1328
1337
  "spendable_balance": 1,
1329
1338
  "pending_change": -1,
1330
1339
  "pending_coin_removal_count": -1,
1340
+ "max_send_amount": 1,
1331
1341
  },
1332
1342
  "nft": {"pending_coin_removal_count": -1, "unspent_coin_count": -1},
1333
1343
  "nft_w_did": {"init": True, "unspent_coin_count": 1},
@@ -1430,6 +1440,7 @@ async def test_update_metadata_for_nft_did(wallet_environments: WalletTestFramew
1430
1440
  "spendable_balance": -1,
1431
1441
  "pending_change": 1,
1432
1442
  "pending_coin_removal_count": 1,
1443
+ "max_send_amount": -1,
1433
1444
  },
1434
1445
  "nft": {"pending_coin_removal_count": 1},
1435
1446
  },
@@ -1445,6 +1456,7 @@ async def test_update_metadata_for_nft_did(wallet_environments: WalletTestFramew
1445
1456
  "spendable_balance": 1,
1446
1457
  "pending_change": -1,
1447
1458
  "pending_coin_removal_count": -1,
1459
+ "max_send_amount": 1,
1448
1460
  },
1449
1461
  "nft": {"pending_coin_removal_count": -1, "unspent_coin_count": 1},
1450
1462
  },
@@ -1604,6 +1616,7 @@ async def test_nft_bulk_set_did(wallet_environments: WalletTestFramework) -> Non
1604
1616
  "spendable_balance": -1,
1605
1617
  "pending_change": 1,
1606
1618
  "pending_coin_removal_count": 1,
1619
+ "max_send_amount": -1,
1607
1620
  },
1608
1621
  "nft_w_did": {"pending_coin_removal_count": 1},
1609
1622
  },
@@ -1619,6 +1632,7 @@ async def test_nft_bulk_set_did(wallet_environments: WalletTestFramework) -> Non
1619
1632
  "spendable_balance": 1,
1620
1633
  "pending_change": -1,
1621
1634
  "pending_coin_removal_count": -1,
1635
+ "max_send_amount": 1,
1622
1636
  },
1623
1637
  "nft_w_did": {"pending_coin_removal_count": -1, "unspent_coin_count": 1},
1624
1638
  },
@@ -1694,6 +1708,7 @@ async def test_nft_bulk_set_did(wallet_environments: WalletTestFramework) -> Non
1694
1708
  "spendable_balance": -1,
1695
1709
  "pending_change": 1,
1696
1710
  "pending_coin_removal_count": 1,
1711
+ "max_send_amount": -1,
1697
1712
  },
1698
1713
  "nft_w_did": {"pending_coin_removal_count": 1},
1699
1714
  },
@@ -1709,6 +1724,7 @@ async def test_nft_bulk_set_did(wallet_environments: WalletTestFramework) -> Non
1709
1724
  "spendable_balance": 1,
1710
1725
  "pending_change": -1,
1711
1726
  "pending_coin_removal_count": -1,
1727
+ "max_send_amount": 1,
1712
1728
  },
1713
1729
  "nft_w_did": {"pending_coin_removal_count": -1, "unspent_coin_count": 1},
1714
1730
  },
@@ -1761,6 +1777,7 @@ async def test_nft_bulk_set_did(wallet_environments: WalletTestFramework) -> Non
1761
1777
  "spendable_balance": -1,
1762
1778
  "pending_change": 1,
1763
1779
  "pending_coin_removal_count": 1,
1780
+ "max_send_amount": -1,
1764
1781
  },
1765
1782
  "nft_w_did": {"pending_coin_removal_count": 2},
1766
1783
  "nft_no_did": {"pending_coin_removal_count": 1},
@@ -1777,6 +1794,7 @@ async def test_nft_bulk_set_did(wallet_environments: WalletTestFramework) -> Non
1777
1794
  "spendable_balance": 1,
1778
1795
  "pending_change": -1,
1779
1796
  "pending_coin_removal_count": -1,
1797
+ "max_send_amount": 1,
1780
1798
  },
1781
1799
  "nft_w_did": {"pending_coin_removal_count": -2, "unspent_coin_count": 1},
1782
1800
  "nft_no_did": {"pending_coin_removal_count": -1, "unspent_coin_count": -1},
@@ -1900,6 +1918,7 @@ async def test_nft_bulk_transfer(wallet_environments: WalletTestFramework) -> No
1900
1918
  "spendable_balance": -1,
1901
1919
  "pending_change": 1,
1902
1920
  "pending_coin_removal_count": 1,
1921
+ "max_send_amount": -1,
1903
1922
  },
1904
1923
  "nft_w_did": {"pending_coin_removal_count": 1},
1905
1924
  },
@@ -1915,6 +1934,7 @@ async def test_nft_bulk_transfer(wallet_environments: WalletTestFramework) -> No
1915
1934
  "spendable_balance": 1,
1916
1935
  "pending_change": -1,
1917
1936
  "pending_coin_removal_count": -1,
1937
+ "max_send_amount": 1,
1918
1938
  },
1919
1939
  "nft_w_did": {"pending_coin_removal_count": -1, "unspent_coin_count": 1},
1920
1940
  },
@@ -1990,6 +2010,7 @@ async def test_nft_bulk_transfer(wallet_environments: WalletTestFramework) -> No
1990
2010
  "spendable_balance": -1,
1991
2011
  "pending_change": 1,
1992
2012
  "pending_coin_removal_count": 1,
2013
+ "max_send_amount": -1,
1993
2014
  },
1994
2015
  "nft_w_did": {"pending_coin_removal_count": 1},
1995
2016
  },
@@ -2005,6 +2026,7 @@ async def test_nft_bulk_transfer(wallet_environments: WalletTestFramework) -> No
2005
2026
  "spendable_balance": 1,
2006
2027
  "pending_change": -1,
2007
2028
  "pending_coin_removal_count": -1,
2029
+ "max_send_amount": 1,
2008
2030
  },
2009
2031
  "nft_w_did": {"pending_coin_removal_count": -1, "unspent_coin_count": 1},
2010
2032
  },
@@ -2226,6 +2248,7 @@ async def test_nft_set_did(wallet_environments: WalletTestFramework) -> None:
2226
2248
  "spendable_balance": -1,
2227
2249
  "pending_change": 1,
2228
2250
  "pending_coin_removal_count": 1,
2251
+ "max_send_amount": -1,
2229
2252
  },
2230
2253
  "nft_no_did": {"pending_coin_removal_count": 1},
2231
2254
  },
@@ -2235,6 +2258,7 @@ async def test_nft_set_did(wallet_environments: WalletTestFramework) -> None:
2235
2258
  "spendable_balance": 1,
2236
2259
  "pending_change": -1,
2237
2260
  "pending_coin_removal_count": -1,
2261
+ "max_send_amount": 1,
2238
2262
  },
2239
2263
  "nft_no_did": {"pending_coin_removal_count": -1, "unspent_coin_count": -1},
2240
2264
  "nft_w_did1": {"unspent_coin_count": 1},
@@ -2278,6 +2302,7 @@ async def test_nft_set_did(wallet_environments: WalletTestFramework) -> None:
2278
2302
  "spendable_balance": -1,
2279
2303
  "pending_change": 1,
2280
2304
  "pending_coin_removal_count": 1,
2305
+ "max_send_amount": -1,
2281
2306
  },
2282
2307
  "nft_w_did1": {"pending_coin_removal_count": 1},
2283
2308
  },
@@ -2287,6 +2312,7 @@ async def test_nft_set_did(wallet_environments: WalletTestFramework) -> None:
2287
2312
  "spendable_balance": 1,
2288
2313
  "pending_change": -1,
2289
2314
  "pending_coin_removal_count": -1,
2315
+ "max_send_amount": 1,
2290
2316
  },
2291
2317
  "nft_w_did1": {"pending_coin_removal_count": -1, "unspent_coin_count": -1},
2292
2318
  "nft_w_did2": {"init": True, "unspent_coin_count": 1},
@@ -17,7 +17,7 @@ from chia.wallet.uncurried_puzzle import uncurry_puzzle
17
17
  def test_ownership_outer_puzzle() -> None:
18
18
  ACS = Program.to(1)
19
19
  NIL = Program.to([])
20
- owner = bytes32([0] * 32)
20
+ owner = bytes32.zeros
21
21
  # (mod (current_owner conditions solution)
22
22
  # (list current_owner () conditions)
23
23
  # )
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import asyncio
4
+ import contextlib
4
5
  import logging
5
6
 
6
7
  import pytest
@@ -28,7 +29,7 @@ class TestWalletRpc:
28
29
  self, two_wallet_nodes_services: SimulatorsAndWalletsServices, trusted: bool, self_hostname: str
29
30
  ) -> None:
30
31
  num_blocks = 5
31
- [full_node_service], wallet_services, bt = two_wallet_nodes_services
32
+ [full_node_service], wallet_services, _bt = two_wallet_nodes_services
32
33
  full_node_api = full_node_service._api
33
34
  full_node_server = full_node_api.full_node.server
34
35
  wallet_node = wallet_services[0]._node
@@ -61,27 +62,31 @@ class TestWalletRpc:
61
62
  assert wallet_services[0].rpc_server is not None
62
63
  assert wallet_services[1].rpc_server is not None
63
64
 
64
- client = await WalletRpcClient.create(
65
- self_hostname,
66
- wallet_services[0].rpc_server.listen_port,
67
- wallet_services[0].root_path,
68
- wallet_services[0].config,
69
- )
70
- await validate_get_routes(client, wallet_services[0].rpc_server.rpc_api)
71
- client_2 = await WalletRpcClient.create(
72
- self_hostname,
73
- wallet_services[1].rpc_server.listen_port,
74
- wallet_services[1].root_path,
75
- wallet_services[1].config,
76
- )
77
- await validate_get_routes(client_2, wallet_services[1].rpc_server.rpc_api)
65
+ async with contextlib.AsyncExitStack() as exit_stack:
66
+ client = await exit_stack.enter_async_context(
67
+ WalletRpcClient.create_as_context(
68
+ self_hostname,
69
+ wallet_services[0].rpc_server.listen_port,
70
+ wallet_services[0].root_path,
71
+ wallet_services[0].config,
72
+ )
73
+ )
74
+ await validate_get_routes(client, wallet_services[0].rpc_server.rpc_api)
75
+ client_2 = await exit_stack.enter_async_context(
76
+ WalletRpcClient.create_as_context(
77
+ self_hostname,
78
+ wallet_services[1].rpc_server.listen_port,
79
+ wallet_services[1].root_path,
80
+ wallet_services[1].config,
81
+ )
82
+ )
83
+ await validate_get_routes(client_2, wallet_services[1].rpc_server.rpc_api)
78
84
 
79
- try:
80
- merkle_root: bytes32 = bytes32([0] * 32)
85
+ merkle_root: bytes32 = bytes32.zeros
81
86
  txs, launcher_id = await client.create_new_dl(merkle_root, uint64(50))
82
87
 
83
88
  for i in range(0, 5):
84
- await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(bytes32([0] * 32)))
89
+ await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(bytes32.zeros))
85
90
  await asyncio.sleep(0.5)
86
91
 
87
92
  async def is_singleton_confirmed(rpc_client: WalletRpcClient, lid: bytes32) -> bool:
@@ -99,7 +104,7 @@ class TestWalletRpc:
99
104
  await client.dl_update_root(launcher_id, new_root, uint64(100))
100
105
 
101
106
  for i in range(0, 5):
102
- await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(bytes32([0] * 32)))
107
+ await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(bytes32.zeros))
103
108
  await asyncio.sleep(0.5)
104
109
 
105
110
  new_singleton_record = await client.dl_latest_singleton(launcher_id)
@@ -119,7 +124,7 @@ class TestWalletRpc:
119
124
  if await is_singleton_confirmed(rpc_client, lid):
120
125
  rec = await rpc_client.dl_latest_singleton(lid)
121
126
  if rec is None:
122
- raise Exception("No latest singleton for: {lid!r}")
127
+ raise Exception(f"No latest singleton for: {lid!r}")
123
128
  return rec.generation == generation
124
129
  else:
125
130
  return False
@@ -163,7 +168,7 @@ class TestWalletRpc:
163
168
  txs, launcher_id_3 = await client.create_new_dl(merkle_root, uint64(50))
164
169
 
165
170
  for i in range(0, 5):
166
- await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(bytes32([0] * 32)))
171
+ await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(bytes32.zeros))
167
172
  await asyncio.sleep(0.5)
168
173
 
169
174
  await time_out_assert(15, is_singleton_confirmed, True, client, launcher_id_2)
@@ -180,7 +185,7 @@ class TestWalletRpc:
180
185
  )
181
186
 
182
187
  for i in range(0, 5):
183
- await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(bytes32([0] * 32)))
188
+ await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(bytes32.zeros))
184
189
  await asyncio.sleep(0.5)
185
190
 
186
191
  await time_out_assert(15, is_singleton_confirmed, True, client, launcher_id)
@@ -204,13 +209,13 @@ class TestWalletRpc:
204
209
  height = full_node_api.full_node.blockchain.get_peak_height()
205
210
  assert height is not None
206
211
  for i in range(0, 5):
207
- await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(bytes32([0] * 32)))
212
+ await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(bytes32.zeros))
208
213
  await asyncio.sleep(0.5)
209
214
  additions = []
210
215
  for tx in txs:
211
216
  if tx.spend_bundle is not None:
212
217
  additions.extend(tx.spend_bundle.additions())
213
- mirror_coin = [c for c in additions if c.puzzle_hash == create_mirror_puzzle().get_tree_hash()][0]
218
+ mirror_coin = next(c for c in additions if c.puzzle_hash == create_mirror_puzzle().get_tree_hash())
214
219
  mirror = Mirror(
215
220
  mirror_coin.name(),
216
221
  launcher_id,
@@ -222,23 +227,16 @@ class TestWalletRpc:
222
227
  await time_out_assert(15, client.dl_get_mirrors, [mirror], launcher_id)
223
228
  await client.dl_delete_mirror(mirror_coin.name(), fee=uint64(2000000000000))
224
229
  for i in range(0, 5):
225
- await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(bytes32([0] * 32)))
230
+ await full_node_api.farm_new_transaction_block(FarmNewBlockProtocol(bytes32.zeros))
226
231
  await asyncio.sleep(0.5)
227
232
  await time_out_assert(15, client.dl_get_mirrors, [], launcher_id)
228
233
 
229
- finally:
230
- # Checks that the RPC manages to stop the node
231
- client.close()
232
- client_2.close()
233
- await client.await_closed()
234
- await client_2.await_closed()
235
-
236
234
  @pytest.mark.parametrize("trusted", [True, False])
237
235
  @pytest.mark.anyio
238
236
  async def test_wallet_dl_verify_proof(
239
237
  self, one_wallet_and_one_simulator_services: SimulatorsAndWalletsServices, trusted: bool, self_hostname: str
240
238
  ) -> None:
241
- [full_node_service], [wallet_service], bt = one_wallet_and_one_simulator_services
239
+ [full_node_service], [wallet_service], _bt = one_wallet_and_one_simulator_services
242
240
  full_node_api = full_node_service._api
243
241
  full_node_server = full_node_api.full_node.server
244
242
  wallet_node = wallet_service._node