chia-blockchain 2.5.4rc2__py3-none-any.whl → 2.5.5rc1__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 (453) hide show
  1. chia/_tests/blockchain/blockchain_test_utils.py +2 -3
  2. chia/_tests/blockchain/test_augmented_chain.py +2 -3
  3. chia/_tests/blockchain/test_blockchain.py +261 -44
  4. chia/_tests/blockchain/test_blockchain_transactions.py +4 -3
  5. chia/_tests/blockchain/test_build_chains.py +197 -1
  6. chia/_tests/blockchain/test_get_block_generator.py +1 -1
  7. chia/_tests/blockchain/test_lookup_fork_chain.py +1 -1
  8. chia/_tests/clvm/benchmark_costs.py +1 -1
  9. chia/_tests/clvm/coin_store.py +3 -4
  10. chia/_tests/clvm/test_message_conditions.py +2 -2
  11. chia/_tests/clvm/test_puzzle_compression.py +2 -3
  12. chia/_tests/clvm/test_puzzles.py +1 -2
  13. chia/_tests/clvm/test_singletons.py +2 -3
  14. chia/_tests/clvm/test_spend_sim.py +7 -7
  15. chia/_tests/cmds/cmd_test_utils.py +30 -25
  16. chia/_tests/cmds/test_dev_gh.py +1 -1
  17. chia/_tests/cmds/test_farm_cmd.py +1 -1
  18. chia/_tests/cmds/test_show.py +1 -2
  19. chia/_tests/cmds/wallet/test_did.py +101 -56
  20. chia/_tests/cmds/wallet/test_nft.py +109 -84
  21. chia/_tests/cmds/wallet/test_notifications.py +1 -1
  22. chia/_tests/cmds/wallet/test_offer.toffer +1 -1
  23. chia/_tests/cmds/wallet/test_vcs.py +8 -8
  24. chia/_tests/cmds/wallet/test_wallet.py +100 -46
  25. chia/_tests/conftest.py +31 -20
  26. chia/_tests/connection_utils.py +1 -1
  27. chia/_tests/core/consensus/stores/__init__.py +0 -0
  28. chia/_tests/core/consensus/stores/test_coin_store_protocol.py +40 -0
  29. chia/_tests/core/consensus/test_block_creation.py +2 -31
  30. chia/_tests/core/consensus/test_pot_iterations.py +38 -3
  31. chia/_tests/core/custom_types/test_proof_of_space.py +154 -26
  32. chia/_tests/core/custom_types/test_spend_bundle.py +2 -3
  33. chia/_tests/core/daemon/test_daemon.py +80 -0
  34. chia/_tests/core/data_layer/test_data_layer.py +1 -1
  35. chia/_tests/core/data_layer/test_data_layer_util.py +1 -1
  36. chia/_tests/core/data_layer/test_data_rpc.py +14 -10
  37. chia/_tests/core/data_layer/test_data_store.py +5 -5
  38. chia/_tests/core/farmer/test_farmer_api.py +2 -2
  39. chia/_tests/core/full_node/full_sync/test_full_sync.py +446 -406
  40. chia/_tests/core/full_node/ram_db.py +3 -1
  41. chia/_tests/core/full_node/stores/test_block_store.py +28 -16
  42. chia/_tests/core/full_node/stores/test_coin_store.py +277 -185
  43. chia/_tests/core/full_node/stores/test_full_node_store.py +11 -4
  44. chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
  45. chia/_tests/core/full_node/test_address_manager.py +200 -27
  46. chia/_tests/core/full_node/test_block_height_map.py +2 -2
  47. chia/_tests/core/full_node/test_conditions.py +7 -6
  48. chia/_tests/core/full_node/test_full_node.py +456 -40
  49. chia/_tests/core/full_node/test_generator_tools.py +32 -2
  50. chia/_tests/core/full_node/test_hint_management.py +1 -1
  51. chia/_tests/core/full_node/test_node_load.py +20 -21
  52. chia/_tests/core/full_node/test_performance.py +3 -4
  53. chia/_tests/core/full_node/test_prev_tx_block.py +43 -0
  54. chia/_tests/core/full_node/test_subscriptions.py +1 -2
  55. chia/_tests/core/full_node/test_transactions.py +9 -5
  56. chia/_tests/core/full_node/test_tx_processing_queue.py +1 -2
  57. chia/_tests/core/large_block.py +1 -2
  58. chia/_tests/core/make_block_generator.py +3 -4
  59. chia/_tests/core/mempool/test_mempool.py +36 -86
  60. chia/_tests/core/mempool/test_mempool_fee_estimator.py +1 -1
  61. chia/_tests/core/mempool/test_mempool_item_queries.py +1 -3
  62. chia/_tests/core/mempool/test_mempool_manager.py +421 -69
  63. chia/_tests/core/mempool/test_mempool_performance.py +3 -2
  64. chia/_tests/core/mempool/test_singleton_fast_forward.py +60 -131
  65. chia/_tests/core/server/flood.py +1 -1
  66. chia/_tests/core/server/test_dos.py +1 -1
  67. chia/_tests/core/server/test_node_discovery.py +41 -27
  68. chia/_tests/core/server/test_rate_limits.py +1 -1
  69. chia/_tests/core/server/test_server.py +1 -1
  70. chia/_tests/core/services/test_services.py +5 -5
  71. chia/_tests/core/ssl/test_ssl.py +1 -1
  72. chia/_tests/core/test_cost_calculation.py +6 -6
  73. chia/_tests/core/test_crawler.py +2 -2
  74. chia/_tests/core/test_crawler_rpc.py +1 -1
  75. chia/_tests/core/test_db_conversion.py +3 -1
  76. chia/_tests/core/test_db_validation.py +5 -3
  77. chia/_tests/core/test_farmer_harvester_rpc.py +15 -15
  78. chia/_tests/core/test_filter.py +4 -1
  79. chia/_tests/core/test_full_node_rpc.py +99 -82
  80. chia/_tests/core/test_program.py +2 -2
  81. chia/_tests/core/util/test_block_cache.py +1 -1
  82. chia/_tests/core/util/test_keychain.py +2 -2
  83. chia/_tests/core/util/test_lockfile.py +1 -1
  84. chia/_tests/core/util/test_log_exceptions.py +5 -5
  85. chia/_tests/core/util/test_streamable.py +81 -22
  86. chia/_tests/db/test_db_wrapper.py +1 -3
  87. chia/_tests/environments/wallet.py +5 -5
  88. chia/_tests/farmer_harvester/test_farmer.py +9 -7
  89. chia/_tests/farmer_harvester/test_farmer_harvester.py +11 -4
  90. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +6 -5
  91. chia/_tests/farmer_harvester/test_third_party_harvesters.py +15 -9
  92. chia/_tests/fee_estimation/test_fee_estimation_integration.py +1 -2
  93. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +7 -5
  94. chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +1 -1
  95. chia/_tests/generator/test_compression.py +1 -2
  96. chia/_tests/generator/test_rom.py +8 -4
  97. chia/_tests/plot_sync/test_plot_sync.py +3 -3
  98. chia/_tests/plot_sync/test_receiver.py +3 -3
  99. chia/_tests/plot_sync/test_sender.py +1 -1
  100. chia/_tests/plot_sync/test_sync_simulated.py +3 -3
  101. chia/_tests/plot_sync/util.py +2 -2
  102. chia/_tests/pools/test_pool_cmdline.py +48 -21
  103. chia/_tests/pools/test_pool_puzzles_lifecycle.py +2 -3
  104. chia/_tests/pools/test_pool_rpc.py +237 -105
  105. chia/_tests/pools/test_pool_wallet.py +11 -2
  106. chia/_tests/pools/test_wallet_pool_store.py +5 -4
  107. chia/_tests/rpc/test_rpc_client.py +1 -1
  108. chia/_tests/simulation/test_simulation.py +13 -8
  109. chia/_tests/simulation/test_simulator.py +2 -2
  110. chia/_tests/timelord/test_new_peak.py +191 -47
  111. chia/_tests/timelord/test_timelord.py +1 -1
  112. chia/_tests/tools/test_full_sync.py +0 -2
  113. chia/_tests/tools/test_run_block.py +3 -1
  114. chia/_tests/util/benchmark_cost.py +3 -3
  115. chia/_tests/util/benchmarks.py +2 -2
  116. chia/_tests/util/blockchain.py +11 -5
  117. chia/_tests/util/blockchain_mock.py +1 -4
  118. chia/_tests/util/coin_store.py +29 -0
  119. chia/_tests/util/constants.py +2 -18
  120. chia/_tests/util/full_sync.py +3 -3
  121. chia/_tests/util/generator_tools_testing.py +2 -3
  122. chia/_tests/util/key_tool.py +2 -3
  123. chia/_tests/util/misc.py +33 -31
  124. chia/_tests/util/network_protocol_data.py +19 -17
  125. chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
  126. chia/_tests/util/protocol_messages_json.py +3 -1
  127. chia/_tests/util/run_block.py +2 -2
  128. chia/_tests/util/setup_nodes.py +7 -7
  129. chia/_tests/util/spend_sim.py +47 -55
  130. chia/_tests/util/test_condition_tools.py +5 -4
  131. chia/_tests/util/test_config.py +2 -2
  132. chia/_tests/util/test_dump_keyring.py +1 -1
  133. chia/_tests/util/test_full_block_utils.py +12 -14
  134. chia/_tests/util/test_misc.py +2 -2
  135. chia/_tests/util/test_paginator.py +4 -4
  136. chia/_tests/util/test_priority_mutex.py +2 -2
  137. chia/_tests/util/test_replace_str_to_bytes.py +15 -5
  138. chia/_tests/util/test_ssl_check.py +1 -1
  139. chia/_tests/util/test_testnet_overrides.py +13 -3
  140. chia/_tests/util/time_out_assert.py +4 -2
  141. chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +1 -1
  142. chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +1 -2
  143. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +352 -432
  144. chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +3 -6
  145. chia/_tests/wallet/cat_wallet/test_trades.py +53 -77
  146. chia/_tests/wallet/clawback/test_clawback_decorator.py +3 -1
  147. chia/_tests/wallet/clawback/test_clawback_lifecycle.py +3 -3
  148. chia/_tests/wallet/clawback/test_clawback_metadata.py +4 -2
  149. chia/_tests/wallet/conftest.py +11 -12
  150. chia/_tests/wallet/db_wallet/test_db_graftroot.py +11 -4
  151. chia/_tests/wallet/db_wallet/test_dl_offers.py +433 -130
  152. chia/_tests/wallet/db_wallet/test_dl_wallet.py +3 -3
  153. chia/_tests/wallet/did_wallet/test_did.py +2132 -2000
  154. chia/_tests/wallet/nft_wallet/config.py +1 -1
  155. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +1610 -742
  156. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +486 -907
  157. chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +4 -4
  158. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +517 -294
  159. chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +133 -62
  160. chia/_tests/wallet/rpc/test_wallet_rpc.py +305 -184
  161. chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +10 -6
  162. chia/_tests/wallet/sync/test_wallet_sync.py +89 -60
  163. chia/_tests/wallet/test_clvm_casts.py +88 -0
  164. chia/_tests/wallet/test_coin_management.py +1 -1
  165. chia/_tests/wallet/test_coin_selection.py +1 -1
  166. chia/_tests/wallet/test_conditions.py +1 -1
  167. chia/_tests/wallet/test_new_wallet_protocol.py +13 -11
  168. chia/_tests/wallet/test_notifications.py +5 -3
  169. chia/_tests/wallet/test_sign_coin_spends.py +6 -6
  170. chia/_tests/wallet/test_signer_protocol.py +13 -12
  171. chia/_tests/wallet/test_singleton.py +1 -1
  172. chia/_tests/wallet/test_singleton_lifecycle_fast.py +5 -7
  173. chia/_tests/wallet/test_util.py +2 -2
  174. chia/_tests/wallet/test_wallet.py +108 -29
  175. chia/_tests/wallet/test_wallet_action_scope.py +9 -2
  176. chia/_tests/wallet/test_wallet_blockchain.py +2 -3
  177. chia/_tests/wallet/test_wallet_key_val_store.py +1 -2
  178. chia/_tests/wallet/test_wallet_node.py +2 -4
  179. chia/_tests/wallet/test_wallet_retry.py +4 -2
  180. chia/_tests/wallet/test_wallet_state_manager.py +191 -5
  181. chia/_tests/wallet/test_wallet_test_framework.py +1 -1
  182. chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +8 -8
  183. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +29 -12
  184. chia/_tests/wallet/wallet_block_tools.py +6 -6
  185. chia/_tests/weight_proof/test_weight_proof.py +10 -48
  186. chia/apis.py +1 -1
  187. chia/cmds/beta.py +1 -1
  188. chia/cmds/chia.py +9 -9
  189. chia/cmds/cmd_classes.py +12 -11
  190. chia/cmds/cmd_helpers.py +1 -1
  191. chia/cmds/cmds_util.py +12 -9
  192. chia/cmds/coin_funcs.py +2 -2
  193. chia/cmds/configure.py +2 -2
  194. chia/cmds/data.py +0 -2
  195. chia/cmds/data_funcs.py +1 -1
  196. chia/cmds/db_validate_func.py +1 -2
  197. chia/cmds/dev/__init__.py +0 -0
  198. chia/cmds/dev/data.py +273 -0
  199. chia/cmds/{gh.py → dev/gh.py} +5 -5
  200. chia/cmds/dev/main.py +22 -0
  201. chia/cmds/dev/mempool.py +78 -0
  202. chia/cmds/dev/mempool_funcs.py +63 -0
  203. chia/cmds/farm_funcs.py +5 -4
  204. chia/cmds/init_funcs.py +11 -11
  205. chia/cmds/keys.py +2 -2
  206. chia/cmds/keys_funcs.py +4 -4
  207. chia/cmds/netspace_funcs.py +1 -1
  208. chia/cmds/peer_funcs.py +2 -2
  209. chia/cmds/plotnft_funcs.py +72 -26
  210. chia/cmds/rpc.py +1 -1
  211. chia/cmds/show_funcs.py +5 -5
  212. chia/cmds/signer.py +8 -7
  213. chia/cmds/sim_funcs.py +8 -9
  214. chia/cmds/wallet.py +2 -2
  215. chia/cmds/wallet_funcs.py +165 -131
  216. chia/{util → consensus}/augmented_chain.py +1 -2
  217. chia/consensus/block_body_validation.py +54 -40
  218. chia/consensus/block_creation.py +42 -76
  219. chia/consensus/block_header_validation.py +32 -26
  220. chia/consensus/block_record.py +0 -3
  221. chia/consensus/blockchain.py +23 -32
  222. chia/consensus/blockchain_interface.py +1 -5
  223. chia/consensus/check_time_locks.py +57 -0
  224. chia/consensus/coin_store_protocol.py +151 -0
  225. chia/consensus/coinbase.py +0 -6
  226. chia/consensus/condition_costs.py +4 -0
  227. chia/{util → consensus}/condition_tools.py +4 -5
  228. chia/consensus/cost_calculator.py +1 -1
  229. chia/consensus/default_constants.py +32 -9
  230. chia/consensus/deficit.py +1 -3
  231. chia/consensus/difficulty_adjustment.py +1 -2
  232. chia/consensus/find_fork_point.py +1 -3
  233. chia/consensus/full_block_to_block_record.py +1 -6
  234. chia/{util → consensus}/generator_tools.py +1 -3
  235. chia/consensus/get_block_challenge.py +30 -7
  236. chia/consensus/make_sub_epoch_summary.py +1 -5
  237. chia/consensus/multiprocess_validation.py +21 -20
  238. chia/consensus/pot_iterations.py +74 -13
  239. chia/{util → consensus}/prev_transaction_block.py +1 -1
  240. chia/consensus/vdf_info_computation.py +1 -3
  241. chia/daemon/keychain_proxy.py +5 -5
  242. chia/daemon/server.py +22 -5
  243. chia/data_layer/data_layer.py +92 -51
  244. chia/{rpc → data_layer}/data_layer_rpc_api.py +1 -1
  245. chia/{rpc → data_layer}/data_layer_rpc_util.py +3 -6
  246. chia/data_layer/data_layer_util.py +4 -6
  247. chia/data_layer/data_layer_wallet.py +42 -69
  248. chia/data_layer/dl_wallet_store.py +12 -6
  249. chia/data_layer/download_data.py +3 -3
  250. chia/data_layer/s3_plugin_service.py +0 -1
  251. chia/farmer/farmer.py +3 -4
  252. chia/farmer/farmer_api.py +11 -7
  253. chia/{rpc → farmer}/farmer_rpc_client.py +1 -1
  254. chia/full_node/block_height_map.py +7 -6
  255. chia/full_node/block_store.py +5 -7
  256. chia/full_node/bundle_tools.py +1 -2
  257. chia/full_node/coin_store.py +143 -124
  258. chia/{types → full_node}/eligible_coin_spends.py +39 -70
  259. chia/full_node/fee_estimator.py +1 -1
  260. chia/full_node/fee_estimator_interface.py +0 -8
  261. chia/full_node/fee_tracker.py +25 -25
  262. chia/full_node/full_node.py +70 -53
  263. chia/full_node/full_node_api.py +57 -40
  264. chia/{rpc → full_node}/full_node_rpc_api.py +87 -8
  265. chia/{rpc → full_node}/full_node_rpc_client.py +7 -6
  266. chia/full_node/full_node_store.py +23 -8
  267. chia/full_node/mempool.py +206 -53
  268. chia/full_node/mempool_check_conditions.py +20 -63
  269. chia/full_node/mempool_manager.py +26 -40
  270. chia/full_node/subscriptions.py +1 -3
  271. chia/full_node/tx_processing_queue.py +50 -3
  272. chia/full_node/weight_proof.py +46 -37
  273. chia/harvester/harvester.py +1 -1
  274. chia/harvester/harvester_api.py +22 -7
  275. chia/introducer/introducer.py +1 -1
  276. chia/introducer/introducer_api.py +1 -1
  277. chia/plot_sync/exceptions.py +1 -1
  278. chia/plot_sync/receiver.py +1 -1
  279. chia/plot_sync/sender.py +2 -2
  280. chia/pools/pool_puzzles.py +13 -18
  281. chia/pools/pool_wallet.py +23 -46
  282. chia/protocols/farmer_protocol.py +11 -3
  283. chia/protocols/full_node_protocol.py +1 -4
  284. chia/protocols/harvester_protocol.py +3 -3
  285. chia/protocols/pool_protocol.py +1 -2
  286. chia/protocols/shared_protocol.py +3 -3
  287. chia/protocols/timelord_protocol.py +1 -3
  288. chia/protocols/wallet_protocol.py +3 -3
  289. chia/rpc/rpc_client.py +7 -8
  290. chia/rpc/rpc_server.py +3 -3
  291. chia/rpc/util.py +3 -1
  292. chia/seeder/crawler.py +1 -1
  293. chia/seeder/crawler_api.py +1 -1
  294. chia/seeder/dns_server.py +2 -0
  295. chia/seeder/start_crawler.py +3 -3
  296. chia/server/address_manager.py +286 -38
  297. chia/server/address_manager_store.py +0 -215
  298. chia/{types → server}/aliases.py +7 -7
  299. chia/server/api_protocol.py +1 -1
  300. chia/server/chia_policy.py +1 -1
  301. chia/server/node_discovery.py +76 -113
  302. chia/server/rate_limits.py +1 -1
  303. chia/server/resolve_peer_info.py +43 -0
  304. chia/server/server.py +5 -5
  305. chia/server/start_data_layer.py +4 -4
  306. chia/server/start_farmer.py +5 -4
  307. chia/server/start_full_node.py +5 -4
  308. chia/server/start_harvester.py +7 -5
  309. chia/server/start_introducer.py +2 -2
  310. chia/server/start_service.py +1 -1
  311. chia/server/start_timelord.py +7 -5
  312. chia/server/start_wallet.py +7 -5
  313. chia/server/ws_connection.py +1 -1
  314. chia/simulator/add_blocks_in_batches.py +2 -2
  315. chia/simulator/block_tools.py +245 -201
  316. chia/simulator/full_node_simulator.py +38 -10
  317. chia/simulator/setup_services.py +12 -12
  318. chia/simulator/simulator_full_node_rpc_api.py +2 -2
  319. chia/simulator/simulator_full_node_rpc_client.py +2 -2
  320. chia/simulator/simulator_test_tools.py +2 -2
  321. chia/simulator/start_simulator.py +1 -1
  322. chia/simulator/wallet_tools.py +10 -18
  323. chia/ssl/create_ssl.py +1 -1
  324. chia/timelord/iters_from_block.py +14 -14
  325. chia/timelord/timelord.py +15 -11
  326. chia/timelord/timelord_api.py +14 -2
  327. chia/timelord/timelord_state.py +20 -14
  328. chia/types/blockchain_format/program.py +53 -10
  329. chia/types/blockchain_format/proof_of_space.py +73 -19
  330. chia/types/coin_spend.py +3 -56
  331. chia/types/generator_types.py +28 -0
  332. chia/types/internal_mempool_item.py +1 -2
  333. chia/types/mempool_item.py +12 -7
  334. chia/types/unfinished_header_block.py +1 -2
  335. chia/types/validation_state.py +1 -2
  336. chia/types/weight_proof.py +1 -3
  337. chia/util/action_scope.py +3 -3
  338. chia/util/block_cache.py +1 -2
  339. chia/util/byte_types.py +1 -1
  340. chia/util/casts.py +21 -0
  341. chia/util/config.py +0 -37
  342. chia/util/db_wrapper.py +8 -1
  343. chia/util/errors.py +3 -2
  344. chia/util/initial-config.yaml +21 -5
  345. chia/util/keychain.py +6 -7
  346. chia/util/keyring_wrapper.py +5 -5
  347. chia/util/limited_semaphore.py +1 -1
  348. chia/util/priority_mutex.py +1 -1
  349. chia/util/streamable.py +63 -5
  350. chia/util/task_timing.py +1 -1
  351. chia/util/virtual_project_analysis.py +1 -1
  352. chia/wallet/cat_wallet/cat_info.py +7 -3
  353. chia/wallet/cat_wallet/cat_outer_puzzle.py +9 -5
  354. chia/wallet/cat_wallet/cat_utils.py +1 -1
  355. chia/wallet/cat_wallet/cat_wallet.py +44 -36
  356. chia/wallet/cat_wallet/lineage_store.py +7 -0
  357. chia/wallet/cat_wallet/r_cat_wallet.py +273 -0
  358. chia/wallet/conditions.py +5 -10
  359. chia/wallet/db_wallet/db_wallet_puzzles.py +4 -4
  360. chia/wallet/derivation_record.py +33 -0
  361. chia/wallet/derive_keys.py +3 -3
  362. chia/wallet/did_wallet/did_info.py +12 -3
  363. chia/wallet/did_wallet/did_wallet.py +132 -101
  364. chia/wallet/did_wallet/did_wallet_puzzles.py +9 -9
  365. chia/wallet/driver_protocol.py +3 -1
  366. chia/{types/spend_bundle.py → wallet/estimate_fees.py} +2 -7
  367. chia/wallet/nft_wallet/metadata_outer_puzzle.py +5 -3
  368. chia/wallet/nft_wallet/nft_puzzle_utils.py +1 -1
  369. chia/wallet/nft_wallet/nft_wallet.py +69 -112
  370. chia/wallet/nft_wallet/ownership_outer_puzzle.py +5 -3
  371. chia/wallet/nft_wallet/singleton_outer_puzzle.py +6 -4
  372. chia/wallet/nft_wallet/transfer_program_puzzle.py +4 -2
  373. chia/wallet/nft_wallet/uncurry_nft.py +4 -6
  374. chia/wallet/notification_manager.py +2 -3
  375. chia/wallet/outer_puzzles.py +7 -2
  376. chia/wallet/puzzle_drivers.py +1 -1
  377. chia/wallet/puzzles/clawback/drivers.py +5 -4
  378. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +1 -1
  379. chia/wallet/puzzles/singleton_top_layer.py +2 -1
  380. chia/wallet/puzzles/singleton_top_layer_v1_1.py +2 -1
  381. chia/wallet/puzzles/tails.py +1 -3
  382. chia/wallet/signer_protocol.py +5 -6
  383. chia/wallet/singleton.py +5 -4
  384. chia/wallet/singleton_record.py +1 -1
  385. chia/wallet/trade_manager.py +18 -20
  386. chia/wallet/trade_record.py +3 -6
  387. chia/wallet/trading/offer.py +12 -13
  388. chia/wallet/uncurried_puzzle.py +2 -2
  389. chia/wallet/util/compute_additions.py +58 -0
  390. chia/wallet/util/compute_hints.py +3 -3
  391. chia/wallet/util/compute_memos.py +4 -4
  392. chia/wallet/util/curry_and_treehash.py +2 -1
  393. chia/wallet/util/debug_spend_bundle.py +1 -1
  394. chia/wallet/util/merkle_tree.py +1 -1
  395. chia/wallet/util/peer_request_cache.py +1 -2
  396. chia/wallet/util/tx_config.py +3 -8
  397. chia/wallet/util/wallet_sync_utils.py +10 -5
  398. chia/wallet/util/wallet_types.py +1 -0
  399. chia/wallet/vc_wallet/cr_cat_drivers.py +17 -18
  400. chia/wallet/vc_wallet/cr_cat_wallet.py +30 -28
  401. chia/wallet/vc_wallet/cr_outer_puzzle.py +5 -3
  402. chia/wallet/vc_wallet/vc_drivers.py +50 -8
  403. chia/wallet/vc_wallet/vc_store.py +3 -5
  404. chia/wallet/vc_wallet/vc_wallet.py +15 -22
  405. chia/wallet/wallet.py +36 -46
  406. chia/wallet/wallet_action_scope.py +73 -4
  407. chia/wallet/wallet_blockchain.py +1 -3
  408. chia/wallet/wallet_interested_store.py +1 -1
  409. chia/wallet/wallet_nft_store.py +3 -3
  410. chia/wallet/wallet_node.py +17 -16
  411. chia/wallet/wallet_node_api.py +4 -5
  412. chia/wallet/wallet_pool_store.py +1 -1
  413. chia/wallet/wallet_protocol.py +2 -0
  414. chia/wallet/wallet_puzzle_store.py +1 -1
  415. chia/{rpc → wallet}/wallet_request_types.py +670 -81
  416. chia/{rpc → wallet}/wallet_rpc_api.py +735 -766
  417. chia/{rpc → wallet}/wallet_rpc_client.py +268 -420
  418. chia/wallet/wallet_singleton_store.py +8 -7
  419. chia/wallet/wallet_spend_bundle.py +4 -3
  420. chia/wallet/wallet_state_manager.py +320 -191
  421. chia/wallet/wallet_weight_proof_handler.py +1 -2
  422. chia/wallet/wsm_apis.py +98 -0
  423. {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5rc1.dist-info}/METADATA +7 -7
  424. {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5rc1.dist-info}/RECORD +443 -436
  425. mozilla-ca/cacert.pem +3 -165
  426. chia/_tests/fee_estimation/test_mempoolitem_height_added.py +0 -145
  427. chia/cmds/dev.py +0 -18
  428. chia/types/blockchain_format/slots.py +0 -9
  429. chia/types/blockchain_format/sub_epoch_summary.py +0 -5
  430. chia/types/end_of_slot_bundle.py +0 -5
  431. chia/types/full_block.py +0 -5
  432. chia/types/header_block.py +0 -5
  433. chia/types/spend_bundle_conditions.py +0 -7
  434. chia/types/transaction_queue_entry.py +0 -56
  435. chia/types/unfinished_block.py +0 -5
  436. /chia/cmds/{installers.py → dev/installers.py} +0 -0
  437. /chia/cmds/{sim.py → dev/sim.py} +0 -0
  438. /chia/{util → cmds}/dump_keyring.py +0 -0
  439. /chia/{full_node → consensus}/signage_point.py +0 -0
  440. /chia/{rpc → data_layer}/data_layer_rpc_client.py +0 -0
  441. /chia/{rpc → farmer}/farmer_rpc_api.py +0 -0
  442. /chia/{util → full_node}/full_block_utils.py +0 -0
  443. /chia/{rpc → harvester}/harvester_rpc_api.py +0 -0
  444. /chia/{rpc → harvester}/harvester_rpc_client.py +0 -0
  445. /chia/{full_node → protocols}/fee_estimate.py +0 -0
  446. /chia/{server → protocols}/outbound_message.py +0 -0
  447. /chia/{rpc → seeder}/crawler_rpc_api.py +0 -0
  448. /chia/{util → simulator}/vdf_prover.py +0 -0
  449. /chia/{util → ssl}/ssl_check.py +0 -0
  450. /chia/{rpc → timelord}/timelord_rpc_api.py +0 -0
  451. {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5rc1.dist-info}/LICENSE +0 -0
  452. {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5rc1.dist-info}/WHEEL +0 -0
  453. {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5rc1.dist-info}/entry_points.txt +0 -0
@@ -7,18 +7,21 @@ from collections.abc import AsyncIterator
7
7
  from contextlib import asynccontextmanager
8
8
  from dataclasses import dataclass
9
9
  from pathlib import Path
10
- from typing import Any, Callable, Optional, TypeVar
10
+ from typing import Any, Optional
11
11
 
12
12
  import anyio
13
13
  from chia_rs import (
14
14
  DONT_VALIDATE_SIGNATURE,
15
+ CoinSpend,
15
16
  ConsensusConstants,
16
17
  G2Element,
18
+ SpendBundle,
17
19
  get_flags_for_height_and_constants,
18
20
  run_block_generator2,
19
21
  )
20
22
  from chia_rs.sized_bytes import bytes32
21
23
  from chia_rs.sized_ints import uint32, uint64
24
+ from typing_extensions import Self
22
25
 
23
26
  from chia.consensus.block_rewards import calculate_base_farmer_reward, calculate_pool_reward
24
27
  from chia.consensus.coinbase import create_farmer_coin, create_pool_coin
@@ -32,16 +35,15 @@ from chia.full_node.mempool_manager import MempoolManager
32
35
  from chia.types.blockchain_format.coin import Coin
33
36
  from chia.types.blockchain_format.program import INFINITE_COST
34
37
  from chia.types.coin_record import CoinRecord
35
- from chia.types.coin_spend import CoinSpend
36
38
  from chia.types.generator_types import BlockGenerator
37
39
  from chia.types.mempool_inclusion_status import MempoolInclusionStatus
38
40
  from chia.types.mempool_item import MempoolItem
39
- from chia.types.spend_bundle import SpendBundle, T_SpendBundle
40
41
  from chia.util.db_wrapper import DBWrapper2
41
42
  from chia.util.errors import Err, ValidationError
42
43
  from chia.util.hash import std_hash
43
44
  from chia.util.streamable import Streamable, streamable
44
45
  from chia.wallet.util.compute_hints import HintedCoin, compute_spend_hints_and_additions
46
+ from chia.wallet.wallet_spend_bundle import T_SpendBundle
45
47
 
46
48
  """
47
49
  The purpose of this file is to provide a lightweight simulator for the testing of Chialisp smart contracts.
@@ -105,9 +107,6 @@ class SimFullBlock(Streamable):
105
107
  height: uint32 # Note that height is not on a regular FullBlock
106
108
 
107
109
 
108
- _T_SimBlockRecord = TypeVar("_T_SimBlockRecord", bound="SimBlockRecord")
109
-
110
-
111
110
  @streamable
112
111
  @dataclass(frozen=True)
113
112
  class SimBlockRecord(Streamable):
@@ -120,7 +119,7 @@ class SimBlockRecord(Streamable):
120
119
  prev_transaction_block_hash: bytes32
121
120
 
122
121
  @classmethod
123
- def create(cls: type[_T_SimBlockRecord], rci: list[Coin], height: uint32, timestamp: uint64) -> _T_SimBlockRecord:
122
+ def create(cls, rci: list[Coin], height: uint32, timestamp: uint64) -> Self:
124
123
  prev_transaction_block_height = uint32(height - 1 if height > 0 else 0)
125
124
  return cls(
126
125
  rci,
@@ -142,9 +141,6 @@ class SimStore(Streamable):
142
141
  blocks: list[SimFullBlock]
143
142
 
144
143
 
145
- _T_SpendSim = TypeVar("_T_SpendSim", bound="SpendSim")
146
-
147
-
148
144
  class SpendSim:
149
145
  db_wrapper: DBWrapper2
150
146
  coin_store: CoinStore
@@ -159,8 +155,8 @@ class SpendSim:
159
155
  @classmethod
160
156
  @contextlib.asynccontextmanager
161
157
  async def managed(
162
- cls: type[_T_SpendSim], db_path: Optional[Path] = None, defaults: ConsensusConstants = DEFAULT_CONSTANTS
163
- ) -> AsyncIterator[_T_SpendSim]:
158
+ cls, db_path: Optional[Path] = None, defaults: ConsensusConstants = DEFAULT_CONSTANTS
159
+ ) -> AsyncIterator[Self]:
164
160
  self = cls()
165
161
  if db_path is None:
166
162
  uri = f"file:db_{random.randint(0, 99999999)}?mode=memory&cache=shared"
@@ -223,7 +219,7 @@ class SpendSim:
223
219
  coins = set()
224
220
  async with self.db_wrapper.reader_no_transaction() as conn:
225
221
  cursor = await conn.execute(
226
- "SELECT puzzle_hash,coin_parent,amount from coin_record WHERE coinbase=0 AND spent_index==0 ",
222
+ "SELECT puzzle_hash,coin_parent,amount from coin_record WHERE coinbase=0 AND spent_index <= 0 ",
227
223
  )
228
224
  rows = await cursor.fetchall()
229
225
 
@@ -238,11 +234,7 @@ class SpendSim:
238
234
  return None
239
235
  return simple_solution_generator(bundle)
240
236
 
241
- async def farm_block(
242
- self,
243
- puzzle_hash: bytes32 = bytes32(b"0" * 32),
244
- item_inclusion_filter: Optional[Callable[[bytes32], bool]] = None,
245
- ) -> tuple[list[Coin], list[Coin]]:
237
+ async def farm_block(self, puzzle_hash: bytes32 = bytes32(b"0" * 32)) -> tuple[list[Coin], list[Coin]]:
246
238
  # Fees get calculated
247
239
  fees = uint64(0)
248
240
  for item in self.mempool_manager.mempool.all_items():
@@ -250,38 +242,34 @@ class SpendSim:
250
242
 
251
243
  # Rewards get created
252
244
  next_block_height: uint32 = uint32(self.block_height + 1) if len(self.block_records) > 0 else self.block_height
253
- pool_coin: Coin = create_pool_coin(
254
- next_block_height,
255
- puzzle_hash,
256
- calculate_pool_reward(next_block_height),
257
- self.defaults.GENESIS_CHALLENGE,
258
- )
259
- farmer_coin: Coin = create_farmer_coin(
260
- next_block_height,
261
- puzzle_hash,
262
- uint64(calculate_base_farmer_reward(next_block_height) + fees),
263
- self.defaults.GENESIS_CHALLENGE,
264
- )
265
- await self.coin_store._add_coin_records(
266
- [self.new_coin_record(pool_coin, True), self.new_coin_record(farmer_coin, True)]
267
- )
268
-
245
+ included_reward_coins = [
246
+ create_pool_coin(
247
+ next_block_height,
248
+ puzzle_hash,
249
+ calculate_pool_reward(next_block_height),
250
+ self.defaults.GENESIS_CHALLENGE,
251
+ ),
252
+ create_farmer_coin(
253
+ next_block_height,
254
+ puzzle_hash,
255
+ uint64(calculate_base_farmer_reward(next_block_height) + fees),
256
+ self.defaults.GENESIS_CHALLENGE,
257
+ ),
258
+ ]
269
259
  # Coin store gets updated
270
260
  generator_bundle: Optional[SpendBundle] = None
271
- return_additions: list[Coin] = []
272
- return_removals: list[Coin] = []
261
+ tx_additions = []
262
+ tx_removals = []
273
263
  spent_coins_ids = None
274
264
  if (len(self.block_records) > 0) and (self.mempool_manager.mempool.size() > 0):
275
265
  peak = self.mempool_manager.peak
276
266
  if peak is not None:
277
- result = await self.mempool_manager.create_bundle_from_mempool(
278
- last_tb_header_hash=peak.header_hash,
279
- item_inclusion_filter=item_inclusion_filter,
280
- )
281
-
267
+ result = self.mempool_manager.create_bundle_from_mempool(last_tb_header_hash=peak.header_hash)
282
268
  if result is not None:
283
269
  bundle, additions = result
284
270
  generator_bundle = bundle
271
+ spent_coins: dict[bytes32, Coin] = {}
272
+ spent_coins_ids = []
285
273
  for spend in generator_bundle.coin_spends:
286
274
  hint_dict, _ = compute_spend_hints_and_additions(spend)
287
275
  hints: list[tuple[bytes32, bytes]] = []
@@ -290,21 +278,25 @@ class SpendSim:
290
278
  if hint_obj.hint is not None:
291
279
  hints.append((coin_name, bytes(hint_obj.hint)))
292
280
  await self.hint_store.add_hints(hints)
293
- return_additions = additions
294
- return_removals = bundle.removals()
295
- spent_coins_ids = [r.name() for r in return_removals]
296
- await self.coin_store._add_coin_records([self.new_coin_record(addition) for addition in additions])
297
- await self.coin_store._set_spent(spent_coins_ids, uint32(self.block_height + 1))
298
-
281
+ spend_id = spend.coin.name()
282
+ spent_coins[spend_id] = spend.coin
283
+ spent_coins_ids.append(spend_id)
284
+ tx_removals.append(spend.coin)
285
+ for child in additions:
286
+ parent = spent_coins.get(child.parent_coin_info)
287
+ assert parent is not None
288
+ same_as_parent = child.puzzle_hash == parent.puzzle_hash and child.amount == parent.amount
289
+ tx_additions.append((child.name(), child, same_as_parent))
290
+ await self.coin_store.new_block(
291
+ height=uint32(self.block_height + 1),
292
+ timestamp=self.timestamp,
293
+ included_reward_coins=included_reward_coins,
294
+ tx_additions=tx_additions,
295
+ tx_removals=spent_coins_ids if spent_coins_ids is not None else [],
296
+ )
299
297
  # SimBlockRecord is created
300
298
  generator: Optional[BlockGenerator] = await self.generate_transaction_generator(generator_bundle)
301
- self.block_records.append(
302
- SimBlockRecord.create(
303
- [pool_coin, farmer_coin],
304
- next_block_height,
305
- self.timestamp,
306
- )
307
- )
299
+ self.block_records.append(SimBlockRecord.create(included_reward_coins, next_block_height, self.timestamp))
308
300
  self.blocks.append(SimFullBlock(generator, next_block_height))
309
301
 
310
302
  # block_height is incremented
@@ -314,7 +306,7 @@ class SpendSim:
314
306
  await self.new_peak(spent_coins_ids)
315
307
 
316
308
  # return some debugging data
317
- return return_additions, return_removals
309
+ return [a for _, a, _ in tx_additions], tx_removals
318
310
 
319
311
  def get_height(self) -> uint32:
320
312
  return self.block_height
@@ -1,17 +1,16 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import pytest
4
- from chia_rs import G1Element
4
+ from chia_rs import G1Element, SpendBundleConditions, SpendConditions
5
5
  from chia_rs.sized_bytes import bytes32
6
6
  from chia_rs.sized_ints import uint64
7
- from clvm.casts import int_to_bytes
8
7
 
8
+ from chia.consensus.condition_tools import parse_sexp_to_conditions, pkm_pairs, pkm_pairs_for_conditions_dict
9
9
  from chia.types.blockchain_format.coin import Coin
10
10
  from chia.types.blockchain_format.program import Program
11
11
  from chia.types.condition_opcodes import ConditionOpcode
12
12
  from chia.types.condition_with_args import ConditionWithArgs
13
- from chia.types.spend_bundle_conditions import SpendBundleConditions, SpendConditions
14
- from chia.util.condition_tools import parse_sexp_to_conditions, pkm_pairs, pkm_pairs_for_conditions_dict
13
+ from chia.util.casts import int_to_bytes
15
14
  from chia.util.errors import ConsensusError
16
15
  from chia.util.hash import std_hash
17
16
 
@@ -50,6 +49,8 @@ def mk_agg_sig_conditions(
50
49
  agg_sig_puzzle=agg_sig_data if opcode == ConditionOpcode.AGG_SIG_PUZZLE else [],
51
50
  agg_sig_puzzle_amount=agg_sig_data if opcode == ConditionOpcode.AGG_SIG_PUZZLE_AMOUNT else [],
52
51
  flags=0,
52
+ execution_cost=0,
53
+ condition_cost=0,
53
54
  )
54
55
  return SpendBundleConditions([spend], 0, 0, 0, None, None, agg_sig_unsafe_data, 0, 0, 0, False, 0, 0)
55
56
 
@@ -6,9 +6,9 @@ from typing import Any, Optional
6
6
  from chia_rs.sized_ints import uint16
7
7
 
8
8
  from chia._tests.util.misc import DataCase, Marks, datacases
9
- from chia.server.outbound_message import NodeType
9
+ from chia.protocols.outbound_message import NodeType
10
+ from chia.server.resolve_peer_info import get_unresolved_peer_infos, set_peer_info
10
11
  from chia.types.peer_info import UnresolvedPeerInfo
11
- from chia.util.config import get_unresolved_peer_infos, set_peer_info
12
12
 
13
13
 
14
14
  @dataclass
@@ -8,7 +8,7 @@ from dataclasses import dataclass
8
8
  from click.testing import CliRunner
9
9
 
10
10
  from chia._tests.util.misc import Marks, datacases
11
- from chia.util.dump_keyring import dump
11
+ from chia.cmds.dump_keyring import dump
12
12
  from chia.util.keychain import Keychain
13
13
 
14
14
  output_prefix = """Attempting to dump contents of keyring file: {path}
@@ -6,38 +6,36 @@ from typing import Optional
6
6
 
7
7
  import pytest
8
8
  from chia_rs import (
9
+ ChallengeChainSubSlot,
10
+ EndOfSubSlotBundle,
9
11
  Foliage,
10
12
  FoliageBlockData,
11
13
  FoliageTransactionBlock,
14
+ FullBlock,
12
15
  G1Element,
13
16
  G2Element,
17
+ HeaderBlock,
18
+ InfusedChallengeChainSubSlot,
14
19
  PoolTarget,
20
+ ProofOfSpace,
15
21
  RewardChainBlock,
22
+ RewardChainSubSlot,
23
+ SubSlotProofs,
16
24
  TransactionsInfo,
17
25
  )
18
26
  from chia_rs.sized_bytes import bytes32
19
27
  from chia_rs.sized_ints import uint8, uint32, uint64, uint128
20
28
 
21
29
  from chia._tests.util.benchmarks import rand_bytes, rand_g1, rand_g2, rand_hash, rand_vdf, rand_vdf_proof, rewards
22
- from chia.types.blockchain_format.proof_of_space import ProofOfSpace
23
- from chia.types.blockchain_format.serialized_program import SerializedProgram
24
- from chia.types.blockchain_format.slots import (
25
- ChallengeChainSubSlot,
26
- InfusedChallengeChainSubSlot,
27
- RewardChainSubSlot,
28
- SubSlotProofs,
29
- )
30
- from chia.types.blockchain_format.vdf import VDFInfo, VDFProof
31
- from chia.types.end_of_slot_bundle import EndOfSubSlotBundle
32
- from chia.types.full_block import FullBlock
33
- from chia.types.header_block import HeaderBlock
34
- from chia.util.full_block_utils import (
30
+ from chia.consensus.generator_tools import get_block_header
31
+ from chia.full_node.full_block_utils import (
35
32
  block_info_from_block,
36
33
  generator_from_block,
37
34
  get_height_and_tx_status_from_block,
38
35
  header_block_from_block,
39
36
  )
40
- from chia.util.generator_tools import get_block_header
37
+ from chia.types.blockchain_format.serialized_program import SerializedProgram
38
+ from chia.types.blockchain_format.vdf import VDFInfo, VDFProof
41
39
 
42
40
  test_g2s: list[G2Element] = [rand_g2() for _ in range(10)]
43
41
  test_g1s: list[G1Element] = [rand_g1() for _ in range(10)]
@@ -13,8 +13,8 @@ from chia._tests.util.misc import RecordingWebServer
13
13
  from chia._tests.util.split_managers import SplitAsyncManager, SplitManager, split_async_manager, split_manager
14
14
  from chia._tests.wallet.test_singleton_lifecycle_fast import satisfies_hint
15
15
  from chia.cmds.cmds_util import format_bytes, format_minutes, validate_directory_writable
16
+ from chia.full_node.tx_processing_queue import ValuedEvent
16
17
  from chia.types.blockchain_format.program import Program
17
- from chia.types.transaction_queue_entry import ValuedEvent
18
18
  from chia.util.batches import to_batches
19
19
  from chia.util.errors import InvalidPathError
20
20
  from chia.util.timing import adjusted_timeout, backoff_times
@@ -98,7 +98,7 @@ def test_empty_lists() -> None:
98
98
  @pytest.mark.parametrize("collection_type", [list, set])
99
99
  def test_valid(collection_type: type) -> None:
100
100
  for k in range(1, 10):
101
- test_collection = collection_type([x for x in range(0, k)])
101
+ test_collection = collection_type([x for x in range(k)])
102
102
  for i in range(1, len(test_collection) + 1): # Test batch_size 1 to 11 (length + 1)
103
103
  checked = 0
104
104
  for batch in to_batches(test_collection, i):
@@ -35,8 +35,8 @@ def test_constructor_invalid_inputs(page_size: int, page_size_limit: int, except
35
35
 
36
36
  def test_page_count() -> None:
37
37
  for page_size in range(1, 10):
38
- for i in range(0, 10):
39
- assert Paginator.create(range(0, i), page_size).page_count() == max(1, ceil(i / page_size))
38
+ for i in range(10):
39
+ assert Paginator.create(range(i), page_size).page_count() == max(1, ceil(i / page_size))
40
40
 
41
41
 
42
42
  @pytest.mark.parametrize(
@@ -62,10 +62,10 @@ def test_page_count() -> None:
62
62
  ],
63
63
  )
64
64
  def test_get_page_valid(length: int, page: int, page_size: int, expected_data: list[int]) -> None:
65
- assert Paginator.create(list(range(0, length)), page_size).get_page(page) == expected_data
65
+ assert Paginator.create(list(range(length)), page_size).get_page(page) == expected_data
66
66
 
67
67
 
68
68
  @pytest.mark.parametrize("page", [-1000, -10, -1, 5, 10, 1000])
69
69
  def test_get_page_invalid(page: int) -> None:
70
70
  with pytest.raises(PageOutOfBoundsError):
71
- Paginator.create(range(0, 17), 5).get_page(page)
71
+ Paginator.create(range(17), 5).get_page(page)
@@ -128,7 +128,7 @@ class Request:
128
128
 
129
129
  def __lt__(self, other: Request) -> bool:
130
130
  if self.acquisition_order is None or other.acquisition_order is None:
131
- raise RequestNotCompleteError()
131
+ raise RequestNotCompleteError
132
132
 
133
133
  return self.acquisition_order < other.acquisition_order
134
134
 
@@ -152,7 +152,7 @@ class Request:
152
152
 
153
153
  def before(self, other: Request) -> bool:
154
154
  if self.release_order is None or other.acquisition_order is None:
155
- raise RequestNotCompleteError()
155
+ raise RequestNotCompleteError
156
156
 
157
157
  return self.release_order < other.acquisition_order
158
158
 
@@ -14,7 +14,7 @@ test_constants = ConsensusConstants(
14
14
  SLOT_BLOCKS_TARGET=uint32(32),
15
15
  MIN_BLOCKS_PER_CHALLENGE_BLOCK=uint8(16),
16
16
  MAX_SUB_SLOT_BLOCKS=uint32(128),
17
- NUM_SPS_SUB_SLOT=uint32(64),
17
+ NUM_SPS_SUB_SLOT=uint8(64),
18
18
  SUB_SLOT_ITERS_STARTING=uint64(2**27),
19
19
  DIFFICULTY_CONSTANT_FACTOR=uint128(2**67),
20
20
  DIFFICULTY_STARTING=uint64(7),
@@ -23,9 +23,12 @@ test_constants = ConsensusConstants(
23
23
  EPOCH_BLOCKS=uint32(4608),
24
24
  SIGNIFICANT_BITS=uint8(8),
25
25
  DISCRIMINANT_SIZE_BITS=uint16(1024),
26
- NUMBER_ZERO_BITS_PLOT_FILTER=uint8(9),
27
- MIN_PLOT_SIZE=uint8(32),
28
- MAX_PLOT_SIZE=uint8(50),
26
+ NUMBER_ZERO_BITS_PLOT_FILTER_V1=uint8(9),
27
+ NUMBER_ZERO_BITS_PLOT_FILTER_V2=uint8(9),
28
+ MIN_PLOT_SIZE_V1=uint8(32),
29
+ MAX_PLOT_SIZE_V1=uint8(50),
30
+ MIN_PLOT_SIZE_V2=uint8(28),
31
+ MAX_PLOT_SIZE_V2=uint8(32),
29
32
  SUB_SLOT_TIME_TARGET=uint16(600),
30
33
  NUM_SP_INTERVALS_EXTRA=uint8(3),
31
34
  MAX_FUTURE_TIME2=uint32(2 * 60),
@@ -56,11 +59,18 @@ test_constants = ConsensusConstants(
56
59
  MAX_GENERATOR_SIZE=uint32(1000000),
57
60
  MAX_GENERATOR_REF_LIST_SIZE=uint32(512),
58
61
  POOL_SUB_SLOT_ITERS=uint64(37600000000),
59
- SOFT_FORK6_HEIGHT=uint32(6800000),
60
62
  HARD_FORK_HEIGHT=uint32(5496000),
63
+ HARD_FORK2_HEIGHT=uint32(0xFFFFFFFF),
64
+ PLOT_V1_PHASE_OUT=uint32(1179648),
61
65
  PLOT_FILTER_128_HEIGHT=uint32(10542000),
62
66
  PLOT_FILTER_64_HEIGHT=uint32(15592000),
63
67
  PLOT_FILTER_32_HEIGHT=uint32(20643000),
68
+ PLOT_DIFFICULTY_INITIAL=uint8(2),
69
+ PLOT_DIFFICULTY_4_HEIGHT=uint32(0xFFFFFFFF),
70
+ PLOT_DIFFICULTY_5_HEIGHT=uint32(0xFFFFFFFF),
71
+ PLOT_DIFFICULTY_6_HEIGHT=uint32(0xFFFFFFFF),
72
+ PLOT_DIFFICULTY_7_HEIGHT=uint32(0xFFFFFFFF),
73
+ PLOT_DIFFICULTY_8_HEIGHT=uint32(0xFFFFFFFF),
64
74
  )
65
75
 
66
76
 
@@ -6,7 +6,7 @@ from pathlib import Path
6
6
  import pytest
7
7
 
8
8
  from chia.ssl.create_ssl import create_all_ssl
9
- from chia.util.ssl_check import check_ssl
9
+ from chia.ssl.ssl_check import check_ssl
10
10
 
11
11
 
12
12
  def test_check_ssl_stream_with_bad_permissions(
@@ -8,9 +8,19 @@ from chia.consensus.default_constants import update_testnet_overrides
8
8
  def test_testnet11() -> None:
9
9
  overrides: dict[str, Any] = {}
10
10
  update_testnet_overrides("testnet11", overrides)
11
- assert overrides == {
12
- "SOFT_FORK6_HEIGHT": 2000000,
13
- }
11
+ assert overrides == {"MIN_PLOT_SIZE_V2": 18}
12
+
13
+
14
+ def test_min_plot_size() -> None:
15
+ overrides: dict[str, Any] = {"MIN_PLOT_SIZE": 18}
16
+ update_testnet_overrides("testnet11", overrides)
17
+ assert overrides == {"MIN_PLOT_SIZE_V1": 18, "MIN_PLOT_SIZE_V2": 18}
18
+
19
+
20
+ def test_max_plot_size() -> None:
21
+ overrides: dict[str, Any] = {"MAX_PLOT_SIZE": 32}
22
+ update_testnet_overrides("testnet11", overrides)
23
+ assert overrides == {"MAX_PLOT_SIZE_V1": 32, "MIN_PLOT_SIZE_V2": 18}
14
24
 
15
25
 
16
26
  def test_mainnet() -> None:
@@ -11,11 +11,13 @@ from inspect import getframeinfo, stack
11
11
  from pathlib import Path
12
12
  from typing import TYPE_CHECKING, Any, Callable, ClassVar, Protocol, TypeVar, cast, final
13
13
 
14
+ from typing_extensions import Self
15
+
14
16
  import chia
15
17
  import chia._tests
16
18
  from chia._tests import ether
19
+ from chia.protocols.outbound_message import Message
17
20
  from chia.protocols.protocol_message_types import ProtocolMessageTypes
18
- from chia.server.outbound_message import Message
19
21
  from chia.util.timing import adjusted_timeout
20
22
 
21
23
  log = logging.getLogger(__name__)
@@ -37,7 +39,7 @@ class DataTypeProtocol(Protocol):
37
39
  __match_args__: ClassVar[tuple[str, ...]] = ()
38
40
 
39
41
  @classmethod
40
- def unmarshal(cls: type[T], marshalled: dict[str, Any]) -> T: ...
42
+ def unmarshal(cls, marshalled: dict[str, Any]) -> Self: ...
41
43
 
42
44
  def marshal(self) -> dict[str, Any]: ...
43
45
 
@@ -5,7 +5,6 @@ from typing import Optional
5
5
  import pytest
6
6
  from chia_rs import AugSchemeMPL, G2Element, PrivateKey
7
7
  from chia_rs.sized_ints import uint64
8
- from clvm.casts import int_to_bytes
9
8
 
10
9
  from chia._tests.clvm.benchmark_costs import cost_of_spend_bundle
11
10
  from chia._tests.clvm.test_puzzles import secret_exponent_for_index
@@ -15,6 +14,7 @@ from chia.types.blockchain_format.coin import Coin
15
14
  from chia.types.blockchain_format.program import Program
16
15
  from chia.types.coin_spend import make_spend
17
16
  from chia.types.mempool_inclusion_status import MempoolInclusionStatus
17
+ from chia.util.casts import int_to_bytes
18
18
  from chia.util.errors import Err
19
19
  from chia.wallet.cat_wallet.cat_utils import (
20
20
  CAT_MOD,
@@ -9,7 +9,6 @@ from clvm_tools.binutils import disassemble
9
9
 
10
10
  from chia.types.blockchain_format.coin import Coin
11
11
  from chia.types.blockchain_format.program import Program
12
- from chia.types.blockchain_format.serialized_program import SerializedProgram
13
12
  from chia.types.coin_spend import make_spend
14
13
  from chia.wallet.cat_wallet.cat_utils import CAT_MOD, construct_cat_puzzle
15
14
  from chia.wallet.outer_puzzles import construct_puzzle, get_inner_puzzle, get_inner_solution, match_puzzle, solve_puzzle
@@ -38,7 +37,7 @@ def test_cat_outer_puzzle() -> None:
38
37
  # Set up for solve
39
38
  parent_coin = Coin(tail, double_cat_puzzle.get_tree_hash(), uint64(100))
40
39
  child_coin = Coin(parent_coin.name(), double_cat_puzzle.get_tree_hash(), uint64(100))
41
- parent_spend = make_spend(parent_coin, SerializedProgram.from_program(double_cat_puzzle), Program.to([]))
40
+ parent_spend = make_spend(parent_coin, double_cat_puzzle, Program.to([]))
42
41
  child_coin_as_hex: str = (
43
42
  "0x"
44
43
  + child_coin.parent_coin_info.hex()