chia-blockchain 2.4.4__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 (1028) hide show
  1. chia/__init__.py +10 -0
  2. chia/__main__.py +5 -0
  3. chia/_tests/README.md +53 -0
  4. chia/_tests/__init__.py +0 -0
  5. chia/_tests/blockchain/__init__.py +0 -0
  6. chia/_tests/blockchain/blockchain_test_utils.py +197 -0
  7. chia/_tests/blockchain/config.py +4 -0
  8. chia/_tests/blockchain/test_augmented_chain.py +147 -0
  9. chia/_tests/blockchain/test_blockchain.py +4100 -0
  10. chia/_tests/blockchain/test_blockchain_transactions.py +1050 -0
  11. chia/_tests/blockchain/test_build_chains.py +61 -0
  12. chia/_tests/blockchain/test_get_block_generator.py +72 -0
  13. chia/_tests/blockchain/test_lookup_fork_chain.py +195 -0
  14. chia/_tests/build-init-files.py +93 -0
  15. chia/_tests/build-job-matrix.py +204 -0
  16. chia/_tests/check_pytest_monitor_output.py +34 -0
  17. chia/_tests/check_sql_statements.py +73 -0
  18. chia/_tests/chia-start-sim +42 -0
  19. chia/_tests/clvm/__init__.py +0 -0
  20. chia/_tests/clvm/benchmark_costs.py +23 -0
  21. chia/_tests/clvm/coin_store.py +147 -0
  22. chia/_tests/clvm/test_chialisp_deserialization.py +101 -0
  23. chia/_tests/clvm/test_clvm_step.py +37 -0
  24. chia/_tests/clvm/test_condition_codes.py +13 -0
  25. chia/_tests/clvm/test_curry_and_treehash.py +57 -0
  26. chia/_tests/clvm/test_program.py +150 -0
  27. chia/_tests/clvm/test_puzzle_compression.py +144 -0
  28. chia/_tests/clvm/test_puzzle_drivers.py +45 -0
  29. chia/_tests/clvm/test_puzzles.py +247 -0
  30. chia/_tests/clvm/test_singletons.py +540 -0
  31. chia/_tests/clvm/test_spend_sim.py +181 -0
  32. chia/_tests/cmds/__init__.py +0 -0
  33. chia/_tests/cmds/cmd_test_utils.py +472 -0
  34. chia/_tests/cmds/config.py +3 -0
  35. chia/_tests/cmds/conftest.py +23 -0
  36. chia/_tests/cmds/test_click_types.py +195 -0
  37. chia/_tests/cmds/test_cmd_framework.py +400 -0
  38. chia/_tests/cmds/test_cmds_util.py +97 -0
  39. chia/_tests/cmds/test_daemon.py +92 -0
  40. chia/_tests/cmds/test_farm_cmd.py +67 -0
  41. chia/_tests/cmds/test_show.py +116 -0
  42. chia/_tests/cmds/test_sim.py +207 -0
  43. chia/_tests/cmds/test_timelock_args.py +75 -0
  44. chia/_tests/cmds/test_tx_config_args.py +153 -0
  45. chia/_tests/cmds/testing_classes.py +59 -0
  46. chia/_tests/cmds/wallet/__init__.py +0 -0
  47. chia/_tests/cmds/wallet/test_coins.py +195 -0
  48. chia/_tests/cmds/wallet/test_consts.py +47 -0
  49. chia/_tests/cmds/wallet/test_dao.py +565 -0
  50. chia/_tests/cmds/wallet/test_did.py +403 -0
  51. chia/_tests/cmds/wallet/test_nft.py +470 -0
  52. chia/_tests/cmds/wallet/test_notifications.py +124 -0
  53. chia/_tests/cmds/wallet/test_offer.toffer +1 -0
  54. chia/_tests/cmds/wallet/test_tx_decorators.py +27 -0
  55. chia/_tests/cmds/wallet/test_vcs.py +376 -0
  56. chia/_tests/cmds/wallet/test_wallet.py +1126 -0
  57. chia/_tests/cmds/wallet/test_wallet_check.py +111 -0
  58. chia/_tests/conftest.py +1304 -0
  59. chia/_tests/connection_utils.py +124 -0
  60. chia/_tests/core/__init__.py +0 -0
  61. chia/_tests/core/cmds/__init__.py +0 -0
  62. chia/_tests/core/cmds/test_beta.py +382 -0
  63. chia/_tests/core/cmds/test_keys.py +1734 -0
  64. chia/_tests/core/cmds/test_wallet.py +126 -0
  65. chia/_tests/core/config.py +3 -0
  66. chia/_tests/core/consensus/__init__.py +0 -0
  67. chia/_tests/core/consensus/test_block_creation.py +56 -0
  68. chia/_tests/core/consensus/test_pot_iterations.py +117 -0
  69. chia/_tests/core/custom_types/__init__.py +0 -0
  70. chia/_tests/core/custom_types/test_coin.py +109 -0
  71. chia/_tests/core/custom_types/test_proof_of_space.py +144 -0
  72. chia/_tests/core/custom_types/test_spend_bundle.py +71 -0
  73. chia/_tests/core/daemon/__init__.py +0 -0
  74. chia/_tests/core/daemon/config.py +4 -0
  75. chia/_tests/core/daemon/test_daemon.py +2128 -0
  76. chia/_tests/core/daemon/test_daemon_register.py +109 -0
  77. chia/_tests/core/daemon/test_keychain_proxy.py +100 -0
  78. chia/_tests/core/data_layer/__init__.py +0 -0
  79. chia/_tests/core/data_layer/config.py +5 -0
  80. chia/_tests/core/data_layer/conftest.py +105 -0
  81. chia/_tests/core/data_layer/test_data_cli.py +57 -0
  82. chia/_tests/core/data_layer/test_data_layer.py +83 -0
  83. chia/_tests/core/data_layer/test_data_layer_util.py +219 -0
  84. chia/_tests/core/data_layer/test_data_rpc.py +3865 -0
  85. chia/_tests/core/data_layer/test_data_store.py +2423 -0
  86. chia/_tests/core/data_layer/test_data_store_schema.py +381 -0
  87. chia/_tests/core/data_layer/test_plugin.py +91 -0
  88. chia/_tests/core/data_layer/util.py +232 -0
  89. chia/_tests/core/farmer/__init__.py +0 -0
  90. chia/_tests/core/farmer/config.py +3 -0
  91. chia/_tests/core/farmer/test_farmer_api.py +101 -0
  92. chia/_tests/core/full_node/__init__.py +0 -0
  93. chia/_tests/core/full_node/config.py +4 -0
  94. chia/_tests/core/full_node/dos/__init__.py +0 -0
  95. chia/_tests/core/full_node/dos/config.py +3 -0
  96. chia/_tests/core/full_node/full_sync/__init__.py +0 -0
  97. chia/_tests/core/full_node/full_sync/config.py +4 -0
  98. chia/_tests/core/full_node/full_sync/test_full_sync.py +448 -0
  99. chia/_tests/core/full_node/ram_db.py +27 -0
  100. chia/_tests/core/full_node/stores/__init__.py +0 -0
  101. chia/_tests/core/full_node/stores/config.py +4 -0
  102. chia/_tests/core/full_node/stores/test_block_store.py +488 -0
  103. chia/_tests/core/full_node/stores/test_coin_store.py +888 -0
  104. chia/_tests/core/full_node/stores/test_full_node_store.py +1215 -0
  105. chia/_tests/core/full_node/stores/test_hint_store.py +230 -0
  106. chia/_tests/core/full_node/stores/test_sync_store.py +135 -0
  107. chia/_tests/core/full_node/test_address_manager.py +588 -0
  108. chia/_tests/core/full_node/test_block_height_map.py +556 -0
  109. chia/_tests/core/full_node/test_conditions.py +558 -0
  110. chia/_tests/core/full_node/test_full_node.py +2445 -0
  111. chia/_tests/core/full_node/test_generator_tools.py +82 -0
  112. chia/_tests/core/full_node/test_hint_management.py +104 -0
  113. chia/_tests/core/full_node/test_node_load.py +34 -0
  114. chia/_tests/core/full_node/test_performance.py +182 -0
  115. chia/_tests/core/full_node/test_subscriptions.py +492 -0
  116. chia/_tests/core/full_node/test_transactions.py +203 -0
  117. chia/_tests/core/full_node/test_tx_processing_queue.py +154 -0
  118. chia/_tests/core/large_block.py +2388 -0
  119. chia/_tests/core/make_block_generator.py +72 -0
  120. chia/_tests/core/mempool/__init__.py +0 -0
  121. chia/_tests/core/mempool/config.py +4 -0
  122. chia/_tests/core/mempool/test_mempool.py +3180 -0
  123. chia/_tests/core/mempool/test_mempool_fee_estimator.py +104 -0
  124. chia/_tests/core/mempool/test_mempool_fee_protocol.py +55 -0
  125. chia/_tests/core/mempool/test_mempool_item_queries.py +192 -0
  126. chia/_tests/core/mempool/test_mempool_manager.py +2054 -0
  127. chia/_tests/core/mempool/test_mempool_performance.py +65 -0
  128. chia/_tests/core/mempool/test_singleton_fast_forward.py +567 -0
  129. chia/_tests/core/node_height.py +28 -0
  130. chia/_tests/core/server/__init__.py +0 -0
  131. chia/_tests/core/server/config.py +3 -0
  132. chia/_tests/core/server/flood.py +82 -0
  133. chia/_tests/core/server/serve.py +132 -0
  134. chia/_tests/core/server/test_capabilities.py +68 -0
  135. chia/_tests/core/server/test_dos.py +320 -0
  136. chia/_tests/core/server/test_event_loop.py +109 -0
  137. chia/_tests/core/server/test_loop.py +290 -0
  138. chia/_tests/core/server/test_node_discovery.py +74 -0
  139. chia/_tests/core/server/test_rate_limits.py +370 -0
  140. chia/_tests/core/server/test_server.py +225 -0
  141. chia/_tests/core/server/test_upnp.py +8 -0
  142. chia/_tests/core/services/__init__.py +0 -0
  143. chia/_tests/core/services/config.py +3 -0
  144. chia/_tests/core/services/test_services.py +166 -0
  145. chia/_tests/core/ssl/__init__.py +0 -0
  146. chia/_tests/core/ssl/config.py +3 -0
  147. chia/_tests/core/ssl/test_ssl.py +198 -0
  148. chia/_tests/core/test_coins.py +33 -0
  149. chia/_tests/core/test_cost_calculation.py +314 -0
  150. chia/_tests/core/test_crawler.py +175 -0
  151. chia/_tests/core/test_crawler_rpc.py +53 -0
  152. chia/_tests/core/test_daemon_rpc.py +24 -0
  153. chia/_tests/core/test_db_conversion.py +129 -0
  154. chia/_tests/core/test_db_validation.py +161 -0
  155. chia/_tests/core/test_farmer_harvester_rpc.py +504 -0
  156. chia/_tests/core/test_filter.py +37 -0
  157. chia/_tests/core/test_full_node_rpc.py +794 -0
  158. chia/_tests/core/test_merkle_set.py +343 -0
  159. chia/_tests/core/test_program.py +49 -0
  160. chia/_tests/core/test_rpc_util.py +87 -0
  161. chia/_tests/core/test_seeder.py +308 -0
  162. chia/_tests/core/test_setproctitle.py +13 -0
  163. chia/_tests/core/util/__init__.py +0 -0
  164. chia/_tests/core/util/config.py +4 -0
  165. chia/_tests/core/util/test_block_cache.py +44 -0
  166. chia/_tests/core/util/test_cached_bls.py +57 -0
  167. chia/_tests/core/util/test_config.py +337 -0
  168. chia/_tests/core/util/test_file_keyring_synchronization.py +105 -0
  169. chia/_tests/core/util/test_files.py +391 -0
  170. chia/_tests/core/util/test_jsonify.py +146 -0
  171. chia/_tests/core/util/test_keychain.py +514 -0
  172. chia/_tests/core/util/test_keyring_wrapper.py +490 -0
  173. chia/_tests/core/util/test_lockfile.py +380 -0
  174. chia/_tests/core/util/test_log_exceptions.py +187 -0
  175. chia/_tests/core/util/test_lru_cache.py +56 -0
  176. chia/_tests/core/util/test_significant_bits.py +40 -0
  177. chia/_tests/core/util/test_streamable.py +883 -0
  178. chia/_tests/db/__init__.py +0 -0
  179. chia/_tests/db/test_db_wrapper.py +565 -0
  180. chia/_tests/environments/__init__.py +0 -0
  181. chia/_tests/environments/common.py +35 -0
  182. chia/_tests/environments/full_node.py +47 -0
  183. chia/_tests/environments/wallet.py +368 -0
  184. chia/_tests/ether.py +19 -0
  185. chia/_tests/farmer_harvester/__init__.py +0 -0
  186. chia/_tests/farmer_harvester/config.py +3 -0
  187. chia/_tests/farmer_harvester/test_farmer.py +1264 -0
  188. chia/_tests/farmer_harvester/test_farmer_harvester.py +292 -0
  189. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +130 -0
  190. chia/_tests/farmer_harvester/test_third_party_harvesters.py +501 -0
  191. chia/_tests/farmer_harvester/test_third_party_harvesters_data.json +29 -0
  192. chia/_tests/fee_estimation/__init__.py +0 -0
  193. chia/_tests/fee_estimation/config.py +3 -0
  194. chia/_tests/fee_estimation/test_fee_estimation_integration.py +262 -0
  195. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +287 -0
  196. chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +145 -0
  197. chia/_tests/fee_estimation/test_mempoolitem_height_added.py +146 -0
  198. chia/_tests/generator/__init__.py +0 -0
  199. chia/_tests/generator/puzzles/__init__.py +0 -0
  200. chia/_tests/generator/puzzles/test_generator_deserialize.clsp +3 -0
  201. chia/_tests/generator/puzzles/test_generator_deserialize.clsp.hex +1 -0
  202. chia/_tests/generator/puzzles/test_multiple_generator_input_arguments.clsp +19 -0
  203. chia/_tests/generator/puzzles/test_multiple_generator_input_arguments.clsp.hex +1 -0
  204. chia/_tests/generator/test_compression.py +218 -0
  205. chia/_tests/generator/test_generator_types.py +44 -0
  206. chia/_tests/generator/test_rom.py +182 -0
  207. chia/_tests/plot_sync/__init__.py +0 -0
  208. chia/_tests/plot_sync/config.py +3 -0
  209. chia/_tests/plot_sync/test_delta.py +102 -0
  210. chia/_tests/plot_sync/test_plot_sync.py +617 -0
  211. chia/_tests/plot_sync/test_receiver.py +451 -0
  212. chia/_tests/plot_sync/test_sender.py +116 -0
  213. chia/_tests/plot_sync/test_sync_simulated.py +450 -0
  214. chia/_tests/plot_sync/util.py +67 -0
  215. chia/_tests/plotting/__init__.py +0 -0
  216. chia/_tests/plotting/config.py +3 -0
  217. chia/_tests/plotting/test_plot_manager.py +738 -0
  218. chia/_tests/plotting/util.py +13 -0
  219. chia/_tests/pools/__init__.py +0 -0
  220. chia/_tests/pools/config.py +5 -0
  221. chia/_tests/pools/test_pool_cmdline.py +23 -0
  222. chia/_tests/pools/test_pool_config.py +44 -0
  223. chia/_tests/pools/test_pool_puzzles_lifecycle.py +398 -0
  224. chia/_tests/pools/test_pool_rpc.py +1010 -0
  225. chia/_tests/pools/test_pool_wallet.py +201 -0
  226. chia/_tests/pools/test_wallet_pool_store.py +161 -0
  227. chia/_tests/process_junit.py +349 -0
  228. chia/_tests/rpc/__init__.py +0 -0
  229. chia/_tests/rpc/test_rpc_client.py +81 -0
  230. chia/_tests/simulation/__init__.py +0 -0
  231. chia/_tests/simulation/config.py +6 -0
  232. chia/_tests/simulation/test_simulation.py +501 -0
  233. chia/_tests/simulation/test_simulator.py +234 -0
  234. chia/_tests/simulation/test_start_simulator.py +106 -0
  235. chia/_tests/testconfig.py +13 -0
  236. chia/_tests/timelord/__init__.py +0 -0
  237. chia/_tests/timelord/config.py +3 -0
  238. chia/_tests/timelord/test_new_peak.py +437 -0
  239. chia/_tests/timelord/test_timelord.py +11 -0
  240. chia/_tests/tools/1315537.json +170 -0
  241. chia/_tests/tools/1315544.json +160 -0
  242. chia/_tests/tools/1315630.json +150 -0
  243. chia/_tests/tools/300000.json +105 -0
  244. chia/_tests/tools/442734.json +140 -0
  245. chia/_tests/tools/466212.json +130 -0
  246. chia/_tests/tools/__init__.py +0 -0
  247. chia/_tests/tools/config.py +5 -0
  248. chia/_tests/tools/test-blockchain-db.sqlite +0 -0
  249. chia/_tests/tools/test_full_sync.py +30 -0
  250. chia/_tests/tools/test_legacy_keyring.py +82 -0
  251. chia/_tests/tools/test_run_block.py +129 -0
  252. chia/_tests/util/__init__.py +0 -0
  253. chia/_tests/util/benchmark_cost.py +170 -0
  254. chia/_tests/util/benchmarks.py +154 -0
  255. chia/_tests/util/bip39_test_vectors.json +148 -0
  256. chia/_tests/util/blockchain.py +133 -0
  257. chia/_tests/util/blockchain_mock.py +132 -0
  258. chia/_tests/util/build_network_protocol_files.py +302 -0
  259. chia/_tests/util/clvm_generator.bin +0 -0
  260. chia/_tests/util/config.py +3 -0
  261. chia/_tests/util/constants.py +20 -0
  262. chia/_tests/util/db_connection.py +36 -0
  263. chia/_tests/util/full_sync.py +245 -0
  264. chia/_tests/util/gen_ssl_certs.py +115 -0
  265. chia/_tests/util/generator_tools_testing.py +47 -0
  266. chia/_tests/util/key_tool.py +37 -0
  267. chia/_tests/util/misc.py +722 -0
  268. chia/_tests/util/network_protocol_data.py +1074 -0
  269. chia/_tests/util/protocol_messages_bytes-v1.0 +0 -0
  270. chia/_tests/util/protocol_messages_json.py +2700 -0
  271. chia/_tests/util/rpc.py +23 -0
  272. chia/_tests/util/run_block.py +163 -0
  273. chia/_tests/util/setup_nodes.py +479 -0
  274. chia/_tests/util/split_managers.py +99 -0
  275. chia/_tests/util/temp_file.py +14 -0
  276. chia/_tests/util/test_action_scope.py +143 -0
  277. chia/_tests/util/test_async_pool.py +366 -0
  278. chia/_tests/util/test_build_job_matrix.py +43 -0
  279. chia/_tests/util/test_build_network_protocol_files.py +7 -0
  280. chia/_tests/util/test_chia_version.py +50 -0
  281. chia/_tests/util/test_collection.py +11 -0
  282. chia/_tests/util/test_condition_tools.py +231 -0
  283. chia/_tests/util/test_config.py +426 -0
  284. chia/_tests/util/test_dump_keyring.py +60 -0
  285. chia/_tests/util/test_errors.py +10 -0
  286. chia/_tests/util/test_full_block_utils.py +271 -0
  287. chia/_tests/util/test_installed.py +20 -0
  288. chia/_tests/util/test_limited_semaphore.py +52 -0
  289. chia/_tests/util/test_logging_filter.py +43 -0
  290. chia/_tests/util/test_misc.py +444 -0
  291. chia/_tests/util/test_network.py +74 -0
  292. chia/_tests/util/test_network_protocol_files.py +579 -0
  293. chia/_tests/util/test_network_protocol_json.py +266 -0
  294. chia/_tests/util/test_network_protocol_test.py +257 -0
  295. chia/_tests/util/test_paginator.py +72 -0
  296. chia/_tests/util/test_pprint.py +17 -0
  297. chia/_tests/util/test_priority_mutex.py +487 -0
  298. chia/_tests/util/test_recursive_replace.py +116 -0
  299. chia/_tests/util/test_replace_str_to_bytes.py +137 -0
  300. chia/_tests/util/test_service_groups.py +15 -0
  301. chia/_tests/util/test_ssl_check.py +31 -0
  302. chia/_tests/util/test_testnet_overrides.py +19 -0
  303. chia/_tests/util/test_tests_misc.py +38 -0
  304. chia/_tests/util/test_timing.py +37 -0
  305. chia/_tests/util/test_trusted_peer.py +51 -0
  306. chia/_tests/util/time_out_assert.py +154 -0
  307. chia/_tests/wallet/__init__.py +0 -0
  308. chia/_tests/wallet/cat_wallet/__init__.py +0 -0
  309. chia/_tests/wallet/cat_wallet/config.py +4 -0
  310. chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +468 -0
  311. chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +69 -0
  312. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +1738 -0
  313. chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +291 -0
  314. chia/_tests/wallet/cat_wallet/test_trades.py +2578 -0
  315. chia/_tests/wallet/clawback/__init__.py +0 -0
  316. chia/_tests/wallet/clawback/config.py +3 -0
  317. chia/_tests/wallet/clawback/test_clawback_decorator.py +80 -0
  318. chia/_tests/wallet/clawback/test_clawback_lifecycle.py +292 -0
  319. chia/_tests/wallet/clawback/test_clawback_metadata.py +51 -0
  320. chia/_tests/wallet/config.py +4 -0
  321. chia/_tests/wallet/conftest.py +217 -0
  322. chia/_tests/wallet/dao_wallet/__init__.py +0 -0
  323. chia/_tests/wallet/dao_wallet/config.py +3 -0
  324. chia/_tests/wallet/dao_wallet/test_dao_clvm.py +1322 -0
  325. chia/_tests/wallet/dao_wallet/test_dao_wallets.py +3488 -0
  326. chia/_tests/wallet/db_wallet/__init__.py +0 -0
  327. chia/_tests/wallet/db_wallet/config.py +3 -0
  328. chia/_tests/wallet/db_wallet/test_db_graftroot.py +143 -0
  329. chia/_tests/wallet/db_wallet/test_dl_offers.py +491 -0
  330. chia/_tests/wallet/db_wallet/test_dl_wallet.py +823 -0
  331. chia/_tests/wallet/did_wallet/__init__.py +0 -0
  332. chia/_tests/wallet/did_wallet/config.py +4 -0
  333. chia/_tests/wallet/did_wallet/test_did.py +1481 -0
  334. chia/_tests/wallet/nft_wallet/__init__.py +0 -0
  335. chia/_tests/wallet/nft_wallet/config.py +4 -0
  336. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +1492 -0
  337. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +1014 -0
  338. chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +376 -0
  339. chia/_tests/wallet/nft_wallet/test_nft_offers.py +1209 -0
  340. chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +172 -0
  341. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +2558 -0
  342. chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +70 -0
  343. chia/_tests/wallet/rpc/__init__.py +0 -0
  344. chia/_tests/wallet/rpc/config.py +4 -0
  345. chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +287 -0
  346. chia/_tests/wallet/rpc/test_wallet_rpc.py +3106 -0
  347. chia/_tests/wallet/simple_sync/__init__.py +0 -0
  348. chia/_tests/wallet/simple_sync/config.py +3 -0
  349. chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +719 -0
  350. chia/_tests/wallet/sync/__init__.py +0 -0
  351. chia/_tests/wallet/sync/config.py +4 -0
  352. chia/_tests/wallet/sync/test_wallet_sync.py +1529 -0
  353. chia/_tests/wallet/test_address_type.py +189 -0
  354. chia/_tests/wallet/test_bech32m.py +45 -0
  355. chia/_tests/wallet/test_clvm_streamable.py +244 -0
  356. chia/_tests/wallet/test_coin_selection.py +589 -0
  357. chia/_tests/wallet/test_conditions.py +388 -0
  358. chia/_tests/wallet/test_debug_spend_bundle.py +76 -0
  359. chia/_tests/wallet/test_new_wallet_protocol.py +1176 -0
  360. chia/_tests/wallet/test_nft_store.py +193 -0
  361. chia/_tests/wallet/test_notifications.py +196 -0
  362. chia/_tests/wallet/test_offer_parsing_performance.py +48 -0
  363. chia/_tests/wallet/test_puzzle_store.py +133 -0
  364. chia/_tests/wallet/test_sign_coin_spends.py +159 -0
  365. chia/_tests/wallet/test_signer_protocol.py +948 -0
  366. chia/_tests/wallet/test_singleton.py +122 -0
  367. chia/_tests/wallet/test_singleton_lifecycle_fast.py +772 -0
  368. chia/_tests/wallet/test_singleton_store.py +152 -0
  369. chia/_tests/wallet/test_taproot.py +19 -0
  370. chia/_tests/wallet/test_transaction_store.py +941 -0
  371. chia/_tests/wallet/test_util.py +181 -0
  372. chia/_tests/wallet/test_wallet.py +2139 -0
  373. chia/_tests/wallet/test_wallet_action_scope.py +85 -0
  374. chia/_tests/wallet/test_wallet_blockchain.py +113 -0
  375. chia/_tests/wallet/test_wallet_coin_store.py +1002 -0
  376. chia/_tests/wallet/test_wallet_interested_store.py +43 -0
  377. chia/_tests/wallet/test_wallet_key_val_store.py +40 -0
  378. chia/_tests/wallet/test_wallet_node.py +783 -0
  379. chia/_tests/wallet/test_wallet_retry.py +95 -0
  380. chia/_tests/wallet/test_wallet_state_manager.py +252 -0
  381. chia/_tests/wallet/test_wallet_test_framework.py +275 -0
  382. chia/_tests/wallet/test_wallet_trade_store.py +218 -0
  383. chia/_tests/wallet/test_wallet_user_store.py +34 -0
  384. chia/_tests/wallet/test_wallet_utils.py +155 -0
  385. chia/_tests/wallet/vc_wallet/__init__.py +0 -0
  386. chia/_tests/wallet/vc_wallet/config.py +3 -0
  387. chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +70 -0
  388. chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +883 -0
  389. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +801 -0
  390. chia/_tests/wallet/wallet_block_tools.py +327 -0
  391. chia/_tests/weight_proof/__init__.py +0 -0
  392. chia/_tests/weight_proof/config.py +3 -0
  393. chia/_tests/weight_proof/test_weight_proof.py +528 -0
  394. chia/clvm/__init__.py +0 -0
  395. chia/clvm/spend_sim.py +488 -0
  396. chia/cmds/__init__.py +0 -0
  397. chia/cmds/beta.py +183 -0
  398. chia/cmds/beta_funcs.py +133 -0
  399. chia/cmds/check_wallet_db.py +418 -0
  400. chia/cmds/chia.py +143 -0
  401. chia/cmds/cmd_classes.py +315 -0
  402. chia/cmds/cmds_util.py +498 -0
  403. chia/cmds/coin_funcs.py +260 -0
  404. chia/cmds/coins.py +220 -0
  405. chia/cmds/completion.py +49 -0
  406. chia/cmds/configure.py +331 -0
  407. chia/cmds/dao.py +1008 -0
  408. chia/cmds/dao_funcs.py +576 -0
  409. chia/cmds/data.py +707 -0
  410. chia/cmds/data_funcs.py +380 -0
  411. chia/cmds/db.py +86 -0
  412. chia/cmds/db_backup_func.py +77 -0
  413. chia/cmds/db_upgrade_func.py +452 -0
  414. chia/cmds/db_validate_func.py +184 -0
  415. chia/cmds/dev.py +16 -0
  416. chia/cmds/farm.py +87 -0
  417. chia/cmds/farm_funcs.py +207 -0
  418. chia/cmds/init.py +70 -0
  419. chia/cmds/init_funcs.py +367 -0
  420. chia/cmds/installers.py +129 -0
  421. chia/cmds/keys.py +510 -0
  422. chia/cmds/keys_funcs.py +864 -0
  423. chia/cmds/netspace.py +47 -0
  424. chia/cmds/netspace_funcs.py +53 -0
  425. chia/cmds/options.py +32 -0
  426. chia/cmds/param_types.py +228 -0
  427. chia/cmds/passphrase.py +130 -0
  428. chia/cmds/passphrase_funcs.py +346 -0
  429. chia/cmds/peer.py +50 -0
  430. chia/cmds/peer_funcs.py +129 -0
  431. chia/cmds/plotnft.py +206 -0
  432. chia/cmds/plotnft_funcs.py +374 -0
  433. chia/cmds/plots.py +222 -0
  434. chia/cmds/plotters.py +17 -0
  435. chia/cmds/rpc.py +188 -0
  436. chia/cmds/show.py +71 -0
  437. chia/cmds/show_funcs.py +214 -0
  438. chia/cmds/signer.py +304 -0
  439. chia/cmds/sim.py +217 -0
  440. chia/cmds/sim_funcs.py +509 -0
  441. chia/cmds/start.py +24 -0
  442. chia/cmds/start_funcs.py +112 -0
  443. chia/cmds/stop.py +61 -0
  444. chia/cmds/units.py +11 -0
  445. chia/cmds/wallet.py +1745 -0
  446. chia/cmds/wallet_funcs.py +1800 -0
  447. chia/consensus/__init__.py +0 -0
  448. chia/consensus/block_body_validation.py +515 -0
  449. chia/consensus/block_creation.py +525 -0
  450. chia/consensus/block_header_validation.py +1064 -0
  451. chia/consensus/block_record.py +32 -0
  452. chia/consensus/block_rewards.py +53 -0
  453. chia/consensus/block_root_validation.py +46 -0
  454. chia/consensus/blockchain.py +1100 -0
  455. chia/consensus/blockchain_interface.py +56 -0
  456. chia/consensus/coinbase.py +30 -0
  457. chia/consensus/condition_costs.py +9 -0
  458. chia/consensus/constants.py +49 -0
  459. chia/consensus/cost_calculator.py +15 -0
  460. chia/consensus/default_constants.py +90 -0
  461. chia/consensus/deficit.py +55 -0
  462. chia/consensus/difficulty_adjustment.py +412 -0
  463. chia/consensus/find_fork_point.py +111 -0
  464. chia/consensus/full_block_to_block_record.py +167 -0
  465. chia/consensus/get_block_challenge.py +106 -0
  466. chia/consensus/get_block_generator.py +26 -0
  467. chia/consensus/make_sub_epoch_summary.py +210 -0
  468. chia/consensus/multiprocess_validation.py +365 -0
  469. chia/consensus/pos_quality.py +19 -0
  470. chia/consensus/pot_iterations.py +67 -0
  471. chia/consensus/puzzles/__init__.py +0 -0
  472. chia/consensus/puzzles/chialisp_deserialisation.clsp +69 -0
  473. chia/consensus/puzzles/chialisp_deserialisation.clsp.hex +1 -0
  474. chia/consensus/puzzles/rom_bootstrap_generator.clsp +37 -0
  475. chia/consensus/puzzles/rom_bootstrap_generator.clsp.hex +1 -0
  476. chia/consensus/vdf_info_computation.py +156 -0
  477. chia/daemon/__init__.py +0 -0
  478. chia/daemon/client.py +233 -0
  479. chia/daemon/keychain_proxy.py +501 -0
  480. chia/daemon/keychain_server.py +365 -0
  481. chia/daemon/server.py +1616 -0
  482. chia/daemon/windows_signal.py +56 -0
  483. chia/data_layer/__init__.py +0 -0
  484. chia/data_layer/data_layer.py +1303 -0
  485. chia/data_layer/data_layer_api.py +25 -0
  486. chia/data_layer/data_layer_errors.py +50 -0
  487. chia/data_layer/data_layer_server.py +170 -0
  488. chia/data_layer/data_layer_util.py +985 -0
  489. chia/data_layer/data_layer_wallet.py +1315 -0
  490. chia/data_layer/data_store.py +2267 -0
  491. chia/data_layer/dl_wallet_store.py +407 -0
  492. chia/data_layer/download_data.py +389 -0
  493. chia/data_layer/puzzles/__init__.py +0 -0
  494. chia/data_layer/puzzles/graftroot_dl_offers.clsp +100 -0
  495. chia/data_layer/puzzles/graftroot_dl_offers.clsp.hex +1 -0
  496. chia/data_layer/s3_plugin_config.yml +33 -0
  497. chia/data_layer/s3_plugin_service.py +468 -0
  498. chia/data_layer/util/__init__.py +0 -0
  499. chia/data_layer/util/benchmark.py +108 -0
  500. chia/data_layer/util/plugin.py +41 -0
  501. chia/farmer/__init__.py +0 -0
  502. chia/farmer/farmer.py +920 -0
  503. chia/farmer/farmer_api.py +814 -0
  504. chia/full_node/__init__.py +0 -0
  505. chia/full_node/bitcoin_fee_estimator.py +85 -0
  506. chia/full_node/block_height_map.py +271 -0
  507. chia/full_node/block_store.py +570 -0
  508. chia/full_node/bundle_tools.py +19 -0
  509. chia/full_node/coin_store.py +646 -0
  510. chia/full_node/fee_estimate.py +54 -0
  511. chia/full_node/fee_estimate_store.py +24 -0
  512. chia/full_node/fee_estimation.py +93 -0
  513. chia/full_node/fee_estimator.py +90 -0
  514. chia/full_node/fee_estimator_constants.py +38 -0
  515. chia/full_node/fee_estimator_interface.py +42 -0
  516. chia/full_node/fee_history.py +26 -0
  517. chia/full_node/fee_tracker.py +564 -0
  518. chia/full_node/full_node.py +3052 -0
  519. chia/full_node/full_node_api.py +1974 -0
  520. chia/full_node/full_node_store.py +1033 -0
  521. chia/full_node/hint_management.py +56 -0
  522. chia/full_node/hint_store.py +94 -0
  523. chia/full_node/mempool.py +583 -0
  524. chia/full_node/mempool_check_conditions.py +177 -0
  525. chia/full_node/mempool_manager.py +858 -0
  526. chia/full_node/pending_tx_cache.py +112 -0
  527. chia/full_node/puzzles/__init__.py +0 -0
  528. chia/full_node/puzzles/block_program_zero.clsp +14 -0
  529. chia/full_node/puzzles/block_program_zero.clsp.hex +1 -0
  530. chia/full_node/puzzles/decompress_coin_spend_entry.clsp +5 -0
  531. chia/full_node/puzzles/decompress_coin_spend_entry.clsp.hex +1 -0
  532. chia/full_node/puzzles/decompress_coin_spend_entry_with_prefix.clsp +7 -0
  533. chia/full_node/puzzles/decompress_coin_spend_entry_with_prefix.clsp.hex +1 -0
  534. chia/full_node/puzzles/decompress_puzzle.clsp +6 -0
  535. chia/full_node/puzzles/decompress_puzzle.clsp.hex +1 -0
  536. chia/full_node/signage_point.py +16 -0
  537. chia/full_node/subscriptions.py +248 -0
  538. chia/full_node/sync_store.py +145 -0
  539. chia/full_node/tx_processing_queue.py +78 -0
  540. chia/full_node/weight_proof.py +1719 -0
  541. chia/harvester/__init__.py +0 -0
  542. chia/harvester/harvester.py +271 -0
  543. chia/harvester/harvester_api.py +374 -0
  544. chia/introducer/__init__.py +0 -0
  545. chia/introducer/introducer.py +120 -0
  546. chia/introducer/introducer_api.py +64 -0
  547. chia/legacy/__init__.py +0 -0
  548. chia/legacy/keyring.py +154 -0
  549. chia/plot_sync/__init__.py +0 -0
  550. chia/plot_sync/delta.py +61 -0
  551. chia/plot_sync/exceptions.py +56 -0
  552. chia/plot_sync/receiver.py +385 -0
  553. chia/plot_sync/sender.py +337 -0
  554. chia/plot_sync/util.py +43 -0
  555. chia/plotters/__init__.py +0 -0
  556. chia/plotters/bladebit.py +388 -0
  557. chia/plotters/chiapos.py +63 -0
  558. chia/plotters/madmax.py +224 -0
  559. chia/plotters/plotters.py +577 -0
  560. chia/plotters/plotters_util.py +131 -0
  561. chia/plotting/__init__.py +0 -0
  562. chia/plotting/cache.py +212 -0
  563. chia/plotting/check_plots.py +283 -0
  564. chia/plotting/create_plots.py +278 -0
  565. chia/plotting/manager.py +436 -0
  566. chia/plotting/util.py +324 -0
  567. chia/pools/__init__.py +0 -0
  568. chia/pools/pool_config.py +110 -0
  569. chia/pools/pool_puzzles.py +459 -0
  570. chia/pools/pool_wallet.py +926 -0
  571. chia/pools/pool_wallet_info.py +118 -0
  572. chia/pools/puzzles/__init__.py +0 -0
  573. chia/pools/puzzles/pool_member_innerpuz.clsp +70 -0
  574. chia/pools/puzzles/pool_member_innerpuz.clsp.hex +1 -0
  575. chia/pools/puzzles/pool_waitingroom_innerpuz.clsp +69 -0
  576. chia/pools/puzzles/pool_waitingroom_innerpuz.clsp.hex +1 -0
  577. chia/protocols/__init__.py +0 -0
  578. chia/protocols/farmer_protocol.py +102 -0
  579. chia/protocols/full_node_protocol.py +219 -0
  580. chia/protocols/harvester_protocol.py +216 -0
  581. chia/protocols/introducer_protocol.py +26 -0
  582. chia/protocols/pool_protocol.py +177 -0
  583. chia/protocols/protocol_message_types.py +139 -0
  584. chia/protocols/protocol_state_machine.py +87 -0
  585. chia/protocols/protocol_timing.py +7 -0
  586. chia/protocols/shared_protocol.py +86 -0
  587. chia/protocols/timelord_protocol.py +93 -0
  588. chia/protocols/wallet_protocol.py +401 -0
  589. chia/py.typed +0 -0
  590. chia/rpc/__init__.py +0 -0
  591. chia/rpc/crawler_rpc_api.py +75 -0
  592. chia/rpc/data_layer_rpc_api.py +639 -0
  593. chia/rpc/data_layer_rpc_client.py +188 -0
  594. chia/rpc/data_layer_rpc_util.py +62 -0
  595. chia/rpc/farmer_rpc_api.py +360 -0
  596. chia/rpc/farmer_rpc_client.py +86 -0
  597. chia/rpc/full_node_rpc_api.py +954 -0
  598. chia/rpc/full_node_rpc_client.py +292 -0
  599. chia/rpc/harvester_rpc_api.py +136 -0
  600. chia/rpc/harvester_rpc_client.py +54 -0
  601. chia/rpc/rpc_client.py +144 -0
  602. chia/rpc/rpc_server.py +447 -0
  603. chia/rpc/timelord_rpc_api.py +27 -0
  604. chia/rpc/util.py +293 -0
  605. chia/rpc/wallet_request_types.py +688 -0
  606. chia/rpc/wallet_rpc_api.py +4779 -0
  607. chia/rpc/wallet_rpc_client.py +1844 -0
  608. chia/seeder/__init__.py +0 -0
  609. chia/seeder/crawl_store.py +427 -0
  610. chia/seeder/crawler.py +423 -0
  611. chia/seeder/crawler_api.py +129 -0
  612. chia/seeder/dns_server.py +544 -0
  613. chia/seeder/peer_record.py +146 -0
  614. chia/seeder/start_crawler.py +88 -0
  615. chia/server/__init__.py +0 -0
  616. chia/server/address_manager.py +658 -0
  617. chia/server/address_manager_store.py +237 -0
  618. chia/server/api_protocol.py +11 -0
  619. chia/server/capabilities.py +24 -0
  620. chia/server/chia_policy.py +345 -0
  621. chia/server/introducer_peers.py +76 -0
  622. chia/server/node_discovery.py +718 -0
  623. chia/server/outbound_message.py +33 -0
  624. chia/server/rate_limit_numbers.py +204 -0
  625. chia/server/rate_limits.py +113 -0
  626. chia/server/server.py +720 -0
  627. chia/server/signal_handlers.py +117 -0
  628. chia/server/ssl_context.py +32 -0
  629. chia/server/start_data_layer.py +137 -0
  630. chia/server/start_farmer.py +86 -0
  631. chia/server/start_full_node.py +106 -0
  632. chia/server/start_harvester.py +80 -0
  633. chia/server/start_introducer.py +69 -0
  634. chia/server/start_service.py +328 -0
  635. chia/server/start_timelord.py +82 -0
  636. chia/server/start_wallet.py +109 -0
  637. chia/server/upnp.py +117 -0
  638. chia/server/ws_connection.py +752 -0
  639. chia/simulator/__init__.py +0 -0
  640. chia/simulator/block_tools.py +2053 -0
  641. chia/simulator/full_node_simulator.py +802 -0
  642. chia/simulator/keyring.py +128 -0
  643. chia/simulator/setup_services.py +505 -0
  644. chia/simulator/simulator_constants.py +13 -0
  645. chia/simulator/simulator_full_node_rpc_api.py +101 -0
  646. chia/simulator/simulator_full_node_rpc_client.py +62 -0
  647. chia/simulator/simulator_protocol.py +29 -0
  648. chia/simulator/simulator_test_tools.py +163 -0
  649. chia/simulator/socket.py +27 -0
  650. chia/simulator/ssl_certs.py +114 -0
  651. chia/simulator/ssl_certs_1.py +699 -0
  652. chia/simulator/ssl_certs_10.py +699 -0
  653. chia/simulator/ssl_certs_2.py +699 -0
  654. chia/simulator/ssl_certs_3.py +699 -0
  655. chia/simulator/ssl_certs_4.py +699 -0
  656. chia/simulator/ssl_certs_5.py +699 -0
  657. chia/simulator/ssl_certs_6.py +699 -0
  658. chia/simulator/ssl_certs_7.py +699 -0
  659. chia/simulator/ssl_certs_8.py +699 -0
  660. chia/simulator/ssl_certs_9.py +699 -0
  661. chia/simulator/start_simulator.py +135 -0
  662. chia/simulator/wallet_tools.py +245 -0
  663. chia/ssl/__init__.py +0 -0
  664. chia/ssl/chia_ca.crt +19 -0
  665. chia/ssl/chia_ca.key +28 -0
  666. chia/ssl/create_ssl.py +249 -0
  667. chia/ssl/dst_root_ca.pem +20 -0
  668. chia/timelord/__init__.py +0 -0
  669. chia/timelord/iters_from_block.py +50 -0
  670. chia/timelord/timelord.py +1202 -0
  671. chia/timelord/timelord_api.py +132 -0
  672. chia/timelord/timelord_launcher.py +188 -0
  673. chia/timelord/timelord_state.py +244 -0
  674. chia/timelord/types.py +22 -0
  675. chia/types/__init__.py +0 -0
  676. chia/types/aliases.py +35 -0
  677. chia/types/block_protocol.py +20 -0
  678. chia/types/blockchain_format/__init__.py +0 -0
  679. chia/types/blockchain_format/classgroup.py +5 -0
  680. chia/types/blockchain_format/coin.py +28 -0
  681. chia/types/blockchain_format/foliage.py +8 -0
  682. chia/types/blockchain_format/pool_target.py +5 -0
  683. chia/types/blockchain_format/program.py +270 -0
  684. chia/types/blockchain_format/proof_of_space.py +135 -0
  685. chia/types/blockchain_format/reward_chain_block.py +6 -0
  686. chia/types/blockchain_format/serialized_program.py +5 -0
  687. chia/types/blockchain_format/sized_bytes.py +11 -0
  688. chia/types/blockchain_format/slots.py +9 -0
  689. chia/types/blockchain_format/sub_epoch_summary.py +5 -0
  690. chia/types/blockchain_format/tree_hash.py +72 -0
  691. chia/types/blockchain_format/vdf.py +86 -0
  692. chia/types/clvm_cost.py +13 -0
  693. chia/types/coin_record.py +43 -0
  694. chia/types/coin_spend.py +115 -0
  695. chia/types/condition_opcodes.py +73 -0
  696. chia/types/condition_with_args.py +17 -0
  697. chia/types/eligible_coin_spends.py +364 -0
  698. chia/types/end_of_slot_bundle.py +5 -0
  699. chia/types/fee_rate.py +38 -0
  700. chia/types/full_block.py +5 -0
  701. chia/types/generator_types.py +14 -0
  702. chia/types/header_block.py +5 -0
  703. chia/types/internal_mempool_item.py +19 -0
  704. chia/types/mempool_inclusion_status.py +9 -0
  705. chia/types/mempool_item.py +85 -0
  706. chia/types/mempool_submission_status.py +30 -0
  707. chia/types/mojos.py +7 -0
  708. chia/types/peer_info.py +64 -0
  709. chia/types/signing_mode.py +29 -0
  710. chia/types/spend_bundle.py +31 -0
  711. chia/types/spend_bundle_conditions.py +7 -0
  712. chia/types/transaction_queue_entry.py +55 -0
  713. chia/types/unfinished_block.py +5 -0
  714. chia/types/unfinished_header_block.py +37 -0
  715. chia/types/weight_proof.py +50 -0
  716. chia/util/__init__.py +0 -0
  717. chia/util/action_scope.py +168 -0
  718. chia/util/api_decorators.py +89 -0
  719. chia/util/async_pool.py +224 -0
  720. chia/util/augmented_chain.py +130 -0
  721. chia/util/batches.py +39 -0
  722. chia/util/bech32m.py +123 -0
  723. chia/util/beta_metrics.py +118 -0
  724. chia/util/block_cache.py +56 -0
  725. chia/util/byte_types.py +10 -0
  726. chia/util/check_fork_next_block.py +32 -0
  727. chia/util/chia_logging.py +124 -0
  728. chia/util/chia_version.py +33 -0
  729. chia/util/collection.py +17 -0
  730. chia/util/condition_tools.py +201 -0
  731. chia/util/config.py +366 -0
  732. chia/util/cpu.py +20 -0
  733. chia/util/db_synchronous.py +21 -0
  734. chia/util/db_version.py +30 -0
  735. chia/util/db_wrapper.py +427 -0
  736. chia/util/default_root.py +10 -0
  737. chia/util/dump_keyring.py +93 -0
  738. chia/util/english.txt +2048 -0
  739. chia/util/errors.py +351 -0
  740. chia/util/file_keyring.py +480 -0
  741. chia/util/files.py +95 -0
  742. chia/util/full_block_utils.py +321 -0
  743. chia/util/generator_tools.py +62 -0
  744. chia/util/hash.py +29 -0
  745. chia/util/initial-config.yaml +675 -0
  746. chia/util/inline_executor.py +24 -0
  747. chia/util/ints.py +19 -0
  748. chia/util/json_util.py +41 -0
  749. chia/util/keychain.py +673 -0
  750. chia/util/keyring_wrapper.py +266 -0
  751. chia/util/limited_semaphore.py +39 -0
  752. chia/util/lock.py +47 -0
  753. chia/util/log_exceptions.py +29 -0
  754. chia/util/logging.py +34 -0
  755. chia/util/lru_cache.py +29 -0
  756. chia/util/math.py +20 -0
  757. chia/util/network.py +240 -0
  758. chia/util/paginator.py +46 -0
  759. chia/util/path.py +29 -0
  760. chia/util/permissions.py +19 -0
  761. chia/util/pprint.py +40 -0
  762. chia/util/prev_transaction_block.py +23 -0
  763. chia/util/priority_mutex.py +92 -0
  764. chia/util/profiler.py +194 -0
  765. chia/util/recursive_replace.py +22 -0
  766. chia/util/safe_cancel_task.py +14 -0
  767. chia/util/service_groups.py +47 -0
  768. chia/util/setproctitle.py +20 -0
  769. chia/util/significant_bits.py +30 -0
  770. chia/util/ssl_check.py +213 -0
  771. chia/util/streamable.py +654 -0
  772. chia/util/task_timing.py +378 -0
  773. chia/util/timing.py +64 -0
  774. chia/util/vdf_prover.py +31 -0
  775. chia/util/ws_message.py +66 -0
  776. chia/wallet/__init__.py +0 -0
  777. chia/wallet/cat_wallet/__init__.py +0 -0
  778. chia/wallet/cat_wallet/cat_constants.py +75 -0
  779. chia/wallet/cat_wallet/cat_info.py +47 -0
  780. chia/wallet/cat_wallet/cat_outer_puzzle.py +120 -0
  781. chia/wallet/cat_wallet/cat_utils.py +163 -0
  782. chia/wallet/cat_wallet/cat_wallet.py +869 -0
  783. chia/wallet/cat_wallet/dao_cat_info.py +28 -0
  784. chia/wallet/cat_wallet/dao_cat_wallet.py +669 -0
  785. chia/wallet/cat_wallet/lineage_store.py +74 -0
  786. chia/wallet/cat_wallet/puzzles/__init__.py +0 -0
  787. chia/wallet/cat_wallet/puzzles/cat_truths.clib +31 -0
  788. chia/wallet/cat_wallet/puzzles/cat_v2.clsp +397 -0
  789. chia/wallet/cat_wallet/puzzles/cat_v2.clsp.hex +1 -0
  790. chia/wallet/cat_wallet/puzzles/delegated_tail.clsp +25 -0
  791. chia/wallet/cat_wallet/puzzles/delegated_tail.clsp.hex +1 -0
  792. chia/wallet/cat_wallet/puzzles/everything_with_signature.clsp +15 -0
  793. chia/wallet/cat_wallet/puzzles/everything_with_signature.clsp.hex +1 -0
  794. chia/wallet/cat_wallet/puzzles/genesis_by_coin_id.clsp +26 -0
  795. chia/wallet/cat_wallet/puzzles/genesis_by_coin_id.clsp.hex +1 -0
  796. chia/wallet/cat_wallet/puzzles/genesis_by_coin_id_or_singleton.clsp +42 -0
  797. chia/wallet/cat_wallet/puzzles/genesis_by_coin_id_or_singleton.clsp.hex +1 -0
  798. chia/wallet/cat_wallet/puzzles/genesis_by_puzzle_hash.clsp +24 -0
  799. chia/wallet/cat_wallet/puzzles/genesis_by_puzzle_hash.clsp.hex +1 -0
  800. chia/wallet/coin_selection.py +188 -0
  801. chia/wallet/conditions.py +1326 -0
  802. chia/wallet/dao_wallet/__init__.py +0 -0
  803. chia/wallet/dao_wallet/dao_info.py +61 -0
  804. chia/wallet/dao_wallet/dao_utils.py +810 -0
  805. chia/wallet/dao_wallet/dao_wallet.py +2121 -0
  806. chia/wallet/db_wallet/__init__.py +0 -0
  807. chia/wallet/db_wallet/db_wallet_puzzles.py +107 -0
  808. chia/wallet/derivation_record.py +30 -0
  809. chia/wallet/derive_keys.py +146 -0
  810. chia/wallet/did_wallet/__init__.py +0 -0
  811. chia/wallet/did_wallet/did_info.py +39 -0
  812. chia/wallet/did_wallet/did_wallet.py +1485 -0
  813. chia/wallet/did_wallet/did_wallet_puzzles.py +220 -0
  814. chia/wallet/did_wallet/puzzles/__init__.py +0 -0
  815. chia/wallet/did_wallet/puzzles/did_innerpuz.clsp +135 -0
  816. chia/wallet/did_wallet/puzzles/did_innerpuz.clsp.hex +1 -0
  817. chia/wallet/driver_protocol.py +26 -0
  818. chia/wallet/key_val_store.py +55 -0
  819. chia/wallet/lineage_proof.py +58 -0
  820. chia/wallet/nft_wallet/__init__.py +0 -0
  821. chia/wallet/nft_wallet/metadata_outer_puzzle.py +92 -0
  822. chia/wallet/nft_wallet/nft_info.py +120 -0
  823. chia/wallet/nft_wallet/nft_puzzles.py +305 -0
  824. chia/wallet/nft_wallet/nft_wallet.py +1686 -0
  825. chia/wallet/nft_wallet/ownership_outer_puzzle.py +101 -0
  826. chia/wallet/nft_wallet/puzzles/__init__.py +0 -0
  827. chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp +6 -0
  828. chia/wallet/nft_wallet/puzzles/create_nft_launcher_from_did.clsp.hex +1 -0
  829. chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp +6 -0
  830. chia/wallet/nft_wallet/puzzles/nft_intermediate_launcher.clsp.hex +1 -0
  831. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp +30 -0
  832. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_default.clsp.hex +1 -0
  833. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp +28 -0
  834. chia/wallet/nft_wallet/puzzles/nft_metadata_updater_updateable.clsp.hex +1 -0
  835. chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp +100 -0
  836. chia/wallet/nft_wallet/puzzles/nft_ownership_layer.clsp.hex +1 -0
  837. chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp +78 -0
  838. chia/wallet/nft_wallet/puzzles/nft_ownership_transfer_program_one_way_claim_with_royalties.clsp.hex +1 -0
  839. chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp +74 -0
  840. chia/wallet/nft_wallet/puzzles/nft_state_layer.clsp.hex +1 -0
  841. chia/wallet/nft_wallet/singleton_outer_puzzle.py +101 -0
  842. chia/wallet/nft_wallet/transfer_program_puzzle.py +82 -0
  843. chia/wallet/nft_wallet/uncurry_nft.py +217 -0
  844. chia/wallet/notification_manager.py +117 -0
  845. chia/wallet/notification_store.py +178 -0
  846. chia/wallet/outer_puzzles.py +84 -0
  847. chia/wallet/payment.py +34 -0
  848. chia/wallet/puzzle_drivers.py +118 -0
  849. chia/wallet/puzzles/__init__.py +0 -0
  850. chia/wallet/puzzles/augmented_condition.clsp +13 -0
  851. chia/wallet/puzzles/augmented_condition.clsp.hex +1 -0
  852. chia/wallet/puzzles/clawback/__init__.py +0 -0
  853. chia/wallet/puzzles/clawback/drivers.py +188 -0
  854. chia/wallet/puzzles/clawback/metadata.py +38 -0
  855. chia/wallet/puzzles/clawback/puzzle_decorator.py +67 -0
  856. chia/wallet/puzzles/condition_codes.clib +77 -0
  857. chia/wallet/puzzles/curry-and-treehash.clib +102 -0
  858. chia/wallet/puzzles/curry.clib +135 -0
  859. chia/wallet/puzzles/curry_by_index.clib +16 -0
  860. chia/wallet/puzzles/dao_cat_eve.clsp +17 -0
  861. chia/wallet/puzzles/dao_cat_eve.clsp.hex +1 -0
  862. chia/wallet/puzzles/dao_cat_launcher.clsp +36 -0
  863. chia/wallet/puzzles/dao_cat_launcher.clsp.hex +1 -0
  864. chia/wallet/puzzles/dao_finished_state.clsp +35 -0
  865. chia/wallet/puzzles/dao_finished_state.clsp.hex +1 -0
  866. chia/wallet/puzzles/dao_finished_state.clsp.hex.sha256tree +1 -0
  867. chia/wallet/puzzles/dao_lockup.clsp +288 -0
  868. chia/wallet/puzzles/dao_lockup.clsp.hex +1 -0
  869. chia/wallet/puzzles/dao_lockup.clsp.hex.sha256tree +1 -0
  870. chia/wallet/puzzles/dao_proposal.clsp +377 -0
  871. chia/wallet/puzzles/dao_proposal.clsp.hex +1 -0
  872. chia/wallet/puzzles/dao_proposal.clsp.hex.sha256tree +1 -0
  873. chia/wallet/puzzles/dao_proposal_timer.clsp +78 -0
  874. chia/wallet/puzzles/dao_proposal_timer.clsp.hex +1 -0
  875. chia/wallet/puzzles/dao_proposal_timer.clsp.hex.sha256tree +1 -0
  876. chia/wallet/puzzles/dao_proposal_validator.clsp +87 -0
  877. chia/wallet/puzzles/dao_proposal_validator.clsp.hex +1 -0
  878. chia/wallet/puzzles/dao_proposal_validator.clsp.hex.sha256tree +1 -0
  879. chia/wallet/puzzles/dao_spend_p2_singleton_v2.clsp +240 -0
  880. chia/wallet/puzzles/dao_spend_p2_singleton_v2.clsp.hex +1 -0
  881. chia/wallet/puzzles/dao_spend_p2_singleton_v2.clsp.hex.sha256tree +1 -0
  882. chia/wallet/puzzles/dao_treasury.clsp +115 -0
  883. chia/wallet/puzzles/dao_treasury.clsp.hex +1 -0
  884. chia/wallet/puzzles/dao_update_proposal.clsp +44 -0
  885. chia/wallet/puzzles/dao_update_proposal.clsp.hex +1 -0
  886. chia/wallet/puzzles/deployed_puzzle_hashes.json +67 -0
  887. chia/wallet/puzzles/json.clib +25 -0
  888. chia/wallet/puzzles/load_clvm.py +162 -0
  889. chia/wallet/puzzles/merkle_utils.clib +18 -0
  890. chia/wallet/puzzles/notification.clsp +7 -0
  891. chia/wallet/puzzles/notification.clsp.hex +1 -0
  892. chia/wallet/puzzles/p2_1_of_n.clsp +22 -0
  893. chia/wallet/puzzles/p2_1_of_n.clsp.hex +1 -0
  894. chia/wallet/puzzles/p2_conditions.clsp +3 -0
  895. chia/wallet/puzzles/p2_conditions.clsp.hex +1 -0
  896. chia/wallet/puzzles/p2_conditions.py +27 -0
  897. chia/wallet/puzzles/p2_delegated_conditions.clsp +18 -0
  898. chia/wallet/puzzles/p2_delegated_conditions.clsp.hex +1 -0
  899. chia/wallet/puzzles/p2_delegated_conditions.py +22 -0
  900. chia/wallet/puzzles/p2_delegated_puzzle.clsp +19 -0
  901. chia/wallet/puzzles/p2_delegated_puzzle.clsp.hex +1 -0
  902. chia/wallet/puzzles/p2_delegated_puzzle.py +35 -0
  903. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.clsp +91 -0
  904. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.clsp.hex +1 -0
  905. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +161 -0
  906. chia/wallet/puzzles/p2_m_of_n_delegate_direct.clsp +108 -0
  907. chia/wallet/puzzles/p2_m_of_n_delegate_direct.clsp.hex +1 -0
  908. chia/wallet/puzzles/p2_m_of_n_delegate_direct.py +22 -0
  909. chia/wallet/puzzles/p2_parent.clsp +19 -0
  910. chia/wallet/puzzles/p2_parent.clsp.hex +1 -0
  911. chia/wallet/puzzles/p2_puzzle_hash.clsp +18 -0
  912. chia/wallet/puzzles/p2_puzzle_hash.clsp.hex +1 -0
  913. chia/wallet/puzzles/p2_puzzle_hash.py +28 -0
  914. chia/wallet/puzzles/p2_singleton.clsp +30 -0
  915. chia/wallet/puzzles/p2_singleton.clsp.hex +1 -0
  916. chia/wallet/puzzles/p2_singleton_aggregator.clsp +81 -0
  917. chia/wallet/puzzles/p2_singleton_aggregator.clsp.hex +1 -0
  918. chia/wallet/puzzles/p2_singleton_or_delayed_puzhash.clsp +50 -0
  919. chia/wallet/puzzles/p2_singleton_or_delayed_puzhash.clsp.hex +1 -0
  920. chia/wallet/puzzles/p2_singleton_via_delegated_puzzle.clsp +47 -0
  921. chia/wallet/puzzles/p2_singleton_via_delegated_puzzle.clsp.hex +1 -0
  922. chia/wallet/puzzles/puzzle_utils.py +34 -0
  923. chia/wallet/puzzles/settlement_payments.clsp +49 -0
  924. chia/wallet/puzzles/settlement_payments.clsp.hex +1 -0
  925. chia/wallet/puzzles/sha256tree.clib +11 -0
  926. chia/wallet/puzzles/singleton_launcher.clsp +16 -0
  927. chia/wallet/puzzles/singleton_launcher.clsp.hex +1 -0
  928. chia/wallet/puzzles/singleton_top_layer.clsp +177 -0
  929. chia/wallet/puzzles/singleton_top_layer.clsp.hex +1 -0
  930. chia/wallet/puzzles/singleton_top_layer.py +295 -0
  931. chia/wallet/puzzles/singleton_top_layer_v1_1.clsp +107 -0
  932. chia/wallet/puzzles/singleton_top_layer_v1_1.clsp.hex +1 -0
  933. chia/wallet/puzzles/singleton_top_layer_v1_1.py +344 -0
  934. chia/wallet/puzzles/singleton_truths.clib +21 -0
  935. chia/wallet/puzzles/tails.py +344 -0
  936. chia/wallet/puzzles/utility_macros.clib +48 -0
  937. chia/wallet/signer_protocol.py +126 -0
  938. chia/wallet/singleton.py +106 -0
  939. chia/wallet/singleton_record.py +30 -0
  940. chia/wallet/trade_manager.py +1088 -0
  941. chia/wallet/trade_record.py +67 -0
  942. chia/wallet/trading/__init__.py +0 -0
  943. chia/wallet/trading/offer.py +703 -0
  944. chia/wallet/trading/trade_status.py +13 -0
  945. chia/wallet/trading/trade_store.py +526 -0
  946. chia/wallet/transaction_record.py +143 -0
  947. chia/wallet/transaction_sorting.py +14 -0
  948. chia/wallet/uncurried_puzzle.py +17 -0
  949. chia/wallet/util/__init__.py +0 -0
  950. chia/wallet/util/address_type.py +55 -0
  951. chia/wallet/util/blind_signer_tl.py +168 -0
  952. chia/wallet/util/clvm_streamable.py +203 -0
  953. chia/wallet/util/compute_hints.py +66 -0
  954. chia/wallet/util/compute_memos.py +45 -0
  955. chia/wallet/util/curry_and_treehash.py +90 -0
  956. chia/wallet/util/debug_spend_bundle.py +234 -0
  957. chia/wallet/util/merkle_tree.py +100 -0
  958. chia/wallet/util/merkle_utils.py +102 -0
  959. chia/wallet/util/new_peak_queue.py +82 -0
  960. chia/wallet/util/notifications.py +12 -0
  961. chia/wallet/util/peer_request_cache.py +174 -0
  962. chia/wallet/util/puzzle_compression.py +96 -0
  963. chia/wallet/util/puzzle_decorator.py +100 -0
  964. chia/wallet/util/puzzle_decorator_type.py +7 -0
  965. chia/wallet/util/query_filter.py +60 -0
  966. chia/wallet/util/transaction_type.py +23 -0
  967. chia/wallet/util/tx_config.py +158 -0
  968. chia/wallet/util/wallet_sync_utils.py +348 -0
  969. chia/wallet/util/wallet_types.py +65 -0
  970. chia/wallet/vc_wallet/__init__.py +0 -0
  971. chia/wallet/vc_wallet/cr_cat_drivers.py +663 -0
  972. chia/wallet/vc_wallet/cr_cat_wallet.py +875 -0
  973. chia/wallet/vc_wallet/cr_outer_puzzle.py +102 -0
  974. chia/wallet/vc_wallet/cr_puzzles/__init__.py +0 -0
  975. chia/wallet/vc_wallet/cr_puzzles/conditions_w_fee_announce.clsp +3 -0
  976. chia/wallet/vc_wallet/cr_puzzles/conditions_w_fee_announce.clsp.hex +1 -0
  977. chia/wallet/vc_wallet/cr_puzzles/credential_restriction.clsp +304 -0
  978. chia/wallet/vc_wallet/cr_puzzles/credential_restriction.clsp.hex +1 -0
  979. chia/wallet/vc_wallet/cr_puzzles/flag_proofs_checker.clsp +45 -0
  980. chia/wallet/vc_wallet/cr_puzzles/flag_proofs_checker.clsp.hex +1 -0
  981. chia/wallet/vc_wallet/vc_drivers.py +838 -0
  982. chia/wallet/vc_wallet/vc_puzzles/__init__.py +0 -0
  983. chia/wallet/vc_wallet/vc_puzzles/covenant_layer.clsp +30 -0
  984. chia/wallet/vc_wallet/vc_puzzles/covenant_layer.clsp.hex +1 -0
  985. chia/wallet/vc_wallet/vc_puzzles/eml_covenant_morpher.clsp +75 -0
  986. chia/wallet/vc_wallet/vc_puzzles/eml_covenant_morpher.clsp.hex +1 -0
  987. chia/wallet/vc_wallet/vc_puzzles/eml_transfer_program_covenant_adapter.clsp +32 -0
  988. chia/wallet/vc_wallet/vc_puzzles/eml_transfer_program_covenant_adapter.clsp.hex +1 -0
  989. chia/wallet/vc_wallet/vc_puzzles/eml_update_metadata_with_DID.clsp +80 -0
  990. chia/wallet/vc_wallet/vc_puzzles/eml_update_metadata_with_DID.clsp.hex +1 -0
  991. chia/wallet/vc_wallet/vc_puzzles/exigent_metadata_layer.clsp +163 -0
  992. chia/wallet/vc_wallet/vc_puzzles/exigent_metadata_layer.clsp.hex +1 -0
  993. chia/wallet/vc_wallet/vc_puzzles/p2_announced_delegated_puzzle.clsp +16 -0
  994. chia/wallet/vc_wallet/vc_puzzles/p2_announced_delegated_puzzle.clsp.hex +1 -0
  995. chia/wallet/vc_wallet/vc_puzzles/standard_vc_backdoor_puzzle.clsp +74 -0
  996. chia/wallet/vc_wallet/vc_puzzles/standard_vc_backdoor_puzzle.clsp.hex +1 -0
  997. chia/wallet/vc_wallet/vc_puzzles/std_parent_morpher.clsp +23 -0
  998. chia/wallet/vc_wallet/vc_puzzles/std_parent_morpher.clsp.hex +1 -0
  999. chia/wallet/vc_wallet/vc_puzzles/viral_backdoor.clsp +64 -0
  1000. chia/wallet/vc_wallet/vc_puzzles/viral_backdoor.clsp.hex +1 -0
  1001. chia/wallet/vc_wallet/vc_store.py +263 -0
  1002. chia/wallet/vc_wallet/vc_wallet.py +638 -0
  1003. chia/wallet/wallet.py +698 -0
  1004. chia/wallet/wallet_action_scope.py +95 -0
  1005. chia/wallet/wallet_blockchain.py +244 -0
  1006. chia/wallet/wallet_coin_record.py +72 -0
  1007. chia/wallet/wallet_coin_store.py +351 -0
  1008. chia/wallet/wallet_info.py +36 -0
  1009. chia/wallet/wallet_interested_store.py +188 -0
  1010. chia/wallet/wallet_nft_store.py +279 -0
  1011. chia/wallet/wallet_node.py +1769 -0
  1012. chia/wallet/wallet_node_api.py +201 -0
  1013. chia/wallet/wallet_pool_store.py +120 -0
  1014. chia/wallet/wallet_protocol.py +90 -0
  1015. chia/wallet/wallet_puzzle_store.py +365 -0
  1016. chia/wallet/wallet_retry_store.py +70 -0
  1017. chia/wallet/wallet_singleton_store.py +258 -0
  1018. chia/wallet/wallet_spend_bundle.py +41 -0
  1019. chia/wallet/wallet_state_manager.py +2820 -0
  1020. chia/wallet/wallet_transaction_store.py +470 -0
  1021. chia/wallet/wallet_user_store.py +110 -0
  1022. chia/wallet/wallet_weight_proof_handler.py +126 -0
  1023. chia_blockchain-2.4.4.dist-info/LICENSE +201 -0
  1024. chia_blockchain-2.4.4.dist-info/METADATA +161 -0
  1025. chia_blockchain-2.4.4.dist-info/RECORD +1028 -0
  1026. chia_blockchain-2.4.4.dist-info/WHEEL +4 -0
  1027. chia_blockchain-2.4.4.dist-info/entry_points.txt +17 -0
  1028. mozilla-ca/cacert.pem +3666 -0
@@ -0,0 +1,266 @@
1
+ # this file is generated by build_network_protocol_files.py
2
+
3
+ from __future__ import annotations
4
+
5
+ from chia._tests.util.network_protocol_data import * # noqa: F403
6
+ from chia._tests.util.protocol_messages_json import * # noqa: F403
7
+
8
+
9
+ def test_protocol_json() -> None:
10
+ assert str(new_signage_point_json) == str(new_signage_point.to_json_dict())
11
+ assert type(new_signage_point).from_json_dict(new_signage_point_json) == new_signage_point
12
+ assert str(declare_proof_of_space_json) == str(declare_proof_of_space.to_json_dict())
13
+ assert type(declare_proof_of_space).from_json_dict(declare_proof_of_space_json) == declare_proof_of_space
14
+ assert str(request_signed_values_json) == str(request_signed_values.to_json_dict())
15
+ assert type(request_signed_values).from_json_dict(request_signed_values_json) == request_signed_values
16
+ assert str(farming_info_json) == str(farming_info.to_json_dict())
17
+ assert type(farming_info).from_json_dict(farming_info_json) == farming_info
18
+ assert str(signed_values_json) == str(signed_values.to_json_dict())
19
+ assert type(signed_values).from_json_dict(signed_values_json) == signed_values
20
+ assert str(new_peak_json) == str(new_peak.to_json_dict())
21
+ assert type(new_peak).from_json_dict(new_peak_json) == new_peak
22
+ assert str(new_transaction_json) == str(new_transaction.to_json_dict())
23
+ assert type(new_transaction).from_json_dict(new_transaction_json) == new_transaction
24
+ assert str(request_transaction_json) == str(request_transaction.to_json_dict())
25
+ assert type(request_transaction).from_json_dict(request_transaction_json) == request_transaction
26
+ assert str(respond_transaction_json) == str(respond_transaction.to_json_dict())
27
+ assert type(respond_transaction).from_json_dict(respond_transaction_json) == respond_transaction
28
+ assert str(request_proof_of_weight_json) == str(request_proof_of_weight.to_json_dict())
29
+ assert type(request_proof_of_weight).from_json_dict(request_proof_of_weight_json) == request_proof_of_weight
30
+ assert str(respond_proof_of_weight_json) == str(respond_proof_of_weight.to_json_dict())
31
+ assert type(respond_proof_of_weight).from_json_dict(respond_proof_of_weight_json) == respond_proof_of_weight
32
+ assert str(request_block_json) == str(request_block.to_json_dict())
33
+ assert type(request_block).from_json_dict(request_block_json) == request_block
34
+ assert str(reject_block_json) == str(reject_block.to_json_dict())
35
+ assert type(reject_block).from_json_dict(reject_block_json) == reject_block
36
+ assert str(request_blocks_json) == str(request_blocks.to_json_dict())
37
+ assert type(request_blocks).from_json_dict(request_blocks_json) == request_blocks
38
+ assert str(respond_blocks_json) == str(respond_blocks.to_json_dict())
39
+ assert type(respond_blocks).from_json_dict(respond_blocks_json) == respond_blocks
40
+ assert str(reject_blocks_json) == str(reject_blocks.to_json_dict())
41
+ assert type(reject_blocks).from_json_dict(reject_blocks_json) == reject_blocks
42
+ assert str(respond_block_json) == str(respond_block.to_json_dict())
43
+ assert type(respond_block).from_json_dict(respond_block_json) == respond_block
44
+ assert str(new_unfinished_block_json) == str(new_unfinished_block.to_json_dict())
45
+ assert type(new_unfinished_block).from_json_dict(new_unfinished_block_json) == new_unfinished_block
46
+ assert str(request_unfinished_block_json) == str(request_unfinished_block.to_json_dict())
47
+ assert type(request_unfinished_block).from_json_dict(request_unfinished_block_json) == request_unfinished_block
48
+ assert str(respond_unfinished_block_json) == str(respond_unfinished_block.to_json_dict())
49
+ assert type(respond_unfinished_block).from_json_dict(respond_unfinished_block_json) == respond_unfinished_block
50
+ assert str(new_signage_point_or_end_of_subslot_json) == str(new_signage_point_or_end_of_subslot.to_json_dict())
51
+ assert (
52
+ type(new_signage_point_or_end_of_subslot).from_json_dict(new_signage_point_or_end_of_subslot_json)
53
+ == new_signage_point_or_end_of_subslot
54
+ )
55
+ assert str(request_signage_point_or_end_of_subslot_json) == str(
56
+ request_signage_point_or_end_of_subslot.to_json_dict()
57
+ )
58
+ assert (
59
+ type(request_signage_point_or_end_of_subslot).from_json_dict(request_signage_point_or_end_of_subslot_json)
60
+ == request_signage_point_or_end_of_subslot
61
+ )
62
+ assert str(respond_signage_point_json) == str(respond_signage_point.to_json_dict())
63
+ assert type(respond_signage_point).from_json_dict(respond_signage_point_json) == respond_signage_point
64
+ assert str(respond_end_of_subslot_json) == str(respond_end_of_subslot.to_json_dict())
65
+ assert type(respond_end_of_subslot).from_json_dict(respond_end_of_subslot_json) == respond_end_of_subslot
66
+ assert str(request_mempool_transaction_json) == str(request_mempool_transaction.to_json_dict())
67
+ assert (
68
+ type(request_mempool_transaction).from_json_dict(request_mempool_transaction_json)
69
+ == request_mempool_transaction
70
+ )
71
+ assert str(new_compact_vdf_json) == str(new_compact_vdf.to_json_dict())
72
+ assert type(new_compact_vdf).from_json_dict(new_compact_vdf_json) == new_compact_vdf
73
+ assert str(request_compact_vdf_json) == str(request_compact_vdf.to_json_dict())
74
+ assert type(request_compact_vdf).from_json_dict(request_compact_vdf_json) == request_compact_vdf
75
+ assert str(respond_compact_vdf_json) == str(respond_compact_vdf.to_json_dict())
76
+ assert type(respond_compact_vdf).from_json_dict(respond_compact_vdf_json) == respond_compact_vdf
77
+ assert str(request_peers_json) == str(request_peers.to_json_dict())
78
+ assert type(request_peers).from_json_dict(request_peers_json) == request_peers
79
+ assert str(respond_peers_json) == str(respond_peers.to_json_dict())
80
+ assert type(respond_peers).from_json_dict(respond_peers_json) == respond_peers
81
+ assert str(new_unfinished_block2_json) == str(new_unfinished_block2.to_json_dict())
82
+ assert type(new_unfinished_block2).from_json_dict(new_unfinished_block2_json) == new_unfinished_block2
83
+ assert str(request_unfinished_block2_json) == str(request_unfinished_block2.to_json_dict())
84
+ assert type(request_unfinished_block2).from_json_dict(request_unfinished_block2_json) == request_unfinished_block2
85
+ assert str(request_puzzle_solution_json) == str(request_puzzle_solution.to_json_dict())
86
+ assert type(request_puzzle_solution).from_json_dict(request_puzzle_solution_json) == request_puzzle_solution
87
+ assert str(puzzle_solution_response_json) == str(puzzle_solution_response.to_json_dict())
88
+ assert type(puzzle_solution_response).from_json_dict(puzzle_solution_response_json) == puzzle_solution_response
89
+ assert str(respond_puzzle_solution_json) == str(respond_puzzle_solution.to_json_dict())
90
+ assert type(respond_puzzle_solution).from_json_dict(respond_puzzle_solution_json) == respond_puzzle_solution
91
+ assert str(reject_puzzle_solution_json) == str(reject_puzzle_solution.to_json_dict())
92
+ assert type(reject_puzzle_solution).from_json_dict(reject_puzzle_solution_json) == reject_puzzle_solution
93
+ assert str(send_transaction_json) == str(send_transaction.to_json_dict())
94
+ assert type(send_transaction).from_json_dict(send_transaction_json) == send_transaction
95
+ assert str(transaction_ack_json) == str(transaction_ack.to_json_dict())
96
+ assert type(transaction_ack).from_json_dict(transaction_ack_json) == transaction_ack
97
+ assert str(new_peak_wallet_json) == str(new_peak_wallet.to_json_dict())
98
+ assert type(new_peak_wallet).from_json_dict(new_peak_wallet_json) == new_peak_wallet
99
+ assert str(request_block_header_json) == str(request_block_header.to_json_dict())
100
+ assert type(request_block_header).from_json_dict(request_block_header_json) == request_block_header
101
+ assert str(request_block_headers_json) == str(request_block_headers.to_json_dict())
102
+ assert type(request_block_headers).from_json_dict(request_block_headers_json) == request_block_headers
103
+ assert str(respond_header_block_json) == str(respond_header_block.to_json_dict())
104
+ assert type(respond_header_block).from_json_dict(respond_header_block_json) == respond_header_block
105
+ assert str(respond_block_headers_json) == str(respond_block_headers.to_json_dict())
106
+ assert type(respond_block_headers).from_json_dict(respond_block_headers_json) == respond_block_headers
107
+ assert str(reject_header_request_json) == str(reject_header_request.to_json_dict())
108
+ assert type(reject_header_request).from_json_dict(reject_header_request_json) == reject_header_request
109
+ assert str(request_removals_json) == str(request_removals.to_json_dict())
110
+ assert type(request_removals).from_json_dict(request_removals_json) == request_removals
111
+ assert str(respond_removals_json) == str(respond_removals.to_json_dict())
112
+ assert type(respond_removals).from_json_dict(respond_removals_json) == respond_removals
113
+ assert str(reject_removals_request_json) == str(reject_removals_request.to_json_dict())
114
+ assert type(reject_removals_request).from_json_dict(reject_removals_request_json) == reject_removals_request
115
+ assert str(request_additions_json) == str(request_additions.to_json_dict())
116
+ assert type(request_additions).from_json_dict(request_additions_json) == request_additions
117
+ assert str(respond_additions_json) == str(respond_additions.to_json_dict())
118
+ assert type(respond_additions).from_json_dict(respond_additions_json) == respond_additions
119
+ assert str(reject_additions_json) == str(reject_additions.to_json_dict())
120
+ assert type(reject_additions).from_json_dict(reject_additions_json) == reject_additions
121
+ assert str(request_header_blocks_json) == str(request_header_blocks.to_json_dict())
122
+ assert type(request_header_blocks).from_json_dict(request_header_blocks_json) == request_header_blocks
123
+ assert str(reject_header_blocks_json) == str(reject_header_blocks.to_json_dict())
124
+ assert type(reject_header_blocks).from_json_dict(reject_header_blocks_json) == reject_header_blocks
125
+ assert str(respond_header_blocks_json) == str(respond_header_blocks.to_json_dict())
126
+ assert type(respond_header_blocks).from_json_dict(respond_header_blocks_json) == respond_header_blocks
127
+ assert str(coin_state_json) == str(coin_state.to_json_dict())
128
+ assert type(coin_state).from_json_dict(coin_state_json) == coin_state
129
+ assert str(register_for_ph_updates_json) == str(register_for_ph_updates.to_json_dict())
130
+ assert type(register_for_ph_updates).from_json_dict(register_for_ph_updates_json) == register_for_ph_updates
131
+ assert str(reject_block_headers_json) == str(reject_block_headers.to_json_dict())
132
+ assert type(reject_block_headers).from_json_dict(reject_block_headers_json) == reject_block_headers
133
+ assert str(respond_to_ph_updates_json) == str(respond_to_ph_updates.to_json_dict())
134
+ assert type(respond_to_ph_updates).from_json_dict(respond_to_ph_updates_json) == respond_to_ph_updates
135
+ assert str(register_for_coin_updates_json) == str(register_for_coin_updates.to_json_dict())
136
+ assert type(register_for_coin_updates).from_json_dict(register_for_coin_updates_json) == register_for_coin_updates
137
+ assert str(respond_to_coin_updates_json) == str(respond_to_coin_updates.to_json_dict())
138
+ assert type(respond_to_coin_updates).from_json_dict(respond_to_coin_updates_json) == respond_to_coin_updates
139
+ assert str(coin_state_update_json) == str(coin_state_update.to_json_dict())
140
+ assert type(coin_state_update).from_json_dict(coin_state_update_json) == coin_state_update
141
+ assert str(request_children_json) == str(request_children.to_json_dict())
142
+ assert type(request_children).from_json_dict(request_children_json) == request_children
143
+ assert str(respond_children_json) == str(respond_children.to_json_dict())
144
+ assert type(respond_children).from_json_dict(respond_children_json) == respond_children
145
+ assert str(request_ses_info_json) == str(request_ses_info.to_json_dict())
146
+ assert type(request_ses_info).from_json_dict(request_ses_info_json) == request_ses_info
147
+ assert str(respond_ses_info_json) == str(respond_ses_info.to_json_dict())
148
+ assert type(respond_ses_info).from_json_dict(respond_ses_info_json) == respond_ses_info
149
+ assert str(coin_state_filters_json) == str(coin_state_filters.to_json_dict())
150
+ assert type(coin_state_filters).from_json_dict(coin_state_filters_json) == coin_state_filters
151
+ assert str(request_remove_puzzle_subscriptions_json) == str(request_remove_puzzle_subscriptions.to_json_dict())
152
+ assert (
153
+ type(request_remove_puzzle_subscriptions).from_json_dict(request_remove_puzzle_subscriptions_json)
154
+ == request_remove_puzzle_subscriptions
155
+ )
156
+ assert str(respond_remove_puzzle_subscriptions_json) == str(respond_remove_puzzle_subscriptions.to_json_dict())
157
+ assert (
158
+ type(respond_remove_puzzle_subscriptions).from_json_dict(respond_remove_puzzle_subscriptions_json)
159
+ == respond_remove_puzzle_subscriptions
160
+ )
161
+ assert str(request_remove_coin_subscriptions_json) == str(request_remove_coin_subscriptions.to_json_dict())
162
+ assert (
163
+ type(request_remove_coin_subscriptions).from_json_dict(request_remove_coin_subscriptions_json)
164
+ == request_remove_coin_subscriptions
165
+ )
166
+ assert str(respond_remove_coin_subscriptions_json) == str(respond_remove_coin_subscriptions.to_json_dict())
167
+ assert (
168
+ type(respond_remove_coin_subscriptions).from_json_dict(respond_remove_coin_subscriptions_json)
169
+ == respond_remove_coin_subscriptions
170
+ )
171
+ assert str(request_puzzle_state_json) == str(request_puzzle_state.to_json_dict())
172
+ assert type(request_puzzle_state).from_json_dict(request_puzzle_state_json) == request_puzzle_state
173
+ assert str(reject_puzzle_state_json) == str(reject_puzzle_state.to_json_dict())
174
+ assert type(reject_puzzle_state).from_json_dict(reject_puzzle_state_json) == reject_puzzle_state
175
+ assert str(respond_puzzle_state_json) == str(respond_puzzle_state.to_json_dict())
176
+ assert type(respond_puzzle_state).from_json_dict(respond_puzzle_state_json) == respond_puzzle_state
177
+ assert str(request_coin_state_json) == str(request_coin_state.to_json_dict())
178
+ assert type(request_coin_state).from_json_dict(request_coin_state_json) == request_coin_state
179
+ assert str(respond_coin_state_json) == str(respond_coin_state.to_json_dict())
180
+ assert type(respond_coin_state).from_json_dict(respond_coin_state_json) == respond_coin_state
181
+ assert str(reject_coin_state_json) == str(reject_coin_state.to_json_dict())
182
+ assert type(reject_coin_state).from_json_dict(reject_coin_state_json) == reject_coin_state
183
+ assert str(request_cost_info_json) == str(request_cost_info.to_json_dict())
184
+ assert type(request_cost_info).from_json_dict(request_cost_info_json) == request_cost_info
185
+ assert str(respond_cost_info_json) == str(respond_cost_info.to_json_dict())
186
+ assert type(respond_cost_info).from_json_dict(respond_cost_info_json) == respond_cost_info
187
+ assert str(pool_difficulty_json) == str(pool_difficulty.to_json_dict())
188
+ assert type(pool_difficulty).from_json_dict(pool_difficulty_json) == pool_difficulty
189
+ assert str(harvester_handhsake_json) == str(harvester_handhsake.to_json_dict())
190
+ assert type(harvester_handhsake).from_json_dict(harvester_handhsake_json) == harvester_handhsake
191
+ assert str(new_signage_point_harvester_json) == str(new_signage_point_harvester.to_json_dict())
192
+ assert (
193
+ type(new_signage_point_harvester).from_json_dict(new_signage_point_harvester_json)
194
+ == new_signage_point_harvester
195
+ )
196
+ assert str(new_proof_of_space_json) == str(new_proof_of_space.to_json_dict())
197
+ assert type(new_proof_of_space).from_json_dict(new_proof_of_space_json) == new_proof_of_space
198
+ assert str(request_signatures_json) == str(request_signatures.to_json_dict())
199
+ assert type(request_signatures).from_json_dict(request_signatures_json) == request_signatures
200
+ assert str(respond_signatures_json) == str(respond_signatures.to_json_dict())
201
+ assert type(respond_signatures).from_json_dict(respond_signatures_json) == respond_signatures
202
+ assert str(plot_json) == str(plot.to_json_dict())
203
+ assert type(plot).from_json_dict(plot_json) == plot
204
+ assert str(request_plots_json) == str(request_plots.to_json_dict())
205
+ assert type(request_plots).from_json_dict(request_plots_json) == request_plots
206
+ assert str(respond_plots_json) == str(respond_plots.to_json_dict())
207
+ assert type(respond_plots).from_json_dict(respond_plots_json) == respond_plots
208
+ assert str(request_peers_introducer_json) == str(request_peers_introducer.to_json_dict())
209
+ assert type(request_peers_introducer).from_json_dict(request_peers_introducer_json) == request_peers_introducer
210
+ assert str(respond_peers_introducer_json) == str(respond_peers_introducer.to_json_dict())
211
+ assert type(respond_peers_introducer).from_json_dict(respond_peers_introducer_json) == respond_peers_introducer
212
+ assert str(authentication_payload_json) == str(authentication_payload.to_json_dict())
213
+ assert type(authentication_payload).from_json_dict(authentication_payload_json) == authentication_payload
214
+ assert str(get_pool_info_response_json) == str(get_pool_info_response.to_json_dict())
215
+ assert type(get_pool_info_response).from_json_dict(get_pool_info_response_json) == get_pool_info_response
216
+ assert str(post_partial_payload_json) == str(post_partial_payload.to_json_dict())
217
+ assert type(post_partial_payload).from_json_dict(post_partial_payload_json) == post_partial_payload
218
+ assert str(post_partial_request_json) == str(post_partial_request.to_json_dict())
219
+ assert type(post_partial_request).from_json_dict(post_partial_request_json) == post_partial_request
220
+ assert str(post_partial_response_json) == str(post_partial_response.to_json_dict())
221
+ assert type(post_partial_response).from_json_dict(post_partial_response_json) == post_partial_response
222
+ assert str(get_farmer_response_json) == str(get_farmer_response.to_json_dict())
223
+ assert type(get_farmer_response).from_json_dict(get_farmer_response_json) == get_farmer_response
224
+ assert str(post_farmer_payload_json) == str(post_farmer_payload.to_json_dict())
225
+ assert type(post_farmer_payload).from_json_dict(post_farmer_payload_json) == post_farmer_payload
226
+ assert str(post_farmer_request_json) == str(post_farmer_request.to_json_dict())
227
+ assert type(post_farmer_request).from_json_dict(post_farmer_request_json) == post_farmer_request
228
+ assert str(post_farmer_response_json) == str(post_farmer_response.to_json_dict())
229
+ assert type(post_farmer_response).from_json_dict(post_farmer_response_json) == post_farmer_response
230
+ assert str(put_farmer_payload_json) == str(put_farmer_payload.to_json_dict())
231
+ assert type(put_farmer_payload).from_json_dict(put_farmer_payload_json) == put_farmer_payload
232
+ assert str(put_farmer_request_json) == str(put_farmer_request.to_json_dict())
233
+ assert type(put_farmer_request).from_json_dict(put_farmer_request_json) == put_farmer_request
234
+ assert str(put_farmer_response_json) == str(put_farmer_response.to_json_dict())
235
+ assert type(put_farmer_response).from_json_dict(put_farmer_response_json) == put_farmer_response
236
+ assert str(error_response_json) == str(error_response.to_json_dict())
237
+ assert type(error_response).from_json_dict(error_response_json) == error_response
238
+ assert str(new_peak_timelord_json) == str(new_peak_timelord.to_json_dict())
239
+ assert type(new_peak_timelord).from_json_dict(new_peak_timelord_json) == new_peak_timelord
240
+ assert str(new_unfinished_block_timelord_json) == str(new_unfinished_block_timelord.to_json_dict())
241
+ assert (
242
+ type(new_unfinished_block_timelord).from_json_dict(new_unfinished_block_timelord_json)
243
+ == new_unfinished_block_timelord
244
+ )
245
+ assert str(new_infusion_point_vdf_json) == str(new_infusion_point_vdf.to_json_dict())
246
+ assert type(new_infusion_point_vdf).from_json_dict(new_infusion_point_vdf_json) == new_infusion_point_vdf
247
+ assert str(new_signage_point_vdf_json) == str(new_signage_point_vdf.to_json_dict())
248
+ assert type(new_signage_point_vdf).from_json_dict(new_signage_point_vdf_json) == new_signage_point_vdf
249
+ assert str(new_end_of_sub_slot_bundle_json) == str(new_end_of_sub_slot_bundle.to_json_dict())
250
+ assert (
251
+ type(new_end_of_sub_slot_bundle).from_json_dict(new_end_of_sub_slot_bundle_json) == new_end_of_sub_slot_bundle
252
+ )
253
+ assert str(request_compact_proof_of_time_json) == str(request_compact_proof_of_time.to_json_dict())
254
+ assert (
255
+ type(request_compact_proof_of_time).from_json_dict(request_compact_proof_of_time_json)
256
+ == request_compact_proof_of_time
257
+ )
258
+ assert str(respond_compact_proof_of_time_json) == str(respond_compact_proof_of_time.to_json_dict())
259
+ assert (
260
+ type(respond_compact_proof_of_time).from_json_dict(respond_compact_proof_of_time_json)
261
+ == respond_compact_proof_of_time
262
+ )
263
+ assert str(error_without_data_json) == str(error_without_data.to_json_dict())
264
+ assert type(error_without_data).from_json_dict(error_without_data_json) == error_without_data
265
+ assert str(error_with_data_json) == str(error_with_data.to_json_dict())
266
+ assert type(error_with_data).from_json_dict(error_with_data_json) == error_with_data
@@ -0,0 +1,257 @@
1
+ # flake8: noqa
2
+ from __future__ import annotations
3
+
4
+ import ast
5
+ import inspect
6
+ from typing import Any, Dict, Set, cast
7
+
8
+ from chia.protocols import (
9
+ farmer_protocol,
10
+ full_node_protocol,
11
+ harvester_protocol,
12
+ introducer_protocol,
13
+ pool_protocol,
14
+ protocol_message_types,
15
+ shared_protocol,
16
+ timelord_protocol,
17
+ wallet_protocol,
18
+ )
19
+
20
+ # this test is to ensure the network protocol message regression test always
21
+ # stays up to date. It's a test for the test
22
+
23
+
24
+ def types_in_module(mod: Any) -> Set[str]:
25
+ parsed = ast.parse(inspect.getsource(mod))
26
+ types = set()
27
+ for line in parsed.body:
28
+ if isinstance(line, ast.Assign):
29
+ name = cast(ast.Name, line.targets[0])
30
+ if inspect.isclass(getattr(mod, name.id)):
31
+ types.add(name.id)
32
+ elif isinstance(line, ast.ClassDef):
33
+ types.add(line.name)
34
+ return types
35
+
36
+
37
+ def test_missing_messages_state_machine() -> None:
38
+ from chia.protocols.protocol_state_machine import NO_REPLY_EXPECTED, VALID_REPLY_MESSAGE_MAP
39
+
40
+ # if these asserts fail, make sure to add the new network protocol messages
41
+ # to the visitor in build_network_protocol_files.py and rerun it. Then
42
+ # update this test
43
+ assert (
44
+ len(VALID_REPLY_MESSAGE_MAP) == 26
45
+ ), "A message was added to the protocol state machine. Make sure to update the protocol message regression test to include the new message"
46
+ assert (
47
+ len(NO_REPLY_EXPECTED) == 10
48
+ ), "A message was added to the protocol state machine. Make sure to update the protocol message regression test to include the new message"
49
+
50
+
51
+ def test_message_ids() -> None:
52
+ parsed = ast.parse(inspect.getsource(protocol_message_types))
53
+ message_ids: Dict[int, str] = {}
54
+ for line in parsed.body:
55
+ if not isinstance(line, ast.ClassDef) or line.name != "ProtocolMessageTypes":
56
+ continue
57
+ for entry in line.body:
58
+ if not isinstance(entry, ast.Assign): # pragma: no cover
59
+ continue
60
+ assert isinstance(entry.value, ast.Constant)
61
+ assert isinstance(entry.targets[0], ast.Name)
62
+ message_id = entry.value.value
63
+ message_name = entry.targets[0].id
64
+ if message_id in message_ids: # pragma: no cover
65
+ raise AssertionError(
66
+ f'protocol message ID clash between "{message_name}" and "{message_ids[message_id]}". Value {message_id}'
67
+ )
68
+ message_ids[message_id] = message_name
69
+ if message_id < 0 or message_id > 255: # pragma: no cover
70
+ raise AssertionError(f'message ID must fit in a uint8. "{message_name}" has value {message_id}')
71
+ break
72
+ assert len(message_ids) > 0
73
+
74
+
75
+ def test_missing_messages() -> None:
76
+ wallet_msgs = {
77
+ "CoinState",
78
+ "CoinStateFilters",
79
+ "CoinStateUpdate",
80
+ "MempoolItemsAdded",
81
+ "MempoolItemsRemoved",
82
+ "NewPeakWallet",
83
+ "PuzzleSolutionResponse",
84
+ "RegisterForCoinUpdates",
85
+ "RegisterForPhUpdates",
86
+ "RejectAdditionsRequest",
87
+ "RejectBlockHeaders",
88
+ "RejectCoinState",
89
+ "RejectHeaderBlocks",
90
+ "RejectHeaderRequest",
91
+ "RejectPuzzleSolution",
92
+ "RejectPuzzleState",
93
+ "RejectRemovalsRequest",
94
+ "RejectStateReason",
95
+ "RemovedMempoolItem",
96
+ "RequestAdditions",
97
+ "RequestBlockHeader",
98
+ "RequestBlockHeaders",
99
+ "RequestChildren",
100
+ "RequestCoinState",
101
+ "RequestCostInfo",
102
+ "RequestFeeEstimates",
103
+ "RequestHeaderBlocks",
104
+ "RequestPuzzleSolution",
105
+ "RequestPuzzleState",
106
+ "RequestRemovals",
107
+ "RequestRemoveCoinSubscriptions",
108
+ "RequestRemovePuzzleSubscriptions",
109
+ "RequestSESInfo",
110
+ "RespondAdditions",
111
+ "RespondBlockHeader",
112
+ "RespondBlockHeaders",
113
+ "RespondChildren",
114
+ "RespondCoinState",
115
+ "RespondCostInfo",
116
+ "RespondFeeEstimates",
117
+ "RespondHeaderBlocks",
118
+ "RespondPuzzleSolution",
119
+ "RespondPuzzleState",
120
+ "RespondRemovals",
121
+ "RespondRemoveCoinSubscriptions",
122
+ "RespondRemovePuzzleSubscriptions",
123
+ "RespondSESInfo",
124
+ "RespondToCoinUpdates",
125
+ "RespondToPhUpdates",
126
+ "SendTransaction",
127
+ "TransactionAck",
128
+ }
129
+
130
+ farmer_msgs = {
131
+ "DeclareProofOfSpace",
132
+ "FarmingInfo",
133
+ "SPSubSlotSourceData",
134
+ "SPVDFSourceData",
135
+ "SignagePointSourceData",
136
+ "NewSignagePoint",
137
+ "RequestSignedValues",
138
+ "SignedValues",
139
+ }
140
+
141
+ full_node_msgs = {
142
+ "NewCompactVDF",
143
+ "NewPeak",
144
+ "NewSignagePointOrEndOfSubSlot",
145
+ "NewTransaction",
146
+ "NewUnfinishedBlock",
147
+ "NewUnfinishedBlock2",
148
+ "RejectBlock",
149
+ "RejectBlocks",
150
+ "RequestBlock",
151
+ "RequestBlocks",
152
+ "RequestCompactVDF",
153
+ "RequestMempoolTransactions",
154
+ "RequestPeers",
155
+ "RequestProofOfWeight",
156
+ "RequestSignagePointOrEndOfSubSlot",
157
+ "RequestTransaction",
158
+ "RequestUnfinishedBlock",
159
+ "RequestUnfinishedBlock2",
160
+ "RespondBlock",
161
+ "RespondBlocks",
162
+ "RespondCompactVDF",
163
+ "RespondEndOfSubSlot",
164
+ "RespondPeers",
165
+ "RespondProofOfWeight",
166
+ "RespondSignagePoint",
167
+ "RespondTransaction",
168
+ "RespondUnfinishedBlock",
169
+ }
170
+
171
+ harvester_msgs = {
172
+ "HarvesterHandshake",
173
+ "ProofOfSpaceFeeInfo",
174
+ "NewProofOfSpace",
175
+ "NewSignagePointHarvester",
176
+ "Plot",
177
+ "PlotSyncDone",
178
+ "PlotSyncError",
179
+ "PlotSyncIdentifier",
180
+ "PlotSyncPathList",
181
+ "PlotSyncPlotList",
182
+ "PlotSyncResponse",
183
+ "PlotSyncStart",
184
+ "PoolDifficulty",
185
+ "RequestPlots",
186
+ "SigningDataKind",
187
+ "SignatureRequestSourceData",
188
+ "RequestSignatures",
189
+ "RespondPlots",
190
+ "RespondSignatures",
191
+ }
192
+
193
+ introducer_msgs = {"RequestPeersIntroducer", "RespondPeersIntroducer"}
194
+
195
+ pool_msgs = {
196
+ "AuthenticationPayload",
197
+ "ErrorResponse",
198
+ "GetFarmerResponse",
199
+ "GetPoolInfoResponse",
200
+ "PoolErrorCode",
201
+ "PostFarmerPayload",
202
+ "PostFarmerRequest",
203
+ "PostFarmerResponse",
204
+ "PostPartialPayload",
205
+ "PostPartialRequest",
206
+ "PostPartialResponse",
207
+ "PutFarmerPayload",
208
+ "PutFarmerRequest",
209
+ "PutFarmerResponse",
210
+ }
211
+
212
+ timelord_msgs = {
213
+ "NewEndOfSubSlotVDF",
214
+ "NewInfusionPointVDF",
215
+ "NewPeakTimelord",
216
+ "NewSignagePointVDF",
217
+ "NewUnfinishedBlockTimelord",
218
+ "RequestCompactProofOfTime",
219
+ "RespondCompactProofOfTime",
220
+ }
221
+
222
+ shared_msgs = {"Handshake", "Capability", "Error"}
223
+
224
+ # if these asserts fail, make sure to add the new network protocol messages
225
+ # to the visitor in build_network_protocol_files.py and rerun it. Then
226
+ # update this test
227
+ assert (
228
+ types_in_module(wallet_protocol) == wallet_msgs
229
+ ), "message types were added or removed from wallet_protocol. Make sure to update the protocol message regression test to include the new message"
230
+
231
+ assert (
232
+ types_in_module(farmer_protocol) == farmer_msgs
233
+ ), "message types were added or removed from farmer_protocol. Make sure to update the protocol message regression test to include the new message"
234
+
235
+ assert (
236
+ types_in_module(full_node_protocol) == full_node_msgs
237
+ ), "message types were added or removed from full_node_protocol. Make sure to update the protocol message regression test to include the new message"
238
+
239
+ assert (
240
+ types_in_module(harvester_protocol) == harvester_msgs
241
+ ), "message types were added or removed from harvester_protocol. Make sure to update the protocol message regression test to include the new message"
242
+
243
+ assert (
244
+ types_in_module(introducer_protocol) == introducer_msgs
245
+ ), "message types were added or removed from introducer_protocol. Make sure to update the protocol message regression test to include the new message"
246
+
247
+ assert (
248
+ types_in_module(pool_protocol) == pool_msgs
249
+ ), "message types were added or removed from pool_protocol. Make sure to update the protocol message regression test to include the new message"
250
+
251
+ assert (
252
+ types_in_module(timelord_protocol) == timelord_msgs
253
+ ), "message types were added or removed from timelord_protocol. Make sure to update the protocol message regression test to include the new message"
254
+
255
+ assert (
256
+ types_in_module(shared_protocol) == shared_msgs
257
+ ), "message types were added or removed from shared_protocol. Make sure to update the protocol message regression test to include the new message"
@@ -0,0 +1,72 @@
1
+ from __future__ import annotations
2
+
3
+ from math import ceil
4
+ from typing import List, Type
5
+
6
+ import pytest
7
+
8
+ from chia.util.paginator import InvalidPageSizeError, InvalidPageSizeLimit, PageOutOfBoundsError, Paginator
9
+
10
+
11
+ @pytest.mark.parametrize(
12
+ "source, page_size, page_size_limit",
13
+ [([], 1, 1), ([1], 1, 2), ([1, 2], 2, 2), ([], 10, 100), ([1, 2, 10], 1000, 1000)],
14
+ )
15
+ def test_constructor_valid_inputs(source: List[int], page_size: int, page_size_limit: int) -> None:
16
+ paginator: Paginator = Paginator.create(source, page_size, page_size_limit)
17
+ assert paginator.page_size() == page_size
18
+ assert paginator.page_count() == 1
19
+ assert paginator.get_page(0) == source
20
+
21
+
22
+ @pytest.mark.parametrize(
23
+ "page_size, page_size_limit, exception",
24
+ [
25
+ (5, -1, InvalidPageSizeLimit),
26
+ (5, 0, InvalidPageSizeLimit),
27
+ (2, 1, InvalidPageSizeError),
28
+ (100, 1, InvalidPageSizeError),
29
+ (1001, 1000, InvalidPageSizeError),
30
+ ],
31
+ )
32
+ def test_constructor_invalid_inputs(page_size: int, page_size_limit: int, exception: Type[Exception]) -> None:
33
+ with pytest.raises(exception):
34
+ Paginator.create([], page_size, page_size_limit)
35
+
36
+
37
+ def test_page_count() -> None:
38
+ for page_size in range(1, 10):
39
+ for i in range(0, 10):
40
+ assert Paginator.create(range(0, i), page_size).page_count() == max(1, ceil(i / page_size))
41
+
42
+
43
+ @pytest.mark.parametrize(
44
+ "length, page_size, page, expected_data",
45
+ [
46
+ (17, 5, 0, [0, 1, 2, 3, 4]),
47
+ (17, 5, 1, [5, 6, 7, 8, 9]),
48
+ (17, 5, 2, [10, 11, 12, 13, 14]),
49
+ (17, 5, 3, [15, 16]),
50
+ (3, 4, 0, [0, 1, 2]),
51
+ (3, 3, 0, [0, 1, 2]),
52
+ (3, 2, 0, [0, 1]),
53
+ (3, 2, 1, [2]),
54
+ (3, 1, 0, [0]),
55
+ (3, 1, 1, [1]),
56
+ (3, 1, 2, [2]),
57
+ (2, 2, 0, [0, 1]),
58
+ (2, 1, 0, [0]),
59
+ (2, 1, 1, [1]),
60
+ (1, 2, 0, [0]),
61
+ (0, 2, 0, []),
62
+ (0, 10, 0, []),
63
+ ],
64
+ )
65
+ def test_get_page_valid(length: int, page: int, page_size: int, expected_data: List[int]) -> None:
66
+ assert Paginator.create(list(range(0, length)), page_size).get_page(page) == expected_data
67
+
68
+
69
+ @pytest.mark.parametrize("page", [-1000, -10, -1, 5, 10, 1000])
70
+ def test_get_page_invalid(page: int) -> None:
71
+ with pytest.raises(PageOutOfBoundsError):
72
+ Paginator.create(range(0, 17), 5).get_page(page)
@@ -0,0 +1,17 @@
1
+ from __future__ import annotations
2
+
3
+ from chia.util.pprint import print_compact_ranges
4
+
5
+
6
+ def test_print_compact_ranges() -> None:
7
+ assert print_compact_ranges([]) == "[]"
8
+ assert print_compact_ranges([1]) == "[1]"
9
+ assert print_compact_ranges([1, 2]) == "[1 to 2]"
10
+ assert print_compact_ranges([2, 1]) == "[1 to 2]"
11
+ assert print_compact_ranges([1, 3, 4]) == "[1, 3 to 4]"
12
+ assert print_compact_ranges([1, 2, 4]) == "[1 to 2, 4]"
13
+ assert print_compact_ranges([1, 2, 4, 5]) == "[1 to 2, 4 to 5]"
14
+
15
+ assert print_compact_ranges([-1, -2]) == "[-2 to -1]"
16
+
17
+ assert print_compact_ranges([1, 1, 1, 2, 2, 4, 4, 9]) == "[1 to 2, 4, 9]"