chia-blockchain 2.5.4rc2__py3-none-any.whl → 2.5.5__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 +529 -69
  63. chia/_tests/core/mempool/test_mempool_performance.py +3 -2
  64. chia/_tests/core/mempool/test_singleton_fast_forward.py +61 -132
  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 +495 -265
  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 +153 -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 +47 -45
  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 +274 -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.5.dist-info}/METADATA +7 -7
  424. {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5.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.5.dist-info}/LICENSE +0 -0
  452. {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5.dist-info}/WHEEL +0 -0
  453. {chia_blockchain-2.5.4rc2.dist-info → chia_blockchain-2.5.5.dist-info}/entry_points.txt +0 -0
@@ -3,10 +3,9 @@ from __future__ import annotations
3
3
  import logging
4
4
  from typing import Optional, Union
5
5
 
6
- from chia_rs import ConsensusConstants
6
+ from chia_rs import BlockRecord, ConsensusConstants, FullBlock, SubEpochSummary, UnfinishedBlock
7
7
  from chia_rs.sized_ints import uint8, uint32, uint64, uint128
8
8
 
9
- from chia.consensus.block_record import BlockRecord
10
9
  from chia.consensus.blockchain_interface import BlockRecordsProtocol
11
10
  from chia.consensus.deficit import calculate_deficit
12
11
  from chia.consensus.difficulty_adjustment import (
@@ -17,9 +16,6 @@ from chia.consensus.difficulty_adjustment import (
17
16
  height_can_be_first_in_epoch,
18
17
  )
19
18
  from chia.consensus.pot_iterations import calculate_ip_iters, calculate_sp_iters, is_overflow_block
20
- from chia.types.blockchain_format.sub_epoch_summary import SubEpochSummary
21
- from chia.types.full_block import FullBlock
22
- from chia.types.unfinished_block import UnfinishedBlock
23
19
 
24
20
  log = logging.getLogger(__name__)
25
21
 
@@ -11,8 +11,11 @@ from dataclasses import dataclass
11
11
  from typing import Optional
12
12
 
13
13
  from chia_rs import (
14
+ BlockRecord,
14
15
  ConsensusConstants,
16
+ FullBlock,
15
17
  SpendBundleConditions,
18
+ SubEpochSummary,
16
19
  get_flags_for_height_and_constants,
17
20
  run_block_generator,
18
21
  run_block_generator2,
@@ -20,22 +23,21 @@ from chia_rs import (
20
23
  from chia_rs.sized_bytes import bytes32
21
24
  from chia_rs.sized_ints import uint16, uint32, uint64
22
25
 
26
+ from chia.consensus.augmented_chain import AugmentedBlockchain
23
27
  from chia.consensus.block_header_validation import validate_finished_header_block
24
- from chia.consensus.block_record import BlockRecord
25
28
  from chia.consensus.blockchain_interface import BlockRecordsProtocol
26
29
  from chia.consensus.full_block_to_block_record import block_to_block_record
27
- from chia.consensus.get_block_challenge import get_block_challenge
30
+ from chia.consensus.generator_tools import get_block_header, tx_removals_and_additions
31
+ from chia.consensus.get_block_challenge import get_block_challenge, prev_tx_block
28
32
  from chia.consensus.get_block_generator import get_block_generator
29
- from chia.consensus.pot_iterations import calculate_iterations_quality, is_overflow_block
33
+ from chia.consensus.pot_iterations import (
34
+ is_overflow_block,
35
+ validate_pospace_and_get_required_iters,
36
+ )
30
37
  from chia.types.blockchain_format.coin import Coin
31
- from chia.types.blockchain_format.proof_of_space import verify_and_get_quality_string
32
- from chia.types.blockchain_format.sub_epoch_summary import SubEpochSummary
33
- from chia.types.full_block import FullBlock
34
38
  from chia.types.generator_types import BlockGenerator
35
39
  from chia.types.validation_state import ValidationState
36
- from chia.util.augmented_chain import AugmentedBlockchain
37
40
  from chia.util.errors import Err
38
- from chia.util.generator_tools import get_block_header, tx_removals_and_additions
39
41
  from chia.util.streamable import Streamable, streamable
40
42
 
41
43
  log = logging.getLogger(__name__)
@@ -128,11 +130,10 @@ def _pre_validate_block(
128
130
  removals_and_additions = ([], [])
129
131
 
130
132
  assert conds is None or conds.validated_signature is True
131
- header_block = get_block_header(block, removals_and_additions)
132
133
  required_iters, error = validate_finished_header_block(
133
134
  constants,
134
135
  blockchain,
135
- header_block,
136
+ get_block_header(block, removals_and_additions),
136
137
  True, # check_filter
137
138
  expected_vs,
138
139
  )
@@ -211,19 +212,19 @@ async def pre_validate_block(
211
212
  cc_sp_hash: bytes32 = challenge
212
213
  else:
213
214
  cc_sp_hash = block.reward_chain_block.challenge_chain_sp_vdf.output.get_hash()
214
- q_str: Optional[bytes32] = verify_and_get_quality_string(
215
- block.reward_chain_block.proof_of_space, constants, challenge, cc_sp_hash, height=block.height
216
- )
217
- if q_str is None:
218
- return return_error(Err.INVALID_POSPACE)
219
215
 
220
- required_iters: uint64 = calculate_iterations_quality(
221
- constants.DIFFICULTY_CONSTANT_FACTOR,
222
- q_str,
223
- block.reward_chain_block.proof_of_space.size,
224
- vs.difficulty,
216
+ required_iters = validate_pospace_and_get_required_iters(
217
+ constants,
218
+ block.reward_chain_block.proof_of_space,
219
+ challenge,
225
220
  cc_sp_hash,
221
+ block.height,
222
+ vs.difficulty,
223
+ vs.ssi,
224
+ prev_tx_block(blockchain, prev_b),
226
225
  )
226
+ if required_iters is None:
227
+ return return_error(Err.INVALID_POSPACE)
227
228
 
228
229
  try:
229
230
  block_rec = block_to_block_record(
@@ -1,12 +1,18 @@
1
1
  from __future__ import annotations
2
2
 
3
- from chia_rs import ConsensusConstants
3
+ from typing import Optional
4
+
5
+ from chia_rs import ConsensusConstants, PlotSize, ProofOfSpace
4
6
  from chia_rs.sized_bytes import bytes32
5
- from chia_rs.sized_ints import uint8, uint64, uint128
7
+ from chia_rs.sized_ints import uint8, uint32, uint64
6
8
 
7
9
  from chia.consensus.pos_quality import _expected_plot_size
10
+ from chia.types.blockchain_format.proof_of_space import verify_and_get_quality_string
8
11
  from chia.util.hash import std_hash
9
12
 
13
+ # TODO: todo_v2_plots add to chia_rs and get from constants
14
+ PHASE_OUT_PERIOD = uint32(10000000)
15
+
10
16
 
11
17
  def is_overflow_block(constants: ConsensusConstants, signage_point_index: uint8) -> bool:
12
18
  if signage_point_index >= constants.NUM_SPS_SUB_SLOT:
@@ -25,6 +31,25 @@ def calculate_sp_iters(constants: ConsensusConstants, sub_slot_iters: uint64, si
25
31
  return uint64(calculate_sp_interval_iters(constants, sub_slot_iters) * signage_point_index)
26
32
 
27
33
 
34
+ def calculate_phase_out(
35
+ constants: ConsensusConstants,
36
+ sub_slot_iters: uint64,
37
+ prev_transaction_block_height: uint32,
38
+ ) -> uint64:
39
+ if prev_transaction_block_height <= constants.HARD_FORK2_HEIGHT:
40
+ return uint64(0)
41
+ elif uint32(prev_transaction_block_height - constants.HARD_FORK2_HEIGHT) >= PHASE_OUT_PERIOD:
42
+ return uint64(calculate_sp_interval_iters(constants, sub_slot_iters))
43
+
44
+ return uint64(
45
+ (
46
+ uint32(prev_transaction_block_height - constants.HARD_FORK2_HEIGHT)
47
+ * calculate_sp_interval_iters(constants, sub_slot_iters)
48
+ )
49
+ // PHASE_OUT_PERIOD
50
+ )
51
+
52
+
28
53
  def calculate_ip_iters(
29
54
  constants: ConsensusConstants,
30
55
  sub_slot_iters: uint64,
@@ -46,23 +71,59 @@ def calculate_ip_iters(
46
71
  return uint64((sp_iters + constants.NUM_SP_INTERVALS_EXTRA * sp_interval_iters + required_iters) % sub_slot_iters)
47
72
 
48
73
 
74
+ def validate_pospace_and_get_required_iters(
75
+ constants: ConsensusConstants,
76
+ proof_of_space: ProofOfSpace,
77
+ challenge: bytes32,
78
+ cc_sp_hash: bytes32,
79
+ height: uint32,
80
+ difficulty: uint64,
81
+ sub_slot_iters: uint64,
82
+ prev_transaction_block_height: uint32, # this is the height of the last tx block before the current block SP
83
+ ) -> Optional[uint64]:
84
+ q_str: Optional[bytes32] = verify_and_get_quality_string(
85
+ proof_of_space, constants, challenge, cc_sp_hash, height=height
86
+ )
87
+ if q_str is None:
88
+ return None
89
+
90
+ return calculate_iterations_quality(
91
+ constants,
92
+ q_str,
93
+ proof_of_space.size(),
94
+ difficulty,
95
+ cc_sp_hash,
96
+ sub_slot_iters,
97
+ prev_transaction_block_height,
98
+ )
99
+
100
+
49
101
  def calculate_iterations_quality(
50
- difficulty_constant_factor: uint128,
102
+ constants: ConsensusConstants,
51
103
  quality_string: bytes32,
52
- size: int,
104
+ size: PlotSize,
53
105
  difficulty: uint64,
54
106
  cc_sp_output_hash: bytes32,
107
+ ssi: uint64,
108
+ prev_transaction_block_height: uint32, # this is the height of the last tx block before the current block SP
55
109
  ) -> uint64:
56
110
  """
57
111
  Calculates the number of iterations from the quality. This is derives as the difficulty times the constant factor
58
112
  times a random number between 0 and 1 (based on quality string), divided by plot size.
59
113
  """
60
- sp_quality_string: bytes32 = std_hash(quality_string + cc_sp_output_hash)
61
-
62
- iters = uint64(
63
- int(difficulty)
64
- * int(difficulty_constant_factor)
65
- * int.from_bytes(sp_quality_string, "big", signed=False)
66
- // (int(pow(2, 256)) * int(_expected_plot_size(size)))
67
- )
68
- return max(iters, uint64(1))
114
+ if size.size_v1 is not None:
115
+ assert size.size_v2 is None
116
+ sp_quality_string: bytes32 = std_hash(quality_string + cc_sp_output_hash)
117
+ phase_out = calculate_phase_out(constants, ssi, prev_transaction_block_height)
118
+ iters = uint64(
119
+ (
120
+ int(difficulty)
121
+ * int(constants.DIFFICULTY_CONSTANT_FACTOR)
122
+ * int.from_bytes(sp_quality_string, "big", signed=False)
123
+ // (int(pow(2, 256)) * int(_expected_plot_size(size.size_v1)))
124
+ )
125
+ + phase_out
126
+ )
127
+ return max(iters, uint64(1))
128
+ else:
129
+ raise NotImplementedError
@@ -1,8 +1,8 @@
1
1
  from __future__ import annotations
2
2
 
3
+ from chia_rs import BlockRecord
3
4
  from chia_rs.sized_ints import uint128
4
5
 
5
- from chia.consensus.block_record import BlockRecord
6
6
  from chia.consensus.blockchain_interface import BlockRecordsProtocol
7
7
 
8
8
 
@@ -2,14 +2,12 @@ from __future__ import annotations
2
2
 
3
3
  from typing import Optional
4
4
 
5
- from chia_rs import ConsensusConstants
5
+ from chia_rs import BlockRecord, ConsensusConstants, EndOfSubSlotBundle
6
6
  from chia_rs.sized_bytes import bytes32
7
7
  from chia_rs.sized_ints import uint64, uint128
8
8
 
9
- from chia.consensus.block_record import BlockRecord
10
9
  from chia.consensus.blockchain_interface import BlockRecordsProtocol
11
10
  from chia.types.blockchain_format.classgroup import ClassgroupElement
12
- from chia.types.end_of_slot_bundle import EndOfSubSlotBundle
13
11
 
14
12
 
15
13
  def get_signage_point_vdf_info(
@@ -97,7 +97,7 @@ class KeychainProxy(DaemonProxy):
97
97
  self.log.debug(f"Sending request to keychain command: {request['command']} from {request['origin']}.")
98
98
  return await super()._get(request)
99
99
  except asyncio.TimeoutError:
100
- raise KeychainProxyConnectionTimeout()
100
+ raise KeychainProxyConnectionTimeout
101
101
 
102
102
  async def start(self, wait_for_start: bool = False) -> None:
103
103
  self.keychain_connection_task = create_referenced_task(self.connect_to_keychain())
@@ -156,11 +156,11 @@ class KeychainProxy(DaemonProxy):
156
156
  if error:
157
157
  error_details = response["data"].get("error_details", {})
158
158
  if error == KEYCHAIN_ERR_LOCKED:
159
- raise KeychainIsLocked()
159
+ raise KeychainIsLocked
160
160
  elif error == KEYCHAIN_ERR_NO_KEYS:
161
- raise KeychainIsEmpty()
161
+ raise KeychainIsEmpty
162
162
  elif error == KEYCHAIN_ERR_KEY_NOT_FOUND:
163
- raise KeychainKeyNotFound()
163
+ raise KeychainKeyNotFound
164
164
  elif error == KEYCHAIN_ERR_MALFORMED_REQUEST:
165
165
  message = error_details.get("message", "")
166
166
  raise KeychainMalformedRequest(message)
@@ -356,7 +356,7 @@ class KeychainProxy(DaemonProxy):
356
356
  if self.use_local_keychain():
357
357
  keys = self.keychain.get_keys(include_secrets=private)
358
358
  if len(keys) == 0:
359
- raise KeychainIsEmpty()
359
+ raise KeychainIsEmpty
360
360
  else:
361
361
  selected_key = keys[0]
362
362
  if fingerprint is not None:
chia/daemon/server.py CHANGED
@@ -12,7 +12,7 @@ import subprocess
12
12
  import sys
13
13
  import traceback
14
14
  import uuid
15
- from collections.abc import AsyncIterator
15
+ from collections.abc import AsyncIterator, Collection
16
16
  from concurrent.futures import ThreadPoolExecutor
17
17
  from contextlib import asynccontextmanager
18
18
  from enum import Enum
@@ -27,7 +27,6 @@ from typing_extensions import Protocol
27
27
  from chia import __version__
28
28
  from chia.cmds.init_funcs import check_keys, chia_init
29
29
  from chia.cmds.passphrase_funcs import default_passphrase, using_default_passphrase
30
- from chia.consensus.coinbase import create_puzzlehash_for_pk
31
30
  from chia.daemon.keychain_server import KeychainServer, keychain_commands
32
31
  from chia.daemon.windows_signal import kill
33
32
  from chia.plotters.plotters import get_available_plotters
@@ -55,17 +54,31 @@ from chia.wallet.derive_keys import (
55
54
  master_sk_to_pool_sk,
56
55
  master_sk_to_wallet_sk,
57
56
  )
57
+ from chia.wallet.puzzles.p2_delegated_puzzle_or_hidden_puzzle import puzzle_hash_for_pk
58
58
 
59
59
  io_pool_exc = ThreadPoolExecutor()
60
60
 
61
61
  try:
62
- from aiohttp import WSMsgType, web
62
+ from aiohttp import WSMessage, WSMsgType, web
63
63
  from aiohttp.web_ws import WebSocketResponse
64
64
  except ModuleNotFoundError:
65
65
  print("Error: Make sure to run . ./activate from the project folder before starting Chia.")
66
66
  sys.exit()
67
67
 
68
68
 
69
+ def redact_sensitive_data(obj: Any, redaction_triggers: Collection[str] = ("pass", "key", "secret", "mnemonic")) -> Any:
70
+ """Recursively redact sensitive data from nested dictionaries."""
71
+ if isinstance(obj, dict):
72
+ return {
73
+ key: "***<redacted>***"
74
+ if any(trigger.casefold() in key.casefold() for trigger in redaction_triggers)
75
+ else redact_sensitive_data(value, redaction_triggers)
76
+ for key, value in obj.items()
77
+ }
78
+ else:
79
+ return obj
80
+
81
+
69
82
  log = logging.getLogger(__name__)
70
83
 
71
84
  service_plotter = "chia_plotter"
@@ -267,7 +280,6 @@ class WebSocketServer:
267
280
 
268
281
  while True:
269
282
  msg = await ws.receive()
270
- self.log.debug("Received message: %s", msg)
271
283
  decoded: WsRpcMessage = {
272
284
  "command": "",
273
285
  "ack": False,
@@ -282,6 +294,10 @@ class WebSocketServer:
282
294
  if "data" not in decoded:
283
295
  decoded["data"] = {}
284
296
 
297
+ redacted_data = redact_sensitive_data(decoded)
298
+ redacted_message = WSMessage(msg.type, redacted_data, msg.extra)
299
+ self.log.debug("Received message: %s", redacted_message)
300
+
285
301
  maybe_response = await self.handle_message(ws, decoded)
286
302
  if maybe_response is None:
287
303
  continue
@@ -297,6 +313,7 @@ class WebSocketServer:
297
313
 
298
314
  await self.send_all_responses(connections, response)
299
315
  else:
316
+ self.log.debug("Received non-text message")
300
317
  service_names = self.remove_connection(ws)
301
318
 
302
319
  if len(service_names) == 0:
@@ -669,7 +686,7 @@ class WebSocketServer:
669
686
  pk = sk.get_g1()
670
687
  else:
671
688
  pk = master_pk_to_wallet_pk_unhardened(key.public_key, uint32(i))
672
- wallet_address = encode_puzzle_hash(create_puzzlehash_for_pk(pk), prefix)
689
+ wallet_address = encode_puzzle_hash(puzzle_hash_for_pk(pk), prefix)
673
690
  if non_observer_derivation:
674
691
  hd_path = f"m/12381n/8444n/2n/{i}n"
675
692
  else: