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
|
@@ -4,7 +4,7 @@ import dataclasses
|
|
|
4
4
|
from dataclasses import dataclass, field
|
|
5
5
|
from enum import Enum, IntEnum
|
|
6
6
|
from hashlib import sha256
|
|
7
|
-
from typing import TYPE_CHECKING, Any,
|
|
7
|
+
from typing import TYPE_CHECKING, Any, Optional, Union
|
|
8
8
|
|
|
9
9
|
import aiosqlite
|
|
10
10
|
from typing_extensions import final
|
|
@@ -52,14 +52,14 @@ def key_hash(key: bytes) -> bytes32:
|
|
|
52
52
|
class PaginationData:
|
|
53
53
|
total_pages: int
|
|
54
54
|
total_bytes: int
|
|
55
|
-
hashes:
|
|
55
|
+
hashes: list[bytes32]
|
|
56
56
|
|
|
57
57
|
|
|
58
|
-
def get_hashes_for_page(page: int, lengths:
|
|
58
|
+
def get_hashes_for_page(page: int, lengths: dict[bytes32, int], max_page_size: int) -> PaginationData:
|
|
59
59
|
current_page = 0
|
|
60
60
|
current_page_size = 0
|
|
61
61
|
total_bytes = 0
|
|
62
|
-
hashes:
|
|
62
|
+
hashes: list[bytes32] = []
|
|
63
63
|
for hash, length in sorted(lengths.items(), key=lambda x: (-x[1], x[0])):
|
|
64
64
|
if length > max_page_size:
|
|
65
65
|
raise RuntimeError(
|
|
@@ -98,9 +98,9 @@ async def _dot_dump(
|
|
|
98
98
|
|
|
99
99
|
n = 8
|
|
100
100
|
|
|
101
|
-
dot_nodes:
|
|
102
|
-
dot_connections:
|
|
103
|
-
dot_pair_boxes:
|
|
101
|
+
dot_nodes: list[str] = []
|
|
102
|
+
dot_connections: list[str] = []
|
|
103
|
+
dot_pair_boxes: list[str] = []
|
|
104
104
|
|
|
105
105
|
for terminal_node in terminal_nodes:
|
|
106
106
|
hash = terminal_node.hash.hex()
|
|
@@ -245,7 +245,7 @@ other_side_to_bit = {Side.LEFT: 1, Side.RIGHT: 0}
|
|
|
245
245
|
class ProofOfInclusion:
|
|
246
246
|
node_hash: bytes32
|
|
247
247
|
# children before parents
|
|
248
|
-
layers:
|
|
248
|
+
layers: list[ProofOfInclusionLayer]
|
|
249
249
|
|
|
250
250
|
@property
|
|
251
251
|
def root_hash(self) -> bytes32:
|
|
@@ -257,7 +257,7 @@ class ProofOfInclusion:
|
|
|
257
257
|
def sibling_sides_integer(self) -> int:
|
|
258
258
|
return sum(other_side_to_bit[layer.other_hash_side] << index for index, layer in enumerate(self.layers))
|
|
259
259
|
|
|
260
|
-
def sibling_hashes(self) ->
|
|
260
|
+
def sibling_hashes(self) -> list[bytes32]:
|
|
261
261
|
return [layer.other_hash for layer in self.layers]
|
|
262
262
|
|
|
263
263
|
def as_program(self) -> Program:
|
|
@@ -366,7 +366,7 @@ class Root:
|
|
|
366
366
|
status=Status(row["status"]),
|
|
367
367
|
)
|
|
368
368
|
|
|
369
|
-
def to_row(self) ->
|
|
369
|
+
def to_row(self) -> dict[str, Any]:
|
|
370
370
|
return {
|
|
371
371
|
"tree_id": self.store_id,
|
|
372
372
|
"node_hash": self.node_hash,
|
|
@@ -375,7 +375,7 @@ class Root:
|
|
|
375
375
|
}
|
|
376
376
|
|
|
377
377
|
@classmethod
|
|
378
|
-
def unmarshal(cls, marshalled:
|
|
378
|
+
def unmarshal(cls, marshalled: dict[str, Any]) -> Root:
|
|
379
379
|
return cls(
|
|
380
380
|
store_id=bytes32.from_hexstr(marshalled["tree_id"]),
|
|
381
381
|
node_hash=None if marshalled["node_hash"] is None else bytes32.from_hexstr(marshalled["node_hash"]),
|
|
@@ -383,7 +383,7 @@ class Root:
|
|
|
383
383
|
status=Status(marshalled["status"]),
|
|
384
384
|
)
|
|
385
385
|
|
|
386
|
-
def marshal(self) ->
|
|
386
|
+
def marshal(self) -> dict[str, Any]:
|
|
387
387
|
return {
|
|
388
388
|
"tree_id": self.store_id.hex(),
|
|
389
389
|
"node_hash": None if self.node_hash is None else self.node_hash.hex(),
|
|
@@ -392,7 +392,7 @@ class Root:
|
|
|
392
392
|
}
|
|
393
393
|
|
|
394
394
|
|
|
395
|
-
node_type_to_class:
|
|
395
|
+
node_type_to_class: dict[NodeType, Union[type[InternalNode], type[TerminalNode]]] = {
|
|
396
396
|
NodeType.INTERNAL: InternalNode,
|
|
397
397
|
NodeType.TERMINAL: TerminalNode,
|
|
398
398
|
}
|
|
@@ -408,7 +408,7 @@ class ServerInfo:
|
|
|
408
408
|
@dataclass(frozen=True)
|
|
409
409
|
class Subscription:
|
|
410
410
|
store_id: bytes32
|
|
411
|
-
servers_info:
|
|
411
|
+
servers_info: list[ServerInfo]
|
|
412
412
|
|
|
413
413
|
|
|
414
414
|
@dataclass(frozen=True)
|
|
@@ -433,13 +433,13 @@ class KeyValue:
|
|
|
433
433
|
value: bytes
|
|
434
434
|
|
|
435
435
|
@classmethod
|
|
436
|
-
def unmarshal(cls, marshalled:
|
|
436
|
+
def unmarshal(cls, marshalled: dict[str, Any]) -> KeyValue:
|
|
437
437
|
return cls(
|
|
438
438
|
key=hexstr_to_bytes(marshalled["key"]),
|
|
439
439
|
value=hexstr_to_bytes(marshalled["value"]),
|
|
440
440
|
)
|
|
441
441
|
|
|
442
|
-
def marshal(self) ->
|
|
442
|
+
def marshal(self) -> dict[str, Any]:
|
|
443
443
|
return {
|
|
444
444
|
"key": self.key.hex(),
|
|
445
445
|
"value": self.value.hex(),
|
|
@@ -449,16 +449,16 @@ class KeyValue:
|
|
|
449
449
|
@dataclasses.dataclass(frozen=True)
|
|
450
450
|
class OfferStore:
|
|
451
451
|
store_id: bytes32
|
|
452
|
-
inclusions:
|
|
452
|
+
inclusions: tuple[KeyValue, ...]
|
|
453
453
|
|
|
454
454
|
@classmethod
|
|
455
|
-
def unmarshal(cls, marshalled:
|
|
455
|
+
def unmarshal(cls, marshalled: dict[str, Any]) -> OfferStore:
|
|
456
456
|
return cls(
|
|
457
457
|
store_id=bytes32.from_hexstr(marshalled["store_id"]),
|
|
458
458
|
inclusions=tuple(KeyValue.unmarshal(key_value) for key_value in marshalled["inclusions"]),
|
|
459
459
|
)
|
|
460
460
|
|
|
461
|
-
def marshal(self) ->
|
|
461
|
+
def marshal(self) -> dict[str, Any]:
|
|
462
462
|
return {
|
|
463
463
|
"store_id": self.store_id.hex(),
|
|
464
464
|
"inclusions": [key_value.marshal() for key_value in self.inclusions],
|
|
@@ -475,14 +475,14 @@ class Layer:
|
|
|
475
475
|
combined_hash: bytes32
|
|
476
476
|
|
|
477
477
|
@classmethod
|
|
478
|
-
def unmarshal(cls, marshalled:
|
|
478
|
+
def unmarshal(cls, marshalled: dict[str, Any]) -> Layer:
|
|
479
479
|
return cls(
|
|
480
480
|
other_hash_side=Side.unmarshal(marshalled["other_hash_side"]),
|
|
481
481
|
other_hash=bytes32.from_hexstr(marshalled["other_hash"]),
|
|
482
482
|
combined_hash=bytes32.from_hexstr(marshalled["combined_hash"]),
|
|
483
483
|
)
|
|
484
484
|
|
|
485
|
-
def marshal(self) ->
|
|
485
|
+
def marshal(self) -> dict[str, Any]:
|
|
486
486
|
return {
|
|
487
487
|
"other_hash_side": self.other_hash_side.marshal(),
|
|
488
488
|
"other_hash": self.other_hash.hex(),
|
|
@@ -492,19 +492,19 @@ class Layer:
|
|
|
492
492
|
|
|
493
493
|
@dataclasses.dataclass(frozen=True)
|
|
494
494
|
class MakeOfferRequest:
|
|
495
|
-
maker:
|
|
496
|
-
taker:
|
|
495
|
+
maker: tuple[OfferStore, ...]
|
|
496
|
+
taker: tuple[OfferStore, ...]
|
|
497
497
|
fee: Optional[uint64]
|
|
498
498
|
|
|
499
499
|
@classmethod
|
|
500
|
-
def unmarshal(cls, marshalled:
|
|
500
|
+
def unmarshal(cls, marshalled: dict[str, Any]) -> MakeOfferRequest:
|
|
501
501
|
return cls(
|
|
502
502
|
maker=tuple(OfferStore.unmarshal(offer_store) for offer_store in marshalled["maker"]),
|
|
503
503
|
taker=tuple(OfferStore.unmarshal(offer_store) for offer_store in marshalled["taker"]),
|
|
504
504
|
fee=None if marshalled["fee"] is None else uint64(marshalled["fee"]),
|
|
505
505
|
)
|
|
506
506
|
|
|
507
|
-
def marshal(self) ->
|
|
507
|
+
def marshal(self) -> dict[str, Any]:
|
|
508
508
|
return {
|
|
509
509
|
"maker": [offer_store.marshal() for offer_store in self.maker],
|
|
510
510
|
"taker": [offer_store.marshal() for offer_store in self.taker],
|
|
@@ -517,10 +517,10 @@ class Proof:
|
|
|
517
517
|
key: bytes
|
|
518
518
|
value: bytes
|
|
519
519
|
node_hash: bytes32
|
|
520
|
-
layers:
|
|
520
|
+
layers: tuple[Layer, ...]
|
|
521
521
|
|
|
522
522
|
@classmethod
|
|
523
|
-
def unmarshal(cls, marshalled:
|
|
523
|
+
def unmarshal(cls, marshalled: dict[str, Any]) -> Proof:
|
|
524
524
|
return cls(
|
|
525
525
|
key=hexstr_to_bytes(marshalled["key"]),
|
|
526
526
|
value=hexstr_to_bytes(marshalled["value"]),
|
|
@@ -534,7 +534,7 @@ class Proof:
|
|
|
534
534
|
|
|
535
535
|
return self.layers[-1].combined_hash
|
|
536
536
|
|
|
537
|
-
def marshal(self) ->
|
|
537
|
+
def marshal(self) -> dict[str, Any]:
|
|
538
538
|
return {
|
|
539
539
|
"key": self.key.hex(),
|
|
540
540
|
"value": self.value.hex(),
|
|
@@ -546,16 +546,16 @@ class Proof:
|
|
|
546
546
|
@dataclasses.dataclass(frozen=True)
|
|
547
547
|
class StoreProofs:
|
|
548
548
|
store_id: bytes32
|
|
549
|
-
proofs:
|
|
549
|
+
proofs: tuple[Proof, ...]
|
|
550
550
|
|
|
551
551
|
@classmethod
|
|
552
|
-
def unmarshal(cls, marshalled:
|
|
552
|
+
def unmarshal(cls, marshalled: dict[str, Any]) -> StoreProofs:
|
|
553
553
|
return cls(
|
|
554
554
|
store_id=bytes32.from_hexstr(marshalled["store_id"]),
|
|
555
555
|
proofs=tuple(Proof.unmarshal(proof) for proof in marshalled["proofs"]),
|
|
556
556
|
)
|
|
557
557
|
|
|
558
|
-
def marshal(self) ->
|
|
558
|
+
def marshal(self) -> dict[str, Any]:
|
|
559
559
|
return {
|
|
560
560
|
"store_id": self.store_id.hex(),
|
|
561
561
|
"proofs": [proof.marshal() for proof in self.proofs],
|
|
@@ -566,11 +566,11 @@ class StoreProofs:
|
|
|
566
566
|
class Offer:
|
|
567
567
|
trade_id: bytes
|
|
568
568
|
offer: bytes
|
|
569
|
-
taker:
|
|
570
|
-
maker:
|
|
569
|
+
taker: tuple[OfferStore, ...]
|
|
570
|
+
maker: tuple[StoreProofs, ...]
|
|
571
571
|
|
|
572
572
|
@classmethod
|
|
573
|
-
def unmarshal(cls, marshalled:
|
|
573
|
+
def unmarshal(cls, marshalled: dict[str, Any]) -> Offer:
|
|
574
574
|
return cls(
|
|
575
575
|
trade_id=bytes32.from_hexstr(marshalled["trade_id"]),
|
|
576
576
|
offer=hexstr_to_bytes(marshalled["offer"]),
|
|
@@ -578,7 +578,7 @@ class Offer:
|
|
|
578
578
|
maker=tuple(StoreProofs.unmarshal(store_proof) for store_proof in marshalled["maker"]),
|
|
579
579
|
)
|
|
580
580
|
|
|
581
|
-
def marshal(self) ->
|
|
581
|
+
def marshal(self) -> dict[str, Any]:
|
|
582
582
|
return {
|
|
583
583
|
"trade_id": self.trade_id.hex(),
|
|
584
584
|
"offer": self.offer.hex(),
|
|
@@ -593,13 +593,13 @@ class MakeOfferResponse:
|
|
|
593
593
|
offer: Offer
|
|
594
594
|
|
|
595
595
|
@classmethod
|
|
596
|
-
def unmarshal(cls, marshalled:
|
|
596
|
+
def unmarshal(cls, marshalled: dict[str, Any]) -> MakeOfferResponse:
|
|
597
597
|
return cls(
|
|
598
598
|
success=marshalled["success"],
|
|
599
599
|
offer=Offer.unmarshal(marshalled["offer"]),
|
|
600
600
|
)
|
|
601
601
|
|
|
602
|
-
def marshal(self) ->
|
|
602
|
+
def marshal(self) -> dict[str, Any]:
|
|
603
603
|
return {
|
|
604
604
|
"success": self.success,
|
|
605
605
|
"offer": self.offer.marshal(),
|
|
@@ -612,13 +612,13 @@ class TakeOfferRequest:
|
|
|
612
612
|
fee: Optional[uint64]
|
|
613
613
|
|
|
614
614
|
@classmethod
|
|
615
|
-
def unmarshal(cls, marshalled:
|
|
615
|
+
def unmarshal(cls, marshalled: dict[str, Any]) -> TakeOfferRequest:
|
|
616
616
|
return cls(
|
|
617
617
|
offer=Offer.unmarshal(marshalled["offer"]),
|
|
618
618
|
fee=None if marshalled["fee"] is None else uint64(marshalled["fee"]),
|
|
619
619
|
)
|
|
620
620
|
|
|
621
|
-
def marshal(self) ->
|
|
621
|
+
def marshal(self) -> dict[str, Any]:
|
|
622
622
|
return {
|
|
623
623
|
"offer": self.offer.marshal(),
|
|
624
624
|
"fee": None if self.fee is None else int(self.fee),
|
|
@@ -631,13 +631,13 @@ class TakeOfferResponse:
|
|
|
631
631
|
trade_id: bytes32
|
|
632
632
|
|
|
633
633
|
@classmethod
|
|
634
|
-
def unmarshal(cls, marshalled:
|
|
634
|
+
def unmarshal(cls, marshalled: dict[str, Any]) -> TakeOfferResponse:
|
|
635
635
|
return cls(
|
|
636
636
|
success=marshalled["success"],
|
|
637
637
|
trade_id=bytes32.from_hexstr(marshalled["trade_id"]),
|
|
638
638
|
)
|
|
639
639
|
|
|
640
|
-
def marshal(self) ->
|
|
640
|
+
def marshal(self) -> dict[str, Any]:
|
|
641
641
|
return {
|
|
642
642
|
"success": self.success,
|
|
643
643
|
"trade_id": self.trade_id.hex(),
|
|
@@ -653,7 +653,7 @@ class VerifyOfferResponse:
|
|
|
653
653
|
fee: Optional[uint64] = None
|
|
654
654
|
|
|
655
655
|
@classmethod
|
|
656
|
-
def unmarshal(cls, marshalled:
|
|
656
|
+
def unmarshal(cls, marshalled: dict[str, Any]) -> VerifyOfferResponse:
|
|
657
657
|
return cls(
|
|
658
658
|
success=marshalled["success"],
|
|
659
659
|
valid=marshalled["valid"],
|
|
@@ -661,7 +661,7 @@ class VerifyOfferResponse:
|
|
|
661
661
|
fee=None if marshalled["fee"] is None else uint64(marshalled["fee"]),
|
|
662
662
|
)
|
|
663
663
|
|
|
664
|
-
def marshal(self) ->
|
|
664
|
+
def marshal(self) -> dict[str, Any]:
|
|
665
665
|
return {
|
|
666
666
|
"success": self.success,
|
|
667
667
|
"valid": self.valid,
|
|
@@ -678,14 +678,14 @@ class CancelOfferRequest:
|
|
|
678
678
|
fee: Optional[uint64]
|
|
679
679
|
|
|
680
680
|
@classmethod
|
|
681
|
-
def unmarshal(cls, marshalled:
|
|
681
|
+
def unmarshal(cls, marshalled: dict[str, Any]) -> CancelOfferRequest:
|
|
682
682
|
return cls(
|
|
683
683
|
trade_id=bytes32.from_hexstr(marshalled["trade_id"]),
|
|
684
684
|
secure=marshalled["secure"],
|
|
685
685
|
fee=None if marshalled["fee"] is None else uint64(marshalled["fee"]),
|
|
686
686
|
)
|
|
687
687
|
|
|
688
|
-
def marshal(self) ->
|
|
688
|
+
def marshal(self) -> dict[str, Any]:
|
|
689
689
|
return {
|
|
690
690
|
"trade_id": self.trade_id.hex(),
|
|
691
691
|
"secure": self.secure,
|
|
@@ -698,12 +698,12 @@ class CancelOfferResponse:
|
|
|
698
698
|
success: bool
|
|
699
699
|
|
|
700
700
|
@classmethod
|
|
701
|
-
def unmarshal(cls, marshalled:
|
|
701
|
+
def unmarshal(cls, marshalled: dict[str, Any]) -> CancelOfferResponse:
|
|
702
702
|
return cls(
|
|
703
703
|
success=marshalled["success"],
|
|
704
704
|
)
|
|
705
705
|
|
|
706
|
-
def marshal(self) ->
|
|
706
|
+
def marshal(self) -> dict[str, Any]:
|
|
707
707
|
return {
|
|
708
708
|
"success": self.success,
|
|
709
709
|
}
|
|
@@ -715,12 +715,12 @@ class ClearPendingRootsRequest:
|
|
|
715
715
|
store_id: bytes32
|
|
716
716
|
|
|
717
717
|
@classmethod
|
|
718
|
-
def unmarshal(cls, marshalled:
|
|
718
|
+
def unmarshal(cls, marshalled: dict[str, Any]) -> ClearPendingRootsRequest:
|
|
719
719
|
return cls(
|
|
720
720
|
store_id=bytes32.from_hexstr(marshalled["store_id"]),
|
|
721
721
|
)
|
|
722
722
|
|
|
723
|
-
def marshal(self) ->
|
|
723
|
+
def marshal(self) -> dict[str, Any]:
|
|
724
724
|
return {
|
|
725
725
|
"store_id": self.store_id.hex(),
|
|
726
726
|
}
|
|
@@ -738,13 +738,13 @@ class ClearPendingRootsResponse:
|
|
|
738
738
|
# status: Status
|
|
739
739
|
|
|
740
740
|
@classmethod
|
|
741
|
-
def unmarshal(cls, marshalled:
|
|
741
|
+
def unmarshal(cls, marshalled: dict[str, Any]) -> ClearPendingRootsResponse:
|
|
742
742
|
return cls(
|
|
743
743
|
success=marshalled["success"],
|
|
744
744
|
root=None if marshalled["root"] is None else Root.unmarshal(marshalled["root"]),
|
|
745
745
|
)
|
|
746
746
|
|
|
747
|
-
def marshal(self) ->
|
|
747
|
+
def marshal(self) -> dict[str, Any]:
|
|
748
748
|
return {
|
|
749
749
|
"success": self.success,
|
|
750
750
|
"root": None if self.root is None else self.root.marshal(),
|
|
@@ -764,10 +764,10 @@ class SyncStatus:
|
|
|
764
764
|
class PluginRemote:
|
|
765
765
|
url: str
|
|
766
766
|
# repr=False to avoid leaking secrets
|
|
767
|
-
headers:
|
|
767
|
+
headers: dict[str, str] = dataclasses.field(default_factory=dict, hash=False, repr=False)
|
|
768
768
|
|
|
769
769
|
@classmethod
|
|
770
|
-
def unmarshal(cls, marshalled:
|
|
770
|
+
def unmarshal(cls, marshalled: dict[str, Any]) -> PluginRemote:
|
|
771
771
|
return cls(
|
|
772
772
|
url=marshalled["url"],
|
|
773
773
|
headers=marshalled.get("headers", {}),
|
|
@@ -776,10 +776,10 @@ class PluginRemote:
|
|
|
776
776
|
|
|
777
777
|
@dataclasses.dataclass(frozen=True)
|
|
778
778
|
class PluginStatus:
|
|
779
|
-
uploaders:
|
|
780
|
-
downloaders:
|
|
779
|
+
uploaders: dict[str, dict[str, Any]]
|
|
780
|
+
downloaders: dict[str, dict[str, Any]]
|
|
781
781
|
|
|
782
|
-
def marshal(self) ->
|
|
782
|
+
def marshal(self) -> dict[str, Any]:
|
|
783
783
|
return {
|
|
784
784
|
"plugin_status": {
|
|
785
785
|
"uploaders": self.uploaders,
|
|
@@ -802,9 +802,9 @@ class UnsubscribeData:
|
|
|
802
802
|
|
|
803
803
|
@dataclasses.dataclass(frozen=True)
|
|
804
804
|
class KeysValuesCompressed:
|
|
805
|
-
keys_values_hashed:
|
|
806
|
-
key_hash_to_length:
|
|
807
|
-
leaf_hash_to_length:
|
|
805
|
+
keys_values_hashed: dict[bytes32, bytes32]
|
|
806
|
+
key_hash_to_length: dict[bytes32, int]
|
|
807
|
+
leaf_hash_to_length: dict[bytes32, int]
|
|
808
808
|
root_hash: Optional[bytes32]
|
|
809
809
|
|
|
810
810
|
|
|
@@ -812,7 +812,7 @@ class KeysValuesCompressed:
|
|
|
812
812
|
class KeysPaginationData:
|
|
813
813
|
total_pages: int
|
|
814
814
|
total_bytes: int
|
|
815
|
-
keys:
|
|
815
|
+
keys: list[bytes]
|
|
816
816
|
root_hash: Optional[bytes32]
|
|
817
817
|
|
|
818
818
|
|
|
@@ -820,7 +820,7 @@ class KeysPaginationData:
|
|
|
820
820
|
class KeysValuesPaginationData:
|
|
821
821
|
total_pages: int
|
|
822
822
|
total_bytes: int
|
|
823
|
-
keys_values:
|
|
823
|
+
keys_values: list[TerminalNode]
|
|
824
824
|
root_hash: Optional[bytes32]
|
|
825
825
|
|
|
826
826
|
|
|
@@ -828,7 +828,7 @@ class KeysValuesPaginationData:
|
|
|
828
828
|
class KVDiffPaginationData:
|
|
829
829
|
total_pages: int
|
|
830
830
|
total_bytes: int
|
|
831
|
-
kv_diff:
|
|
831
|
+
kv_diff: list[DiffData]
|
|
832
832
|
|
|
833
833
|
|
|
834
834
|
#
|
|
@@ -849,7 +849,7 @@ class HashOnlyProof(Streamable):
|
|
|
849
849
|
key_clvm_hash: bytes32
|
|
850
850
|
value_clvm_hash: bytes32
|
|
851
851
|
node_hash: bytes32
|
|
852
|
-
layers:
|
|
852
|
+
layers: list[ProofLayer]
|
|
853
853
|
|
|
854
854
|
def root(self) -> bytes32:
|
|
855
855
|
if len(self.layers) == 0:
|
|
@@ -857,7 +857,7 @@ class HashOnlyProof(Streamable):
|
|
|
857
857
|
return self.layers[-1].combined_hash
|
|
858
858
|
|
|
859
859
|
@classmethod
|
|
860
|
-
def from_key_value(cls, key: bytes, value: bytes, node_hash: bytes32, layers:
|
|
860
|
+
def from_key_value(cls, key: bytes, value: bytes, node_hash: bytes32, layers: list[ProofLayer]) -> HashOnlyProof:
|
|
861
861
|
return cls(
|
|
862
862
|
key_clvm_hash=Program.to(key).get_tree_hash(),
|
|
863
863
|
value_clvm_hash=Program.to(value).get_tree_hash(),
|
|
@@ -877,21 +877,21 @@ class KeyValueHashes(Streamable):
|
|
|
877
877
|
@dataclasses.dataclass(frozen=True)
|
|
878
878
|
class ProofResultInclusions(Streamable):
|
|
879
879
|
store_id: bytes32
|
|
880
|
-
inclusions:
|
|
880
|
+
inclusions: list[KeyValueHashes]
|
|
881
881
|
|
|
882
882
|
|
|
883
883
|
@streamable
|
|
884
884
|
@dataclasses.dataclass(frozen=True)
|
|
885
885
|
class GetProofRequest(Streamable):
|
|
886
886
|
store_id: bytes32
|
|
887
|
-
keys:
|
|
887
|
+
keys: list[bytes]
|
|
888
888
|
|
|
889
889
|
|
|
890
890
|
@streamable
|
|
891
891
|
@dataclasses.dataclass(frozen=True)
|
|
892
892
|
class StoreProofsHashes(Streamable):
|
|
893
893
|
store_id: bytes32
|
|
894
|
-
proofs:
|
|
894
|
+
proofs: list[HashOnlyProof]
|
|
895
895
|
|
|
896
896
|
|
|
897
897
|
@streamable
|
|
@@ -917,10 +917,10 @@ class VerifyProofResponse(Streamable):
|
|
|
917
917
|
success: bool
|
|
918
918
|
|
|
919
919
|
|
|
920
|
-
def dl_verify_proof_internal(dl_proof: DLProof, puzzle_hash: bytes32) ->
|
|
920
|
+
def dl_verify_proof_internal(dl_proof: DLProof, puzzle_hash: bytes32) -> list[KeyValueHashes]:
|
|
921
921
|
"""Verify a proof of inclusion for a DL singleton"""
|
|
922
922
|
|
|
923
|
-
verified_keys:
|
|
923
|
+
verified_keys: list[KeyValueHashes] = []
|
|
924
924
|
|
|
925
925
|
for reference_proof in dl_proof.store_proofs.proofs:
|
|
926
926
|
inner_puz_hash = dl_proof.inner_puzzle_hash
|
|
@@ -962,10 +962,10 @@ def dl_verify_proof_internal(dl_proof: DLProof, puzzle_hash: bytes32) -> List[Ke
|
|
|
962
962
|
|
|
963
963
|
|
|
964
964
|
async def dl_verify_proof(
|
|
965
|
-
request:
|
|
965
|
+
request: dict[str, Any],
|
|
966
966
|
wallet_node: WalletNode,
|
|
967
967
|
peer: WSChiaConnection,
|
|
968
|
-
) ->
|
|
968
|
+
) -> dict[str, Any]:
|
|
969
969
|
"""Verify a proof of inclusion for a DL singleton"""
|
|
970
970
|
|
|
971
971
|
dlproof = DLProof.from_json_dict(request)
|