chia-blockchain 2.5.2rc1__py3-none-any.whl → 2.5.3__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 (640) hide show
  1. chia/__init__.py +7 -0
  2. chia/_tests/blockchain/blockchain_test_utils.py +1 -1
  3. chia/_tests/blockchain/test_augmented_chain.py +54 -5
  4. chia/_tests/blockchain/test_blockchain.py +5 -12
  5. chia/_tests/blockchain/test_blockchain_transactions.py +3 -5
  6. chia/_tests/blockchain/test_get_block_generator.py +2 -2
  7. chia/_tests/blockchain/test_lookup_fork_chain.py +2 -2
  8. chia/_tests/clvm/benchmark_costs.py +2 -1
  9. chia/_tests/clvm/coin_store.py +4 -3
  10. chia/_tests/clvm/test_chialisp_deserialization.py +2 -2
  11. chia/_tests/clvm/test_curry_and_treehash.py +1 -1
  12. chia/_tests/clvm/test_puzzle_compression.py +2 -2
  13. chia/_tests/clvm/test_puzzles.py +2 -2
  14. chia/_tests/clvm/test_singletons.py +2 -2
  15. chia/_tests/clvm/test_spend_sim.py +1 -1
  16. chia/_tests/cmds/cmd_test_utils.py +2 -2
  17. chia/_tests/cmds/test_click_types.py +2 -2
  18. chia/_tests/cmds/test_cmd_framework.py +6 -6
  19. chia/_tests/cmds/test_show.py +4 -3
  20. chia/_tests/cmds/test_tx_config_args.py +1 -1
  21. chia/_tests/cmds/testing_classes.py +2 -2
  22. chia/_tests/cmds/wallet/test_consts.py +2 -2
  23. chia/_tests/cmds/wallet/test_did.py +2 -2
  24. chia/_tests/cmds/wallet/test_nft.py +2 -2
  25. chia/_tests/cmds/wallet/test_notifications.py +3 -2
  26. chia/_tests/cmds/wallet/test_vcs.py +2 -2
  27. chia/_tests/cmds/wallet/test_wallet.py +4 -8
  28. chia/_tests/conftest.py +4 -3
  29. chia/_tests/connection_utils.py +2 -2
  30. chia/_tests/core/cmds/test_keys.py +1 -2
  31. chia/_tests/core/cmds/test_wallet.py +2 -2
  32. chia/_tests/core/consensus/test_block_creation.py +2 -2
  33. chia/_tests/core/consensus/test_pot_iterations.py +1 -1
  34. chia/_tests/core/custom_types/test_coin.py +2 -2
  35. chia/_tests/core/custom_types/test_proof_of_space.py +2 -2
  36. chia/_tests/core/custom_types/test_spend_bundle.py +2 -2
  37. chia/_tests/core/data_layer/conftest.py +1 -1
  38. chia/_tests/core/data_layer/test_data_layer.py +1 -1
  39. chia/_tests/core/data_layer/test_data_layer_util.py +1 -1
  40. chia/_tests/core/data_layer/test_data_rpc.py +2 -2
  41. chia/_tests/core/data_layer/test_data_store.py +1 -1
  42. chia/_tests/core/data_layer/test_data_store_schema.py +1 -1
  43. chia/_tests/core/data_layer/util.py +2 -1
  44. chia/_tests/core/farmer/test_farmer_api.py +1 -1
  45. chia/_tests/core/full_node/full_sync/test_full_sync.py +1 -7
  46. chia/_tests/core/full_node/ram_db.py +2 -1
  47. chia/_tests/core/full_node/stores/test_block_store.py +2 -2
  48. chia/_tests/core/full_node/stores/test_coin_store.py +2 -2
  49. chia/_tests/core/full_node/stores/test_full_node_store.py +3 -3
  50. chia/_tests/core/full_node/stores/test_hint_store.py +2 -2
  51. chia/_tests/core/full_node/stores/test_sync_store.py +1 -1
  52. chia/_tests/core/full_node/test_address_manager.py +1 -1
  53. chia/_tests/core/full_node/test_block_height_map.py +2 -2
  54. chia/_tests/core/full_node/test_conditions.py +1 -1
  55. chia/_tests/core/full_node/test_full_node.py +346 -164
  56. chia/_tests/core/full_node/test_generator_tools.py +3 -2
  57. chia/_tests/core/full_node/test_hint_management.py +2 -2
  58. chia/_tests/core/full_node/test_performance.py +2 -15
  59. chia/_tests/core/full_node/test_subscriptions.py +1 -1
  60. chia/_tests/core/full_node/test_transactions.py +186 -185
  61. chia/_tests/core/full_node/test_tx_processing_queue.py +1 -1
  62. chia/_tests/core/make_block_generator.py +2 -2
  63. chia/_tests/core/mempool/test_mempool.py +165 -22
  64. chia/_tests/core/mempool/test_mempool_fee_estimator.py +1 -1
  65. chia/_tests/core/mempool/test_mempool_fee_protocol.py +1 -1
  66. chia/_tests/core/mempool/test_mempool_manager.py +476 -66
  67. chia/_tests/core/mempool/test_mempool_performance.py +2 -2
  68. chia/_tests/core/mempool/test_singleton_fast_forward.py +19 -25
  69. chia/_tests/core/node_height.py +2 -1
  70. chia/_tests/core/server/test_capabilities.py +1 -1
  71. chia/_tests/core/server/test_dos.py +36 -28
  72. chia/_tests/core/server/test_loop.py +3 -3
  73. chia/_tests/core/server/test_rate_limits.py +1 -1
  74. chia/_tests/core/server/test_server.py +2 -2
  75. chia/_tests/core/services/test_services.py +1 -1
  76. chia/_tests/core/ssl/test_ssl.py +1 -1
  77. chia/_tests/core/test_coins.py +2 -1
  78. chia/_tests/core/test_cost_calculation.py +2 -2
  79. chia/_tests/core/test_crawler.py +2 -2
  80. chia/_tests/core/test_db_conversion.py +2 -2
  81. chia/_tests/core/test_db_validation.py +26 -13
  82. chia/_tests/core/test_farmer_harvester_rpc.py +2 -2
  83. chia/_tests/core/test_full_node_rpc.py +2 -2
  84. chia/_tests/core/test_merkle_set.py +2 -2
  85. chia/_tests/core/test_program.py +2 -2
  86. chia/_tests/core/test_rpc_util.py +1 -1
  87. chia/_tests/core/test_seeder.py +1 -1
  88. chia/_tests/core/util/test_block_cache.py +3 -3
  89. chia/_tests/core/util/test_jsonify.py +3 -2
  90. chia/_tests/core/util/test_keychain.py +3 -3
  91. chia/_tests/core/util/test_streamable.py +3 -4
  92. chia/_tests/environments/wallet.py +3 -2
  93. chia/_tests/farmer_harvester/test_farmer.py +3 -4
  94. chia/_tests/farmer_harvester/test_farmer_harvester.py +2 -2
  95. chia/_tests/farmer_harvester/test_filter_prefix_bits.py +2 -2
  96. chia/_tests/farmer_harvester/test_third_party_harvesters.py +3 -4
  97. chia/_tests/fee_estimation/test_fee_estimation_integration.py +1 -1
  98. chia/_tests/fee_estimation/test_fee_estimation_rpc.py +2 -2
  99. chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +1 -1
  100. chia/_tests/fee_estimation/test_mempoolitem_height_added.py +3 -4
  101. chia/_tests/generator/test_compression.py +20 -10
  102. chia/_tests/generator/test_rom.py +7 -9
  103. chia/_tests/plot_sync/test_delta.py +2 -2
  104. chia/_tests/plot_sync/test_plot_sync.py +2 -2
  105. chia/_tests/plot_sync/test_receiver.py +2 -2
  106. chia/_tests/plot_sync/test_sender.py +2 -2
  107. chia/_tests/plot_sync/test_sync_simulated.py +2 -2
  108. chia/_tests/plot_sync/util.py +3 -2
  109. chia/_tests/plotting/test_plot_manager.py +1 -1
  110. chia/_tests/pools/test_pool_cli_parsing.py +3 -2
  111. chia/_tests/pools/test_pool_cmdline.py +2 -2
  112. chia/_tests/pools/test_pool_puzzles_lifecycle.py +3 -3
  113. chia/_tests/pools/test_pool_rpc.py +4 -5
  114. chia/_tests/pools/test_pool_wallet.py +1 -1
  115. chia/_tests/pools/test_wallet_pool_store.py +2 -2
  116. chia/_tests/rpc/test_rpc_client.py +1 -1
  117. chia/_tests/rpc/test_rpc_server.py +1 -1
  118. chia/_tests/simulation/test_simulation.py +36 -8
  119. chia/_tests/simulation/test_simulator.py +5 -5
  120. chia/_tests/simulation/test_start_simulator.py +2 -2
  121. chia/_tests/timelord/test_new_peak.py +2 -2
  122. chia/_tests/tools/test_run_block.py +3 -2
  123. chia/_tests/util/benchmark_cost.py +2 -2
  124. chia/_tests/util/benchmarks.py +17 -6
  125. chia/_tests/util/blockchain.py +2 -1
  126. chia/_tests/util/blockchain_mock.py +9 -5
  127. chia/_tests/util/build_network_protocol_files.py +2 -1
  128. chia/_tests/util/constants.py +2 -1
  129. chia/_tests/util/full_sync.py +6 -3
  130. chia/_tests/util/gen_ssl_certs.py +2 -2
  131. chia/_tests/util/generator_tools_testing.py +4 -3
  132. chia/_tests/util/get_name_puzzle_conditions.py +2 -2
  133. chia/_tests/util/misc.py +16 -2
  134. chia/_tests/util/network_protocol_data.py +17 -7
  135. chia/_tests/util/run_block.py +6 -8
  136. chia/_tests/util/setup_nodes.py +4 -3
  137. chia/_tests/util/spend_sim.py +9 -5
  138. chia/_tests/util/test_condition_tools.py +2 -2
  139. chia/_tests/util/test_config.py +2 -1
  140. chia/_tests/util/test_errors.py +2 -1
  141. chia/_tests/util/test_full_block_utils.py +17 -7
  142. chia/_tests/util/test_misc.py +1 -1
  143. chia/_tests/util/test_network_protocol_test.py +24 -24
  144. chia/_tests/util/test_replace_str_to_bytes.py +2 -2
  145. chia/_tests/util/test_trusted_peer.py +1 -1
  146. chia/_tests/util/time_out_assert.py +20 -7
  147. chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +1 -1
  148. chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +2 -2
  149. chia/_tests/wallet/cat_wallet/test_cat_wallet.py +5 -6
  150. chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +17 -15
  151. chia/_tests/wallet/cat_wallet/test_trades.py +2 -2
  152. chia/_tests/wallet/clawback/test_clawback_lifecycle.py +2 -2
  153. chia/_tests/wallet/clawback/test_clawback_metadata.py +2 -2
  154. chia/_tests/wallet/conftest.py +3 -3
  155. chia/_tests/wallet/db_wallet/test_db_graftroot.py +3 -5
  156. chia/_tests/wallet/db_wallet/test_dl_offers.py +2 -2
  157. chia/_tests/wallet/db_wallet/test_dl_wallet.py +433 -384
  158. chia/_tests/wallet/did_wallet/test_did.py +3 -3
  159. chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +2 -2
  160. chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +2 -2
  161. chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +3 -4
  162. chia/_tests/wallet/nft_wallet/test_nft_offers.py +1293 -703
  163. chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +28 -30
  164. chia/_tests/wallet/nft_wallet/test_nft_wallet.py +2 -2
  165. chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +2 -2
  166. chia/_tests/wallet/rpc/config.py +1 -1
  167. chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +2 -2
  168. chia/_tests/wallet/rpc/test_wallet_rpc.py +20 -77
  169. chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +9 -7
  170. chia/_tests/wallet/sync/test_wallet_sync.py +79 -31
  171. chia/_tests/wallet/test_clvm_streamable.py +2 -2
  172. chia/_tests/wallet/test_coin_management.py +7 -7
  173. chia/_tests/wallet/test_coin_selection.py +20 -2
  174. chia/_tests/wallet/test_conditions.py +2 -2
  175. chia/_tests/wallet/test_debug_spend_bundle.py +2 -2
  176. chia/_tests/wallet/test_new_wallet_protocol.py +2 -2
  177. chia/_tests/wallet/test_nft_store.py +2 -2
  178. chia/_tests/wallet/test_notifications.py +2 -2
  179. chia/_tests/wallet/test_puzzle_store.py +2 -2
  180. chia/_tests/wallet/test_sign_coin_spends.py +2 -2
  181. chia/_tests/wallet/test_signer_protocol.py +3 -3
  182. chia/_tests/wallet/test_singleton.py +3 -11
  183. chia/_tests/wallet/test_singleton_lifecycle_fast.py +12 -13
  184. chia/_tests/wallet/test_singleton_store.py +2 -4
  185. chia/_tests/wallet/test_transaction_store.py +2 -2
  186. chia/_tests/wallet/test_util.py +2 -2
  187. chia/_tests/wallet/test_wallet.py +53 -49
  188. chia/_tests/wallet/test_wallet_action_scope.py +24 -6
  189. chia/_tests/wallet/test_wallet_blockchain.py +1 -1
  190. chia/_tests/wallet/test_wallet_coin_store.py +2 -2
  191. chia/_tests/wallet/test_wallet_interested_store.py +2 -2
  192. chia/_tests/wallet/test_wallet_node.py +3 -3
  193. chia/_tests/wallet/test_wallet_retry.py +3 -3
  194. chia/_tests/wallet/test_wallet_state_manager.py +8 -8
  195. chia/_tests/wallet/test_wallet_test_framework.py +1 -1
  196. chia/_tests/wallet/test_wallet_trade_store.py +2 -2
  197. chia/_tests/wallet/test_wallet_utils.py +2 -2
  198. chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -2
  199. chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +15 -15
  200. chia/_tests/wallet/vc_wallet/test_vc_wallet.py +5 -3
  201. chia/_tests/wallet/wallet_block_tools.py +15 -7
  202. chia/_tests/weight_proof/test_weight_proof.py +3 -3
  203. chia/cmds/chia.py +0 -2
  204. chia/cmds/cmd_classes.py +3 -3
  205. chia/cmds/cmd_helpers.py +4 -4
  206. chia/cmds/cmds_util.py +2 -2
  207. chia/cmds/coin_funcs.py +3 -2
  208. chia/cmds/coins.py +1 -1
  209. chia/cmds/data.py +2 -2
  210. chia/cmds/data_funcs.py +3 -2
  211. chia/cmds/db_upgrade_func.py +2 -2
  212. chia/cmds/db_validate_func.py +15 -8
  213. chia/cmds/farm.py +2 -4
  214. chia/cmds/keys.py +0 -2
  215. chia/cmds/keys_funcs.py +1 -1
  216. chia/cmds/netspace_funcs.py +2 -1
  217. chia/cmds/param_types.py +2 -2
  218. chia/cmds/plotnft.py +2 -2
  219. chia/cmds/plotnft_funcs.py +2 -2
  220. chia/cmds/rpc.py +1 -1
  221. chia/cmds/show.py +1 -2
  222. chia/cmds/show_funcs.py +6 -3
  223. chia/cmds/signer.py +1 -2
  224. chia/cmds/sim.py +1 -2
  225. chia/cmds/sim_funcs.py +2 -2
  226. chia/cmds/wallet.py +2 -2
  227. chia/cmds/wallet_funcs.py +4 -11
  228. chia/consensus/block_body_validation.py +3 -4
  229. chia/consensus/block_creation.py +10 -6
  230. chia/consensus/block_header_validation.py +3 -4
  231. chia/consensus/block_record.py +2 -3
  232. chia/consensus/block_rewards.py +1 -1
  233. chia/consensus/blockchain.py +20 -17
  234. chia/consensus/blockchain_interface.py +5 -4
  235. chia/consensus/coinbase.py +2 -2
  236. chia/consensus/constants.py +1 -1
  237. chia/consensus/cost_calculator.py +2 -1
  238. chia/consensus/default_constants.py +4 -3
  239. chia/consensus/deficit.py +3 -2
  240. chia/consensus/difficulty_adjustment.py +8 -9
  241. chia/consensus/find_fork_point.py +4 -3
  242. chia/consensus/full_block_to_block_record.py +4 -3
  243. chia/consensus/get_block_challenge.py +4 -3
  244. chia/consensus/get_block_generator.py +3 -2
  245. chia/consensus/make_sub_epoch_summary.py +3 -2
  246. chia/consensus/multiprocess_validation.py +9 -4
  247. chia/consensus/pos_quality.py +1 -1
  248. chia/consensus/pot_iterations.py +4 -3
  249. chia/consensus/vdf_info_computation.py +4 -3
  250. chia/daemon/client.py +1 -1
  251. chia/daemon/keychain_server.py +1 -1
  252. chia/daemon/server.py +1 -1
  253. chia/daemon/windows_signal.py +1 -1
  254. chia/data_layer/data_layer.py +4 -3
  255. chia/data_layer/data_layer_errors.py +1 -1
  256. chia/data_layer/data_layer_util.py +2 -2
  257. chia/data_layer/data_layer_wallet.py +47 -69
  258. chia/data_layer/data_store.py +1 -1
  259. chia/data_layer/dl_wallet_store.py +5 -6
  260. chia/data_layer/download_data.py +1 -1
  261. chia/data_layer/s3_plugin_service.py +4 -4
  262. chia/data_layer/singleton_record.py +23 -0
  263. chia/data_layer/util/benchmark.py +2 -1
  264. chia/farmer/farmer.py +4 -6
  265. chia/farmer/farmer_api.py +4 -6
  266. chia/full_node/bitcoin_fee_estimator.py +2 -1
  267. chia/full_node/block_height_map.py +2 -2
  268. chia/full_node/block_store.py +8 -9
  269. chia/{util → full_node}/check_fork_next_block.py +2 -1
  270. chia/full_node/coin_store.py +10 -10
  271. chia/full_node/fee_estimate.py +2 -1
  272. chia/full_node/fee_estimation.py +2 -1
  273. chia/full_node/fee_estimator.py +2 -1
  274. chia/full_node/fee_estimator_interface.py +1 -1
  275. chia/full_node/fee_history.py +2 -1
  276. chia/full_node/fee_tracker.py +2 -1
  277. chia/full_node/full_node.py +25 -15
  278. chia/full_node/full_node_api.py +12 -32
  279. chia/full_node/full_node_store.py +4 -3
  280. chia/full_node/hint_management.py +2 -1
  281. chia/full_node/hint_store.py +3 -3
  282. chia/full_node/mempool.py +80 -12
  283. chia/full_node/mempool_check_conditions.py +6 -7
  284. chia/full_node/mempool_manager.py +168 -21
  285. chia/full_node/pending_tx_cache.py +2 -2
  286. chia/full_node/subscriptions.py +2 -2
  287. chia/full_node/sync_store.py +2 -3
  288. chia/full_node/tx_processing_queue.py +2 -1
  289. chia/full_node/weight_proof.py +5 -8
  290. chia/harvester/harvester.py +5 -3
  291. chia/harvester/harvester_api.py +2 -2
  292. chia/introducer/introducer.py +30 -2
  293. chia/introducer/introducer_api.py +9 -1
  294. chia/legacy/keyring.py +1 -2
  295. chia/plot_sync/exceptions.py +2 -1
  296. chia/plot_sync/receiver.py +2 -2
  297. chia/plot_sync/sender.py +1 -1
  298. chia/plotting/cache.py +2 -2
  299. chia/plotting/check_plots.py +4 -2
  300. chia/plotting/create_plots.py +1 -1
  301. chia/plotting/manager.py +3 -3
  302. chia/plotting/util.py +2 -2
  303. chia/pools/pool_config.py +1 -1
  304. chia/pools/pool_puzzles.py +23 -17
  305. chia/pools/pool_wallet.py +22 -9
  306. chia/pools/pool_wallet_info.py +2 -2
  307. chia/protocols/farmer_protocol.py +3 -6
  308. chia/protocols/full_node_protocol.py +3 -2
  309. chia/protocols/harvester_protocol.py +3 -4
  310. chia/protocols/pool_protocol.py +2 -2
  311. chia/protocols/shared_protocol.py +2 -1
  312. chia/protocols/timelord_protocol.py +4 -4
  313. chia/protocols/wallet_protocol.py +2 -2
  314. chia/rpc/data_layer_rpc_api.py +3 -4
  315. chia/rpc/data_layer_rpc_client.py +3 -2
  316. chia/rpc/farmer_rpc_api.py +2 -2
  317. chia/rpc/farmer_rpc_client.py +2 -1
  318. chia/rpc/full_node_rpc_api.py +3 -2
  319. chia/rpc/full_node_rpc_client.py +3 -2
  320. chia/rpc/harvester_rpc_api.py +2 -1
  321. chia/rpc/rpc_client.py +2 -2
  322. chia/rpc/rpc_server.py +1 -1
  323. chia/rpc/wallet_request_types.py +2 -62
  324. chia/rpc/wallet_rpc_api.py +98 -628
  325. chia/rpc/wallet_rpc_client.py +5 -253
  326. chia/seeder/crawl_store.py +1 -1
  327. chia/seeder/crawler.py +2 -2
  328. chia/seeder/peer_record.py +2 -1
  329. chia/seeder/start_crawler.py +3 -1
  330. chia/server/address_manager.py +2 -1
  331. chia/server/address_manager_store.py +1 -1
  332. chia/server/capabilities.py +2 -1
  333. chia/server/introducer_peers.py +2 -1
  334. chia/server/node_discovery.py +1 -1
  335. chia/server/outbound_message.py +2 -1
  336. chia/server/server.py +2 -2
  337. chia/server/start_data_layer.py +2 -1
  338. chia/server/start_farmer.py +3 -1
  339. chia/server/start_full_node.py +4 -2
  340. chia/server/start_harvester.py +3 -1
  341. chia/server/start_introducer.py +12 -1
  342. chia/server/start_service.py +2 -1
  343. chia/server/start_timelord.py +3 -1
  344. chia/server/start_wallet.py +3 -1
  345. chia/server/upnp.py +1 -2
  346. chia/server/ws_connection.py +3 -4
  347. chia/simulator/add_blocks_in_batches.py +5 -3
  348. chia/simulator/block_tools.py +16 -12
  349. chia/simulator/full_node_simulator.py +9 -14
  350. chia/simulator/setup_services.py +5 -3
  351. chia/simulator/simulator_full_node_rpc_api.py +3 -2
  352. chia/simulator/simulator_full_node_rpc_client.py +3 -2
  353. chia/simulator/simulator_protocol.py +3 -2
  354. chia/simulator/simulator_test_tools.py +2 -2
  355. chia/simulator/start_simulator.py +3 -2
  356. chia/simulator/wallet_tools.py +3 -4
  357. chia/timelord/iters_from_block.py +4 -4
  358. chia/timelord/timelord.py +7 -12
  359. chia/timelord/timelord_api.py +3 -3
  360. chia/timelord/timelord_state.py +4 -3
  361. chia/types/block_protocol.py +2 -2
  362. chia/types/blockchain_format/coin.py +2 -2
  363. chia/types/blockchain_format/program.py +1 -1
  364. chia/types/blockchain_format/proof_of_space.py +3 -4
  365. chia/types/blockchain_format/tree_hash.py +1 -1
  366. chia/types/blockchain_format/vdf.py +3 -4
  367. chia/types/clvm_cost.py +1 -1
  368. chia/types/coin_record.py +4 -3
  369. chia/types/coin_spend.py +1 -1
  370. chia/types/eligible_coin_spends.py +9 -5
  371. chia/types/fee_rate.py +1 -1
  372. chia/types/generator_types.py +3 -3
  373. chia/types/internal_mempool_item.py +3 -2
  374. chia/types/mempool_item.py +10 -3
  375. chia/types/mempool_submission_status.py +2 -1
  376. chia/types/mojos.py +1 -1
  377. chia/types/peer_info.py +2 -1
  378. chia/types/transaction_queue_entry.py +2 -1
  379. chia/types/unfinished_header_block.py +4 -4
  380. chia/types/validation_state.py +2 -1
  381. chia/types/weight_proof.py +1 -9
  382. chia/util/augmented_chain.py +20 -9
  383. chia/util/block_cache.py +8 -4
  384. chia/util/condition_tools.py +2 -2
  385. chia/util/full_block_utils.py +3 -4
  386. chia/util/generator_tools.py +2 -2
  387. chia/util/initial-config.yaml +2 -11
  388. chia/util/network.py +2 -2
  389. chia/util/prev_transaction_block.py +2 -1
  390. chia/util/task_timing.py +1 -1
  391. chia/util/vdf_prover.py +3 -3
  392. chia/util/ws_message.py +1 -1
  393. chia/wallet/cat_wallet/cat_info.py +3 -2
  394. chia/wallet/cat_wallet/cat_outer_puzzle.py +3 -2
  395. chia/wallet/cat_wallet/cat_utils.py +6 -4
  396. chia/wallet/cat_wallet/cat_wallet.py +16 -18
  397. chia/wallet/cat_wallet/lineage_store.py +2 -1
  398. chia/wallet/coin_selection.py +5 -5
  399. chia/wallet/conditions.py +22 -16
  400. chia/wallet/db_wallet/db_wallet_puzzles.py +15 -15
  401. chia/wallet/derivation_record.py +2 -2
  402. chia/wallet/derive_keys.py +2 -2
  403. chia/wallet/did_wallet/did_info.py +3 -2
  404. chia/wallet/did_wallet/did_wallet.py +41 -19
  405. chia/wallet/did_wallet/did_wallet_puzzles.py +18 -12
  406. chia/wallet/driver_protocol.py +1 -1
  407. chia/wallet/lineage_proof.py +3 -2
  408. chia/wallet/nft_wallet/metadata_outer_puzzle.py +6 -7
  409. chia/wallet/nft_wallet/nft_info.py +5 -5
  410. chia/wallet/nft_wallet/nft_puzzle_utils.py +293 -0
  411. chia/wallet/nft_wallet/nft_puzzles.py +21 -298
  412. chia/wallet/nft_wallet/nft_wallet.py +47 -62
  413. chia/wallet/nft_wallet/ownership_outer_puzzle.py +4 -8
  414. chia/wallet/nft_wallet/singleton_outer_puzzle.py +3 -2
  415. chia/wallet/nft_wallet/transfer_program_puzzle.py +6 -10
  416. chia/wallet/nft_wallet/uncurry_nft.py +6 -8
  417. chia/wallet/notification_manager.py +5 -5
  418. chia/wallet/notification_store.py +3 -2
  419. chia/wallet/outer_puzzles.py +2 -1
  420. chia/wallet/puzzles/clawback/drivers.py +21 -8
  421. chia/wallet/puzzles/clawback/metadata.py +3 -2
  422. chia/wallet/puzzles/clawback/puzzle_decorator.py +5 -4
  423. chia/wallet/puzzles/deployed_puzzle_hashes.json +0 -10
  424. chia/wallet/puzzles/p2_conditions.py +3 -2
  425. chia/wallet/puzzles/p2_delegated_conditions.py +3 -2
  426. chia/wallet/puzzles/p2_delegated_puzzle.py +3 -2
  427. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +3 -3
  428. chia/wallet/puzzles/p2_m_of_n_delegate_direct.py +3 -2
  429. chia/wallet/puzzles/p2_puzzle_hash.py +4 -3
  430. chia/wallet/puzzles/puzzle_utils.py +3 -2
  431. chia/wallet/puzzles/singleton_top_layer.py +26 -10
  432. chia/wallet/puzzles/singleton_top_layer_v1_1.py +21 -9
  433. chia/wallet/puzzles/tails.py +21 -129
  434. chia/wallet/signer_protocol.py +3 -2
  435. chia/wallet/singleton.py +12 -6
  436. chia/wallet/singleton_record.py +3 -2
  437. chia/wallet/trade_manager.py +31 -55
  438. chia/wallet/trade_record.py +3 -2
  439. chia/wallet/trading/offer.py +14 -13
  440. chia/wallet/trading/trade_store.py +3 -4
  441. chia/wallet/transaction_record.py +2 -2
  442. chia/wallet/util/blind_signer_tl.py +3 -2
  443. chia/wallet/util/compute_hints.py +3 -2
  444. chia/wallet/util/compute_memos.py +2 -2
  445. chia/wallet/util/curry_and_treehash.py +1 -2
  446. chia/wallet/util/merkle_tree.py +1 -1
  447. chia/wallet/util/merkle_utils.py +1 -1
  448. chia/wallet/util/new_peak_queue.py +2 -1
  449. chia/wallet/util/notifications.py +5 -4
  450. chia/wallet/util/peer_request_cache.py +3 -2
  451. chia/wallet/util/puzzle_compression.py +6 -4
  452. chia/wallet/util/puzzle_decorator.py +6 -4
  453. chia/wallet/util/query_filter.py +3 -2
  454. chia/wallet/util/tx_config.py +3 -3
  455. chia/wallet/util/wallet_sync_utils.py +2 -2
  456. chia/wallet/util/wallet_types.py +2 -3
  457. chia/wallet/vc_wallet/cr_cat_drivers.py +18 -22
  458. chia/wallet/vc_wallet/cr_cat_wallet.py +14 -10
  459. chia/wallet/vc_wallet/cr_outer_puzzle.py +2 -2
  460. chia/wallet/vc_wallet/vc_drivers.py +50 -68
  461. chia/wallet/vc_wallet/vc_store.py +2 -2
  462. chia/wallet/vc_wallet/vc_wallet.py +47 -15
  463. chia/wallet/wallet.py +51 -46
  464. chia/wallet/wallet_action_scope.py +4 -0
  465. chia/wallet/wallet_blockchain.py +12 -7
  466. chia/wallet/wallet_coin_record.py +3 -2
  467. chia/wallet/wallet_coin_store.py +3 -2
  468. chia/wallet/wallet_info.py +2 -1
  469. chia/wallet/wallet_interested_store.py +3 -2
  470. chia/wallet/wallet_nft_store.py +4 -4
  471. chia/wallet/wallet_node.py +3 -4
  472. chia/wallet/wallet_pool_store.py +3 -4
  473. chia/wallet/wallet_protocol.py +19 -5
  474. chia/wallet/wallet_puzzle_store.py +2 -2
  475. chia/wallet/wallet_retry_store.py +3 -6
  476. chia/wallet/wallet_singleton_store.py +2 -2
  477. chia/wallet/wallet_state_manager.py +20 -197
  478. chia/wallet/wallet_transaction_store.py +2 -2
  479. chia/wallet/wallet_user_store.py +2 -1
  480. chia/wallet/wallet_weight_proof_handler.py +3 -2
  481. {chia_blockchain-2.5.2rc1.dist-info → chia_blockchain-2.5.3.dist-info}/METADATA +3 -2
  482. chia_blockchain-2.5.3.dist-info/RECORD +891 -0
  483. mozilla-ca/cacert.pem +64 -33
  484. chia/_tests/clvm/test_condition_codes.py +0 -13
  485. chia/_tests/cmds/wallet/test_dao.py +0 -565
  486. chia/_tests/wallet/dao_wallet/__init__.py +0 -0
  487. chia/_tests/wallet/dao_wallet/config.py +0 -3
  488. chia/_tests/wallet/dao_wallet/test_dao_clvm.py +0 -1330
  489. chia/_tests/wallet/dao_wallet/test_dao_wallets.py +0 -3488
  490. chia/cmds/dao.py +0 -1064
  491. chia/cmds/dao_funcs.py +0 -598
  492. chia/consensus/puzzles/__init__.py +0 -0
  493. chia/consensus/puzzles/chialisp_deserialisation.clsp +0 -69
  494. chia/consensus/puzzles/chialisp_deserialisation.clsp.hex +0 -1
  495. chia/consensus/puzzles/rom_bootstrap_generator.clsp +0 -37
  496. chia/consensus/puzzles/rom_bootstrap_generator.clsp.hex +0 -1
  497. chia/full_node/puzzles/__init__.py +0 -0
  498. chia/full_node/puzzles/block_program_zero.clsp +0 -14
  499. chia/full_node/puzzles/block_program_zero.clsp.hex +0 -1
  500. chia/full_node/puzzles/decompress_coin_spend_entry.clsp +0 -5
  501. chia/full_node/puzzles/decompress_coin_spend_entry.clsp.hex +0 -1
  502. chia/full_node/puzzles/decompress_coin_spend_entry_with_prefix.clsp +0 -7
  503. chia/full_node/puzzles/decompress_coin_spend_entry_with_prefix.clsp.hex +0 -1
  504. chia/full_node/puzzles/decompress_puzzle.clsp +0 -6
  505. chia/full_node/puzzles/decompress_puzzle.clsp.hex +0 -1
  506. chia/pools/puzzles/__init__.py +0 -0
  507. chia/pools/puzzles/pool_member_innerpuz.clsp +0 -70
  508. chia/pools/puzzles/pool_member_innerpuz.clsp.hex +0 -1
  509. chia/pools/puzzles/pool_waitingroom_innerpuz.clsp +0 -69
  510. chia/pools/puzzles/pool_waitingroom_innerpuz.clsp.hex +0 -1
  511. chia/simulator/simulator_constants.py +0 -13
  512. chia/types/blockchain_format/foliage.py +0 -8
  513. chia/types/blockchain_format/pool_target.py +0 -5
  514. chia/types/blockchain_format/reward_chain_block.py +0 -6
  515. chia/types/blockchain_format/sized_bytes.py +0 -11
  516. chia/util/ints.py +0 -19
  517. chia/wallet/cat_wallet/dao_cat_info.py +0 -28
  518. chia/wallet/cat_wallet/dao_cat_wallet.py +0 -669
  519. chia/wallet/cat_wallet/puzzles/__init__.py +0 -0
  520. chia/wallet/cat_wallet/puzzles/cat_truths.clib +0 -31
  521. chia/wallet/cat_wallet/puzzles/cat_v2.clsp +0 -397
  522. chia/wallet/cat_wallet/puzzles/cat_v2.clsp.hex +0 -1
  523. chia/wallet/cat_wallet/puzzles/delegated_tail.clsp +0 -25
  524. chia/wallet/cat_wallet/puzzles/delegated_tail.clsp.hex +0 -1
  525. chia/wallet/cat_wallet/puzzles/everything_with_signature.clsp +0 -15
  526. chia/wallet/cat_wallet/puzzles/everything_with_signature.clsp.hex +0 -1
  527. chia/wallet/cat_wallet/puzzles/genesis_by_coin_id.clsp +0 -26
  528. chia/wallet/cat_wallet/puzzles/genesis_by_coin_id.clsp.hex +0 -1
  529. chia/wallet/cat_wallet/puzzles/genesis_by_coin_id_or_singleton.clsp +0 -42
  530. chia/wallet/cat_wallet/puzzles/genesis_by_coin_id_or_singleton.clsp.hex +0 -1
  531. chia/wallet/cat_wallet/puzzles/genesis_by_puzzle_hash.clsp +0 -24
  532. chia/wallet/cat_wallet/puzzles/genesis_by_puzzle_hash.clsp.hex +0 -1
  533. chia/wallet/dao_wallet/__init__.py +0 -0
  534. chia/wallet/dao_wallet/dao_info.py +0 -61
  535. chia/wallet/dao_wallet/dao_utils.py +0 -811
  536. chia/wallet/dao_wallet/dao_wallet.py +0 -2119
  537. chia/wallet/did_wallet/puzzles/__init__.py +0 -0
  538. chia/wallet/did_wallet/puzzles/did_innerpuz.clsp +0 -135
  539. chia/wallet/did_wallet/puzzles/did_innerpuz.clsp.hex +0 -1
  540. chia/wallet/payment.py +0 -33
  541. chia/wallet/puzzles/augmented_condition.clsp +0 -13
  542. chia/wallet/puzzles/augmented_condition.clsp.hex +0 -1
  543. chia/wallet/puzzles/condition_codes.clib +0 -77
  544. chia/wallet/puzzles/curry-and-treehash.clib +0 -102
  545. chia/wallet/puzzles/curry.clib +0 -135
  546. chia/wallet/puzzles/curry_by_index.clib +0 -16
  547. chia/wallet/puzzles/dao_cat_eve.clsp +0 -17
  548. chia/wallet/puzzles/dao_cat_eve.clsp.hex +0 -1
  549. chia/wallet/puzzles/dao_cat_launcher.clsp +0 -36
  550. chia/wallet/puzzles/dao_cat_launcher.clsp.hex +0 -1
  551. chia/wallet/puzzles/dao_finished_state.clsp +0 -35
  552. chia/wallet/puzzles/dao_finished_state.clsp.hex +0 -1
  553. chia/wallet/puzzles/dao_finished_state.clsp.hex.sha256tree +0 -1
  554. chia/wallet/puzzles/dao_lockup.clsp +0 -288
  555. chia/wallet/puzzles/dao_lockup.clsp.hex +0 -1
  556. chia/wallet/puzzles/dao_lockup.clsp.hex.sha256tree +0 -1
  557. chia/wallet/puzzles/dao_proposal.clsp +0 -377
  558. chia/wallet/puzzles/dao_proposal.clsp.hex +0 -1
  559. chia/wallet/puzzles/dao_proposal.clsp.hex.sha256tree +0 -1
  560. chia/wallet/puzzles/dao_proposal_timer.clsp +0 -78
  561. chia/wallet/puzzles/dao_proposal_timer.clsp.hex +0 -1
  562. chia/wallet/puzzles/dao_proposal_timer.clsp.hex.sha256tree +0 -1
  563. chia/wallet/puzzles/dao_proposal_validator.clsp +0 -87
  564. chia/wallet/puzzles/dao_proposal_validator.clsp.hex +0 -1
  565. chia/wallet/puzzles/dao_proposal_validator.clsp.hex.sha256tree +0 -1
  566. chia/wallet/puzzles/dao_spend_p2_singleton_v2.clsp +0 -240
  567. chia/wallet/puzzles/dao_spend_p2_singleton_v2.clsp.hex +0 -1
  568. chia/wallet/puzzles/dao_spend_p2_singleton_v2.clsp.hex.sha256tree +0 -1
  569. chia/wallet/puzzles/dao_treasury.clsp +0 -115
  570. chia/wallet/puzzles/dao_treasury.clsp.hex +0 -1
  571. chia/wallet/puzzles/dao_update_proposal.clsp +0 -44
  572. chia/wallet/puzzles/dao_update_proposal.clsp.hex +0 -1
  573. chia/wallet/puzzles/json.clib +0 -25
  574. chia/wallet/puzzles/merkle_utils.clib +0 -18
  575. chia/wallet/puzzles/notification.clsp +0 -7
  576. chia/wallet/puzzles/notification.clsp.hex +0 -1
  577. chia/wallet/puzzles/p2_1_of_n.clsp +0 -22
  578. chia/wallet/puzzles/p2_1_of_n.clsp.hex +0 -1
  579. chia/wallet/puzzles/p2_conditions.clsp +0 -3
  580. chia/wallet/puzzles/p2_conditions.clsp.hex +0 -1
  581. chia/wallet/puzzles/p2_delegated_conditions.clsp +0 -18
  582. chia/wallet/puzzles/p2_delegated_conditions.clsp.hex +0 -1
  583. chia/wallet/puzzles/p2_delegated_puzzle.clsp +0 -19
  584. chia/wallet/puzzles/p2_delegated_puzzle.clsp.hex +0 -1
  585. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.clsp +0 -91
  586. chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.clsp.hex +0 -1
  587. chia/wallet/puzzles/p2_m_of_n_delegate_direct.clsp +0 -108
  588. chia/wallet/puzzles/p2_m_of_n_delegate_direct.clsp.hex +0 -1
  589. chia/wallet/puzzles/p2_parent.clsp +0 -19
  590. chia/wallet/puzzles/p2_parent.clsp.hex +0 -1
  591. chia/wallet/puzzles/p2_puzzle_hash.clsp +0 -18
  592. chia/wallet/puzzles/p2_puzzle_hash.clsp.hex +0 -1
  593. chia/wallet/puzzles/p2_singleton.clsp +0 -30
  594. chia/wallet/puzzles/p2_singleton.clsp.hex +0 -1
  595. chia/wallet/puzzles/p2_singleton_aggregator.clsp +0 -81
  596. chia/wallet/puzzles/p2_singleton_aggregator.clsp.hex +0 -1
  597. chia/wallet/puzzles/p2_singleton_or_delayed_puzhash.clsp +0 -50
  598. chia/wallet/puzzles/p2_singleton_or_delayed_puzhash.clsp.hex +0 -1
  599. chia/wallet/puzzles/p2_singleton_via_delegated_puzzle.clsp +0 -47
  600. chia/wallet/puzzles/p2_singleton_via_delegated_puzzle.clsp.hex +0 -1
  601. chia/wallet/puzzles/settlement_payments.clsp +0 -49
  602. chia/wallet/puzzles/settlement_payments.clsp.hex +0 -1
  603. chia/wallet/puzzles/sha256tree.clib +0 -11
  604. chia/wallet/puzzles/singleton_launcher.clsp +0 -16
  605. chia/wallet/puzzles/singleton_launcher.clsp.hex +0 -1
  606. chia/wallet/puzzles/singleton_top_layer.clsp +0 -177
  607. chia/wallet/puzzles/singleton_top_layer.clsp.hex +0 -1
  608. chia/wallet/puzzles/singleton_top_layer_v1_1.clsp +0 -107
  609. chia/wallet/puzzles/singleton_top_layer_v1_1.clsp.hex +0 -1
  610. chia/wallet/puzzles/singleton_truths.clib +0 -21
  611. chia/wallet/vc_wallet/cr_puzzles/__init__.py +0 -0
  612. chia/wallet/vc_wallet/cr_puzzles/conditions_w_fee_announce.clsp +0 -3
  613. chia/wallet/vc_wallet/cr_puzzles/conditions_w_fee_announce.clsp.hex +0 -1
  614. chia/wallet/vc_wallet/cr_puzzles/credential_restriction.clsp +0 -304
  615. chia/wallet/vc_wallet/cr_puzzles/credential_restriction.clsp.hex +0 -1
  616. chia/wallet/vc_wallet/cr_puzzles/flag_proofs_checker.clsp +0 -45
  617. chia/wallet/vc_wallet/cr_puzzles/flag_proofs_checker.clsp.hex +0 -1
  618. chia/wallet/vc_wallet/vc_puzzles/__init__.py +0 -0
  619. chia/wallet/vc_wallet/vc_puzzles/covenant_layer.clsp +0 -30
  620. chia/wallet/vc_wallet/vc_puzzles/covenant_layer.clsp.hex +0 -1
  621. chia/wallet/vc_wallet/vc_puzzles/eml_covenant_morpher.clsp +0 -75
  622. chia/wallet/vc_wallet/vc_puzzles/eml_covenant_morpher.clsp.hex +0 -1
  623. chia/wallet/vc_wallet/vc_puzzles/eml_transfer_program_covenant_adapter.clsp +0 -32
  624. chia/wallet/vc_wallet/vc_puzzles/eml_transfer_program_covenant_adapter.clsp.hex +0 -1
  625. chia/wallet/vc_wallet/vc_puzzles/eml_update_metadata_with_DID.clsp +0 -80
  626. chia/wallet/vc_wallet/vc_puzzles/eml_update_metadata_with_DID.clsp.hex +0 -1
  627. chia/wallet/vc_wallet/vc_puzzles/exigent_metadata_layer.clsp +0 -163
  628. chia/wallet/vc_wallet/vc_puzzles/exigent_metadata_layer.clsp.hex +0 -1
  629. chia/wallet/vc_wallet/vc_puzzles/p2_announced_delegated_puzzle.clsp +0 -16
  630. chia/wallet/vc_wallet/vc_puzzles/p2_announced_delegated_puzzle.clsp.hex +0 -1
  631. chia/wallet/vc_wallet/vc_puzzles/standard_vc_backdoor_puzzle.clsp +0 -74
  632. chia/wallet/vc_wallet/vc_puzzles/standard_vc_backdoor_puzzle.clsp.hex +0 -1
  633. chia/wallet/vc_wallet/vc_puzzles/std_parent_morpher.clsp +0 -23
  634. chia/wallet/vc_wallet/vc_puzzles/std_parent_morpher.clsp.hex +0 -1
  635. chia/wallet/vc_wallet/vc_puzzles/viral_backdoor.clsp +0 -64
  636. chia/wallet/vc_wallet/vc_puzzles/viral_backdoor.clsp.hex +0 -1
  637. chia_blockchain-2.5.2rc1.dist-info/RECORD +0 -1042
  638. {chia_blockchain-2.5.2rc1.dist-info → chia_blockchain-2.5.3.dist-info}/LICENSE +0 -0
  639. {chia_blockchain-2.5.2rc1.dist-info → chia_blockchain-2.5.3.dist-info}/WHEEL +0 -0
  640. {chia_blockchain-2.5.2rc1.dist-info → chia_blockchain-2.5.3.dist-info}/entry_points.txt +0 -0
chia/cmds/dao_funcs.py DELETED
@@ -1,598 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import asyncio
4
- import json
5
- import pathlib
6
- import time
7
- from decimal import Decimal
8
- from typing import Optional
9
-
10
- from chia.cmds.cmds_util import CMDTXConfigLoader, get_wallet_client, transaction_status_msg, transaction_submitted_msg
11
- from chia.cmds.param_types import CliAmount
12
- from chia.cmds.units import units
13
- from chia.cmds.wallet_funcs import get_mojo_per_unit, get_wallet_type
14
- from chia.types.blockchain_format.sized_bytes import bytes32
15
- from chia.util.bech32m import decode_puzzle_hash, encode_puzzle_hash
16
- from chia.util.config import selected_network_address_prefix
17
- from chia.util.ints import uint64
18
- from chia.wallet.conditions import ConditionValidTimes
19
- from chia.wallet.transaction_record import TransactionRecord
20
- from chia.wallet.util.tx_config import DEFAULT_COIN_SELECTION_CONFIG
21
- from chia.wallet.util.wallet_types import WalletType
22
-
23
-
24
- async def add_dao_wallet(
25
- root_path: pathlib.Path,
26
- wallet_rpc_port: Optional[int],
27
- fp: int,
28
- name: Optional[str],
29
- treasury_id: bytes32,
30
- filter_amount: uint64,
31
- ) -> None:
32
- print(f"Adding wallet for DAO: {treasury_id}")
33
- print("This may take awhile.")
34
-
35
- async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
36
- res = await wallet_client.create_new_dao_wallet(
37
- mode="existing",
38
- tx_config=CMDTXConfigLoader(reuse_puzhash=True).to_tx_config(units["chia"], config, fingerprint),
39
- dao_rules=None,
40
- amount_of_cats=None,
41
- treasury_id=treasury_id,
42
- filter_amount=filter_amount,
43
- name=name,
44
- )
45
-
46
- print("Successfully created DAO Wallet")
47
- print(f"DAO Treasury ID: {res.treasury_id.hex()}")
48
- print(f"DAO Wallet ID: {res.wallet_id}")
49
- print(f"CAT Wallet ID: {res.cat_wallet_id}")
50
- print(f"DAOCAT Wallet ID: {res.dao_cat_wallet_id}")
51
-
52
-
53
- async def create_dao_wallet(
54
- root_path: pathlib.Path,
55
- wallet_rpc_port: Optional[int],
56
- fp: int,
57
- fee: uint64,
58
- fee_for_cat: uint64,
59
- name: Optional[str],
60
- proposal_timelock: uint64,
61
- soft_close: uint64,
62
- attendance_required: uint64,
63
- pass_percentage: uint64,
64
- self_destruct: uint64,
65
- oracle_delay: uint64,
66
- proposal_minimum: uint64,
67
- filter_amount: uint64,
68
- cat_amount: CliAmount,
69
- cli_tx_config: CMDTXConfigLoader,
70
- push: bool,
71
- condition_valid_times: ConditionValidTimes,
72
- ) -> list[TransactionRecord]:
73
- if proposal_minimum % 2 == 0:
74
- proposal_minimum = uint64(1 + proposal_minimum)
75
- print("Adding 1 mojo to proposal minimum amount")
76
-
77
- dao_rules = {
78
- "proposal_timelock": proposal_timelock,
79
- "soft_close_length": soft_close,
80
- "attendance_required": attendance_required,
81
- "pass_percentage": pass_percentage,
82
- "self_destruct_length": self_destruct,
83
- "oracle_spend_delay": oracle_delay,
84
- "proposal_minimum_amount": proposal_minimum,
85
- }
86
-
87
- async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
88
- conf_coins, _, _ = await wallet_client.get_spendable_coins(
89
- wallet_id=1, coin_selection_config=DEFAULT_COIN_SELECTION_CONFIG
90
- )
91
- if len(conf_coins) < 2: # pragma: no cover
92
- raise ValueError("DAO creation requires at least 2 xch coins in your wallet.")
93
- res = await wallet_client.create_new_dao_wallet(
94
- mode="new",
95
- dao_rules=dao_rules,
96
- amount_of_cats=cat_amount.convert_amount(units["mojo"]),
97
- treasury_id=None,
98
- filter_amount=filter_amount,
99
- name=name,
100
- fee=fee,
101
- fee_for_cat=fee_for_cat,
102
- tx_config=cli_tx_config.to_tx_config(units["chia"], config, fingerprint),
103
- push=push,
104
- timelock_info=condition_valid_times,
105
- )
106
-
107
- if push:
108
- print("Successfully created DAO Wallet")
109
- print(f"DAO Treasury ID: {res.treasury_id.hex()}")
110
- print(f"DAO Wallet ID: {res.wallet_id}")
111
- print(f"CAT Wallet ID: {res.cat_wallet_id}")
112
- print(f"DAOCAT Wallet ID: {res.dao_cat_wallet_id}")
113
- return res.transactions
114
-
115
-
116
- async def get_treasury_id(root_path: pathlib.Path, wallet_rpc_port: Optional[int], fp: int, wallet_id: int) -> None:
117
- async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, _, _):
118
- res = await wallet_client.dao_get_treasury_id(wallet_id=wallet_id)
119
- treasury_id = res["treasury_id"]
120
- print(f"Treasury ID: {treasury_id}")
121
-
122
-
123
- async def get_rules(root_path: pathlib.Path, wallet_rpc_port: Optional[int], fp: int, wallet_id: int) -> None:
124
- async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, _, _):
125
- res = await wallet_client.dao_get_rules(wallet_id=wallet_id)
126
- rules = res["rules"]
127
- for rule, val in rules.items():
128
- print(f"{rule}: {val}")
129
-
130
-
131
- async def add_funds_to_treasury(
132
- root_path: pathlib.Path,
133
- wallet_rpc_port: Optional[int],
134
- fp: int,
135
- wallet_id: int,
136
- funding_wallet_id: int,
137
- amount: CliAmount,
138
- fee: uint64,
139
- cli_tx_config: CMDTXConfigLoader,
140
- push: bool,
141
- condition_valid_times: ConditionValidTimes,
142
- ) -> list[TransactionRecord]:
143
- async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
144
- try:
145
- typ = await get_wallet_type(wallet_id=funding_wallet_id, wallet_client=wallet_client)
146
- mojo_per_unit = get_mojo_per_unit(typ)
147
- except LookupError: # pragma: no cover
148
- print(f"Wallet id: {wallet_id} not found.")
149
- return []
150
-
151
- res = await wallet_client.dao_add_funds_to_treasury(
152
- wallet_id=wallet_id,
153
- funding_wallet_id=funding_wallet_id,
154
- amount=amount.convert_amount(mojo_per_unit),
155
- fee=fee,
156
- tx_config=cli_tx_config.to_tx_config(units["chia"], config, fingerprint),
157
- push=push,
158
- timelock_info=condition_valid_times,
159
- )
160
-
161
- if push:
162
- start = time.time()
163
- while time.time() - start < 10:
164
- await asyncio.sleep(0.1)
165
- tx = await wallet_client.get_transaction(res.tx_id)
166
- if len(tx.sent_to) > 0:
167
- print(transaction_submitted_msg(tx))
168
- print(transaction_status_msg(fingerprint, res.tx_id))
169
- return res.transactions
170
-
171
- if push:
172
- print(f"Transaction not yet submitted to nodes. TX ID: {res.tx_id.hex()}")
173
- return res.transactions
174
-
175
-
176
- async def get_treasury_balance(
177
- root_path: pathlib.Path, wallet_rpc_port: Optional[int], fp: int, wallet_id: int
178
- ) -> None:
179
- async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, _, _):
180
- res = await wallet_client.dao_get_treasury_balance(wallet_id=wallet_id)
181
- balances = res["balances"]
182
-
183
- if not balances:
184
- print("The DAO treasury currently has no funds")
185
- return None
186
-
187
- xch_mojos = get_mojo_per_unit(WalletType.STANDARD_WALLET)
188
- cat_mojos = get_mojo_per_unit(WalletType.CAT)
189
- for asset_id, balance in balances.items():
190
- if asset_id == "xch":
191
- print(f"XCH: {balance / xch_mojos}")
192
- else:
193
- print(f"{asset_id}: {balance / cat_mojos}")
194
-
195
-
196
- async def list_proposals(
197
- root_path: pathlib.Path, wallet_rpc_port: Optional[int], fp: int, wallet_id: int, include_closed: bool
198
- ) -> None:
199
- async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, _, _):
200
- res = await wallet_client.dao_get_proposals(wallet_id=wallet_id, include_closed=include_closed)
201
- proposals = res["proposals"]
202
- soft_close_length = res["soft_close_length"]
203
- print("############################")
204
- for prop in proposals:
205
- print(f"Proposal ID: {prop['proposal_id']}")
206
- prop_status = "CLOSED" if prop["closed"] else "OPEN"
207
- print(f"Status: {prop_status}")
208
- print(f"Votes for: {prop['yes_votes']}")
209
- votes_against = prop["amount_voted"] - prop["yes_votes"]
210
- print(f"Votes against: {votes_against}")
211
- print("------------------------")
212
- print(f"Proposals have {soft_close_length} blocks of soft close time.")
213
- print("############################")
214
-
215
-
216
- async def show_proposal(
217
- root_path: pathlib.Path, wallet_rpc_port: Optional[int], fp: int, wallet_id: int, proposal_id: str
218
- ) -> None:
219
- async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, _, config):
220
- res = await wallet_client.dao_parse_proposal(wallet_id, proposal_id)
221
- pd = res["proposal_dictionary"]
222
- blocks_needed = pd["state"]["blocks_needed"]
223
- passed = pd["state"]["passed"]
224
- closable = pd["state"]["closable"]
225
- status = "CLOSED" if pd["state"]["closed"] else "OPEN"
226
- votes_needed = pd["state"]["total_votes_needed"]
227
- yes_needed = pd["state"]["yes_votes_needed"]
228
-
229
- ptype_val = pd["proposal_type"]
230
- if (ptype_val == "s") and ("mint_amount" in pd):
231
- ptype = "mint"
232
- elif ptype_val == "s":
233
- ptype = "spend"
234
- elif ptype_val == "u":
235
- ptype = "update"
236
- else:
237
- raise Exception(f"Unknown proposal type: {ptype_val!r}")
238
-
239
- print("")
240
- print(f"Details of Proposal: {proposal_id}")
241
- print("---------------------------")
242
- print("")
243
- print(f"Type: {ptype.upper()}")
244
- print(f"Status: {status}")
245
- print(f"Passed: {passed}")
246
- if not passed:
247
- print(f"Yes votes needed: {yes_needed}")
248
-
249
- if not pd["state"]["closed"]:
250
- print(f"Closable: {closable}")
251
- if not closable:
252
- print(f"Total votes needed: {votes_needed}")
253
- print(f"Blocks remaining: {blocks_needed}")
254
-
255
- prefix = selected_network_address_prefix(config)
256
- if ptype == "spend":
257
- xch_conds = pd["xch_conditions"]
258
- asset_conds = pd["asset_conditions"]
259
- print("")
260
- if xch_conds:
261
- print("Proposal XCH Conditions")
262
- for pmt in xch_conds:
263
- puzzle_hash = encode_puzzle_hash(bytes32.from_hexstr(pmt["puzzle_hash"]), prefix)
264
- amount = pmt["amount"]
265
- print(f"Address: {puzzle_hash}\nAmount: {amount}\n")
266
- if asset_conds:
267
- print("Proposal asset Conditions")
268
- for cond in asset_conds:
269
- asset_id = cond["asset_id"]
270
- print(f"Asset ID: {asset_id}")
271
- conds = cond["conditions"]
272
- for pmt in conds:
273
- puzzle_hash = encode_puzzle_hash(bytes32.from_hexstr(pmt["puzzle_hash"]), prefix)
274
- amount = pmt["amount"]
275
- print(f"Address: {puzzle_hash}\nAmount: {amount}\n")
276
-
277
- elif ptype == "update":
278
- print("")
279
- print("Proposed Rules:")
280
- for key, val in pd["dao_rules"].items():
281
- print(f"{key}: {val}")
282
-
283
- elif ptype == "mint":
284
- mint_amount = pd["mint_amount"]
285
- address = encode_puzzle_hash(bytes32.from_hexstr(pd["new_cat_puzhash"]), prefix)
286
- print("")
287
- print(f"Amount of CAT to mint: {mint_amount}")
288
- print(f"Address: {address}")
289
-
290
-
291
- async def vote_on_proposal(
292
- root_path: pathlib.Path,
293
- wallet_rpc_port: Optional[int],
294
- fp: int,
295
- wallet_id: int,
296
- proposal_id: str,
297
- vote_amount: uint64,
298
- is_yes_vote: bool,
299
- fee: uint64,
300
- cli_tx_config: CMDTXConfigLoader,
301
- push: bool,
302
- condition_valid_times: ConditionValidTimes,
303
- ) -> list[TransactionRecord]:
304
- async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
305
- res = await wallet_client.dao_vote_on_proposal(
306
- wallet_id=wallet_id,
307
- proposal_id=proposal_id,
308
- vote_amount=vote_amount,
309
- is_yes_vote=is_yes_vote,
310
- fee=fee,
311
- tx_config=cli_tx_config.to_tx_config(units["chia"], config, fingerprint),
312
- push=push,
313
- timelock_info=condition_valid_times,
314
- )
315
- if push:
316
- start = time.time()
317
- while time.time() - start < 10:
318
- await asyncio.sleep(0.1)
319
- tx = await wallet_client.get_transaction(res.tx_id)
320
- if len(tx.sent_to) > 0:
321
- print(transaction_submitted_msg(tx))
322
- print(transaction_status_msg(fingerprint, res.tx_id))
323
- return res.transactions
324
-
325
- if push:
326
- print(f"Transaction not yet submitted to nodes. TX ID: {res.tx_id.hex()}")
327
- return res.transactions
328
-
329
-
330
- async def close_proposal(
331
- root_path: pathlib.Path,
332
- wallet_rpc_port: Optional[int],
333
- fp: int,
334
- wallet_id: int,
335
- fee: uint64,
336
- proposal_id: str,
337
- self_destruct: bool,
338
- cli_tx_config: CMDTXConfigLoader,
339
- push: bool,
340
- condition_valid_times: ConditionValidTimes,
341
- ) -> list[TransactionRecord]:
342
- async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
343
- res = await wallet_client.dao_close_proposal(
344
- wallet_id=wallet_id,
345
- proposal_id=proposal_id,
346
- fee=fee,
347
- self_destruct=self_destruct,
348
- tx_config=cli_tx_config.to_tx_config(units["chia"], config, fingerprint),
349
- push=push,
350
- timelock_info=condition_valid_times,
351
- )
352
-
353
- if push:
354
- start = time.time()
355
- while time.time() - start < 10:
356
- await asyncio.sleep(0.1)
357
- tx = await wallet_client.get_transaction(res.tx_id)
358
- if len(tx.sent_to) > 0:
359
- print(transaction_submitted_msg(tx))
360
- print(transaction_status_msg(fingerprint, res.tx_id))
361
- return res.transactions
362
-
363
- if push:
364
- print(f"Transaction not yet submitted to nodes. TX ID: {res.tx_id.hex()}")
365
- return res.transactions
366
-
367
-
368
- async def lockup_coins(
369
- root_path: pathlib.Path,
370
- wallet_rpc_port: Optional[int],
371
- fp: int,
372
- wallet_id: int,
373
- amount: CliAmount,
374
- fee: uint64,
375
- cli_tx_config: CMDTXConfigLoader,
376
- push: bool,
377
- condition_valid_times: ConditionValidTimes,
378
- ) -> list[TransactionRecord]:
379
- final_amount: uint64 = amount.convert_amount(units["cat"])
380
- async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
381
- res = await wallet_client.dao_send_to_lockup(
382
- wallet_id=wallet_id,
383
- amount=final_amount,
384
- fee=fee,
385
- tx_config=cli_tx_config.to_tx_config(units["chia"], config, fingerprint),
386
- push=push,
387
- timelock_info=condition_valid_times,
388
- )
389
- if push:
390
- start = time.time()
391
- while time.time() - start < 10:
392
- await asyncio.sleep(0.1)
393
- tx = await wallet_client.get_transaction(res.tx_id)
394
- if len(tx.sent_to) > 0:
395
- print(transaction_submitted_msg(tx))
396
- print(transaction_status_msg(fingerprint, res.tx_id))
397
- return res.transactions
398
-
399
- if push:
400
- print(f"Transaction not yet submitted to nodes. TX ID: {res.tx_id.hex()}")
401
-
402
- return res.transactions
403
-
404
-
405
- async def release_coins(
406
- root_path: pathlib.Path,
407
- wallet_rpc_port: Optional[int],
408
- fp: int,
409
- wallet_id: int,
410
- fee: uint64,
411
- cli_tx_config: CMDTXConfigLoader,
412
- push: bool,
413
- condition_valid_times: ConditionValidTimes,
414
- ) -> list[TransactionRecord]:
415
- async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
416
- res = await wallet_client.dao_free_coins_from_finished_proposals(
417
- wallet_id=wallet_id,
418
- fee=fee,
419
- tx_config=cli_tx_config.to_tx_config(units["chia"], config, fingerprint),
420
- push=push,
421
- timelock_info=condition_valid_times,
422
- )
423
- if push:
424
- start = time.time()
425
- while time.time() - start < 10:
426
- await asyncio.sleep(0.1)
427
- tx = await wallet_client.get_transaction(res.tx_id)
428
- if len(tx.sent_to) > 0:
429
- print(transaction_submitted_msg(tx))
430
- print(transaction_status_msg(fingerprint, res.tx_id))
431
- return res.transactions
432
-
433
- if push:
434
- print(f"Transaction not yet submitted to nodes. TX ID: {res.tx_id.hex()}")
435
- return res.transactions
436
-
437
-
438
- async def exit_lockup(
439
- root_path: pathlib.Path,
440
- wallet_rpc_port: Optional[int],
441
- fp: int,
442
- wallet_id: int,
443
- fee: uint64,
444
- cli_tx_config: CMDTXConfigLoader,
445
- push: bool,
446
- condition_valid_times: ConditionValidTimes,
447
- ) -> list[TransactionRecord]:
448
- async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
449
- res = await wallet_client.dao_exit_lockup(
450
- wallet_id=wallet_id,
451
- coins=[],
452
- fee=fee,
453
- tx_config=cli_tx_config.to_tx_config(units["chia"], config, fingerprint),
454
- push=push,
455
- timelock_info=condition_valid_times,
456
- )
457
-
458
- if push:
459
- start = time.time()
460
- while time.time() - start < 10:
461
- await asyncio.sleep(0.1)
462
- tx = await wallet_client.get_transaction(res.tx_id)
463
- if len(tx.sent_to) > 0:
464
- print(transaction_submitted_msg(tx))
465
- print(transaction_status_msg(fingerprint, res.tx_id))
466
- return res.transactions
467
-
468
- if push:
469
- print(f"Transaction not yet submitted to nodes. TX ID: {res.tx_id.hex()}")
470
- return res.transactions
471
-
472
-
473
- async def create_spend_proposal(
474
- root_path: pathlib.Path,
475
- wallet_rpc_port: Optional[int],
476
- fp: int,
477
- wallet_id: int,
478
- fee: uint64,
479
- vote_amount: Optional[int],
480
- address: Optional[str],
481
- amount: Optional[str],
482
- asset_id: Optional[str],
483
- additions_file: Optional[str],
484
- cli_tx_config: CMDTXConfigLoader,
485
- push: bool,
486
- condition_valid_times: ConditionValidTimes,
487
- ) -> list[TransactionRecord]:
488
- if additions_file is None and (address is None or amount is None):
489
- raise ValueError("Must include a json specification or an address / amount pair.")
490
- if additions_file: # pragma: no cover
491
- with open(additions_file) as f:
492
- additions_dict = json.load(f)
493
- additions = []
494
- for addition in additions_dict:
495
- addition["puzzle_hash"] = decode_puzzle_hash(addition["address"]).hex()
496
- del addition["address"]
497
- additions.append(addition)
498
- else:
499
- additions = None
500
- async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
501
- wallet_type = await get_wallet_type(wallet_id=wallet_id, wallet_client=wallet_client)
502
- mojo_per_unit = get_mojo_per_unit(wallet_type=wallet_type)
503
- final_amount: Optional[uint64] = uint64(int(Decimal(amount) * mojo_per_unit)) if amount else None
504
- res = await wallet_client.dao_create_proposal(
505
- wallet_id=wallet_id,
506
- proposal_type="spend",
507
- additions=additions,
508
- amount=final_amount,
509
- inner_address=address,
510
- asset_id=asset_id,
511
- vote_amount=vote_amount,
512
- fee=fee,
513
- tx_config=cli_tx_config.to_tx_config(units["chia"], config, fingerprint),
514
- push=push,
515
- timelock_info=condition_valid_times,
516
- )
517
-
518
- asset_id_name = asset_id if asset_id else "XCH"
519
- print(f"Created spend proposal for asset: {asset_id_name}")
520
- if push:
521
- print("Successfully created proposal.")
522
- print(f"Proposal ID: {res.proposal_id.hex()}")
523
- return res.transactions
524
-
525
-
526
- async def create_update_proposal(
527
- root_path: pathlib.Path,
528
- wallet_rpc_port: Optional[int],
529
- fp: int,
530
- wallet_id: int,
531
- fee: uint64,
532
- vote_amount: Optional[uint64],
533
- proposal_timelock: Optional[uint64],
534
- soft_close_length: Optional[uint64],
535
- attendance_required: Optional[uint64],
536
- pass_percentage: Optional[uint64],
537
- self_destruct_length: Optional[uint64],
538
- oracle_spend_delay: Optional[uint64],
539
- cli_tx_config: CMDTXConfigLoader,
540
- push: bool,
541
- condition_valid_times: ConditionValidTimes,
542
- ) -> list[TransactionRecord]:
543
- new_dao_rules = {
544
- "proposal_timelock": proposal_timelock,
545
- "soft_close_length": soft_close_length,
546
- "attendance_required": attendance_required,
547
- "pass_percentage": pass_percentage,
548
- "self_destruct_length": self_destruct_length,
549
- "oracle_spend_delay": oracle_spend_delay,
550
- }
551
- async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
552
- res = await wallet_client.dao_create_proposal(
553
- wallet_id=wallet_id,
554
- proposal_type="update",
555
- new_dao_rules=new_dao_rules,
556
- vote_amount=vote_amount,
557
- fee=fee,
558
- tx_config=cli_tx_config.to_tx_config(units["chia"], config, fingerprint),
559
- push=push,
560
- timelock_info=condition_valid_times,
561
- )
562
-
563
- if push:
564
- print("Successfully created proposal.")
565
- print(f"Proposal ID: {res.proposal_id.hex()}")
566
- return res.transactions
567
-
568
-
569
- async def create_mint_proposal(
570
- root_path: pathlib.Path,
571
- wallet_rpc_port: Optional[int],
572
- fp: int,
573
- wallet_id: int,
574
- fee: uint64,
575
- amount: uint64,
576
- cat_target_address: str,
577
- vote_amount: Optional[int],
578
- cli_tx_config: CMDTXConfigLoader,
579
- push: bool,
580
- condition_valid_times: ConditionValidTimes,
581
- ) -> list[TransactionRecord]:
582
- async with get_wallet_client(root_path, wallet_rpc_port, fp) as (wallet_client, fingerprint, config):
583
- res = await wallet_client.dao_create_proposal(
584
- wallet_id=wallet_id,
585
- proposal_type="mint",
586
- cat_target_address=cat_target_address,
587
- amount=amount,
588
- vote_amount=vote_amount,
589
- fee=fee,
590
- tx_config=cli_tx_config.to_tx_config(units["chia"], config, fingerprint),
591
- push=push,
592
- timelock_info=condition_valid_times,
593
- )
594
-
595
- if push:
596
- print("Successfully created proposal.")
597
- print(f"Proposal ID: {res.proposal_id.hex()}")
598
- return res.transactions
File without changes
@@ -1,69 +0,0 @@
1
- ;; this code is included in the ROM. Unfortunately, it has a problem that limits
2
- ;; its usefulness: it is incapable of deserializing atoms with length longer than
3
- ;; 8191 = 0x1fff.
4
- ;;
5
- ;; Because this code is included in the ROM, fixing the bug would be a hard fork
6
- ;; so we're rather stuck with this bug. We recommend simply using a local version
7
- ;; of this code when necessary.
8
-
9
- (mod (input)
10
-
11
- (defconstant MAX_SINGLE_BYTE 0x7F)
12
- (defconstant MAX_TWO_BYTE 0xbf)
13
- (defconstant MAX_THREE_BYTE 0xdf)
14
- (defconstant MAX_FOUR_BYTE 0xef)
15
- (defconstant MAX_FIVE_BYTE 0xf7)
16
- (defconstant MAX_SIX_BYTE 0xfb)
17
- (defconstant CONS_BOX_MARKER 0xFF)
18
-
19
- (defun sexp_from_stream (input_stream)
20
- (if (= (substr input_stream 0 1) CONS_BOX_MARKER)
21
- (cons_sexp_from_stream (sexp_from_stream (substr input_stream 1)))
22
- (atom_from_stream (substr input_stream 1) (substr input_stream 0 1))
23
- )
24
- )
25
-
26
- (defun cons_sexp_from_stream (left_sexp_with_input)
27
- (cons_return (f left_sexp_with_input) (sexp_from_stream (f (r left_sexp_with_input))))
28
- )
29
-
30
- (defun cons_return (left_sexp right_sexp_with_input)
31
- (list (c left_sexp (f right_sexp_with_input)) (f (r right_sexp_with_input)))
32
- )
33
-
34
- (defun atom_from_stream (input_file input_bits)
35
- (if (= input_bits (quote 0x80))
36
- (list () input_file)
37
- (if (>s input_bits MAX_SINGLE_BYTE)
38
- (atom_from_stream_part_two (get_bitcount input_bits input_file))
39
- (list input_bits input_file)
40
- )
41
- )
42
- )
43
-
44
- ; Note that we reject any serialized atom here with more than 3 bytes of
45
- ; encoded length prefix, even though the Rust and Python CLVM interpreters
46
- ; and deserializers support more.
47
- ; This allows 5 + 8 = 13 bits = 8191-byte atoms
48
- ; Also note that this does not limit intermediate atom length. Those limits
49
- ; are implemented in the clvm interpreters theselves
50
- (defun-inline get_bitcount (input_bits input_file)
51
- (if (>s input_bits MAX_TWO_BYTE)
52
- (if (>s input_bits MAX_THREE_BYTE)
53
- (x)
54
- ;three byte length prefix
55
- (list (concat (logand (quote 0x1f) input_bits) (substr input_file 0 1)) (substr input_file 1))
56
- )
57
- ;two byte length prefix
58
- (list (logand (quote 0x3f) input_bits) input_file)
59
- )
60
- )
61
-
62
- (defun atom_from_stream_part_two ((size_to_read input_file))
63
- (list (substr input_file 0 size_to_read) (substr input_file size_to_read))
64
- )
65
-
66
- ; main
67
- (f (sexp_from_stream input))
68
-
69
- )
@@ -1 +0,0 @@
1
- ff02ffff01ff05ffff02ff3effff04ff02ffff04ff05ff8080808080ffff04ffff01ffffff81ff7fff81df81bfffffff02ffff03ffff09ff0bffff01818080ffff01ff04ff80ffff04ff05ff808080ffff01ff02ffff03ffff0aff0bff1880ffff01ff02ff1affff04ff02ffff04ffff02ffff03ffff0aff0bff1c80ffff01ff02ffff03ffff0aff0bff1480ffff01ff0880ffff01ff04ffff0effff18ffff011fff0b80ffff0cff05ff80ffff01018080ffff04ffff0cff05ffff010180ff80808080ff0180ffff01ff04ffff18ffff013fff0b80ffff04ff05ff80808080ff0180ff80808080ffff01ff04ff0bffff04ff05ff80808080ff018080ff0180ff04ffff0cff15ff80ff0980ffff04ffff0cff15ff0980ff808080ffff04ffff04ff05ff1380ffff04ff2bff808080ffff02ff16ffff04ff02ffff04ff09ffff04ffff02ff3effff04ff02ffff04ff15ff80808080ff8080808080ff02ffff03ffff09ffff0cff05ff80ffff010180ff1080ffff01ff02ff2effff04ff02ffff04ffff02ff3effff04ff02ffff04ffff0cff05ffff010180ff80808080ff80808080ffff01ff02ff12ffff04ff02ffff04ffff0cff05ffff010180ffff04ffff0cff05ff80ffff010180ff808080808080ff0180ff018080