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
@@ -3,12 +3,11 @@ from __future__ import annotations
3
3
 
4
4
  import sys
5
5
  from subprocess import check_output
6
- from typing import Dict, Set, Tuple
7
6
 
8
7
  # check for duplicate index names
9
8
 
10
9
 
11
- def check_create(sql_type: str, cwd: str, exemptions: Set[Tuple[str, str]] = set()) -> int:
10
+ def check_create(sql_type: str, cwd: str, exemptions: set[tuple[str, str]] = set()) -> int:
12
11
  # the need for this change seems to come from the git precommit plus the python pre-commit environment
13
12
  # having GIT_DIR specified but not GIT_WORK_TREE. this is an issue in some less common git setups
14
13
  # such as with worktrees, at least in particular uses of them. i think that we could switch to letting
@@ -19,7 +18,7 @@ def check_create(sql_type: str, cwd: str, exemptions: Set[Tuple[str, str]] = set
19
18
 
20
19
  ret = 0
21
20
 
22
- items: Dict[str, str] = {}
21
+ items: dict[str, str] = {}
23
22
  for line in lines:
24
23
  if f"CREATE {sql_type}" not in line:
25
24
  continue
@@ -1,9 +1,9 @@
1
1
  from __future__ import annotations
2
2
 
3
+ from chia._tests.util.get_name_puzzle_conditions import get_name_puzzle_conditions
3
4
  from chia.consensus.cost_calculator import NPCResult
4
5
  from chia.consensus.default_constants import DEFAULT_CONSTANTS
5
6
  from chia.full_node.bundle_tools import simple_solution_generator
6
- from chia.full_node.mempool_check_conditions import get_name_puzzle_conditions
7
7
  from chia.types.blockchain_format.program import INFINITE_COST
8
8
  from chia.types.generator_types import BlockGenerator
9
9
  from chia.types.spend_bundle import SpendBundle
@@ -1,13 +1,15 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from collections import defaultdict
4
+ from collections.abc import Iterator
4
5
  from dataclasses import dataclass, replace
5
- from typing import Dict, Iterator, Optional
6
+ from typing import Optional
6
7
 
8
+ from chia._tests.util.get_name_puzzle_conditions import get_name_puzzle_conditions
7
9
  from chia.consensus.constants import ConsensusConstants
8
10
  from chia.consensus.cost_calculator import NPCResult
9
11
  from chia.full_node.bundle_tools import simple_solution_generator
10
- from chia.full_node.mempool_check_conditions import get_name_puzzle_conditions, mempool_check_time_locks
12
+ from chia.full_node.mempool_check_conditions import mempool_check_time_locks
11
13
  from chia.types.blockchain_format.coin import Coin
12
14
  from chia.types.blockchain_format.sized_bytes import bytes32
13
15
  from chia.types.coin_record import CoinRecord
@@ -30,8 +32,8 @@ class CoinTimestamp:
30
32
 
31
33
  class CoinStore:
32
34
  def __init__(self, constants: ConsensusConstants, reward_mask: int = 0):
33
- self._db: Dict[bytes32, CoinRecord] = dict()
34
- self._ph_index: Dict = defaultdict(list)
35
+ self._db: dict[bytes32, CoinRecord] = dict()
36
+ self._ph_index: dict = defaultdict(list)
35
37
  self._reward_mask = reward_mask
36
38
  self._constants = constants
37
39
 
@@ -40,7 +42,7 @@ class CoinStore:
40
42
  puzzle_hash: bytes32,
41
43
  birthday: CoinTimestamp,
42
44
  amount: int = 1024,
43
- prefix=bytes32.fromhex("ccd5bb71183532bff220ba46c268991a00000000000000000000000000000000"), # noqa
45
+ prefix=bytes32.fromhex("ccd5bb71183532bff220ba46c268991a00000000000000000000000000000000"),
44
46
  ) -> Coin:
45
47
  parent = bytes32(
46
48
  [
@@ -64,8 +64,8 @@ def test_deserialization_simple_list():
64
64
  def test_deserialization_password_coin():
65
65
  # (i (= (sha256 2) (q 0x2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824)) (c (q 51) (c 5 (c (q 100) (q ())))) (q "wrong password")) # noqa
66
66
  b = hexstr_to_bytes(
67
- "ff04ffff0affff0bff0280ffff01ffa02cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b98248080ffff05ffff01ff3380ffff05ff05ffff05ffff01ff6480ffff01ff8080808080ffff01ff8e77726f6e672070617373776f72648080" # noqa
68
- ) # noqa
67
+ "ff04ffff0affff0bff0280ffff01ffa02cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b98248080ffff05ffff01ff3380ffff05ff05ffff05ffff01ff6480ffff01ff8080808080ffff01ff8e77726f6e672070617373776f72648080"
68
+ )
69
69
  cost, output = DESERIALIZE_MOD.run_with_cost(INFINITE_COST, [b])
70
70
  print(cost, output)
71
71
  prog = Program.to(output)
@@ -75,8 +75,8 @@ def test_deserialization_password_coin():
75
75
  def test_deserialization_large_numbers():
76
76
  # '(99999999999999999999999999999999999999999999999999999999999999999 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -99999999999999999999999999999999999999999999999999999999999999999999999999999)' # noqa
77
77
  b = hexstr_to_bytes(
78
- "ff9c00f316271c7fc3908a8bef464e3945ef7a253609ffffffffffffffffffb00fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1ff22ea0179500526edb610f148ec0c614155678491902d6000000000000000000180" # noqa
79
- ) # noqa
78
+ "ff9c00f316271c7fc3908a8bef464e3945ef7a253609ffffffffffffffffffb00fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1ff22ea0179500526edb610f148ec0c614155678491902d6000000000000000000180"
79
+ )
80
80
  cost, output = DESERIALIZE_MOD.run_with_cost(INFINITE_COST, [b])
81
81
  print(cost, output)
82
82
  prog = Program.to(output)
@@ -86,16 +86,16 @@ def test_deserialization_large_numbers():
86
86
  def test_overflow_atoms():
87
87
  b = hexstr_to_bytes(serialized_atom_overflow(0xFFFFFFFF))
88
88
  with pytest.raises(Exception):
89
- cost, output = DESERIALIZE_MOD.run_with_cost(INFINITE_COST, [b])
89
+ _cost, _output = DESERIALIZE_MOD.run_with_cost(INFINITE_COST, [b])
90
90
 
91
91
  b = hexstr_to_bytes(serialized_atom_overflow(0x3FFFFFFFF))
92
92
  with pytest.raises(Exception):
93
- cost, output = DESERIALIZE_MOD.run_with_cost(INFINITE_COST, [b])
93
+ _cost, _output = DESERIALIZE_MOD.run_with_cost(INFINITE_COST, [b])
94
94
 
95
95
  b = hexstr_to_bytes(serialized_atom_overflow(0xFFFFFFFFFF))
96
96
  with pytest.raises(Exception):
97
- cost, output = DESERIALIZE_MOD.run_with_cost(INFINITE_COST, [b])
97
+ _cost, _output = DESERIALIZE_MOD.run_with_cost(INFINITE_COST, [b])
98
98
 
99
99
  b = hexstr_to_bytes(serialized_atom_overflow(0x1FFFFFFFFFF))
100
100
  with pytest.raises(Exception):
101
- cost, output = DESERIALIZE_MOD.run_with_cost(INFINITE_COST, [b])
101
+ _cost, _output = DESERIALIZE_MOD.run_with_cost(INFINITE_COST, [b])
@@ -9,5 +9,5 @@ from chia.types.condition_opcodes import ConditionOpcode
9
9
  def test_condition_codes_is_complete() -> None:
10
10
  condition_codes_path = importlib_resources.files("chia.wallet.puzzles").joinpath("condition_codes.clib")
11
11
  contents = condition_codes_path.read_text(encoding="utf-8")
12
- for name, value in ConditionOpcode.__members__.items():
13
- assert f"(defconstant {name} {int_from_bytes(value)})" in contents
12
+ for opcode in ConditionOpcode:
13
+ assert f"(defconstant {opcode.name} {int_from_bytes(opcode.value)})" in contents
@@ -1,7 +1,5 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import List
4
-
5
3
  import pytest
6
4
 
7
5
  from chia.types.blockchain_format.program import Program
@@ -35,9 +33,9 @@ def test_curry_and_treehash() -> None:
35
33
 
36
34
 
37
35
  @pytest.mark.parametrize(
38
- "value", [[], [bytes32([3] * 32)], [bytes32([0] * 32), bytes32([1] * 32)], [bytes([1]), bytes([1, 2, 3])]]
36
+ "value", [[], [bytes32([3] * 32)], [bytes32.zeros, bytes32([1] * 32)], [bytes([1]), bytes([1, 2, 3])]]
39
37
  )
40
- def test_shatree_atom_list(value: List[bytes]) -> None:
38
+ def test_shatree_atom_list(value: list[bytes]) -> None:
41
39
  h1 = shatree_atom_list(value)
42
40
  h2 = Program.to(value).get_tree_hash()
43
41
  assert h1 == h2
@@ -0,0 +1,184 @@
1
+ from __future__ import annotations
2
+
3
+ import dataclasses
4
+
5
+ import pytest
6
+ from chia_rs import Coin, G2Element
7
+ from chia_rs.sized_bytes import bytes32
8
+ from chia_rs.sized_ints import uint8, uint64
9
+
10
+ from chia._tests.util.spend_sim import CostLogger, sim_and_client
11
+ from chia.types.blockchain_format.program import Program
12
+ from chia.types.coin_spend import make_spend
13
+ from chia.types.mempool_inclusion_status import MempoolInclusionStatus
14
+ from chia.util.errors import Err
15
+ from chia.wallet.conditions import MessageParticipant, ReceiveMessage, SendMessage
16
+ from chia.wallet.wallet_spend_bundle import WalletSpendBundle
17
+
18
+ ACS = Program.to(1)
19
+ ACS_PH = ACS.get_tree_hash()
20
+
21
+
22
+ @pytest.mark.anyio
23
+ @pytest.mark.parametrize(
24
+ "mode",
25
+ [i for i in range(0b001001, 0b111111 + 1) if i % 8 != 0], # skipping anything ending in 000
26
+ )
27
+ async def test_basic_message_send_receive(mode: int, cost_logger: CostLogger) -> None:
28
+ async with sim_and_client() as (sim, client):
29
+ # Farm two ACS coins
30
+ await sim.farm_block(ACS_PH)
31
+ [sender_coin, receiver_coin] = await client.get_coin_records_by_puzzle_hash(ACS_PH)
32
+
33
+ # Try only a sent message
34
+ send_condition = SendMessage(
35
+ b"foo",
36
+ mode_integer=uint8(mode),
37
+ receiver=MessageParticipant(
38
+ parent_id_committed=receiver_coin.coin.parent_coin_info if mode & 0b000100 else None,
39
+ puzzle_hash_committed=receiver_coin.coin.puzzle_hash if mode & 0b000010 else None,
40
+ amount_committed=receiver_coin.coin.amount if mode & 0b000001 else None,
41
+ coin_id_committed=receiver_coin.coin.name() if mode & 0b000111 == 0b000111 else None,
42
+ ),
43
+ )
44
+ only_sender = WalletSpendBundle(
45
+ [
46
+ make_spend(
47
+ sender_coin.coin,
48
+ ACS,
49
+ Program.to([send_condition.to_program()]),
50
+ ),
51
+ ],
52
+ G2Element(),
53
+ )
54
+ result = await client.push_tx(only_sender)
55
+ assert result == (MempoolInclusionStatus.FAILED, Err.MESSAGE_NOT_SENT_OR_RECEIVED)
56
+
57
+ # Try only a received message
58
+ receive_condition = ReceiveMessage(
59
+ b"foo",
60
+ mode_integer=uint8(mode),
61
+ sender=MessageParticipant(
62
+ parent_id_committed=sender_coin.coin.parent_coin_info if mode & 0b100000 else None,
63
+ puzzle_hash_committed=sender_coin.coin.puzzle_hash if mode & 0b010000 else None,
64
+ amount_committed=sender_coin.coin.amount if mode & 0b001000 else None,
65
+ coin_id_committed=sender_coin.coin.name() if mode & 0b111000 == 0b111000 else None,
66
+ ),
67
+ )
68
+ only_receiver = WalletSpendBundle(
69
+ [
70
+ make_spend(
71
+ receiver_coin.coin,
72
+ ACS,
73
+ Program.to([receive_condition.to_program()]),
74
+ ),
75
+ ],
76
+ G2Element(),
77
+ )
78
+ result = await client.push_tx(only_receiver)
79
+ assert result == (MempoolInclusionStatus.FAILED, Err.MESSAGE_NOT_SENT_OR_RECEIVED)
80
+
81
+ # Make sure they succeed together
82
+ result = await client.push_tx(WalletSpendBundle.aggregate([only_sender, only_receiver]))
83
+ assert result == (MempoolInclusionStatus.SUCCESS, None)
84
+
85
+ # Quickly test back and forth parsing
86
+ assert SendMessage.from_program(send_condition.to_program()).to_program() == send_condition.to_program()
87
+ assert (
88
+ ReceiveMessage.from_program(receive_condition.to_program()).to_program() == receive_condition.to_program()
89
+ )
90
+
91
+ # Quickly test mode calculation
92
+ assert (
93
+ dataclasses.replace(send_condition, sender=receive_condition.sender, mode_integer=None).mode
94
+ == send_condition.mode
95
+ )
96
+ assert (
97
+ dataclasses.replace(receive_condition, receiver=send_condition.receiver, mode_integer=None).mode
98
+ == receive_condition.mode
99
+ )
100
+
101
+
102
+ def test_message_error_conditions() -> None:
103
+ with pytest.raises(ValueError, match="Must specify at least one committment"):
104
+ MessageParticipant()
105
+
106
+ test_coin = Coin(bytes32.zeros, bytes32.zeros, uint64(0))
107
+ with pytest.raises(ValueError, match="You must specify all or none"):
108
+ MessageParticipant(coin_id_committed=test_coin.name(), parent_id_committed=bytes32.zeros)
109
+
110
+ with pytest.raises(AssertionError, match="The value for coin_id_committed must be equal"):
111
+ MessageParticipant(
112
+ coin_id_committed=test_coin.name(),
113
+ parent_id_committed=bytes32.zeros,
114
+ puzzle_hash_committed=bytes32.zeros,
115
+ amount_committed=uint64(1),
116
+ )
117
+
118
+ for mode in range(0b001, 0b111 + 1):
119
+ with pytest.raises(AssertionError, match="If mode_integer is manually specified"):
120
+ MessageParticipant(
121
+ mode_integer=uint8(mode),
122
+ parent_id_committed=test_coin.parent_coin_info if not mode & 0b100 else None,
123
+ puzzle_hash_committed=test_coin.puzzle_hash if not mode & 0b010 else None,
124
+ amount_committed=test_coin.amount if (not mode & 0b001) or (mode == 0b111) else None,
125
+ )
126
+
127
+ with pytest.raises(ValueError, match="without committment information"):
128
+ MessageParticipant(
129
+ mode_integer=uint8(0b111),
130
+ ).necessary_args
131
+
132
+ with pytest.raises(ValueError, match="Must specify either mode_integer or both sender and reciever"):
133
+ SendMessage(
134
+ msg=b"foo",
135
+ sender=MessageParticipant(coin_id_committed=test_coin.name()),
136
+ )
137
+
138
+ with pytest.raises(ValueError, match="Must specify either mode_integer or both sender and reciever"):
139
+ SendMessage(
140
+ msg=b"foo",
141
+ receiver=MessageParticipant(coin_id_committed=test_coin.name()),
142
+ )
143
+
144
+ with pytest.raises(AssertionError, match="don't match the sender's mode"):
145
+ SendMessage(
146
+ msg=b"foo",
147
+ mode_integer=uint8(0b111111),
148
+ sender=MessageParticipant(mode_integer=uint8(0b001)),
149
+ )
150
+
151
+ with pytest.raises(AssertionError, match="don't match the receiver's mode"):
152
+ SendMessage(
153
+ msg=b"foo",
154
+ mode_integer=uint8(0b111111),
155
+ receiver=MessageParticipant(mode_integer=uint8(0b001)),
156
+ )
157
+
158
+ with pytest.raises(ValueError, match="Must specify either var_args or receiver"):
159
+ SendMessage(
160
+ msg=b"foo",
161
+ mode_integer=uint8(0b111111),
162
+ )
163
+
164
+ with pytest.raises(ValueError, match="Must specify either var_args or sender"):
165
+ ReceiveMessage(
166
+ msg=b"foo",
167
+ mode_integer=uint8(0b111111),
168
+ )
169
+
170
+ with pytest.raises(AssertionError, match="do not match the specified arguments"):
171
+ SendMessage(
172
+ msg=b"foo",
173
+ mode_integer=uint8(0b111111),
174
+ var_args=[Program.to(test_coin.name())],
175
+ receiver=MessageParticipant(coin_id_committed=bytes32.zeros),
176
+ )
177
+
178
+ with pytest.raises(AssertionError, match="do not match the specified arguments"):
179
+ ReceiveMessage(
180
+ msg=b"foo",
181
+ mode_integer=uint8(0b111111),
182
+ var_args=[Program.to(test_coin.name())],
183
+ sender=MessageParticipant(coin_id_committed=bytes32.zeros),
184
+ )
@@ -24,9 +24,8 @@ from chia.wallet.util.puzzle_compression import (
24
24
  lowest_best_version,
25
25
  )
26
26
 
27
- ZERO_32 = bytes32([0] * 32)
28
27
  ONE_32 = bytes32([17] * 32)
29
- COIN = Coin(ZERO_32, ZERO_32, uint64(0))
28
+ COIN = Coin(bytes32.zeros, bytes32.zeros, uint64(0))
30
29
  SOLUTION = Program.to([])
31
30
 
32
31
 
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Any, Dict, Union
3
+ from typing import Any, Union
4
4
 
5
5
  import pytest
6
6
 
@@ -9,7 +9,7 @@ from chia.wallet.puzzle_drivers import PuzzleInfo, Solver
9
9
 
10
10
 
11
11
  def test_puzzle_info() -> None:
12
- test_driver: Dict[str, Any] = {
12
+ test_driver: dict[str, Any] = {
13
13
  "string": "hello",
14
14
  "bytes": "0xcafef00d",
15
15
  "int": "123",
@@ -17,7 +17,7 @@ def test_puzzle_info() -> None:
17
17
  "zero": "0",
18
18
  "nil": "()",
19
19
  }
20
- test_also: Dict[str, Any] = {"type": "TEST", "string": "hello"}
20
+ test_also: dict[str, Any] = {"type": "TEST", "string": "hello"}
21
21
  test_driver["also"] = test_also
22
22
 
23
23
  with pytest.raises(ValueError, match="A type is required"):
@@ -1,9 +1,11 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Iterable, List, Tuple
3
+ from collections.abc import Iterable
4
4
 
5
- from chia_rs import AugSchemeMPL, G1Element, G2Element
5
+ from chia_rs import AugSchemeMPL, G1Element
6
6
 
7
+ from chia._tests.clvm.coin_store import CoinStore, CoinTimestamp
8
+ from chia._tests.core.make_block_generator import int_to_public_key
7
9
  from chia._tests.util.key_tool import KeyTool
8
10
  from chia.consensus.default_constants import DEFAULT_CONSTANTS
9
11
  from chia.types.blockchain_format.program import Program
@@ -22,13 +24,10 @@ from chia.wallet.puzzles import (
22
24
  )
23
25
  from chia.wallet.puzzles.puzzle_utils import make_create_coin_condition
24
26
 
25
- from ..core.make_block_generator import int_to_public_key
26
- from .coin_store import CoinStore, CoinTimestamp
27
-
28
27
  T1 = CoinTimestamp(1, uint32(10000000))
29
28
  T2 = CoinTimestamp(5, uint32(10003000))
30
29
 
31
- MAX_BLOCK_COST_CLVM = int(1e18)
30
+ MAX_BLOCK_COST_CLVM = 10**18
32
31
 
33
32
 
34
33
  def secret_exponent_for_index(index: int) -> int:
@@ -51,7 +50,7 @@ def throwaway_puzzle_hash(index: int, key_lookup: KeyTool) -> bytes32:
51
50
  def do_test_spend(
52
51
  puzzle_reveal: Program,
53
52
  solution: Program,
54
- payments: Iterable[Tuple[bytes32, int]],
53
+ payments: Iterable[tuple[bytes32, int]],
55
54
  key_lookup: KeyTool,
56
55
  farm_time: CoinTimestamp = T1,
57
56
  spend_time: CoinTimestamp = T2,
@@ -60,8 +59,7 @@ def do_test_spend(
60
59
  This method will farm a coin paid to the hash of `puzzle_reveal`, then try to spend it
61
60
  with `solution`, and verify that the created coins correspond to `payments`.
62
61
 
63
- The `key_lookup` is used to create a signed version of the `SpendBundle`, although at
64
- this time, signatures are not verified.
62
+ The `key_lookup` is used to create a signed version of the `SpendBundle`
65
63
  """
66
64
 
67
65
  coin_db = CoinStore(DEFAULT_CONSTANTS)
@@ -74,7 +72,9 @@ def do_test_spend(
74
72
  # spend it
75
73
  coin_spend = make_spend(coin, puzzle_reveal, solution)
76
74
 
77
- spend_bundle = SpendBundle([coin_spend], G2Element())
75
+ # sign the solution
76
+ signature = key_lookup.signature_for_solution(coin_spend, DEFAULT_CONSTANTS.AGG_SIG_ME_ADDITIONAL_DATA)
77
+ spend_bundle = SpendBundle([coin_spend], signature)
78
78
  coin_db.update_coin_store_for_spend_bundle(spend_bundle, spend_time, MAX_BLOCK_COST_CLVM)
79
79
 
80
80
  # ensure all outputs are there
@@ -85,17 +85,12 @@ def do_test_spend(
85
85
  else:
86
86
  assert 0
87
87
 
88
- # make sure we can actually sign the solution
89
- signatures: List[G2Element] = []
90
- for coin_spend in spend_bundle.coin_spends:
91
- signature = key_lookup.signature_for_solution(coin_spend, bytes([2] * 32))
92
- signatures.append(signature)
93
- return SpendBundle(spend_bundle.coin_spends, AugSchemeMPL.aggregate(signatures))
88
+ return spend_bundle
94
89
 
95
90
 
96
91
  def default_payments_and_conditions(
97
92
  initial_index: int, key_lookup: KeyTool
98
- ) -> Tuple[List[Tuple[bytes32, int]], Program]:
93
+ ) -> tuple[list[tuple[bytes32, int]], Program]:
99
94
  # the coin we get from coin_db.farm_coin only has amount 1024, so we can
100
95
  # only make small payments to avoid failing with MINTING_COIN
101
96
  payments = [
@@ -206,7 +201,7 @@ def test_p2_delegated_puzzle_or_hidden_puzzle_with_hidden_puzzle():
206
201
 
207
202
  def do_test_spend_p2_delegated_puzzle_or_hidden_puzzle_with_delegated_puzzle(hidden_pub_key_index):
208
203
  key_lookup = KeyTool()
209
- payments, conditions = default_payments_and_conditions(1, key_lookup)
204
+ _payments, conditions = default_payments_and_conditions(1, key_lookup)
210
205
 
211
206
  hidden_puzzle = p2_conditions.puzzle_for_conditions(conditions)
212
207
  hidden_public_key = public_key_for_index(hidden_pub_key_index, key_lookup)
@@ -1,13 +1,13 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import List, Optional, Tuple
3
+ from typing import Optional
4
4
 
5
5
  import pytest
6
6
  from chia_rs import AugSchemeMPL, G1Element, G2Element, PrivateKey
7
7
 
8
8
  from chia._tests.clvm.test_puzzles import public_key_for_index, secret_exponent_for_index
9
9
  from chia._tests.util.key_tool import KeyTool
10
- from chia.clvm.spend_sim import CostLogger, SimClient, SpendSim, sim_and_client
10
+ from chia._tests.util.spend_sim import CostLogger, SimClient, SpendSim, sim_and_client
11
11
  from chia.consensus.default_constants import DEFAULT_CONSTANTS
12
12
  from chia.types.blockchain_format.coin import Coin
13
13
  from chia.types.blockchain_format.program import Program
@@ -36,7 +36,7 @@ class TransactionPushError(Exception):
36
36
 
37
37
 
38
38
  def sign_delegated_puz(del_puz: Program, coin: Coin) -> G2Element:
39
- synthetic_secret_key: PrivateKey = p2_delegated_puzzle_or_hidden_puzzle.calculate_synthetic_secret_key( # noqa
39
+ synthetic_secret_key: PrivateKey = p2_delegated_puzzle_or_hidden_puzzle.calculate_synthetic_secret_key(
40
40
  PrivateKey.from_bytes(
41
41
  secret_exponent_for_index(1).to_bytes(32, "big"),
42
42
  ),
@@ -44,7 +44,7 @@ def sign_delegated_puz(del_puz: Program, coin: Coin) -> G2Element:
44
44
  )
45
45
  return AugSchemeMPL.sign(
46
46
  synthetic_secret_key,
47
- (del_puz.get_tree_hash() + coin.name() + DEFAULT_CONSTANTS.AGG_SIG_ME_ADDITIONAL_DATA), # noqa
47
+ (del_puz.get_tree_hash() + coin.name() + DEFAULT_CONSTANTS.AGG_SIG_ME_ADDITIONAL_DATA),
48
48
  )
49
49
 
50
50
 
@@ -54,7 +54,7 @@ async def make_and_spend_bundle(
54
54
  sim_client: SimClient,
55
55
  coin: Coin,
56
56
  delegated_puzzle: Program,
57
- coinsols: List[CoinSpend],
57
+ coinsols: list[CoinSpend],
58
58
  ex_error: Optional[Err] = None,
59
59
  fail_msg: str = "",
60
60
  cost_logger: Optional[CostLogger] = None,
@@ -69,7 +69,7 @@ async def make_and_spend_bundle(
69
69
  spend_bundle = cost_logger.add_cost(cost_log_msg, spend_bundle)
70
70
 
71
71
  try:
72
- result, error = await sim_client.push_tx(spend_bundle)
72
+ _result, error = await sim_client.push_tx(spend_bundle)
73
73
  if error is None:
74
74
  await sim.farm_block()
75
75
  elif ex_error is not None:
@@ -88,12 +88,12 @@ async def test_singleton_top_layer(version, cost_logger):
88
88
  # Generate starting info
89
89
  key_lookup = KeyTool()
90
90
  pk: G1Element = G1Element.from_bytes(public_key_for_index(1, key_lookup))
91
- starting_puzzle: Program = p2_delegated_puzzle_or_hidden_puzzle.puzzle_for_pk(pk) # noqa
91
+ starting_puzzle: Program = p2_delegated_puzzle_or_hidden_puzzle.puzzle_for_pk(pk)
92
92
 
93
93
  if version == 0:
94
94
  from chia.wallet.puzzles import singleton_top_layer
95
95
 
96
- adapted_puzzle: Program = singleton_top_layer.adapt_inner_to_singleton(starting_puzzle) # noqa
96
+ adapted_puzzle: Program = singleton_top_layer.adapt_inner_to_singleton(starting_puzzle)
97
97
  else:
98
98
  from chia.wallet.puzzles import singleton_top_layer_v1_1 as singleton_top_layer
99
99
 
@@ -105,24 +105,24 @@ async def test_singleton_top_layer(version, cost_logger):
105
105
  await sim.farm_block(starting_puzzle.get_tree_hash())
106
106
  starting_coin: Coin = await sim_client.get_coin_records_by_puzzle_hash(starting_puzzle.get_tree_hash())
107
107
  starting_coin = starting_coin[0].coin
108
- comment: List[Tuple[str, str]] = [("hello", "world")]
108
+ comment: list[tuple[str, str]] = [("hello", "world")]
109
109
 
110
110
  # LAUNCHING
111
111
  # Try to create an even singleton (driver test)
112
112
  try:
113
- conditions, launcher_coinsol = singleton_top_layer.launch_conditions_and_coinsol( # noqa
113
+ conditions, launcher_coinsol = singleton_top_layer.launch_conditions_and_coinsol(
114
114
  starting_coin, adapted_puzzle, comment, (START_AMOUNT - 1)
115
115
  )
116
116
  raise AssertionError("This should fail due to an even amount")
117
117
  except ValueError as msg:
118
118
  assert str(msg) == "Coin amount cannot be even. Subtract one mojo."
119
- conditions, launcher_coinsol = singleton_top_layer.launch_conditions_and_coinsol( # noqa
119
+ conditions, launcher_coinsol = singleton_top_layer.launch_conditions_and_coinsol(
120
120
  starting_coin, adapted_puzzle, comment, START_AMOUNT
121
121
  )
122
122
 
123
123
  # Creating solution for standard transaction
124
- delegated_puzzle: Program = p2_conditions.puzzle_for_conditions(conditions) # noqa
125
- full_solution: Program = p2_delegated_puzzle_or_hidden_puzzle.solution_for_conditions(conditions) # noqa
124
+ delegated_puzzle: Program = p2_conditions.puzzle_for_conditions(conditions)
125
+ full_solution: Program = p2_delegated_puzzle_or_hidden_puzzle.solution_for_conditions(conditions)
126
126
 
127
127
  starting_coinsol = make_spend(
128
128
  starting_coin,
@@ -162,7 +162,7 @@ async def test_singleton_top_layer(version, cost_logger):
162
162
  )
163
163
  inner_solution: Program = Program.to([[], delegated_puzzle, []])
164
164
  # Generate the lineage proof we will need from the launcher coin
165
- lineage_proof: LineageProof = singleton_top_layer.lineage_proof_for_coinsol(launcher_coinsol) # noqa
165
+ lineage_proof: LineageProof = singleton_top_layer.lineage_proof_for_coinsol(launcher_coinsol)
166
166
  puzzle_reveal: Program = singleton_top_layer.puzzle_for_singleton(
167
167
  launcher_id,
168
168
  adapted_puzzle,
@@ -192,7 +192,7 @@ async def test_singleton_top_layer(version, cost_logger):
192
192
  # POST-EVE
193
193
  singleton: Coin = (await sim.all_non_reward_coins())[0]
194
194
  # Same delegated_puzzle / inner_solution. We're just recreating ourself
195
- lineage_proof: LineageProof = singleton_top_layer.lineage_proof_for_coinsol(singleton_eve_coinsol) # noqa
195
+ lineage_proof: LineageProof = singleton_top_layer.lineage_proof_for_coinsol(singleton_eve_coinsol)
196
196
  # Same puzzle_reveal too
197
197
  full_solution: Program = singleton_top_layer.solution_for_singleton(
198
198
  lineage_proof,
@@ -334,7 +334,7 @@ async def test_singleton_top_layer(version, cost_logger):
334
334
  DELAY_TIME,
335
335
  DELAY_PH,
336
336
  )
337
- result, error = await sim_client.push_tx(SpendBundle([to_delay_ph_coinsol], G2Element()))
337
+ _result, error = await sim_client.push_tx(SpendBundle([to_delay_ph_coinsol], G2Element()))
338
338
  assert error == Err.ASSERT_SECONDS_RELATIVE_FAILED
339
339
 
340
340
  # SPEND TO DELAYED PUZZLE HASH
@@ -471,7 +471,7 @@ async def test_singleton_top_layer(version, cost_logger):
471
471
  )
472
472
  )
473
473
  inner_solution: Program = Program.to([[], delegated_puzzle, []])
474
- lineage_proof: LineageProof = singleton_top_layer.lineage_proof_for_coinsol(singleton_even_coinsol) # noqa
474
+ lineage_proof: LineageProof = singleton_top_layer.lineage_proof_for_coinsol(singleton_even_coinsol)
475
475
  puzzle_reveal: Program = singleton_top_layer.puzzle_for_singleton(
476
476
  launcher_id,
477
477
  adapted_puzzle,
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
  import pytest
4
4
  from chia_rs import G2Element
5
5
 
6
- from chia.clvm.spend_sim import sim_and_client
6
+ from chia._tests.util.spend_sim import sim_and_client
7
7
  from chia.types.blockchain_format.program import Program
8
8
  from chia.types.blockchain_format.sized_bytes import bytes32
9
9
  from chia.types.coin_spend import compute_additions, make_spend
@@ -41,7 +41,7 @@ async def test_all_endpoints():
41
41
  async with sim_and_client() as (sim, sim_client):
42
42
  for i in range(0, 5):
43
43
  await sim.farm_block()
44
- await sim.farm_block(bytes32([0] * 32))
44
+ await sim.farm_block(bytes32.zeros)
45
45
  await sim.farm_block(bytes32([1] * 32))
46
46
  for i in range(0, 5):
47
47
  await sim.farm_block()
@@ -95,19 +95,19 @@ async def test_all_endpoints():
95
95
  assert len(coin_records) == 0
96
96
 
97
97
  # get_coin_records_by_puzzle_hash
98
- coin_records = await sim_client.get_coin_records_by_puzzle_hash(bytes32([0] * 32))
98
+ coin_records = await sim_client.get_coin_records_by_puzzle_hash(bytes32.zeros)
99
99
  coin_record_name = coin_records[0].coin.name()
100
100
  assert len(coin_records) == 2
101
101
 
102
- coin_records = await sim_client.get_coin_records_by_puzzle_hash(bytes32([0] * 32), start_height=0, end_height=2)
102
+ coin_records = await sim_client.get_coin_records_by_puzzle_hash(bytes32.zeros, start_height=0, end_height=2)
103
103
  assert len(coin_records) == 0
104
104
 
105
105
  # get_coin_records_by_puzzle_hashes
106
- coin_records = await sim_client.get_coin_records_by_puzzle_hashes([bytes32([0] * 32), bytes32([1] * 32)])
106
+ coin_records = await sim_client.get_coin_records_by_puzzle_hashes([bytes32.zeros, bytes32([1] * 32)])
107
107
  assert len(coin_records) == 4
108
108
 
109
109
  coin_records = await sim_client.get_coin_records_by_puzzle_hashes(
110
- [bytes32([0] * 32), bytes32([1] * 32)], start_height=0, end_height=2
110
+ [bytes32.zeros, bytes32([1] * 32)], start_height=0, end_height=2
111
111
  )
112
112
  assert len(coin_records) == 0
113
113
 
@@ -150,7 +150,7 @@ async def test_all_endpoints():
150
150
  ],
151
151
  G2Element(),
152
152
  )
153
- result, error = await sim_client.push_tx(bundle)
153
+ _result, error = await sim_client.push_tx(bundle)
154
154
  assert not error
155
155
  # get_all_mempool_tx_ids
156
156
  mempool_items = await sim_client.get_all_mempool_tx_ids()