chia-blockchain 2.5.0rc1__py3-none-any.whl → 2.5.1__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.
- chia/_tests/README.md +1 -1
- chia/_tests/blockchain/blockchain_test_utils.py +24 -26
- chia/_tests/blockchain/test_augmented_chain.py +6 -8
- chia/_tests/blockchain/test_blockchain.py +409 -307
- chia/_tests/blockchain/test_blockchain_transactions.py +56 -75
- chia/_tests/blockchain/test_build_chains.py +11 -13
- chia/_tests/blockchain/test_get_block_generator.py +8 -8
- chia/_tests/blockchain/test_lookup_fork_chain.py +3 -4
- chia/_tests/build-init-files.py +3 -4
- chia/_tests/build-job-matrix.py +9 -9
- chia/_tests/check_sql_statements.py +2 -3
- chia/_tests/clvm/benchmark_costs.py +1 -1
- chia/_tests/clvm/coin_store.py +7 -5
- chia/_tests/clvm/test_chialisp_deserialization.py +8 -8
- chia/_tests/clvm/test_condition_codes.py +2 -2
- chia/_tests/clvm/test_curry_and_treehash.py +2 -4
- chia/_tests/clvm/test_message_conditions.py +184 -0
- chia/_tests/clvm/test_puzzle_compression.py +1 -2
- chia/_tests/clvm/test_puzzle_drivers.py +3 -3
- chia/_tests/clvm/test_puzzles.py +13 -18
- chia/_tests/clvm/test_singletons.py +17 -17
- chia/_tests/clvm/test_spend_sim.py +7 -7
- chia/_tests/cmds/cmd_test_utils.py +42 -45
- chia/_tests/cmds/conftest.py +2 -2
- chia/_tests/cmds/test_click_types.py +21 -16
- chia/_tests/cmds/test_cmd_framework.py +255 -35
- chia/_tests/cmds/test_cmds_util.py +2 -2
- chia/_tests/cmds/test_daemon.py +3 -3
- chia/_tests/cmds/test_dev_gh.py +131 -0
- chia/_tests/cmds/test_farm_cmd.py +1 -2
- chia/_tests/cmds/test_show.py +6 -6
- chia/_tests/cmds/test_tx_config_args.py +2 -1
- chia/_tests/cmds/wallet/test_dao.py +23 -23
- chia/_tests/cmds/wallet/test_did.py +29 -29
- chia/_tests/cmds/wallet/test_nft.py +24 -23
- chia/_tests/cmds/wallet/test_notifications.py +8 -8
- chia/_tests/cmds/wallet/test_tx_decorators.py +3 -3
- chia/_tests/cmds/wallet/test_vcs.py +97 -73
- chia/_tests/cmds/wallet/test_wallet.py +74 -75
- chia/_tests/cmds/wallet/test_wallet_check.py +5 -7
- chia/_tests/conftest.py +153 -38
- chia/_tests/connection_utils.py +7 -6
- chia/_tests/core/cmds/test_beta.py +3 -3
- chia/_tests/core/cmds/test_keys.py +6 -6
- chia/_tests/core/cmds/test_wallet.py +3 -3
- chia/_tests/core/consensus/test_block_creation.py +3 -5
- chia/_tests/core/custom_types/test_coin.py +1 -3
- chia/_tests/core/custom_types/test_spend_bundle.py +3 -4
- chia/_tests/core/daemon/test_daemon.py +58 -58
- chia/_tests/core/daemon/test_keychain_proxy.py +2 -1
- chia/_tests/core/data_layer/conftest.py +4 -3
- chia/_tests/core/data_layer/test_data_cli.py +1 -2
- chia/_tests/core/data_layer/test_data_layer.py +5 -5
- chia/_tests/core/data_layer/test_data_layer_util.py +8 -9
- chia/_tests/core/data_layer/test_data_rpc.py +75 -93
- chia/_tests/core/data_layer/test_data_store.py +38 -37
- chia/_tests/core/data_layer/test_data_store_schema.py +11 -11
- chia/_tests/core/data_layer/util.py +11 -10
- chia/_tests/core/farmer/test_farmer_api.py +6 -4
- chia/_tests/core/full_node/full_sync/test_full_sync.py +5 -10
- chia/_tests/core/full_node/ram_db.py +2 -2
- chia/_tests/core/full_node/stores/test_block_store.py +113 -11
- chia/_tests/core/full_node/stores/test_coin_store.py +37 -28
- chia/_tests/core/full_node/stores/test_full_node_store.py +34 -30
- chia/_tests/core/full_node/stores/test_hint_store.py +3 -4
- chia/_tests/core/full_node/test_address_manager.py +2 -2
- chia/_tests/core/full_node/test_block_height_map.py +1 -1
- chia/_tests/core/full_node/test_conditions.py +10 -12
- chia/_tests/core/full_node/test_full_node.py +2077 -1822
- chia/_tests/core/full_node/test_generator_tools.py +4 -4
- chia/_tests/core/full_node/test_hint_management.py +2 -2
- chia/_tests/core/full_node/test_performance.py +2 -5
- chia/_tests/core/full_node/test_subscriptions.py +4 -4
- chia/_tests/core/full_node/test_tx_processing_queue.py +5 -4
- chia/_tests/core/make_block_generator.py +5 -7
- chia/_tests/core/mempool/test_mempool.py +205 -208
- chia/_tests/core/mempool/test_mempool_fee_protocol.py +5 -5
- chia/_tests/core/mempool/test_mempool_item_queries.py +2 -4
- chia/_tests/core/mempool/test_mempool_manager.py +109 -80
- chia/_tests/core/mempool/test_mempool_performance.py +3 -4
- chia/_tests/core/mempool/test_singleton_fast_forward.py +12 -12
- chia/_tests/core/server/flood.py +6 -4
- chia/_tests/core/server/serve.py +10 -7
- chia/_tests/core/server/test_api_protocol.py +21 -0
- chia/_tests/core/server/test_capabilities.py +3 -5
- chia/_tests/core/server/test_dos.py +15 -16
- chia/_tests/core/server/test_loop.py +14 -10
- chia/_tests/core/server/test_node_discovery.py +1 -2
- chia/_tests/core/server/test_rate_limits.py +156 -44
- chia/_tests/core/server/test_server.py +8 -7
- chia/_tests/core/services/test_services.py +59 -37
- chia/_tests/core/ssl/test_ssl.py +5 -3
- chia/_tests/core/test_cost_calculation.py +5 -6
- chia/_tests/core/test_crawler.py +2 -2
- chia/_tests/core/test_db_conversion.py +5 -4
- chia/_tests/core/test_db_validation.py +6 -5
- chia/_tests/core/test_farmer_harvester_rpc.py +8 -7
- chia/_tests/core/test_filter.py +3 -5
- chia/_tests/core/test_full_node_rpc.py +64 -90
- chia/_tests/core/test_merkle_set.py +10 -10
- chia/_tests/core/test_program.py +2 -4
- chia/_tests/core/test_rpc_util.py +1 -2
- chia/_tests/core/test_seeder.py +124 -12
- chia/_tests/core/util/test_block_cache.py +5 -5
- chia/_tests/core/util/test_cached_bls.py +3 -3
- chia/_tests/core/util/test_config.py +13 -13
- chia/_tests/core/util/test_files.py +2 -2
- chia/_tests/core/util/test_jsonify.py +9 -9
- chia/_tests/core/util/test_keychain.py +13 -5
- chia/_tests/core/util/test_keyring_wrapper.py +6 -5
- chia/_tests/core/util/test_log_exceptions.py +3 -3
- chia/_tests/core/util/test_streamable.py +38 -38
- chia/_tests/db/test_db_wrapper.py +13 -12
- chia/_tests/environments/common.py +2 -2
- chia/_tests/environments/full_node.py +2 -2
- chia/_tests/environments/wallet.py +109 -48
- chia/_tests/farmer_harvester/test_farmer.py +35 -35
- chia/_tests/farmer_harvester/test_farmer_harvester.py +17 -17
- chia/_tests/farmer_harvester/test_filter_prefix_bits.py +6 -5
- chia/_tests/farmer_harvester/test_third_party_harvesters.py +73 -46
- chia/_tests/fee_estimation/test_fee_estimation_integration.py +8 -8
- chia/_tests/fee_estimation/test_fee_estimation_rpc.py +47 -47
- chia/_tests/fee_estimation/test_fee_estimation_unit_tests.py +6 -7
- chia/_tests/fee_estimation/test_mempoolitem_height_added.py +11 -11
- chia/_tests/generator/test_compression.py +13 -30
- chia/_tests/generator/test_generator_types.py +3 -3
- chia/_tests/generator/test_rom.py +7 -9
- chia/_tests/plot_sync/test_delta.py +2 -3
- chia/_tests/plot_sync/test_plot_sync.py +25 -24
- chia/_tests/plot_sync/test_receiver.py +9 -9
- chia/_tests/plot_sync/test_sender.py +1 -1
- chia/_tests/plot_sync/test_sync_simulated.py +27 -26
- chia/_tests/plot_sync/util.py +2 -1
- chia/_tests/plotting/test_plot_manager.py +54 -11
- chia/_tests/plotting/util.py +2 -3
- chia/_tests/pools/test_pool_cli_parsing.py +128 -0
- chia/_tests/pools/test_pool_cmdline.py +993 -15
- chia/_tests/pools/test_pool_config.py +3 -5
- chia/_tests/pools/test_pool_puzzles_lifecycle.py +10 -11
- chia/_tests/pools/test_pool_rpc.py +203 -90
- chia/_tests/pools/test_pool_wallet.py +12 -8
- chia/_tests/pools/test_wallet_pool_store.py +3 -3
- chia/_tests/process_junit.py +16 -17
- chia/_tests/rpc/test_rpc_client.py +59 -2
- chia/_tests/rpc/test_rpc_server.py +183 -0
- chia/_tests/simulation/test_simulation.py +5 -5
- chia/_tests/simulation/test_simulator.py +8 -10
- chia/_tests/simulation/test_start_simulator.py +5 -4
- chia/_tests/timelord/test_new_peak.py +19 -19
- chia/_tests/tools/test_run_block.py +1 -2
- chia/_tests/tools/test_virtual_project.py +591 -0
- chia/_tests/util/benchmark_cost.py +9 -9
- chia/_tests/util/benchmarks.py +1 -2
- chia/_tests/util/blockchain.py +12 -11
- chia/_tests/util/blockchain_mock.py +15 -15
- chia/_tests/util/build_network_protocol_files.py +12 -12
- chia/_tests/util/db_connection.py +3 -2
- chia/_tests/util/full_sync.py +14 -6
- chia/_tests/util/gen_ssl_certs.py +4 -5
- chia/_tests/util/generator_tools_testing.py +5 -7
- chia/_tests/util/get_name_puzzle_conditions.py +52 -0
- chia/_tests/util/key_tool.py +2 -3
- chia/_tests/util/misc.py +59 -106
- chia/_tests/util/network_protocol_data.py +7 -9
- chia/_tests/util/protocol_messages_json.py +112 -111
- chia/_tests/util/rpc.py +3 -0
- chia/_tests/util/run_block.py +16 -16
- chia/_tests/util/setup_nodes.py +25 -23
- chia/{clvm → _tests/util}/spend_sim.py +59 -55
- chia/_tests/util/split_managers.py +12 -9
- chia/_tests/util/temp_file.py +1 -1
- chia/_tests/util/test_action_scope.py +2 -1
- chia/_tests/util/test_async_pool.py +8 -8
- chia/_tests/util/test_build_job_matrix.py +2 -3
- chia/_tests/util/test_condition_tools.py +4 -6
- chia/_tests/util/test_config.py +5 -5
- chia/_tests/util/test_dump_keyring.py +1 -1
- chia/_tests/util/test_full_block_utils.py +19 -11
- chia/_tests/util/test_limited_semaphore.py +4 -3
- chia/_tests/util/test_logging_filter.py +2 -3
- chia/_tests/util/test_misc.py +29 -28
- chia/_tests/util/test_network.py +32 -31
- chia/_tests/util/test_network_protocol_files.py +2 -3
- chia/_tests/util/test_network_protocol_json.py +1 -0
- chia/_tests/util/test_network_protocol_test.py +18 -19
- chia/_tests/util/test_paginator.py +3 -4
- chia/_tests/util/test_pprint.py +1 -1
- chia/_tests/util/test_priority_mutex.py +18 -17
- chia/_tests/util/test_recursive_replace.py +2 -2
- chia/_tests/util/test_testnet_overrides.py +3 -3
- chia/_tests/util/test_timing.py +1 -1
- chia/_tests/util/test_trusted_peer.py +2 -2
- chia/_tests/util/time_out_assert.py +43 -6
- chia/_tests/wallet/cat_wallet/test_cat_lifecycle.py +13 -13
- chia/_tests/wallet/cat_wallet/test_cat_outer_puzzle.py +1 -1
- chia/_tests/wallet/cat_wallet/test_cat_wallet.py +117 -29
- chia/_tests/wallet/cat_wallet/test_offer_lifecycle.py +15 -15
- chia/_tests/wallet/cat_wallet/test_trades.py +50 -28
- chia/_tests/wallet/clawback/test_clawback_decorator.py +3 -5
- chia/_tests/wallet/clawback/test_clawback_lifecycle.py +6 -6
- chia/_tests/wallet/clawback/test_clawback_metadata.py +1 -2
- chia/_tests/wallet/conftest.py +135 -74
- chia/_tests/wallet/dao_wallet/test_dao_clvm.py +25 -17
- chia/_tests/wallet/dao_wallet/test_dao_wallets.py +75 -75
- chia/_tests/wallet/db_wallet/test_db_graftroot.py +10 -12
- chia/_tests/wallet/db_wallet/test_dl_offers.py +6 -6
- chia/_tests/wallet/db_wallet/test_dl_wallet.py +18 -18
- chia/_tests/wallet/did_wallet/test_did.py +1277 -474
- chia/_tests/wallet/nft_wallet/test_nft_1_offers.py +12 -11
- chia/_tests/wallet/nft_wallet/test_nft_bulk_mint.py +115 -105
- chia/_tests/wallet/nft_wallet/test_nft_lifecycle.py +6 -7
- chia/_tests/wallet/nft_wallet/test_nft_offers.py +16 -16
- chia/_tests/wallet/nft_wallet/test_nft_puzzles.py +3 -3
- chia/_tests/wallet/nft_wallet/test_nft_wallet.py +38 -12
- chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py +1 -1
- chia/_tests/wallet/rpc/test_dl_wallet_rpc.py +31 -33
- chia/_tests/wallet/rpc/test_wallet_rpc.py +218 -171
- chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py +36 -37
- chia/_tests/wallet/sync/test_wallet_sync.py +241 -78
- chia/_tests/wallet/test_address_type.py +20 -20
- chia/_tests/wallet/test_clvm_streamable.py +5 -5
- chia/_tests/wallet/test_coin_management.py +354 -0
- chia/_tests/wallet/test_coin_selection.py +34 -35
- chia/_tests/wallet/test_conditions.py +28 -16
- chia/_tests/wallet/test_debug_spend_bundle.py +156 -14
- chia/_tests/wallet/test_new_wallet_protocol.py +29 -31
- chia/_tests/wallet/test_nft_store.py +1 -2
- chia/_tests/wallet/test_notifications.py +2 -2
- chia/_tests/wallet/test_offer_parsing_performance.py +1 -1
- chia/_tests/wallet/test_puzzle_store.py +2 -3
- chia/_tests/wallet/test_sign_coin_spends.py +3 -3
- chia/_tests/wallet/test_signer_protocol.py +33 -34
- chia/_tests/wallet/test_singleton_lifecycle_fast.py +29 -29
- chia/_tests/wallet/test_taproot.py +1 -1
- chia/_tests/wallet/test_transaction_store.py +23 -19
- chia/_tests/wallet/test_util.py +36 -32
- chia/_tests/wallet/test_wallet.py +37 -37
- chia/_tests/wallet/test_wallet_action_scope.py +8 -8
- chia/_tests/wallet/test_wallet_blockchain.py +4 -6
- chia/_tests/wallet/test_wallet_coin_store.py +34 -34
- chia/_tests/wallet/test_wallet_node.py +69 -72
- chia/_tests/wallet/test_wallet_retry.py +3 -3
- chia/_tests/wallet/test_wallet_state_manager.py +12 -5
- chia/_tests/wallet/test_wallet_trade_store.py +2 -2
- chia/_tests/wallet/test_wallet_utils.py +5 -4
- chia/_tests/wallet/vc_wallet/test_cr_outer_puzzle.py +3 -3
- chia/_tests/wallet/vc_wallet/test_vc_lifecycle.py +18 -18
- chia/_tests/wallet/vc_wallet/test_vc_wallet.py +69 -40
- chia/_tests/wallet/wallet_block_tools.py +27 -27
- chia/_tests/weight_proof/test_weight_proof.py +30 -30
- chia/apis.py +19 -0
- chia/cmds/beta.py +8 -7
- chia/cmds/beta_funcs.py +15 -11
- chia/cmds/check_wallet_db.py +29 -27
- chia/cmds/chia.py +17 -9
- chia/cmds/cmd_classes.py +87 -79
- chia/cmds/cmd_helpers.py +242 -0
- chia/cmds/cmds_util.py +56 -66
- chia/cmds/coin_funcs.py +168 -153
- chia/cmds/coins.py +156 -194
- chia/cmds/configure.py +4 -3
- chia/cmds/dao.py +89 -33
- chia/cmds/dao_funcs.py +55 -33
- chia/cmds/data.py +7 -6
- chia/cmds/data_funcs.py +26 -21
- chia/cmds/db.py +4 -3
- chia/cmds/db_backup_func.py +2 -2
- chia/cmds/db_upgrade_func.py +3 -3
- chia/cmds/db_validate_func.py +2 -2
- chia/cmds/dev.py +2 -0
- chia/cmds/farm.py +18 -5
- chia/cmds/farm_funcs.py +17 -24
- chia/cmds/gh.py +275 -0
- chia/cmds/init.py +4 -11
- chia/cmds/init_funcs.py +9 -9
- chia/cmds/installers.py +5 -3
- chia/cmds/keys.py +56 -39
- chia/cmds/keys_funcs.py +30 -31
- chia/cmds/netspace.py +6 -3
- chia/cmds/netspace_funcs.py +3 -2
- chia/cmds/param_types.py +16 -6
- chia/cmds/passphrase.py +8 -7
- chia/cmds/passphrase_funcs.py +7 -61
- chia/cmds/peer.py +2 -1
- chia/cmds/peer_funcs.py +5 -5
- chia/cmds/plotnft.py +207 -153
- chia/cmds/plotnft_funcs.py +205 -174
- chia/cmds/plots.py +14 -6
- chia/cmds/plotters.py +2 -1
- chia/cmds/rpc.py +48 -28
- chia/cmds/show.py +2 -1
- chia/cmds/show_funcs.py +7 -6
- chia/cmds/signer.py +50 -58
- chia/cmds/sim.py +22 -14
- chia/cmds/sim_funcs.py +11 -11
- chia/cmds/start.py +3 -3
- chia/cmds/start_funcs.py +9 -12
- chia/cmds/stop.py +4 -3
- chia/cmds/units.py +1 -3
- chia/cmds/wallet.py +252 -96
- chia/cmds/wallet_funcs.py +217 -143
- chia/consensus/block_body_validation.py +133 -86
- chia/consensus/block_creation.py +42 -21
- chia/consensus/block_header_validation.py +32 -37
- chia/consensus/block_record.py +1 -2
- chia/consensus/blockchain.py +167 -180
- chia/consensus/blockchain_interface.py +10 -10
- chia/consensus/constants.py +2 -2
- chia/consensus/default_constants.py +3 -4
- chia/consensus/difficulty_adjustment.py +5 -5
- chia/consensus/find_fork_point.py +5 -5
- chia/consensus/full_block_to_block_record.py +4 -4
- chia/consensus/get_block_challenge.py +2 -2
- chia/consensus/get_block_generator.py +4 -3
- chia/consensus/multiprocess_validation.py +207 -304
- chia/consensus/vdf_info_computation.py +3 -3
- chia/daemon/client.py +46 -27
- chia/daemon/keychain_proxy.py +10 -9
- chia/daemon/keychain_server.py +18 -18
- chia/daemon/server.py +103 -113
- chia/daemon/windows_signal.py +2 -2
- chia/data_layer/data_layer.py +64 -76
- chia/data_layer/data_layer_api.py +8 -0
- chia/data_layer/data_layer_errors.py +3 -3
- chia/data_layer/data_layer_server.py +2 -2
- chia/data_layer/data_layer_util.py +71 -71
- chia/data_layer/data_layer_wallet.py +63 -67
- chia/data_layer/data_store.py +72 -72
- chia/data_layer/dl_wallet_store.py +10 -10
- chia/data_layer/download_data.py +5 -5
- chia/data_layer/s3_plugin_service.py +9 -9
- chia/data_layer/util/benchmark.py +0 -1
- chia/data_layer/util/plugin.py +2 -3
- chia/farmer/farmer.py +46 -43
- chia/farmer/farmer_api.py +27 -21
- chia/full_node/block_height_map.py +6 -6
- chia/full_node/block_store.py +41 -35
- chia/full_node/coin_store.py +42 -41
- chia/full_node/fee_estimate.py +2 -2
- chia/full_node/fee_estimation.py +1 -2
- chia/full_node/fee_history.py +5 -6
- chia/full_node/fee_tracker.py +24 -24
- chia/full_node/full_node.py +574 -300
- chia/full_node/full_node_api.py +181 -130
- chia/full_node/full_node_store.py +43 -43
- chia/full_node/hint_management.py +4 -4
- chia/full_node/hint_store.py +9 -10
- chia/full_node/mempool.py +25 -19
- chia/full_node/mempool_check_conditions.py +11 -42
- chia/full_node/mempool_manager.py +48 -53
- chia/full_node/pending_tx_cache.py +9 -9
- chia/full_node/subscriptions.py +23 -24
- chia/full_node/sync_store.py +8 -7
- chia/full_node/tx_processing_queue.py +3 -3
- chia/full_node/util/__init__.py +0 -0
- chia/full_node/weight_proof.py +79 -78
- chia/harvester/harvester.py +9 -8
- chia/harvester/harvester_api.py +19 -13
- chia/introducer/introducer.py +7 -5
- chia/introducer/introducer_api.py +9 -3
- chia/legacy/keyring.py +6 -5
- chia/plot_sync/delta.py +8 -8
- chia/plot_sync/receiver.py +12 -11
- chia/plot_sync/sender.py +15 -12
- chia/plotters/bladebit.py +12 -12
- chia/plotters/chiapos.py +2 -2
- chia/plotters/madmax.py +8 -8
- chia/plotters/plotters.py +6 -6
- chia/plotters/plotters_util.py +6 -4
- chia/plotting/cache.py +8 -7
- chia/plotting/check_plots.py +8 -8
- chia/plotting/create_plots.py +6 -6
- chia/plotting/manager.py +22 -22
- chia/plotting/util.py +31 -19
- chia/pools/pool_config.py +7 -7
- chia/pools/pool_puzzles.py +16 -16
- chia/pools/pool_wallet.py +64 -57
- chia/pools/pool_wallet_info.py +3 -3
- chia/protocols/full_node_protocol.py +3 -3
- chia/protocols/harvester_protocol.py +12 -12
- chia/protocols/introducer_protocol.py +1 -2
- chia/protocols/protocol_message_types.py +4 -4
- chia/protocols/protocol_state_machine.py +2 -2
- chia/protocols/protocol_timing.py +1 -0
- chia/protocols/shared_protocol.py +3 -3
- chia/protocols/timelord_protocol.py +2 -2
- chia/protocols/wallet_protocol.py +33 -33
- chia/rpc/crawler_rpc_api.py +12 -7
- chia/rpc/data_layer_rpc_api.py +49 -44
- chia/rpc/data_layer_rpc_client.py +41 -41
- chia/rpc/data_layer_rpc_util.py +7 -11
- chia/rpc/farmer_rpc_api.py +32 -27
- chia/rpc/farmer_rpc_client.py +14 -14
- chia/rpc/full_node_rpc_api.py +53 -48
- chia/rpc/full_node_rpc_client.py +30 -30
- chia/rpc/harvester_rpc_api.py +16 -11
- chia/rpc/harvester_rpc_client.py +6 -6
- chia/rpc/rpc_client.py +34 -14
- chia/rpc/rpc_server.py +117 -43
- chia/rpc/timelord_rpc_api.py +9 -4
- chia/rpc/util.py +11 -211
- chia/rpc/wallet_request_types.py +276 -60
- chia/rpc/wallet_rpc_api.py +563 -399
- chia/rpc/wallet_rpc_client.py +220 -250
- chia/seeder/crawl_store.py +6 -8
- chia/seeder/crawler.py +23 -36
- chia/seeder/crawler_api.py +28 -22
- chia/seeder/dns_server.py +99 -50
- chia/seeder/start_crawler.py +13 -9
- chia/server/address_manager.py +19 -19
- chia/server/address_manager_store.py +17 -17
- chia/server/api_protocol.py +106 -1
- chia/server/capabilities.py +3 -3
- chia/server/chia_policy.py +17 -16
- chia/server/introducer_peers.py +3 -3
- chia/server/node_discovery.py +34 -38
- chia/server/rate_limit_numbers.py +26 -16
- chia/server/rate_limits.py +67 -27
- chia/server/server.py +52 -31
- chia/server/signal_handlers.py +6 -3
- chia/server/ssl_context.py +5 -5
- chia/server/start_data_layer.py +37 -23
- chia/server/start_farmer.py +28 -16
- chia/server/start_full_node.py +29 -23
- chia/server/start_harvester.py +28 -15
- chia/server/start_introducer.py +27 -15
- chia/server/start_service.py +17 -29
- chia/server/start_timelord.py +25 -18
- chia/server/start_wallet.py +22 -18
- chia/server/upnp.py +4 -3
- chia/server/ws_connection.py +68 -54
- chia/simulator/add_blocks_in_batches.py +54 -0
- chia/simulator/block_tools.py +65 -64
- chia/simulator/full_node_simulator.py +66 -74
- chia/simulator/setup_services.py +10 -9
- chia/simulator/simulator_full_node_rpc_api.py +12 -14
- chia/simulator/simulator_full_node_rpc_client.py +3 -5
- chia/simulator/simulator_test_tools.py +8 -7
- chia/simulator/socket.py +1 -4
- chia/simulator/ssl_certs.py +5 -5
- chia/simulator/ssl_certs_1.py +2 -4
- chia/simulator/ssl_certs_10.py +2 -4
- chia/simulator/ssl_certs_2.py +2 -4
- chia/simulator/ssl_certs_3.py +2 -4
- chia/simulator/ssl_certs_4.py +2 -4
- chia/simulator/ssl_certs_5.py +2 -4
- chia/simulator/ssl_certs_6.py +2 -4
- chia/simulator/ssl_certs_7.py +2 -4
- chia/simulator/ssl_certs_8.py +2 -4
- chia/simulator/ssl_certs_9.py +2 -4
- chia/simulator/start_simulator.py +14 -6
- chia/simulator/wallet_tools.py +21 -20
- chia/ssl/create_ssl.py +11 -11
- chia/timelord/iters_from_block.py +2 -2
- chia/timelord/timelord.py +57 -33
- chia/timelord/timelord_api.py +12 -6
- chia/timelord/timelord_launcher.py +10 -8
- chia/timelord/timelord_state.py +5 -5
- chia/types/block_protocol.py +2 -2
- chia/types/blockchain_format/coin.py +3 -3
- chia/types/blockchain_format/program.py +17 -18
- chia/types/blockchain_format/tree_hash.py +9 -9
- chia/types/coin_spend.py +8 -8
- chia/types/condition_with_args.py +1 -2
- chia/types/eligible_coin_spends.py +16 -15
- chia/types/generator_types.py +1 -2
- chia/types/internal_mempool_item.py +1 -2
- chia/types/mempool_item.py +7 -7
- chia/types/mempool_submission_status.py +2 -2
- chia/types/peer_info.py +1 -1
- chia/types/spend_bundle.py +1 -2
- chia/types/transaction_queue_entry.py +2 -2
- chia/types/unfinished_header_block.py +2 -2
- chia/types/validation_state.py +14 -0
- chia/types/weight_proof.py +5 -6
- chia/util/action_scope.py +8 -8
- chia/util/async_pool.py +6 -4
- chia/util/augmented_chain.py +13 -9
- chia/util/batches.py +5 -2
- chia/util/bech32m.py +14 -11
- chia/util/beta_metrics.py +5 -4
- chia/util/block_cache.py +5 -5
- chia/util/byte_types.py +2 -0
- chia/util/check_fork_next_block.py +3 -2
- chia/util/chia_logging.py +41 -21
- chia/util/collection.py +3 -3
- chia/util/condition_tools.py +18 -18
- chia/util/config.py +26 -25
- chia/util/cpu.py +2 -0
- chia/util/db_synchronous.py +2 -0
- chia/util/db_version.py +2 -0
- chia/util/db_wrapper.py +13 -10
- chia/util/default_root.py +17 -0
- chia/util/dump_keyring.py +6 -6
- chia/util/errors.py +5 -3
- chia/util/file_keyring.py +22 -33
- chia/util/files.py +2 -0
- chia/util/full_block_utils.py +31 -7
- chia/util/generator_tools.py +18 -8
- chia/util/hash.py +3 -1
- chia/util/initial-config.yaml +19 -0
- chia/util/inline_executor.py +2 -0
- chia/util/ip_address.py +39 -0
- chia/util/json_util.py +0 -4
- chia/util/keychain.py +27 -24
- chia/util/keyring_wrapper.py +65 -4
- chia/util/limited_semaphore.py +3 -1
- chia/util/lock.py +4 -2
- chia/util/log_exceptions.py +5 -2
- chia/util/logging.py +3 -1
- chia/util/lru_cache.py +2 -0
- chia/util/math.py +4 -4
- chia/util/network.py +15 -73
- chia/util/paginator.py +3 -1
- chia/util/path.py +2 -0
- chia/util/permissions.py +3 -2
- chia/util/prev_transaction_block.py +1 -3
- chia/util/priority_mutex.py +6 -3
- chia/util/profiler.py +7 -4
- chia/util/recursive_replace.py +2 -0
- chia/util/safe_cancel_task.py +2 -0
- chia/util/service_groups.py +2 -2
- chia/util/setproctitle.py +2 -0
- chia/util/significant_bits.py +2 -0
- chia/util/ssl_check.py +11 -11
- chia/util/streamable.py +44 -56
- chia/util/task_referencer.py +59 -0
- chia/util/task_timing.py +22 -18
- chia/util/timing.py +4 -1
- chia/util/vdf_prover.py +2 -3
- chia/util/virtual_project_analysis.py +540 -0
- chia/util/ws_message.py +6 -6
- chia/wallet/cat_wallet/cat_info.py +3 -3
- chia/wallet/cat_wallet/cat_outer_puzzle.py +3 -3
- chia/wallet/cat_wallet/cat_utils.py +5 -4
- chia/wallet/cat_wallet/cat_wallet.py +56 -70
- chia/wallet/cat_wallet/dao_cat_info.py +3 -3
- chia/wallet/cat_wallet/dao_cat_wallet.py +18 -18
- chia/wallet/cat_wallet/lineage_store.py +2 -2
- chia/wallet/coin_selection.py +15 -15
- chia/wallet/conditions.py +257 -71
- chia/wallet/dao_wallet/dao_info.py +4 -4
- chia/wallet/dao_wallet/dao_utils.py +43 -42
- chia/wallet/dao_wallet/dao_wallet.py +66 -68
- chia/wallet/db_wallet/db_wallet_puzzles.py +12 -8
- chia/wallet/derive_keys.py +11 -11
- chia/wallet/did_wallet/did_info.py +3 -3
- chia/wallet/did_wallet/did_wallet.py +56 -47
- chia/wallet/did_wallet/did_wallet_puzzles.py +7 -6
- chia/wallet/lineage_proof.py +4 -4
- chia/wallet/nft_wallet/metadata_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/nft_info.py +4 -4
- chia/wallet/nft_wallet/nft_puzzles.py +16 -16
- chia/wallet/nft_wallet/nft_wallet.py +90 -89
- chia/wallet/nft_wallet/ownership_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/singleton_outer_puzzle.py +2 -2
- chia/wallet/nft_wallet/transfer_program_puzzle.py +2 -2
- chia/wallet/nft_wallet/uncurry_nft.py +2 -2
- chia/wallet/notification_manager.py +5 -5
- chia/wallet/notification_store.py +6 -6
- chia/wallet/outer_puzzles.py +2 -2
- chia/wallet/payment.py +4 -5
- chia/wallet/puzzle_drivers.py +4 -4
- chia/wallet/puzzles/clawback/drivers.py +5 -5
- chia/wallet/puzzles/clawback/puzzle_decorator.py +7 -7
- chia/wallet/puzzles/load_clvm.py +2 -3
- chia/wallet/puzzles/p2_conditions.py +1 -2
- chia/wallet/puzzles/p2_delegated_conditions.py +1 -2
- chia/wallet/puzzles/p2_delegated_puzzle.py +2 -3
- chia/wallet/puzzles/p2_delegated_puzzle_or_hidden_puzzle.py +3 -4
- chia/wallet/puzzles/p2_m_of_n_delegate_direct.py +1 -2
- chia/wallet/puzzles/p2_puzzle_hash.py +1 -2
- chia/wallet/puzzles/puzzle_utils.py +7 -7
- chia/wallet/puzzles/singleton_top_layer.py +6 -5
- chia/wallet/puzzles/singleton_top_layer_v1_1.py +6 -5
- chia/wallet/puzzles/tails.py +34 -30
- chia/wallet/signer_protocol.py +7 -8
- chia/wallet/singleton.py +4 -4
- chia/wallet/trade_manager.py +155 -141
- chia/wallet/trade_record.py +5 -5
- chia/wallet/trading/offer.py +100 -101
- chia/wallet/trading/trade_store.py +14 -14
- chia/wallet/transaction_record.py +31 -16
- chia/wallet/util/address_type.py +4 -4
- chia/wallet/util/blind_signer_tl.py +8 -12
- chia/wallet/util/clvm_streamable.py +15 -15
- chia/wallet/util/compute_hints.py +5 -5
- chia/wallet/util/compute_memos.py +4 -6
- chia/wallet/util/curry_and_treehash.py +3 -2
- chia/wallet/util/debug_spend_bundle.py +6 -8
- chia/wallet/util/merkle_tree.py +10 -10
- chia/wallet/util/merkle_utils.py +10 -10
- chia/wallet/util/new_peak_queue.py +3 -3
- chia/wallet/util/peer_request_cache.py +8 -8
- chia/{util → wallet/util}/pprint.py +2 -3
- chia/wallet/util/puzzle_compression.py +3 -4
- chia/wallet/util/puzzle_decorator.py +10 -10
- chia/wallet/util/query_filter.py +9 -10
- chia/wallet/util/tx_config.py +12 -12
- chia/wallet/util/wallet_sync_utils.py +24 -21
- chia/wallet/util/wallet_types.py +9 -2
- chia/wallet/vc_wallet/cr_cat_drivers.py +28 -27
- chia/wallet/vc_wallet/cr_cat_wallet.py +42 -40
- chia/wallet/vc_wallet/cr_outer_puzzle.py +4 -4
- chia/wallet/vc_wallet/vc_drivers.py +16 -16
- chia/wallet/vc_wallet/vc_store.py +9 -9
- chia/wallet/vc_wallet/vc_wallet.py +35 -35
- chia/wallet/wallet.py +54 -54
- chia/wallet/wallet_action_scope.py +14 -13
- chia/wallet/wallet_blockchain.py +10 -10
- chia/wallet/wallet_coin_record.py +2 -2
- chia/wallet/wallet_coin_store.py +10 -10
- chia/wallet/wallet_info.py +1 -2
- chia/wallet/wallet_interested_store.py +5 -5
- chia/wallet/wallet_nft_store.py +6 -6
- chia/wallet/wallet_node.py +72 -76
- chia/wallet/wallet_node_api.py +33 -27
- chia/wallet/wallet_pool_store.py +1 -2
- chia/wallet/wallet_protocol.py +15 -15
- chia/wallet/wallet_puzzle_store.py +35 -4
- chia/wallet/wallet_retry_store.py +2 -2
- chia/wallet/wallet_singleton_store.py +10 -9
- chia/wallet/wallet_spend_bundle.py +4 -20
- chia/wallet/wallet_state_manager.py +223 -224
- chia/wallet/wallet_transaction_store.py +44 -18
- chia/wallet/wallet_user_store.py +2 -2
- chia/wallet/wallet_weight_proof_handler.py +2 -2
- {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/LICENSE +1 -1
- {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/METADATA +67 -72
- chia_blockchain-2.5.1.dist-info/RECORD +1042 -0
- {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/WHEEL +1 -1
- mozilla-ca/cacert.pem +32 -87
- chia/_tests/cmds/wallet/test_coins.py +0 -195
- chia/consensus/block_root_validation.py +0 -46
- chia/util/api_decorators.py +0 -89
- chia_blockchain-2.5.0rc1.dist-info/RECORD +0 -1028
- {chia_blockchain-2.5.0rc1.dist-info → chia_blockchain-2.5.1.dist-info}/entry_points.txt +0 -0
chia/rpc/wallet_request_types.py
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
# pylint: disable=invalid-field-call
|
|
2
|
-
|
|
3
1
|
from __future__ import annotations
|
|
4
2
|
|
|
5
3
|
import sys
|
|
6
4
|
from dataclasses import dataclass, field
|
|
7
|
-
from typing import Any,
|
|
5
|
+
from typing import Any, Optional, TypeVar, final
|
|
8
6
|
|
|
9
7
|
from chia_rs import G1Element, G2Element, PrivateKey
|
|
10
8
|
from typing_extensions import dataclass_transform
|
|
11
9
|
|
|
12
10
|
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
11
|
+
from chia.util.byte_types import hexstr_to_bytes
|
|
13
12
|
from chia.util.ints import uint16, uint32, uint64
|
|
14
13
|
from chia.util.streamable import Streamable, streamable
|
|
15
14
|
from chia.wallet.conditions import Condition, ConditionValidTimes
|
|
@@ -26,14 +25,14 @@ from chia.wallet.trading.offer import Offer
|
|
|
26
25
|
from chia.wallet.transaction_record import TransactionRecord
|
|
27
26
|
from chia.wallet.util.clvm_streamable import json_deserialize_with_clvm_streamable
|
|
28
27
|
from chia.wallet.util.tx_config import TXConfig
|
|
29
|
-
from chia.wallet.vc_wallet.vc_store import VCRecord
|
|
28
|
+
from chia.wallet.vc_wallet.vc_store import VCProofs, VCRecord
|
|
30
29
|
from chia.wallet.wallet_spend_bundle import WalletSpendBundle
|
|
31
30
|
|
|
32
31
|
_T_OfferEndpointResponse = TypeVar("_T_OfferEndpointResponse", bound="_OfferEndpointResponse")
|
|
33
32
|
|
|
34
33
|
|
|
35
34
|
@dataclass_transform(frozen_default=True, kw_only_default=True)
|
|
36
|
-
def kw_only_dataclass(cls:
|
|
35
|
+
def kw_only_dataclass(cls: type[Any]) -> type[Any]:
|
|
37
36
|
if sys.version_info < (3, 10):
|
|
38
37
|
return dataclass(frozen=True)(cls) # pragma: no cover
|
|
39
38
|
else:
|
|
@@ -72,10 +71,10 @@ class GetLoggedInFingerprintResponse(Streamable):
|
|
|
72
71
|
@dataclass(frozen=True)
|
|
73
72
|
class GetPublicKeysResponse(Streamable):
|
|
74
73
|
keyring_is_locked: bool
|
|
75
|
-
public_key_fingerprints: Optional[
|
|
74
|
+
public_key_fingerprints: Optional[list[uint32]] = None
|
|
76
75
|
|
|
77
76
|
@property
|
|
78
|
-
def pk_fingerprints(self) ->
|
|
77
|
+
def pk_fingerprints(self) -> list[uint32]:
|
|
79
78
|
if self.keyring_is_locked:
|
|
80
79
|
raise RuntimeError("get_public_keys cannot return public keys because the keyring is locked")
|
|
81
80
|
else:
|
|
@@ -110,13 +109,13 @@ class GetPrivateKeyResponse(Streamable):
|
|
|
110
109
|
@streamable
|
|
111
110
|
@dataclass(frozen=True)
|
|
112
111
|
class GenerateMnemonicResponse(Streamable):
|
|
113
|
-
mnemonic:
|
|
112
|
+
mnemonic: list[str]
|
|
114
113
|
|
|
115
114
|
|
|
116
115
|
@streamable
|
|
117
116
|
@dataclass(frozen=True)
|
|
118
117
|
class AddKey(Streamable):
|
|
119
|
-
mnemonic:
|
|
118
|
+
mnemonic: list[str]
|
|
120
119
|
|
|
121
120
|
|
|
122
121
|
@streamable
|
|
@@ -147,10 +146,59 @@ class CheckDeleteKeyResponse(Streamable):
|
|
|
147
146
|
wallet_balance: bool
|
|
148
147
|
|
|
149
148
|
|
|
149
|
+
@streamable
|
|
150
|
+
@dataclass(frozen=True)
|
|
151
|
+
class SetWalletResyncOnStartup(Streamable):
|
|
152
|
+
enable: bool = True
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
@streamable
|
|
156
|
+
@dataclass(frozen=True)
|
|
157
|
+
class GetSyncStatusResponse(Streamable):
|
|
158
|
+
synced: bool
|
|
159
|
+
syncing: bool
|
|
160
|
+
genesis_initialized: bool = True
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
@streamable
|
|
164
|
+
@dataclass(frozen=True)
|
|
165
|
+
class GetHeightInfoResponse(Streamable):
|
|
166
|
+
height: uint32
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
@streamable
|
|
170
|
+
@dataclass(frozen=True)
|
|
171
|
+
class PushTX(Streamable):
|
|
172
|
+
spend_bundle: WalletSpendBundle
|
|
173
|
+
|
|
174
|
+
# We allow for flexibility in transaction parsing here so we need to override
|
|
175
|
+
@classmethod
|
|
176
|
+
def from_json_dict(cls, json_dict: dict[str, Any]) -> PushTX:
|
|
177
|
+
if isinstance(json_dict["spend_bundle"], str):
|
|
178
|
+
spend_bundle = WalletSpendBundle.from_bytes(hexstr_to_bytes(json_dict["spend_bundle"]))
|
|
179
|
+
else:
|
|
180
|
+
spend_bundle = WalletSpendBundle.from_json_dict(json_dict["spend_bundle"])
|
|
181
|
+
|
|
182
|
+
json_dict["spend_bundle"] = spend_bundle.to_json_dict()
|
|
183
|
+
return super().from_json_dict(json_dict)
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
@streamable
|
|
187
|
+
@dataclass(frozen=True)
|
|
188
|
+
class GetTimestampForHeight(Streamable):
|
|
189
|
+
height: uint32
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
@streamable
|
|
193
|
+
@dataclass(frozen=True)
|
|
194
|
+
class GetTimestampForHeightResponse(Streamable):
|
|
195
|
+
timestamp: uint64
|
|
196
|
+
|
|
197
|
+
|
|
150
198
|
@streamable
|
|
151
199
|
@dataclass(frozen=True)
|
|
152
200
|
class GetNotifications(Streamable):
|
|
153
|
-
ids: Optional[
|
|
201
|
+
ids: Optional[list[bytes32]] = None
|
|
154
202
|
start: Optional[uint32] = None
|
|
155
203
|
end: Optional[uint32] = None
|
|
156
204
|
|
|
@@ -158,7 +206,7 @@ class GetNotifications(Streamable):
|
|
|
158
206
|
@streamable
|
|
159
207
|
@dataclass(frozen=True)
|
|
160
208
|
class GetNotificationsResponse(Streamable):
|
|
161
|
-
notifications:
|
|
209
|
+
notifications: list[Notification]
|
|
162
210
|
|
|
163
211
|
|
|
164
212
|
@streamable
|
|
@@ -189,17 +237,17 @@ class GetTransactionMemo(Streamable):
|
|
|
189
237
|
@dataclass(frozen=True)
|
|
190
238
|
class CoinIDWithMemos(Streamable):
|
|
191
239
|
coin_id: bytes32
|
|
192
|
-
memos:
|
|
240
|
+
memos: list[bytes]
|
|
193
241
|
|
|
194
242
|
|
|
195
243
|
@streamable
|
|
196
244
|
@dataclass(frozen=True)
|
|
197
245
|
class GetTransactionMemoResponse(Streamable):
|
|
198
246
|
transaction_id: bytes32
|
|
199
|
-
coins_with_memos:
|
|
247
|
+
coins_with_memos: list[CoinIDWithMemos]
|
|
200
248
|
|
|
201
249
|
# TODO: deprecate the kinda silly format of this RPC and delete these functions
|
|
202
|
-
def to_json_dict(self) ->
|
|
250
|
+
def to_json_dict(self) -> dict[str, Any]:
|
|
203
251
|
return {
|
|
204
252
|
self.transaction_id.hex(): {
|
|
205
253
|
cwm.coin_id.hex(): [memo.hex() for memo in cwm.memos] for cwm in self.coins_with_memos
|
|
@@ -207,12 +255,12 @@ class GetTransactionMemoResponse(Streamable):
|
|
|
207
255
|
}
|
|
208
256
|
|
|
209
257
|
@classmethod
|
|
210
|
-
def from_json_dict(cls, json_dict:
|
|
258
|
+
def from_json_dict(cls, json_dict: dict[str, Any]) -> GetTransactionMemoResponse:
|
|
211
259
|
return cls(
|
|
212
|
-
bytes32.from_hexstr(
|
|
260
|
+
bytes32.from_hexstr(next(iter(json_dict.keys()))),
|
|
213
261
|
[
|
|
214
262
|
CoinIDWithMemos(bytes32.from_hexstr(coin_id), [bytes32.from_hexstr(memo) for memo in memos])
|
|
215
|
-
for coin_id, memos in
|
|
263
|
+
for coin_id, memos in next(iter(json_dict.values())).items()
|
|
216
264
|
],
|
|
217
265
|
)
|
|
218
266
|
|
|
@@ -236,7 +284,7 @@ class DefaultCAT(Streamable):
|
|
|
236
284
|
@streamable
|
|
237
285
|
@dataclass(frozen=True)
|
|
238
286
|
class GetCATListResponse(Streamable):
|
|
239
|
-
cat_list:
|
|
287
|
+
cat_list: list[DefaultCAT]
|
|
240
288
|
|
|
241
289
|
|
|
242
290
|
@streamable
|
|
@@ -265,7 +313,7 @@ class DIDGetRecoveryInfoResponse(Streamable):
|
|
|
265
313
|
coin_name: bytes32
|
|
266
314
|
newpuzhash: bytes32
|
|
267
315
|
pubkey: G1Element
|
|
268
|
-
backup_dids:
|
|
316
|
+
backup_dids: list[bytes32]
|
|
269
317
|
|
|
270
318
|
|
|
271
319
|
@streamable
|
|
@@ -316,7 +364,7 @@ class NFTWalletWithDID(Streamable):
|
|
|
316
364
|
@streamable
|
|
317
365
|
@dataclass(frozen=True)
|
|
318
366
|
class NFTGetWalletsWithDIDsResponse(Streamable):
|
|
319
|
-
nft_wallets:
|
|
367
|
+
nft_wallets: list[NFTWalletWithDID]
|
|
320
368
|
|
|
321
369
|
|
|
322
370
|
# utility for NFTSetDIDBulk
|
|
@@ -327,10 +375,125 @@ class NFTCoin(Streamable):
|
|
|
327
375
|
wallet_id: uint32
|
|
328
376
|
|
|
329
377
|
|
|
378
|
+
@streamable
|
|
379
|
+
@dataclass(frozen=True)
|
|
380
|
+
class VCGet(Streamable):
|
|
381
|
+
vc_id: bytes32
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
@streamable
|
|
385
|
+
@dataclass(frozen=True)
|
|
386
|
+
class VCGetResponse(Streamable):
|
|
387
|
+
vc_record: Optional[VCRecord]
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
@streamable
|
|
391
|
+
@dataclass(frozen=True)
|
|
392
|
+
class VCGetList(Streamable):
|
|
393
|
+
start: uint32 = uint32(0)
|
|
394
|
+
end: uint32 = uint32(50)
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
# utility for VC endpoints
|
|
398
|
+
@streamable
|
|
399
|
+
@dataclass(frozen=True)
|
|
400
|
+
class VCProofsRPC(Streamable):
|
|
401
|
+
key_value_pairs: list[tuple[str, str]]
|
|
402
|
+
|
|
403
|
+
def to_vc_proofs(self) -> VCProofs:
|
|
404
|
+
return VCProofs({key: value for key, value in self.key_value_pairs})
|
|
405
|
+
|
|
406
|
+
@classmethod
|
|
407
|
+
def from_vc_proofs(cls: type[_T_VCProofsRPC], vc_proofs: VCProofs) -> _T_VCProofsRPC:
|
|
408
|
+
return cls([(key, value) for key, value in vc_proofs.key_value_pairs.items()])
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
_T_VCProofsRPC = TypeVar("_T_VCProofsRPC", bound=VCProofsRPC)
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
# utility for VCGetListResponse
|
|
415
|
+
@streamable
|
|
416
|
+
@dataclass(frozen=True)
|
|
417
|
+
class VCProofWithHash(Streamable):
|
|
418
|
+
hash: bytes32
|
|
419
|
+
proof: Optional[VCProofsRPC]
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
# utility for VCGetListResponse
|
|
423
|
+
@final
|
|
424
|
+
@streamable
|
|
425
|
+
@dataclass(frozen=True)
|
|
426
|
+
class VCRecordWithCoinID(VCRecord):
|
|
427
|
+
coin_id: bytes32
|
|
428
|
+
|
|
429
|
+
@classmethod
|
|
430
|
+
def from_vc_record(cls, vc_record: VCRecord) -> VCRecordWithCoinID:
|
|
431
|
+
return cls(coin_id=vc_record.vc.coin.name(), **vc_record.__dict__)
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
@streamable
|
|
435
|
+
@dataclass(frozen=True)
|
|
436
|
+
class VCGetListResponse(Streamable):
|
|
437
|
+
vc_records: list[VCRecordWithCoinID]
|
|
438
|
+
proofs: list[VCProofWithHash]
|
|
439
|
+
|
|
440
|
+
@property
|
|
441
|
+
def proof_dict(self) -> dict[bytes32, Optional[dict[str, str]]]:
|
|
442
|
+
return {
|
|
443
|
+
pwh.hash: None if pwh.proof is None else {key: value for key, value in pwh.proof.key_value_pairs}
|
|
444
|
+
for pwh in self.proofs
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
def to_json_dict(self) -> dict[str, Any]:
|
|
448
|
+
return {
|
|
449
|
+
"vc_records": [vc_record.to_json_dict() for vc_record in self.vc_records],
|
|
450
|
+
"proofs": {proof_hash.hex(): proof_data for proof_hash, proof_data in self.proof_dict.items()},
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
@classmethod
|
|
454
|
+
def from_json_dict(cls, json_dict: dict[str, Any]) -> VCGetListResponse:
|
|
455
|
+
return cls(
|
|
456
|
+
[VCRecordWithCoinID.from_json_dict(vc_record) for vc_record in json_dict["vc_records"]],
|
|
457
|
+
[
|
|
458
|
+
VCProofWithHash(
|
|
459
|
+
bytes32.from_hexstr(proof_hash),
|
|
460
|
+
None if potential_proofs is None else VCProofsRPC.from_vc_proofs(VCProofs(potential_proofs)),
|
|
461
|
+
)
|
|
462
|
+
for proof_hash, potential_proofs in json_dict["proofs"].items()
|
|
463
|
+
],
|
|
464
|
+
)
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
@streamable
|
|
468
|
+
@dataclass(frozen=True)
|
|
469
|
+
class VCAddProofs(VCProofsRPC):
|
|
470
|
+
def to_json_dict(self) -> dict[str, Any]:
|
|
471
|
+
return {"proofs": self.to_vc_proofs().key_value_pairs}
|
|
472
|
+
|
|
473
|
+
@classmethod
|
|
474
|
+
def from_json_dict(cls: type[_T_VCAddProofs], json_dict: dict[str, Any]) -> _T_VCAddProofs:
|
|
475
|
+
return cls([(key, value) for key, value in json_dict["proofs"].items()])
|
|
476
|
+
|
|
477
|
+
|
|
478
|
+
_T_VCAddProofs = TypeVar("_T_VCAddProofs", bound=VCAddProofs)
|
|
479
|
+
|
|
480
|
+
|
|
481
|
+
@streamable
|
|
482
|
+
@dataclass(frozen=True)
|
|
483
|
+
class VCGetProofsForRoot(Streamable):
|
|
484
|
+
root: bytes32
|
|
485
|
+
|
|
486
|
+
|
|
487
|
+
@streamable
|
|
488
|
+
@dataclass(frozen=True)
|
|
489
|
+
class VCGetProofsForRootResponse(VCAddProofs):
|
|
490
|
+
pass
|
|
491
|
+
|
|
492
|
+
|
|
330
493
|
@streamable
|
|
331
494
|
@dataclass(frozen=True)
|
|
332
495
|
class GatherSigningInfo(Streamable):
|
|
333
|
-
spends:
|
|
496
|
+
spends: list[Spend]
|
|
334
497
|
|
|
335
498
|
|
|
336
499
|
@streamable
|
|
@@ -342,26 +505,26 @@ class GatherSigningInfoResponse(Streamable):
|
|
|
342
505
|
@streamable
|
|
343
506
|
@dataclass(frozen=True)
|
|
344
507
|
class ApplySignatures(Streamable):
|
|
345
|
-
spends:
|
|
346
|
-
signing_responses:
|
|
508
|
+
spends: list[Spend]
|
|
509
|
+
signing_responses: list[SigningResponse]
|
|
347
510
|
|
|
348
511
|
|
|
349
512
|
@streamable
|
|
350
513
|
@dataclass(frozen=True)
|
|
351
514
|
class ApplySignaturesResponse(Streamable):
|
|
352
|
-
signed_transactions:
|
|
515
|
+
signed_transactions: list[SignedTransaction]
|
|
353
516
|
|
|
354
517
|
|
|
355
518
|
@streamable
|
|
356
519
|
@dataclass(frozen=True)
|
|
357
520
|
class SubmitTransactions(Streamable):
|
|
358
|
-
signed_transactions:
|
|
521
|
+
signed_transactions: list[SignedTransaction]
|
|
359
522
|
|
|
360
523
|
|
|
361
524
|
@streamable
|
|
362
525
|
@dataclass(frozen=True)
|
|
363
526
|
class SubmitTransactionsResponse(Streamable):
|
|
364
|
-
mempool_ids:
|
|
527
|
+
mempool_ids: list[bytes32]
|
|
365
528
|
|
|
366
529
|
|
|
367
530
|
@streamable
|
|
@@ -374,7 +537,7 @@ class ExecuteSigningInstructions(Streamable):
|
|
|
374
537
|
@streamable
|
|
375
538
|
@dataclass(frozen=True)
|
|
376
539
|
class ExecuteSigningInstructionsResponse(Streamable):
|
|
377
|
-
signing_responses:
|
|
540
|
+
signing_responses: list[SigningResponse]
|
|
378
541
|
|
|
379
542
|
|
|
380
543
|
# When inheriting from this class you must set any non default arguments with:
|
|
@@ -385,8 +548,9 @@ class ExecuteSigningInstructionsResponse(Streamable):
|
|
|
385
548
|
class TransactionEndpointRequest(Streamable):
|
|
386
549
|
fee: uint64 = uint64(0)
|
|
387
550
|
push: Optional[bool] = None
|
|
551
|
+
sign: Optional[bool] = None
|
|
388
552
|
|
|
389
|
-
def to_json_dict(self, _avoid_ban: bool = False) ->
|
|
553
|
+
def to_json_dict(self, _avoid_ban: bool = False) -> dict[str, Any]:
|
|
390
554
|
if not _avoid_ban:
|
|
391
555
|
raise NotImplementedError(
|
|
392
556
|
"to_json_dict is banned on TransactionEndpointRequest, please use .json_serialize_for_transport"
|
|
@@ -395,8 +559,8 @@ class TransactionEndpointRequest(Streamable):
|
|
|
395
559
|
return super().to_json_dict()
|
|
396
560
|
|
|
397
561
|
def json_serialize_for_transport(
|
|
398
|
-
self, tx_config: TXConfig, extra_conditions:
|
|
399
|
-
) ->
|
|
562
|
+
self, tx_config: TXConfig, extra_conditions: tuple[Condition, ...], timelock_info: ConditionValidTimes
|
|
563
|
+
) -> dict[str, Any]:
|
|
400
564
|
return {
|
|
401
565
|
**tx_config.to_json_dict(),
|
|
402
566
|
**timelock_info.to_json_dict(),
|
|
@@ -408,8 +572,38 @@ class TransactionEndpointRequest(Streamable):
|
|
|
408
572
|
@streamable
|
|
409
573
|
@dataclass(frozen=True)
|
|
410
574
|
class TransactionEndpointResponse(Streamable):
|
|
411
|
-
unsigned_transactions:
|
|
412
|
-
transactions:
|
|
575
|
+
unsigned_transactions: list[UnsignedTransaction]
|
|
576
|
+
transactions: list[TransactionRecord]
|
|
577
|
+
|
|
578
|
+
|
|
579
|
+
@streamable
|
|
580
|
+
@dataclass(frozen=True)
|
|
581
|
+
class PushTransactions(TransactionEndpointRequest):
|
|
582
|
+
transactions: list[TransactionRecord] = field(default_factory=default_raise)
|
|
583
|
+
push: Optional[bool] = True
|
|
584
|
+
|
|
585
|
+
# We allow for flexibility in transaction parsing here so we need to override
|
|
586
|
+
@classmethod
|
|
587
|
+
def from_json_dict(cls, json_dict: dict[str, Any]) -> PushTransactions:
|
|
588
|
+
transactions: list[TransactionRecord] = []
|
|
589
|
+
for transaction_hexstr_or_json in json_dict["transactions"]:
|
|
590
|
+
if isinstance(transaction_hexstr_or_json, str):
|
|
591
|
+
tx = TransactionRecord.from_bytes(hexstr_to_bytes(transaction_hexstr_or_json))
|
|
592
|
+
else:
|
|
593
|
+
try:
|
|
594
|
+
tx = TransactionRecord.from_json_dict_convenience(transaction_hexstr_or_json)
|
|
595
|
+
except AttributeError:
|
|
596
|
+
tx = TransactionRecord.from_json_dict(transaction_hexstr_or_json)
|
|
597
|
+
transactions.append(tx)
|
|
598
|
+
|
|
599
|
+
json_dict["transactions"] = [tx.to_json_dict() for tx in transactions]
|
|
600
|
+
return super().from_json_dict(json_dict)
|
|
601
|
+
|
|
602
|
+
|
|
603
|
+
@streamable
|
|
604
|
+
@dataclass(frozen=True)
|
|
605
|
+
class PushTransactionsResponse(TransactionEndpointResponse):
|
|
606
|
+
pass
|
|
413
607
|
|
|
414
608
|
|
|
415
609
|
@streamable
|
|
@@ -431,9 +625,9 @@ class SplitCoinsResponse(TransactionEndpointResponse):
|
|
|
431
625
|
@kw_only_dataclass
|
|
432
626
|
class CombineCoins(TransactionEndpointRequest):
|
|
433
627
|
wallet_id: uint32 = field(default_factory=default_raise)
|
|
434
|
-
number_of_coins: uint16 =
|
|
628
|
+
number_of_coins: uint16 = uint16(500)
|
|
435
629
|
largest_first: bool = False
|
|
436
|
-
target_coin_ids:
|
|
630
|
+
target_coin_ids: list[bytes32] = field(default_factory=list)
|
|
437
631
|
target_coin_amount: Optional[uint64] = None
|
|
438
632
|
coin_num_limit: uint16 = uint16(500)
|
|
439
633
|
|
|
@@ -447,14 +641,14 @@ class CombineCoinsResponse(TransactionEndpointResponse):
|
|
|
447
641
|
@streamable
|
|
448
642
|
@kw_only_dataclass
|
|
449
643
|
class NFTSetDIDBulk(TransactionEndpointRequest):
|
|
450
|
-
nft_coin_list:
|
|
644
|
+
nft_coin_list: list[NFTCoin] = field(default_factory=default_raise)
|
|
451
645
|
did_id: Optional[str] = None
|
|
452
646
|
|
|
453
647
|
|
|
454
648
|
@streamable
|
|
455
649
|
@dataclass(frozen=True)
|
|
456
650
|
class NFTSetDIDBulkResponse(TransactionEndpointResponse):
|
|
457
|
-
wallet_id:
|
|
651
|
+
wallet_id: list[uint32]
|
|
458
652
|
tx_num: uint16
|
|
459
653
|
spend_bundle: WalletSpendBundle
|
|
460
654
|
|
|
@@ -462,18 +656,58 @@ class NFTSetDIDBulkResponse(TransactionEndpointResponse):
|
|
|
462
656
|
@streamable
|
|
463
657
|
@kw_only_dataclass
|
|
464
658
|
class NFTTransferBulk(TransactionEndpointRequest):
|
|
465
|
-
nft_coin_list:
|
|
659
|
+
nft_coin_list: list[NFTCoin] = field(default_factory=default_raise)
|
|
466
660
|
target_address: str = field(default_factory=default_raise)
|
|
467
661
|
|
|
468
662
|
|
|
469
663
|
@streamable
|
|
470
664
|
@dataclass(frozen=True)
|
|
471
665
|
class NFTTransferBulkResponse(TransactionEndpointResponse):
|
|
472
|
-
wallet_id:
|
|
666
|
+
wallet_id: list[uint32]
|
|
473
667
|
tx_num: uint16
|
|
474
668
|
spend_bundle: WalletSpendBundle
|
|
475
669
|
|
|
476
670
|
|
|
671
|
+
@streamable
|
|
672
|
+
@dataclass(frozen=True)
|
|
673
|
+
class VCMint(TransactionEndpointRequest):
|
|
674
|
+
did_id: str = field(default_factory=default_raise)
|
|
675
|
+
target_address: Optional[str] = None
|
|
676
|
+
|
|
677
|
+
|
|
678
|
+
@streamable
|
|
679
|
+
@dataclass(frozen=True)
|
|
680
|
+
class VCMintResponse(TransactionEndpointResponse):
|
|
681
|
+
vc_record: VCRecord
|
|
682
|
+
|
|
683
|
+
|
|
684
|
+
@streamable
|
|
685
|
+
@dataclass(frozen=True)
|
|
686
|
+
class VCSpend(TransactionEndpointRequest):
|
|
687
|
+
vc_id: bytes32 = field(default_factory=default_raise)
|
|
688
|
+
new_puzhash: Optional[bytes32] = None
|
|
689
|
+
new_proof_hash: Optional[bytes32] = None
|
|
690
|
+
provider_inner_puzhash: Optional[bytes32] = None
|
|
691
|
+
|
|
692
|
+
|
|
693
|
+
@streamable
|
|
694
|
+
@dataclass(frozen=True)
|
|
695
|
+
class VCSpendResponse(TransactionEndpointResponse):
|
|
696
|
+
pass
|
|
697
|
+
|
|
698
|
+
|
|
699
|
+
@streamable
|
|
700
|
+
@dataclass(frozen=True)
|
|
701
|
+
class VCRevoke(TransactionEndpointRequest):
|
|
702
|
+
vc_parent_id: bytes32 = field(default_factory=default_raise)
|
|
703
|
+
|
|
704
|
+
|
|
705
|
+
@streamable
|
|
706
|
+
@dataclass(frozen=True)
|
|
707
|
+
class VCRevokeResponse(TransactionEndpointResponse):
|
|
708
|
+
pass
|
|
709
|
+
|
|
710
|
+
|
|
477
711
|
# TODO: The section below needs corresponding request types
|
|
478
712
|
# TODO: The section below should be added to the API (currently only for client)
|
|
479
713
|
@streamable
|
|
@@ -493,7 +727,7 @@ class SendTransactionMultiResponse(TransactionEndpointResponse):
|
|
|
493
727
|
@streamable
|
|
494
728
|
@dataclass(frozen=True)
|
|
495
729
|
class CreateSignedTransactionsResponse(TransactionEndpointResponse):
|
|
496
|
-
signed_txs:
|
|
730
|
+
signed_txs: list[TransactionRecord]
|
|
497
731
|
signed_tx: TransactionRecord
|
|
498
732
|
|
|
499
733
|
|
|
@@ -537,7 +771,7 @@ class _OfferEndpointResponse(TransactionEndpointResponse):
|
|
|
537
771
|
trade_record: TradeRecord
|
|
538
772
|
|
|
539
773
|
@classmethod
|
|
540
|
-
def from_json_dict(cls:
|
|
774
|
+
def from_json_dict(cls: type[_T_OfferEndpointResponse], json_dict: dict[str, Any]) -> _T_OfferEndpointResponse:
|
|
541
775
|
tx_endpoint: TransactionEndpointResponse = json_deserialize_with_clvm_streamable(
|
|
542
776
|
json_dict, TransactionEndpointResponse
|
|
543
777
|
)
|
|
@@ -607,7 +841,7 @@ class NFTSetNFTDIDResponse(TransactionEndpointResponse):
|
|
|
607
841
|
@dataclass(frozen=True)
|
|
608
842
|
class NFTMintBulkResponse(TransactionEndpointResponse):
|
|
609
843
|
spend_bundle: WalletSpendBundle
|
|
610
|
-
nft_id_list:
|
|
844
|
+
nft_id_list: list[str]
|
|
611
845
|
|
|
612
846
|
|
|
613
847
|
@streamable
|
|
@@ -660,7 +894,7 @@ class DAOAddFundsToTreasuryResponse(TransactionEndpointResponse):
|
|
|
660
894
|
@dataclass(frozen=True)
|
|
661
895
|
class DAOSendToLockupResponse(TransactionEndpointResponse):
|
|
662
896
|
tx_id: bytes32
|
|
663
|
-
txs:
|
|
897
|
+
txs: list[TransactionRecord]
|
|
664
898
|
|
|
665
899
|
|
|
666
900
|
@streamable
|
|
@@ -668,21 +902,3 @@ class DAOSendToLockupResponse(TransactionEndpointResponse):
|
|
|
668
902
|
class DAOExitLockupResponse(TransactionEndpointResponse):
|
|
669
903
|
tx_id: bytes32
|
|
670
904
|
tx: TransactionRecord
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
@streamable
|
|
674
|
-
@dataclass(frozen=True)
|
|
675
|
-
class VCMintResponse(TransactionEndpointResponse):
|
|
676
|
-
vc_record: VCRecord
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
@streamable
|
|
680
|
-
@dataclass(frozen=True)
|
|
681
|
-
class VCSpendResponse(TransactionEndpointResponse):
|
|
682
|
-
pass
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
@streamable
|
|
686
|
-
@dataclass(frozen=True)
|
|
687
|
-
class VCRevokeResponse(TransactionEndpointResponse):
|
|
688
|
-
pass
|