Full Code of casper-network/casper-node for AI

dev 0abd7c213b8a cached
1607 files
13.8 MB
3.7M tokens
21091 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (14,842K chars total). Download the full file to get everything.
Repository: casper-network/casper-node
Branch: dev
Commit: 0abd7c213b8a
Files: 1607
Total size: 13.8 MB

Directory structure:
gitextract_33g3gk_3/

├── .drone.yml
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   └── feedback.yml
│   ├── pull_request_template.md
│   └── workflows/
│       ├── casper-node.yml
│       ├── lints-md.yml
│       ├── publish-global-state-update-gen.yml
│       ├── publish-release-and-crates.yml
│       └── push-artifacts.yml
├── .gitignore
├── Cargo.toml
├── LICENSE
├── Makefile
├── README.md
├── binary_port/
│   ├── CHANGELOG.md
│   ├── Cargo.toml
│   ├── README.md
│   └── src/
│       ├── balance_response.rs
│       ├── binary_message.rs
│       ├── binary_response.rs
│       ├── binary_response_and_request.rs
│       ├── binary_response_header.rs
│       ├── command.rs
│       ├── dictionary_item_identifier.rs
│       ├── entity_qualifier.rs
│       ├── era_identifier.rs
│       ├── error.rs
│       ├── error_code.rs
│       ├── get_request.rs
│       ├── global_state_query_result.rs
│       ├── information_request.rs
│       ├── key_prefix.rs
│       ├── lib.rs
│       ├── minimal_block_info.rs
│       ├── node_status.rs
│       ├── purse_identifier.rs
│       ├── record_id.rs
│       ├── response_type.rs
│       ├── speculative_execution_result.rs
│       ├── state_request.rs
│       └── type_wrappers.rs
├── bors.toml
├── build_wasm_package.sh
├── cargo_casper/
│   ├── Cargo.toml
│   ├── build.rs
│   ├── project_template/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── src/
│   │   ├── cli/
│   │   │   ├── build.rs
│   │   │   ├── build_schema/
│   │   │   │   └── artifact.rs
│   │   │   ├── build_schema.rs
│   │   │   └── new.rs
│   │   ├── cli.rs
│   │   ├── compilation.rs
│   │   ├── main.rs
│   │   ├── utils/
│   │   │   └── command_runner.rs
│   │   └── utils.rs
│   └── test.py
├── ci/
│   ├── build_update_package.sh
│   ├── casper_updater/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       ├── dependent_file.rs
│   │       ├── main.rs
│   │       ├── package.rs
│   │       └── regex_data.rs
│   ├── check_cpu_features.sh
│   ├── ci.json
│   ├── cpu-features-1.4.13-release.txt
│   ├── markdown-link-check-config.json
│   ├── markdown_link_check.sh
│   ├── nctl_compile.sh
│   ├── nctl_upgrade.sh
│   ├── nctl_upgrade_stage.sh
│   ├── nightly-test.sh
│   ├── publish_deb_to_repo.sh
│   ├── publish_to_crates_io.sh
│   ├── test_casper-node_deb.sh
│   ├── test_deb_install.sh
│   └── upgrade_package_s3_storage.sh
├── docker_make.sh
├── execution_engine/
│   ├── CHANGELOG.md
│   ├── Cargo.toml
│   ├── README.md
│   ├── benches/
│   │   └── trie_bench.rs
│   └── src/
│       ├── bin/
│       │   └── run_wasm.rs
│       ├── engine_state/
│       │   ├── engine_config.rs
│       │   ├── error.rs
│       │   ├── execution_kind.rs
│       │   ├── mod.rs
│       │   └── wasm_v1.rs
│       ├── execution/
│       │   ├── error.rs
│       │   ├── executor.rs
│       │   └── mod.rs
│       ├── lib.rs
│       ├── resolvers/
│       │   ├── error.rs
│       │   ├── memory_resolver.rs
│       │   ├── mod.rs
│       │   ├── v1_function_index.rs
│       │   └── v1_resolver.rs
│       ├── runtime/
│       │   ├── args.rs
│       │   ├── auction_internal.rs
│       │   ├── cryptography.rs
│       │   ├── externals.rs
│       │   ├── handle_payment_internal.rs
│       │   ├── host_function_flag.rs
│       │   ├── mint_internal.rs
│       │   ├── mod.rs
│       │   ├── stack.rs
│       │   ├── standard_payment_internal.rs
│       │   ├── utils.rs
│       │   └── wasm_prep.rs
│       └── runtime_context/
│           ├── mod.rs
│           └── tests.rs
├── execution_engine_testing/
│   ├── test_support/
│   │   ├── CHANGELOG.md
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── build.rs
│   │   ├── src/
│   │   │   ├── chainspec_config.rs
│   │   │   ├── deploy_item.rs
│   │   │   ├── deploy_item_builder.rs
│   │   │   ├── execute_request_builder.rs
│   │   │   ├── genesis_config_builder.rs
│   │   │   ├── lib.rs
│   │   │   ├── step_request_builder.rs
│   │   │   ├── transfer_request_builder.rs
│   │   │   ├── upgrade_request_builder.rs
│   │   │   ├── utils.rs
│   │   │   └── wasm_test_builder.rs
│   │   └── tests/
│   │       └── version_numbers.rs
│   └── tests/
│       ├── Cargo.toml
│       ├── fixtures/
│       │   ├── call_stack_fixture/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── counter_contract/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── delegator_amount/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── disabled_versions/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── gh_3208/
│       │   │   ├── global_state/
│       │   │   │   └── data.lmdb
│       │   │   └── state.json
│       │   ├── gh_3710/
│       │   │   ├── global_state/
│       │   │   │   └── data.lmdb
│       │   │   └── state.json
│       │   ├── groups/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── release_1_2_0/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── release_1_3_1/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── release_1_4_2/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── release_1_4_3/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── release_1_4_4/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── release_1_4_5/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── release_1_5_8/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── three_version_fixture/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── upgrade_thresholds/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   └── validator_minimum_bid/
│       │       ├── global_state/
│       │       │   ├── data.lmdb
│       │       │   └── data.lmdb-lock
│       │       └── state.json
│       └── src/
│           ├── lib.rs
│           ├── lmdb_fixture.rs
│           ├── test/
│           │   ├── calling_packages_by_version_query.rs
│           │   ├── chainspec_registry.rs
│           │   ├── check_transfer_success.rs
│           │   ├── contract_api/
│           │   │   ├── account/
│           │   │   │   ├── associated_keys.rs
│           │   │   │   ├── authorized_keys.rs
│           │   │   │   ├── key_management_thresholds.rs
│           │   │   │   ├── mod.rs
│           │   │   │   ├── named_keys.rs
│           │   │   │   └── named_keys_stored.rs
│           │   │   ├── add_contract_version.rs
│           │   │   ├── auction.rs
│           │   │   ├── create_purse.rs
│           │   │   ├── dictionary.rs
│           │   │   ├── generic_hash.rs
│           │   │   ├── get_arg.rs
│           │   │   ├── get_block_info.rs
│           │   │   ├── get_blocktime.rs
│           │   │   ├── get_call_stack.rs
│           │   │   ├── get_caller.rs
│           │   │   ├── get_phase.rs
│           │   │   ├── list_authorization_keys.rs
│           │   │   ├── list_named_keys.rs
│           │   │   ├── main_purse.rs
│           │   │   ├── mint_purse.rs
│           │   │   ├── mod.rs
│           │   │   ├── multisig_authorization.rs
│           │   │   ├── named_dictionaries.rs
│           │   │   ├── recover_secp256k1.rs
│           │   │   ├── revert.rs
│           │   │   ├── runtime.rs
│           │   │   ├── subcall.rs
│           │   │   ├── transfer.rs
│           │   │   ├── transfer_cached.rs
│           │   │   └── verify_signature.rs
│           │   ├── contract_context.rs
│           │   ├── contract_messages.rs
│           │   ├── counter_factory.rs
│           │   ├── deploy/
│           │   │   ├── context_association.rs
│           │   │   ├── mod.rs
│           │   │   ├── non_standard_payment.rs
│           │   │   ├── preconditions.rs
│           │   │   ├── receipts.rs
│           │   │   └── stored_contracts.rs
│           │   ├── explorer/
│           │   │   ├── faucet.rs
│           │   │   ├── faucet_test_helpers.rs
│           │   │   └── mod.rs
│           │   ├── get_balance.rs
│           │   ├── groups.rs
│           │   ├── host_function_costs.rs
│           │   ├── manage_groups.rs
│           │   ├── mod.rs
│           │   ├── private_chain/
│           │   │   ├── fees_accumulation.rs
│           │   │   ├── management.rs
│           │   │   ├── restricted_auction.rs
│           │   │   └── unrestricted_transfers.rs
│           │   ├── private_chain.rs
│           │   ├── regression/
│           │   │   ├── ee_1045.rs
│           │   │   ├── ee_1071.rs
│           │   │   ├── ee_1103.rs
│           │   │   ├── ee_1119.rs
│           │   │   ├── ee_1120.rs
│           │   │   ├── ee_1129.rs
│           │   │   ├── ee_1152.rs
│           │   │   ├── ee_1160.rs
│           │   │   ├── ee_1163.rs
│           │   │   ├── ee_1174.rs
│           │   │   ├── ee_1217.rs
│           │   │   ├── ee_1225.rs
│           │   │   ├── ee_221.rs
│           │   │   ├── ee_401.rs
│           │   │   ├── ee_441.rs
│           │   │   ├── ee_460.rs
│           │   │   ├── ee_468.rs
│           │   │   ├── ee_470.rs
│           │   │   ├── ee_532.rs
│           │   │   ├── ee_536.rs
│           │   │   ├── ee_539.rs
│           │   │   ├── ee_549.rs
│           │   │   ├── ee_550.rs
│           │   │   ├── ee_572.rs
│           │   │   ├── ee_584.rs
│           │   │   ├── ee_597.rs
│           │   │   ├── ee_598.rs
│           │   │   ├── ee_599.rs
│           │   │   ├── ee_601.rs
│           │   │   ├── ee_771.rs
│           │   │   ├── ee_890.rs
│           │   │   ├── ee_966.rs
│           │   │   ├── gh_1470.rs
│           │   │   ├── gh_1688.rs
│           │   │   ├── gh_1902.rs
│           │   │   ├── gh_1931.rs
│           │   │   ├── gh_2280.rs
│           │   │   ├── gh_3097.rs
│           │   │   ├── gh_3208.rs
│           │   │   ├── gh_3710.rs
│           │   │   ├── gh_4898.rs
│           │   │   ├── gov_116.rs
│           │   │   ├── gov_42.rs
│           │   │   ├── gov_427.rs
│           │   │   ├── gov_74.rs
│           │   │   ├── gov_89_regression.rs
│           │   │   ├── host_function_metrics_size_and_gas_cost.rs
│           │   │   ├── mod.rs
│           │   │   ├── regression_20210707.rs
│           │   │   ├── regression_20210831.rs
│           │   │   ├── regression_20210924.rs
│           │   │   ├── regression_20211110.rs
│           │   │   ├── regression_20220119.rs
│           │   │   ├── regression_20220204.rs
│           │   │   ├── regression_20220207.rs
│           │   │   ├── regression_20220208.rs
│           │   │   ├── regression_20220211.rs
│           │   │   ├── regression_20220217.rs
│           │   │   ├── regression_20220221.rs
│           │   │   ├── regression_20220222.rs
│           │   │   ├── regression_20220223.rs
│           │   │   ├── regression_20220224.rs
│           │   │   ├── regression_20220303.rs
│           │   │   ├── regression_20220727.rs
│           │   │   ├── regression_20240105.rs
│           │   │   ├── regression_20250812.rs
│           │   │   ├── slow_input.rs
│           │   │   ├── test_utils.rs
│           │   │   └── transforms_must_be_ordered.rs
│           │   ├── stack_overflow.rs
│           │   ├── step.rs
│           │   ├── storage_costs.rs
│           │   ├── system_contracts/
│           │   │   ├── auction/
│           │   │   │   ├── bids.rs
│           │   │   │   ├── distribute.rs
│           │   │   │   ├── mod.rs
│           │   │   │   └── reservations.rs
│           │   │   ├── auction_bidding.rs
│           │   │   ├── genesis.rs
│           │   │   ├── handle_payment/
│           │   │   │   ├── finalize_payment.rs
│           │   │   │   ├── get_payment_purse.rs
│           │   │   │   ├── mod.rs
│           │   │   │   └── refund_purse.rs
│           │   │   ├── mint.rs
│           │   │   ├── mod.rs
│           │   │   ├── standard_payment.rs
│           │   │   └── upgrade.rs
│           │   ├── system_costs.rs
│           │   ├── tutorial/
│           │   │   ├── counter.rs
│           │   │   └── hello_world.rs
│           │   ├── tutorial.rs
│           │   ├── upgrade.rs
│           │   ├── vm2_tests.rs
│           │   └── wasmless_transfer.rs
│           └── wasm_utils.rs
├── executor/
│   ├── wasm/
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   ├── install.rs
│   │   │   ├── lib.rs
│   │   │   └── system.rs
│   │   └── tests/
│   │       └── integration.rs
│   ├── wasm_common/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── chain_utils.rs
│   │       ├── entry_point.rs
│   │       ├── env_info.rs
│   │       ├── error.rs
│   │       ├── flags.rs
│   │       ├── keyspace.rs
│   │       └── lib.rs
│   ├── wasm_host/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── abi.rs
│   │       ├── context.rs
│   │       ├── host.rs
│   │       ├── lib.rs
│   │       └── system.rs
│   ├── wasm_interface/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── executor.rs
│   │       └── lib.rs
│   └── wasmer_backend/
│       ├── Cargo.toml
│       └── src/
│           ├── imports.rs
│           ├── lib.rs
│           ├── middleware/
│           │   ├── gas_metering.rs
│           │   └── gatekeeper.rs
│           └── middleware.rs
├── generate-chainspec.sh
├── node/
│   ├── BINARY_PORT_PROTOCOL.md
│   ├── CHANGELOG.md
│   ├── Cargo.toml
│   ├── README.md
│   ├── build.rs
│   ├── proptest-regressions/
│   │   └── components/
│   │       └── diagnostics_port/
│   │           └── stop_at.txt
│   └── src/
│       ├── app/
│       │   └── main.rs
│       ├── cli/
│       │   └── arglang.rs
│       ├── cli.rs
│       ├── components/
│       │   ├── binary_port/
│       │   │   ├── config.rs
│       │   │   ├── connection_terminator.rs
│       │   │   ├── error.rs
│       │   │   ├── event.rs
│       │   │   ├── metrics.rs
│       │   │   ├── rate_limiter.rs
│       │   │   └── tests.rs
│       │   ├── binary_port.rs
│       │   ├── block_accumulator/
│       │   │   ├── block_acceptor.rs
│       │   │   ├── config.rs
│       │   │   ├── error.rs
│       │   │   ├── event.rs
│       │   │   ├── leap_instruction.rs
│       │   │   ├── local_tip_identifier.rs
│       │   │   ├── metrics.rs
│       │   │   ├── sync_identifier.rs
│       │   │   ├── sync_instruction.rs
│       │   │   └── tests.rs
│       │   ├── block_accumulator.rs
│       │   ├── block_synchronizer/
│       │   │   ├── block_acquisition.rs
│       │   │   ├── block_acquisition_action.rs
│       │   │   ├── block_builder/
│       │   │   │   ├── latch.rs
│       │   │   │   └── tests.rs
│       │   │   ├── block_builder.rs
│       │   │   ├── block_synchronizer_progress.rs
│       │   │   ├── config.rs
│       │   │   ├── error.rs
│       │   │   ├── event.rs
│       │   │   ├── execution_results_acquisition/
│       │   │   │   └── tests.rs
│       │   │   ├── execution_results_acquisition.rs
│       │   │   ├── global_state_synchronizer/
│       │   │   │   └── tests.rs
│       │   │   ├── global_state_synchronizer.rs
│       │   │   ├── metrics.rs
│       │   │   ├── need_next.rs
│       │   │   ├── peer_list/
│       │   │   │   └── tests.rs
│       │   │   ├── peer_list.rs
│       │   │   ├── signature_acquisition.rs
│       │   │   ├── tests/
│       │   │   │   └── test_utils.rs
│       │   │   ├── tests.rs
│       │   │   ├── transaction_acquisition/
│       │   │   │   └── tests.rs
│       │   │   ├── transaction_acquisition.rs
│       │   │   ├── trie_accumulator/
│       │   │   │   └── tests.rs
│       │   │   └── trie_accumulator.rs
│       │   ├── block_synchronizer.rs
│       │   ├── block_validator/
│       │   │   ├── config.rs
│       │   │   ├── event.rs
│       │   │   ├── state.rs
│       │   │   └── tests.rs
│       │   ├── block_validator.rs
│       │   ├── consensus/
│       │   │   ├── cl_context.rs
│       │   │   ├── config.rs
│       │   │   ├── consensus_protocol.rs
│       │   │   ├── era_supervisor/
│       │   │   │   ├── debug.rs
│       │   │   │   └── era.rs
│       │   │   ├── era_supervisor.rs
│       │   │   ├── error.rs
│       │   │   ├── highway_core/
│       │   │   │   ├── active_validator.rs
│       │   │   │   ├── endorsement.rs
│       │   │   │   ├── evidence.rs
│       │   │   │   ├── finality_detector/
│       │   │   │   │   └── horizon.rs
│       │   │   │   ├── finality_detector.rs
│       │   │   │   ├── highway/
│       │   │   │   │   └── vertex.rs
│       │   │   │   ├── highway.rs
│       │   │   │   ├── highway_testing.rs
│       │   │   │   ├── state/
│       │   │   │   │   ├── block.rs
│       │   │   │   │   ├── index_panorama.rs
│       │   │   │   │   ├── panorama.rs
│       │   │   │   │   ├── params.rs
│       │   │   │   │   ├── tallies.rs
│       │   │   │   │   ├── tests.rs
│       │   │   │   │   └── unit.rs
│       │   │   │   ├── state.rs
│       │   │   │   ├── synchronizer/
│       │   │   │   │   └── tests.rs
│       │   │   │   ├── synchronizer.rs
│       │   │   │   └── test_macros.rs
│       │   │   ├── highway_core.rs
│       │   │   ├── leader_sequence.rs
│       │   │   ├── metrics.rs
│       │   │   ├── protocols/
│       │   │   │   ├── common.rs
│       │   │   │   ├── highway/
│       │   │   │   │   ├── config.rs
│       │   │   │   │   ├── participation.rs
│       │   │   │   │   ├── round_success_meter/
│       │   │   │   │   │   ├── config.rs
│       │   │   │   │   │   └── tests.rs
│       │   │   │   │   ├── round_success_meter.rs
│       │   │   │   │   └── tests.rs
│       │   │   │   ├── highway.rs
│       │   │   │   ├── zug/
│       │   │   │   │   ├── config.rs
│       │   │   │   │   ├── des_testing.rs
│       │   │   │   │   ├── fault.rs
│       │   │   │   │   ├── message.rs
│       │   │   │   │   ├── params.rs
│       │   │   │   │   ├── participation.rs
│       │   │   │   │   ├── proposal.rs
│       │   │   │   │   ├── round.rs
│       │   │   │   │   └── tests.rs
│       │   │   │   └── zug.rs
│       │   │   ├── protocols.rs
│       │   │   ├── tests/
│       │   │   │   ├── consensus_des_testing.rs
│       │   │   │   ├── queue.rs
│       │   │   │   └── utils.rs
│       │   │   ├── tests.rs
│       │   │   ├── traits.rs
│       │   │   ├── utils/
│       │   │   │   ├── validators.rs
│       │   │   │   ├── wal.rs
│       │   │   │   └── weight.rs
│       │   │   ├── utils.rs
│       │   │   └── validator_change.rs
│       │   ├── consensus.rs
│       │   ├── contract_runtime/
│       │   │   ├── config.rs
│       │   │   ├── error.rs
│       │   │   ├── event.rs
│       │   │   ├── exec_queue.rs
│       │   │   ├── metrics.rs
│       │   │   ├── operations/
│       │   │   │   └── wasm_v2_request.rs
│       │   │   ├── operations.rs
│       │   │   ├── rewards/
│       │   │   │   └── tests.rs
│       │   │   ├── rewards.rs
│       │   │   ├── tests.rs
│       │   │   ├── types.rs
│       │   │   └── utils.rs
│       │   ├── contract_runtime.rs
│       │   ├── diagnostics_port/
│       │   │   ├── command.rs
│       │   │   ├── stop_at.rs
│       │   │   ├── tasks.rs
│       │   │   └── util.rs
│       │   ├── diagnostics_port.rs
│       │   ├── event_stream_server/
│       │   │   ├── config.rs
│       │   │   ├── event.rs
│       │   │   ├── event_indexer.rs
│       │   │   ├── http_server.rs
│       │   │   ├── sse_server.rs
│       │   │   └── tests.rs
│       │   ├── event_stream_server.rs
│       │   ├── fetcher/
│       │   │   ├── config.rs
│       │   │   ├── error.rs
│       │   │   ├── event.rs
│       │   │   ├── fetch_item.rs
│       │   │   ├── fetch_response.rs
│       │   │   ├── fetched_data.rs
│       │   │   ├── fetcher_impls/
│       │   │   │   ├── approvals_hashes_fetcher.rs
│       │   │   │   ├── block_execution_results_or_chunk_fetcher.rs
│       │   │   │   ├── block_fetcher.rs
│       │   │   │   ├── block_header_fetcher.rs
│       │   │   │   ├── finality_signature_fetcher.rs
│       │   │   │   ├── legacy_deploy_fetcher.rs
│       │   │   │   ├── sync_leap_fetcher.rs
│       │   │   │   ├── transaction_fetcher.rs
│       │   │   │   └── trie_or_chunk_fetcher.rs
│       │   │   ├── fetcher_impls.rs
│       │   │   ├── item_fetcher.rs
│       │   │   ├── item_handle.rs
│       │   │   ├── metrics.rs
│       │   │   ├── tag.rs
│       │   │   └── tests.rs
│       │   ├── fetcher.rs
│       │   ├── gossiper/
│       │   │   ├── config.rs
│       │   │   ├── error.rs
│       │   │   ├── event.rs
│       │   │   ├── gossip_item.rs
│       │   │   ├── gossip_table.rs
│       │   │   ├── item_provider.rs
│       │   │   ├── message.rs
│       │   │   ├── metrics.rs
│       │   │   ├── provider_impls/
│       │   │   │   ├── address_provider.rs
│       │   │   │   ├── block_provider.rs
│       │   │   │   ├── finality_signature_provider.rs
│       │   │   │   └── transaction_provider.rs
│       │   │   ├── provider_impls.rs
│       │   │   └── tests.rs
│       │   ├── gossiper.rs
│       │   ├── in_memory_network.rs
│       │   ├── metrics.rs
│       │   ├── network/
│       │   │   ├── bincode_format.rs
│       │   │   ├── blocklist.rs
│       │   │   ├── chain_info.rs
│       │   │   ├── config.rs
│       │   │   ├── counting_format.rs
│       │   │   ├── error.rs
│       │   │   ├── event.rs
│       │   │   ├── gossiped_address.rs
│       │   │   ├── health.rs
│       │   │   ├── identity.rs
│       │   │   ├── insights.rs
│       │   │   ├── limiter.rs
│       │   │   ├── message.rs
│       │   │   ├── message_pack_format.rs
│       │   │   ├── metrics.rs
│       │   │   ├── outgoing.rs
│       │   │   ├── symmetry.rs
│       │   │   ├── tasks.rs
│       │   │   └── tests.rs
│       │   ├── network.rs
│       │   ├── rest_server/
│       │   │   ├── config.rs
│       │   │   ├── docs.rs
│       │   │   ├── event.rs
│       │   │   ├── filters.rs
│       │   │   ├── http_server.rs
│       │   │   └── info.rs
│       │   ├── rest_server.rs
│       │   ├── shutdown_trigger.rs
│       │   ├── storage/
│       │   │   ├── config.rs
│       │   │   ├── disjoint_sequences.rs
│       │   │   ├── error.rs
│       │   │   ├── event.rs
│       │   │   ├── metrics.rs
│       │   │   ├── object_pool.rs
│       │   │   ├── tests.rs
│       │   │   └── utils.rs
│       │   ├── storage.rs
│       │   ├── sync_leaper/
│       │   │   ├── error.rs
│       │   │   ├── event.rs
│       │   │   ├── leap_activity.rs
│       │   │   ├── leap_state.rs
│       │   │   ├── metrics.rs
│       │   │   └── tests.rs
│       │   ├── sync_leaper.rs
│       │   ├── transaction_acceptor/
│       │   │   ├── config.rs
│       │   │   ├── error.rs
│       │   │   ├── event.rs
│       │   │   ├── metrics.rs
│       │   │   └── tests.rs
│       │   ├── transaction_acceptor.rs
│       │   ├── transaction_buffer/
│       │   │   ├── config.rs
│       │   │   ├── event.rs
│       │   │   ├── metrics.rs
│       │   │   └── tests.rs
│       │   ├── transaction_buffer.rs
│       │   └── upgrade_watcher.rs
│       ├── components.rs
│       ├── config_migration.rs
│       ├── data_migration.rs
│       ├── effect/
│       │   ├── announcements.rs
│       │   ├── diagnostics_port.rs
│       │   ├── incoming.rs
│       │   └── requests.rs
│       ├── effect.rs
│       ├── failpoints.rs
│       ├── failpoints_disabled.rs
│       ├── lib.rs
│       ├── logging.rs
│       ├── protocol.rs
│       ├── reactor/
│       │   ├── event_queue_metrics.rs
│       │   ├── main_reactor/
│       │   │   ├── catch_up.rs
│       │   │   ├── config.rs
│       │   │   ├── control.rs
│       │   │   ├── error.rs
│       │   │   ├── event.rs
│       │   │   ├── fetchers.rs
│       │   │   ├── genesis_instruction.rs
│       │   │   ├── keep_up.rs
│       │   │   ├── memory_metrics.rs
│       │   │   ├── reactor_state.rs
│       │   │   ├── tests/
│       │   │   │   ├── auction.rs
│       │   │   │   ├── binary_port.rs
│       │   │   │   ├── configs_override.rs
│       │   │   │   ├── consensus_rules.rs
│       │   │   │   ├── fixture.rs
│       │   │   │   ├── gas_price.rs
│       │   │   │   ├── initial_stakes.rs
│       │   │   │   ├── network_general.rs
│       │   │   │   ├── rewards.rs
│       │   │   │   ├── switch_blocks.rs
│       │   │   │   ├── transaction_scenario/
│       │   │   │   │   ├── asertions.rs
│       │   │   │   │   └── utils.rs
│       │   │   │   ├── transaction_scenario.rs
│       │   │   │   └── transactions.rs
│       │   │   ├── tests.rs
│       │   │   ├── upgrade_shutdown.rs
│       │   │   ├── upgrading_instruction.rs
│       │   │   ├── utils.rs
│       │   │   └── validate.rs
│       │   ├── main_reactor.rs
│       │   └── queue_kind.rs
│       ├── reactor.rs
│       ├── testing/
│       │   ├── condition_check_reactor.rs
│       │   ├── fake_transaction_acceptor.rs
│       │   ├── filter_reactor.rs
│       │   ├── network.rs
│       │   └── test_clock.rs
│       ├── testing.rs
│       ├── tls.rs
│       ├── types/
│       │   ├── appendable_block.rs
│       │   ├── block/
│       │   │   ├── approvals_hashes.rs
│       │   │   ├── block_execution_results_or_chunk.rs
│       │   │   ├── block_execution_results_or_chunk_id.rs
│       │   │   ├── block_payload.rs
│       │   │   ├── block_with_metadata.rs
│       │   │   ├── executable_block.rs
│       │   │   ├── finalized_block.rs
│       │   │   ├── invalid_proposal_error.rs
│       │   │   ├── meta_block/
│       │   │   │   ├── merge_mismatch_error.rs
│       │   │   │   └── state.rs
│       │   │   └── meta_block.rs
│       │   ├── block.rs
│       │   ├── chunkable.rs
│       │   ├── exit_code.rs
│       │   ├── max_ttl.rs
│       │   ├── node_config.rs
│       │   ├── node_id.rs
│       │   ├── status_feed.rs
│       │   ├── sync_leap.rs
│       │   ├── sync_leap_validation_metadata.rs
│       │   ├── transaction/
│       │   │   ├── arg_handling.rs
│       │   │   ├── deploy/
│       │   │   │   └── legacy_deploy.rs
│       │   │   ├── deploy.rs
│       │   │   ├── fields_container.rs
│       │   │   ├── initiator_addr_and_secret_key.rs
│       │   │   ├── meta_transaction/
│       │   │   │   ├── meta_deploy.rs
│       │   │   │   ├── meta_transaction_v1.rs
│       │   │   │   └── transaction_header.rs
│       │   │   ├── meta_transaction.rs
│       │   │   ├── transaction_footprint.rs
│       │   │   └── transaction_v1_builder.rs
│       │   ├── transaction.rs
│       │   ├── validator_matrix.rs
│       │   └── value_or_chunk.rs
│       ├── types.rs
│       ├── utils/
│       │   ├── block_signatures.rs
│       │   ├── chain_specification/
│       │   │   ├── error.rs
│       │   │   └── parse_toml.rs
│       │   ├── chain_specification.rs
│       │   ├── config_specification.rs
│       │   ├── display_error.rs
│       │   ├── ds.rs
│       │   ├── external.rs
│       │   ├── fmt_limit.rs
│       │   ├── opt_display.rs
│       │   ├── rlimit.rs
│       │   ├── round_robin.rs
│       │   ├── specimen.rs
│       │   ├── umask.rs
│       │   └── work_queue.rs
│       └── utils.rs
├── resources/
│   ├── README.md
│   ├── integration-test/
│   │   ├── accounts.toml
│   │   ├── chainspec.toml
│   │   ├── config-example.toml
│   │   └── global_state.toml
│   ├── local/
│   │   ├── accounts.toml
│   │   ├── chainspec.toml.in
│   │   ├── config.toml
│   │   └── secret_keys/
│   │       ├── faucet.pem
│   │       ├── node-1.pem
│   │       ├── node-2.pem
│   │       ├── node-3.pem
│   │       ├── node-4.pem
│   │       └── node-5.pem
│   ├── mainnet/
│   │   ├── accounts.toml
│   │   ├── chainspec.toml
│   │   ├── config-example.toml
│   │   └── global_state.toml
│   ├── production/
│   │   ├── accounts.toml
│   │   ├── chainspec.toml
│   │   └── config-example.toml
│   ├── test/
│   │   ├── rest_schema_chainspec_bytes.json
│   │   ├── rest_schema_status.json
│   │   ├── rest_schema_validator_changes.json
│   │   ├── sse_data_schema.json
│   │   └── storage/
│   │       └── 1.5.2/
│   │           └── storage-1/
│   │               ├── storage/
│   │               │   └── casper-net-1/
│   │               │       ├── data.lmdb
│   │               │       ├── data.lmdb-lock
│   │               │       ├── sse_index
│   │               │       ├── storage.lmdb
│   │               │       └── storage.lmdb-lock
│   │               └── storage_info.json
│   └── testnet/
│       ├── accounts.toml
│       ├── chainspec.toml
│       ├── config-example.toml
│       └── global_state.toml
├── rust-toolchain.toml
├── rustfmt.toml
├── smart_contracts/
│   ├── contract/
│   │   ├── CHANGELOG.md
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── src/
│   │   │   ├── contract_api/
│   │   │   │   ├── account.rs
│   │   │   │   ├── cryptography.rs
│   │   │   │   ├── entity.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── runtime.rs
│   │   │   │   ├── storage.rs
│   │   │   │   └── system.rs
│   │   │   ├── ext_ffi.rs
│   │   │   ├── lib.rs
│   │   │   ├── no_std_handlers.rs
│   │   │   └── unwrap_or_revert.rs
│   │   └── tests/
│   │       └── version_numbers.rs
│   ├── contracts/
│   │   ├── .cargo/
│   │   │   └── config.toml
│   │   ├── SRE/
│   │   │   ├── create-test-node-01/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── create-test-node-02/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── create-test-node-03/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   └── create-test-node-shared/
│   │   │       ├── Cargo.toml
│   │   │       └── src/
│   │   │           └── lib.rs
│   │   ├── admin/
│   │   │   ├── disable-contract/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   └── enable-contract/
│   │   │       ├── Cargo.toml
│   │   │       └── src/
│   │   │           └── main.rs
│   │   ├── bench/
│   │   │   ├── create-accounts/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── create-purses/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── transfer-to-existing-account/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   └── transfer-to-purse/
│   │   │       ├── Cargo.toml
│   │   │       └── src/
│   │   │           └── main.rs
│   │   ├── client/
│   │   │   ├── activate-bid/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── add-bid/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── add-reservations/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── burn/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── call-contract/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── call-package-version-by-hash/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── cancel-reservations/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── change_bid_public_key/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── delegate/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── disable-contract-by-contract-hash/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── named-purse-payment/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── non-standard-payment/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── redelegate/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── revert/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── transfer-to-account/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   ├── transfer-to-account-u512/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   ├── transfer-to-named-purse/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── transfer-to-public-key/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── undelegate/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   └── withdraw-bid/
│   │   │       ├── Cargo.toml
│   │   │       └── src/
│   │   │           └── main.rs
│   │   ├── explorer/
│   │   │   ├── faucet/
│   │   │   │   ├── Cargo.toml
│   │   │   │   ├── README.md
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   └── faucet-stored/
│   │   │       ├── Cargo.toml
│   │   │       └── src/
│   │   │           └── main.rs
│   │   ├── nctl/
│   │   │   └── nctl-dictionary/
│   │   │       ├── Cargo.toml
│   │   │       └── src/
│   │   │           └── main.rs
│   │   ├── profiling/
│   │   │   ├── host-function-metrics/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   └── state-initializer/
│   │   │       ├── Cargo.toml
│   │   │       └── src/
│   │   │           └── main.rs
│   │   ├── test/
│   │   │   ├── add-associated-key/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── add-gas-subcall/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── add-update-associated-key/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── auction-bidding/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── auction-bids/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── blake2b/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── contract-context/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── contract-funds/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── contract-funds-call/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── contract-messages-emitter/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── contract-messages-from-account/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── contract-messages-upgrader/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── counter-factory/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── create-purse-01/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   ├── deserialize-error/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── dictionary/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   ├── dictionary-call/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   ├── dictionary-item-key-length/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── dictionary-read/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── do-nothing/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── do-nothing-stored/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── do-nothing-stored-caller/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── do-nothing-stored-upgrader/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-1071-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── lib.rs
│   │   │   │       └── main.rs
│   │   │   ├── ee-1129-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-1217-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-1225-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-221-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-401-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-401-regression-call/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-441-rng-state/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-460-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-532-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-536-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-539-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-549-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-550-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-572-regression-create/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-572-regression-escalate/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-584-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-597-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-598-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-599-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-601-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-771-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-966-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── endless-loop/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── endless-loop-with-effects/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── expensive-calculation/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── finalize-payment/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── generic-hash/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── get-arg/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── get-blockinfo/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── get-blocktime/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── get-call-stack-call-recursive-subcall/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── get-call-stack-recursive-subcall/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── lib.rs
│   │   │   │       └── main.rs
│   │   │   ├── get-caller/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── get-caller-subcall/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── get-payment-purse/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── get-phase/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── get-phase-payment/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── gh-1470-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   ├── gh-1470-regression-call/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   ├── gh-1688-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── gh-2280-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── gh-2280-regression-call/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── gh-3097-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── gh-3097-regression-call/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── gh-4771-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── gh-4898-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── gh-5058-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── groups/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── host-function-costs/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── key-management-thresholds/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── key-putter/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── list-authorization-keys/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── list-named-keys/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── load-caller-info/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── main-purse/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── manage-groups/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── measure-gas-subcall/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── mint-purse/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── mint-transfer-proxy/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── multisig-authorization/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── named-dictionary-test/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── named-keys/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── named-keys-stored/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── named-keys-stored-call/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── new-named-uref/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ordered-transforms/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── overwrite-uref-content/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── payment-purse-persist/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── purse-holder-stored/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── purse-holder-stored-caller/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── purse-holder-stored-upgrader/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── purse-holder-stored-upgrader-v2-2/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── random-bytes/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── random-bytes-payment/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── read-from-key/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── recover-secp256k1/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── refund-purse/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-20210707/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-20210831/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-20220204/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-20220204-call/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-20220204-nontrivial/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-20220207/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-20220208/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-20220211/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-20220211-call/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-20220222/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-add-bid/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-delegate/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-payment/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-transfer/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression_20211110/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression_20220119/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression_20240105/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── remove-associated-key/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ret-uref/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── set-action-thresholds/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── staking/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   ├── staking-stored/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── storage-costs/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── system-contract-hashes/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── test-payment-stored/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── transfer-main-purse-to-new-purse/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── transfer-main-purse-to-two-purses/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── transfer-purse-to-account/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   ├── transfer-purse-to-account-stored/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── transfer-purse-to-account-with-id/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   ├── transfer-purse-to-accounts/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   ├── transfer-purse-to-accounts-stored/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── transfer-purse-to-accounts-subcall/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   ├── transfer-purse-to-public-key/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── transfer-purse-to-purse/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── update-associated-key/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── upgrade-threshold/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── upgrade-threshold-upgrader/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   └── verify-signature/
│   │   │       ├── Cargo.toml
│   │   │       └── src/
│   │   │           └── main.rs
│   │   ├── tutorial/
│   │   │   ├── counter-installer/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── hello-world/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   └── increment-counter/
│   │   │       ├── Cargo.toml
│   │   │       └── src/
│   │   │           └── main.rs
│   │   └── vm2/
│   │       ├── vm2-cep18/
│   │       │   ├── Cargo.toml
│   │       │   ├── build.rs
│   │       │   ├── src/
│   │       │   │   └── lib.rs
│   │       │   └── tests/
│   │       │       └── integration._rs
│   │       ├── vm2-cep18-caller/
│   │       │   ├── Cargo.toml
│   │       │   ├── build.rs
│   │       │   └── src/
│   │       │       └── lib.rs
│   │       ├── vm2-flipper/
│   │       │   ├── Cargo.toml
│   │       │   ├── build.rs
│   │       │   └── src/
│   │       │       └── lib.rs
│   │       ├── vm2-harness/
│   │       │   ├── Cargo.toml
│   │       │   ├── build.rs
│   │       │   └── src/
│   │       │       ├── contracts/
│   │       │       │   ├── harness.rs
│   │       │       │   ├── no_fallback.rs
│   │       │       │   └── token_owner.rs
│   │       │       ├── contracts.rs
│   │       │       ├── lib.rs
│   │       │       ├── main.rs
│   │       │       └── traits.rs
│   │       ├── vm2-host/
│   │       │   ├── Cargo.toml
│   │       │   ├── build.rs
│   │       │   └── src/
│   │       │       └── lib.rs
│   │       ├── vm2-legacy-counter-proxy/
│   │       │   ├── Cargo.toml
│   │       │   ├── build.rs
│   │       │   └── src/
│   │       │       └── lib.rs
│   │       ├── vm2-trait/
│   │       │   ├── Cargo.toml
│   │       │   ├── build.rs
│   │       │   └── src/
│   │       │       └── lib.rs
│   │       ├── vm2-upgradable/
│   │       │   ├── Cargo.toml
│   │       │   ├── build.rs
│   │       │   └── src/
│   │       │       └── lib.rs
│   │       └── vm2-upgradable-v2/
│   │           ├── Cargo.toml
│   │           ├── build.rs
│   │           └── src/
│   │               └── lib.rs
│   ├── macros/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── lib.rs
│   │       └── utils.rs
│   ├── rust-toolchain
│   ├── sdk/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── abi.rs
│   │       ├── abi_generator.rs
│   │       ├── casper/
│   │       │   └── native.rs
│   │       ├── casper.rs
│   │       ├── cli/
│   │       │   └── validation.rs
│   │       ├── collections/
│   │       │   ├── iterable_map.rs
│   │       │   ├── iterable_set.rs
│   │       │   ├── lookup_key.rs
│   │       │   ├── map.rs
│   │       │   ├── set.rs
│   │       │   ├── sorted_vector.rs
│   │       │   └── vector.rs
│   │       ├── collections.rs
│   │       ├── contrib/
│   │       │   ├── access_control.rs
│   │       │   ├── cep18.rs
│   │       │   ├── ownable.rs
│   │       │   └── pausable.rs
│   │       ├── contrib.rs
│   │       ├── lib.rs
│   │       ├── prelude.rs
│   │       ├── schema.rs
│   │       ├── selector.rs
│   │       ├── serializers.rs
│   │       └── types.rs
│   ├── sdk_codegen/
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   ├── lib.rs
│   │   │   └── support.rs
│   │   └── tests/
│   │       ├── fixtures/
│   │       │   ├── cep18_schema.json
│   │       │   └── cep18_schema.rs
│   │       └── test_build.rs
│   └── sdk_sys/
│       ├── Cargo.toml
│       └── src/
│           ├── for_each_host_function.rs
│           └── lib.rs
├── storage/
│   ├── CHANGELOG.md
│   ├── Cargo.toml
│   ├── README.md
│   ├── benches/
│   │   └── global_state_key_write_bench.rs
│   └── src/
│       ├── address_generator.rs
│       ├── block_store/
│       │   ├── block_provider.rs
│       │   ├── error.rs
│       │   ├── lmdb/
│       │   │   ├── indexed_lmdb_block_store.rs
│       │   │   ├── lmdb_block_store.rs
│       │   │   ├── lmdb_ext.rs
│       │   │   ├── mod.rs
│       │   │   ├── temp_map.rs
│       │   │   └── versioned_databases.rs
│       │   ├── mod.rs
│       │   └── types/
│       │       ├── approvals_hashes.rs
│       │       ├── block_hash_height_and_era.rs
│       │       ├── deploy_metadata_v1.rs
│       │       ├── mod.rs
│       │       └── transfers.rs
│       ├── data_access_layer/
│       │   ├── addressable_entity.rs
│       │   ├── auction.rs
│       │   ├── balance.rs
│       │   ├── balance_hold.rs
│       │   ├── balance_identifier_purse.rs
│       │   ├── bids.rs
│       │   ├── block_global.rs
│       │   ├── block_rewards.rs
│       │   ├── contract.rs
│       │   ├── entry_points.rs
│       │   ├── era_validators.rs
│       │   ├── execution_results_checksum.rs
│       │   ├── fee.rs
│       │   ├── flush.rs
│       │   ├── forced_undelegate.rs
│       │   ├── genesis.rs
│       │   ├── handle_fee.rs
│       │   ├── handle_refund.rs
│       │   ├── key_prefix.rs
│       │   ├── message_topics.rs
│       │   ├── mint.rs
│       │   ├── prefixed_values.rs
│       │   ├── protocol_upgrade.rs
│       │   ├── prune.rs
│       │   ├── query.rs
│       │   ├── round_seigniorage.rs
│       │   ├── seigniorage_recipients.rs
│       │   ├── step.rs
│       │   ├── system_entity_registry.rs
│       │   ├── tagged_values.rs
│       │   ├── total_supply.rs
│       │   └── trie.rs
│       ├── data_access_layer.rs
│       ├── global_state/
│       │   ├── error.rs
│       │   ├── state/
│       │   │   ├── lmdb.rs
│       │   │   ├── mod.rs
│       │   │   └── scratch.rs
│       │   ├── store/
│       │   │   ├── mod.rs
│       │   │   ├── store_ext.rs
│       │   │   └── tests.rs
│       │   ├── transaction_source/
│       │   │   ├── lmdb.rs
│       │   │   └── mod.rs
│       │   ├── trie/
│       │   │   ├── gens.rs
│       │   │   ├── mod.rs
│       │   │   └── tests.rs
│       │   └── trie_store/
│       │       ├── cache/
│       │       │   └── mod.rs
│       │       ├── lmdb.rs
│       │       ├── mod.rs
│       │       ├── operations/
│       │       │   ├── mod.rs
│       │       │   ├── store_wrappers.rs
│       │       │   └── tests/
│       │       │       ├── bytesrepr_utils.rs
│       │       │       ├── ee_699.rs
│       │       │       ├── keys.rs
│       │       │       ├── mod.rs
│       │       │       ├── proptests.rs
│       │       │       ├── prune.rs
│       │       │       ├── read.rs
│       │       │       ├── scan.rs
│       │       │       ├── synchronize.rs
│       │       │       └── write.rs
│       │       └── tests/
│       │           ├── concurrent.rs
│       │           ├── mod.rs
│       │           ├── proptests.rs
│       │           └── simple.rs
│       ├── global_state.rs
│       ├── lib.rs
│       ├── system/
│       │   ├── auction/
│       │   │   ├── auction_native.rs
│       │   │   ├── detail.rs
│       │   │   └── providers.rs
│       │   ├── auction.rs
│       │   ├── burn.rs
│       │   ├── error.rs
│       │   ├── genesis/
│       │   │   ├── account_contract_installer.rs
│       │   │   └── entity_installer.rs
│       │   ├── genesis.rs
│       │   ├── handle_payment/
│       │   │   ├── handle_payment_native.rs
│       │   │   ├── internal.rs
│       │   │   ├── mint_provider.rs
│       │   │   ├── runtime_provider.rs
│       │   │   └── storage_provider.rs
│       │   ├── handle_payment.rs
│       │   ├── mint/
│       │   │   ├── detail.rs
│       │   │   ├── mint_native.rs
│       │   │   ├── runtime_provider.rs
│       │   │   ├── storage_provider.rs
│       │   │   └── system_provider.rs
│       │   ├── mint.rs
│       │   ├── protocol_upgrade.rs
│       │   ├── runtime_native.rs
│       │   ├── standard_payment/
│       │   │   ├── account_provider.rs
│       │   │   ├── handle_payment_provider.rs
│       │   │   └── mint_provider.rs
│       │   ├── standard_payment.rs
│       │   └── transfer.rs
│       ├── system.rs
│       └── tracking_copy/
│           ├── byte_size.rs
│           ├── error.rs
│           ├── ext.rs
│           ├── ext_entity.rs
│           ├── meter.rs
│           ├── mod.rs
│           └── tests.rs
├── types/
│   ├── CHANGELOG.md
│   ├── Cargo.toml
│   ├── README.md
│   ├── benches/
│   │   └── bytesrepr_bench.rs
│   ├── proptest-regressions/
│   │   └── stored_value.txt
│   ├── src/
│   │   ├── access_rights.rs
│   │   ├── account/
│   │   │   ├── account_hash.rs
│   │   │   ├── action_thresholds.rs
│   │   │   ├── action_type.rs
│   │   │   ├── associated_keys.rs
│   │   │   ├── error.rs
│   │   │   └── weight.rs
│   │   ├── account.rs
│   │   ├── addressable_entity/
│   │   │   ├── action_thresholds.rs
│   │   │   ├── action_type.rs
│   │   │   ├── associated_keys.rs
│   │   │   ├── entry_points.rs
│   │   │   ├── error.rs
│   │   │   ├── named_keys.rs
│   │   │   └── weight.rs
│   │   ├── addressable_entity.rs
│   │   ├── api_error.rs
│   │   ├── auction_state.rs
│   │   ├── block/
│   │   │   ├── available_block_range.rs
│   │   │   ├── block_body/
│   │   │   │   ├── block_body_v1.rs
│   │   │   │   └── block_body_v2.rs
│   │   │   ├── block_body.rs
│   │   │   ├── block_global.rs
│   │   │   ├── block_hash.rs
│   │   │   ├── block_hash_and_height.rs
│   │   │   ├── block_header/
│   │   │   │   ├── block_header_v1.rs
│   │   │   │   └── block_header_v2.rs
│   │   │   ├── block_header.rs
│   │   │   ├── block_header_with_signatures.rs
│   │   │   ├── block_identifier.rs
│   │   │   ├── block_signatures/
│   │   │   │   ├── block_signatures_v1.rs
│   │   │   │   └── block_signatures_v2.rs
│   │   │   ├── block_signatures.rs
│   │   │   ├── block_sync_status.rs
│   │   │   ├── block_v1.rs
│   │   │   ├── block_v2.rs
│   │   │   ├── block_with_signatures.rs
│   │   │   ├── chain_name_digest.rs
│   │   │   ├── era_end/
│   │   │   │   ├── era_end_v1/
│   │   │   │   │   └── era_report.rs
│   │   │   │   ├── era_end_v1.rs
│   │   │   │   └── era_end_v2.rs
│   │   │   ├── era_end.rs
│   │   │   ├── finality_signature/
│   │   │   │   ├── finality_signature_v1.rs
│   │   │   │   └── finality_signature_v2.rs
│   │   │   ├── finality_signature.rs
│   │   │   ├── finality_signature_id.rs
│   │   │   ├── json_compatibility/
│   │   │   │   └── json_block_with_signatures.rs
│   │   │   ├── json_compatibility.rs
│   │   │   ├── rewarded_signatures.rs
│   │   │   ├── rewards.rs
│   │   │   ├── test_block_builder/
│   │   │   │   ├── test_block_v1_builder.rs
│   │   │   │   └── test_block_v2_builder.rs
│   │   │   └── test_block_builder.rs
│   │   ├── block.rs
│   │   ├── block_time.rs
│   │   ├── byte_code.rs
│   │   ├── bytesrepr/
│   │   │   └── bytes.rs
│   │   ├── bytesrepr.rs
│   │   ├── chainspec/
│   │   │   ├── accounts_config/
│   │   │   │   ├── account_config.rs
│   │   │   │   ├── delegator_config.rs
│   │   │   │   ├── genesis.rs
│   │   │   │   └── validator_config.rs
│   │   │   ├── accounts_config.rs
│   │   │   ├── activation_point.rs
│   │   │   ├── chainspec_raw_bytes.rs
│   │   │   ├── core_config.rs
│   │   │   ├── fee_handling.rs
│   │   │   ├── genesis_config.rs
│   │   │   ├── global_state_update.rs
│   │   │   ├── highway_config.rs
│   │   │   ├── hold_balance_handling.rs
│   │   │   ├── network_config.rs
│   │   │   ├── next_upgrade.rs
│   │   │   ├── pricing_handling.rs
│   │   │   ├── protocol_config.rs
│   │   │   ├── refund_handling.rs
│   │   │   ├── rewards_handling.rs
│   │   │   ├── transaction_config/
│   │   │   │   ├── deploy_config.rs
│   │   │   │   ├── runtime_config.rs
│   │   │   │   └── transaction_v1_config.rs
│   │   │   ├── transaction_config.rs
│   │   │   ├── upgrade_config.rs
│   │   │   ├── vacancy_config.rs
│   │   │   ├── vm_config/
│   │   │   │   ├── auction_costs.rs
│   │   │   │   ├── chainspec_registry.rs
│   │   │   │   ├── handle_payment_costs.rs
│   │   │   │   ├── host_function_costs.rs
│   │   │   │   ├── host_function_costs_v2.rs
│   │   │   │   ├── message_limits.rs
│   │   │   │   ├── mint_costs.rs
│   │   │   │   ├── opcode_costs.rs
│   │   │   │   ├── standard_payment_costs.rs
│   │   │   │   ├── storage_costs.rs
│   │   │   │   ├── system_config.rs
│   │   │   │   ├── wasm_config.rs
│   │   │   │   ├── wasm_v1_config.rs
│   │   │   │   └── wasm_v2_config.rs
│   │   │   └── vm_config.rs
│   │   ├── chainspec.rs
│   │   ├── checksummed_hex.rs
│   │   ├── cl_type.rs
│   │   ├── cl_value/
│   │   │   ├── checksum_registry.rs
│   │   │   ├── dictionary.rs
│   │   │   ├── jsonrepr.rs
│   │   │   └── system_entity_registry.rs
│   │   ├── cl_value.rs
│   │   ├── contract_messages/
│   │   │   ├── error.rs
│   │   │   ├── messages.rs
│   │   │   └── topics.rs
│   │   ├── contract_messages.rs
│   │   ├── contract_wasm.rs
│   │   ├── contracts/
│   │   │   └── named_keys.rs
│   │   ├── contracts.rs
│   │   ├── crypto/
│   │   │   ├── asymmetric_key/
│   │   │   │   ├── gens.rs
│   │   │   │   └── tests.rs
│   │   │   ├── asymmetric_key.rs
│   │   │   └── error.rs
│   │   ├── crypto.rs
│   │   ├── deploy_info.rs
│   │   ├── digest/
│   │   │   ├── chunk_with_proof.rs
│   │   │   ├── error.rs
│   │   │   └── indexed_merkle_proof.rs
│   │   ├── digest.rs
│   │   ├── display_iter.rs
│   │   ├── era_id.rs
│   │   ├── execution/
│   │   │   ├── effects.rs
│   │   │   ├── execution_result.rs
│   │   │   ├── execution_result_v1.rs
│   │   │   ├── execution_result_v2.rs
│   │   │   ├── transform.rs
│   │   │   ├── transform_error.rs
│   │   │   └── transform_kind.rs
│   │   ├── execution.rs
│   │   ├── file_utils.rs
│   │   ├── gas.rs
│   │   ├── gens.rs
│   │   ├── global_state/
│   │   │   ├── merkle_proof.rs
│   │   │   └── pointer.rs
│   │   ├── global_state.rs
│   │   ├── json_pretty_printer.rs
│   │   ├── key.rs
│   │   ├── lib.rs
│   │   ├── motes.rs
│   │   ├── package.rs
│   │   ├── peers_map.rs
│   │   ├── phase.rs
│   │   ├── protocol_version.rs
│   │   ├── runtime_footprint.rs
│   │   ├── semver.rs
│   │   ├── serde_helpers.rs
│   │   ├── stored_value/
│   │   │   ├── global_state_identifier.rs
│   │   │   └── type_mismatch.rs
│   │   ├── stored_value.rs
│   │   ├── system/
│   │   │   ├── auction/
│   │   │   │   ├── bid/
│   │   │   │   │   └── vesting.rs
│   │   │   │   ├── bid.rs
│   │   │   │   ├── bid_addr.rs
│   │   │   │   ├── bid_kind.rs
│   │   │   │   ├── bridge.rs
│   │   │   │   ├── constants.rs
│   │   │   │   ├── delegator.rs
│   │   │   │   ├── delegator_bid.rs
│   │   │   │   ├── delegator_kind.rs
│   │   │   │   ├── entry_points.rs
│   │   │   │   ├── era_info.rs
│   │   │   │   ├── error.rs
│   │   │   │   ├── reservation.rs
│   │   │   │   ├── seigniorage_recipient.rs
│   │   │   │   ├── unbond.rs
│   │   │   │   ├── unbonding_purse.rs
│   │   │   │   ├── validator_bid.rs
│   │   │   │   ├── validator_credit.rs
│   │   │   │   └── withdraw_purse.rs
│   │   │   ├── auction.rs
│   │   │   ├── caller/
│   │   │   │   └── call_stack_elements.rs
│   │   │   ├── caller.rs
│   │   │   ├── error.rs
│   │   │   ├── handle_payment/
│   │   │   │   ├── constants.rs
│   │   │   │   ├── entry_points.rs
│   │   │   │   └── error.rs
│   │   │   ├── handle_payment.rs
│   │   │   ├── mint/
│   │   │   │   ├── balance_hold.rs
│   │   │   │   ├── constants.rs
│   │   │   │   ├── entry_points.rs
│   │   │   │   └── error.rs
│   │   │   ├── mint.rs
│   │   │   ├── prepayment/
│   │   │   │   └── prepayment_kind.rs
│   │   │   ├── prepayment.rs
│   │   │   ├── standard_payment/
│   │   │   │   ├── constants.rs
│   │   │   │   └── entry_points.rs
│   │   │   ├── standard_payment.rs
│   │   │   └── system_contract_type.rs
│   │   ├── system.rs
│   │   ├── tagged.rs
│   │   ├── testing.rs
│   │   ├── timestamp.rs
│   │   ├── transaction/
│   │   │   ├── addressable_entity_identifier.rs
│   │   │   ├── approval.rs
│   │   │   ├── approvals_hash.rs
│   │   │   ├── deploy/
│   │   │   │   ├── deploy_category.rs
│   │   │   │   ├── deploy_hash.rs
│   │   │   │   ├── deploy_header.rs
│   │   │   │   ├── deploy_id.rs
│   │   │   │   ├── error.rs
│   │   │   │   └── executable_deploy_item.rs
│   │   │   ├── deploy.rs
│   │   │   ├── error.rs
│   │   │   ├── execution_info.rs
│   │   │   ├── initiator_addr.rs
│   │   │   ├── initiator_addr_and_secret_key.rs
│   │   │   ├── package_identifier.rs
│   │   │   ├── pricing_mode.rs
│   │   │   ├── runtime_args.rs
│   │   │   ├── serialization/
│   │   │   │   ├── field.rs
│   │   │   │   └── mod.rs
│   │   │   ├── transaction_entry_point.rs
│   │   │   ├── transaction_hash.rs
│   │   │   ├── transaction_id.rs
│   │   │   ├── transaction_invocation_target.rs
│   │   │   ├── transaction_scheduling.rs
│   │   │   ├── transaction_target.rs
│   │   │   ├── transaction_v1/
│   │   │   │   ├── arg_handling.rs
│   │   │   │   ├── errors_v1.rs
│   │   │   │   ├── fields_container.rs
│   │   │   │   ├── transaction_args.rs
│   │   │   │   ├── transaction_v1_hash.rs
│   │   │   │   └── transaction_v1_payload.rs
│   │   │   ├── transaction_v1.rs
│   │   │   └── transfer_target.rs
│   │   ├── transaction.rs
│   │   ├── transfer/
│   │   │   ├── error.rs
│   │   │   ├── transfer_v1/
│   │   │   │   └── transfer_v1_addr.rs
│   │   │   ├── transfer_v1.rs
│   │   │   └── transfer_v2.rs
│   │   ├── transfer.rs
│   │   ├── transfer_result.rs
│   │   ├── uint.rs
│   │   ├── uref.rs
│   │   └── validator_change.rs
│   └── tests/
│       └── version_numbers.rs
├── utils/
│   ├── accounts_toml/
│   │   ├── encode_account_toml.py
│   │   ├── test_validate.py
│   │   ├── validate.py
│   │   └── validate_account_toml.py
│   ├── casper-tool/
│   │   └── casper-tool.py
│   ├── dump-cpu-features.sh
│   ├── global-state-update-gen/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       ├── admins.rs
│   │       ├── balances.rs
│   │       ├── decode.rs
│   │       ├── generic/
│   │       │   ├── config.rs
│   │       │   ├── state_reader.rs
│   │       │   ├── state_tracker.rs
│   │       │   ├── testing.rs
│   │       │   └── update.rs
│   │       ├── generic.rs
│   │       ├── main.rs
│   │       ├── system_entity_registry.rs
│   │       ├── utils.rs
│   │       └── validators.rs
│   ├── highway-rewards-analysis/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       └── main.rs
│   ├── highway-state-grapher/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── main.rs
│   │       ├── renderer/
│   │       │   └── matrix.rs
│   │       └── renderer.rs
│   └── validation/
│       ├── Cargo.toml
│       ├── README.md
│       ├── src/
│       │   ├── abi.rs
│       │   ├── error.rs
│       │   ├── generators.rs
│       │   ├── lib.rs
│       │   ├── main.rs
│       │   ├── test_case.rs
│       │   └── utils.rs
│       └── tests/
│           ├── fixtures/
│           │   └── ABI/
│           │       ├── basic.json
│           │       ├── bignum.json
│           │       ├── clvalue.json
│           │       ├── collections.json
│           │       ├── key.json
│           │       └── stored_value.json
│           └── validation_test.rs
└── vm2-build-contracts.sh

================================================
FILE CONTENTS
================================================

================================================
FILE: .drone.yml
================================================
---
kind: pipeline
type: docker
name: cargo-test

environment:
  RUSTC_WRAPPER: '/root/.cargo/bin/cachepot'
  CACHEPOT_BUCKET: 'drone-sccache'
  CACHEPOT_S3_KEY_PREFIX: ci
  CACHEPOT_REGION: 'us-east-2'
  CARGO_INCREMENTAL: '0'

__buildenv: &buildenv
  image: casperlabs/node-build-u1804
  volumes:
  - name: rustup
    path: "/root/.rustup"
  - name: cargo
    path: "/root/.cargo"
  - name: drone
    path: "/drone"
  environment:
    AWS_ACCESS_KEY_ID:
      from_secret: cachepot_aws_ak
    AWS_SECRET_ACCESS_KEY:
      from_secret: cachepot_aws_sk

steps:
- name: setup
  <<: *buildenv
  commands:
  - make setup

# The below is duplicated for pull and push
# due to environment bug with caching.
- name: cargo-test-pr
  <<: *buildenv
  environment:
    SCCACHE_S3_PUBLIC: true
  commands:
  - make check-std-features
  - make check-testing-features
  - make test CARGO_FLAGS=--release
  - make test-contracts CARGO_FLAGS=--release
  - cachepot --show-stats
  when:
    event:
    - pull_request

- name: cargo-test-push
  <<: *buildenv
  commands:
  - make check-std-features
  - make check-testing-features
  - make test CARGO_FLAGS=--release
  - make test-contracts CARGO_FLAGS=--release
  - cachepot --show-stats
  when:
    event:
    - push

- name: notify
  image: plugins/slack
  settings:
    webhook:
      from_secret: slack_webhook
    template:
    - |
      Cargo-Test Pipeline Status: *{{ uppercasefirst build.status }}*
      Drone Build: <{{ build.link }}|#{{ build.number }}>
      Commit Link: <https://github.com/{{repo.owner}}/{{repo.name}}/commit/{{build.commit}}|{{ truncate build.commit 10 }}>
  when:
    event:
    - push
    status:
    - failure
    branch:
    - dev
    - "release-*"
    - "feat-*"

volumes:
- name: rustup
  temp: {}
- name: cargo
  temp: {}
- name: drone
  temp: {}

trigger:
  branch:
  - trying
  - staging
  - dev
  - "release-*"
  - "feat-*"
  event:
    include:
    - pull_request
    - push
    exclude:
    - tag
    - cron

---
kind: pipeline
type: docker
name: nctl-testing

environment:
  RUSTC_WRAPPER: '/root/.cargo/bin/cachepot'
  CACHEPOT_BUCKET: 'drone-sccache'
  CACHEPOT_S3_KEY_PREFIX: ci
  CACHEPOT_REGION: 'us-east-2'
  CARGO_INCREMENTAL: '0'

__buildenv: &buildenv
  image: casperlabs/node-build-u1804
  volumes:
  - name: rustup
    path: "/root/.rustup"
  - name: cargo
    path: "/root/.cargo"
  - name: drone
    path: "/drone"
  environment:
    AWS_ACCESS_KEY_ID:
      from_secret: cachepot_aws_ak
    AWS_SECRET_ACCESS_KEY:
      from_secret: cachepot_aws_sk

steps:
- name: setup
  <<: *buildenv
  commands:
  - make setup
  # `elfx86exts` is used to determine the CPU features used by the compiled node binary.
  - cargo install elfx86exts --version 0.5.0

- name: nctl-compile
  <<: *buildenv
  commands:
  - bash -c ./ci/nctl_compile.sh

- name: nctl-upgrade-test
  <<: *buildenv
  environment:
    AWS_ACCESS_KEY_ID:
      from_secret: put-drone-aws-ak
    AWS_SECRET_ACCESS_KEY:
      from_secret: put-drone-aws-sk
  commands:
  - bash -c ./ci/nctl_upgrade.sh

- name: check CPU features
  <<: *buildenv
  commands:
  - ./ci/check_cpu_features.sh

volumes:
- name: rustup
  temp: {}
- name: cargo
  temp: {}
- name: drone
  temp: {}

trigger:
  branch:
  - trying
  - staging
  event:
    include:
    - push
    exclude:
    - pull_request
    - tag
    - cron

---
kind: pipeline
type: docker
name: package

__buildenv: &buildenv
  image: casperlabs/node-build-u1804
  volumes:
  - name: rustup
    path: "/root/.rustup"
  - name: cargo
    path: "/root/.cargo"
  - name: drone
    path: "/drone"
  - name: nctl-temp-dir
    path: "/tmp/nctl_upgrade_stage"

__buildenv_upload: &buildenv_upload
  image: casperlabs/node-build-u1804
  volumes:
  - name: rustup
    path: "/root/.rustup"
  - name: cargo
    path: "/root/.cargo"
  - name: drone
    path: "/drone"
  - name: nctl-temp-dir
    path: "/tmp/nctl_upgrade_stage"
  environment:
    AWS_ACCESS_KEY_ID:
      from_secret: put-drone-aws-ak
    AWS_SECRET_ACCESS_KEY:
      from_secret: put-drone-aws-sk

steps:
- name: setup
  <<: *buildenv
  commands:
  - make setup

- name: build-client-contracts
  <<: *buildenv
  commands:
  - make build-client-contracts

- name: stest-wasm-package-push-to-s3
  image: casperlabs/s3cmd-build:latest
  environment:
    AWS_ACCESS_KEY_ID:
      from_secret: put-drone-aws-ak
    AWS_SECRET_ACCESS_KEY:
      from_secret: put-drone-aws-sk
  commands:
  - "./build_wasm_package.sh"

- name: build-upgrade-package
  <<: *buildenv
  commands:
  - "./ci/build_update_package.sh"

- name: upload-to-s3-genesis
  image: plugins/s3
  settings:
    bucket: 'genesis.casper.network'
    region: 'us-east-2'
    access_key:
      from_secret: drone_genesis_key_id
    secret_key:
      from_secret: drone_genesis_secret
    source: "target/upgrade_build/**/*"
    strip_prefix: 'target/upgrade_build/'
    target: "/drone/${DRONE_COMMIT}/"

- name: nctl-s3-build
  <<: *buildenv_upload
  commands:
  - "aws s3 rm s3://nctl.casper.network/${DRONE_BRANCH} --recursive"
  - "./ci/nctl_upgrade_stage.sh"
  when:
    branch:
    - dev
    - "release-*"

- name: nctl-bucket-upload
  image: plugins/s3-sync:latest
  settings:
    bucket: 'nctl.casper.network'
    access_key:
      from_secret: put-drone-aws-ak
    secret_key:
      from_secret: put-drone-aws-sk
    region: us-east-2
    source: '../../tmp/nctl_upgrade_stage/'
    target: "/${DRONE_BRANCH}/"
  volumes:
  - name: nctl-temp-dir
    path: /tmp/nctl_upgrade_stage
  when:
    branch:
    - dev
    - "release-*"

- name: notify
  image: plugins/slack
  settings:
    webhook:
      from_secret: slack_webhook
    template:
    - |
      Package Pipeline Status: *{{ uppercasefirst build.status }}*
      Drone Build: <{{ build.link }}|#{{ build.number }}>
      Commit Link: <https://github.com/{{repo.owner}}/{{repo.name}}/commit/{{build.commit}}|{{ truncate build.commit 10 }}>
  when:
    status:
    - failure

volumes:
- name: rustup
  temp: {}
- name: cargo
  temp: {}
- name: drone
  temp: {}
- name: nctl-temp-dir
  temp: {}

trigger:
  branch:
  - dev
  - "release-*"
  - "feat-*"
  event:
    include:
    - push
    exclude:
    - pull_request
    - tag
    - cron

---
kind: pipeline
type: docker
name: release-by-tag

__buildenv: &buildenv
  image: casperlabs/node-build-u1804
  volumes:
  - name: rustup
    path: "/root/.rustup"
  - name: cargo
    path: "/root/.cargo"
  - name: drone
    path: "/drone"
  - name: nctl-temp-dir
    path: "/tmp/nctl_upgrade_stage"

__buildenv_upload: &buildenv_upload
  image: casperlabs/node-build-u1804
  volumes:
  - name: rustup
    path: "/root/.rustup"
  - name: cargo
    path: "/root/.cargo"
  - name: drone
    path: "/drone"
  - name: nctl-temp-dir
    path: "/tmp/nctl_upgrade_stage"
  environment:
    AWS_ACCESS_KEY_ID:
      from_secret: put-drone-aws-ak
    AWS_SECRET_ACCESS_KEY:
      from_secret: put-drone-aws-sk

steps:
- name: setup
  <<: *buildenv
  commands:
  - make setup

- name: build-upgrade-package
  <<: *buildenv
  commands:
  - "./ci/build_update_package.sh"

- name: publish-github-pre-release
  image: plugins/github-release
  settings:
    api_key:
      from_secret: github_token
    checksum:
    - sha256
    - md5
    files:
    - "./target/upgrade_build/*/bin.tar.gz"
    prerelease:
    - true

- name: nctl-s3-build
  <<: *buildenv_upload
  commands:
  - "aws s3 rm s3://nctl.casper.network/${DRONE_TAG} --recursive"
  - "./ci/nctl_upgrade_stage.sh"

- name: nctl-bucket-upload
  image: plugins/s3-sync:latest
  settings:
    bucket: 'nctl.casper.network'
    access_key:
      from_secret: put-drone-aws-ak
    secret_key:
      from_secret: put-drone-aws-sk
    region: us-east-2
    source: '../../tmp/nctl_upgrade_stage/'
    target: "/${DRONE_TAG}/"
  volumes:
  - name: nctl-temp-dir
    path: /tmp/nctl_upgrade_stage

- name: publish-crates
  <<: *buildenv
  environment:
    CARGO_TOKEN:
      from_secret: crates_io_token
  commands:
  - "./ci/publish_to_crates_io.sh"

- name: as-contract-publish
  image: plugins/npm
  settings:
    username:
      from_secret: npm_user
    token:
      from_secret: npm_token
    email:
      from_secret: npm_email
    folder:
      - "smart_contracts/contract_as"
    fail_on_version_conflict:
      - true
    access:
      - "public"

- name: notify
  image: plugins/slack
  settings:
    webhook:
      from_secret: slack_webhook
    template:
    - |
      Casper-Node Release Status: *{{ uppercasefirst build.status }}*
      Drone Build: <{{ build.link }}|#{{ build.number }}>
      Commit Link: <https://github.com/{{repo.owner}}/{{repo.name}}/commit/{{build.commit}}|{{ truncate build.commit 10 }}>
  when:
    status:
    - failure
    - success

volumes:
- name: rustup
  temp: {}
- name: cargo
  temp: {}
- name: drone
  temp: {}
- name: nctl-temp-dir
  temp: {}

trigger:
  ref:
  - refs/tags/v*


================================================
FILE: .github/ISSUE_TEMPLATE/feedback.yml
================================================
name: Condor Release Feedback / Issue Form
description: Please share your feedback or issues you face in incorporating Condor Release changes in your application/project.
title: '[Condor-Release]: Specify your feedback/issue briefly'
labels:
  - condor-feedback
assignees:
  - devendran-m
  - piotr-dziubecki
  - sacherjj
  - cspramit
  - SaiProServ
body:
  - type: markdown
    attributes:
      value: |
        This is a feedback form, to consolidate Condor feedback and/or issues.
  - type: dropdown
    id: type
    attributes:
      label: Category
      description: Please choose the category that best describes your needs.
      options:
        - Feedback
        - Bug/Issue
    validations:
      required: true
  - type: input
    id: email
    attributes:
      label: Your email address
      placeholder: john@doe.com
    validations:
      required: true
  - type: input
    id: project-name
    attributes:
      label: Integration Project Name(Optional)
      placeholder: CasperWallet
      description: Name of the project with Casper, if applicable
    validations:
      required: false
  - type: dropdown
    id: casper-network
    attributes:
      label: Casper Network
      description: Please choose the network or environment related to the feedback, bug, or issue.
      options:
        - Devnet
        - Integration-Test
        - Testnet
        - Mainnet        
    validations:
      required: true
  - type: dropdown
    id: node-functionality
    attributes:
      label: Node Functionality
      description: Please specify the primary function of the node on the Casper Network related to the feedback or issue.
      options:
        - Node
        - JSON RPC
        - Execution Engine
        - SSE
        - NCTL
        - CCTL
        - Validator
        - Consensus
        - Other
    validations:
      required: true
  - type: textarea
    id: feedback-issue
    attributes:
      label: Description
      placeholder: Please elaborate your feedback/ bug or issue here.
      description: Please provide a detailed description of your feedback, bug, or issue.
    validations:
      required: true
  - type: input
    id: date-since
    attributes:
      label: Date Issue Began(optional)
      placeholder: dd/mm/yyyy
      description: When did you first notice this issue? 
    validations:
      required: false
  - type: textarea
    id: attachments
    attributes:
      label: Attachments (optional)
      description: Please attach any logs, screenshots, or links that may help with the analysis.
    validations:
      required: false

================================================
FILE: .github/pull_request_template.md
================================================
Please consider the following when creating a PR:

* Provide a useful description of this PR, suitably verbose, aimed at helping reviewers and contributors
* Update all relevant changelogs
* Provide a link to the GitHub issue relating to this PR
* Identify if any downstream impact as in to, SDKs, SmartContracts etc


================================================
FILE: .github/workflows/casper-node.yml
================================================
---
name: casper-node
# runs steps that are OK with normal rust based on ./rust-toolchain.toml
permissions:
  contents: read

on:
  push:
    branches:
      - dev
      - trying
      - staging
      - 'release-**'
      - 'feat-**'
    paths-ignore:
      - '**.md'

  pull_request:
    branches:
      - dev
      - 'release-**'
      - 'feat-**'
    paths-ignore:
      - '**.md'

jobs:
  lints:
    name: tests
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          persist-credentials: false

      - name: setup
        run: make setup

      - name: setup ubuntu
        run: |
         sudo apt-get -y install wabt

      - uses: Swatinem/rust-cache@v2

      - name: check-format
        run: make check-format

      - name: doc
        run: make doc

      - name: lint
        run: make lint

      - name: audit
        run: make audit

      - name: check-std-features
        run: make check-std-features

      - name: check-testing-features
        run: make check-testing-features

      - name: test
        run: make test CARGO_FLAGS=--release

      - name: test-contracts
        run: make test-contracts CARGO_FLAGS=--release


================================================
FILE: .github/workflows/lints-md.yml
================================================
---
name: lints
permissions:
  contents: read

on:
  push:
    branches:
      - dev
      - trying
      - staging
      - 'release-**'
      - 'feat-**'
    paths:
      - '**.md'

  pull_request:
    branches:
      - dev
      - 'release-**'
      - 'feat-**'
    paths:
      - '**.md'

jobs:
  lints:
    name: lints
    runs-on: ubuntu-latest
    steps:
      - run: 'echo "Markdown only change, no lints required"'


================================================
FILE: .github/workflows/publish-global-state-update-gen.yml
================================================
---
name: publish-global-state-update-gen
permissions:
  contents: read
  id-token: write

on:
  push:
    tags:
      - "v*"

jobs:
  publish_deb:
    strategy:
      matrix:
        include:
          - os: ubuntu-22.04
            code_name: jammy
#          - os: ubuntu-24.04
#            code_name: noble

    runs-on: ${{ matrix.os }}

    steps:
      - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b #v3.0.2

      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: ${{ secrets.AWS_ACCESS_ROLE_REPO }}
          role-session-name: GitHub_to_AWS_via_FederatedOIDC
          aws-region: ${{ secrets.AWS_ACCESS_REGION_REPO }}

      - name: Install deps
        run: |
          echo "deb http://repo.aptly.info/ squeeze main" | sudo tee -a /etc/apt/sources.list.d/aptly.list
          wget -qO - https://www.aptly.info/pubkey.txt | sudo apt-key add -
          sudo apt-get update
          sudo apt-get install -y aptly=1.4.0
          aptly config show

      - name: Import GPG key
        uses: crazy-max/ghaction-import-gpg@c8bb57c57e8df1be8c73ff3d59deab1dbc00e0d1 #v5.1.0
        with:
          gpg_private_key: ${{ secrets.APTLY_GPG_KEY }}
          passphrase: ${{ secrets.APTLY_GPG_PASS }}

      - name: Install cargo deb
        run: cargo install cargo-deb

      - name: Cargo build
        run: cargo build -p global-state-update-gen --release

      - name: Cargo deb
        run: cargo deb -p global-state-update-gen --no-build --variant ${{ matrix.code_name }}

      - name: Upload binaries to repo
        env:
          PLUGIN_REPO_NAME: ${{ secrets.AWS_BUCKET_REPO }}
          PLUGIN_REGION: ${{ secrets.AWS_ACCESS_REGION_REPO }}
          PLUGIN_GPG_KEY: ${{ secrets.APTLY_GPG_KEY }}
          PLUGIN_GPG_PASS: ${{ secrets.APTLY_GPG_PASS }}
          PLUGIN_ACL: 'private'
          PLUGIN_PREFIX: 'releases'
          PLUGIN_DEB_PATH: './target/debian'
          PLUGIN_OS_CODENAME: ${{ matrix.code_name }}
        run: ./ci/publish_deb_to_repo.sh

      - name: Invalidate CloudFront cache
        run: |
          aws cloudfront create-invalidation --distribution-id ${{ secrets.AWS_CLOUDFRONT_REPO }} --paths "/*"


================================================
FILE: .github/workflows/publish-release-and-crates.yml
================================================
---
name: publish-release-and-crates
permissions:
  contents: read
  id-token: write

on:
  push:
    tags:
      - 'v*'

jobs:
  push_release_and_crates:
    strategy:
      matrix:
        include:
          - os: ubuntu-22.04
            code_name: jammy

    runs-on: ${{ matrix.os }}

    steps:
      - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b #v3.0.2

      # jq python and python toml required for build_update_package.sh
      - name: Install deps
        run: |
          sudo apt-get update
          sudo apt-get install -y jq python3 python3-toml
          python3 --version

      - name: Install cargo deb
        run: cargo install cargo-deb

      - name: Build update package
        run: ./ci/build_update_package.sh

      - name: Publish to crates.io
        env:
          CARGO_TOKEN: ${{ secrets.crates_io_token }}
        run: ./ci/publish_to_crates_io.sh

      # Add config.tar.gz, bin.tar.gz to release
      - name: Upload files to release
        uses: svenstaro/upload-release-action@v2
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          file: target/upgrade_build/*.tar.gz
          tag: ${{ github.ref }}
          overwrite: true
          file_glob: true

================================================
FILE: .github/workflows/push-artifacts.yml
================================================
---
name: push-artifacts
permissions:
  contents: read
  id-token: write

on:
  push:
    branches:
      - dev
      - 'feat-**'
      - 'release-**'

jobs:
  push_artifacts:
    strategy:
      matrix:
        include:
          - os: ubuntu-22.04
            code_name: jammy

    runs-on: ${{ matrix.os }}

    steps:
      - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b #v3.0.2

      # Assign AWS PROD role to get access to production cloudfronts and S3 buckets
      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: ${{ secrets.AWS_ACCESS_ROLE_GENESIS }}
          role-session-name: GitHub_to_AWS_via_FederatedOIDC
          aws-region: ${{ secrets.AWS_ACCESS_REGION_GENESIS }}

      # jq python and python toml required for build_update_package.sh
      - name: Install deps
        run: |
          sudo apt-get update
          sudo apt-get install -y jq python3 python3-toml
          python3 --version

      - name: Install cargo deb
        run: cargo install cargo-deb

      - name: Build update package
        run: ./ci/build_update_package.sh

      - name: Upload artifacts to S3
        run: aws s3 sync ./target/upgrade_build/ s3://${{ secrets.AWS_BUCKET_GENESIS }}/artifacts/casper-node/$(git rev-parse HEAD)/

      - name: Upload branch_name.latest file to S3
        run: aws s3 sync ./target/latest/ s3://${{ secrets.AWS_BUCKET_GENESIS }}/artifacts/casper-node/

      # Required in case of overwrite
      - name: Invalidate CloudFront cache
        run: aws cloudfront create-invalidation --distribution-id ${{ secrets.AWS_CLOUDFRONT_GENESIS }} --paths "/artifacts/casper-node/*"


================================================
FILE: .gitignore
================================================
target_as

# Criterion puts results in wrong directories inside workspace: https://github.com/bheisler/criterion.rs/issues/192
target

# Created by https://www.toptal.com/developers/gitignore/api/rust,node
# Edit at https://www.toptal.com/developers/gitignore?templates=rust,node

### Node ###
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage
*.lcov

# nyc test coverage
.nyc_output

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# TypeScript v1 declaration files
typings/

# TypeScript cache
*.tsbuildinfo

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env
.env.test

# parcel-bundler cache (https://parceljs.org/)
.cache

# Next.js build output
.next

# Nuxt.js build / generate output
.nuxt
dist

# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public

# vuepress build output
.vuepress/dist

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TernJS port file
.tern-port

# Stores VSCode versions used for testing VSCode extensions
.vscode-test

### Rust ###
# Generated by Cargo
# will have compiled files and executables
# /target/

# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
# Cargo.lock

# These are backup files generated by rustfmt
**/*.rs.bk

# End of https://www.toptal.com/developers/gitignore/api/rust,node

resources/production/*.wasm
resources/node-storage/*
resources/local/chainspec.toml

execution_engine_testing/test_support/resources/chainspec.toml

# CLion
.idea/
cmake-build-debug/

# vscode
.vscode/
.dccache

# utils data dirs
/utils/**/chain-download
/utils/**/lmdb-data

# OS X
.DS_Store

# Notes
notes

# sw* files in vim
.*.sw*

# disk use reports
**/disk_use_report.csv

# index files for VSCode
.lh/*

*.patch

# direnv-related files
.envrc
.direnv/


================================================
FILE: Cargo.toml
================================================
[workspace]

# highway-rewards-analysis and highway-state-grapher are temporarily disabled becasue
# they use old rewards calculation logic and need to be updated.

members = [
    "ci/casper_updater",
    "execution_engine",
    "execution_engine_testing/test_support",
    "execution_engine_testing/tests",
    "node",
    "smart_contracts/contract",
    "smart_contracts/contracts/[!.]*/*",
    "storage",
    "types",
    "utils/global-state-update-gen",
    "utils/validation",
    "binary_port",
    "smart_contracts/sdk",
    "smart_contracts/sdk_codegen",
    "smart_contracts/sdk_sys",
    "smart_contracts/macros",
    "cargo_casper",
    # "utils/highway-rewards-analysis",
    # "utils/highway-state-grapher",
    "executor/wasm_common",
    "executor/wasm_interface",
    "executor/wasm_host",
    "executor/wasmer_backend",
    "executor/wasm",
]

default-members = [
    "ci/casper_updater",
    "execution_engine",
    "execution_engine_testing/test_support",
    "execution_engine_testing/tests",
    "node",
    "storage",
    "types",
    "utils/global-state-update-gen",
    "utils/validation",
    "binary_port",
    "smart_contracts/sdk",
    "smart_contracts/sdk_sys",
    "smart_contracts/sdk_codegen",
    "smart_contracts/macros",
    # "utils/highway-rewards-analysis",
    # "utils/highway-state-grapher",
]

exclude = ["utils/nctl/remotes/casper-client-rs"]

resolver = "2"

# Include debug symbols in the release build of `casper-engine-tests` so that `simple-transfer` will yield useful
# perf data.
[profile.release.package.casper-engine-tests]
debug = true

[profile.release]
codegen-units = 1
lto = true

[profile.bench]
codegen-units = 1
lto = true

[workspace.dependencies]
num-derive = "0.4.2"
num-traits = "0.2.19"


================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright 2021 Casper Association

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: Makefile
================================================
# This supports environments where $HOME/.cargo/env has not been sourced (CI, CLion Makefile runner)
CARGO  = $(or $(shell which cargo),  $(HOME)/.cargo/bin/cargo)
RUSTUP = $(or $(shell which rustup), $(HOME)/.cargo/bin/rustup)

PINNED_NIGHTLY := $(shell cat smart_contracts/rust-toolchain)
PINNED_STABLE  := $(shell sed -nr 's/channel *= *\"(.*)\"/\1/p' rust-toolchain.toml)
WASM_STRIP_VERSION := $(shell wasm-strip --version)

CARGO_OPTS := --locked
CARGO_PINNED_NIGHTLY := $(CARGO) +$(PINNED_NIGHTLY) $(CARGO_OPTS)
CARGO := $(CARGO) $(CARGO_OPTS)

DISABLE_LOGGING = RUST_LOG=MatchesNothing

# Rust Contracts
VM2_CONTRACTS    = $(shell find ./smart_contracts/contracts/vm2 -mindepth 1 -maxdepth 1 -type d -exec basename {} \;)
ALL_CONTRACTS    = $(shell find ./smart_contracts/contracts/[!.]* -mindepth 1 -maxdepth 1 -not -path "./smart_contracts/contracts/vm2*" -type d -exec basename {} \;)
CLIENT_CONTRACTS = $(shell find ./smart_contracts/contracts/client -mindepth 1 -maxdepth 1 -type d -exec basename {} \;)
CARGO_HOME_REMAP = $(if $(CARGO_HOME),$(CARGO_HOME),$(HOME)/.cargo)
RUSTC_FLAGS      = "--remap-path-prefix=$(CARGO_HOME_REMAP)=/home/cargo --remap-path-prefix=$$PWD=/dir"

CONTRACT_TARGET_DIR       = target/wasm32-unknown-unknown/release

build-contract-rs/%:
	cd smart_contracts/contracts && RUSTFLAGS=$(RUSTC_FLAGS) $(CARGO) build --verbose --release $(filter-out --release, $(CARGO_FLAGS)) --package $*

build-vm2-contract-rs/%:
	RUSTFLAGS=$(RUSTC_FLAGS) $(CARGO) run -p cargo-casper --bin cargo-casper -- build-schema --package $*
	cd smart_contracts/contracts/vm2 && RUSTFLAGS=$(RUSTC_FLAGS) $(CARGO) build --verbose --release $(filter-out --release, $(CARGO_FLAGS)) --package $*

.PHONY: build-vm2-contracts-rs
build-vm2-contracts-rs: $(patsubst %, build-vm2-contract-rs/%, $(VM2_CONTRACTS))

.PHONY: build-all-contracts-rs
build-all-contracts-rs: $(patsubst %, build-contract-rs/%, $(ALL_CONTRACTS))

.PHONY: build-client-contracts-rs
build-client-contracts-rs: $(patsubst %, build-contract-rs/%, $(CLIENT_CONTRACTS))

strip-contract/%:
	wasm-strip $(CONTRACT_TARGET_DIR)/$(subst -,_,$*).wasm 2>/dev/null | true

.PHONY: strip-all-contracts
strip-all-contracts: $(info Using 'wasm-strip' version $(WASM_STRIP_VERSION)) $(patsubst %, strip-contract/%, $(ALL_CONTRACTS))

.PHONY: strip-client-contracts
strip-client-contracts: $(patsubst %, strip-contract/%, $(CLIENT_CONTRACTS))

.PHONY: build-contracts-rs
build-contracts-rs: build-all-contracts-rs strip-all-contracts

.PHONY: build-client-contracts
build-client-contracts: build-client-contracts-rs strip-client-contracts

.PHONY: build-contracts
build-contracts: build-contracts-rs

resources/local/chainspec.toml: generate-chainspec.sh resources/local/chainspec.toml.in
	@./$<

.PHONY: test-rs
test-rs: resources/local/chainspec.toml build-contracts-rs
	$(LEGACY) $(DISABLE_LOGGING) $(CARGO) test --all-features --no-fail-fast $(CARGO_FLAGS) -- --nocapture

.PHONY: resources/local/chainspec.toml
test-rs-no-default-features:
	cd smart_contracts/contract && $(DISABLE_LOGGING) $(CARGO) test $(CARGO_FLAGS) --no-default-features --features=version-sync

.PHONY: test
test: test-rs-no-default-features test-rs

.PHONY: test-contracts-rs
test-contracts-rs: build-contracts-rs
	$(DISABLE_LOGGING) $(CARGO) test $(CARGO_FLAGS) -p casper-engine-tests -- --ignored --skip repeated_ffi_call_should_gas_out_quickly

.PHONY: test-contracts-timings
test-contracts-timings: build-contracts-rs
	$(DISABLE_LOGGING) $(CARGO) test --release $(filter-out --release, $(CARGO_FLAGS)) -p casper-engine-tests -- --ignored --test-threads=1 repeated_ffi_call_should_gas_out_quickly

.PHONY: test-contracts
test-contracts: test-contracts-rs

.PHONY: check-no-default-features
check-no-default-features:
	cd types && $(CARGO) check --all-targets --no-default-features

.PHONY: check-std-features
check-std-features:
	cd types && $(CARGO) check --all-targets --no-default-features --features=std
	cd types && $(CARGO) check --all-targets --features=std
	cd smart_contracts/contract && $(CARGO) check --all-targets --no-default-features --features=std
	cd smart_contracts/contract && $(CARGO) check --all-targets --features=std

check-std-fs-io-features:
	cd types && $(CARGO) check --all-targets --features=std-fs-io
	cd types && $(CARGO) check --lib --features=std-fs-io

check-testing-features:
	cd types && $(CARGO) check --all-targets --no-default-features --features=testing
	cd types && $(CARGO) check --all-targets --features=testing

.PHONY: check-format
check-format:
	$(CARGO_PINNED_NIGHTLY) fmt --all -- --check

.PHONY: format
format:
	$(CARGO_PINNED_NIGHTLY) fmt --all

lint-contracts-rs:
	cd smart_contracts/contracts && $(CARGO) clippy $(patsubst %, -p %, $(ALL_CONTRACTS)) -- -D warnings -A renamed_and_removed_lints

.PHONY: lint
lint: lint-contracts-rs lint-default-features lint-all-features lint-smart-contracts lint-no-default-features

.PHONY: lint-default-features
lint-default-features:
	$(CARGO) clippy --all-targets -- -D warnings

.PHONY: lint-no-default-features
lint-no-default-features:
	$(CARGO) clippy --all-targets --no-default-features -- -D warnings

.PHONY: lint-all-features
lint-all-features:
	$(CARGO) clippy --all-targets --all-features -- -D warnings

.PHONY: lint-smart-contracts
lint-smart-contracts:
	cd smart_contracts/contract && $(CARGO) clippy --all-targets -- -D warnings -A renamed_and_removed_lints

.PHONY: audit-rs
audit-rs:
	$(CARGO) audit

.PHONY: audit
audit: audit-rs

.PHONY: doc
doc:
	RUSTFLAGS="-D warnings" RUSTDOCFLAGS="--cfg docsrs" $(CARGO_PINNED_NIGHTLY) doc --all-features $(CARGO_FLAGS) --no-deps
	cd smart_contracts/contract && RUSTFLAGS="-D warnings" RUSTDOCFLAGS="--cfg docsrs" $(CARGO_PINNED_NIGHTLY) doc --all-features $(CARGO_FLAGS) --no-deps

.PHONY: check-rs
check: \
	check-format \
	doc \
	lint \
	audit \
	check-no-default-features \
	check-std-features \
	check-std-fs-io-features \
	check-testing-features \
	test-rs \
	test-rs-no-default-features \
	test-contracts-rs

.PHONY: clean
clean:
	rm -rf resources/local/chainspec.toml
	$(CARGO) clean

.PHONY: build-for-packaging
build-for-packaging: build-client-contracts
	$(LEGACY) $(CARGO) build --release

.PHONY: package
package:
	cd contract && $(CARGO) package

.PHONY: publish
publish:
	./publish.sh

.PHONY: bench
bench: build-contracts-rs
	$(CARGO) bench

.PHONY: setup-cargo-packagers
setup-cargo-packagers:
	$(CARGO) install cargo-deb || exit 0

.PHONY: setup-rs
setup-rs:
	$(RUSTUP) update
	$(RUSTUP) toolchain install $(PINNED_STABLE) $(PINNED_NIGHTLY)
	$(RUSTUP) target add --toolchain $(PINNED_STABLE) wasm32-unknown-unknown
	$(RUSTUP) target add --toolchain $(PINNED_NIGHTLY) wasm32-unknown-unknown
	$(RUSTUP) component add --toolchain $(PINNED_NIGHTLY) rustfmt clippy-preview
	$(RUSTUP) component add --toolchain $(PINNED_STABLE) clippy-preview
	$(CARGO) install cargo-audit

.PHONY: setup
setup: setup-rs


================================================
FILE: README.md
================================================
<a href="https://casper.network/"><img src="images/Casper-association-logo-new.svg" alt="Casper Network Logo" width="300" height="100"></a>

# casper-node

Reference node for the Casper Blockchain Protocol.

## Casper Blockchain

Casper is the blockchain platform purpose-built to scale opportunity for everyone. Building toward blockchain’s next frontier,
Casper is designed for real-world applications without sacrificing usability, cost, decentralization, or security. It removes
the barriers that prevent mainstream blockchain adoption by making blockchain friendly to use, open to the world, and
future-proof to support innovations today and tomorrow. Guided by open-source principles and built from the ground up to
empower individuals, the team seeks to provide an equitable foundation made for long-lasting impact. Read more about our
mission at: https://casper.network

The Casper MainNet is live.
- [cspr.live Block Explorer](https://cspr.live)

### Specification

- [Platform Specification](https://docs.casper.network/design)
- [Highway Consensus Proofs](https://github.com/casper-network/highway/releases/latest)
- [Zug Consensus Whitepaper](http://arxiv.org/pdf/2205.06314)

### Get Started with Smart Contracts
- [Writing Smart Contracts](https://docs.casper.network/developers/)
- [Rust Smart Contract SDK](https://crates.io/crates/cargo-casper)
- [Rust Smart Contract API Docs](https://docs.rs/casper-contract/latest/casper_contract/contract_api/index.html)
- [AssemblyScript Smart Contract API](https://www.npmjs.com/package/casper-contract)

### Community

- [Discord Server](https://discord.gg/caspernetwork)
- [Telegram Channel](https://t.me/casperofficialann)
- [X (Twitter)](https://x.com/Casper_Network)



## Running a casper-node from source

### Pre-Requisites for Building

* CMake 3.1.4 or greater
* [Rust](https://www.rust-lang.org/tools/install)
* libssl-dev
* pkg-config
* gcc
* g++
* recommended [wasm-strip](https://github.com/WebAssembly/wabt) (used to reduce the size of compiled Wasm)

```sh
# Ubuntu prerequisites setup example
apt update
apt install cmake libssl-dev pkg-config gcc g++ -y
# the '-s -- -y' part ensures silent mode. Omit if you want to customize
curl https://sh.rustup.rs -sSf | sh -s -- -y
```


### Setup

Before building a node, prepare your Rust build environment:

```
make setup-rs
```

The node software can be compiled afterwards:

```
cargo build -p casper-node --release
```

The result will be a `casper-node` binary found in `target/release`.  Copy this somewhere into your
PATH, or substitute `target/release/casper-node` for `casper-node` in all examples below.

### Running one node

To run a validator node you will need to specify a config file and launch the validator subcommand, for example

```
casper-node validator /etc/casper-node/config.toml
```

The node ships with an [example configuration file](resources/local/config.toml) that should be setup first.  There is
also a template for a local [chainspec](resources/local/chainspec.toml.in) in the same folder.

For launching, the following configuration values must be properly set:

| Setting                   | Description |
| :-------------------------| :---------- |
| `network.known_addresses` | Must refer to public listening addresses of one or more currently-running nodes.  If the node cannot connect to any of these addresses, it will panic.  The node _can_ be run with this referring to its own address, but it will be equivalent to specifying an empty list for `known_addresses` - i.e. the node will run and listen, but will be reliant on other nodes connecting to it in order to join the network.  This would be normal for the very first node of a network, but all subsequent nodes should normally specify that first  node's public listening address as their `known_addresses`. |

__The node will not run properly without another node to connect to.  It is recommended that multiple nodes are run.__

### Running multiple nodes on one machine

There is a [tool](https://github.com/casper-network/casper-nctl) which automates the process of running multiple nodes on a single machine.

Note that running multiple nodes on a single machine is normally only recommended for test purposes.

## Configuration

In general nodes are configured through a configuration file, typically named `config.toml`.  This
file may reference other files or locations through relative paths.  When it does, note that all
paths that are not absolute will be resolved relative to `config.toml` directory.


### Environment overrides

Some environments may call for overriding options through the environment.  In this
scenario, the `NODE_CONFIG` environment variable can be used. For example:
alternatively expressed as

```
export NODE_CONFIG=consensus.secret_key_path=secret_keys/node-1.pem;network.known_addresses=[1.2.3.4:34553, 200.201.203.204:34553]
casper-node validator /etc/casper-node/config.toml
```

Note how the semicolon is used to separate configuration overrides here.

### Other environment variables

To set the threshold at which a warn-level log message is generated for a long-running reactor event, use the env var
`CL_EVENT_MAX_MICROSECS`.  For example, to set the threshold to 1 millisecond:

```
CL_EVENT_MAX_MICROSECS=1000
```

To set the threshold above which the size of the current scheduler queues will be dumped to logs, use the `CL_EVENT_QUEUE_DUMP_THRESHOLD` variable. For example, to set the threshold to 10000 events:

```
CL_EVENT_QUEUE_DUMP_THRESHOLD=10000
```

This will dump a line to the log if the total number of events in queues exceeds 10000. After each dump, the threshold will be automatically increased by 10% to avoid log flooding.

Example log entry:
```
Current event queue size (11000) is above the threshold (10000): details [("FinalitySignature", 3000), ("FromStorage", 1000), ("NetworkIncoming", 6500), ("Regular", 500)]
```

## Logging

Logging can be enabled by setting the environment variable `RUST_LOG`.  This can be set to one of the following levels,
from lowest priority to highest: `trace`, `debug`, `info`, `warn`, `error`:

```
RUST_LOG=info cargo run --release -- validator resources/local/config.toml
```

If the environment variable is unset, it is equivalent to setting `RUST_LOG=error`.

### Log message format

A typical log message will look like:

```
Jun 09 01:40:17.315 INFO  [casper_node::components::rpc_server rpc_server.rs:127] starting HTTP server; server_addr=127.0.0.1:7777
```

This is comprised of the following parts:
* timestamp
* log level
* full module path (not to be confused with filesystem path) of the source of the message
* filename and line number of the source of the message
* message

### Filtering log messages

`RUST_LOG` can be set to enable varying levels for different modules.  Simply set it to a comma-separated list of
`module-path=level`, where the module path is as shown above in the typical log message, with the end truncated to suit.

For example, to enable `trace` level logging for the `network` module in `components`, `info` level for all other
modules in `components`, and `warn` level for the remaining codebase:

```
RUST_LOG=casper_node::components::network=trace,casper_node::comp=info,warn
```

### Logging network messages and tracing events

Special logging targets exist in `net_in` and `net_out` which can be used to log every single network message leaving or
entering a node when set to trace level:

```
RUST_LOG=net_in::TRACE,net_out::TRACE
```

All messages in these logs are also assigned a unique ID that is different even if the same message is sent to multiple
nodes. The receiving node will log them using the same ID as the sender, thus enabling the tracing of a message across
multiple nodes provided all logs are available.

Another helpful logging feature is ancestor logging. If the target `dispatch` is set to at least debug level, events
being dispatched will be logged as well. Any event has an id (`ev`) and may have an ancestor (`a`), which is the previous
event whose effects caused the resulting event to be scheduled. As an example, if an incoming network message gets
assigned an ID of `ev=123`, the first round of subsequent events will show `a=123` as their ancestor in the logs.

### Changing the logging filter at runtime

If necessary, the filter of a running node can be changed using the diagnostics port, using the `set-log-filter`
command. See the "Diagnostics port" section for details on how to access it.

## Debugging

Some additional debug functionality is available, mainly allowed for inspections of the internal event queue.

### Diagnostics port

If the configuration option `diagnostics_port.enabled` is set to `true`, a unix socket named `debug.socket` by default can be found next to the configuration while the node is running.

#### Interactive use

The `debug.socket` can be connected to by tools like `socat` for interactive use:

```sh
socat readline unix:/path/to/debug.socket
```

Entering `help` will show available commands. The `set` command allows configuring the current connection, see `set --help`.

#### Example: Collecting a consensus dump

After connecting using `socat` (see above), we set the output format to JSON:

```
set --output=json
```

A confirmation will acknowledge the settings change (unless `--quiet=true` is set):

```
{
  "Success": {
    "msg": "session unchanged"
  }
}
```

We can now call `dump-consensus` to get the _latest_ era serialized in JSON format:

```
dump-consensus
{
  "Success": {
    "msg": "dumping consensus state"
  }
}
{"id":8,"start_time":"2022-03-01T14:54:42.176Z","start_height":88,"new_faulty" ...
```

An era other than the latest can be dumped by specifying as a parameter, _e.g._ `dump-consensus 3` will dump the third era. See `dump-consensus --help` for details.

#### Example: Dumping the event queue

With the connection set to JSON output (see previous example), we can also dump the event queues:

```
dump-queues
{
  "Success": {
    "msg": "dumping queues"
  }
}
{"queues":{"Regular":[],"Api":[],"Network":[],"Control":[],"NetworkIncoming":[]
}}{"queues":{"Api":[],"Regular":[],"Control":[],"NetworkIncoming":[],"Network":
[]}}{"queues":{"Network":[],"Control":[],"Api":[],"NetworkIncoming":[],"Regular
":[]}}
```

Empty output will be produced on a node that is working without external pressure, as the queues will be empty most of the time.


#### Non-interactive use

The diagnostics port can also be scripted by sending a newline-terminated list of commands through `socat`. For example, the following sequence of commands will collect a consensus dump without the success-indicating header:

```
set -o json -q true
dump-consensus
```

For ad-hoc dumps, this can be shortened and piped into `socat`:

```sh
echo -e 'set -o json -q true\ndump-consensus' | socat - unix-client:debug.socket > consensus-dump.json
```

This results in the latest era being dumped into `consensus-dump.json`.


## Running a client

See [the client README](https://github.com/casper-ecosystem/casper-client-rs#readme).

## Running a local network

See [the nctl utility README](https://github.com/casper-network/casper-nctl#readme).

## Running on an existing network

To support upgrades with a network, the casper-node is installed using scripts distributed with the
[casper-node-launcher](https://github.com/casper-network/casper-node-launcher).


================================================
FILE: binary_port/CHANGELOG.md
================================================
# Changelog

All notable changes to this project will be documented in this file.  The format is based on [Keep a Changelog].

[comment]: <> (Added:      new features)
[comment]: <> (Changed:    changes in existing functionality)
[comment]: <> (Deprecated: soon-to-be removed features)
[comment]: <> (Removed:    now removed features)
[comment]: <> (Fixed:      any bug fixes)
[comment]: <> (Security:   in case of vulnerabilities)

## [Unreleased]

### Added
* `ErrorCode` has a new code `117`

## [1.0.0] - 

### Added
* Initial release of node for Casper mainnet.

================================================
FILE: binary_port/Cargo.toml
================================================
[package]
name = "casper-binary-port"
version = "1.1.1"
edition = "2018"
description = "Types for the casper node binary port"
documentation = "https://docs.rs/casper-binary-port"
readme = "README.md"
homepage = "https://casper.network"
repository = "https://github.com/casper-network/casper-node/tree/master/binary_port"
license = "Apache-2.0"
exclude = ["proptest-regressions"]

[dependencies]
bincode = "1.3.3"
bytes = "1.0.1"
casper-types = { version = "7.0.0", path = "../types", features = ["datasize", "json-schema", "std"] }
num-derive = { workspace = true }
num-traits = { workspace = true }
once_cell = { version = "1.5.2" }
rand = "0.8.3"
serde = { version = "1.0.183", features = ["derive"] }
strum = "0.27"
strum_macros = "0.27"
thiserror = "1.0.45"
tokio-util = { version = "0.6.4", features = ["codec"] }
tracing = "0.1.18"

[dev-dependencies]
casper-types = { path = "../types", features = ["datasize", "json-schema", "std", "testing"] }
serde_json = "1"
serde_test = "1"

[package.metadata.docs.rs]
all-features = true
rustc-args = ["--cfg", "docsrs"]

[features]
testing = ["rand/default"]


================================================
FILE: binary_port/README.md
================================================
# `casper-binary-port`

[![LOGO](https://raw.githubusercontent.com/casper-network/casper-node/master/images/casper-association-logo-primary.svg)](https://casper.network/)

[![Crates.io](https://img.shields.io/crates/v/casper-hashing)](https://crates.io/crates/casper-binary-port)
[![Documentation](https://docs.rs/casper-hashing/badge.svg)](https://docs.rs/casper-binary-port)
[![License](https://img.shields.io/badge/license-Apache-blue)](https://github.com/casper-network/casper-node/blob/master/LICENSE)

Types for the binary port on a casper network node.

[Node Operator Guide](https://docs.casper.network/operators/)

## License

Licensed under the [Apache License Version 2.0](https://github.com/casper-network/casper-node/blob/master/LICENSE).


================================================
FILE: binary_port/src/balance_response.rs
================================================
use std::collections::BTreeMap;
#[cfg(test)]
use std::{collections::VecDeque, iter::FromIterator};

#[cfg(test)]
use casper_types::testing::TestRng;
use casper_types::{
    bytesrepr::{self, FromBytes, ToBytes},
    global_state::TrieMerkleProof,
    system::mint::BalanceHoldAddrTag,
    BlockTime, Key, StoredValue, U512,
};
#[cfg(test)]
use casper_types::{global_state::TrieMerkleProofStep, CLValue};
#[cfg(test)]
use rand::Rng;

/// Response to a balance query.
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct BalanceResponse {
    /// The purses total balance, not considering holds.
    pub total_balance: U512,
    /// The available balance (total balance - sum of all active holds).
    pub available_balance: U512,
    /// A proof that the given value is present in the Merkle trie.
    pub total_balance_proof: Box<TrieMerkleProof<Key, StoredValue>>,
    /// Any time-relevant active holds on the balance.
    pub balance_holds: BTreeMap<BlockTime, BalanceHoldsWithProof>,
}

impl BalanceResponse {
    #[cfg(test)]
    pub(crate) fn random(rng: &mut TestRng) -> Self {
        BalanceResponse {
            total_balance: rng.gen(),
            available_balance: rng.gen(),
            total_balance_proof: Box::new(TrieMerkleProof::new(
                Key::URef(rng.gen()),
                StoredValue::CLValue(CLValue::from_t(rng.gen::<i32>()).unwrap()),
                VecDeque::from_iter([TrieMerkleProofStep::random(rng)]),
            )),
            balance_holds: BTreeMap::new(),
        }
    }
}

impl ToBytes for BalanceResponse {
    fn to_bytes(&self) -> Result<Vec<u8>, casper_types::bytesrepr::Error> {
        let mut buffer = bytesrepr::allocate_buffer(self)?;
        self.write_bytes(&mut buffer)?;
        Ok(buffer)
    }

    fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), casper_types::bytesrepr::Error> {
        self.total_balance.write_bytes(writer)?;
        self.available_balance.write_bytes(writer)?;
        self.total_balance_proof.write_bytes(writer)?;
        self.balance_holds.write_bytes(writer)
    }

    fn serialized_length(&self) -> usize {
        self.total_balance.serialized_length()
            + self.available_balance.serialized_length()
            + self.total_balance_proof.serialized_length()
            + self.balance_holds.serialized_length()
    }
}

impl FromBytes for BalanceResponse {
    fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), casper_types::bytesrepr::Error> {
        let (total_balance, remainder) = U512::from_bytes(bytes)?;
        let (available_balance, remainder) = U512::from_bytes(remainder)?;
        let (total_balance_proof, remainder) =
            TrieMerkleProof::<Key, StoredValue>::from_bytes(remainder)?;
        let (balance_holds, remainder) =
            BTreeMap::<BlockTime, BalanceHoldsWithProof>::from_bytes(remainder)?;
        Ok((
            BalanceResponse {
                total_balance,
                available_balance,
                total_balance_proof: Box::new(total_balance_proof),
                balance_holds,
            },
            remainder,
        ))
    }
}

/// Balance holds with Merkle proofs.
pub type BalanceHoldsWithProof =
    BTreeMap<BalanceHoldAddrTag, (U512, TrieMerkleProof<Key, StoredValue>)>;

#[cfg(test)]
mod tests {
    use super::*;
    use casper_types::testing::TestRng;

    #[test]
    fn bytesrepr_roundtrip() {
        let rng = &mut TestRng::new();

        let val = BalanceResponse::random(rng);
        bytesrepr::test_serialization_roundtrip(&val);
    }
}


================================================
FILE: binary_port/src/binary_message.rs
================================================
#[cfg(test)]
use casper_types::testing::TestRng;
#[cfg(test)]
use rand::Rng;

use bytes::{Buf, Bytes};
use tokio_util::codec::{self};

use crate::error::Error;

type LengthEncoding = u32;
const LENGTH_ENCODING_SIZE_BYTES: usize = size_of::<LengthEncoding>();

#[derive(Clone, PartialEq, Debug)]
pub struct BinaryMessage(Bytes);

impl BinaryMessage {
    pub fn new(payload: Vec<u8>) -> Self {
        Self(payload.into())
    }

    pub fn payload(&self) -> &[u8] {
        &self.0
    }

    #[cfg(test)]
    pub(crate) fn random(rng: &mut TestRng) -> Self {
        let len = rng.gen_range(1..=1024);
        let payload = std::iter::repeat_with(|| rng.gen()).take(len).collect();
        BinaryMessage(payload)
    }
}

#[derive(Clone, Copy)]
pub struct BinaryMessageCodec {
    max_message_size_bytes: u32,
}

impl BinaryMessageCodec {
    pub fn new(max_message_size_bytes: u32) -> Self {
        Self {
            max_message_size_bytes,
        }
    }

    pub fn max_message_size_bytes(&self) -> u32 {
        self.max_message_size_bytes
    }
}

impl codec::Encoder<BinaryMessage> for BinaryMessageCodec {
    type Error = Error;

    fn encode(
        &mut self,
        item: BinaryMessage,
        dst: &mut bytes::BytesMut,
    ) -> Result<(), Self::Error> {
        let length = item.0.len() as LengthEncoding;
        if length > self.max_message_size_bytes {
            return Err(Error::RequestTooLarge {
                allowed: self.max_message_size_bytes,
                got: length,
            });
        }
        let length_bytes = length.to_le_bytes();
        dst.extend(length_bytes.iter().chain(item.0.iter()));
        Ok(())
    }
}

impl codec::Decoder for BinaryMessageCodec {
    type Item = BinaryMessage;

    type Error = Error;

    fn decode(&mut self, src: &mut bytes::BytesMut) -> Result<Option<Self::Item>, Self::Error> {
        let (length, have_full_frame) = if let [b1, b2, b3, b4, remainder @ ..] = &src[..] {
            let length = LengthEncoding::from_le_bytes([*b1, *b2, *b3, *b4]) as usize;
            if length == 0 {
                return Err(Error::EmptyRequest);
            }
            let remainder_length = remainder.len();
            (length, remainder_length >= length)
        } else {
            // Not enough bytes to read the length.
            return Ok(None);
        };

        if length > self.max_message_size_bytes as usize {
            return Err(Error::RequestTooLarge {
                allowed: self.max_message_size_bytes,
                got: length as u32,
            });
        }

        if !have_full_frame {
            // Not enough bytes to read the whole message.
            return Ok(None);
        };

        src.advance(LENGTH_ENCODING_SIZE_BYTES);
        Ok(Some(BinaryMessage(src.split_to(length).freeze())))
    }
}

#[cfg(test)]
mod tests {
    use casper_types::testing::TestRng;
    use rand::Rng;
    use tokio_util::codec::{Decoder, Encoder};

    use crate::{
        binary_message::{LengthEncoding, LENGTH_ENCODING_SIZE_BYTES},
        error::Error,
        BinaryMessage, BinaryMessageCodec,
    };

    const MAX_MESSAGE_SIZE_BYTES: u32 = 1024 * 1024;

    #[test]
    fn binary_message_codec() {
        let rng = &mut TestRng::new();
        let val = BinaryMessage::random(rng);
        let mut codec = BinaryMessageCodec::new(MAX_MESSAGE_SIZE_BYTES);
        let mut bytes = bytes::BytesMut::new();
        codec
            .encode(val.clone(), &mut bytes)
            .expect("should encode");

        let decoded = codec
            .decode(&mut bytes)
            .expect("should decode")
            .expect("should be Some");

        assert_eq!(val, decoded);
    }

    #[test]
    fn should_not_decode_when_not_enough_bytes_to_decode_length() {
        let rng = &mut TestRng::new();
        let val = BinaryMessage::random(rng);
        let mut codec = BinaryMessageCodec::new(MAX_MESSAGE_SIZE_BYTES);
        let mut bytes = bytes::BytesMut::new();
        codec.encode(val, &mut bytes).expect("should encode");

        let _ = bytes.split_off(LENGTH_ENCODING_SIZE_BYTES / 2);
        let in_bytes = bytes.clone();
        assert!(codec.decode(&mut bytes).expect("should decode").is_none());

        // Ensure that the bytes are not consumed.
        assert_eq!(in_bytes, bytes);
    }

    #[test]
    fn should_not_decode_when_not_enough_bytes_to_decode_full_frame() {
        let rng = &mut TestRng::new();
        let val = BinaryMessage::random(rng);
        let mut codec = BinaryMessageCodec::new(MAX_MESSAGE_SIZE_BYTES);
        let mut bytes = bytes::BytesMut::new();
        codec.encode(val, &mut bytes).expect("should encode");

        let _ = bytes.split_off(bytes.len() - 1);
        let in_bytes = bytes.clone();
        assert!(codec.decode(&mut bytes).expect("should decode").is_none());

        // Ensure that the bytes are not consumed.
        assert_eq!(in_bytes, bytes);
    }

    #[test]
    fn should_leave_remainder_in_buffer() {
        let rng = &mut TestRng::new();
        let val = BinaryMessage::random(rng);
        let mut codec = BinaryMessageCodec::new(MAX_MESSAGE_SIZE_BYTES);
        let mut bytes = bytes::BytesMut::new();
        codec.encode(val, &mut bytes).expect("should encode");
        let suffix = bytes::Bytes::from_static(b"suffix");
        bytes.extend(&suffix);

        let _ = codec.decode(&mut bytes);
        // Ensure that the bytes are not consumed.
        assert_eq!(bytes, suffix);
    }

    #[test]
    fn encode_should_bail_on_too_large_request() {
        let mut codec = BinaryMessageCodec::new(MAX_MESSAGE_SIZE_BYTES);
        let too_large = MAX_MESSAGE_SIZE_BYTES as usize + 1;
        let val = BinaryMessage::new(vec![0; too_large]);
        let mut bytes = bytes::BytesMut::new();
        let result = codec.encode(val, &mut bytes).unwrap_err();

        assert!(matches!(result, Error::RequestTooLarge { allowed, got }
                 if allowed == codec.max_message_size_bytes && got == too_large as u32));
    }

    #[test]
    fn should_encode_request_of_maximum_size() {
        let mut codec = BinaryMessageCodec::new(MAX_MESSAGE_SIZE_BYTES);
        let just_right_size = MAX_MESSAGE_SIZE_BYTES as usize;
        let val = BinaryMessage::new(vec![0; just_right_size]);
        let mut bytes = bytes::BytesMut::new();

        let result = codec.encode(val, &mut bytes);
        assert!(result.is_ok());
    }

    #[test]
    fn decode_should_bail_on_too_large_request() {
        let rng = &mut TestRng::new();
        let mut codec = BinaryMessageCodec::new(MAX_MESSAGE_SIZE_BYTES);
        let mut bytes = bytes::BytesMut::new();
        let too_large = (codec.max_message_size_bytes + 1) as LengthEncoding;
        bytes.extend(too_large.to_le_bytes());
        bytes.extend(std::iter::repeat_with(|| rng.gen::<u8>()).take(too_large as usize));

        let result = codec.decode(&mut bytes).unwrap_err();
        assert!(matches!(result, Error::RequestTooLarge { allowed, got }
                 if allowed == codec.max_message_size_bytes && got == too_large));
    }

    #[test]
    fn should_decode_request_of_maximum_size() {
        let rng = &mut TestRng::new();
        let mut codec = BinaryMessageCodec::new(MAX_MESSAGE_SIZE_BYTES);
        let mut bytes = bytes::BytesMut::new();
        let just_right_size = (codec.max_message_size_bytes) as LengthEncoding;
        bytes.extend(just_right_size.to_le_bytes());
        bytes.extend(std::iter::repeat_with(|| rng.gen::<u8>()).take(just_right_size as usize));

        let result = codec.decode(&mut bytes);
        assert!(result.is_ok());
    }

    #[test]
    fn should_bail_on_empty_request() {
        let mut codec = BinaryMessageCodec::new(MAX_MESSAGE_SIZE_BYTES);
        let mut bytes = bytes::BytesMut::new();
        let empty = 0 as LengthEncoding;
        bytes.extend(&empty.to_le_bytes());

        let result = codec.decode(&mut bytes).unwrap_err();
        assert!(matches!(result, Error::EmptyRequest));
    }

    #[test]
    fn should_decoded_queued_messages() {
        let rng = &mut TestRng::new();
        let count = rng.gen_range(10000..20000);
        let messages = (0..count)
            .map(|_| BinaryMessage::random(rng))
            .collect::<Vec<_>>();
        let mut codec = BinaryMessageCodec::new(MAX_MESSAGE_SIZE_BYTES);
        let mut bytes = bytes::BytesMut::new();
        for msg in &messages {
            codec
                .encode(msg.clone(), &mut bytes)
                .expect("should encode");
        }

        let mut decoded_messages = vec![];
        loop {
            let maybe_message = codec.decode(&mut bytes).expect("should decode");
            match maybe_message {
                Some(message) => decoded_messages.push(message),
                None => break,
            }
        }
        assert_eq!(messages, decoded_messages);
    }

    #[test]
    fn should_not_decode_when_read_bytes_extend_max() {
        const MAX_MESSAGE_BYTES: usize = 1000;
        let rng = &mut TestRng::new();
        let mut codec = BinaryMessageCodec::new(MAX_MESSAGE_BYTES as u32);
        let mut bytes = bytes::BytesMut::new();
        let some_length = (MAX_MESSAGE_BYTES * 2_usize) as LengthEncoding; //This value doesn't match the
                                                                           // length of mock_bytes intentionally so we can be sure at what point did the encoder bail -
                                                                           // we want to ensure that the encoder doesn't read the whole message before it bails
        bytes.extend(&some_length.to_le_bytes());
        bytes.extend(std::iter::repeat_with(|| rng.gen::<u8>()).take(MAX_MESSAGE_BYTES * 3));

        let message_res = codec.decode(&mut bytes);
        assert!(message_res.is_err());
        let err = message_res.err().unwrap();
        assert!(matches!(
            err,
            Error::RequestTooLarge { allowed, got}
            if allowed == MAX_MESSAGE_BYTES as u32 && got == MAX_MESSAGE_BYTES as u32 * 2,
        ))
    }
}


================================================
FILE: binary_port/src/binary_response.rs
================================================
use casper_types::bytesrepr::{self, Bytes, FromBytes, ToBytes};

use crate::{
    binary_response_header::BinaryResponseHeader,
    error_code::ErrorCode,
    response_type::{PayloadEntity, ResponseType},
};

#[cfg(test)]
use casper_types::testing::TestRng;

/// The response used in the binary port protocol.
#[derive(Debug, PartialEq)]
pub struct BinaryResponse {
    /// Header of the binary response.
    header: BinaryResponseHeader,
    /// The response.
    payload: Vec<u8>,
}

impl BinaryResponse {
    /// Creates new empty binary response.
    pub fn new_empty() -> Self {
        Self {
            header: BinaryResponseHeader::new(None),
            payload: vec![],
        }
    }

    /// Creates new binary response with error code.
    pub fn new_error(error: ErrorCode) -> Self {
        BinaryResponse {
            header: BinaryResponseHeader::new_error(error),
            payload: vec![],
        }
    }

    /// Creates new binary response from raw bytes.
    pub fn from_raw_bytes(payload_type: ResponseType, payload: Vec<u8>) -> Self {
        BinaryResponse {
            header: BinaryResponseHeader::new(Some(payload_type)),
            payload,
        }
    }

    /// Creates a new binary response from a value.
    pub fn from_value<V>(val: V) -> Self
    where
        V: ToBytes + PayloadEntity,
    {
        ToBytes::to_bytes(&val).map_or(
            BinaryResponse::new_error(ErrorCode::InternalError),
            |payload| BinaryResponse {
                payload,
                header: BinaryResponseHeader::new(Some(V::RESPONSE_TYPE)),
            },
        )
    }

    /// Creates a new binary response from an optional value.
    pub fn from_option<V>(opt: Option<V>) -> Self
    where
        V: ToBytes + PayloadEntity,
    {
        match opt {
            Some(val) => Self::from_value(val),
            None => Self::new_empty(),
        }
    }

    /// Returns true if response is success.
    pub fn is_success(&self) -> bool {
        self.header.is_success()
    }

    /// Returns the error code.
    pub fn error_code(&self) -> u16 {
        self.header.error_code()
    }

    /// Returns the payload type of the response.
    pub fn returned_data_type_tag(&self) -> Option<u8> {
        self.header.returned_data_type_tag()
    }

    /// Returns true if the response means that data has not been found.
    pub fn is_not_found(&self) -> bool {
        self.header.is_not_found()
    }

    /// Returns the payload.
    pub fn payload(&self) -> &[u8] {
        self.payload.as_ref()
    }

    #[cfg(test)]
    pub(crate) fn random(rng: &mut TestRng) -> Self {
        Self {
            header: BinaryResponseHeader::random(rng),
            payload: rng.random_vec(64..128),
        }
    }
}

impl ToBytes for BinaryResponse {
    fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
        let mut buffer = bytesrepr::allocate_buffer(self)?;
        self.write_bytes(&mut buffer)?;
        Ok(buffer)
    }

    fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Error> {
        let BinaryResponse { header, payload } = self;

        header.write_bytes(writer)?;
        payload.write_bytes(writer)
    }

    fn serialized_length(&self) -> usize {
        self.header.serialized_length() + self.payload.serialized_length()
    }
}

impl FromBytes for BinaryResponse {
    fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
        let (header, remainder) = FromBytes::from_bytes(bytes)?;
        let (payload, remainder) = Bytes::from_bytes(remainder)?;

        Ok((
            BinaryResponse {
                header,
                payload: payload.into(),
            },
            remainder,
        ))
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    use casper_types::testing::TestRng;

    #[test]
    fn bytesrepr_roundtrip() {
        let rng = &mut TestRng::new();

        let val = BinaryResponse::random(rng);
        bytesrepr::test_serialization_roundtrip(&val);
    }
}


================================================
FILE: binary_port/src/binary_response_and_request.rs
================================================
use casper_types::bytesrepr::{self, Bytes, FromBytes, ToBytes};

use crate::{binary_response::BinaryResponse, response_type::PayloadEntity, ResponseType};

use crate::record_id::RecordId;
#[cfg(test)]
use casper_types::testing::TestRng;

/// The binary response along with the original binary request attached.
#[derive(Debug, PartialEq)]
pub struct BinaryResponseAndRequest {
    /// Context of the original request.
    request: Bytes,
    /// The response.
    response: BinaryResponse,
}

impl BinaryResponseAndRequest {
    /// Creates new binary response with the original request attached.
    pub fn new(data: BinaryResponse, request: Bytes) -> Self {
        Self {
            request,
            response: data,
        }
    }

    /// Returns a new binary response with specified data and no original request.
    pub fn new_test_response<A: PayloadEntity + ToBytes>(
        record_id: RecordId,
        data: &A,
    ) -> BinaryResponseAndRequest {
        let response = BinaryResponse::from_raw_bytes(
            ResponseType::from_record_id(record_id, false),
            data.to_bytes().unwrap(),
        );
        Self::new(response, Bytes::from(vec![]))
    }

    /// Returns a new binary response with specified legacy data and no original request.
    pub fn new_legacy_test_response<A: PayloadEntity + serde::Serialize>(
        record_id: RecordId,
        data: &A,
    ) -> BinaryResponseAndRequest {
        let response = BinaryResponse::from_raw_bytes(
            ResponseType::from_record_id(record_id, true),
            bincode::serialize(data).unwrap(),
        );
        Self::new(response, Bytes::from(vec![]))
    }

    /// Returns true if response is success.
    pub fn is_success(&self) -> bool {
        self.response.is_success()
    }

    /// Returns the error code.
    pub fn error_code(&self) -> u16 {
        self.response.error_code()
    }

    #[cfg(test)]
    pub(crate) fn random(rng: &mut TestRng) -> Self {
        let bytes = vec![1; 155];
        Self {
            request: Bytes::from(bytes),
            response: BinaryResponse::random(rng),
        }
    }

    /// Returns serialized bytes representing the original request.
    pub fn request(&self) -> &[u8] {
        &self.request
    }

    /// Returns the inner binary response.
    pub fn response(&self) -> &BinaryResponse {
        &self.response
    }
}

impl ToBytes for BinaryResponseAndRequest {
    fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
        let mut buffer = bytesrepr::allocate_buffer(self)?;
        self.write_bytes(&mut buffer)?;
        Ok(buffer)
    }

    fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Error> {
        let BinaryResponseAndRequest { request, response } = self;
        request.write_bytes(writer)?;
        response.write_bytes(writer)
    }

    fn serialized_length(&self) -> usize {
        self.request.serialized_length() + self.response.serialized_length()
    }
}

impl FromBytes for BinaryResponseAndRequest {
    fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
        let (request, remainder) = FromBytes::from_bytes(bytes)?;
        let (response, remainder) = FromBytes::from_bytes(remainder)?;

        Ok((BinaryResponseAndRequest { request, response }, remainder))
    }
}

impl From<BinaryResponseAndRequest> for BinaryResponse {
    fn from(response_and_request: BinaryResponseAndRequest) -> Self {
        let BinaryResponseAndRequest { response, .. } = response_and_request;
        response
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    use casper_types::testing::TestRng;

    #[test]
    fn roundtrip() {
        let rng = &mut TestRng::new();
        let bytes = vec![1; 155];
        let response = BinaryResponse::random(rng);
        let val = BinaryResponseAndRequest::new(response, Bytes::from(bytes));
        bytesrepr::test_serialization_roundtrip(&val);
    }

    #[test]
    fn bytesrepr_roundtrip() {
        let rng = &mut TestRng::new();

        let val = BinaryResponseAndRequest::random(rng);
        bytesrepr::test_serialization_roundtrip(&val);
    }
}


================================================
FILE: binary_port/src/binary_response_header.rs
================================================
use crate::{error_code::ErrorCode, response_type::ResponseType};
use casper_types::bytesrepr::{self, FromBytes, ToBytes};

#[cfg(test)]
use casper_types::testing::TestRng;
#[cfg(test)]
use rand::Rng;

/// Header of the binary response.
#[derive(Debug, PartialEq)]
pub struct BinaryResponseHeader {
    binary_response_version: u16,
    error: u16,
    returned_data_type_tag: Option<u8>,
}

impl BinaryResponseHeader {
    pub const BINARY_RESPONSE_VERSION: u16 = 1;
    /// Creates new binary response header representing success.
    pub fn new(returned_data_type: Option<ResponseType>) -> Self {
        Self {
            binary_response_version: Self::BINARY_RESPONSE_VERSION,
            error: ErrorCode::NoError as u16,
            returned_data_type_tag: returned_data_type.map(|ty| ty as u8),
        }
    }

    /// Creates new binary response header representing error.
    pub fn new_error(error: ErrorCode) -> Self {
        Self {
            binary_response_version: Self::BINARY_RESPONSE_VERSION,
            error: error as u16,
            returned_data_type_tag: None,
        }
    }

    /// Returns the type of the returned data.
    pub fn returned_data_type_tag(&self) -> Option<u8> {
        self.returned_data_type_tag
    }

    /// Returns the error code.
    pub fn error_code(&self) -> u16 {
        self.error
    }

    /// Returns true if the response represents success.
    pub fn is_success(&self) -> bool {
        self.error == ErrorCode::NoError as u16
    }

    /// Returns true if the response indicates the data was not found.
    pub fn is_not_found(&self) -> bool {
        self.error == ErrorCode::NotFound as u16
    }

    #[cfg(test)]
    pub(crate) fn random(rng: &mut TestRng) -> Self {
        let error = rng.gen();
        let returned_data_type_tag = if rng.gen() { None } else { Some(rng.gen()) };

        BinaryResponseHeader {
            binary_response_version: Self::BINARY_RESPONSE_VERSION,
            error,
            returned_data_type_tag,
        }
    }
}

impl ToBytes for BinaryResponseHeader {
    fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
        let mut buffer = bytesrepr::allocate_buffer(self)?;
        self.write_bytes(&mut buffer)?;
        Ok(buffer)
    }

    fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Error> {
        let Self {
            binary_response_version,
            error,
            returned_data_type_tag,
        } = self;

        binary_response_version.write_bytes(writer)?;
        error.write_bytes(writer)?;
        returned_data_type_tag.write_bytes(writer)
    }

    fn serialized_length(&self) -> usize {
        self.binary_response_version.serialized_length()
            + self.error.serialized_length()
            + self.returned_data_type_tag.serialized_length()
    }
}

impl FromBytes for BinaryResponseHeader {
    fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
        let (binary_response_version, remainder) = FromBytes::from_bytes(bytes)?;
        let (error, remainder) = FromBytes::from_bytes(remainder)?;
        let (returned_data_type_tag, remainder) = FromBytes::from_bytes(remainder)?;

        Ok((
            BinaryResponseHeader {
                binary_response_version,
                error,
                returned_data_type_tag,
            },
            remainder,
        ))
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    use casper_types::testing::TestRng;

    #[test]
    fn bytesrepr_roundtrip() {
        let rng = &mut TestRng::new();

        let val = BinaryResponseHeader::random(rng);
        bytesrepr::test_serialization_roundtrip(&val);
    }
}


================================================
FILE: binary_port/src/command.rs
================================================
use core::convert::TryFrom;

use casper_types::{
    bytesrepr::{self, FromBytes, ToBytes},
    Transaction,
};

use crate::get_request::GetRequest;

#[cfg(test)]
use casper_types::testing::TestRng;
#[cfg(test)]
use rand::Rng;

/// The header of a binary request.
#[derive(Debug, PartialEq)]
pub struct CommandHeader {
    header_version: u16,
    type_tag: u8,
    id: u16,
}

impl CommandHeader {
    // Defines the current version of the header, in practice defining the current version of the
    // binary port protocol. Requests with mismatched header version will be dropped.
    pub const HEADER_VERSION: u16 = 1;

    /// Creates new binary request header.
    pub fn new(type_tag: CommandTag, id: u16) -> Self {
        Self {
            header_version: Self::HEADER_VERSION,
            type_tag: type_tag.into(),
            id,
        }
    }

    /// Returns the type tag of the request.
    pub fn type_tag(&self) -> u8 {
        self.type_tag
    }

    /// Returns the request id.
    pub fn id(&self) -> u16 {
        self.id
    }

    /// Returns the header version.
    pub fn version(&self) -> u16 {
        self.header_version
    }

    #[cfg(any(feature = "testing", test))]
    pub fn set_binary_request_version(&mut self, version: u16) {
        self.header_version = version;
    }

    #[cfg(test)]
    pub(crate) fn random(rng: &mut TestRng) -> Self {
        Self {
            header_version: rng.gen(),
            type_tag: CommandTag::random(rng).into(),
            id: rng.gen(),
        }
    }
}

impl ToBytes for CommandHeader {
    fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
        let mut buffer = bytesrepr::allocate_buffer(self)?;
        self.write_bytes(&mut buffer)?;
        Ok(buffer)
    }

    fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Error> {
        self.header_version.write_bytes(writer)?;
        self.type_tag.write_bytes(writer)?;
        self.id.write_bytes(writer)
    }

    fn serialized_length(&self) -> usize {
        self.header_version.serialized_length()
            + self.type_tag.serialized_length()
            + self.id.serialized_length()
    }
}

impl FromBytes for CommandHeader {
    fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
        let (binary_request_version, remainder) = FromBytes::from_bytes(bytes)?;
        let (type_tag, remainder) = FromBytes::from_bytes(remainder)?;
        let (id, remainder) = FromBytes::from_bytes(remainder)?;
        Ok((
            CommandHeader {
                header_version: binary_request_version,
                type_tag,
                id,
            },
            remainder,
        ))
    }
}

/// A request to the binary access interface.
#[derive(Debug, PartialEq)]

pub enum Command {
    /// Request to get data from the node
    Get(GetRequest),
    /// Request to add a transaction into a blockchain.
    TryAcceptTransaction {
        /// Transaction to be handled.
        transaction: Transaction,
    },
    /// Request to execute a transaction speculatively.
    TrySpeculativeExec {
        /// Transaction to execute.
        transaction: Transaction,
    },
}

impl Command {
    /// Returns the type tag of the request.
    pub fn tag(&self) -> CommandTag {
        match self {
            Command::Get(_) => CommandTag::Get,
            Command::TryAcceptTransaction { .. } => CommandTag::TryAcceptTransaction,
            Command::TrySpeculativeExec { .. } => CommandTag::TrySpeculativeExec,
        }
    }

    #[cfg(test)]
    pub(crate) fn random(rng: &mut TestRng) -> Self {
        match CommandTag::random(rng) {
            CommandTag::Get => Self::Get(GetRequest::random(rng)),
            CommandTag::TryAcceptTransaction => Self::TryAcceptTransaction {
                transaction: Transaction::random(rng),
            },
            CommandTag::TrySpeculativeExec => Self::TrySpeculativeExec {
                transaction: Transaction::random(rng),
            },
        }
    }
}

impl ToBytes for Command {
    fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
        let mut buffer = bytesrepr::allocate_buffer(self)?;
        self.write_bytes(&mut buffer)?;
        Ok(buffer)
    }

    fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Error> {
        match self {
            Command::Get(inner) => inner.write_bytes(writer),
            Command::TryAcceptTransaction { transaction } => transaction.write_bytes(writer),
            Command::TrySpeculativeExec { transaction } => transaction.write_bytes(writer),
        }
    }

    fn serialized_length(&self) -> usize {
        match self {
            Command::Get(inner) => inner.serialized_length(),
            Command::TryAcceptTransaction { transaction } => transaction.serialized_length(),
            Command::TrySpeculativeExec { transaction } => transaction.serialized_length(),
        }
    }
}

impl TryFrom<(CommandTag, &[u8])> for Command {
    type Error = bytesrepr::Error;

    fn try_from((tag, bytes): (CommandTag, &[u8])) -> Result<Self, Self::Error> {
        let (req, remainder) = match tag {
            CommandTag::Get => {
                let (get_request, remainder) = FromBytes::from_bytes(bytes)?;
                (Command::Get(get_request), remainder)
            }
            CommandTag::TryAcceptTransaction => {
                let (transaction, remainder) = FromBytes::from_bytes(bytes)?;
                (Command::TryAcceptTransaction { transaction }, remainder)
            }
            CommandTag::TrySpeculativeExec => {
                let (transaction, remainder) = FromBytes::from_bytes(bytes)?;
                (Command::TrySpeculativeExec { transaction }, remainder)
            }
        };
        if !remainder.is_empty() {
            return Err(bytesrepr::Error::LeftOverBytes);
        }
        Ok(req)
    }
}

/// The type tag of a binary request.
#[derive(Debug, PartialEq)]
#[repr(u8)]
pub enum CommandTag {
    /// Request to get data from the node
    Get = 0,
    /// Request to add a transaction into a blockchain.
    TryAcceptTransaction = 1,
    /// Request to execute a transaction speculatively.
    TrySpeculativeExec = 2,
}

impl CommandTag {
    /// Creates a random `CommandTag`.
    #[cfg(test)]
    pub fn random(rng: &mut TestRng) -> Self {
        match rng.gen_range(0..3) {
            0 => CommandTag::Get,
            1 => CommandTag::TryAcceptTransaction,
            2 => CommandTag::TrySpeculativeExec,
            _ => unreachable!(),
        }
    }
}

impl TryFrom<u8> for CommandTag {
    type Error = InvalidCommandTag;

    fn try_from(value: u8) -> Result<Self, Self::Error> {
        match value {
            0 => Ok(CommandTag::Get),
            1 => Ok(CommandTag::TryAcceptTransaction),
            2 => Ok(CommandTag::TrySpeculativeExec),
            _ => Err(InvalidCommandTag),
        }
    }
}

impl From<CommandTag> for u8 {
    fn from(value: CommandTag) -> Self {
        value as u8
    }
}

/// Error raised when trying to convert an invalid u8 into a `CommandTag`.
pub struct InvalidCommandTag;

#[cfg(test)]
mod tests {
    use super::*;
    use casper_types::testing::TestRng;

    #[test]
    fn header_bytesrepr_roundtrip() {
        let rng = &mut TestRng::new();

        let val = CommandHeader::random(rng);
        bytesrepr::test_serialization_roundtrip(&val);
    }

    #[test]
    fn request_bytesrepr_roundtrip() {
        let rng = &mut TestRng::new();

        let val = Command::random(rng);
        let bytes = val.to_bytes().expect("should serialize");
        assert_eq!(Command::try_from((val.tag(), &bytes[..])), Ok(val));
    }
}


================================================
FILE: binary_port/src/dictionary_item_identifier.rs
================================================
#[cfg(test)]
use casper_types::testing::TestRng;
#[cfg(test)]
use rand::Rng;

use casper_types::{
    account::AccountHash,
    bytesrepr::{self, FromBytes, ToBytes, U8_SERIALIZED_LENGTH},
    DictionaryAddr, EntityAddr, HashAddr, URef,
};

const ACCOUNT_NAMED_KEY_TAG: u8 = 0;
const CONTRACT_NAMED_KEY_TAG: u8 = 1;
const ENTITY_NAMED_KEY_TAG: u8 = 2;
const UREF_TAG: u8 = 3;
const DICTIONARY_ITEM_TAG: u8 = 4;

/// Options for dictionary item lookups.
#[derive(Clone, Debug, PartialEq)]
pub enum DictionaryItemIdentifier {
    /// Lookup a dictionary item via an accounts named keys.
    AccountNamedKey {
        /// The account hash.
        hash: AccountHash,
        /// The named key under which the dictionary seed URef is stored.
        dictionary_name: String,
        /// The dictionary item key formatted as a string.
        dictionary_item_key: String,
    },
    /// Lookup a dictionary item via a contracts named keys.
    ContractNamedKey {
        /// The contract hash.
        hash: HashAddr,
        /// The named key under which the dictionary seed URef is stored.
        dictionary_name: String,
        /// The dictionary item key formatted as a string.
        dictionary_item_key: String,
    },
    /// Lookup a dictionary item via an entities named keys.
    EntityNamedKey {
        /// The entity address.
        addr: EntityAddr,
        /// The named key under which the dictionary seed URef is stored.
        dictionary_name: String,
        /// The dictionary item key formatted as a string.
        dictionary_item_key: String,
    },
    /// Lookup a dictionary item via its seed URef.
    URef {
        /// The dictionary's seed URef.
        seed_uref: URef,
        /// The dictionary item key formatted as a string.
        dictionary_item_key: String,
    },
    /// Lookup a dictionary item via its unique key.
    DictionaryItem(DictionaryAddr),
}

impl DictionaryItemIdentifier {
    #[cfg(test)]
    pub(crate) fn random(rng: &mut TestRng) -> Self {
        match rng.gen_range(0..5) {
            0 => DictionaryItemIdentifier::AccountNamedKey {
                hash: rng.gen(),
                dictionary_name: rng.random_string(32..64),
                dictionary_item_key: rng.random_string(32..64),
            },
            1 => DictionaryItemIdentifier::ContractNamedKey {
                hash: rng.gen(),
                dictionary_name: rng.random_string(32..64),
                dictionary_item_key: rng.random_string(32..64),
            },
            2 => DictionaryItemIdentifier::EntityNamedKey {
                addr: rng.gen(),
                dictionary_name: rng.random_string(32..64),
                dictionary_item_key: rng.random_string(32..64),
            },
            3 => DictionaryItemIdentifier::URef {
                seed_uref: rng.gen(),
                dictionary_item_key: rng.random_string(32..64),
            },
            4 => DictionaryItemIdentifier::DictionaryItem(rng.gen()),
            _ => unreachable!(),
        }
    }
}

impl ToBytes for DictionaryItemIdentifier {
    fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
        let mut buffer = bytesrepr::allocate_buffer(self)?;
        self.write_bytes(&mut buffer)?;
        Ok(buffer)
    }

    fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Error> {
        match self {
            DictionaryItemIdentifier::AccountNamedKey {
                hash: key,
                dictionary_name,
                dictionary_item_key,
            } => {
                ACCOUNT_NAMED_KEY_TAG.write_bytes(writer)?;
                key.write_bytes(writer)?;
                dictionary_name.write_bytes(writer)?;
                dictionary_item_key.write_bytes(writer)
            }
            DictionaryItemIdentifier::ContractNamedKey {
                hash: key,
                dictionary_name,
                dictionary_item_key,
            } => {
                CONTRACT_NAMED_KEY_TAG.write_bytes(writer)?;
                key.write_bytes(writer)?;
                dictionary_name.write_bytes(writer)?;
                dictionary_item_key.write_bytes(writer)
            }
            DictionaryItemIdentifier::EntityNamedKey {
                addr,
                dictionary_name,
                dictionary_item_key,
            } => {
                ENTITY_NAMED_KEY_TAG.write_bytes(writer)?;
                addr.write_bytes(writer)?;
                dictionary_name.write_bytes(writer)?;
                dictionary_item_key.write_bytes(writer)
            }
            DictionaryItemIdentifier::URef {
                seed_uref,
                dictionary_item_key,
            } => {
                UREF_TAG.write_bytes(writer)?;
                seed_uref.write_bytes(writer)?;
                dictionary_item_key.write_bytes(writer)
            }
            DictionaryItemIdentifier::DictionaryItem(addr) => {
                DICTIONARY_ITEM_TAG.write_bytes(writer)?;
                addr.write_bytes(writer)
            }
        }
    }

    fn serialized_length(&self) -> usize {
        U8_SERIALIZED_LENGTH
            + match self {
                DictionaryItemIdentifier::AccountNamedKey {
                    hash,
                    dictionary_name,
                    dictionary_item_key,
                } => {
                    hash.serialized_length()
                        + dictionary_name.serialized_length()
                        + dictionary_item_key.serialized_length()
                }
                DictionaryItemIdentifier::ContractNamedKey {
                    hash,
                    dictionary_name,
                    dictionary_item_key,
                } => {
                    hash.serialized_length()
                        + dictionary_name.serialized_length()
                        + dictionary_item_key.serialized_length()
                }
                DictionaryItemIdentifier::EntityNamedKey {
                    addr,
                    dictionary_name,
                    dictionary_item_key,
                } => {
                    addr.serialized_length()
                        + dictionary_name.serialized_length()
                        + dictionary_item_key.serialized_length()
                }
                DictionaryItemIdentifier::URef {
                    seed_uref,
                    dictionary_item_key,
                } => seed_uref.serialized_length() + dictionary_item_key.serialized_length(),
                DictionaryItemIdentifier::DictionaryItem(addr) => addr.serialized_length(),
            }
    }
}

impl FromBytes for DictionaryItemIdentifier {
    fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
        let (tag, remainder) = u8::from_bytes(bytes)?;
        match tag {
            ACCOUNT_NAMED_KEY_TAG => {
                let (key, remainder) = FromBytes::from_bytes(remainder)?;
                let (dictionary_name, remainder) = String::from_bytes(remainder)?;
                let (dictionary_item_key, remainder) = String::from_bytes(remainder)?;
                Ok((
                    DictionaryItemIdentifier::AccountNamedKey {
                        hash: key,
                        dictionary_name,
                        dictionary_item_key,
                    },
                    remainder,
                ))
            }
            CONTRACT_NAMED_KEY_TAG => {
                let (key, remainder) = FromBytes::from_bytes(remainder)?;
                let (dictionary_name, remainder) = String::from_bytes(remainder)?;
                let (dictionary_item_key, remainder) = String::from_bytes(remainder)?;
                Ok((
                    DictionaryItemIdentifier::ContractNamedKey {
                        hash: key,
                        dictionary_name,
                        dictionary_item_key,
                    },
                    remainder,
                ))
            }
            ENTITY_NAMED_KEY_TAG => {
                let (addr, remainder) = FromBytes::from_bytes(remainder)?;
                let (dictionary_name, remainder) = String::from_bytes(remainder)?;
                let (dictionary_item_key, remainder) = String::from_bytes(remainder)?;
                Ok((
                    DictionaryItemIdentifier::EntityNamedKey {
                        addr,
                        dictionary_name,
                        dictionary_item_key,
                    },
                    remainder,
                ))
            }
            UREF_TAG => {
                let (seed_uref, remainder) = FromBytes::from_bytes(remainder)?;
                let (dictionary_item_key, remainder) = String::from_bytes(remainder)?;
                Ok((
                    DictionaryItemIdentifier::URef {
                        seed_uref,
                        dictionary_item_key,
                    },
                    remainder,
                ))
            }
            DICTIONARY_ITEM_TAG => {
                let (addr, remainder) = FromBytes::from_bytes(remainder)?;
                Ok((DictionaryItemIdentifier::DictionaryItem(addr), remainder))
            }
            _ => Err(bytesrepr::Error::Formatting),
        }
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    use casper_types::testing::TestRng;

    #[test]
    fn bytesrepr_roundtrip() {
        let rng = &mut TestRng::new();

        let val = DictionaryItemIdentifier::random(rng);
        bytesrepr::test_serialization_roundtrip(&val);
    }
}


================================================
FILE: binary_port/src/entity_qualifier.rs
================================================
use super::dictionary_item_identifier::DictionaryItemIdentifier;
use crate::{KeyPrefix, PurseIdentifier};
#[cfg(test)]
use casper_types::testing::TestRng;
use casper_types::{
    bytesrepr::{self, FromBytes, ToBytes, U8_SERIALIZED_LENGTH},
    Key, KeyTag,
};
#[cfg(test)]
use rand::Rng;

const ITEM_TAG: u8 = 0;
const ALL_ITEMS_TAG: u8 = 1;
const DICTIONARY_ITEM_TAG: u8 = 2;
const BALANCE_TAG: u8 = 3;
const ITEMS_BY_PREFIX_TAG: u8 = 4;

/// A request to get data from the global state.
#[derive(Clone, Debug, PartialEq)]
pub enum GlobalStateEntityQualifier {
    /// Gets an item from the global state.
    Item {
        /// Key under which data is stored.
        base_key: Key,
        /// Path under which the value is stored.
        path: Vec<String>,
    },
    /// Get all items under the given key tag.
    AllItems {
        /// Key tag
        key_tag: KeyTag,
    },
    /// Get a dictionary item by its identifier.
    DictionaryItem {
        /// Dictionary item identifier.
        identifier: DictionaryItemIdentifier,
    },
    /// Get balance by state root and purse.
    Balance {
        /// Purse identifier.
        purse_identifier: PurseIdentifier,
    },
    ItemsByPrefix {
        /// Key prefix to search for.
        key_prefix: KeyPrefix,
    },
}

impl GlobalStateEntityQualifier {
    #[cfg(test)]
    pub(crate) fn random(rng: &mut TestRng) -> Self {
        let gen_range = TestRng::gen_range(rng, 0..5);
        random_for_variant(gen_range, rng)
    }
}

#[cfg(test)]
fn random_for_variant(gen_range: u8, rng: &mut TestRng) -> GlobalStateEntityQualifier {
    match gen_range {
        ITEM_TAG => {
            let path_count = rng.gen_range(10..20);
            GlobalStateEntityQualifier::Item {
                base_key: rng.gen(),
                path: std::iter::repeat_with(|| rng.random_string(32..64))
                    .take(path_count)
                    .collect(),
            }
        }
        ALL_ITEMS_TAG => GlobalStateEntityQualifier::AllItems {
            key_tag: KeyTag::random(rng),
        },
        DICTIONARY_ITEM_TAG => GlobalStateEntityQualifier::DictionaryItem {
            identifier: DictionaryItemIdentifier::random(rng),
        },
        BALANCE_TAG => GlobalStateEntityQualifier::Balance {
            purse_identifier: PurseIdentifier::random(rng),
        },
        ITEMS_BY_PREFIX_TAG => GlobalStateEntityQualifier::ItemsByPrefix {
            key_prefix: KeyPrefix::random(rng),
        },
        _ => unreachable!(),
    }
}

impl ToBytes for GlobalStateEntityQualifier {
    fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
        let mut buffer = bytesrepr::allocate_buffer(self)?;
        self.write_bytes(&mut buffer)?;
        Ok(buffer)
    }

    fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Error> {
        match self {
            GlobalStateEntityQualifier::Item { base_key, path } => {
                ITEM_TAG.write_bytes(writer)?;
                base_key.write_bytes(writer)?;
                path.write_bytes(writer)
            }
            GlobalStateEntityQualifier::AllItems { key_tag } => {
                ALL_ITEMS_TAG.write_bytes(writer)?;
                key_tag.write_bytes(writer)
            }
            GlobalStateEntityQualifier::DictionaryItem { identifier } => {
                DICTIONARY_ITEM_TAG.write_bytes(writer)?;
                identifier.write_bytes(writer)
            }
            GlobalStateEntityQualifier::Balance { purse_identifier } => {
                BALANCE_TAG.write_bytes(writer)?;
                purse_identifier.write_bytes(writer)
            }
            GlobalStateEntityQualifier::ItemsByPrefix { key_prefix } => {
                ITEMS_BY_PREFIX_TAG.write_bytes(writer)?;
                key_prefix.write_bytes(writer)
            }
        }
    }

    fn serialized_length(&self) -> usize {
        U8_SERIALIZED_LENGTH
            + match self {
                GlobalStateEntityQualifier::Item { base_key, path } => {
                    base_key.serialized_length() + path.serialized_length()
                }
                GlobalStateEntityQualifier::AllItems { key_tag } => key_tag.serialized_length(),
                GlobalStateEntityQualifier::DictionaryItem { identifier } => {
                    identifier.serialized_length()
                }
                GlobalStateEntityQualifier::Balance { purse_identifier } => {
                    purse_identifier.serialized_length()
                }
                GlobalStateEntityQualifier::ItemsByPrefix { key_prefix } => {
                    key_prefix.serialized_length()
                }
            }
    }
}

impl FromBytes for GlobalStateEntityQualifier {
    fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
        let (tag, remainder) = u8::from_bytes(bytes)?;
        match tag {
            ITEM_TAG => {
                let (base_key, remainder) = FromBytes::from_bytes(remainder)?;
                let (path, remainder) = FromBytes::from_bytes(remainder)?;
                Ok((
                    GlobalStateEntityQualifier::Item { base_key, path },
                    remainder,
                ))
            }
            ALL_ITEMS_TAG => {
                let (key_tag, remainder) = FromBytes::from_bytes(remainder)?;
                Ok((GlobalStateEntityQualifier::AllItems { key_tag }, remainder))
            }
            DICTIONARY_ITEM_TAG => {
                let (identifier, remainder) = FromBytes::from_bytes(remainder)?;
                Ok((
                    GlobalStateEntityQualifier::DictionaryItem { identifier },
                    remainder,
                ))
            }
            BALANCE_TAG => {
                let (purse_identifier, remainder) = FromBytes::from_bytes(remainder)?;
                Ok((
                    GlobalStateEntityQualifier::Balance { purse_identifier },
                    remainder,
                ))
            }
            ITEMS_BY_PREFIX_TAG => {
                let (key_prefix, remainder) = FromBytes::from_bytes(remainder)?;
                Ok((
                    GlobalStateEntityQualifier::ItemsByPrefix { key_prefix },
                    remainder,
                ))
            }
            _ => Err(bytesrepr::Error::Formatting),
        }
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    use casper_types::testing::TestRng;

    #[test]
    fn bytesrepr_roundtrip() {
        let rng = &mut TestRng::new();
        for i in 0..5 {
            let qualifier = random_for_variant(i, rng);
            bytesrepr::test_serialization_roundtrip(&qualifier);
        }
    }
}


================================================
FILE: binary_port/src/era_identifier.rs
================================================
#[cfg(test)]
use casper_types::testing::TestRng;
#[cfg(test)]
use rand::Rng;

use casper_types::{
    bytesrepr::{self, FromBytes, ToBytes, U8_SERIALIZED_LENGTH},
    BlockIdentifier, EraId,
};

const ERA_TAG: u8 = 0;
const BLOCK_TAG: u8 = 1;

/// Identifier for an era.
#[derive(Clone, Debug, PartialEq)]
pub enum EraIdentifier {
    Era(EraId),
    Block(BlockIdentifier),
}

impl EraIdentifier {
    #[cfg(test)]
    pub(crate) fn random(rng: &mut TestRng) -> Self {
        match rng.gen_range(0..2) {
            ERA_TAG => EraIdentifier::Era(EraId::random(rng)),
            BLOCK_TAG => EraIdentifier::Block(BlockIdentifier::random(rng)),
            _ => unreachable!(),
        }
    }
}

impl ToBytes for EraIdentifier {
    fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
        let mut buffer = bytesrepr::allocate_buffer(self)?;
        self.write_bytes(&mut buffer)?;
        Ok(buffer)
    }

    fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Error> {
        match self {
            EraIdentifier::Era(era_id) => {
                ERA_TAG.write_bytes(writer)?;
                era_id.write_bytes(writer)
            }
            EraIdentifier::Block(block_id) => {
                BLOCK_TAG.write_bytes(writer)?;
                block_id.write_bytes(writer)
            }
        }
    }

    fn serialized_length(&self) -> usize {
        U8_SERIALIZED_LENGTH
            + match self {
                EraIdentifier::Era(era_id) => era_id.serialized_length(),
                EraIdentifier::Block(block_id) => block_id.serialized_length(),
            }
    }
}

impl FromBytes for EraIdentifier {
    fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
        let (tag, remainder) = u8::from_bytes(bytes)?;
        match tag {
            ERA_TAG => {
                let (era_id, remainder) = EraId::from_bytes(remainder)?;
                Ok((EraIdentifier::Era(era_id), remainder))
            }
            BLOCK_TAG => {
                let (block_id, remainder) = BlockIdentifier::from_bytes(remainder)?;
                Ok((EraIdentifier::Block(block_id), remainder))
            }
            _ => Err(bytesrepr::Error::Formatting),
        }
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    use casper_types::testing::TestRng;

    #[test]
    fn bytesrepr_roundtrip() {
        let rng = &mut TestRng::new();

        let val = EraIdentifier::random(rng);
        bytesrepr::test_serialization_roundtrip(&val);
    }
}


================================================
FILE: binary_port/src/error.rs
================================================
use thiserror::Error;

#[derive(Error, Debug)]
pub enum Error {
    #[error("Invalid command tag ({0})")]
    InvalidCommandTag(u8),
    #[error("Request too large: allowed {allowed} bytes, got {got} bytes")]
    RequestTooLarge { allowed: u32, got: u32 },
    #[error("Empty request")]
    EmptyRequest,
    #[error(transparent)]
    Io(#[from] std::io::Error),
    #[error(transparent)]
    BytesRepr(#[from] casper_types::bytesrepr::Error),
}


================================================
FILE: binary_port/src/error_code.rs
================================================
use core::{convert::TryFrom, fmt};

use casper_types::{InvalidDeploy, InvalidTransaction, InvalidTransactionV1};

use num_derive::FromPrimitive;
use num_traits::FromPrimitive;
#[cfg(test)]
use strum_macros::EnumIter;

/// The error code indicating the result of handling the binary request.
#[derive(Debug, Copy, Clone, thiserror::Error, Eq, PartialEq, FromPrimitive)]
#[repr(u16)]
#[cfg_attr(test, derive(EnumIter))]
pub enum ErrorCode {
    /// Request executed correctly.
    #[error("request executed correctly")]
    NoError = 0,
    /// This function is disabled.
    #[error("this function is disabled")]
    FunctionDisabled = 1,
    /// Data not found.
    #[error("data not found")]
    NotFound = 2,
    /// Root not found.
    #[error("root not found")]
    RootNotFound = 3,
    /// Invalid item variant.
    #[error("invalid item variant")]
    InvalidItemVariant = 4,
    /// Wasm preprocessing.
    #[error("wasm preprocessing")]
    WasmPreprocessing = 5,
    /// Internal error.
    #[error("internal error")]
    InternalError = 6,
    /// The query failed.
    #[error("the query failed")]
    FailedQuery = 7,
    /// Bad request.
    #[error("bad request")]
    BadRequest = 8,
    /// Received an unsupported type of request.
    #[error("unsupported request")]
    UnsupportedRequest = 9,
    /// Dictionary URef not found.
    #[error("dictionary URef not found")]
    DictionaryURefNotFound = 10,
    /// This node has no complete blocks.
    #[error("no complete blocks")]
    NoCompleteBlocks = 11,
    /// The deploy had an invalid chain name
    #[error("the deploy had an invalid chain name")]
    InvalidDeployChainName = 12,
    /// Deploy dependencies are no longer supported
    #[error("the dependencies for this transaction are no longer supported")]
    InvalidDeployDependenciesNoLongerSupported = 13,
    /// The deploy sent to the network had an excessive size
    #[error("the deploy had an excessive size")]
    InvalidDeployExcessiveSize = 14,
    /// The deploy sent to the network had an excessive time to live
    #[error("the deploy had an excessive time to live")]
    InvalidDeployExcessiveTimeToLive = 15,
    /// The deploy sent to the network had a timestamp referencing a time that has yet to occur.
    #[error("the deploys timestamp is in the future")]
    InvalidDeployTimestampInFuture = 16,
    /// The deploy sent to the network had an invalid body hash
    #[error("the deploy had an invalid body hash")]
    InvalidDeployBodyHash = 17,
    /// The deploy sent to the network had an invalid deploy hash i.e. the provided deploy hash
    /// didn't match the derived deploy hash
    #[error("the deploy had an invalid deploy hash")]
    InvalidDeployHash = 18,
    /// The deploy sent to the network had an empty approval set
    #[error("the deploy had no approvals")]
    InvalidDeployEmptyApprovals = 19,
    /// The deploy sent to the network had an invalid approval
    #[error("the deploy had an invalid approval")]
    InvalidDeployApproval = 20,
    /// The deploy sent to the network had an excessive session args length
    #[error("the deploy had an excessive session args length")]
    InvalidDeployExcessiveSessionArgsLength = 21,
    /// The deploy sent to the network had an excessive payment args length
    #[error("the deploy had an excessive payment args length")]
    InvalidDeployExcessivePaymentArgsLength = 22,
    /// The deploy sent to the network had a missing payment amount
    #[error("the deploy had a missing payment amount")]
    InvalidDeployMissingPaymentAmount = 23,
    /// The deploy sent to the network had a payment amount that was not parseable
    #[error("the deploy sent to the network had a payment amount that was unable to be parsed")]
    InvalidDeployFailedToParsePaymentAmount = 24,
    /// The deploy sent to the network exceeded the block gas limit
    #[error("the deploy sent to the network exceeded the block gas limit")]
    InvalidDeployExceededBlockGasLimit = 25,
    /// The deploy sent to the network was missing a transfer amount
    #[error("the deploy sent to the network was missing a transfer amount")]
    InvalidDeployMissingTransferAmount = 26,
    /// The deploy sent to the network had a transfer amount that was unable to be parseable
    #[error("the deploy sent to the network had a transfer amount that was unable to be parsed")]
    InvalidDeployFailedToParseTransferAmount = 27,
    /// The deploy sent to the network had a transfer amount that was insufficient
    #[error("the deploy sent to the network had an insufficient transfer amount")]
    InvalidDeployInsufficientTransferAmount = 28,
    /// The deploy sent to the network had excessive approvals
    #[error("the deploy sent to the network had excessive approvals")]
    InvalidDeployExcessiveApprovals = 29,
    /// The network was unable to calculate the gas limit for the deploy
    #[error("the network was unable to calculate the gas limit associated with the deploy")]
    InvalidDeployUnableToCalculateGasLimit = 30,
    /// The network was unable to calculate the gas cost for the deploy
    #[error("the network was unable to calculate the gas cost for the deploy")]
    InvalidDeployUnableToCalculateGasCost = 31,
    /// The deploy sent to the network was invalid for an unspecified reason
    #[error("the deploy sent to the network was invalid for an unspecified reason")]
    InvalidDeployUnspecified = 32,
    /// The transaction sent to the network had an invalid chain name
    #[error("the transaction sent to the network had an invalid chain name")]
    InvalidTransactionChainName = 33,
    /// The transaction sent to the network had an excessive size
    #[error("the transaction sent to the network had an excessive size")]
    InvalidTransactionExcessiveSize = 34,
    /// The transaction sent to the network had an excessive time to live
    #[error("the transaction sent to the network had an excessive time to live")]
    InvalidTransactionExcessiveTimeToLive = 35,
    /// The transaction sent to the network had a timestamp located in the future.
    #[error("the transaction sent to the network had a timestamp that has not yet occurred")]
    InvalidTransactionTimestampInFuture = 36,
    /// The transaction sent to the network had a provided body hash that conflicted with hash
    /// derived by the network
    #[error("the transaction sent to the network had an invalid body hash")]
    InvalidTransactionBodyHash = 37,
    /// The transaction sent to the network had a provided hash that conflicted with the hash
    /// derived by the network
    #[error("the transaction sent to the network had an invalid hash")]
    InvalidTransactionHash = 38,
    /// The transaction sent to the network had an empty approvals set
    #[error("the transaction sent to the network had no approvals")]
    InvalidTransactionEmptyApprovals = 39,
    /// The transaction sent to the network had an invalid approval
    #[error("the transaction sent to the network had an invalid approval")]
    InvalidTransactionInvalidApproval = 40,
    /// The transaction sent to the network had excessive args length
    #[error("the transaction sent to the network had excessive args length")]
    InvalidTransactionExcessiveArgsLength = 41,
    /// The transaction sent to the network had excessive approvals
    #[error("the transaction sent to the network had excessive approvals")]
    InvalidTransactionExcessiveApprovals = 42,
    /// The transaction sent to the network exceeds the block gas limit
    #[error("the transaction sent to the network exceeds the networks block gas limit")]
    InvalidTransactionExceedsBlockGasLimit = 43,
    /// The transaction sent to the network had a missing arg
    #[error("the transaction sent to the network was missing an argument")]
    InvalidTransactionMissingArg = 44,
    /// The transaction sent to the network had an argument with an unexpected type
    #[error("the transaction sent to the network had an unexpected argument type")]
    InvalidTransactionUnexpectedArgType = 45,
    /// The transaction sent to the network had an invalid argument
    #[error("the transaction sent to the network had an invalid argument")]
    InvalidTransactionInvalidArg = 46,
    /// The transaction sent to the network had an insufficient transfer amount
    #[error("the transaction sent to the network had an insufficient transfer amount")]
    InvalidTransactionInsufficientTransferAmount = 47,
    /// The transaction sent to the network had a custom entry point when it should have a non
    /// custom entry point.
    #[error("the native transaction sent to the network should not have a custom entry point")]
    InvalidTransactionEntryPointCannotBeCustom = 48,
    /// The transaction sent to the network had a standard entry point when it must be custom.
    #[error("the non-native transaction sent to the network must have a custom entry point")]
    InvalidTransactionEntryPointMustBeCustom = 49,
    /// The transaction sent to the network had empty module bytes
    #[error("the transaction sent to the network had empty module bytes")]
    InvalidTransactionEmptyModuleBytes = 50,
    /// The transaction sent to the network had an invalid gas price conversion
    #[error("the transaction sent to the network had an invalid gas price conversion")]
    InvalidTransactionGasPriceConversion = 51,
    /// The network was unable to calculate the gas limit for the transaction sent.
    #[error("the network was unable to calculate the gas limit for the transaction sent")]
    InvalidTransactionUnableToCalculateGasLimit = 52,
    /// The network was unable to calculate the gas cost for the transaction sent.
    #[error("the network was unable to calculate the gas cost for the transaction sent.")]
    InvalidTransactionUnableToCalculateGasCost = 53,
    /// The transaction sent to the network had an invalid pricing mode
    #[error("the transaction sent to the network had an invalid pricing mode")]
    InvalidTransactionPricingMode = 54,
    /// The transaction sent to the network was invalid for an unspecified reason
    #[error("the transaction sent to the network was invalid for an unspecified reason")]
    InvalidTransactionUnspecified = 55,
    /// As the various enums are tagged non_exhaustive, it is possible that in the future none of
    /// these previous errors cover the error that occurred, therefore we need some catchall in
    /// the case that nothing else works.
    #[error("the transaction or deploy sent to the network was invalid for an unspecified reason")]
    InvalidTransactionOrDeployUnspecified = 56,
    /// The switch block for the requested era was not found
    #[error("the switch block for the requested era was not found")]
    SwitchBlockNotFound = 57,
    #[error("the parent of the switch block for the requested era was not found")]
    /// The parent of the switch block for the requested era was not found
    SwitchBlockParentNotFound = 58,
    #[error("cannot serve rewards stored in V1 format")]
    /// Cannot serve rewards stored in V1 format
    UnsupportedRewardsV1Request = 59,
    /// Invalid binary request header versions.
    #[error("binary request header versions mismatch")]
    CommandHeaderVersionMismatch = 60,
    /// Blockchain is empty
    #[error("blockchain is empty")]
    EmptyBlockchain = 61,
    /// Expected deploy, but got transaction
    #[error("expected deploy, got transaction")]
    ExpectedDeploy = 62,
    /// Expected transaction, but got deploy
    #[error("expected transaction V1, got deploy")]
    ExpectedTransaction = 63,
    /// Transaction has expired
    #[error("transaction has expired")]
    TransactionExpired = 64,
    /// Transactions parameters are missing or incorrect
    #[error("missing or incorrect transaction parameters")]
    MissingOrIncorrectParameters = 65,
    /// No such addressable entity
    #[error("no such addressable entity")]
    NoSuchAddressableEntity = 66,
    // No such contract at hash
    #[error("no such contract at hash")]
    NoSuchContractAtHash = 67,
    /// No such entry point
    #[error("no such entry point")]
    NoSuchEntryPoint = 68,
    /// No such package at hash
    #[error("no such package at hash")]
    NoSuchPackageAtHash = 69,
    /// Invalid entity at version
    #[error("invalid entity at version")]
    InvalidEntityAtVersion = 70,
    /// Disabled entity at version
    #[error("disabled entity at version")]
    DisabledEntityAtVersion = 71,
    /// Missing entity at version
    #[error("missing entity at version")]
    MissingEntityAtVersion = 72,
    /// Invalid associated keys
    #[error("invalid associated keys")]
    InvalidAssociatedKeys = 73,
    /// Insufficient signature weight
    #[error("insufficient signature weight")]
    InsufficientSignatureWeight = 74,
    /// Insufficient balance
    #[error("insufficient balance")]
    InsufficientBalance = 75,
    /// Unknown balance
    #[error("unknown balance")]
    UnknownBalance = 76,
    /// Invalid payment variant for deploy
    #[error("invalid payment variant for deploy")]
    DeployInvalidPaymentVariant = 77,
    /// Missing payment amount for deploy
    #[error("missing payment amount for deploy")]
    DeployMissingPaymentAmount = 78,
    /// Failed to parse payment amount for deploy
    #[error("failed to parse payment amount for deploy")]
    DeployFailedToParsePaymentAmount = 79,
    /// Missing transfer target for deploy
    #[error("missing transfer target for deploy")]
    DeployMissingTransferTarget = 80,
    /// Missing module bytes for deploy
    #[error("missing module bytes for deploy")]
    DeployMissingModuleBytes = 81,
    /// Entry point cannot be 'call'
    #[error("entry point cannot be 'call'")]
    InvalidTransactionEntryPointCannotBeCall = 82,
    /// Invalid transaction lane
    #[error("invalid transaction lane")]
    InvalidTransactionInvalidTransactionLane = 83,
    /// Gas price tolerance too low
    #[error("gas price tolerance too low")]
    GasPriceToleranceTooLow = 84,
    /// Received V1 Transaction for spec exec.
    #[error("received v1 transaction for speculative execution")]
    ReceivedV1Transaction = 85,
    /// Purse was not found for given identifier.
    #[error("purse was not found for given identifier")]
    PurseNotFound = 86,
    /// Too many requests per second.
    #[error("request was throttled")]
    RequestThrottled = 87,
    /// Expected named arguments.
    #[error("expected named arguments")]
    ExpectedNamedArguments = 88,
    /// Invalid transaction runtime.
    #[error("invalid transaction runtime")]
    InvalidTransactionRuntime = 89,
    /// Key in transfer request malformed
    #[error("malformed transfer record key")]
    TransferRecordMalformedKey = 90,
    /// Malformed information request
    #[error("malformed information request")]
    MalformedInformationRequest = 91,
    /// Malformed binary version
    #[error("not enough bytes to read version of the binary request header")]
    TooLittleBytesForRequestHeaderVersion = 92,
    /// Malformed command header version
    #[error("malformed commnd header version")]
    MalformedCommandHeaderVersion = 93,
    /// Malformed header
    #[error("malformed command header")]
    MalformedCommandHeader = 94,
    /// Malformed command
    #[error("malformed command")]
    MalformedCommand = 95,
    /// No matching lane for transaction
    #[error("couldn't associate a transaction lane with the transaction")]
    InvalidTransactionNoLaneMatches = 96,
    /// Entry point must be 'call'
    #[error("entry point must be 'call'")]
    InvalidTransactionEntryPointMustBeCall = 97,
    /// One of the payloads field cannot be deserialized
    #[error("One of the payloads field cannot be deserialized")]
    InvalidTransactionCannotDeserializeField = 98,
    /// Can't calculate hash of the payload fields
    #[error("Can't calculate hash of the payload fields")]
    InvalidTransactionCannotCalculateFieldsHash = 99,
    /// Unexpected fields in payload
    #[error("Unexpected fields in payload")]
    InvalidTransactionUnexpectedFields = 100,
    /// Expected bytes arguments
    #[error("expected bytes arguments")]
    InvalidTransactionExpectedBytesArguments = 101,
    /// Missing seed field in transaction
    #[error("Missing seed field in transaction")]
    InvalidTransactionMissingSeed = 102,
    /// Pricing mode not supported
    #[error("Pricing mode not supported")]
    PricingModeNotSupported = 103,
    /// Gas limit not supported
    #[error("Gas limit not supported")]
    InvalidDeployGasLimitNotSupported = 104,
    /// Invalid runtime for Transaction::Deploy
    #[error("Invalid runtime for Transaction::Deploy")]
    InvalidDeployInvalidRuntime = 105,
    /// Deploy exceeds wasm lane gas limit
    #[error("Transaction::Deploy exceeds lane gas limit")]
    InvalidDeployExceededWasmLaneGasLimit = 106,
    /// Invalid runtime for Transaction::Deploy
    #[error("Invalid payment amount for Transaction::Deploy")]
    InvalidDeployInvalidPaymentAmount = 107,
    /// Insufficient burn amount for Transaction::V1
    #[error("Insufficient burn amount for Transaction::V1")]
    InvalidTransactionInsufficientBurnAmount = 108,
    /// Invalid payment amount for Transaction::V1
    #[error("Invalid payment amount for Transaction::V1")]
    InvalidTransactionInvalidPaymentAmount = 109,
    /// Unexpected entry point for Transaction::V1
    #[error("Unexpected entry point for Transaction::V1")]
    InvalidTransactionUnexpectedEntryPoint = 110,
    /// Cannot serialize transaction
    #[error("Transaction has malformed binary representation")]
    TransactionHasMalformedBinaryRepresentation = 111,
    #[error("Transaction includes an argument named amount with a value below a relevant limit")]
    InsufficientAmountArgValue = 112,
    #[error(
        "Transaction attempts to set a minimum delegation amount below the lowest allowed value"
    )]
    InvalidMinimumDelegationAmount = 113,
    #[error(
        "Transaction attempts to set a maximum delegation amount above the highest allowed value"
    )]
    InvalidMaximumDelegationAmount = 114,
    #[error("Transaction attempts to set a reserved slots count above the highest allowed value")]
    InvalidReservedSlots = 115,
    #[error("Transaction attempts to set a delegation amount above the highest allowed value")]
    InvalidDelegationAmount = 116,
    #[error("the transaction invocation target is unsupported under V2 runtime")]
    UnsupportedInvocationTarget = 117,
}

impl TryFrom<u16> for ErrorCode {
    type Error = UnknownErrorCode;

    fn try_from(value: u16) -> Result<Self, Self::Error> {
        FromPrimitive::from_u16(value).ok_or(UnknownErrorCode)
    }
}

/// Error indicating that the error code is unknown.
#[derive(Debug, Clone, Copy)]
pub struct UnknownErrorCode;

impl fmt::Display for UnknownErrorCode {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        write!(f, "unknown node error code")
    }
}

impl std::error::Error for UnknownErrorCode {}

impl From<InvalidTransaction> for ErrorCode {
    fn from(value: InvalidTransaction) -> Self {
        match value {
            InvalidTransaction::Deploy(invalid_deploy) => ErrorCode::from(invalid_deploy),
            InvalidTransaction::V1(invalid_transaction) => ErrorCode::from(invalid_transaction),
            _ => ErrorCode::InvalidTransactionOrDeployUnspecified,
        }
    }
}

impl From<InvalidDeploy> for ErrorCode {
    fn from(value: InvalidDeploy) -> Self {
        match value {
            InvalidDeploy::InvalidChainName { .. } => ErrorCode::InvalidDeployChainName,
            InvalidDeploy::DependenciesNoLongerSupported => {
                ErrorCode::InvalidDeployDependenciesNoLongerSupported
            }
            InvalidDeploy::ExcessiveSize(_) => ErrorCode::InvalidDeployExcessiveSize,
            InvalidDeploy::ExcessiveTimeToLive { .. } => {
                ErrorCode::InvalidDeployExcessiveTimeToLive
            }
            InvalidDeploy::TimestampInFuture { .. } => ErrorCode::InvalidDeployTimestampInFuture,
            InvalidDeploy::InvalidBodyHash => ErrorCode::InvalidDeployBodyHash,
            InvalidDeploy::InvalidDeployHash => ErrorCode::InvalidDeployHash,
            InvalidDeploy::EmptyApprovals => ErrorCode::InvalidDeployEmptyApprovals,
            InvalidDeploy::InvalidApproval { .. } => ErrorCode::InvalidDeployApproval,
            InvalidDeploy::ExcessiveSessionArgsLength { .. } => {
                ErrorCode::InvalidDeployExcessiveSessionArgsLength
            }
            InvalidDeploy::ExcessivePaymentArgsLength { .. } => {
                ErrorCode::InvalidDeployExcessivePaymentArgsLength
            }
            InvalidDeploy::MissingPaymentAmount => ErrorCode::InvalidDeployMissingPaymentAmount,
            InvalidDeploy::FailedToParsePaymentAmount => {
                ErrorCode::InvalidDeployFailedToParsePaymentAmount
            }
            InvalidDeploy::ExceededBlockGasLimit { .. } => {
                ErrorCode::InvalidDeployExceededBlockGasLimit
            }
            InvalidDeploy::MissingTransferAmount => ErrorCode::InvalidDeployMissingTransferAmount,
            InvalidDeploy::FailedToParseTransferAmount => {
                ErrorCode::InvalidDeployFailedToParseTransferAmount
            }
            InvalidDeploy::InsufficientTransferAmount { .. } => {
                ErrorCode::InvalidDeployInsufficientTransferAmount
            }
            InvalidDeploy::ExcessiveApprovals { .. } => ErrorCode::InvalidDeployExcessiveApprovals,
            InvalidDeploy::UnableToCalculateGasLimit => {
                ErrorCode::InvalidDeployUnableToCalculateGasLimit
            }
            InvalidDeploy::UnableToCalculateGasCost => {
                ErrorCode::InvalidDeployUnableToCalculateGasCost
            }
            InvalidDeploy::GasPriceToleranceTooLow { .. } => ErrorCode::GasPriceToleranceTooLow,
            InvalidDeploy::GasLimitNotSupported => ErrorCode::InvalidDeployGasLimitNotSupported,
            InvalidDeploy::InvalidRuntime => ErrorCode::InvalidDeployInvalidRuntime,
            InvalidDeploy::NoLaneMatch => ErrorCode::InvalidTransactionNoLaneMatches,
            InvalidDeploy::ExceededLaneGasLimit { .. } => {
                ErrorCode::InvalidDeployExceededWasmLaneGasLimit
            }
            InvalidDeploy::InvalidPaymentAmount => ErrorCode::InvalidDeployInvalidPaymentAmount,
            InvalidDeploy::PricingModeNotSupported => ErrorCode::PricingModeNotSupported,
            _ => ErrorCode::InvalidDeployUnspecified,
        }
    }
}

impl From<InvalidTransactionV1> for ErrorCode {
    fn from(value: InvalidTransactionV1) -> Self {
        match value {
            InvalidTransactionV1::InvalidChainName { .. } => ErrorCode::InvalidTransactionChainName,
            InvalidTransactionV1::ExcessiveSize(_) => ErrorCode::InvalidTransactionExcessiveSize,
            InvalidTransactionV1::ExcessiveTimeToLive { .. } => {
                ErrorCode::InvalidTransactionExcessiveTimeToLive
            }
            InvalidTransactionV1::TimestampInFuture { .. } => {
                ErrorCode::InvalidTransactionTimestampInFuture
            }
            InvalidTransactionV1::InvalidBodyHash => ErrorCode::InvalidTransactionBodyHash,
            InvalidTransactionV1::InvalidTransactionHash => ErrorCode::InvalidTransactionHash,
            InvalidTransactionV1::EmptyApprovals => ErrorCode::InvalidTransactionEmptyApprovals,
            InvalidTransactionV1::InvalidApproval { .. } => {
                ErrorCode::InvalidTransactionInvalidApproval
            }
            InvalidTransactionV1::ExcessiveArgsLength { .. } => {
                ErrorCode::InvalidTransactionExcessiveArgsLength
            }
            InvalidTransactionV1::ExcessiveApprovals { .. } => {
                ErrorCode::InvalidTransactionExcessiveApprovals
            }
            InvalidTransactionV1::ExceedsBlockGasLimit { .. } => {
                ErrorCode::InvalidTransactionExceedsBlockGasLimit
            }
            InvalidTransactionV1::MissingArg { .. } => ErrorCode::InvalidTransactionMissingArg,
            InvalidTransactionV1::UnexpectedArgType { .. } => {
                ErrorCode::InvalidTransactionUnexpectedArgType
            }
            InvalidTransactionV1::InvalidArg { .. } => ErrorCode::InvalidTransactionInvalidArg,
            InvalidTransactionV1::InsufficientTransferAmount { .. } => {
                ErrorCode::InvalidTransactionInsufficientTransferAmount
            }
            InvalidTransactionV1::EntryPointCannotBeCustom { .. } => {
                ErrorCode::InvalidTransactionEntryPointCannotBeCustom
            }
            InvalidTransactionV1::EntryPointMustBeCustom { .. } => {
                ErrorCode::InvalidTransactionEntryPointMustBeCustom
            }
            InvalidTransactionV1::EmptyModuleBytes => ErrorCode::InvalidTransactionEmptyModuleBytes,
            InvalidTransactionV1::GasPriceConversion { .. } => {
                ErrorCode::InvalidTransactionGasPriceConversion
            }
            InvalidTransactionV1::UnableToCalculateGasLimit => {
                ErrorCode::InvalidTransactionUnableToCalculateGasLimit
            }
            InvalidTransactionV1::UnableToCalculateGasCost => {
                ErrorCode::InvalidTransactionUnableToCalculateGasCost
            }
            InvalidTransactionV1::InvalidPricingMode { .. } => {
                ErrorCode::InvalidTransactionPricingMode
            }
            InvalidTransactionV1::EntryPointCannotBeCall => {
                ErrorCode::InvalidTransactionEntryPointCannotBeCall
            }
            InvalidTransactionV1::InvalidTransactionLane(_) => {
                ErrorCode::InvalidTransactionInvalidTransactionLane
            }
            InvalidTransactionV1::GasPriceToleranceTooLow { .. } => {
                ErrorCode::GasPriceToleranceTooLow
            }
            InvalidTransactionV1::ExpectedNamedArguments => ErrorCode::ExpectedNamedArguments,
            InvalidTransactionV1::InvalidTransactionRuntime { .. } => {
                ErrorCode::InvalidTransactionRuntime
            }
            InvalidTransactionV1::NoLaneMatch => ErrorCode::InvalidTransactionNoLaneMatches,
            InvalidTransactionV1::EntryPointMustBeCall { .. } => {
                ErrorCode::InvalidTransactionEntryPointMustBeCall
            }
            InvalidTransactionV1::CouldNotDeserializeField { .. } => {
                ErrorCode::InvalidTransactionCannotDeserializeField
            }
            InvalidTransactionV1::CannotCalculateFieldsHash => {
                ErrorCode::InvalidTransactionCannotCalculateFieldsHash
            }
            InvalidTransactionV1::UnexpectedTransactionFieldEntries => {
                ErrorCode::InvalidTransactionUnexpectedFields
            }
            InvalidTransactionV1::ExpectedBytesArguments => {
                ErrorCode::InvalidTransactionExpectedBytesArguments
            }
            InvalidTransactionV1::MissingSeed => ErrorCode::InvalidTransactionMissingSeed,
            InvalidTransactionV1::PricingModeNotSupported => ErrorCode::PricingModeNotSupported,
            InvalidTransactionV1::InsufficientBurnAmount { .. } => {
                ErrorCode::InvalidTransactionInsufficientBurnAmount
            }
            InvalidTransactionV1::InvalidPaymentAmount => {
                ErrorCode::InvalidTransactionInvalidPaymentAmount
            }
            InvalidTransactionV1::UnexpectedEntryPoint { .. } => {
                ErrorCode::InvalidTransactionUnexpectedEntryPoint
            }
            InvalidTransactionV1::CouldNotSerializeTransaction { .. } => {
                ErrorCode::TransactionHasMalformedBinaryRepresentation
            }
            InvalidTransactionV1::InsufficientAmount { .. } => {
                ErrorCode::InsufficientAmountArgValue
            }
            InvalidTransactionV1::InvalidMinimumDelegationAmount { .. } => {
                ErrorCode::InvalidMinimumDelegationAmount
            }
            InvalidTransactionV1::InvalidMaximumDelegationAmount { .. } => {
                ErrorCode::InvalidMaximumDelegationAmount
            }
            InvalidTransactionV1::InvalidReservedSlots { .. } => ErrorCode::InvalidReservedSlots,
            InvalidTransactionV1::InvalidDelegationAmount { .. } => {
                ErrorCode::InvalidDelegationAmount
            }
            InvalidTransactionV1::UnsupportedInvocationTarget { .. } => {
                ErrorCode::UnsupportedInvocationTarget
            }
            _other => ErrorCode::InvalidTransactionUnspecified,
        }
    }
}

#[cfg(test)]
mod tests {
    use std::convert::TryFrom;

    use crate::ErrorCode;
    use casper_types::{InvalidDeploy, InvalidTransactionV1};
    use strum::IntoEnumIterator;

    #[test]
    fn verify_all_invalid_transaction_v1_errors_have_error_codes() {
        for error in InvalidTransactionV1::iter() {
            let code = ErrorCode::from(error.clone());
            assert_ne!(
                code,
                ErrorCode::InvalidTransactionUnspecified,
                "Seems like InvalidTransactionV1 {error:?} has no corresponding error code"
            );
            assert_ne!(
                code,
                ErrorCode::InvalidDeployUnspecified,
                "Seems like InvalidTransactionV1 {error:?} has no corresponding error code"
            )
        }
    }

    #[test]
    fn verify_all_invalid_deploy_errors_have_error_codes() {
        for error in InvalidDeploy::iter() {
            let code = ErrorCode::from(error.clone());
            assert_ne!(
                code,
                ErrorCode::InvalidTransactionUnspecified,
                "Seems like InvalidDeploy {error} has no corresponding error code"
            );
            assert_ne!(
                code,
                ErrorCode::InvalidDeployUnspecified,
                "Seems like InvalidDeploy {error} has no corresponding error code"
            )
        }
    }

    #[test]
    fn try_from_decoded_all_variants() {
        for variant in ErrorCode::iter() {
            let as_int = variant as u16;
            let decoded = ErrorCode::try_from(as_int);
            assert!(
                decoded.is_ok(),
                "variant {} not covered by TryFrom<u16> implementation",
                as_int
            );
            assert_eq!(decoded.unwrap(), variant);
        }
    }
}


================================================
FILE: binary_port/src/get_request.rs
================================================
use casper_types::{
    bytesrepr::{self, Bytes, FromBytes, ToBytes, U8_SERIALIZED_LENGTH},
    Digest,
};

use crate::state_request::GlobalStateRequest;

#[cfg(test)]
use casper_types::testing::TestRng;
#[cfg(test)]
use rand::Rng;

const RECORD_TAG: u8 = 0;
const INFORMATION_TAG: u8 = 1;
const STATE_TAG: u8 = 2;
const TRIE_TAG: u8 = 3;

/// A request to get data from the node.
#[derive(Clone, Debug, PartialEq)]
pub enum GetRequest {
    /// Retrieves a record from the node.
    Record {
        /// Type tag of the record to retrieve.
        record_type_tag: u16,
        /// Key encoded into bytes.
        key: Vec<u8>,
    },
    /// Retrieves information from the node.
    Information {
        /// Type tag of the information to retrieve.
        info_type_tag: u16,
        /// Key encoded into bytes.
        key: Vec<u8>,
    },
    /// Retrieves data from the global state.
    State(Box<GlobalStateRequest>),
    /// Get a trie by its Digest.
    Trie {
        /// A trie key.
        trie_key: Digest,
    },
}

impl GetRequest {
    #[cfg(test)]
    pub(crate) fn random(rng: &mut TestRng) -> Self {
        match rng.gen_range(0..4) {
            0 => GetRequest::Record {
                record_type_tag: rng.gen(),
                key: rng.random_vec(16..32),
            },
            1 => GetRequest::Information {
                info_type_tag: rng.gen(),
                key: rng.random_vec(16..32),
            },
            2 => GetRequest::State(Box::new(GlobalStateRequest::random(rng))),
            3 => GetRequest::Trie {
                trie_key: Digest::random(rng),
            },
            _ => unreachable!(),
        }
    }
}

impl ToBytes for GetRequest {
    fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
        let mut buffer = bytesrepr::allocate_buffer(self)?;
        self.write_bytes(&mut buffer)?;
        Ok(buffer)
    }

    fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Error> {
        match self {
            GetRequest::Record {
                record_type_tag,
                key,
            } => {
                RECORD_TAG.write_bytes(writer)?;
                record_type_tag.write_bytes(writer)?;
                key.write_bytes(writer)
            }
            GetRequest::Information { info_type_tag, key } => {
                INFORMATION_TAG.write_bytes(writer)?;
                info_type_tag.write_bytes(writer)?;
                key.write_bytes(writer)
            }
            GetRequest::State(req) => {
                STATE_TAG.write_bytes(writer)?;
                req.write_bytes(writer)
            }
            GetRequest::Trie { trie_key } => {
                TRIE_TAG.write_bytes(writer)?;
                trie_key.write_bytes(writer)
            }
        }
    }

    fn serialized_length(&self) -> usize {
        U8_SERIALIZED_LENGTH
            + match self {
                GetRequest::Record {
                    record_type_tag,
                    key,
                } => record_type_tag.serialized_length() + key.serialized_length(),
                GetRequest::Information { info_type_tag, key } => {
                    info_type_tag.serialized_length() + key.serialized_length()
                }
                GetRequest::State(req) => req.serialized_length(),
                GetRequest::Trie { trie_key } => trie_key.serialized_length(),
            }
    }
}

impl FromBytes for GetRequest {
    fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
        let (tag, remainder) = FromBytes::from_bytes(bytes)?;
        match tag {
            RECORD_TAG => {
                let (record_type_tag, remainder) = FromBytes::from_bytes(remainder)?;
                let (key, remainder) = Bytes::from_bytes(remainder)?;
                Ok((
                    GetRequest::Record {
                        record_type_tag,
                        key: key.into(),
                    },
                    remainder,
                ))
            }
            INFORMATION_TAG => {
                let (info_type_tag, remainder) = FromBytes::from_bytes(remainder)?;
                let (key, remainder) = Bytes::from_bytes(remainder)?;
                Ok((
                    GetRequest::Information {
                        info_type_tag,
                        key: key.into(),
                    },
                    remainder,
                ))
            }
            STATE_TAG => {
                let (req, remainder) = FromBytes::from_bytes(remainder)?;
                Ok((GetRequest::State(Box::new(req)), remainder))
            }
            TRIE_TAG => {
                let (trie_key, remainder) = FromBytes::from_bytes(remainder)?;
                Ok((GetRequest::Trie { trie_key }, remainder))
            }
            _ => Err(bytesrepr::Error::Formatting),
        }
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    use casper_types::testing::TestRng;

    #[test]
    fn bytesrepr_roundtrip() {
        let rng = &mut TestRng::new();

        let val = GetRequest::random(rng);
        bytesrepr::test_serialization_roundtrip(&val);
    }
}


================================================
FILE: binary_port/src/global_state_query_result.rs
================================================
//! The result of the query for the global state value.

use casper_types::{
    bytesrepr::{self, FromBytes, ToBytes},
    global_state::TrieMerkleProof,
    Key, StoredValue,
};

#[cfg(test)]
use casper_types::testing::TestRng;

#[cfg(test)]
use casper_types::{ByteCode, ByteCodeKind};
use serde::Serialize;

/// Carries the successful result of the global state query.
#[derive(Debug, PartialEq, Clone, Serialize)]
pub struct GlobalStateQueryResult {
    /// Stored value.
    value: StoredValue,
    /// Proof.
    merkle_proof: Vec<TrieMerkleProof<Key, StoredValue>>,
}

impl GlobalStateQueryResult {
    /// Creates the global state query result.
    pub fn new(value: StoredValue, merkle_proof: Vec<TrieMerkleProof<Key, StoredValue>>) -> Self {
        Self {
            value,
            merkle_proof,
        }
    }

    /// Returns the stored value.
    pub fn value(&self) -> &StoredValue {
        &self.value
    }

    /// Returns the stored value and the merkle proof.
    pub fn into_inner(self) -> (StoredValue, Vec<TrieMerkleProof<Key, StoredValue>>) {
        (self.value, self.merkle_proof)
    }

    #[cfg(test)]
    pub(crate) fn random_invalid(rng: &mut TestRng) -> Self {
        use casper_types::{global_state::TrieMerkleProofStep, CLValue};
        use rand::Rng;
        // Note: This does NOT create a logically-valid struct. Instance created by this function
        // should be used in `bytesrepr` tests only.

        let mut merkle_proof = vec![];
        for _ in 0..rng.gen_range(0..10) {
            let stored_value = StoredValue::CLValue(
                CLValue::from_t(rng.gen::<i32>()).expect("should create CLValue"),
            );
            let steps = (0..rng.gen_range(0..10))
                .map(|_| TrieMerkleProofStep::random(rng))
                .collect();
            merkle_proof.push(TrieMerkleProof::new(rng.gen(), stored_value, steps));
        }

        Self {
            value: StoredValue::ByteCode(ByteCode::new(
                ByteCodeKind::V1CasperWasm,
                rng.random_vec(10..20),
            )),
            merkle_proof,
        }
    }
}

impl ToBytes for GlobalStateQueryResult {
    fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
        let mut buffer = bytesrepr::allocate_buffer(self)?;
        self.write_bytes(&mut buffer)?;
        Ok(buffer)
    }

    fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Error> {
        let GlobalStateQueryResult {
            value,
            merkle_proof,
        } = self;
        value.write_bytes(writer)?;
        merkle_proof.write_bytes(writer)
    }

    fn serialized_length(&self) -> usize {
        self.value.serialized_length() + self.merkle_proof.serialized_length()
    }
}

impl FromBytes for GlobalStateQueryResult {
    fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
        let (value, remainder) = FromBytes::from_bytes(bytes)?;
        let (merkle_proof, remainder) = FromBytes::from_bytes(remainder)?;
        Ok((
            GlobalStateQueryResult {
                value,
                merkle_proof,
            },
            remainder,
        ))
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    use casper_types::testing::TestRng;

    #[test]
    fn bytesrepr_roundtrip() {
        let rng = &mut TestRng::new();

        let val = GlobalStateQueryResult::random_invalid(rng);
        bytesrepr::test_serialization_roundtrip(&val);
    }
}


================================================
FILE: binary_port/src/information_request.rs
================================================
use core::convert::TryFrom;

#[cfg(test)]
use rand::Rng;

use crate::{get_request::GetRequest, EraIdentifier};
#[cfg(test)]
use casper_types::testing::TestRng;
use casper_types::{
    account::AccountHash,
    bytesrepr::{self, FromBytes, ToBytes, U8_SERIALIZED_LENGTH},
    contracts::{ContractHash, ContractPackageHash},
    system::auction::DelegatorKind,
    BlockIdentifier, EntityAddr, GlobalStateIdentifier, PackageAddr, PublicKey, TransactionHash,
};

/// Request for information from the node.
#[derive(Clone, Debug, PartialEq)]
pub enum InformationRequest {
    /// Returns the block header by an identifier, no identifier indicates the latest block.
    BlockHeader(Option<BlockIdentifier>),
    /// Returns the block with signatures by an identifier, no identifier indicates the latest
    /// block.
    BlockWithSignatures(Option<BlockIdentifier>),
    /// Returns a transaction with approvals and execution info for a given hash.
    Transaction {
        /// Hash of the transaction to retrieve.
        hash: TransactionHash,
        /// Whether to return the deploy with the finalized approvals substituted.
        with_finalized_approvals: bool,
    },
    /// Returns connected peers.
    Peers,
    /// Returns node uptime.
    Uptime,
    /// Returns last progress of the sync process.
    LastProgress,
    /// Returns current state of the main reactor.
    ReactorState,
    /// Returns network name.
    NetworkName,
    /// Returns consensus validator changes.
    ConsensusValidatorChanges,
    /// Returns status of the BlockSynchronizer.
    BlockSynchronizerStatus,
    /// Returns the available block range.
    AvailableBlockRange,
    /// Returns info about next upgrade.
    NextUpgrade,
    /// Returns consensus status.
    ConsensusStatus,
    /// Returns chainspec raw bytes.
    ChainspecRawBytes,
    /// Returns the status information of the node.
    NodeStatus,
    /// Returns the latest switch block header.
    LatestSwitchBlockHeader,
    /// Returns the reward for a validator or a delegator in a specific era.
    Reward {
        /// Identifier of the era to get the reward for. Must point to either a switch block or
        /// a valid `EraId`. If `None`, the reward for the latest switch block is returned.
        era_identifier: Option<EraIdentifier>,
        /// Public key of the validator to get the reward for.
        validator: Box<PublicKey>,
        /// Identity of the delegator to get the reward for.
        /// If `None`, the reward for the validator is returned.
        delegator: Option<Box<DelegatorKind>>,
    },
    /// Returns the current Casper protocol version.
    ProtocolVersion,
    /// Returns the contract package by an identifier.
    Package {
        /// Global state identifier, `None` means "latest block state".
        state_identifier: Option<GlobalStateIdentifier>,
        /// Identifier of the contract package to retrieve.
        identifier: PackageIdentifier,
    },
    /// Returns the entity by an identifier.
    Entity {
        /// Global state identifier, `None` means "latest block state".
        state_identifier: Option<GlobalStateIdentifier>,
        /// Identifier of the entity to retrieve.
        identifier: EntityIdentifier,
        /// Whether to return the bytecode with the entity.
        include_bytecode: bool,
    },
}

impl InformationRequest {
    /// Returns the tag of the request.
    pub fn tag(&self) -> InformationRequestTag {
        match self {
            InformationRequest::BlockHeader(_) => InformationRequestTag::BlockHeader,
            InformationRequest::BlockWithSignatures(_) => {
                InformationRequestTag::BlockWithSignatures
            }
            InformationRequest::Transaction { .. } => InformationRequestTag::Transaction,
            InformationRequest::Peers => InformationRequestTag::Peers,
            InformationRequest::Uptime => InformationRequestTag::Uptime,
            InformationRequest::LastProgress => InformationRequestTag::LastProgress,
            InformationRequest::ReactorState => InformationRequestTag::ReactorState,
            InformationRequest::NetworkName => InformationRequestTag::NetworkName,
            InformationRequest::ConsensusValidatorChanges => {
                InformationRequestTag::ConsensusValidatorChanges
            }
            InformationRequest::BlockSynchronizerStatus => {
                InformationRequestTag::BlockSynchronizerStatus
            }
            InformationRequest::AvailableBlockRange => InformationRequestTag::AvailableBlockRange,
            InformationRequest::NextUpgrade => InformationRequestTag::NextUpgrade,
            InformationRequest::ConsensusStatus => InformationRequestTag::ConsensusStatus,
            InformationRequest::ChainspecRawBytes => InformationRequestTag::ChainspecRawBytes,
            InformationRequest::NodeStatus => InformationRequestTag::NodeStatus,
            InformationRequest::LatestSwitchBlockHeader => {
                InformationRequestTag::LatestSwitchBlockHeader
            }
            InformationRequest::Reward { .. } => InformationRequestTag::Reward,
            InformationRequest::ProtocolVersion => InformationRequestTag::ProtocolVersion,
            InformationRequest::Package { .. } => InformationRequestTag::Package,
            InformationRequest::Entity { .. } => InformationRequestTag::Entity,
        }
    }

    #[cfg(test)]
    pub(crate) fn random(rng: &mut TestRng) -> Self {
        match InformationRequestTag::random(rng) {
            InformationRequestTag::BlockHeader => InformationRequest::BlockHeader(
                rng.gen::<bool>().then(|| BlockIdentifier::random(rng)),
            ),
            InformationRequestTag::BlockWithSignatures => InformationRequest::BlockWithSignatures(
                rng.gen::<bool>().then(|| BlockIdentifier::random(rng)),
            ),
            InformationRequestTag::Transaction => InformationRequest::Transaction {
                hash: TransactionHash::random(rng),
                with_finalized_approvals: rng.gen(),
            },
            InformationRequestTag::Peers => InformationRequest::Peers,
            InformationRequestTag::Uptime => InformationRequest::Uptime,
            InformationRequestTag::LastProgress => InformationRequest::LastProgress,
            InformationRequestTag::ReactorState => InformationRequest::ReactorState,
            InformationRequestTag::NetworkName => InformationRequest::NetworkName,
            InformationRequestTag::ConsensusValidatorChanges => {
                InformationRequest::ConsensusValidatorChanges
            }
            InformationRequestTag::BlockSynchronizerStatus => {
                InformationRequest::BlockSynchronizerStatus
            }
            InformationRequestTag::AvailableBlockRange => InformationRequest::AvailableBlockRange,
            InformationRequestTag::NextUpgrade => InformationRequest::NextUpgrade,
            InformationRequestTag::ConsensusStatus => InformationRequest::ConsensusStatus,
            InformationRequestTag::ChainspecRawBytes => InformationRequest::ChainspecRawBytes,
            InformationRequestTag::NodeStatus => InformationRequest::NodeStatus,
            InformationRequestTag::LatestSwitchBlockHeader => {
                InformationRequest::LatestSwitchBlockHeader
            }
            InformationRequestTag::Reward => InformationRequest::Reward {
                era_identifier: rng.gen::<bool>().then(|| EraIdentifier::random(rng)),
                validator: PublicKey::random(rng).into(),
                delegator: rng
                    .gen::<bool>()
                    .then(|| Box::new(DelegatorKind::PublicKey(PublicKey::random(rng)))),
            },
            InformationRequestTag::ProtocolVersion => InformationRequest::ProtocolVersion,
            InformationRequestTag::Package => InformationRequest::Package {
                state_identifier: rng
                    .gen::<bool>()
                    .then(|| GlobalStateIdentifier::random(rng)),
                identifier: PackageIdentifier::random(rng),
            },
            InformationRequestTag::Entity => InformationRequest::Entity {
                state_identifier: rng
                    .gen::<bool>()
                    .then(|| GlobalStateIdentifier::random(rng)),
                identifier: EntityIdentifier::random(rng),
                include_bytecode: rng.gen(),
            },
        }
    }
}

impl ToBytes for InformationRequest {
    fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
        let mut buffer = bytesrepr::allocate_buffer(self)?;
        self.write_bytes(&mut buffer)?;
        Ok(buffer)
    }

    fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Error> {
        match self {
            InformationRequest::BlockHeader(block_identifier) => {
                block_identifier.write_bytes(writer)
            }
            InformationRequest::BlockWithSignatures(block_identifier) => {
                block_identifier.write_bytes(writer)
            }
            InformationRequest::Transaction {
                hash,
                with_finalized_approvals,
            } => {
                hash.write_bytes(writer)?;
                with_finalized_approvals.write_bytes(writer)
            }
            InformationRequest::Peers
            | InformationRequest::Uptime
            | InformationRequest::LastProgress
            | InformationRequest::ReactorState
            | InformationRequest::NetworkName
            | InformationRequest::ConsensusValidatorChanges
            | InformationRequest::BlockSynchronizerStatus
            | InformationRequest::AvailableBlockRange
            | InformationRequest::NextUpgrade
            | InformationRequest::ConsensusStatus
            | InformationRequest::ChainspecRawBytes
            | InformationRequest::NodeStatus
            | InformationRequest::LatestSwitchBlockHeader
            | InformationRequest::ProtocolVersion => Ok(()),
            InformationRequest::Reward {
                era_identifier,
                validator,
                delegator,
            } => {
                era_identifier.write_bytes(writer)?;
                validator.write_bytes(writer)?;
                delegator.as_deref().write_bytes(writer)?;
                Ok(())
            }
            InformationRequest::Package {
                state_identifier,
                identifier,
            } => {
                state_identifier.write_bytes(writer)?;
                identifier.write_bytes(writer)
            }
            InformationRequest::Entity {
                state_identifier,
                identifier,
                include_bytecode,
            } => {
                state_identifier.write_bytes(writer)?;
                identifier.write_bytes(writer)?;
                include_bytecode.write_bytes(writer)
            }
        }
    }

    fn serialized_length(&self) -> usize {
        match self {
            InformationRequest::BlockHeader(block_identifier) => {
                block_identifier.serialized_length()
            }
            InformationRequest::BlockWithSignatures(block_identifier) => {
                block_identifier.serialized_length()
            }
            InformationRequest::Transaction {
                hash,
                with_finalized_approvals,
            } => hash.serialized_length() + with_finalized_approvals.serialized_length(),
            InformationRequest::Peers
            | InformationRequest::Uptime
            | InformationRequest::LastProgress
            | InformationRequest::ReactorState
            | InformationRequest::NetworkName
            | InformationRequest::ConsensusValidatorChanges
            | InformationRequest::BlockSynchronizerStatus
            | InformationRequest::AvailableBlockRange
            | InformationRequest::NextUpgrade
            | InformationRequest::ConsensusStatus
            | InformationRequest::ChainspecRawBytes
            | InformationRequest::NodeStatus
            | InformationRequest::LatestSwitchBlockHeader
            | InformationRequest::ProtocolVersion => 0,
            InformationRequest::Reward {
                era_identifier,
                validator,
                delegator,
            } => {
                era_identifier.serialized_length()
                    + validator.serialized_length()
                    + delegator.as_deref().serialized_length()
            }
            InformationRequest::Package {
                state_identifier,
                identifier,
            } => state_identifier.serialized_length() + identifier.serialized_length(),
            InformationRequest::Entity {
                state_identifier,
                identifier,
                include_bytecode,
            } => {
                state_identifier.serialized_length()
                    + identifier.serialized_length()
                    + include_bytecode.serialized_length()
            }
        }
    }
}

impl TryFrom<(InformationRequestTag, &[u8])> for InformationRequest {
    type Error = bytesrepr::Error;

    fn try_from((tag, key_bytes): (InformationRequestTag, &[u8])) -> Result<Self, Self::Error> {
        let (req, remainder) = match tag {
            InformationRequestTag::BlockHeader => {
                let (block_identifier, remainder) = FromBytes::from_bytes(key_bytes)?;
                (InformationRequest::BlockHeader(block_identifier), remainder)
            }
            InformationRequestTag::BlockWithSignatures => {
                let (block_identifier, remainder) = FromBytes::from_bytes(key_bytes)?;
                (
                    InformationRequest::BlockWithSignatures(block_identifier),
                    remainder,
                )
            }
            InformationRequestTag::Transaction => {
                let (hash, remainder) = FromBytes::from_bytes(key_bytes)?;
                let (with_finalized_approvals, remainder) = FromBytes::from_bytes(remainder)?;
                (
                    InformationRequest::Transaction {
                        hash,
                        with_finalized_approvals,
                    },
                    remainder,
                )
            }
            InformationRequestTag::Peers => (InformationRequest::Peers, key_bytes),
            InformationRequestTag::Uptime => (InformationRequest::Uptime, key_bytes),
            InformationRequestTag::LastProgress => (InformationRequest::LastProgress, key_bytes),
            InformationRequestTag::ReactorState => (InformationRequest::ReactorState, key_bytes),
            InformationRequestTag::NetworkName => (InformationRequest::NetworkName, key_bytes),
            InformationRequestTag::ConsensusValidatorChanges => {
                (InformationRequest::ConsensusValidatorChanges, key_bytes)
            }
            InformationRequestTag::BlockSynchronizerStatus => {
                (InformationRequest::BlockSynchronizerStatus, key_bytes)
            }
            InformationRequestTag::AvailableBlockRange => {
                (InformationRequest::AvailableBlockRange, key_bytes)
            }
            InformationRequestTag::NextUpgrade => (InformationRequest::NextUpgrade, key_bytes),
            InformationRequestTag::ConsensusStatus => {
                (InformationRequest::ConsensusStatus, key_bytes)
            }
            InformationRequestTag::ChainspecRawBytes => {
                (InformationRequest::ChainspecRawBytes, key_bytes)
            }
            InformationRequestTag::NodeStatus => (InformationRequest::NodeStatus, key_bytes),
            InformationRequestTag::LatestSwitchBlockHeader => {
                (InformationRequest::LatestSwitchBlockHeader, key_bytes)
            }
            InformationRequestTag::Reward => {
                let (era_identifier, remainder) = <Option<EraIdentifier>>::from_bytes(key_bytes)?;
                let (validator, remainder) = PublicKey::from_bytes(remainder)?;
                let (delegator, remainder) = <Option<DelegatorKind>>::from_bytes(remainder)?;
                (
                    InformationRequest::Reward {
                        era_identifier,
                        validator: Box::new(validator),
                        delegator: delegator.map(Box::new),
                    },
                    remainder,
                )
            }
            InformationRequestTag::ProtocolVersion => {
                (InformationRequest::ProtocolVersion, key_bytes)
            }
            InformationRequestTag::Package => {
                let (state_identifier, remainder) = FromBytes::from_bytes(key_bytes)?;
                let (identifier, remainder) = FromBytes::from_bytes(remainder)?;
                (
                    InformationRequest::Package {
                        state_identifier,
                        identifier,
                    },
                    remainder,
                )
            }
            InformationRequestTag::Entity => {
                let (state_identifier, remainder) = FromBytes::from_bytes(key_bytes)?;
                let (identifier, remainder) = FromBytes::from_bytes(remainder)?;
                let (include_bytecode, remainder) = FromBytes::from_bytes(remainder)?;
                (
                    InformationRequest::Entity {
                        state_identifier,
                        identifier,
                        include_bytecode,
                    },
                    remainder,
                )
            }
        };
        if !remainder.is_empty() {
            return Err(bytesrepr::Error::LeftOverBytes);
        }
        Ok(req)
    }
}

impl TryFrom<InformationRequest> for GetRequest {
    type Error = bytesrepr::Error;

    fn try_from(request: InformationRequest) -> Result<Self, Self::Error> {
        Ok(GetRequest::Information {
            info_type_tag: request.tag().into(),
            key: request.to_bytes()?,
        })
    }
}

/// Identifier of an information request.
#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
#[repr(u16)]
pub enum InformationRequestTag {
    /// Block header request.
    BlockHeader = 0,
    /// Block with signatures request.
    BlockWithSignatures = 1,
    /// Transaction request.
    Transaction = 2,
    /// Peers request.
    Peers = 3,
    /// Uptime request.
    Uptime = 4,
    /// Last progress request.
    LastProgress = 5,
    /// Reactor state request.
    ReactorState = 6,
    /// Network name request.
    NetworkName = 7,
    /// Consensus validator changes request.
    ConsensusValidatorChanges = 8,
    /// Block synchronizer status request.
    BlockSynchronizerStatus = 9,
    /// Available block range request.
    AvailableBlockRange = 10,
    /// Next upgrade request.
    NextUpgrade = 11,
    /// Consensus status request.
    ConsensusStatus = 12,
    /// Chainspec raw bytes request.
    ChainspecRawBytes = 13,
    /// Node status request.
    NodeStatus = 14,
    /// Latest switch block header request.
    LatestSwitchBlockHeader = 15,
    /// Reward for a validator or a delegator in a specific era.
    Reward = 16,
    /// Protocol version request.
    ProtocolVersion = 17,
    /// Contract package request.
    Package = 18,
    /// Addressable entity request.
    Entity = 19,
}

impl InformationRequestTag {
    #[cfg(test)]
    pub(crate) fn random(rng: &mut TestRng) -> Self {
        match rng.gen_range(0..20) {
            0 => InformationRequestTag::BlockHeader,
            1 => InformationRequestTag::BlockWithSignatures,
            2 => InformationRequestTag::Transaction,
            3 => InformationRequestTag::Peers,
            4 => InformationRequestTag::Uptime,
            5 => InformationRequestTag::LastProgress,
            6 => InformationRequestTag::ReactorState,
            7 => InformationRequestTag::NetworkName,
            8 => InformationRequestTag::ConsensusValidatorChanges,
            9 => InformationRequestTag::BlockSynchronizerStatus,
            10 => InformationRequestTag::AvailableBlockRange,
            11 => InformationRequestTag::NextUpgrade,
            12 => InformationRequestTag::ConsensusStatus,
            13 => InformationRequestTag::ChainspecRawBytes,
            14 => InformationRequestTag::NodeStatus,
            15 => InformationRequestTag::LatestSwitchBlockHeader,
            16 => InformationRequestTag::Reward,
            17 => InformationRequestTag::ProtocolVersion,
            18 => InformationRequestTag::Package,
            19 => InformationRequestTag::Entity,
            _ => unreachable!(),
        }
    }
}

impl TryFrom<u16> for InformationRequestTag {
    type Error = UnknownInformationRequestTag;

    fn try_from(value: u16) -> Result<Self, Self::Error> {
        match value {
            0 => Ok(InformationRequestTag::BlockHeader),
            1 => Ok(InformationRequestTag::BlockWithSignatures),
            2 => Ok(InformationRequestTag::Transaction),
            3 => Ok(InformationRequestTag::Peers),
            4 => Ok(InformationRequestTag::Uptime),
            5 => Ok(InformationRequestTag::LastProgress),
            6 => Ok(InformationRequestTag::ReactorState),
            7 => Ok(InformationRequestTag::NetworkName),
            8 => Ok(InformationRequestTag::ConsensusValidatorChanges),
            9 => Ok(InformationRequestTag::BlockSynchronizerStatus),
            10 => Ok(InformationRequestTag::AvailableBlockRange),
            11 => Ok(InformationRequestTag::NextUpgrade),
            12 => Ok(InformationRequestTag::ConsensusStatus),
            13 => Ok(InformationRequestTag::ChainspecRawBytes),
            14 => Ok(InformationRequestTag::NodeStatus),
            15 => Ok(InformationRequestTag::LatestSwitchBlockHeader),
            16 => Ok(InformationRequestTag::Reward),
            17 => Ok(InformationRequestTag::ProtocolVersion),
            18 => Ok(InformationRequestTag::Package),
            19 => Ok(InformationRequestTag::Entity),
            _ => Err(UnknownInformationRequestTag(value)),
        }
    }
}

impl From<InformationRequestTag> for u16 {
    fn from(value: InformationRequestTag) -> Self {
        value as u16
    }
}

/// Error returned when trying to convert a `u16` into a `RecordId`.
#[derive(Debug, Clone, PartialEq)]
pub struct UnknownInformationRequestTag(u16);

#[derive(Debug, Clone, PartialEq)]
pub enum EntityIdentifier {
    ContractHash(ContractHash),
    AccountHash(AccountHash),
    PublicKey(PublicKey),
    EntityAddr(EntityAddr),
}

impl EntityIdentifier {
    #[cfg(test)]
    pub(crate) fn random(rng: &mut TestRng) -> Self {
        match rng.gen_range(0..4) {
            0 => EntityIdentifier::ContractHash(ContractHash::new(rng.gen())),
            1 => EntityIdentifier::PublicKey(PublicKey::random(rng)),
            2 => EntityIdentifier::AccountHash(AccountHash::new(rng.gen())),
            3 => EntityIdentifier::EntityAddr(rng.gen()),
            _ => unreachable!(),
        }
    }
}

impl FromBytes for EntityIdentifier {
    fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
        let (tag, remainder) = u8::from_bytes(bytes)?;
        let (identifier, remainder) = match tag {
            0 => {
                let (hash, remainder) = FromBytes::from_bytes(remainder)?;
                (EntityIdentifier::ContractHash(hash), remainder)
            }
            1 => {
                let (key, remainder) = FromBytes::from_bytes(remainder)?;
                (EntityIdentifier::PublicKey(key), remainder)
            }
            2 => {
                let (hash, remainder) = FromBytes::from_bytes(remainder)?;
                (EntityIdentifier::AccountHash(hash), remainder)
            }
            3 => {
                let (entity, remainder) = FromBytes::from_bytes(remainder)?;
                (EntityIdentifier::EntityAddr(entity), remainder)
            }
            _ => return Err(bytesrepr::Error::Formatting),
        };
        Ok((identifier, remainder))
    }
}

impl ToBytes for EntityIdentifier {
    fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
        let mut buffer = bytesrepr::allocate_buffer(self)?;
        self.write_bytes(&mut buffer)?;
        Ok(buffer)
    }

    fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Error> {
        let tag: u8 = match self {
            EntityIdentifier::ContractHash(_) => 0,
            EntityIdentifier::PublicKey(_) => 1,
            EntityIdentifier::AccountHash(_) => 2,
            EntityIdentifier::EntityAddr(_) => 3,
        };
        tag.write_bytes(writer)?;
        match self {
            EntityIdentifier::ContractHash(hash) => hash.write_bytes(writer),
            EntityIdentifier::PublicKey(key) => key.write_bytes(writer),
            EntityIdentifier::AccountHash(hash) => hash.write_bytes(writer),
            EntityIdentifier::EntityAddr(entity) => entity.write_bytes(writer),
        }
    }

    fn serialized_length(&self) -> usize {
        let identifier_length = match self {
            EntityIdentifier::ContractHash(hash) => hash.serialized_length(),
            EntityIdentifier::PublicKey(key) => key.serialized_length(),
            EntityIdentifier::AccountHash(hash) => hash.serialized_length(),
            EntityIdentifier::EntityAddr(entity) => entity.serialized_length(),
        };
        U8_SERIALIZED_LENGTH + identifier_length
    }
}

#[derive(Debug, Clone, PartialEq)]
pub enum PackageIdentifier {
    ContractPackageHash(ContractPackageHash),
    PackageAddr(PackageAddr),
}

impl PackageIdentifier {
    #[cfg(test)]
    pub(crate) fn random(rng: &mut TestRng) -> Self {
        match rng.gen_range(0..2) {
            0 => PackageIdentifier::ContractPackageHash(ContractPackageHash::new(rng.gen())),
            1 => PackageIdentifier::PackageAddr(rng.gen()),
            _ => unreachable!(),
        }
    }
}

impl FromBytes for PackageIdentifier {
    fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
        let (tag, remainder) = u8::from_bytes(bytes)?;
        let (identifier, remainder) = match tag {
            0 => {
                let (hash, remainder) = FromBytes::from_bytes(remainder)?;
                (PackageIdentifier::ContractPackageHash(hash), remainder)
            }
            1 => {
                let (addr, remainder) = FromBytes::from_bytes(remainder)?;
                (PackageIdentifier::PackageAddr(addr), remainder)
            }
            _ => return Err(bytesrepr::Error::Formatting),
        };
        Ok((identifier, remainder))
    }
}

impl ToBytes for PackageIdentifier {
    fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
        let mut buffer = bytesrepr::allocate_buffer(self)?;
        self.write_bytes(&mut buffer)?;
        Ok(buffer)
    }

    fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Error> {
        let tag: u8 = match self {
            PackageIdentifier::ContractPackageHash(_) => 0,
            PackageIdentifier::PackageAddr(_) => 1,
        };
        tag.write_bytes(writer)?;
        match self {
            PackageIdentifier::ContractPackageHash(hash) => hash.write_bytes(writer),
            PackageIdentifier::PackageAddr(addr) => addr.write_bytes(writer),
        }
    }

    fn serialized_length(&self) -> usize {
        let identifier_length = match self {
            PackageIdentifier::ContractPackageHash(hash) => hash.serialized_length(),
            PackageIdentifier::PackageAddr(addr) => addr.serialized_length(),
        };
        U8_SERIALIZED_LENGTH + identifier_length
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    use casper_types::testing::TestRng;

    #[test]
    fn tag_roundtrip() {
        let rng = &mut TestRng::new();

        let val = InformationRequestTag::random(rng);
        let tag = u16::from(val);
        assert_eq!(InformationRequestTag::try_from(tag), Ok(val));
    }

    #[test]
    fn bytesrepr_roundtrip() {
        let rng = &mut TestRng::new();

        let val = InformationRequest::random(rng);
        let bytes = val.to_bytes().expect("should serialize");
        assert_eq!(
            InformationRequest::try_from((val.tag(), &bytes[..])),
            Ok(val)
        );
    }

    #[test]
    fn entity_identifier_bytesrepr_roundtrip() {
        let rng = &mut TestRng::new();

        let val = EntityIdentifier::random(rng);
        let bytes = val.to_bytes().expect("should serialize");
        assert_eq!(bytesrepr::deserialize_from_slice(bytes), Ok(val));
    }

    #[test]
    fn package_identifier_bytesrepr_roundtrip() {
        let rng = &mut TestRng::new();

        let val = PackageIdentifier::random(rng);
        let bytes = val.to_bytes().expect("should serialize");
        assert_eq!(bytesrepr::deserialize_from_slice(bytes), Ok(val));
    }
}


================================================
FILE: binary_port/src/key_prefix.rs
================================================
#[cfg(any(feature = "testing", test))]
use casper_types::testing::TestRng;
use casper_types::{
    account::AccountHash,
    bytesrepr::{self, FromBytes, ToBytes, U8_SERIALIZED_LENGTH},
    contract_messages::TopicNameHash,
    system::{auction::BidAddrTag, mint::BalanceHoldAddrTag},
    EntityAddr, KeyTag, URefAddr,
};
#[cfg(any(feature = "testing", test))]
use rand::Rng;

/// Key prefixes used for querying the global state.
#[derive(Debug, PartialEq, Eq, Clone, PartialOrd, Ord, Hash)]
pub enum KeyPrefix {
    /// Retrieves all delegator bid addresses for a given validator.
    DelegatorBidAddrsByValidator(AccountHash),
    /// Retrieves all messages for a given entity.
    MessagesByEntity(EntityAddr),
    /// Retrieves all messages for a given entity and topic.
    MessagesByEntityAndTopic(EntityAddr, TopicNameHash),
    /// Retrieves all named keys for a given entity.
    NamedKeysByEntity(EntityAddr),
    /// Retrieves all gas balance holds for a given purse.
    GasBalanceHoldsByPurse(URefAddr),
    /// Retrieves all processing balance holds for a given purse.
    ProcessingBalanceHoldsByPurse(URefAddr),
    /// Retrieves all V1 entry points for a given entity.
    EntryPointsV1ByEntity(EntityAddr),
    /// Retrieves all V2 entry points for a given entity.
    EntryPointsV2ByEntity(EntityAddr),
}

impl KeyPrefix {
    /// Returns a random `KeyPrefix`.
    #[cfg(any(feature = "testing", test))]
    pub fn random(rng: &mut TestRng) -> Self {
        match rng.gen_range(0..8) {
            0 => KeyPrefix::DelegatorBidAddrsByValidator(rng.gen()),
            1 => KeyPrefix::MessagesByEntity(rng.gen()),
            2 => KeyPrefix::MessagesByEntityAndTopic(rng.gen(), rng.gen()),
            3 => KeyPrefix::NamedKeysByEntity(rng.gen()),
            4 => KeyPrefix::GasBalanceHoldsByPurse(rng.gen()),
            5 => KeyPrefix::ProcessingBalanceHoldsByPurse(rng.gen()),
            6 => KeyPrefix::EntryPointsV1ByEntity(rng.gen()),
            7 => KeyPrefix::EntryPointsV2ByEntity(rng.gen()),
            _ => unreachable!(),
        }
    }
}

impl ToBytes for KeyPrefix {
    fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
        let mut result = bytesrepr::unchecked_allocate_buffer(self);
        self.write_bytes(&mut result)?;
        Ok(result)
    }

    fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Error> {
        match self {
            KeyPrefix::DelegatorBidAddrsByValidator(validator) => {
                writer.push(KeyTag::BidAddr as u8);
                writer.push(BidAddrTag::DelegatedAccount as u8);
                validator.write_bytes(writer)?;
            }
            KeyPrefix::MessagesByEntity(entity) => {
                writer.push(KeyTag::Message as u8);
                entity.write_bytes(writer)?;
            }
            KeyPrefix::MessagesByEntityAndTopic(entity, topic) => {
                writer.push(KeyTag::Message as u8);
                entity.write_bytes(writer)?;
                topic.write_bytes(writer)?;
            }
            KeyPrefix::NamedKeysByEntity(entity) => {
                writer.push(KeyTag::NamedKey as u8);
                entity.write_bytes(writer)?;
            }
            KeyPrefix::GasBalanceHoldsByPurse(uref) => {
                writer.push(KeyTag::BalanceHold as u8);
                writer.push(BalanceHoldAddrTag::Gas as u8);
                uref.write_bytes(writer)?;
            }
            KeyPrefix::ProcessingBalanceHoldsByPurse(uref) => {
                writer.push(KeyTag::BalanceHold as u8);
                writer.push(BalanceHoldAddrTag::Processing as u8);
                uref.write_bytes(writer)?;
            }
            KeyPrefix::EntryPointsV1ByEntity(entity) => {
                writer.push(KeyTag::EntryPoint as u8);
                writer.push(0);
                entity.write_bytes(writer)?;
            }
            KeyPrefix::EntryPointsV2ByEntity(entity) => {
                writer.push(KeyTag::EntryPoint as u8);
                writer.push(1);
                entity.write_bytes(writer)?;
            }
        }
        Ok(())
    }

    fn serialized_length(&self) -> usize {
        U8_SERIALIZED_LENGTH
            + match self {
                KeyPrefix::DelegatorBidAddrsByValidator(validator) => {
                    U8_SERIALIZED_LENGTH + validator.serialized_length()
                }
                KeyPrefix::MessagesByEntity(entity) => entity.serialized_length(),
                KeyPrefix::MessagesByEntityAndTopic(entity, topic) => {
                    entity.serialized_length() + topic.serialized_length()
                }
                KeyPrefix::NamedKeysByEntity(entity) => entity.serialized_length(),
                KeyPrefix::GasBalanceHoldsByPurse(uref) => {
                    U8_SERIALIZED_LENGTH + uref.serialized_length()
                }
                KeyPrefix::ProcessingBalanceHoldsByPurse(uref) => {
                    U8_SERIALIZED_LENGTH + uref.serialized_length()
                }
                KeyPrefix::EntryPointsV1ByEntity(entity) => {
                    U8_SERIALIZED_LENGTH + entity.serialized_length()
                }
                KeyPrefix::EntryPointsV2ByEntity(entity) => {
                    U8_SERIALIZED_LENGTH + entity.serialized_length()
                }
            }
    }
}

impl FromBytes for KeyPrefix {
    fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
        let (tag, remainder) = u8::from_bytes(bytes)?;
        let result = match tag {
            tag if tag == KeyTag::BidAddr as u8 => {
                let (bid_addr_tag, remainder) = u8::from_bytes(remainder)?;
                match bid_addr_tag {
                    tag if tag == BidAddrTag::DelegatedAccount as u8 => {
                        let (validator, remainder) = AccountHash::from_bytes(remainder)?;
                        (
                            KeyPrefix::DelegatorBidAddrsByValidator(validator),
                            remainder,
                        )
                    }
                    _ => return Err(bytesrepr::Error::Formatting),
                }
            }
            tag if tag == KeyTag::Message as u8 => {
                let (entity_addr, remainder) = EntityAddr::from_bytes(remainder)?;
                if remainder.is_empty() {
                    (KeyPrefix::MessagesByEntity(entity_addr), remainder)
                } else {
                    let (topic, remainder) = TopicNameHash::from_bytes(remainder)?;
                    (
                        KeyPrefix::MessagesByEntityAndTopic(entity_addr, topic),
                        remainder,
                    )
                }
            }
            tag if tag == KeyTag::NamedKey as u8 => {
                let (entity, remainder) = EntityAddr::from_bytes(remainder)?;
                (KeyPrefix::NamedKeysByEntity(entity), remainder)
            }
            tag if tag == KeyTag::BalanceHold as u8 => {
                let (balance_hold_addr_tag, remainder) = u8::from_bytes(remainder)?;
                let (uref, remainder) = URefAddr::from_bytes(remainder)?;
                match balance_hold_addr_tag {
                    tag if tag == BalanceHoldAddrTag::Gas as u8 => {
                        (KeyPrefix::GasBalanceHoldsByPurse(uref), remainder)
                    }
                    tag if tag == BalanceHoldAddrTag::Processing as u8 => {
                        (KeyPrefix::ProcessingBalanceHoldsByPurse(uref), remainder)
                    }
                    _ => return Err(bytesrepr::Error::Formatting),
                }
            }
            tag if tag == KeyTag::EntryPoint as u8 => {
                let (entry_point_type, remainder) = u8::from_bytes(remainder)?;
                let (entity, remainder) = EntityAddr::from_bytes(remainder)?;
                match entry_point_type {
                    0 => (KeyPrefix::EntryPointsV1ByEntity(entity), remainder),
                    1 => (KeyPrefix::EntryPointsV2ByEntity(entity), remainder),
                    _ => return Err(bytesrepr::Error::Formatting),
                }
            }
            _ => return Err(bytesrepr::Error::Formatting),
        };
        Ok(result)
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn bytesrepr_roundtrip() {
        let rng = &mut TestRng::new();

        let key_prefix = KeyPrefix::random(rng);
        bytesrepr::test_serialization_roundtrip(&key_prefix);
    }
}


================================================
FILE: binary_port/src/lib.rs
================================================
//! A Rust library for types used by the binary port of a casper node.

mod balance_response;
mod binary_message;
mod binary_response;
mod binary_response_and_request;
mod binary_response_header;
mod command;
mod dictionary_item_identifier;
mod entity_qualifier;
mod era_identifier;
mod error;
mod error_code;
mod get_request;
mod global_state_query_result;
mod information_request;
mod key_prefix;
mod minimal_block_info;
mod node_status;
mod purse_identifier;
pub mod record_id;
mod response_type;
mod speculative_execution_result;
mod state_request;
mod type_wrappers;

pub use balance_response::BalanceResponse;
pub use binary_message::{BinaryMessage, BinaryMessageCodec};
pub use binary_response::BinaryResponse;
pub use binary_response_and_request::BinaryResponseAndRequest;
pub use binary_response_header::BinaryResponseHeader;
pub use command::{Command, CommandHeader, CommandTag};
pub use dictionary_item_identifier::DictionaryItemIdentifier;
pub use entity_qualifier::GlobalStateEntityQualifier;
pub use era_identifier::EraIdentifier;
pub use error::Error;
pub use error_code::ErrorCode;
pub use get_request::GetRequest;
pub use global_state_query_result::GlobalStateQueryResult;
pub use information_request::{
    EntityIdentifier, InformationRequest, InformationRequestTag, PackageIdentifier,
};
pub use key_prefix::KeyPrefix;
pub use minimal_block_info::MinimalBlockInfo;
pub use node_status::NodeStatus;
pub use purse_identifier::PurseIdentifier;
pub use record_id::{RecordId, UnknownRecordId};
pub use response_type::{PayloadEntity, ResponseType};
pub use speculative_execution_result::SpeculativeExecutionResult;
pub use state_request::GlobalStateRequest;
pub use type_wrappers::{
    AccountInformation, AddressableEntityInformation, ConsensusStatus, ConsensusValidatorChanges,
    ContractInformation, DictionaryQueryResult, GetTrieFullResult, LastProgress, NetworkName,
    ReactorStateName, RewardResponse, TransactionWithExecutionInfo, Uptime, ValueWithProof,
};


================================================
FILE: binary_port/src/minimal_block_info.rs
================================================
use casper_types::{
    bytesrepr::{self, FromBytes, ToBytes},
    Block, BlockHash, Digest, EraId, PublicKey, Timestamp,
};
use serde::{Deserialize, Serialize};

#[cfg(test)]
use rand::Rng;

#[cfg(test)]
use casper_types::testing::TestRng;

/// Minimal info about a `Block` needed to satisfy the node status request.
#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct MinimalBlockInfo {
    hash: BlockHash,
    timestamp: Timestamp,
    era_id: EraId,
    height: u64,
    state_root_hash: Digest,
    creator: PublicKey,
}

impl MinimalBlockInfo {
    #[cfg(test)]
    pub(crate) fn random(rng: &mut TestRng) -> Self {
        Self {
            hash: BlockHash::random(rng),
            timestamp: Timestamp::random(rng),
            era_id: EraId::random(rng),
            height: rng.gen(),
            state_root_hash: Digest::random(rng),
            creator: PublicKey::random(rng),
        }
    }
}

impl FromBytes for MinimalBlockInfo {
    fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
        let (hash, remainder) = BlockHash::from_bytes(bytes)?;
        let (timestamp, remainder) = Timestamp::from_bytes(remainder)?;
        let (era_id, remainder) = EraId::from_bytes(remainder)?;
        let (height, remainder) = u64::from_bytes(remainder)?;
        let (state_root_hash, remainder) = Digest::from_bytes(remainder)?;
        let (creator, remainder) = PublicKey::from_bytes(remainder)?;
        Ok((
            MinimalBlockInfo {
                hash,
                timestamp,
                era_id,
                height,
                state_root_hash,
                creator,
            },
            remainder,
        ))
    }
}

impl ToBytes for MinimalBlockInfo {
    fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
        let mut buffer = bytesrepr::allocate_buffer(self)?;
        self.write_bytes(&mut buffer)?;
        Ok(buffer)
    }

    fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Error> {
        self.hash.write_bytes(writer)?;
        self.timestamp.write_bytes(writer)?;
        self.era_id.write_bytes(writer)?;
        self.height.write_bytes(writer)?;
        self.state_root_hash.write_bytes(writer)?;
        self.creator.write_bytes(writer)
    }

    fn serialized_length(&self) -> usize {
        self.hash.serialized_length()
            + self.timestamp.serialized_length()
            + self.era_id.serialized_length()
            + self.height.serialized_length()
            + self.state_root_hash.serialized_length()
            + self.creator.serialized_length()
    }
}

impl From<Block> for MinimalBlockInfo {
    fn from(block: Block) -> Self {
        let proposer = match &block {
            Block::V1(v1) => v1.proposer().clone(),
            Block::V2(v2) => v2.proposer().clone(),
        };

        MinimalBlockInfo {
            hash: *block.hash(),
            timestamp: block.timestamp(),
            era_id: block.era_id(),
            height: block.height(),
            state_root_hash: *block.state_root_hash(),
            creator: proposer,
        }
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    use casper_types::testing::TestRng;

    #[test]
    fn bytesrepr_roundtrip() {
        let rng = &mut TestRng::new();

        let val = MinimalBlockInfo::random(rng);
        bytesrepr::test_serialization_roundtrip(&val);
    }
}


================================================
FILE: binary_port/src/node_status.rs
================================================
use casper_types::{
    bytesrepr::{self, FromBytes, ToBytes},
    AvailableBlockRange, BlockHash, BlockSynchronizerStatus, Digest, NextUpgrade, Peers,
    ProtocolVersion, PublicKey, TimeDiff, Timestamp,
};

#[cfg(test)]
use casper_types::testing::TestRng;
#[cfg(test)]
use rand::Rng;
use serde::Serialize;

use crate::{minimal_block_info::MinimalBlockInfo, type_wrappers::ReactorStateName};

/// Status information about the node.
#[derive(Debug, PartialEq, Serialize)]
pub struct NodeStatus {
    /// The current protocol version.
    pub protocol_version: ProtocolVersion,
    /// The node ID and network address of each connected peer.
    pub peers: Peers,
    /// The compiled node version.
    pub build_version: String,
    /// The chainspec name.
    pub chainspec_name: String,
    /// The state root hash of the lowest block in the available block range.
    pub starting_state_root_hash: Digest,
    /// The minimal info of the last block from the linear chain.
    pub last_added_block_info: Option<MinimalBlockInfo>,
    /// Our public signing key.
    pub our_public_signing_key: Option<PublicKey>,
    /// The next round length if this node is a validator.
    pub round_length: Option<TimeDiff>,
    /// Information about the next scheduled upgrade.
    pub next_upgrade: Option<NextUpgrade>,
    /// Time that passed since the node has started.
    pub uptime: TimeDiff,
    /// The current state of node reactor.
    pub reactor_state: ReactorStateName,
    /// Timestamp of the last recorded progress in the reactor.
    pub last_progress: Timestamp,
    /// The available block range in storage.
    pub available_block_range: AvailableBlockRange,
    /// The status of the block synchronizer builders.
    pub block_sync: BlockSynchronizerStatus,
    /// The hash of the latest switch block.
    pub latest_switch_block_hash: Option<BlockHash>,
}

impl NodeStatus {
    #[cfg(test)]
    pub(crate) fn random(rng: &mut TestRng) -> Self {
        Self {
            protocol_version: ProtocolVersion::from_parts(rng.gen(), rng.gen(), rng.gen()),
            peers: Peers::random(rng),
            build_version: rng.random_string(5..10),
            chainspec_name: rng.random_string(5..10),
            starting_state_root_hash: Digest::random(rng),
            last_added_block_info: rng.gen::<bool>().then_some(MinimalBlockInfo::random(rng)),
            our_public_signing_key: rng.gen::<bool>().then_some(PublicKey::random(rng)),
            round_length: rng
                .gen::<bool>()
                .then_some(TimeDiff::from_millis(rng.gen())),
            next_upgrade: rng.gen::<bool>().then_some(NextUpgrade::random(rng)),
            uptime: TimeDiff::from_millis(rng.gen()),
            reactor_state: ReactorStateName::new(rng.random_string(5..10)),
            last_progress: Timestamp::random(rng),
            available_block_range: AvailableBlockRange::random(rng),
            block_sync: BlockSynchronizerStatus::random(rng),
            latest_switch_block_hash: rng.gen::<bool>().then_some(BlockHash::random(rng)),
        }
    }
}

impl FromBytes for NodeStatus {
    fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
        let (protocol_version, remainder) = ProtocolVersion::from_bytes(bytes)?;
        let (peers, remainder) = Peers::from_bytes(remainder)?;
        let (build_version, remainder) = String::from_bytes(remainder)?;
        let (chainspec_name, remainder) = String::from_bytes(remainder)?;
        let (starting_state_root_hash, remainder) = Digest::from_bytes(remainder)?;
        let (last_added_block_info, remainder) = Option::<MinimalBlockInfo>::from_bytes(remainder)?;
        let (our_public_signing_key, remainder) = Option::<PublicKey>::from_bytes(remainder)?;
        let (round_length, remainder) = Option::<TimeDiff>::from_bytes(remainder)?;
        let (next_upgrade, remainder) = Option::<NextUpgrade>::from_bytes(remainder)?;
        let (uptime, remainder) = TimeDiff::from_bytes(remainder)?;
        let (reactor_state, remainder) = ReactorStateName::from_bytes(remainder)?;
        let (last_progress, remainder) = Timestamp::from_bytes(remainder)?;
        let (available_block_range, remainder) = AvailableBlockRange::from_bytes(remainder)?;
        let (block_sync, remainder) = BlockSynchronizerStatus::from_bytes(remainder)?;
        let (latest_switch_block_hash, remainder) = Option::<BlockHash>::from_bytes(remainder)?;
        Ok((
            NodeStatus {
                protocol_version,
                peers,
                build_version,
                chainspec_name,
                starting_state_root_hash,
                last_added_block_info,
                our_public_signing_key,
                round_length,
                next_upgrade,
                uptime,
                reactor_state,
                last_progress,
                available_block_range,
                block_sync,
                latest_switch_block_hash,
            },
            remainder,
        ))
    }
}

impl ToBytes for NodeStatus {
    fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
        let mut buffer = bytesrepr::allocate_buffer(self)?;
        self.write_bytes(&mut buffer)?;
        Ok(buffer)
    }

    fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Error> {
        let NodeStatus {
            protocol_version,
            peers,
            build_version,
            chainspec_name,
            starting_state_root_hash,
            last_added_block_info,
            our_public_signing_key,
            round_length,
            next_upgrade,
            uptime,
            reactor_state,
            last_progress,
            available_block_range,
            block_sync,
            latest_switch_block_hash,
        } = self;
        protocol
Download .txt
gitextract_33g3gk_3/

├── .drone.yml
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   └── feedback.yml
│   ├── pull_request_template.md
│   └── workflows/
│       ├── casper-node.yml
│       ├── lints-md.yml
│       ├── publish-global-state-update-gen.yml
│       ├── publish-release-and-crates.yml
│       └── push-artifacts.yml
├── .gitignore
├── Cargo.toml
├── LICENSE
├── Makefile
├── README.md
├── binary_port/
│   ├── CHANGELOG.md
│   ├── Cargo.toml
│   ├── README.md
│   └── src/
│       ├── balance_response.rs
│       ├── binary_message.rs
│       ├── binary_response.rs
│       ├── binary_response_and_request.rs
│       ├── binary_response_header.rs
│       ├── command.rs
│       ├── dictionary_item_identifier.rs
│       ├── entity_qualifier.rs
│       ├── era_identifier.rs
│       ├── error.rs
│       ├── error_code.rs
│       ├── get_request.rs
│       ├── global_state_query_result.rs
│       ├── information_request.rs
│       ├── key_prefix.rs
│       ├── lib.rs
│       ├── minimal_block_info.rs
│       ├── node_status.rs
│       ├── purse_identifier.rs
│       ├── record_id.rs
│       ├── response_type.rs
│       ├── speculative_execution_result.rs
│       ├── state_request.rs
│       └── type_wrappers.rs
├── bors.toml
├── build_wasm_package.sh
├── cargo_casper/
│   ├── Cargo.toml
│   ├── build.rs
│   ├── project_template/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── src/
│   │   ├── cli/
│   │   │   ├── build.rs
│   │   │   ├── build_schema/
│   │   │   │   └── artifact.rs
│   │   │   ├── build_schema.rs
│   │   │   └── new.rs
│   │   ├── cli.rs
│   │   ├── compilation.rs
│   │   ├── main.rs
│   │   ├── utils/
│   │   │   └── command_runner.rs
│   │   └── utils.rs
│   └── test.py
├── ci/
│   ├── build_update_package.sh
│   ├── casper_updater/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       ├── dependent_file.rs
│   │       ├── main.rs
│   │       ├── package.rs
│   │       └── regex_data.rs
│   ├── check_cpu_features.sh
│   ├── ci.json
│   ├── cpu-features-1.4.13-release.txt
│   ├── markdown-link-check-config.json
│   ├── markdown_link_check.sh
│   ├── nctl_compile.sh
│   ├── nctl_upgrade.sh
│   ├── nctl_upgrade_stage.sh
│   ├── nightly-test.sh
│   ├── publish_deb_to_repo.sh
│   ├── publish_to_crates_io.sh
│   ├── test_casper-node_deb.sh
│   ├── test_deb_install.sh
│   └── upgrade_package_s3_storage.sh
├── docker_make.sh
├── execution_engine/
│   ├── CHANGELOG.md
│   ├── Cargo.toml
│   ├── README.md
│   ├── benches/
│   │   └── trie_bench.rs
│   └── src/
│       ├── bin/
│       │   └── run_wasm.rs
│       ├── engine_state/
│       │   ├── engine_config.rs
│       │   ├── error.rs
│       │   ├── execution_kind.rs
│       │   ├── mod.rs
│       │   └── wasm_v1.rs
│       ├── execution/
│       │   ├── error.rs
│       │   ├── executor.rs
│       │   └── mod.rs
│       ├── lib.rs
│       ├── resolvers/
│       │   ├── error.rs
│       │   ├── memory_resolver.rs
│       │   ├── mod.rs
│       │   ├── v1_function_index.rs
│       │   └── v1_resolver.rs
│       ├── runtime/
│       │   ├── args.rs
│       │   ├── auction_internal.rs
│       │   ├── cryptography.rs
│       │   ├── externals.rs
│       │   ├── handle_payment_internal.rs
│       │   ├── host_function_flag.rs
│       │   ├── mint_internal.rs
│       │   ├── mod.rs
│       │   ├── stack.rs
│       │   ├── standard_payment_internal.rs
│       │   ├── utils.rs
│       │   └── wasm_prep.rs
│       └── runtime_context/
│           ├── mod.rs
│           └── tests.rs
├── execution_engine_testing/
│   ├── test_support/
│   │   ├── CHANGELOG.md
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── build.rs
│   │   ├── src/
│   │   │   ├── chainspec_config.rs
│   │   │   ├── deploy_item.rs
│   │   │   ├── deploy_item_builder.rs
│   │   │   ├── execute_request_builder.rs
│   │   │   ├── genesis_config_builder.rs
│   │   │   ├── lib.rs
│   │   │   ├── step_request_builder.rs
│   │   │   ├── transfer_request_builder.rs
│   │   │   ├── upgrade_request_builder.rs
│   │   │   ├── utils.rs
│   │   │   └── wasm_test_builder.rs
│   │   └── tests/
│   │       └── version_numbers.rs
│   └── tests/
│       ├── Cargo.toml
│       ├── fixtures/
│       │   ├── call_stack_fixture/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── counter_contract/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── delegator_amount/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── disabled_versions/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── gh_3208/
│       │   │   ├── global_state/
│       │   │   │   └── data.lmdb
│       │   │   └── state.json
│       │   ├── gh_3710/
│       │   │   ├── global_state/
│       │   │   │   └── data.lmdb
│       │   │   └── state.json
│       │   ├── groups/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── release_1_2_0/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── release_1_3_1/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── release_1_4_2/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── release_1_4_3/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── release_1_4_4/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── release_1_4_5/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── release_1_5_8/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── three_version_fixture/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   ├── upgrade_thresholds/
│       │   │   ├── global_state/
│       │   │   │   ├── data.lmdb
│       │   │   │   └── data.lmdb-lock
│       │   │   └── state.json
│       │   └── validator_minimum_bid/
│       │       ├── global_state/
│       │       │   ├── data.lmdb
│       │       │   └── data.lmdb-lock
│       │       └── state.json
│       └── src/
│           ├── lib.rs
│           ├── lmdb_fixture.rs
│           ├── test/
│           │   ├── calling_packages_by_version_query.rs
│           │   ├── chainspec_registry.rs
│           │   ├── check_transfer_success.rs
│           │   ├── contract_api/
│           │   │   ├── account/
│           │   │   │   ├── associated_keys.rs
│           │   │   │   ├── authorized_keys.rs
│           │   │   │   ├── key_management_thresholds.rs
│           │   │   │   ├── mod.rs
│           │   │   │   ├── named_keys.rs
│           │   │   │   └── named_keys_stored.rs
│           │   │   ├── add_contract_version.rs
│           │   │   ├── auction.rs
│           │   │   ├── create_purse.rs
│           │   │   ├── dictionary.rs
│           │   │   ├── generic_hash.rs
│           │   │   ├── get_arg.rs
│           │   │   ├── get_block_info.rs
│           │   │   ├── get_blocktime.rs
│           │   │   ├── get_call_stack.rs
│           │   │   ├── get_caller.rs
│           │   │   ├── get_phase.rs
│           │   │   ├── list_authorization_keys.rs
│           │   │   ├── list_named_keys.rs
│           │   │   ├── main_purse.rs
│           │   │   ├── mint_purse.rs
│           │   │   ├── mod.rs
│           │   │   ├── multisig_authorization.rs
│           │   │   ├── named_dictionaries.rs
│           │   │   ├── recover_secp256k1.rs
│           │   │   ├── revert.rs
│           │   │   ├── runtime.rs
│           │   │   ├── subcall.rs
│           │   │   ├── transfer.rs
│           │   │   ├── transfer_cached.rs
│           │   │   └── verify_signature.rs
│           │   ├── contract_context.rs
│           │   ├── contract_messages.rs
│           │   ├── counter_factory.rs
│           │   ├── deploy/
│           │   │   ├── context_association.rs
│           │   │   ├── mod.rs
│           │   │   ├── non_standard_payment.rs
│           │   │   ├── preconditions.rs
│           │   │   ├── receipts.rs
│           │   │   └── stored_contracts.rs
│           │   ├── explorer/
│           │   │   ├── faucet.rs
│           │   │   ├── faucet_test_helpers.rs
│           │   │   └── mod.rs
│           │   ├── get_balance.rs
│           │   ├── groups.rs
│           │   ├── host_function_costs.rs
│           │   ├── manage_groups.rs
│           │   ├── mod.rs
│           │   ├── private_chain/
│           │   │   ├── fees_accumulation.rs
│           │   │   ├── management.rs
│           │   │   ├── restricted_auction.rs
│           │   │   └── unrestricted_transfers.rs
│           │   ├── private_chain.rs
│           │   ├── regression/
│           │   │   ├── ee_1045.rs
│           │   │   ├── ee_1071.rs
│           │   │   ├── ee_1103.rs
│           │   │   ├── ee_1119.rs
│           │   │   ├── ee_1120.rs
│           │   │   ├── ee_1129.rs
│           │   │   ├── ee_1152.rs
│           │   │   ├── ee_1160.rs
│           │   │   ├── ee_1163.rs
│           │   │   ├── ee_1174.rs
│           │   │   ├── ee_1217.rs
│           │   │   ├── ee_1225.rs
│           │   │   ├── ee_221.rs
│           │   │   ├── ee_401.rs
│           │   │   ├── ee_441.rs
│           │   │   ├── ee_460.rs
│           │   │   ├── ee_468.rs
│           │   │   ├── ee_470.rs
│           │   │   ├── ee_532.rs
│           │   │   ├── ee_536.rs
│           │   │   ├── ee_539.rs
│           │   │   ├── ee_549.rs
│           │   │   ├── ee_550.rs
│           │   │   ├── ee_572.rs
│           │   │   ├── ee_584.rs
│           │   │   ├── ee_597.rs
│           │   │   ├── ee_598.rs
│           │   │   ├── ee_599.rs
│           │   │   ├── ee_601.rs
│           │   │   ├── ee_771.rs
│           │   │   ├── ee_890.rs
│           │   │   ├── ee_966.rs
│           │   │   ├── gh_1470.rs
│           │   │   ├── gh_1688.rs
│           │   │   ├── gh_1902.rs
│           │   │   ├── gh_1931.rs
│           │   │   ├── gh_2280.rs
│           │   │   ├── gh_3097.rs
│           │   │   ├── gh_3208.rs
│           │   │   ├── gh_3710.rs
│           │   │   ├── gh_4898.rs
│           │   │   ├── gov_116.rs
│           │   │   ├── gov_42.rs
│           │   │   ├── gov_427.rs
│           │   │   ├── gov_74.rs
│           │   │   ├── gov_89_regression.rs
│           │   │   ├── host_function_metrics_size_and_gas_cost.rs
│           │   │   ├── mod.rs
│           │   │   ├── regression_20210707.rs
│           │   │   ├── regression_20210831.rs
│           │   │   ├── regression_20210924.rs
│           │   │   ├── regression_20211110.rs
│           │   │   ├── regression_20220119.rs
│           │   │   ├── regression_20220204.rs
│           │   │   ├── regression_20220207.rs
│           │   │   ├── regression_20220208.rs
│           │   │   ├── regression_20220211.rs
│           │   │   ├── regression_20220217.rs
│           │   │   ├── regression_20220221.rs
│           │   │   ├── regression_20220222.rs
│           │   │   ├── regression_20220223.rs
│           │   │   ├── regression_20220224.rs
│           │   │   ├── regression_20220303.rs
│           │   │   ├── regression_20220727.rs
│           │   │   ├── regression_20240105.rs
│           │   │   ├── regression_20250812.rs
│           │   │   ├── slow_input.rs
│           │   │   ├── test_utils.rs
│           │   │   └── transforms_must_be_ordered.rs
│           │   ├── stack_overflow.rs
│           │   ├── step.rs
│           │   ├── storage_costs.rs
│           │   ├── system_contracts/
│           │   │   ├── auction/
│           │   │   │   ├── bids.rs
│           │   │   │   ├── distribute.rs
│           │   │   │   ├── mod.rs
│           │   │   │   └── reservations.rs
│           │   │   ├── auction_bidding.rs
│           │   │   ├── genesis.rs
│           │   │   ├── handle_payment/
│           │   │   │   ├── finalize_payment.rs
│           │   │   │   ├── get_payment_purse.rs
│           │   │   │   ├── mod.rs
│           │   │   │   └── refund_purse.rs
│           │   │   ├── mint.rs
│           │   │   ├── mod.rs
│           │   │   ├── standard_payment.rs
│           │   │   └── upgrade.rs
│           │   ├── system_costs.rs
│           │   ├── tutorial/
│           │   │   ├── counter.rs
│           │   │   └── hello_world.rs
│           │   ├── tutorial.rs
│           │   ├── upgrade.rs
│           │   ├── vm2_tests.rs
│           │   └── wasmless_transfer.rs
│           └── wasm_utils.rs
├── executor/
│   ├── wasm/
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   ├── install.rs
│   │   │   ├── lib.rs
│   │   │   └── system.rs
│   │   └── tests/
│   │       └── integration.rs
│   ├── wasm_common/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── chain_utils.rs
│   │       ├── entry_point.rs
│   │       ├── env_info.rs
│   │       ├── error.rs
│   │       ├── flags.rs
│   │       ├── keyspace.rs
│   │       └── lib.rs
│   ├── wasm_host/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── abi.rs
│   │       ├── context.rs
│   │       ├── host.rs
│   │       ├── lib.rs
│   │       └── system.rs
│   ├── wasm_interface/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── executor.rs
│   │       └── lib.rs
│   └── wasmer_backend/
│       ├── Cargo.toml
│       └── src/
│           ├── imports.rs
│           ├── lib.rs
│           ├── middleware/
│           │   ├── gas_metering.rs
│           │   └── gatekeeper.rs
│           └── middleware.rs
├── generate-chainspec.sh
├── node/
│   ├── BINARY_PORT_PROTOCOL.md
│   ├── CHANGELOG.md
│   ├── Cargo.toml
│   ├── README.md
│   ├── build.rs
│   ├── proptest-regressions/
│   │   └── components/
│   │       └── diagnostics_port/
│   │           └── stop_at.txt
│   └── src/
│       ├── app/
│       │   └── main.rs
│       ├── cli/
│       │   └── arglang.rs
│       ├── cli.rs
│       ├── components/
│       │   ├── binary_port/
│       │   │   ├── config.rs
│       │   │   ├── connection_terminator.rs
│       │   │   ├── error.rs
│       │   │   ├── event.rs
│       │   │   ├── metrics.rs
│       │   │   ├── rate_limiter.rs
│       │   │   └── tests.rs
│       │   ├── binary_port.rs
│       │   ├── block_accumulator/
│       │   │   ├── block_acceptor.rs
│       │   │   ├── config.rs
│       │   │   ├── error.rs
│       │   │   ├── event.rs
│       │   │   ├── leap_instruction.rs
│       │   │   ├── local_tip_identifier.rs
│       │   │   ├── metrics.rs
│       │   │   ├── sync_identifier.rs
│       │   │   ├── sync_instruction.rs
│       │   │   └── tests.rs
│       │   ├── block_accumulator.rs
│       │   ├── block_synchronizer/
│       │   │   ├── block_acquisition.rs
│       │   │   ├── block_acquisition_action.rs
│       │   │   ├── block_builder/
│       │   │   │   ├── latch.rs
│       │   │   │   └── tests.rs
│       │   │   ├── block_builder.rs
│       │   │   ├── block_synchronizer_progress.rs
│       │   │   ├── config.rs
│       │   │   ├── error.rs
│       │   │   ├── event.rs
│       │   │   ├── execution_results_acquisition/
│       │   │   │   └── tests.rs
│       │   │   ├── execution_results_acquisition.rs
│       │   │   ├── global_state_synchronizer/
│       │   │   │   └── tests.rs
│       │   │   ├── global_state_synchronizer.rs
│       │   │   ├── metrics.rs
│       │   │   ├── need_next.rs
│       │   │   ├── peer_list/
│       │   │   │   └── tests.rs
│       │   │   ├── peer_list.rs
│       │   │   ├── signature_acquisition.rs
│       │   │   ├── tests/
│       │   │   │   └── test_utils.rs
│       │   │   ├── tests.rs
│       │   │   ├── transaction_acquisition/
│       │   │   │   └── tests.rs
│       │   │   ├── transaction_acquisition.rs
│       │   │   ├── trie_accumulator/
│       │   │   │   └── tests.rs
│       │   │   └── trie_accumulator.rs
│       │   ├── block_synchronizer.rs
│       │   ├── block_validator/
│       │   │   ├── config.rs
│       │   │   ├── event.rs
│       │   │   ├── state.rs
│       │   │   └── tests.rs
│       │   ├── block_validator.rs
│       │   ├── consensus/
│       │   │   ├── cl_context.rs
│       │   │   ├── config.rs
│       │   │   ├── consensus_protocol.rs
│       │   │   ├── era_supervisor/
│       │   │   │   ├── debug.rs
│       │   │   │   └── era.rs
│       │   │   ├── era_supervisor.rs
│       │   │   ├── error.rs
│       │   │   ├── highway_core/
│       │   │   │   ├── active_validator.rs
│       │   │   │   ├── endorsement.rs
│       │   │   │   ├── evidence.rs
│       │   │   │   ├── finality_detector/
│       │   │   │   │   └── horizon.rs
│       │   │   │   ├── finality_detector.rs
│       │   │   │   ├── highway/
│       │   │   │   │   └── vertex.rs
│       │   │   │   ├── highway.rs
│       │   │   │   ├── highway_testing.rs
│       │   │   │   ├── state/
│       │   │   │   │   ├── block.rs
│       │   │   │   │   ├── index_panorama.rs
│       │   │   │   │   ├── panorama.rs
│       │   │   │   │   ├── params.rs
│       │   │   │   │   ├── tallies.rs
│       │   │   │   │   ├── tests.rs
│       │   │   │   │   └── unit.rs
│       │   │   │   ├── state.rs
│       │   │   │   ├── synchronizer/
│       │   │   │   │   └── tests.rs
│       │   │   │   ├── synchronizer.rs
│       │   │   │   └── test_macros.rs
│       │   │   ├── highway_core.rs
│       │   │   ├── leader_sequence.rs
│       │   │   ├── metrics.rs
│       │   │   ├── protocols/
│       │   │   │   ├── common.rs
│       │   │   │   ├── highway/
│       │   │   │   │   ├── config.rs
│       │   │   │   │   ├── participation.rs
│       │   │   │   │   ├── round_success_meter/
│       │   │   │   │   │   ├── config.rs
│       │   │   │   │   │   └── tests.rs
│       │   │   │   │   ├── round_success_meter.rs
│       │   │   │   │   └── tests.rs
│       │   │   │   ├── highway.rs
│       │   │   │   ├── zug/
│       │   │   │   │   ├── config.rs
│       │   │   │   │   ├── des_testing.rs
│       │   │   │   │   ├── fault.rs
│       │   │   │   │   ├── message.rs
│       │   │   │   │   ├── params.rs
│       │   │   │   │   ├── participation.rs
│       │   │   │   │   ├── proposal.rs
│       │   │   │   │   ├── round.rs
│       │   │   │   │   └── tests.rs
│       │   │   │   └── zug.rs
│       │   │   ├── protocols.rs
│       │   │   ├── tests/
│       │   │   │   ├── consensus_des_testing.rs
│       │   │   │   ├── queue.rs
│       │   │   │   └── utils.rs
│       │   │   ├── tests.rs
│       │   │   ├── traits.rs
│       │   │   ├── utils/
│       │   │   │   ├── validators.rs
│       │   │   │   ├── wal.rs
│       │   │   │   └── weight.rs
│       │   │   ├── utils.rs
│       │   │   └── validator_change.rs
│       │   ├── consensus.rs
│       │   ├── contract_runtime/
│       │   │   ├── config.rs
│       │   │   ├── error.rs
│       │   │   ├── event.rs
│       │   │   ├── exec_queue.rs
│       │   │   ├── metrics.rs
│       │   │   ├── operations/
│       │   │   │   └── wasm_v2_request.rs
│       │   │   ├── operations.rs
│       │   │   ├── rewards/
│       │   │   │   └── tests.rs
│       │   │   ├── rewards.rs
│       │   │   ├── tests.rs
│       │   │   ├── types.rs
│       │   │   └── utils.rs
│       │   ├── contract_runtime.rs
│       │   ├── diagnostics_port/
│       │   │   ├── command.rs
│       │   │   ├── stop_at.rs
│       │   │   ├── tasks.rs
│       │   │   └── util.rs
│       │   ├── diagnostics_port.rs
│       │   ├── event_stream_server/
│       │   │   ├── config.rs
│       │   │   ├── event.rs
│       │   │   ├── event_indexer.rs
│       │   │   ├── http_server.rs
│       │   │   ├── sse_server.rs
│       │   │   └── tests.rs
│       │   ├── event_stream_server.rs
│       │   ├── fetcher/
│       │   │   ├── config.rs
│       │   │   ├── error.rs
│       │   │   ├── event.rs
│       │   │   ├── fetch_item.rs
│       │   │   ├── fetch_response.rs
│       │   │   ├── fetched_data.rs
│       │   │   ├── fetcher_impls/
│       │   │   │   ├── approvals_hashes_fetcher.rs
│       │   │   │   ├── block_execution_results_or_chunk_fetcher.rs
│       │   │   │   ├── block_fetcher.rs
│       │   │   │   ├── block_header_fetcher.rs
│       │   │   │   ├── finality_signature_fetcher.rs
│       │   │   │   ├── legacy_deploy_fetcher.rs
│       │   │   │   ├── sync_leap_fetcher.rs
│       │   │   │   ├── transaction_fetcher.rs
│       │   │   │   └── trie_or_chunk_fetcher.rs
│       │   │   ├── fetcher_impls.rs
│       │   │   ├── item_fetcher.rs
│       │   │   ├── item_handle.rs
│       │   │   ├── metrics.rs
│       │   │   ├── tag.rs
│       │   │   └── tests.rs
│       │   ├── fetcher.rs
│       │   ├── gossiper/
│       │   │   ├── config.rs
│       │   │   ├── error.rs
│       │   │   ├── event.rs
│       │   │   ├── gossip_item.rs
│       │   │   ├── gossip_table.rs
│       │   │   ├── item_provider.rs
│       │   │   ├── message.rs
│       │   │   ├── metrics.rs
│       │   │   ├── provider_impls/
│       │   │   │   ├── address_provider.rs
│       │   │   │   ├── block_provider.rs
│       │   │   │   ├── finality_signature_provider.rs
│       │   │   │   └── transaction_provider.rs
│       │   │   ├── provider_impls.rs
│       │   │   └── tests.rs
│       │   ├── gossiper.rs
│       │   ├── in_memory_network.rs
│       │   ├── metrics.rs
│       │   ├── network/
│       │   │   ├── bincode_format.rs
│       │   │   ├── blocklist.rs
│       │   │   ├── chain_info.rs
│       │   │   ├── config.rs
│       │   │   ├── counting_format.rs
│       │   │   ├── error.rs
│       │   │   ├── event.rs
│       │   │   ├── gossiped_address.rs
│       │   │   ├── health.rs
│       │   │   ├── identity.rs
│       │   │   ├── insights.rs
│       │   │   ├── limiter.rs
│       │   │   ├── message.rs
│       │   │   ├── message_pack_format.rs
│       │   │   ├── metrics.rs
│       │   │   ├── outgoing.rs
│       │   │   ├── symmetry.rs
│       │   │   ├── tasks.rs
│       │   │   └── tests.rs
│       │   ├── network.rs
│       │   ├── rest_server/
│       │   │   ├── config.rs
│       │   │   ├── docs.rs
│       │   │   ├── event.rs
│       │   │   ├── filters.rs
│       │   │   ├── http_server.rs
│       │   │   └── info.rs
│       │   ├── rest_server.rs
│       │   ├── shutdown_trigger.rs
│       │   ├── storage/
│       │   │   ├── config.rs
│       │   │   ├── disjoint_sequences.rs
│       │   │   ├── error.rs
│       │   │   ├── event.rs
│       │   │   ├── metrics.rs
│       │   │   ├── object_pool.rs
│       │   │   ├── tests.rs
│       │   │   └── utils.rs
│       │   ├── storage.rs
│       │   ├── sync_leaper/
│       │   │   ├── error.rs
│       │   │   ├── event.rs
│       │   │   ├── leap_activity.rs
│       │   │   ├── leap_state.rs
│       │   │   ├── metrics.rs
│       │   │   └── tests.rs
│       │   ├── sync_leaper.rs
│       │   ├── transaction_acceptor/
│       │   │   ├── config.rs
│       │   │   ├── error.rs
│       │   │   ├── event.rs
│       │   │   ├── metrics.rs
│       │   │   └── tests.rs
│       │   ├── transaction_acceptor.rs
│       │   ├── transaction_buffer/
│       │   │   ├── config.rs
│       │   │   ├── event.rs
│       │   │   ├── metrics.rs
│       │   │   └── tests.rs
│       │   ├── transaction_buffer.rs
│       │   └── upgrade_watcher.rs
│       ├── components.rs
│       ├── config_migration.rs
│       ├── data_migration.rs
│       ├── effect/
│       │   ├── announcements.rs
│       │   ├── diagnostics_port.rs
│       │   ├── incoming.rs
│       │   └── requests.rs
│       ├── effect.rs
│       ├── failpoints.rs
│       ├── failpoints_disabled.rs
│       ├── lib.rs
│       ├── logging.rs
│       ├── protocol.rs
│       ├── reactor/
│       │   ├── event_queue_metrics.rs
│       │   ├── main_reactor/
│       │   │   ├── catch_up.rs
│       │   │   ├── config.rs
│       │   │   ├── control.rs
│       │   │   ├── error.rs
│       │   │   ├── event.rs
│       │   │   ├── fetchers.rs
│       │   │   ├── genesis_instruction.rs
│       │   │   ├── keep_up.rs
│       │   │   ├── memory_metrics.rs
│       │   │   ├── reactor_state.rs
│       │   │   ├── tests/
│       │   │   │   ├── auction.rs
│       │   │   │   ├── binary_port.rs
│       │   │   │   ├── configs_override.rs
│       │   │   │   ├── consensus_rules.rs
│       │   │   │   ├── fixture.rs
│       │   │   │   ├── gas_price.rs
│       │   │   │   ├── initial_stakes.rs
│       │   │   │   ├── network_general.rs
│       │   │   │   ├── rewards.rs
│       │   │   │   ├── switch_blocks.rs
│       │   │   │   ├── transaction_scenario/
│       │   │   │   │   ├── asertions.rs
│       │   │   │   │   └── utils.rs
│       │   │   │   ├── transaction_scenario.rs
│       │   │   │   └── transactions.rs
│       │   │   ├── tests.rs
│       │   │   ├── upgrade_shutdown.rs
│       │   │   ├── upgrading_instruction.rs
│       │   │   ├── utils.rs
│       │   │   └── validate.rs
│       │   ├── main_reactor.rs
│       │   └── queue_kind.rs
│       ├── reactor.rs
│       ├── testing/
│       │   ├── condition_check_reactor.rs
│       │   ├── fake_transaction_acceptor.rs
│       │   ├── filter_reactor.rs
│       │   ├── network.rs
│       │   └── test_clock.rs
│       ├── testing.rs
│       ├── tls.rs
│       ├── types/
│       │   ├── appendable_block.rs
│       │   ├── block/
│       │   │   ├── approvals_hashes.rs
│       │   │   ├── block_execution_results_or_chunk.rs
│       │   │   ├── block_execution_results_or_chunk_id.rs
│       │   │   ├── block_payload.rs
│       │   │   ├── block_with_metadata.rs
│       │   │   ├── executable_block.rs
│       │   │   ├── finalized_block.rs
│       │   │   ├── invalid_proposal_error.rs
│       │   │   ├── meta_block/
│       │   │   │   ├── merge_mismatch_error.rs
│       │   │   │   └── state.rs
│       │   │   └── meta_block.rs
│       │   ├── block.rs
│       │   ├── chunkable.rs
│       │   ├── exit_code.rs
│       │   ├── max_ttl.rs
│       │   ├── node_config.rs
│       │   ├── node_id.rs
│       │   ├── status_feed.rs
│       │   ├── sync_leap.rs
│       │   ├── sync_leap_validation_metadata.rs
│       │   ├── transaction/
│       │   │   ├── arg_handling.rs
│       │   │   ├── deploy/
│       │   │   │   └── legacy_deploy.rs
│       │   │   ├── deploy.rs
│       │   │   ├── fields_container.rs
│       │   │   ├── initiator_addr_and_secret_key.rs
│       │   │   ├── meta_transaction/
│       │   │   │   ├── meta_deploy.rs
│       │   │   │   ├── meta_transaction_v1.rs
│       │   │   │   └── transaction_header.rs
│       │   │   ├── meta_transaction.rs
│       │   │   ├── transaction_footprint.rs
│       │   │   └── transaction_v1_builder.rs
│       │   ├── transaction.rs
│       │   ├── validator_matrix.rs
│       │   └── value_or_chunk.rs
│       ├── types.rs
│       ├── utils/
│       │   ├── block_signatures.rs
│       │   ├── chain_specification/
│       │   │   ├── error.rs
│       │   │   └── parse_toml.rs
│       │   ├── chain_specification.rs
│       │   ├── config_specification.rs
│       │   ├── display_error.rs
│       │   ├── ds.rs
│       │   ├── external.rs
│       │   ├── fmt_limit.rs
│       │   ├── opt_display.rs
│       │   ├── rlimit.rs
│       │   ├── round_robin.rs
│       │   ├── specimen.rs
│       │   ├── umask.rs
│       │   └── work_queue.rs
│       └── utils.rs
├── resources/
│   ├── README.md
│   ├── integration-test/
│   │   ├── accounts.toml
│   │   ├── chainspec.toml
│   │   ├── config-example.toml
│   │   └── global_state.toml
│   ├── local/
│   │   ├── accounts.toml
│   │   ├── chainspec.toml.in
│   │   ├── config.toml
│   │   └── secret_keys/
│   │       ├── faucet.pem
│   │       ├── node-1.pem
│   │       ├── node-2.pem
│   │       ├── node-3.pem
│   │       ├── node-4.pem
│   │       └── node-5.pem
│   ├── mainnet/
│   │   ├── accounts.toml
│   │   ├── chainspec.toml
│   │   ├── config-example.toml
│   │   └── global_state.toml
│   ├── production/
│   │   ├── accounts.toml
│   │   ├── chainspec.toml
│   │   └── config-example.toml
│   ├── test/
│   │   ├── rest_schema_chainspec_bytes.json
│   │   ├── rest_schema_status.json
│   │   ├── rest_schema_validator_changes.json
│   │   ├── sse_data_schema.json
│   │   └── storage/
│   │       └── 1.5.2/
│   │           └── storage-1/
│   │               ├── storage/
│   │               │   └── casper-net-1/
│   │               │       ├── data.lmdb
│   │               │       ├── data.lmdb-lock
│   │               │       ├── sse_index
│   │               │       ├── storage.lmdb
│   │               │       └── storage.lmdb-lock
│   │               └── storage_info.json
│   └── testnet/
│       ├── accounts.toml
│       ├── chainspec.toml
│       ├── config-example.toml
│       └── global_state.toml
├── rust-toolchain.toml
├── rustfmt.toml
├── smart_contracts/
│   ├── contract/
│   │   ├── CHANGELOG.md
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── src/
│   │   │   ├── contract_api/
│   │   │   │   ├── account.rs
│   │   │   │   ├── cryptography.rs
│   │   │   │   ├── entity.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── runtime.rs
│   │   │   │   ├── storage.rs
│   │   │   │   └── system.rs
│   │   │   ├── ext_ffi.rs
│   │   │   ├── lib.rs
│   │   │   ├── no_std_handlers.rs
│   │   │   └── unwrap_or_revert.rs
│   │   └── tests/
│   │       └── version_numbers.rs
│   ├── contracts/
│   │   ├── .cargo/
│   │   │   └── config.toml
│   │   ├── SRE/
│   │   │   ├── create-test-node-01/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── create-test-node-02/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── create-test-node-03/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   └── create-test-node-shared/
│   │   │       ├── Cargo.toml
│   │   │       └── src/
│   │   │           └── lib.rs
│   │   ├── admin/
│   │   │   ├── disable-contract/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   └── enable-contract/
│   │   │       ├── Cargo.toml
│   │   │       └── src/
│   │   │           └── main.rs
│   │   ├── bench/
│   │   │   ├── create-accounts/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── create-purses/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── transfer-to-existing-account/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   └── transfer-to-purse/
│   │   │       ├── Cargo.toml
│   │   │       └── src/
│   │   │           └── main.rs
│   │   ├── client/
│   │   │   ├── activate-bid/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── add-bid/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── add-reservations/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── burn/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── call-contract/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── call-package-version-by-hash/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── cancel-reservations/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── change_bid_public_key/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── delegate/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── disable-contract-by-contract-hash/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── named-purse-payment/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── non-standard-payment/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── redelegate/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── revert/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── transfer-to-account/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   ├── transfer-to-account-u512/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   ├── transfer-to-named-purse/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── transfer-to-public-key/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── undelegate/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   └── withdraw-bid/
│   │   │       ├── Cargo.toml
│   │   │       └── src/
│   │   │           └── main.rs
│   │   ├── explorer/
│   │   │   ├── faucet/
│   │   │   │   ├── Cargo.toml
│   │   │   │   ├── README.md
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   └── faucet-stored/
│   │   │       ├── Cargo.toml
│   │   │       └── src/
│   │   │           └── main.rs
│   │   ├── nctl/
│   │   │   └── nctl-dictionary/
│   │   │       ├── Cargo.toml
│   │   │       └── src/
│   │   │           └── main.rs
│   │   ├── profiling/
│   │   │   ├── host-function-metrics/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   └── state-initializer/
│   │   │       ├── Cargo.toml
│   │   │       └── src/
│   │   │           └── main.rs
│   │   ├── test/
│   │   │   ├── add-associated-key/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── add-gas-subcall/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── add-update-associated-key/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── auction-bidding/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── auction-bids/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── blake2b/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── contract-context/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── contract-funds/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── contract-funds-call/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── contract-messages-emitter/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── contract-messages-from-account/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── contract-messages-upgrader/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── counter-factory/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── create-purse-01/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   ├── deserialize-error/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── dictionary/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   ├── dictionary-call/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   ├── dictionary-item-key-length/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── dictionary-read/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── do-nothing/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── do-nothing-stored/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── do-nothing-stored-caller/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── do-nothing-stored-upgrader/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-1071-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── lib.rs
│   │   │   │       └── main.rs
│   │   │   ├── ee-1129-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-1217-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-1225-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-221-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-401-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-401-regression-call/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-441-rng-state/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-460-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-532-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-536-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-539-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-549-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-550-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-572-regression-create/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-572-regression-escalate/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-584-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-597-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-598-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-599-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-601-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-771-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ee-966-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── endless-loop/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── endless-loop-with-effects/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── expensive-calculation/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── finalize-payment/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── generic-hash/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── get-arg/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── get-blockinfo/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── get-blocktime/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── get-call-stack-call-recursive-subcall/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── get-call-stack-recursive-subcall/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── lib.rs
│   │   │   │       └── main.rs
│   │   │   ├── get-caller/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── get-caller-subcall/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── get-payment-purse/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── get-phase/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── get-phase-payment/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── gh-1470-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   ├── gh-1470-regression-call/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   ├── gh-1688-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── gh-2280-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── gh-2280-regression-call/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── gh-3097-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── gh-3097-regression-call/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── gh-4771-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── gh-4898-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── gh-5058-regression/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── groups/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── host-function-costs/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── key-management-thresholds/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── key-putter/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── list-authorization-keys/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── list-named-keys/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── load-caller-info/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── main-purse/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── manage-groups/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── measure-gas-subcall/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── mint-purse/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── mint-transfer-proxy/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── multisig-authorization/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── named-dictionary-test/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── named-keys/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── named-keys-stored/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── named-keys-stored-call/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── new-named-uref/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ordered-transforms/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── overwrite-uref-content/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── payment-purse-persist/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── purse-holder-stored/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── purse-holder-stored-caller/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── purse-holder-stored-upgrader/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── purse-holder-stored-upgrader-v2-2/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── random-bytes/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── random-bytes-payment/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── read-from-key/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── recover-secp256k1/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── refund-purse/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-20210707/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-20210831/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-20220204/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-20220204-call/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-20220204-nontrivial/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-20220207/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-20220208/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-20220211/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-20220211-call/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-20220222/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-add-bid/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-delegate/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-payment/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression-transfer/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression_20211110/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression_20220119/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── regression_20240105/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── remove-associated-key/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── ret-uref/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── set-action-thresholds/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── staking/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   ├── staking-stored/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── storage-costs/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── system-contract-hashes/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── test-payment-stored/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── transfer-main-purse-to-new-purse/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── transfer-main-purse-to-two-purses/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── transfer-purse-to-account/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   ├── transfer-purse-to-account-stored/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── transfer-purse-to-account-with-id/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   ├── transfer-purse-to-accounts/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   ├── transfer-purse-to-accounts-stored/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── transfer-purse-to-accounts-subcall/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── bin/
│   │   │   │       │   └── main.rs
│   │   │   │       └── lib.rs
│   │   │   ├── transfer-purse-to-public-key/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── transfer-purse-to-purse/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── update-associated-key/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── upgrade-threshold/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── upgrade-threshold-upgrader/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   └── verify-signature/
│   │   │       ├── Cargo.toml
│   │   │       └── src/
│   │   │           └── main.rs
│   │   ├── tutorial/
│   │   │   ├── counter-installer/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   ├── hello-world/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── main.rs
│   │   │   └── increment-counter/
│   │   │       ├── Cargo.toml
│   │   │       └── src/
│   │   │           └── main.rs
│   │   └── vm2/
│   │       ├── vm2-cep18/
│   │       │   ├── Cargo.toml
│   │       │   ├── build.rs
│   │       │   ├── src/
│   │       │   │   └── lib.rs
│   │       │   └── tests/
│   │       │       └── integration._rs
│   │       ├── vm2-cep18-caller/
│   │       │   ├── Cargo.toml
│   │       │   ├── build.rs
│   │       │   └── src/
│   │       │       └── lib.rs
│   │       ├── vm2-flipper/
│   │       │   ├── Cargo.toml
│   │       │   ├── build.rs
│   │       │   └── src/
│   │       │       └── lib.rs
│   │       ├── vm2-harness/
│   │       │   ├── Cargo.toml
│   │       │   ├── build.rs
│   │       │   └── src/
│   │       │       ├── contracts/
│   │       │       │   ├── harness.rs
│   │       │       │   ├── no_fallback.rs
│   │       │       │   └── token_owner.rs
│   │       │       ├── contracts.rs
│   │       │       ├── lib.rs
│   │       │       ├── main.rs
│   │       │       └── traits.rs
│   │       ├── vm2-host/
│   │       │   ├── Cargo.toml
│   │       │   ├── build.rs
│   │       │   └── src/
│   │       │       └── lib.rs
│   │       ├── vm2-legacy-counter-proxy/
│   │       │   ├── Cargo.toml
│   │       │   ├── build.rs
│   │       │   └── src/
│   │       │       └── lib.rs
│   │       ├── vm2-trait/
│   │       │   ├── Cargo.toml
│   │       │   ├── build.rs
│   │       │   └── src/
│   │       │       └── lib.rs
│   │       ├── vm2-upgradable/
│   │       │   ├── Cargo.toml
│   │       │   ├── build.rs
│   │       │   └── src/
│   │       │       └── lib.rs
│   │       └── vm2-upgradable-v2/
│   │           ├── Cargo.toml
│   │           ├── build.rs
│   │           └── src/
│   │               └── lib.rs
│   ├── macros/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── lib.rs
│   │       └── utils.rs
│   ├── rust-toolchain
│   ├── sdk/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── abi.rs
│   │       ├── abi_generator.rs
│   │       ├── casper/
│   │       │   └── native.rs
│   │       ├── casper.rs
│   │       ├── cli/
│   │       │   └── validation.rs
│   │       ├── collections/
│   │       │   ├── iterable_map.rs
│   │       │   ├── iterable_set.rs
│   │       │   ├── lookup_key.rs
│   │       │   ├── map.rs
│   │       │   ├── set.rs
│   │       │   ├── sorted_vector.rs
│   │       │   └── vector.rs
│   │       ├── collections.rs
│   │       ├── contrib/
│   │       │   ├── access_control.rs
│   │       │   ├── cep18.rs
│   │       │   ├── ownable.rs
│   │       │   └── pausable.rs
│   │       ├── contrib.rs
│   │       ├── lib.rs
│   │       ├── prelude.rs
│   │       ├── schema.rs
│   │       ├── selector.rs
│   │       ├── serializers.rs
│   │       └── types.rs
│   ├── sdk_codegen/
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   ├── lib.rs
│   │   │   └── support.rs
│   │   └── tests/
│   │       ├── fixtures/
│   │       │   ├── cep18_schema.json
│   │       │   └── cep18_schema.rs
│   │       └── test_build.rs
│   └── sdk_sys/
│       ├── Cargo.toml
│       └── src/
│           ├── for_each_host_function.rs
│           └── lib.rs
├── storage/
│   ├── CHANGELOG.md
│   ├── Cargo.toml
│   ├── README.md
│   ├── benches/
│   │   └── global_state_key_write_bench.rs
│   └── src/
│       ├── address_generator.rs
│       ├── block_store/
│       │   ├── block_provider.rs
│       │   ├── error.rs
│       │   ├── lmdb/
│       │   │   ├── indexed_lmdb_block_store.rs
│       │   │   ├── lmdb_block_store.rs
│       │   │   ├── lmdb_ext.rs
│       │   │   ├── mod.rs
│       │   │   ├── temp_map.rs
│       │   │   └── versioned_databases.rs
│       │   ├── mod.rs
│       │   └── types/
│       │       ├── approvals_hashes.rs
│       │       ├── block_hash_height_and_era.rs
│       │       ├── deploy_metadata_v1.rs
│       │       ├── mod.rs
│       │       └── transfers.rs
│       ├── data_access_layer/
│       │   ├── addressable_entity.rs
│       │   ├── auction.rs
│       │   ├── balance.rs
│       │   ├── balance_hold.rs
│       │   ├── balance_identifier_purse.rs
│       │   ├── bids.rs
│       │   ├── block_global.rs
│       │   ├── block_rewards.rs
│       │   ├── contract.rs
│       │   ├── entry_points.rs
│       │   ├── era_validators.rs
│       │   ├── execution_results_checksum.rs
│       │   ├── fee.rs
│       │   ├── flush.rs
│       │   ├── forced_undelegate.rs
│       │   ├── genesis.rs
│       │   ├── handle_fee.rs
│       │   ├── handle_refund.rs
│       │   ├── key_prefix.rs
│       │   ├── message_topics.rs
│       │   ├── mint.rs
│       │   ├── prefixed_values.rs
│       │   ├── protocol_upgrade.rs
│       │   ├── prune.rs
│       │   ├── query.rs
│       │   ├── round_seigniorage.rs
│       │   ├── seigniorage_recipients.rs
│       │   ├── step.rs
│       │   ├── system_entity_registry.rs
│       │   ├── tagged_values.rs
│       │   ├── total_supply.rs
│       │   └── trie.rs
│       ├── data_access_layer.rs
│       ├── global_state/
│       │   ├── error.rs
│       │   ├── state/
│       │   │   ├── lmdb.rs
│       │   │   ├── mod.rs
│       │   │   └── scratch.rs
│       │   ├── store/
│       │   │   ├── mod.rs
│       │   │   ├── store_ext.rs
│       │   │   └── tests.rs
│       │   ├── transaction_source/
│       │   │   ├── lmdb.rs
│       │   │   └── mod.rs
│       │   ├── trie/
│       │   │   ├── gens.rs
│       │   │   ├── mod.rs
│       │   │   └── tests.rs
│       │   └── trie_store/
│       │       ├── cache/
│       │       │   └── mod.rs
│       │       ├── lmdb.rs
│       │       ├── mod.rs
│       │       ├── operations/
│       │       │   ├── mod.rs
│       │       │   ├── store_wrappers.rs
│       │       │   └── tests/
│       │       │       ├── bytesrepr_utils.rs
│       │       │       ├── ee_699.rs
│       │       │       ├── keys.rs
│       │       │       ├── mod.rs
│       │       │       ├── proptests.rs
│       │       │       ├── prune.rs
│       │       │       ├── read.rs
│       │       │       ├── scan.rs
│       │       │       ├── synchronize.rs
│       │       │       └── write.rs
│       │       └── tests/
│       │           ├── concurrent.rs
│       │           ├── mod.rs
│       │           ├── proptests.rs
│       │           └── simple.rs
│       ├── global_state.rs
│       ├── lib.rs
│       ├── system/
│       │   ├── auction/
│       │   │   ├── auction_native.rs
│       │   │   ├── detail.rs
│       │   │   └── providers.rs
│       │   ├── auction.rs
│       │   ├── burn.rs
│       │   ├── error.rs
│       │   ├── genesis/
│       │   │   ├── account_contract_installer.rs
│       │   │   └── entity_installer.rs
│       │   ├── genesis.rs
│       │   ├── handle_payment/
│       │   │   ├── handle_payment_native.rs
│       │   │   ├── internal.rs
│       │   │   ├── mint_provider.rs
│       │   │   ├── runtime_provider.rs
│       │   │   └── storage_provider.rs
│       │   ├── handle_payment.rs
│       │   ├── mint/
│       │   │   ├── detail.rs
│       │   │   ├── mint_native.rs
│       │   │   ├── runtime_provider.rs
│       │   │   ├── storage_provider.rs
│       │   │   └── system_provider.rs
│       │   ├── mint.rs
│       │   ├── protocol_upgrade.rs
│       │   ├── runtime_native.rs
│       │   ├── standard_payment/
│       │   │   ├── account_provider.rs
│       │   │   ├── handle_payment_provider.rs
│       │   │   └── mint_provider.rs
│       │   ├── standard_payment.rs
│       │   └── transfer.rs
│       ├── system.rs
│       └── tracking_copy/
│           ├── byte_size.rs
│           ├── error.rs
│           ├── ext.rs
│           ├── ext_entity.rs
│           ├── meter.rs
│           ├── mod.rs
│           └── tests.rs
├── types/
│   ├── CHANGELOG.md
│   ├── Cargo.toml
│   ├── README.md
│   ├── benches/
│   │   └── bytesrepr_bench.rs
│   ├── proptest-regressions/
│   │   └── stored_value.txt
│   ├── src/
│   │   ├── access_rights.rs
│   │   ├── account/
│   │   │   ├── account_hash.rs
│   │   │   ├── action_thresholds.rs
│   │   │   ├── action_type.rs
│   │   │   ├── associated_keys.rs
│   │   │   ├── error.rs
│   │   │   └── weight.rs
│   │   ├── account.rs
│   │   ├── addressable_entity/
│   │   │   ├── action_thresholds.rs
│   │   │   ├── action_type.rs
│   │   │   ├── associated_keys.rs
│   │   │   ├── entry_points.rs
│   │   │   ├── error.rs
│   │   │   ├── named_keys.rs
│   │   │   └── weight.rs
│   │   ├── addressable_entity.rs
│   │   ├── api_error.rs
│   │   ├── auction_state.rs
│   │   ├── block/
│   │   │   ├── available_block_range.rs
│   │   │   ├── block_body/
│   │   │   │   ├── block_body_v1.rs
│   │   │   │   └── block_body_v2.rs
│   │   │   ├── block_body.rs
│   │   │   ├── block_global.rs
│   │   │   ├── block_hash.rs
│   │   │   ├── block_hash_and_height.rs
│   │   │   ├── block_header/
│   │   │   │   ├── block_header_v1.rs
│   │   │   │   └── block_header_v2.rs
│   │   │   ├── block_header.rs
│   │   │   ├── block_header_with_signatures.rs
│   │   │   ├── block_identifier.rs
│   │   │   ├── block_signatures/
│   │   │   │   ├── block_signatures_v1.rs
│   │   │   │   └── block_signatures_v2.rs
│   │   │   ├── block_signatures.rs
│   │   │   ├── block_sync_status.rs
│   │   │   ├── block_v1.rs
│   │   │   ├── block_v2.rs
│   │   │   ├── block_with_signatures.rs
│   │   │   ├── chain_name_digest.rs
│   │   │   ├── era_end/
│   │   │   │   ├── era_end_v1/
│   │   │   │   │   └── era_report.rs
│   │   │   │   ├── era_end_v1.rs
│   │   │   │   └── era_end_v2.rs
│   │   │   ├── era_end.rs
│   │   │   ├── finality_signature/
│   │   │   │   ├── finality_signature_v1.rs
│   │   │   │   └── finality_signature_v2.rs
│   │   │   ├── finality_signature.rs
│   │   │   ├── finality_signature_id.rs
│   │   │   ├── json_compatibility/
│   │   │   │   └── json_block_with_signatures.rs
│   │   │   ├── json_compatibility.rs
│   │   │   ├── rewarded_signatures.rs
│   │   │   ├── rewards.rs
│   │   │   ├── test_block_builder/
│   │   │   │   ├── test_block_v1_builder.rs
│   │   │   │   └── test_block_v2_builder.rs
│   │   │   └── test_block_builder.rs
│   │   ├── block.rs
│   │   ├── block_time.rs
│   │   ├── byte_code.rs
│   │   ├── bytesrepr/
│   │   │   └── bytes.rs
│   │   ├── bytesrepr.rs
│   │   ├── chainspec/
│   │   │   ├── accounts_config/
│   │   │   │   ├── account_config.rs
│   │   │   │   ├── delegator_config.rs
│   │   │   │   ├── genesis.rs
│   │   │   │   └── validator_config.rs
│   │   │   ├── accounts_config.rs
│   │   │   ├── activation_point.rs
│   │   │   ├── chainspec_raw_bytes.rs
│   │   │   ├── core_config.rs
│   │   │   ├── fee_handling.rs
│   │   │   ├── genesis_config.rs
│   │   │   ├── global_state_update.rs
│   │   │   ├── highway_config.rs
│   │   │   ├── hold_balance_handling.rs
│   │   │   ├── network_config.rs
│   │   │   ├── next_upgrade.rs
│   │   │   ├── pricing_handling.rs
│   │   │   ├── protocol_config.rs
│   │   │   ├── refund_handling.rs
│   │   │   ├── rewards_handling.rs
│   │   │   ├── transaction_config/
│   │   │   │   ├── deploy_config.rs
│   │   │   │   ├── runtime_config.rs
│   │   │   │   └── transaction_v1_config.rs
│   │   │   ├── transaction_config.rs
│   │   │   ├── upgrade_config.rs
│   │   │   ├── vacancy_config.rs
│   │   │   ├── vm_config/
│   │   │   │   ├── auction_costs.rs
│   │   │   │   ├── chainspec_registry.rs
│   │   │   │   ├── handle_payment_costs.rs
│   │   │   │   ├── host_function_costs.rs
│   │   │   │   ├── host_function_costs_v2.rs
│   │   │   │   ├── message_limits.rs
│   │   │   │   ├── mint_costs.rs
│   │   │   │   ├── opcode_costs.rs
│   │   │   │   ├── standard_payment_costs.rs
│   │   │   │   ├── storage_costs.rs
│   │   │   │   ├── system_config.rs
│   │   │   │   ├── wasm_config.rs
│   │   │   │   ├── wasm_v1_config.rs
│   │   │   │   └── wasm_v2_config.rs
│   │   │   └── vm_config.rs
│   │   ├── chainspec.rs
│   │   ├── checksummed_hex.rs
│   │   ├── cl_type.rs
│   │   ├── cl_value/
│   │   │   ├── checksum_registry.rs
│   │   │   ├── dictionary.rs
│   │   │   ├── jsonrepr.rs
│   │   │   └── system_entity_registry.rs
│   │   ├── cl_value.rs
│   │   ├── contract_messages/
│   │   │   ├── error.rs
│   │   │   ├── messages.rs
│   │   │   └── topics.rs
│   │   ├── contract_messages.rs
│   │   ├── contract_wasm.rs
│   │   ├── contracts/
│   │   │   └── named_keys.rs
│   │   ├── contracts.rs
│   │   ├── crypto/
│   │   │   ├── asymmetric_key/
│   │   │   │   ├── gens.rs
│   │   │   │   └── tests.rs
│   │   │   ├── asymmetric_key.rs
│   │   │   └── error.rs
│   │   ├── crypto.rs
│   │   ├── deploy_info.rs
│   │   ├── digest/
│   │   │   ├── chunk_with_proof.rs
│   │   │   ├── error.rs
│   │   │   └── indexed_merkle_proof.rs
│   │   ├── digest.rs
│   │   ├── display_iter.rs
│   │   ├── era_id.rs
│   │   ├── execution/
│   │   │   ├── effects.rs
│   │   │   ├── execution_result.rs
│   │   │   ├── execution_result_v1.rs
│   │   │   ├── execution_result_v2.rs
│   │   │   ├── transform.rs
│   │   │   ├── transform_error.rs
│   │   │   └── transform_kind.rs
│   │   ├── execution.rs
│   │   ├── file_utils.rs
│   │   ├── gas.rs
│   │   ├── gens.rs
│   │   ├── global_state/
│   │   │   ├── merkle_proof.rs
│   │   │   └── pointer.rs
│   │   ├── global_state.rs
│   │   ├── json_pretty_printer.rs
│   │   ├── key.rs
│   │   ├── lib.rs
│   │   ├── motes.rs
│   │   ├── package.rs
│   │   ├── peers_map.rs
│   │   ├── phase.rs
│   │   ├── protocol_version.rs
│   │   ├── runtime_footprint.rs
│   │   ├── semver.rs
│   │   ├── serde_helpers.rs
│   │   ├── stored_value/
│   │   │   ├── global_state_identifier.rs
│   │   │   └── type_mismatch.rs
│   │   ├── stored_value.rs
│   │   ├── system/
│   │   │   ├── auction/
│   │   │   │   ├── bid/
│   │   │   │   │   └── vesting.rs
│   │   │   │   ├── bid.rs
│   │   │   │   ├── bid_addr.rs
│   │   │   │   ├── bid_kind.rs
│   │   │   │   ├── bridge.rs
│   │   │   │   ├── constants.rs
│   │   │   │   ├── delegator.rs
│   │   │   │   ├── delegator_bid.rs
│   │   │   │   ├── delegator_kind.rs
│   │   │   │   ├── entry_points.rs
│   │   │   │   ├── era_info.rs
│   │   │   │   ├── error.rs
│   │   │   │   ├── reservation.rs
│   │   │   │   ├── seigniorage_recipient.rs
│   │   │   │   ├── unbond.rs
│   │   │   │   ├── unbonding_purse.rs
│   │   │   │   ├── validator_bid.rs
│   │   │   │   ├── validator_credit.rs
│   │   │   │   └── withdraw_purse.rs
│   │   │   ├── auction.rs
│   │   │   ├── caller/
│   │   │   │   └── call_stack_elements.rs
│   │   │   ├── caller.rs
│   │   │   ├── error.rs
│   │   │   ├── handle_payment/
│   │   │   │   ├── constants.rs
│   │   │   │   ├── entry_points.rs
│   │   │   │   └── error.rs
│   │   │   ├── handle_payment.rs
│   │   │   ├── mint/
│   │   │   │   ├── balance_hold.rs
│   │   │   │   ├── constants.rs
│   │   │   │   ├── entry_points.rs
│   │   │   │   └── error.rs
│   │   │   ├── mint.rs
│   │   │   ├── prepayment/
│   │   │   │   └── prepayment_kind.rs
│   │   │   ├── prepayment.rs
│   │   │   ├── standard_payment/
│   │   │   │   ├── constants.rs
│   │   │   │   └── entry_points.rs
│   │   │   ├── standard_payment.rs
│   │   │   └── system_contract_type.rs
│   │   ├── system.rs
│   │   ├── tagged.rs
│   │   ├── testing.rs
│   │   ├── timestamp.rs
│   │   ├── transaction/
│   │   │   ├── addressable_entity_identifier.rs
│   │   │   ├── approval.rs
│   │   │   ├── approvals_hash.rs
│   │   │   ├── deploy/
│   │   │   │   ├── deploy_category.rs
│   │   │   │   ├── deploy_hash.rs
│   │   │   │   ├── deploy_header.rs
│   │   │   │   ├── deploy_id.rs
│   │   │   │   ├── error.rs
│   │   │   │   └── executable_deploy_item.rs
│   │   │   ├── deploy.rs
│   │   │   ├── error.rs
│   │   │   ├── execution_info.rs
│   │   │   ├── initiator_addr.rs
│   │   │   ├── initiator_addr_and_secret_key.rs
│   │   │   ├── package_identifier.rs
│   │   │   ├── pricing_mode.rs
│   │   │   ├── runtime_args.rs
│   │   │   ├── serialization/
│   │   │   │   ├── field.rs
│   │   │   │   └── mod.rs
│   │   │   ├── transaction_entry_point.rs
│   │   │   ├── transaction_hash.rs
│   │   │   ├── transaction_id.rs
│   │   │   ├── transaction_invocation_target.rs
│   │   │   ├── transaction_scheduling.rs
│   │   │   ├── transaction_target.rs
│   │   │   ├── transaction_v1/
│   │   │   │   ├── arg_handling.rs
│   │   │   │   ├── errors_v1.rs
│   │   │   │   ├── fields_container.rs
│   │   │   │   ├── transaction_args.rs
│   │   │   │   ├── transaction_v1_hash.rs
│   │   │   │   └── transaction_v1_payload.rs
│   │   │   ├── transaction_v1.rs
│   │   │   └── transfer_target.rs
│   │   ├── transaction.rs
│   │   ├── transfer/
│   │   │   ├── error.rs
│   │   │   ├── transfer_v1/
│   │   │   │   └── transfer_v1_addr.rs
│   │   │   ├── transfer_v1.rs
│   │   │   └── transfer_v2.rs
│   │   ├── transfer.rs
│   │   ├── transfer_result.rs
│   │   ├── uint.rs
│   │   ├── uref.rs
│   │   └── validator_change.rs
│   └── tests/
│       └── version_numbers.rs
├── utils/
│   ├── accounts_toml/
│   │   ├── encode_account_toml.py
│   │   ├── test_validate.py
│   │   ├── validate.py
│   │   └── validate_account_toml.py
│   ├── casper-tool/
│   │   └── casper-tool.py
│   ├── dump-cpu-features.sh
│   ├── global-state-update-gen/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       ├── admins.rs
│   │       ├── balances.rs
│   │       ├── decode.rs
│   │       ├── generic/
│   │       │   ├── config.rs
│   │       │   ├── state_reader.rs
│   │       │   ├── state_tracker.rs
│   │       │   ├── testing.rs
│   │       │   └── update.rs
│   │       ├── generic.rs
│   │       ├── main.rs
│   │       ├── system_entity_registry.rs
│   │       ├── utils.rs
│   │       └── validators.rs
│   ├── highway-rewards-analysis/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       └── main.rs
│   ├── highway-state-grapher/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── main.rs
│   │       ├── renderer/
│   │       │   └── matrix.rs
│   │       └── renderer.rs
│   └── validation/
│       ├── Cargo.toml
│       ├── README.md
│       ├── src/
│       │   ├── abi.rs
│       │   ├── error.rs
│       │   ├── generators.rs
│       │   ├── lib.rs
│       │   ├── main.rs
│       │   ├── test_case.rs
│       │   └── utils.rs
│       └── tests/
│           ├── fixtures/
│           │   └── ABI/
│           │       ├── basic.json
│           │       ├── bignum.json
│           │       ├── clvalue.json
│           │       ├── collections.json
│           │       ├── key.json
│           │       └── stored_value.json
│           └── validation_test.rs
└── vm2-build-contracts.sh
Download .txt
Showing preview only (1,953K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (21091 symbols across 1194 files)

FILE: binary_port/src/balance_response.rs
  type BalanceResponse (line 20) | pub struct BalanceResponse {
    method random (line 33) | pub(crate) fn random(rng: &mut TestRng) -> Self {
  method to_bytes (line 48) | fn to_bytes(&self) -> Result<Vec<u8>, casper_types::bytesrepr::Error> {
  method write_bytes (line 54) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), casper_types::...
  method serialized_length (line 61) | fn serialized_length(&self) -> usize {
  method from_bytes (line 70) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), casper_types::bytes...
  type BalanceHoldsWithProof (line 90) | pub type BalanceHoldsWithProof =
  function bytesrepr_roundtrip (line 99) | fn bytesrepr_roundtrip() {

FILE: binary_port/src/binary_message.rs
  type LengthEncoding (line 11) | type LengthEncoding = u32;
  constant LENGTH_ENCODING_SIZE_BYTES (line 12) | const LENGTH_ENCODING_SIZE_BYTES: usize = size_of::<LengthEncoding>();
  type BinaryMessage (line 15) | pub struct BinaryMessage(Bytes);
    method new (line 18) | pub fn new(payload: Vec<u8>) -> Self {
    method payload (line 22) | pub fn payload(&self) -> &[u8] {
    method random (line 27) | pub(crate) fn random(rng: &mut TestRng) -> Self {
  type BinaryMessageCodec (line 35) | pub struct BinaryMessageCodec {
    method new (line 40) | pub fn new(max_message_size_bytes: u32) -> Self {
    method max_message_size_bytes (line 46) | pub fn max_message_size_bytes(&self) -> u32 {
    type Error (line 52) | type Error = Error;
    method encode (line 54) | fn encode(
    type Item (line 73) | type Item = BinaryMessage;
    type Error (line 75) | type Error = Error;
    method decode (line 77) | fn decode(&mut self, src: &mut bytes::BytesMut) -> Result<Option<Self:...
  constant MAX_MESSAGE_SIZE_BYTES (line 119) | const MAX_MESSAGE_SIZE_BYTES: u32 = 1024 * 1024;
  function binary_message_codec (line 122) | fn binary_message_codec() {
  function should_not_decode_when_not_enough_bytes_to_decode_length (line 140) | fn should_not_decode_when_not_enough_bytes_to_decode_length() {
  function should_not_decode_when_not_enough_bytes_to_decode_full_frame (line 156) | fn should_not_decode_when_not_enough_bytes_to_decode_full_frame() {
  function should_leave_remainder_in_buffer (line 172) | fn should_leave_remainder_in_buffer() {
  function encode_should_bail_on_too_large_request (line 187) | fn encode_should_bail_on_too_large_request() {
  function should_encode_request_of_maximum_size (line 199) | fn should_encode_request_of_maximum_size() {
  function decode_should_bail_on_too_large_request (line 210) | fn decode_should_bail_on_too_large_request() {
  function should_decode_request_of_maximum_size (line 224) | fn should_decode_request_of_maximum_size() {
  function should_bail_on_empty_request (line 237) | fn should_bail_on_empty_request() {
  function should_decoded_queued_messages (line 248) | fn should_decoded_queued_messages() {
  function should_not_decode_when_read_bytes_extend_max (line 274) | fn should_not_decode_when_read_bytes_extend_max() {

FILE: binary_port/src/binary_response.rs
  type BinaryResponse (line 14) | pub struct BinaryResponse {
    method new_empty (line 23) | pub fn new_empty() -> Self {
    method new_error (line 31) | pub fn new_error(error: ErrorCode) -> Self {
    method from_raw_bytes (line 39) | pub fn from_raw_bytes(payload_type: ResponseType, payload: Vec<u8>) ->...
    method from_value (line 47) | pub fn from_value<V>(val: V) -> Self
    method from_option (line 61) | pub fn from_option<V>(opt: Option<V>) -> Self
    method is_success (line 72) | pub fn is_success(&self) -> bool {
    method error_code (line 77) | pub fn error_code(&self) -> u16 {
    method returned_data_type_tag (line 82) | pub fn returned_data_type_tag(&self) -> Option<u8> {
    method is_not_found (line 87) | pub fn is_not_found(&self) -> bool {
    method payload (line 92) | pub fn payload(&self) -> &[u8] {
    method random (line 97) | pub(crate) fn random(rng: &mut TestRng) -> Self {
  method to_bytes (line 106) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method write_bytes (line 112) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method serialized_length (line 119) | fn serialized_length(&self) -> usize {
  method from_bytes (line 125) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  function bytesrepr_roundtrip (line 145) | fn bytesrepr_roundtrip() {

FILE: binary_port/src/binary_response_and_request.rs
  type BinaryResponseAndRequest (line 11) | pub struct BinaryResponseAndRequest {
    method new (line 20) | pub fn new(data: BinaryResponse, request: Bytes) -> Self {
    method new_test_response (line 28) | pub fn new_test_response<A: PayloadEntity + ToBytes>(
    method new_legacy_test_response (line 40) | pub fn new_legacy_test_response<A: PayloadEntity + serde::Serialize>(
    method is_success (line 52) | pub fn is_success(&self) -> bool {
    method error_code (line 57) | pub fn error_code(&self) -> u16 {
    method random (line 62) | pub(crate) fn random(rng: &mut TestRng) -> Self {
    method request (line 71) | pub fn request(&self) -> &[u8] {
    method response (line 76) | pub fn response(&self) -> &BinaryResponse {
  method to_bytes (line 82) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method write_bytes (line 88) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method serialized_length (line 94) | fn serialized_length(&self) -> usize {
  method from_bytes (line 100) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  method from (line 109) | fn from(response_and_request: BinaryResponseAndRequest) -> Self {
  function roundtrip (line 121) | fn roundtrip() {
  function bytesrepr_roundtrip (line 130) | fn bytesrepr_roundtrip() {

FILE: binary_port/src/binary_response_header.rs
  type BinaryResponseHeader (line 11) | pub struct BinaryResponseHeader {
    constant BINARY_RESPONSE_VERSION (line 18) | pub const BINARY_RESPONSE_VERSION: u16 = 1;
    method new (line 20) | pub fn new(returned_data_type: Option<ResponseType>) -> Self {
    method new_error (line 29) | pub fn new_error(error: ErrorCode) -> Self {
    method returned_data_type_tag (line 38) | pub fn returned_data_type_tag(&self) -> Option<u8> {
    method error_code (line 43) | pub fn error_code(&self) -> u16 {
    method is_success (line 48) | pub fn is_success(&self) -> bool {
    method is_not_found (line 53) | pub fn is_not_found(&self) -> bool {
    method random (line 58) | pub(crate) fn random(rng: &mut TestRng) -> Self {
  method to_bytes (line 71) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method write_bytes (line 77) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method serialized_length (line 89) | fn serialized_length(&self) -> usize {
  method from_bytes (line 97) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  function bytesrepr_roundtrip (line 119) | fn bytesrepr_roundtrip() {

FILE: binary_port/src/command.rs
  type CommandHeader (line 17) | pub struct CommandHeader {
    constant HEADER_VERSION (line 26) | pub const HEADER_VERSION: u16 = 1;
    method new (line 29) | pub fn new(type_tag: CommandTag, id: u16) -> Self {
    method type_tag (line 38) | pub fn type_tag(&self) -> u8 {
    method id (line 43) | pub fn id(&self) -> u16 {
    method version (line 48) | pub fn version(&self) -> u16 {
    method set_binary_request_version (line 53) | pub fn set_binary_request_version(&mut self, version: u16) {
    method random (line 58) | pub(crate) fn random(rng: &mut TestRng) -> Self {
  method to_bytes (line 68) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method write_bytes (line 74) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method serialized_length (line 80) | fn serialized_length(&self) -> usize {
  method from_bytes (line 88) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  type Command (line 106) | pub enum Command {
    method tag (line 123) | pub fn tag(&self) -> CommandTag {
    method random (line 132) | pub(crate) fn random(rng: &mut TestRng) -> Self {
    type Error (line 170) | type Error = bytesrepr::Error;
    method try_from (line 172) | fn try_from((tag, bytes): (CommandTag, &[u8])) -> Result<Self, Self::E...
  method to_bytes (line 146) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method write_bytes (line 152) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method serialized_length (line 160) | fn serialized_length(&self) -> usize {
  type CommandTag (line 197) | pub enum CommandTag {
    method random (line 209) | pub fn random(rng: &mut TestRng) -> Self {
    type Error (line 220) | type Error = InvalidCommandTag;
    method try_from (line 222) | fn try_from(value: u8) -> Result<Self, Self::Error> {
  function from (line 233) | fn from(value: CommandTag) -> Self {
  type InvalidCommandTag (line 239) | pub struct InvalidCommandTag;
  function header_bytesrepr_roundtrip (line 247) | fn header_bytesrepr_roundtrip() {
  function request_bytesrepr_roundtrip (line 255) | fn request_bytesrepr_roundtrip() {

FILE: binary_port/src/dictionary_item_identifier.rs
  constant ACCOUNT_NAMED_KEY_TAG (line 12) | const ACCOUNT_NAMED_KEY_TAG: u8 = 0;
  constant CONTRACT_NAMED_KEY_TAG (line 13) | const CONTRACT_NAMED_KEY_TAG: u8 = 1;
  constant ENTITY_NAMED_KEY_TAG (line 14) | const ENTITY_NAMED_KEY_TAG: u8 = 2;
  constant UREF_TAG (line 15) | const UREF_TAG: u8 = 3;
  constant DICTIONARY_ITEM_TAG (line 16) | const DICTIONARY_ITEM_TAG: u8 = 4;
  type DictionaryItemIdentifier (line 20) | pub enum DictionaryItemIdentifier {
    method random (line 61) | pub(crate) fn random(rng: &mut TestRng) -> Self {
  method to_bytes (line 89) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method write_bytes (line 95) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method serialized_length (line 142) | fn serialized_length(&self) -> usize {
  method from_bytes (line 182) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  function bytesrepr_roundtrip (line 250) | fn bytesrepr_roundtrip() {

FILE: binary_port/src/entity_qualifier.rs
  constant ITEM_TAG (line 12) | const ITEM_TAG: u8 = 0;
  constant ALL_ITEMS_TAG (line 13) | const ALL_ITEMS_TAG: u8 = 1;
  constant DICTIONARY_ITEM_TAG (line 14) | const DICTIONARY_ITEM_TAG: u8 = 2;
  constant BALANCE_TAG (line 15) | const BALANCE_TAG: u8 = 3;
  constant ITEMS_BY_PREFIX_TAG (line 16) | const ITEMS_BY_PREFIX_TAG: u8 = 4;
  type GlobalStateEntityQualifier (line 20) | pub enum GlobalStateEntityQualifier {
    method random (line 51) | pub(crate) fn random(rng: &mut TestRng) -> Self {
  function random_for_variant (line 58) | fn random_for_variant(gen_range: u8, rng: &mut TestRng) -> GlobalStateEn...
  method to_bytes (line 86) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method write_bytes (line 92) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method serialized_length (line 118) | fn serialized_length(&self) -> usize {
  method from_bytes (line 139) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  function bytesrepr_roundtrip (line 186) | fn bytesrepr_roundtrip() {

FILE: binary_port/src/era_identifier.rs
  constant ERA_TAG (line 11) | const ERA_TAG: u8 = 0;
  constant BLOCK_TAG (line 12) | const BLOCK_TAG: u8 = 1;
  type EraIdentifier (line 16) | pub enum EraIdentifier {
    method random (line 23) | pub(crate) fn random(rng: &mut TestRng) -> Self {
  method to_bytes (line 33) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method write_bytes (line 39) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method serialized_length (line 52) | fn serialized_length(&self) -> usize {
  method from_bytes (line 62) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  function bytesrepr_roundtrip (line 84) | fn bytesrepr_roundtrip() {

FILE: binary_port/src/error.rs
  type Error (line 4) | pub enum Error {

FILE: binary_port/src/error_code.rs
  type ErrorCode (line 14) | pub enum ErrorCode {
    type Error (line 376) | type Error = UnknownErrorCode;
    method try_from (line 378) | fn try_from(value: u16) -> Result<Self, Self::Error> {
    method from (line 396) | fn from(value: InvalidTransaction) -> Self {
    method from (line 406) | fn from(value: InvalidDeploy) -> Self {
    method from (line 463) | fn from(value: InvalidTransactionV1) -> Self {
  type UnknownErrorCode (line 385) | pub struct UnknownErrorCode;
    method fmt (line 388) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
  function verify_all_invalid_transaction_v1_errors_have_error_codes (line 588) | fn verify_all_invalid_transaction_v1_errors_have_error_codes() {
  function verify_all_invalid_deploy_errors_have_error_codes (line 605) | fn verify_all_invalid_deploy_errors_have_error_codes() {
  function try_from_decoded_all_variants (line 622) | fn try_from_decoded_all_variants() {

FILE: binary_port/src/get_request.rs
  constant RECORD_TAG (line 13) | const RECORD_TAG: u8 = 0;
  constant INFORMATION_TAG (line 14) | const INFORMATION_TAG: u8 = 1;
  constant STATE_TAG (line 15) | const STATE_TAG: u8 = 2;
  constant TRIE_TAG (line 16) | const TRIE_TAG: u8 = 3;
  type GetRequest (line 20) | pub enum GetRequest {
    method random (line 46) | pub(crate) fn random(rng: &mut TestRng) -> Self {
  method to_bytes (line 66) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method write_bytes (line 72) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method serialized_length (line 98) | fn serialized_length(&self) -> usize {
  method from_bytes (line 115) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  function bytesrepr_roundtrip (line 159) | fn bytesrepr_roundtrip() {

FILE: binary_port/src/global_state_query_result.rs
  type GlobalStateQueryResult (line 18) | pub struct GlobalStateQueryResult {
    method new (line 27) | pub fn new(value: StoredValue, merkle_proof: Vec<TrieMerkleProof<Key, ...
    method value (line 35) | pub fn value(&self) -> &StoredValue {
    method into_inner (line 40) | pub fn into_inner(self) -> (StoredValue, Vec<TrieMerkleProof<Key, Stor...
    method random_invalid (line 45) | pub(crate) fn random_invalid(rng: &mut TestRng) -> Self {
  method to_bytes (line 73) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method write_bytes (line 79) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method serialized_length (line 88) | fn serialized_length(&self) -> usize {
  method from_bytes (line 94) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  function bytesrepr_roundtrip (line 113) | fn bytesrepr_roundtrip() {

FILE: binary_port/src/information_request.rs
  type InformationRequest (line 19) | pub enum InformationRequest {
    method tag (line 91) | pub fn tag(&self) -> InformationRequestTag {
    method random (line 125) | pub(crate) fn random(rng: &mut TestRng) -> Self {
    type Error (line 299) | type Error = bytesrepr::Error;
    method try_from (line 301) | fn try_from((tag, key_bytes): (InformationRequestTag, &[u8])) -> Resul...
  method to_bytes (line 182) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method write_bytes (line 188) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method serialized_length (line 246) | fn serialized_length(&self) -> usize {
  type Error (line 399) | type Error = bytesrepr::Error;
  method try_from (line 401) | fn try_from(request: InformationRequest) -> Result<Self, Self::Error> {
  type InformationRequestTag (line 412) | pub enum InformationRequestTag {
    method random (line 457) | pub(crate) fn random(rng: &mut TestRng) -> Self {
    type Error (line 485) | type Error = UnknownInformationRequestTag;
    method try_from (line 487) | fn try_from(value: u16) -> Result<Self, Self::Error> {
  function from (line 515) | fn from(value: InformationRequestTag) -> Self {
  type UnknownInformationRequestTag (line 522) | pub struct UnknownInformationRequestTag(u16);
  type EntityIdentifier (line 525) | pub enum EntityIdentifier {
    method random (line 534) | pub(crate) fn random(rng: &mut TestRng) -> Self {
  method from_bytes (line 546) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  method to_bytes (line 572) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method write_bytes (line 578) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method serialized_length (line 594) | fn serialized_length(&self) -> usize {
  type PackageIdentifier (line 606) | pub enum PackageIdentifier {
    method random (line 613) | pub(crate) fn random(rng: &mut TestRng) -> Self {
  method from_bytes (line 623) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  method to_bytes (line 641) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method write_bytes (line 647) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method serialized_length (line 659) | fn serialized_length(&self) -> usize {
  function tag_roundtrip (line 674) | fn tag_roundtrip() {
  function bytesrepr_roundtrip (line 683) | fn bytesrepr_roundtrip() {
  function entity_identifier_bytesrepr_roundtrip (line 695) | fn entity_identifier_bytesrepr_roundtrip() {
  function package_identifier_bytesrepr_roundtrip (line 704) | fn package_identifier_bytesrepr_roundtrip() {

FILE: binary_port/src/key_prefix.rs
  type KeyPrefix (line 15) | pub enum KeyPrefix {
    method random (line 37) | pub fn random(rng: &mut TestRng) -> Self {
  method to_bytes (line 53) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method write_bytes (line 59) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method serialized_length (line 103) | fn serialized_length(&self) -> usize {
  method from_bytes (line 131) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  function bytesrepr_roundtrip (line 196) | fn bytesrepr_roundtrip() {

FILE: binary_port/src/minimal_block_info.rs
  type MinimalBlockInfo (line 16) | pub struct MinimalBlockInfo {
    method random (line 27) | pub(crate) fn random(rng: &mut TestRng) -> Self {
    method from (line 88) | fn from(block: Block) -> Self {
  method from_bytes (line 40) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  method to_bytes (line 62) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method write_bytes (line 68) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method serialized_length (line 77) | fn serialized_length(&self) -> usize {
  function bytesrepr_roundtrip (line 111) | fn bytesrepr_roundtrip() {

FILE: binary_port/src/node_status.rs
  type NodeStatus (line 17) | pub struct NodeStatus {
    method random (line 52) | pub(crate) fn random(rng: &mut TestRng) -> Self {
  method from_bytes (line 76) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  method to_bytes (line 116) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method write_bytes (line 122) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method serialized_length (line 157) | fn serialized_length(&self) -> usize {
  function bytesrepr_roundtrip (line 182) | fn bytesrepr_roundtrip() {

FILE: binary_port/src/purse_identifier.rs
  constant PAYMENT_PURSE_TAG (line 12) | const PAYMENT_PURSE_TAG: u8 = 0;
  constant ACCUMULATE_PURSE_TAG (line 13) | const ACCUMULATE_PURSE_TAG: u8 = 1;
  constant UREF_PURSE_TAG (line 14) | const UREF_PURSE_TAG: u8 = 2;
  constant PUBLIC_KEY_PURSE_TAG (line 15) | const PUBLIC_KEY_PURSE_TAG: u8 = 3;
  constant ACCOUNT_PURSE_TAG (line 16) | const ACCOUNT_PURSE_TAG: u8 = 4;
  constant ENTITY_PURSE_TAG (line 17) | const ENTITY_PURSE_TAG: u8 = 5;
  type PurseIdentifier (line 21) | pub enum PurseIdentifier {
    method random (line 32) | pub(crate) fn random(rng: &mut TestRng) -> Self {
  method to_bytes (line 46) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method write_bytes (line 52) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method serialized_length (line 75) | fn serialized_length(&self) -> usize {
  method from_bytes (line 89) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  function bytesrepr_roundtrip (line 121) | fn bytesrepr_roundtrip() {

FILE: binary_port/src/record_id.rs
  type RecordId (line 18) | pub enum RecordId {
    method random (line 39) | pub fn random(rng: &mut TestRng) -> Self {
    method all (line 53) | pub fn all() -> impl Iterator<Item = RecordId> {
    type Error (line 59) | type Error = UnknownRecordId;
    method try_from (line 61) | fn try_from(value: u16) -> Result<Self, Self::Error> {
    method fmt (line 83) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
  function from (line 77) | fn from(value: RecordId) -> Self {
  type UnknownRecordId (line 99) | pub struct UnknownRecordId(u16);
  function tag_roundtrip (line 107) | fn tag_roundtrip() {

FILE: binary_port/src/response_type.rs
  type ResponseType (line 33) | pub enum ResponseType {
    method from_record_id (line 125) | pub fn from_record_id(record_id: RecordId, is_legacy: bool) -> Self {
    method random (line 147) | pub(crate) fn random(rng: &mut TestRng) -> Self {
    type Error (line 153) | type Error = ();
    method try_from (line 155) | fn try_from(v: u8) -> Result<Self, Self::Error> {
    method fmt (line 243) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
  function from (line 237) | fn from(value: ResponseType) -> Self {
  type PayloadEntity (line 298) | pub trait PayloadEntity {
    constant RESPONSE_TYPE (line 300) | const RESPONSE_TYPE: ResponseType;
    constant RESPONSE_TYPE (line 304) | const RESPONSE_TYPE: ResponseType = ResponseType::Transaction;
    constant RESPONSE_TYPE (line 308) | const RESPONSE_TYPE: ResponseType = ResponseType::Deploy;
    constant RESPONSE_TYPE (line 312) | const RESPONSE_TYPE: ResponseType = ResponseType::BlockHeader;
    constant RESPONSE_TYPE (line 316) | const RESPONSE_TYPE: ResponseType = ResponseType::BlockHeaderV1;
    constant RESPONSE_TYPE (line 320) | const RESPONSE_TYPE: ResponseType = ResponseType::BlockBody;
    constant RESPONSE_TYPE (line 324) | const RESPONSE_TYPE: ResponseType = ResponseType::BlockBodyV1;
    constant RESPONSE_TYPE (line 328) | const RESPONSE_TYPE: ResponseType = ResponseType::BlockSignatures;
    constant RESPONSE_TYPE (line 332) | const RESPONSE_TYPE: ResponseType = ResponseType::BlockSignaturesV1;
    constant RESPONSE_TYPE (line 336) | const RESPONSE_TYPE: ResponseType = ResponseType::ExecutionResult;
    constant RESPONSE_TYPE (line 340) | const RESPONSE_TYPE: ResponseType = ResponseType::ExecutionResultV1;
    constant RESPONSE_TYPE (line 344) | const RESPONSE_TYPE: ResponseType = ResponseType::BlockWithSignatures;
    constant RESPONSE_TYPE (line 348) | const RESPONSE_TYPE: ResponseType = ResponseType::TransactionWithExecu...
    constant RESPONSE_TYPE (line 352) | const RESPONSE_TYPE: ResponseType = ResponseType::Peers;
    constant RESPONSE_TYPE (line 356) | const RESPONSE_TYPE: ResponseType = ResponseType::Transfers;
    constant RESPONSE_TYPE (line 360) | const RESPONSE_TYPE: ResponseType = ResponseType::AvailableBlockRange;
    constant RESPONSE_TYPE (line 364) | const RESPONSE_TYPE: ResponseType = ResponseType::ChainspecRawBytes;
    constant RESPONSE_TYPE (line 368) | const RESPONSE_TYPE: ResponseType = ResponseType::ConsensusValidatorCh...
    constant RESPONSE_TYPE (line 372) | const RESPONSE_TYPE: ResponseType = ResponseType::GlobalStateQueryResult;
    constant RESPONSE_TYPE (line 376) | const RESPONSE_TYPE: ResponseType = ResponseType::DictionaryQueryResult;
    constant RESPONSE_TYPE (line 380) | const RESPONSE_TYPE: ResponseType = ResponseType::StoredValues;
    constant RESPONSE_TYPE (line 384) | const RESPONSE_TYPE: ResponseType = ResponseType::GetTrieFullResult;
    constant RESPONSE_TYPE (line 388) | const RESPONSE_TYPE: ResponseType = ResponseType::SpeculativeExecution...
    constant RESPONSE_TYPE (line 392) | const RESPONSE_TYPE: ResponseType = ResponseType::NodeStatus;
    constant RESPONSE_TYPE (line 396) | const RESPONSE_TYPE: ResponseType = ResponseType::NextUpgrade;
    constant RESPONSE_TYPE (line 400) | const RESPONSE_TYPE: ResponseType = ResponseType::Uptime;
    constant RESPONSE_TYPE (line 404) | const RESPONSE_TYPE: ResponseType = ResponseType::LastProgress;
    constant RESPONSE_TYPE (line 408) | const RESPONSE_TYPE: ResponseType = ResponseType::ReactorState;
    constant RESPONSE_TYPE (line 412) | const RESPONSE_TYPE: ResponseType = ResponseType::NetworkName;
    constant RESPONSE_TYPE (line 416) | const RESPONSE_TYPE: ResponseType = ResponseType::BlockSynchronizerSta...
    constant RESPONSE_TYPE (line 420) | const RESPONSE_TYPE: ResponseType = ResponseType::ConsensusStatus;
    constant RESPONSE_TYPE (line 424) | const RESPONSE_TYPE: ResponseType = ResponseType::BalanceResponse;
    constant RESPONSE_TYPE (line 428) | const RESPONSE_TYPE: ResponseType = ResponseType::Reward;
    constant RESPONSE_TYPE (line 432) | const RESPONSE_TYPE: ResponseType = ResponseType::ProtocolVersion;
    constant RESPONSE_TYPE (line 436) | const RESPONSE_TYPE: ResponseType = ResponseType::ContractPackageWithP...
    constant RESPONSE_TYPE (line 440) | const RESPONSE_TYPE: ResponseType = ResponseType::ContractInformation;
    constant RESPONSE_TYPE (line 444) | const RESPONSE_TYPE: ResponseType = ResponseType::AccountInformation;
    constant RESPONSE_TYPE (line 448) | const RESPONSE_TYPE: ResponseType = ResponseType::PackageWithProof;
    constant RESPONSE_TYPE (line 452) | const RESPONSE_TYPE: ResponseType = ResponseType::AddressableEntityInf...
    constant RESPONSE_TYPE (line 459) | const RESPONSE_TYPE: ResponseType = T::RESPONSE_TYPE;
  function convert_u8_roundtrip (line 468) | fn convert_u8_roundtrip() {

FILE: binary_port/src/speculative_execution_result.rs
  type SpeculativeExecutionResult (line 31) | pub struct SpeculativeExecutionResult {
    method new (line 49) | pub fn new(
    method example (line 71) | pub fn example() -> &'static Self {
    method random (line 76) | pub fn random(rng: &mut TestRng) -> Self {
    method from (line 104) | fn from(invalid_transaction: InvalidTransaction) -> Self {
  method to_bytes (line 118) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method serialized_length (line 124) | fn serialized_length(&self) -> usize {
  method write_bytes (line 134) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method from_bytes (line 146) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  function bytesrepr_roundtrip (line 175) | fn bytesrepr_roundtrip() {

FILE: binary_port/src/state_request.rs
  type GlobalStateRequest (line 15) | pub struct GlobalStateRequest {
    method new (line 23) | pub fn new(
    method destructure (line 32) | pub fn destructure(self) -> (Option<GlobalStateIdentifier>, GlobalStat...
    method state_identifier (line 36) | pub fn state_identifier(self) -> Option<GlobalStateIdentifier> {
    method random (line 41) | pub(crate) fn random(rng: &mut TestRng) -> Self {
  method to_bytes (line 54) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method write_bytes (line 60) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method serialized_length (line 66) | fn serialized_length(&self) -> usize {
  method from_bytes (line 72) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  method fmt (line 86) | fn fmt(&self, f: &mut Formatter<'_>) -> DisplayResult {
  function bytesrepr_roundtrip (line 113) | fn bytesrepr_roundtrip() {

FILE: binary_port/src/type_wrappers.rs
  type Uptime (line 46) | pub struct Uptime(u64);
    method new (line 50) | pub fn new(value: u64) -> Self {
    method into_inner (line 55) | pub fn into_inner(self) -> u64 {
  method from (line 61) | fn from(uptime: Uptime) -> Self {
  type Error (line 67) | type Error = TryFromIntError;
  method try_from (line 69) | fn try_from(uptime: Uptime) -> Result<Self, Self::Error> {
  type ConsensusValidatorChanges (line 76) | pub struct ConsensusValidatorChanges(BTreeMap<PublicKey, Vec<(EraId, Val...
    method new (line 80) | pub fn new(value: BTreeMap<PublicKey, Vec<(EraId, ValidatorChange)>>) ...
    method into_inner (line 85) | pub fn into_inner(self) -> BTreeMap<PublicKey, Vec<(EraId, ValidatorCh...
  function from (line 91) | fn from(consensus_validator_changes: ConsensusValidatorChanges) -> Self {
  type NetworkName (line 98) | pub struct NetworkName(String);
    method new (line 102) | pub fn new(value: impl ToString) -> Self {
    method into_inner (line 107) | pub fn into_inner(self) -> String {
  method from (line 113) | fn from(network_name: NetworkName) -> Self {
  type ReactorStateName (line 120) | pub struct ReactorStateName(String);
    method new (line 124) | pub fn new(value: impl ToString) -> Self {
    method into_inner (line 129) | pub fn into_inner(self) -> String {
  method from (line 135) | fn from(reactor_state: ReactorStateName) -> Self {
  type LastProgress (line 142) | pub struct LastProgress(Timestamp);
    method new (line 146) | pub fn new(value: Timestamp) -> Self {
    method into_inner (line 151) | pub fn into_inner(self) -> Timestamp {
  method from (line 157) | fn from(last_progress: LastProgress) -> Self {
  type GetTrieFullResult (line 164) | pub struct GetTrieFullResult(Option<Bytes>);
    method new (line 168) | pub fn new(value: Option<Bytes>) -> Self {
    method into_inner (line 173) | pub fn into_inner(self) -> Option<Bytes> {
  type RewardResponse (line 180) | pub struct RewardResponse {
    method new (line 189) | pub fn new(
    method amount (line 204) | pub fn amount(&self) -> U512 {
    method era_id (line 209) | pub fn era_id(&self) -> EraId {
    method delegation_rate (line 214) | pub fn delegation_rate(&self) -> DelegationRate {
    method switch_block_hash (line 219) | pub fn switch_block_hash(&self) -> BlockHash {
  method to_bytes (line 225) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method serialized_length (line 231) | fn serialized_length(&self) -> usize {
  method write_bytes (line 238) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method from_bytes (line 247) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  type ConsensusStatus (line 261) | pub struct ConsensusStatus {
    method new (line 268) | pub fn new(validator_public_key: PublicKey, round_length: Option<TimeD...
    method validator_public_key (line 276) | pub fn validator_public_key(&self) -> &PublicKey {
    method round_length (line 281) | pub fn round_length(&self) -> Option<TimeDiff> {
  method to_bytes (line 287) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method serialized_length (line 293) | fn serialized_length(&self) -> usize {
  method write_bytes (line 297) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method from_bytes (line 304) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  type TransactionWithExecutionInfo (line 316) | pub struct TransactionWithExecutionInfo {
    method new (line 323) | pub fn new(transaction: Transaction, execution_info: Option<ExecutionI...
    method into_inner (line 331) | pub fn into_inner(self) -> (Transaction, Option<ExecutionInfo>) {
  method to_bytes (line 337) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method serialized_length (line 343) | fn serialized_length(&self) -> usize {
  method write_bytes (line 347) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method from_bytes (line 354) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  type DictionaryQueryResult (line 367) | pub struct DictionaryQueryResult {
    method new (line 374) | pub fn new(key: Key, query_result: GlobalStateQueryResult) -> Self {
    method into_inner (line 379) | pub fn into_inner(self) -> (Key, GlobalStateQueryResult) {
  method to_bytes (line 385) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method write_bytes (line 391) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method serialized_length (line 396) | fn serialized_length(&self) -> usize {
  method from_bytes (line 402) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  type AccountInformation (line 411) | pub struct AccountInformation {
    method new (line 418) | pub fn new(account: Account, merkle_proof: Vec<TrieMerkleProof<Key, St...
    method account (line 426) | pub fn account(&self) -> &Account {
    method merkle_proof (line 431) | pub fn merkle_proof(&self) -> &Vec<TrieMerkleProof<Key, StoredValue>> {
    method into_inner (line 436) | pub fn into_inner(self) -> (Account, Vec<TrieMerkleProof<Key, StoredVa...
  method to_bytes (line 442) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method write_bytes (line 448) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method serialized_length (line 453) | fn serialized_length(&self) -> usize {
  method from_bytes (line 459) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  type ContractInformation (line 468) | pub struct ContractInformation {
    method new (line 476) | pub fn new(
    method hash (line 489) | pub fn hash(&self) -> ContractHash {
    method contract (line 494) | pub fn contract(&self) -> &Contract {
    method contract_proof (line 499) | pub fn contract_proof(&self) -> &Vec<TrieMerkleProof<Key, StoredValue>> {
    method wasm (line 504) | pub fn wasm(&self) -> Option<&ValueWithProof<ContractWasm>> {
    method into_inner (line 509) | pub fn into_inner(
  method to_bytes (line 521) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method write_bytes (line 527) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method serialized_length (line 533) | fn serialized_length(&self) -> usize {
  method from_bytes (line 541) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  type AddressableEntityInformation (line 551) | pub struct AddressableEntityInformation {
    method new (line 559) | pub fn new(
    method addr (line 572) | pub fn addr(&self) -> EntityAddr {
    method entity (line 577) | pub fn entity(&self) -> &AddressableEntity {
    method entity_merkle_proof (line 582) | pub fn entity_merkle_proof(&self) -> &Vec<TrieMerkleProof<Key, StoredV...
    method bytecode (line 587) | pub fn bytecode(&self) -> Option<&ValueWithProof<ByteCode>> {
    method into_inner (line 592) | pub fn into_inner(
  method to_bytes (line 604) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method write_bytes (line 610) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method serialized_length (line 616) | fn serialized_length(&self) -> usize {
  method from_bytes (line 624) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  type ValueWithProof (line 637) | pub struct ValueWithProof<T> {
  function new (line 644) | pub fn new(value: T, merkle_proof: Vec<TrieMerkleProof<Key, StoredValue>...
  function value (line 652) | pub fn value(&self) -> &T {
  function merkle_proof (line 657) | pub fn merkle_proof(&self) -> &[TrieMerkleProof<Key, StoredValue>] {
  function into_inner (line 662) | pub fn into_inner(self) -> (T, Vec<TrieMerkleProof<Key, StoredValue>>) {
  method to_bytes (line 668) | fn to_bytes(&self) -> Result<Vec<u8>, bytesrepr::Error> {
  method write_bytes (line 674) | fn write_bytes(&self, writer: &mut Vec<u8>) -> Result<(), bytesrepr::Err...
  method serialized_length (line 679) | fn serialized_length(&self) -> usize {
  method from_bytes (line 685) | fn from_bytes(bytes: &[u8]) -> Result<(Self, &[u8]), bytesrepr::Error> {
  function uptime_roundtrip (line 711) | fn uptime_roundtrip() {
  function consensus_validator_changes_roundtrip (line 717) | fn consensus_validator_changes_roundtrip() {
  function network_name_roundtrip (line 727) | fn network_name_roundtrip() {
  function reactor_state_name_roundtrip (line 733) | fn reactor_state_name_roundtrip() {
  function last_progress_roundtrip (line 739) | fn last_progress_roundtrip() {
  function get_trie_full_result_roundtrip (line 745) | fn get_trie_full_result_roundtrip() {
  function reward_roundtrip (line 751) | fn reward_roundtrip() {
  function consensus_status_roundtrip (line 762) | fn consensus_status_roundtrip() {
  function transaction_with_execution_info_roundtrip (line 771) | fn transaction_with_execution_info_roundtrip() {
  function dictionary_query_result_roundtrip (line 784) | fn dictionary_query_result_roundtrip() {
  function contract_with_wasm_roundtrip (line 796) | fn contract_with_wasm_roundtrip() {
  function addressable_entity_with_byte_code_roundtrip (line 820) | fn addressable_entity_with_byte_code_roundtrip() {

FILE: cargo_casper/build.rs
  function main (line 3) | fn main() {

FILE: cargo_casper/project_template/src/lib.rs
  type Contract (line 7) | pub struct Contract {
    method new (line 20) | pub fn new() -> Self {
    method default (line 25) | pub fn default() -> Self {
    method increase (line 29) | pub fn increase(&mut self) {
    method get (line 33) | pub fn get(&self) -> u64 {
  method default (line 12) | fn default() -> Self {
  function test_counter (line 43) | fn test_counter() {

FILE: cargo_casper/src/cli.rs
  function extract_embedded_dir (line 15) | pub(crate) fn extract_embedded_dir(target: &Path, dir: &Dir) -> io::Resu...
  type Command (line 39) | pub(crate) enum Command {
  type Cli (line 69) | pub(crate) struct Cli {

FILE: cargo_casper/src/cli/build.rs
  function build_impl (line 8) | pub fn build_impl(

FILE: cargo_casper/src/cli/build_schema.rs
  function build_schema_impl (line 13) | pub fn build_schema_impl<W: Write>(

FILE: cargo_casper/src/cli/build_schema/artifact.rs
  constant COLLECT_SCHEMA_FUNC (line 5) | const COLLECT_SCHEMA_FUNC: &str = "__cargo_casper_collect_schema";
  type CollectSchema (line 7) | type CollectSchema = unsafe extern "C" fn(size_ptr: *mut u64) -> *mut u8;
  type Artifact (line 9) | pub(crate) struct Artifact {
    method from_path (line 14) | pub(crate) fn from_path<P: AsRef<Path>>(
    method collect_schema (line 26) | pub(crate) fn collect_schema(&self) -> serde_json::Result<serde_json::...

FILE: cargo_casper/src/cli/new.rs
  constant TEMPLATE_NAME_MARKER (line 8) | const TEMPLATE_NAME_MARKER: &str = "project_template";
  function new_impl (line 11) | pub fn new_impl(name: &str) -> Result<(), anyhow::Error> {

FILE: cargo_casper/src/compilation.rs
  type CompileJob (line 12) | pub(crate) struct CompileJob<'a> {
  function new (line 22) | pub fn new(
  function dispatch (line 37) | pub fn dispatch<T, I, S>(&self, target: T, extra_features: I) -> Result<...
  type CompilationResults (line 143) | pub(crate) struct CompilationResults {
    method artifacts (line 149) | pub fn artifacts(&self) -> &[PathBuf] {
    method get_artifact_by_extension (line 153) | pub fn get_artifact_by_extension(&self, extension: &str) -> Option<Pat...

FILE: cargo_casper/src/main.rs
  function main (line 10) | fn main() -> anyhow::Result<()> {

FILE: cargo_casper/src/utils/command_runner.rs
  type Outcome (line 16) | pub enum Outcome {
  type Line (line 26) | pub enum Line {
  method fmt (line 32) | fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
  constant DEFAULT_MAX_LINES (line 41) | pub const DEFAULT_MAX_LINES: usize = 10;
  type ProcessHandle (line 44) | pub struct ProcessHandle {
    method wait (line 52) | pub fn wait(mut self) -> Result<(), Outcome> {
  function run_process (line 94) | pub fn run_process(command: &mut Command) -> io::Result<ProcessHandle> {
  type Interactive (line 157) | pub enum Interactive {
    method is_enabled (line 168) | pub fn is_enabled(&self) -> bool {
  type LogTrail (line 177) | pub struct LogTrail {
    method new (line 191) | pub fn new(max_lines: usize, interactive: Interactive) -> Self {
    method push_line (line 205) | pub fn push_line<S: Into<String>>(&mut self, line: S) -> io::Result<()> {
  type LogTrailBuilder (line 241) | pub struct LogTrailBuilder {
    method new (line 248) | pub fn new() -> Self {
    method max_lines (line 253) | pub fn max_lines(mut self, max_lines: usize) -> Self {
    method interactive (line 259) | pub fn interactive(mut self, interactive: Interactive) -> Self {
    method build (line 265) | pub fn build(self) -> LogTrail {
  function test_run_process (line 277) | fn test_run_process() {
  function test_run_interactive_process (line 285) | fn test_run_interactive_process() {
  function test_run_process_failure (line 293) | fn test_run_process_failure() {
  function test_run_process_with_env (line 301) | fn test_run_process_with_env() {

FILE: ci/casper_updater/src/dependent_file.rs
  type DependentFile (line 9) | pub struct DependentFile {
    method new (line 19) | pub fn new<P: AsRef<Path>>(
    method update (line 40) | pub fn update(&self, updated_version: &str) {
    method path (line 49) | pub fn path(&self) -> &Path {
    method relative_path (line 53) | pub fn relative_path(&self) -> &Path {
    method contents (line 59) | pub fn contents(&self) -> String {

FILE: ci/casper_updater/src/main.rs
  constant APP_NAME (line 52) | const APP_NAME: &str = "Casper Updater";
  constant ROOT_DIR_ARG_NAME (line 54) | const ROOT_DIR_ARG_NAME: &str = "root-dir";
  constant ROOT_DIR_ARG_SHORT (line 55) | const ROOT_DIR_ARG_SHORT: char = 'r';
  constant ROOT_DIR_ARG_VALUE_NAME (line 56) | const ROOT_DIR_ARG_VALUE_NAME: &str = "PATH";
  constant ROOT_DIR_ARG_HELP (line 57) | const ROOT_DIR_ARG_HELP: &str =
  constant BUMP_ARG_NAME (line 60) | const BUMP_ARG_NAME: &str = "bump";
  constant BUMP_ARG_SHORT (line 61) | const BUMP_ARG_SHORT: char = 'b';
  constant BUMP_ARG_VALUE_NAME (line 62) | const BUMP_ARG_VALUE_NAME: &str = "VERSION-COMPONENT";
  constant BUMP_ARG_HELP (line 63) | const BUMP_ARG_HELP: &str =
  constant MAJOR (line 68) | const MAJOR: &str = "major";
  constant MINOR (line 69) | const MINOR: &str = "minor";
  constant PATCH (line 70) | const PATCH: &str = "patch";
  constant DRY_RUN_ARG_NAME (line 72) | const DRY_RUN_ARG_NAME: &str = "dry-run";
  constant DRY_RUN_ARG_SHORT (line 73) | const DRY_RUN_ARG_SHORT: char = 'd';
  constant DRY_RUN_ARG_HELP (line 74) | const DRY_RUN_ARG_HELP: &str = "Checks all regexes get matches in curren...
  constant ALLOW_EARLIER_VERSION_NAME (line 76) | const ALLOW_EARLIER_VERSION_NAME: &str = "allow-earlier-version";
  constant ALLOW_EARLIER_VERSION_HELP (line 77) | const ALLOW_EARLIER_VERSION_HELP: &str = "Allows manual setting of versi...
  type BumpVersion (line 80) | pub(crate) enum BumpVersion {
    method update (line 87) | pub(crate) fn update(self, current_version: &Version) -> Version {
  type Args (line 100) | struct Args {
  function root_dir (line 108) | pub(crate) fn root_dir() -> &'static Path {
  function bump_version (line 113) | pub(crate) fn bump_version() -> Option<BumpVersion> {
  function is_dry_run (line 118) | pub(crate) fn is_dry_run() -> bool {
  function allow_earlier_version (line 123) | pub(crate) fn allow_earlier_version() -> bool {
  function get_args (line 129) | fn get_args() -> Args {
  function main (line 199) | fn main() {

FILE: ci/casper_updater/src/package.rs
  constant CAPTURE_INDEX (line 14) | const CAPTURE_INDEX: usize = 2;
  type Package (line 18) | pub struct Package {
    method cargo (line 50) | pub fn cargo<P: AsRef<Path>>(
    method name (line 57) | pub fn name(&self) -> &str {
    method new (line 61) | fn new<P: AsRef<Path>, T: PackageConsts>(
    method update (line 111) | pub fn update(&self) {
  type PackageConsts (line 28) | trait PackageConsts {
    constant MANIFEST (line 29) | const MANIFEST: &'static str;
    method name_regex (line 30) | fn name_regex() -> &'static Regex;
    method version_regex (line 31) | fn version_regex() -> &'static Regex;
    constant MANIFEST (line 37) | const MANIFEST: &'static str = "Cargo.toml";
    method name_regex (line 39) | fn name_regex() -> &'static Regex {
    method version_regex (line 43) | fn version_regex() -> &'static Regex {
  type CargoPackage (line 34) | struct CargoPackage;
  function get_updated_version_from_user (line 148) | pub fn get_updated_version_from_user(name: &str, current_version: &Versi...

FILE: ci/casper_updater/src/regex_data.rs
  function replacement (line 13) | fn replacement(updated_version: &str) -> String {
  function replacement_with_slash (line 17) | fn replacement_with_slash(updated_version: &str) -> String {

FILE: execution_engine/benches/trie_bench.rs
  function serialize_trie_leaf (line 12) | fn serialize_trie_leaf(b: &mut Bencher) {
  function deserialize_trie_leaf (line 24) | fn deserialize_trie_leaf(b: &mut Bencher) {
  function serialize_trie_node (line 37) | fn serialize_trie_node(b: &mut Bencher) {
  function deserialize_trie_node (line 44) | fn deserialize_trie_node(b: &mut Bencher) {
  function serialize_trie_node_pointer (line 53) | fn serialize_trie_node_pointer(b: &mut Bencher) {
  function deserialize_trie_node_pointer (line 62) | fn deserialize_trie_node_pointer(b: &mut Bencher) {
  function trie_bench (line 72) | fn trie_bench(c: &mut Criterion) {

FILE: execution_engine/src/bin/run_wasm.rs
  function prepare_instance (line 15) | fn prepare_instance(module_bytes: &[u8], chainspec: &ChainspecConfig) ->...
  type RunWasmInfo (line 29) | struct RunWasmInfo {
  function run_wasm (line 34) | fn run_wasm(
  type Args (line 103) | struct Args {
  function load_wasm_file (line 117) | fn load_wasm_file<P: AsRef<Path>>(path: P) -> Vec<u8> {
  type TransactionConfig (line 129) | struct TransactionConfig {
  type ChainspecConfig (line 135) | struct ChainspecConfig {
  function main (line 143) | fn main() {
  type MinimalWasmiResolver (line 164) | struct MinimalWasmiResolver(());
  type MinimalWasmiExternals (line 167) | struct MinimalWasmiExternals {
    method new (line 173) | fn new(gas_used: u64, block_gas_limit: u64) -> Self {
  constant GAS_FUNC_IDX (line 181) | const GAS_FUNC_IDX: usize = 0;
  method resolve_func (line 184) | fn resolve_func(
  method resolve_memory (line 202) | fn resolve_memory(
  type GasLimit (line 220) | struct GasLimit;
  method invoke_index (line 225) | fn invoke_index(

FILE: execution_engine/src/engine_state/engine_config.rs
  constant DEFAULT_MAX_QUERY_DEPTH (line 16) | pub const DEFAULT_MAX_QUERY_DEPTH: u64 = 5;
  constant DEFAULT_MAX_ASSOCIATED_KEYS (line 18) | pub const DEFAULT_MAX_ASSOCIATED_KEYS: u32 = 100;
  constant DEFAULT_MAX_RUNTIME_CALL_STACK_HEIGHT (line 20) | pub const DEFAULT_MAX_RUNTIME_CALL_STACK_HEIGHT: u32 = 12;
  constant DEFAULT_MAX_STORED_VALUE_SIZE (line 26) | pub const DEFAULT_MAX_STORED_VALUE_SIZE: u32 = 8 * 1024 * 1024;
  constant DEFAULT_MINIMUM_DELEGATION_AMOUNT (line 28) | pub const DEFAULT_MINIMUM_DELEGATION_AMOUNT: u64 = 500 * 1_000_000_000;
  constant DEFAULT_MAXIMUM_DELEGATION_AMOUNT (line 30) | pub const DEFAULT_MAXIMUM_DELEGATION_AMOUNT: u64 = 1_000_000_000 * 1_000...
  constant DEFAULT_STRICT_ARGUMENT_CHECKING (line 32) | pub const DEFAULT_STRICT_ARGUMENT_CHECKING: bool = false;
  constant VESTING_SCHEDULE_LENGTH_DAYS (line 35) | const VESTING_SCHEDULE_LENGTH_DAYS: usize = 91;
  constant DAY_MILLIS (line 36) | const DAY_MILLIS: usize = 24 * 60 * 60 * 1000;
  constant DEFAULT_VESTING_SCHEDULE_LENGTH_MILLIS (line 38) | pub const DEFAULT_VESTING_SCHEDULE_LENGTH_MILLIS: u64 =
  constant DEFAULT_MAX_DELEGATORS_PER_VALIDATOR (line 41) | pub const DEFAULT_MAX_DELEGATORS_PER_VALIDATOR: u32 = 1200;
  constant DEFAULT_ALLOW_AUCTION_BIDS (line 43) | pub const DEFAULT_ALLOW_AUCTION_BIDS: bool = true;
  constant DEFAULT_ALLOW_UNRESTRICTED_TRANSFERS (line 45) | pub const DEFAULT_ALLOW_UNRESTRICTED_TRANSFERS: bool = true;
  constant DEFAULT_COMPUTE_REWARDS (line 47) | pub const DEFAULT_COMPUTE_REWARDS: bool = true;
  constant DEFAULT_PROTOCOL_VERSION (line 49) | pub const DEFAULT_PROTOCOL_VERSION: ProtocolVersion = ProtocolVersion::V...
  constant DEFAULT_BALANCE_HOLD_INTERVAL (line 51) | pub const DEFAULT_BALANCE_HOLD_INTERVAL: TimeDiff = TimeDiff::from_secon...
  constant DEFAULT_ENABLE_ENTITY (line 54) | pub const DEFAULT_ENABLE_ENTITY: bool = false;
  constant DEFAULT_TRAP_ON_AMBIGUOUS_ENTITY_VERSION (line 56) | pub(crate) const DEFAULT_TRAP_ON_AMBIGUOUS_ENTITY_VERSION: bool = false;
  type EngineConfig (line 60) | pub struct EngineConfig {
    method max_associated_keys (line 130) | pub fn max_associated_keys(&self) -> u32 {
    method max_runtime_call_stack_height (line 135) | pub fn max_runtime_call_stack_height(&self) -> u32 {
    method wasm_config (line 140) | pub fn wasm_config(&self) -> &WasmConfig {
    method system_config (line 145) | pub fn system_config(&self) -> &SystemConfig {
    method protocol_version (line 150) | pub fn protocol_version(&self) -> ProtocolVersion {
    method minimum_delegation_amount (line 155) | pub fn minimum_delegation_amount(&self) -> u64 {
    method maximum_delegation_amount (line 160) | pub fn maximum_delegation_amount(&self) -> u64 {
    method minimum_bid_amount (line 165) | pub fn minimum_bid_amount(&self) -> u64 {
    method strict_argument_checking (line 170) | pub fn strict_argument_checking(&self) -> bool {
    method vesting_schedule_period_millis (line 175) | pub fn vesting_schedule_period_millis(&self) -> u64 {
    method max_delegators_per_validator (line 180) | pub fn max_delegators_per_validator(&self) -> u32 {
    method administrative_accounts (line 185) | pub fn administrative_accounts(&self) -> &BTreeSet<AccountHash> {
    method allow_auction_bids (line 190) | pub fn allow_auction_bids(&self) -> bool {
    method allow_unrestricted_transfers (line 195) | pub fn allow_unrestricted_transfers(&self) -> bool {
    method is_administrator (line 200) | pub(crate) fn is_administrator(&self, account_hash: &AccountHash) -> b...
    method refund_handling (line 205) | pub fn refund_handling(&self) -> RefundHandling {
    method fee_handling (line 210) | pub fn fee_handling(&self) -> FeeHandling {
    method storage_costs (line 215) | pub fn storage_costs(&self) -> &StorageCosts {
    method compute_rewards (line 220) | pub fn compute_rewards(&self) -> bool {
    method trap_on_ambiguous_entity_version (line 225) | pub fn trap_on_ambiguous_entity_version(&self) -> bool {
    method rewards_handling (line 230) | pub fn rewards_handling(&self) -> RewardsHandling {
    method set_protocol_version (line 239) | pub fn set_protocol_version(&mut self, protocol_version: ProtocolVersi...
    method set_max_memory (line 245) | pub fn set_max_memory(&mut self, new_value: u32) {
  method default (line 101) | fn default() -> Self {
  type EngineConfigBuilder (line 255) | pub struct EngineConfigBuilder {
    method new (line 283) | pub fn new() -> Self {
    method with_max_query_depth (line 288) | pub fn with_max_query_depth(mut self, max_query_depth: u64) -> Self {
    method with_max_associated_keys (line 294) | pub fn with_max_associated_keys(mut self, max_associated_keys: u32) ->...
    method with_max_runtime_call_stack_height (line 300) | pub fn with_max_runtime_call_stack_height(
    method with_strict_argument_checking (line 309) | pub fn with_strict_argument_checking(mut self, value: bool) -> Self {
    method with_vesting_schedule_period_millis (line 315) | pub fn with_vesting_schedule_period_millis(mut self, value: u64) -> Se...
    method with_max_delegators_per_validator (line 321) | pub fn with_max_delegators_per_validator(mut self, value: u32) -> Self {
    method with_wasm_config (line 327) | pub fn with_wasm_config(mut self, wasm_config: WasmConfig) -> Self {
    method with_system_config (line 333) | pub fn with_system_config(mut self, system_config: SystemConfig) -> Se...
    method with_protocol_version (line 339) | pub fn with_protocol_version(mut self, protocol_version: ProtocolVersi...
    method with_wasm_max_stack_height (line 345) | pub fn with_wasm_max_stack_height(mut self, wasm_stack_height: u32) ->...
    method with_minimum_delegation_amount (line 352) | pub fn with_minimum_delegation_amount(mut self, minimum_delegation_amo...
    method with_maximum_delegation_amount (line 358) | pub fn with_maximum_delegation_amount(mut self, maximum_delegation_amo...
    method with_minimum_bid_amount (line 364) | pub fn with_minimum_bid_amount(mut self, minimum_bid_amount: u64) -> S...
    method with_administrative_accounts (line 370) | pub fn with_administrative_accounts(
    method with_allow_auction_bids (line 379) | pub fn with_allow_auction_bids(mut self, allow_auction_bids: bool) -> ...
    method with_allow_unrestricted_transfers (line 385) | pub fn with_allow_unrestricted_transfers(mut self, allow_unrestricted_...
    method with_refund_handling (line 391) | pub fn with_refund_handling(mut self, refund_handling: RefundHandling)...
    method with_fee_handling (line 409) | pub fn with_fee_handling(mut self, fee_handling: FeeHandling) -> Self {
    method with_compute_rewards (line 415) | pub fn with_compute_rewards(mut self, compute_rewards: bool) -> Self {
    method balance_hold_interval (line 421) | pub fn balance_hold_interval(mut self, balance_hold_interval: TimeDiff...
    method with_enable_entity (line 427) | pub fn with_enable_entity(mut self, enable_entity: bool) -> Self {
    method with_trap_on_ambiguous_entity_version (line 433) | pub fn with_trap_on_ambiguous_entity_version(
    method with_storage_costs (line 442) | pub fn with_storage_costs(mut self, storage_costs: StorageCosts) -> Se...
    method build (line 448) | pub fn build(self) -> EngineConfig {

FILE: execution_engine/src/engine_state/error.rs
  type Error (line 17) | pub enum Error {
    method reverter (line 59) | pub fn reverter(api_error: impl Into<ApiError>) -> Error {
    method from (line 65) | fn from(err: TransferError) -> Self {
    method from (line 71) | fn from(error: ExecError) -> Self {
    method from (line 82) | fn from(error: bytesrepr::Error) -> Self {
    method from (line 88) | fn from(error: mint::Error) -> Self {
    method from (line 94) | fn from(_: stack::RuntimeStackOverflow) -> Self {
    method from (line 100) | fn from(e: TrackingCopyError) -> Self {
  constant IS_DYNAMIC (line 106) | const IS_DYNAMIC: bool = true;
  constant STATIC_HEAP_SIZE (line 108) | const STATIC_HEAP_SIZE: usize = 0;
  method estimate_heap_size (line 111) | fn estimate_heap_size(&self) -> usize {

FILE: execution_engine/src/engine_state/execution_kind.rs
  type ExecutionKind (line 14) | pub(crate) enum ExecutionKind<'a> {
  function new (line 42) | pub(crate) fn new(
  function new_direct_invocation (line 64) | fn new_direct_invocation(

FILE: execution_engine/src/engine_state/mod.rs
  constant WASMLESS_TRANSFER_FIXED_GAS_PRICE (line 36) | pub const WASMLESS_TRANSFER_FIXED_GAS_PRICE: u8 = 1;
  type ExecutionEngineV1 (line 40) | pub struct ExecutionEngineV1 {
    method new (line 46) | pub fn new(config: EngineConfig) -> ExecutionEngineV1 {
    method config (line 51) | pub fn config(&self) -> &EngineConfig {
    method execute (line 56) | pub fn execute(
    method execute_with_tracking_copy (line 133) | pub fn execute_with_tracking_copy<R>(

FILE: execution_engine/src/engine_state/wasm_v1.rs
  constant DEFAULT_ENTRY_POINT (line 19) | const DEFAULT_ENTRY_POINT: &str = "call";
  type SessionDataDeploy (line 22) | pub struct SessionDataDeploy<'a> {
  function new (line 32) | pub fn new(
  function deploy_hash (line 49) | pub fn deploy_hash(&self) -> &DeployHash {
  function session (line 54) | pub fn session(&self) -> &ExecutableDeployItem {
  function initiator_addr (line 59) | pub fn initiator_addr(&self) -> &InitiatorAddr {
  function signers (line 64) | pub fn signers(&self) -> BTreeSet<AccountHash> {
  type SessionDataV1 (line 70) | pub struct SessionDataV1<'a> {
  function new (line 85) | pub fn new(
  function args (line 110) | pub fn args(&self) -> &RuntimeArgs {
  function target (line 115) | pub fn target(&self) -> &TransactionTarget {
  function entry_point (line 120) | pub fn entry_point(&self) -> &TransactionEntryPoint {
  function is_install_upgrade (line 125) | pub fn is_install_upgrade(&self) -> bool {
  function hash (line 130) | pub fn hash(&self) -> &TransactionV1Hash {
  function initiator_addr (line 135) | pub fn initiator_addr(&self) -> &InitiatorAddr {
  function signers (line 140) | pub fn signers(&self) -> BTreeSet<AccountHash> {
  function pricing_mode (line 145) | pub fn pricing_mode(&self) -> &PricingMode {
  type SessionInputData (line 151) | pub enum SessionInputData<'a> {
  function transaction_hash (line 166) | pub fn transaction_hash(&self) -> TransactionHash {
  function initiator_addr (line 176) | pub fn initiator_addr(&self) -> &InitiatorAddr {
  function signers (line 184) | pub fn signers(&self) -> BTreeSet<AccountHash> {
  function is_standard_payment (line 192) | pub fn is_standard_payment(&self) -> bool {
  function is_install_upgrade_allowed (line 200) | pub fn is_install_upgrade_allowed(&self) -> bool {
  type InvalidRequest (line 210) | pub enum InvalidRequest {
  type SessionKind (line 232) | pub enum SessionKind {
  type ExecutableItem (line 239) | pub enum ExecutableItem {
    method is_install_upgrade_allowed (line 257) | pub fn is_install_upgrade_allowed(&self) -> bool {
  type BlockInfo (line 270) | pub struct BlockInfo {
    method new (line 285) | pub fn new(
    method with_state_hash (line 302) | pub fn with_state_hash(&mut self, state_hash: Digest) {
    method state_hash (line 307) | pub fn state_hash(&self) -> Digest {
    method block_time (line 312) | pub fn block_time(&self) -> BlockTime {
    method parent_block_hash (line 317) | pub fn parent_block_hash(&self) -> BlockHash {
    method block_height (line 322) | pub fn block_height(&self) -> u64 {
    method protocol_version (line 327) | pub fn protocol_version(&self) -> ProtocolVersion {
  type WasmV1Request (line 334) | pub struct WasmV1Request {
    method new_from_executable_deploy_item (line 357) | pub fn new_from_executable_deploy_item(
    method new_payment_from_executable_deploy_item (line 378) | pub fn new_payment_from_executable_deploy_item(
    method new_from_executable_info (line 398) | pub(crate) fn new_from_executable_info(
    method new_session (line 421) | pub fn new_session(
    method new_custom_payment (line 441) | pub fn new_custom_payment(
  type WasmV1Result (line 463) | pub struct WasmV1Result {
    method new (line 485) | pub fn new(
    method error (line 508) | pub fn error(&self) -> Option<&EngineError> {
    method transfers (line 513) | pub fn transfers(&self) -> &Vec<Transfer> {
    method limit (line 518) | pub fn limit(&self) -> Gas {
    method consumed (line 523) | pub fn consumed(&self) -> Gas {
    method effects (line 528) | pub fn effects(&self) -> &Effects {
    method cache (line 533) | pub fn cache(&self) -> Option<&TrackingCopyCache> {
    method messages (line 538) | pub fn messages(&self) -> &Messages {
    method ret (line 543) | pub fn ret(&self) -> Option<&CLValue> {
    method root_not_found (line 548) | pub fn root_not_found(gas_limit: Gas, state_hash: Digest) -> Self {
    method precondition_failure (line 562) | pub fn precondition_failure(gas_limit: Gas, error: EngineError) -> Self {
    method invalid_executable_item (line 576) | pub fn invalid_executable_item(gas_limit: Gas, error: InvalidRequest) ...
    method has_precondition_failure (line 593) | pub fn has_precondition_failure(&self) -> bool {
    method from_transfer_result (line 598) | pub fn from_transfer_result(transfer_result: TransferResult, consumed:...
    method balance_increased_by_amount (line 635) | pub fn balance_increased_by_amount(&self, addr: URefAddr, amount: U512...
  type ExecutableInfo (line 651) | struct ExecutableInfo {
  type Executable (line 657) | pub(crate) trait Executable {
    method item (line 658) | fn item(&self) -> ExecutableItem;
    method entry_point (line 659) | fn entry_point(&self) -> &String;
    method args (line 660) | fn args(&self) -> &RuntimeArgs;
    method phase (line 661) | fn phase(&self) -> Phase;
    method item (line 668) | fn item(&self) -> ExecutableItem {
    method entry_point (line 672) | fn entry_point(&self) -> &String {
    method args (line 676) | fn args(&self) -> &RuntimeArgs {
    method phase (line 680) | fn phase(&self) -> Phase {
    method item (line 853) | fn item(&self) -> ExecutableItem {
    method entry_point (line 857) | fn entry_point(&self) -> &String {
    method args (line 861) | fn args(&self) -> &RuntimeArgs {
    method phase (line 865) | fn phase(&self) -> Phase {
  type SessionInfo (line 665) | struct SessionInfo(ExecutableInfo);
    type Error (line 697) | type Error = InvalidRequest;
    method try_from (line 699) | fn try_from(input_data: &SessionInputData) -> Result<Self, Self::Error> {
    type Error (line 708) | type Error = InvalidRequest;
    method try_from (line 710) | fn try_from(deploy_data: &SessionDataDeploy) -> Result<Self, Self::Err...
    type Error (line 796) | type Error = InvalidRequest;
    method try_from (line 798) | fn try_from(v1_txn: &SessionDataV1) -> Result<Self, Self::Error> {
  function build_session_info_for_executable_item (line 717) | fn build_session_info_for_executable_item(
  type PaymentInfo (line 850) | struct PaymentInfo(ExecutableInfo);
    type Error (line 686) | type Error = InvalidRequest;
    method try_from (line 688) | fn try_from(input_data: &SessionInputData) -> Result<Self, Self::Error> {
    type Error (line 871) | type Error = InvalidRequest;
    method try_from (line 873) | fn try_from(deploy_data: &SessionDataDeploy) -> Result<Self, Self::Err...
    type Error (line 954) | type Error = InvalidRequest;
    method try_from (line 956) | fn try_from(v1_txn: &SessionDataV1) -> Result<Self, Self::Error> {
  function build_payment_info_for_executable_item (line 880) | fn build_payment_info_for_executable_item(

FILE: execution_engine/src/execution/error.rs
  type Error (line 24) | pub enum Error {
    method from (line 204) | fn from(error: PreprocessingError) -> Self {
    method from (line 210) | fn from(_optimizer_error: casper_wasm_utils::OptimizerError) -> Self {
    method type_mismatch (line 217) | pub fn type_mismatch(expected: CLType, found: CLType) -> Error {
    method from (line 228) | fn from(error: casper_wasmi::Error) -> Self {
    method from (line 240) | fn from(e: global_state::error::Error) -> Self {
    method from (line 246) | fn from(e: bytesrepr::Error) -> Self {
    method from (line 252) | fn from(e: elements::Error) -> Self {
    method from (line 258) | fn from(err: ResolverError) -> Self {
    method from (line 264) | fn from(err: AddKeyFailure) -> Self {
    method from (line 270) | fn from(err: RemoveKeyFailure) -> Self {
    method from (line 276) | fn from(err: UpdateKeyFailure) -> Self {
    method from (line 282) | fn from(err: SetThresholdFailure) -> Self {
    method from (line 288) | fn from(error: system::Error) -> Self {
    method from (line 294) | fn from(e: CLValueError) -> Self {
    method from (line 300) | fn from(_: stack::RuntimeStackOverflow) -> Self {
    method from (line 306) | fn from(e: TrackingCopyError) -> Self {

FILE: execution_engine/src/execution/executor.rs
  constant ARG_AMOUNT (line 21) | const ARG_AMOUNT: &str = "amount";
  function try_get_amount (line 23) | fn try_get_amount(runtime_args: &RuntimeArgs) -> Result<U512, ExecError> {
  type Executor (line 30) | pub struct Executor {
    method new (line 36) | pub fn new(config: EngineConfig) -> Self {
    method exec (line 45) | pub(crate) fn exec<R>(
    method create_runtime_context (line 179) | fn create_runtime_context<'a, R>(

FILE: execution_engine/src/resolvers/error.rs
  type ResolverError (line 9) | pub enum ResolverError {

FILE: execution_engine/src/resolvers/memory_resolver.rs
  type MemoryResolver (line 10) | pub trait MemoryResolver {
    method memory_ref (line 12) | fn memory_ref(&self) -> Result<MemoryRef, ResolverError>;

FILE: execution_engine/src/resolvers/mod.rs
  function create_module_resolver (line 18) | pub(crate) fn create_module_resolver(
  function resolve_invalid_module (line 38) | fn resolve_invalid_module() {
  function protocol_version_1_always_resolves (line 46) | fn protocol_version_1_always_resolves() {

FILE: execution_engine/src/resolvers/v1_function_index.rs
  type FunctionIndex (line 8) | pub(crate) enum FunctionIndex {
    type Error (line 80) | type Error = &'static str;
    method try_from (line 81) | fn try_from(value: usize) -> Result<Self, Self::Error> {
  function from (line 72) | fn from(index: FunctionIndex) -> usize {
  function primitive_to_enum (line 91) | fn primitive_to_enum() {
  function enum_to_primitive (line 96) | fn enum_to_primitive() {
  function invalid_index (line 102) | fn invalid_index() {

FILE: execution_engine/src/resolvers/v1_resolver.rs
  type RuntimeModuleImportResolver (line 12) | pub(crate) struct RuntimeModuleImportResolver {
    method new (line 18) | pub(crate) fn new(max_memory: u32) -> Self {
  method memory_ref (line 27) | fn memory_ref(&self) -> Result<MemoryRef, ResolverError> {
  method resolve_func (line 37) | fn resolve_func(
  method resolve_memory (line 290) | fn resolve_memory(

FILE: execution_engine/src/runtime/args.rs
  type Args (line 3) | pub(crate) trait Args
    method parse (line 7) | fn parse(args: RuntimeArgs) -> Result<Self, Trap>;
    method parse (line 14) | fn parse(args: RuntimeArgs) -> Result<Self, Trap> {
    method parse (line 25) | fn parse(args: RuntimeArgs) -> Result<Self, Trap> {
    method parse (line 38) | fn parse(args: RuntimeArgs) -> Result<Self, Trap> {
    method parse (line 53) | fn parse(args: RuntimeArgs) -> Result<Self, Trap> {
    method parse (line 70) | fn parse(args: RuntimeArgs) -> Result<Self, Trap> {
    method parse (line 89) | fn parse(args: RuntimeArgs) -> Result<Self, Trap> {
    method parse (line 110) | fn parse(args: RuntimeArgs) -> Result<Self, Trap> {
    method parse (line 133) | fn parse(args: RuntimeArgs) -> Result<Self, Trap> {
    method parse (line 158) | fn parse(args: RuntimeArgs) -> Result<Self, Trap> {
    method parse (line 185) | fn parse(args: RuntimeArgs) -> Result<Self, Trap> {
    method parse (line 215) | fn parse(args: RuntimeArgs) -> Result<Self, Trap> {

FILE: execution_engine/src/runtime/auction_internal.rs
  function from (line 28) | fn from(exec_error: ExecError) -> Self {
  method read (line 43) | fn read<T: FromBytes + CLTyped>(&mut self, uref: URef) -> Result<Option<...
  method write (line 64) | fn write<T: ToBytes + CLTyped>(&mut self, uref: URef, value: T) -> Resul...
  method read_bid (line 74) | fn read_bid(&mut self, key: &Key) -> Result<Option<BidKind>, Error> {
  method write_bid (line 93) | fn write_bid(&mut self, key: Key, bid_kind: BidKind) -> Result<(), Error> {
  method read_unbond (line 102) | fn read_unbond(&mut self, bid_addr: BidAddr) -> Result<Option<Unbond>, E...
  method write_unbond (line 121) | fn write_unbond(&mut self, bid_addr: BidAddr, unbond: Option<Unbond>) ->...
  method record_era_info (line 141) | fn record_era_info(&mut self, era_info: EraInfo) -> Result<(), Error> {
  method prune_bid (line 146) | fn prune_bid(&mut self, bid_addr: BidAddr) {
  method get_caller (line 155) | fn get_caller(&self) -> AccountHash {
  method is_allowed_session_caller (line 159) | fn is_allowed_session_caller(&self, account_hash: &AccountHash) -> bool {
  method is_valid_uref (line 163) | fn is_valid_uref(&self, uref: URef) -> bool {
  method named_keys_get (line 167) | fn named_keys_get(&self, name: &str) -> Option<Key> {
  method get_keys (line 171) | fn get_keys(&mut self, key_tag: &KeyTag) -> Result<BTreeSet<Key>, Error> {
  method get_keys_by_prefix (line 178) | fn get_keys_by_prefix(&mut self, prefix: &[u8]) -> Result<Vec<Key>, Erro...
  method delegator_count (line 187) | fn delegator_count(&mut self, bid_addr: &BidAddr) -> Result<usize, Error> {
  method reservation_count (line 213) | fn reservation_count(&mut self, bid_addr: &BidAddr) -> Result<usize, Err...
  method used_reservation_count (line 239) | fn used_reservation_count(&mut self, bid_addr: &BidAddr) -> Result<usize...
  method vesting_schedule_period_millis (line 294) | fn vesting_schedule_period_millis(&self) -> u64 {
  method allow_auction_bids (line 300) | fn allow_auction_bids(&self) -> bool {
  method should_compute_rewards (line 304) | fn should_compute_rewards(&self) -> bool {
  method unbond (line 313) | fn unbond(&mut self, unbond_kind: &UnbondKind, unbond_era: &UnbondEra) -...
  method mint_transfer_direct (line 389) | fn mint_transfer_direct(
  method mint_into_existing_purse (line 438) | fn mint_into_existing_purse(
  method create_purse (line 474) | fn create_purse(&mut self) -> Result<URef, Error> {
  method available_balance (line 480) | fn available_balance(&mut self, purse: URef) -> Result<Option<U512>, Err...
  method read_base_round_reward (line 485) | fn read_base_round_reward(&mut self) -> Result<U512, Error> {
  method mint (line 493) | fn mint(&mut self, amount: U512) -> Result<URef, Error> {
  method reduce_total_supply (line 501) | fn reduce_total_supply(&mut self, amount: U512) -> Result<(), Error> {
  method get_main_purse (line 516) | fn get_main_purse(&self) -> Result<URef, Error> {
  method set_main_purse (line 533) | fn set_main_purse(&mut self, purse: URef) {

FILE: execution_engine/src/runtime/cryptography.rs
  constant DIGEST_LENGTH (line 12) | pub const DIGEST_LENGTH: usize = 32;
  function blake2b (line 15) | pub fn blake2b<T: AsRef<[u8]>>(data: T) -> [u8; DIGEST_LENGTH] {
  function blake3 (line 29) | pub fn blake3<T: AsRef<[u8]>>(data: T) -> [u8; DIGEST_LENGTH] {
  function sha256 (line 41) | pub fn sha256<T: AsRef<[u8]>>(data: T) -> [u8; DIGEST_LENGTH] {

FILE: execution_engine/src/runtime/externals.rs
  method invoke_index (line 30) | fn invoke_index(

FILE: execution_engine/src/runtime/handle_payment_internal.rs
  function from (line 18) | fn from(exec_error: ExecError) -> Self {
  method transfer_purse_to_account (line 34) | fn transfer_purse_to_account(
  method transfer_purse_to_purse (line 47) | fn transfer_purse_to_purse(
  method available_balance (line 66) | fn available_balance(&mut self, purse: URef) -> Result<Option<U512>, Err...
  method reduce_total_supply (line 71) | fn reduce_total_supply(&mut self, amount: U512) -> Result<(), Error> {
  method get_key (line 90) | fn get_key(&mut self, name: &str) -> Option<Key> {
  method put_key (line 131) | fn put_key(&mut self, name: &str, key: Key) -> Result<(), Error> {
  method remove_key (line 137) | fn remove_key(&mut self, name: &str) -> Result<(), Error> {
  method get_phase (line 143) | fn get_phase(&self) -> Phase {
  method get_caller (line 147) | fn get_caller(&self) -> AccountHash {
  method refund_handling (line 151) | fn refund_handling(&self) -> RefundHandling {
  method fee_handling (line 155) | fn fee_handling(&self) -> FeeHandling {
  method administrative_accounts (line 159) | fn administrative_accounts(&self) -> BTreeSet<AccountHash> {
  method write_balance (line 171) | fn write_balance(&mut self, purse_uref: URef, amount: U512) -> Result<()...

FILE: execution_engine/src/runtime/host_function_flag.rs
  type HostFunctionFlag (line 9) | pub(super) struct HostFunctionFlag {
    method is_in_host_function_scope (line 17) | pub(super) fn is_in_host_function_scope(&self) -> bool {
    method enter_host_function_scope (line 27) | pub(super) fn enter_host_function_scope(&self) -> ScopedHostFunctionFl...
  type ScopedHostFunctionFlag (line 40) | pub(super) struct ScopedHostFunctionFlag {
  method drop (line 45) | fn drop(&mut self) {
  function should_handle_multiple_scopes (line 60) | fn should_handle_multiple_scopes() {

FILE: execution_engine/src/runtime/mint_internal.rs
  function from (line 24) | fn from(exec_error: ExecError) -> Self {
  method get_caller (line 40) | fn get_caller(&self) -> AccountHash {
  method get_immediate_caller (line 44) | fn get_immediate_caller(&self) -> Option<Caller> {
  method is_called_from_standard_payment (line 48) | fn is_called_from_standard_payment(&self) -> bool {
  method get_system_entity_registry (line 52) | fn get_system_entity_registry(&self) -> Result<SystemHashRegistry, Provi...
  method runtime_footprint_by_account_hash (line 59) | fn runtime_footprint_by_account_hash(
  method get_phase (line 71) | fn get_phase(&self) -> Phase {
  method get_key (line 75) | fn get_key(&self, name: &str) -> Option<Key> {
  method get_approved_spending_limit (line 79) | fn get_approved_spending_limit(&self) -> U512 {
  method sub_approved_spending_limit (line 83) | fn sub_approved_spending_limit(&mut self, transferred: U512) {
  method get_main_purse (line 89) | fn get_main_purse(&self) -> Option<URef> {
  method is_administrator (line 93) | fn is_administrator(&self, account_hash: &AccountHash) -> bool {
  method allow_unrestricted_transfers (line 97) | fn allow_unrestricted_transfers(&self) -> bool {
  method is_valid_uref (line 102) | fn is_valid_uref(&self, uref: &URef) -> bool {
  method new_uref (line 111) | fn new_uref<T: CLTyped + ToBytes>(&mut self, init: T) -> Result<URef, Er...
  method read (line 118) | fn read<T: CLTyped + FromBytes>(&mut self, uref: URef) -> Result<Option<...
  method write_amount (line 133) | fn write_amount(&mut self, uref: URef, amount: U512) -> Result<(), Error> {
  method add (line 140) | fn add<T: CLTyped + ToBytes>(&mut self, uref: URef, value: T) -> Result<...
  method total_balance (line 147) | fn total_balance(&mut self, purse: URef) -> Result<U512, Error> {
  method available_balance (line 152) | fn available_balance(&mut self, purse: URef) -> Result<Option<U512>, Err...
  method write_balance (line 157) | fn write_balance(&mut self, uref: URef, balance: U512) -> Result<(), Err...
  method add_balance (line 164) | fn add_balance(&mut self, uref: URef, value: U512) -> Result<(), Error> {
  method record_transfer (line 176) | fn record_transfer(
  method purse_exists (line 195) | fn purse_exists(&mut self, uref: URef) -> Result<bool, Error> {

FILE: execution_engine/src/runtime/mod.rs
  type CallContractIdentifier (line 82) | enum CallContractIdentifier {
  type CallerInformation (line 94) | enum CallerInformation {
    type Error (line 101) | type Error = ApiError;
    method try_from (line 103) | fn try_from(value: u8) -> Result<Self, Self::Error> {
  type Runtime (line 114) | pub struct Runtime<'a, R> {
  function new (line 128) | pub(crate) fn new(context: RuntimeContext<'a, R>) -> Self {
  function new_invocation_runtime (line 140) | fn new_invocation_runtime(
  function new_with_stack (line 159) | pub(crate) fn new_with_stack(
  function check_preconditions (line 177) | fn check_preconditions(stack: &RuntimeStack) {
  function context (line 190) | pub(crate) fn context(&self) -> &RuntimeContext<'a, R> {
  function gas (line 194) | fn gas(&mut self, amount: Gas) -> Result<(), ExecError> {
  function gas_counter (line 199) | fn gas_counter(&self) -> Gas {
  function set_gas_counter (line 204) | fn set_gas_counter(&mut self, new_gas_counter: Gas) {
  function charge_system_contract_call (line 214) | pub(crate) fn charge_system_contract_call<T>(&mut self, amount: T) -> Re...
  function checked_memory_slice (line 226) | fn checked_memory_slice<Ret>(
  function bytes_from_mem (line 263) | fn bytes_from_mem(&self, ptr: u32, size: usize) -> Result<Vec<u8>, ExecE...
  function t_from_mem (line 269) | fn t_from_mem<T: FromBytes>(&self, ptr: u32, size: u32) -> Result<T, Exe...
  function key_from_mem (line 278) | fn key_from_mem(&mut self, key_ptr: u32, key_size: u32) -> Result<Key, E...
  function cl_value_from_mem (line 284) | fn cl_value_from_mem(
  function string_from_mem (line 294) | fn string_from_mem(&self, ptr: u32, size: u32) -> Result<String, Trap> {
  function get_module_from_entry_points (line 298) | fn get_module_from_entry_points(
  function is_valid_uref (line 309) | fn is_valid_uref(&self, uref_ptr: u32, uref_size: u32) -> Result<bool, T...
  function load_key (line 315) | fn load_key(
  function has_key (line 361) | fn has_key(&mut self, name_ptr: u32, name_size: u32) -> Result<i32, Trap> {
  function put_key (line 370) | fn put_key(
  function remove_key (line 391) | fn remove_key(&mut self, name_ptr: u32, name_size: u32) -> Result<(), Tr...
  function get_main_purse (line 398) | fn get_main_purse(&mut self, dest_ptr: u32) -> Result<(), Trap> {
  function get_caller (line 408) | fn get_caller(&mut self, output_size_ptr: u32) -> Result<Result<(), ApiE...
  function get_immediate_caller (line 433) | fn get_immediate_caller(&self) -> Option<&RuntimeStackFrame> {
  function is_allowed_session_caller (line 439) | fn is_allowed_session_caller(&self, provided_account_hash: &AccountHash)...
  function get_phase (line 451) | fn get_phase(&mut self, dest_ptr: u32) -> Result<(), Trap> {
  function get_block_info (line 460) | fn get_block_info(&self, field_idx: u8, dest_ptr: u32) -> Result<(), Tra...
  function get_blocktime (line 512) | fn get_blocktime(&self, dest_ptr: u32) -> Result<(), Trap> {
  function load_call_stack (line 524) | fn load_call_stack(
  function load_caller_information (line 584) | fn load_caller_information(
  function ret (line 682) | fn ret(&mut self, value_ptr: u32, value_size: usize) -> Trap {
  function is_system_contract (line 715) | fn is_system_contract(&self, hash_addr: HashAddr) -> Result<bool, ExecEr...
  function get_named_argument (line 719) | fn get_named_argument<T: FromBytes + CLTyped>(
  function try_get_named_argument (line 731) | fn try_get_named_argument<T: FromBytes + CLTyped>(
  function reverter (line 747) | fn reverter<T: Into<ApiError>>(error: T) -> ExecError {
  function call_host_mint (line 771) | fn call_host_mint(
  function call_host_handle_payment (line 923) | fn call_host_handle_payment(
  function call_host_auction (line 1013) | fn call_host_auction(
  function call_contract_with_stack (line 1379) | pub(crate) fn call_contract_with_stack(
  function call_package_version_with_stack (line 1392) | pub fn call_package_version_with_stack(
  function execute_module_bytes (line 1412) | pub(crate) fn execute_module_bytes(
  function call_contract (line 1472) | pub fn call_contract(
  function call_versioned_contract (line 1487) | pub fn call_versioned_contract(
  function call_package_version (line 1506) | pub fn call_package_version(
  function get_protocol_version_for_entity_version (line 1539) | fn get_protocol_version_for_entity_version(
  function get_key_from_entity_addr (line 1581) | fn get_key_from_entity_addr(&self, entity_addr: EntityAddr) -> Key {
  function get_context_key_for_contract_call (line 1593) | fn get_context_key_for_contract_call(
  function try_get_memory (line 1624) | fn try_get_memory(&self) -> Result<&MemoryRef, ExecError> {
  function try_get_module (line 1630) | fn try_get_module(&self) -> Result<&Module, ExecError> {
  function try_get_stack (line 1636) | fn try_get_stack(&self) -> Result<&RuntimeStack, ExecError> {
  function maybe_system_type (line 1640) | fn maybe_system_type(&self, hash_addr: HashAddr) -> Option<SystemEntityT...
  function is_mint (line 1658) | fn is_mint(&self, hash_addr: HashAddr) -> Option<SystemEntityType> {
  function is_handle_payment (line 1674) | fn is_handle_payment(&self, hash_addr: HashAddr) -> Option<SystemEntityT...
  function is_auction (line 1690) | fn is_auction(&self, hash_addr: HashAddr) -> Option<SystemEntityType> {
  function execute_contract (line 1706) | fn execute_contract(
  function call_contract_host_buffer (line 2198) | fn call_contract_host_buffer(
  function call_versioned_contract_host_buffer (line 2230) | fn call_versioned_contract_host_buffer(
  function call_package_version_host_buffer (line 2268) | fn call_package_version_host_buffer(
  function check_host_buffer (line 2308) | fn check_host_buffer(&mut self) -> Result<(), ApiError> {
  function manage_call_contract_host_buffer (line 2316) | fn manage_call_contract_host_buffer(
  function load_named_keys (line 2344) | fn load_named_keys(
  function create_contract_package (line 2392) | fn create_contract_package(
  function create_package (line 2413) | fn create_package(&mut self, is_locked: PackageStatus) -> Result<(Packag...
  function create_contract_package_at_hash (line 2425) | fn create_contract_package_at_hash(
  function create_contract_user_group_by_contract_package (line 2444) | fn create_contract_user_group_by_contract_package(
  function create_contract_user_group (line 2518) | fn create_contract_user_group(
  function add_contract_version (line 2600) | fn add_contract_version(
  function add_contract_version_by_contract_package (line 2631) | fn add_contract_version_by_contract_package(
  function add_contract_version_by_package (line 2749) | fn add_contract_version_by_package(
  function carry_forward_message_topics (line 2874) | fn carry_forward_message_topics(
  function new_version_entity_parts (line 2925) | fn new_version_entity_parts(
  function disable_contract_version (line 3020) | fn disable_contract_version(
  function enable_contract_version (line 3070) | fn enable_contract_version(
  function function_address (line 3122) | fn function_address(&mut self, hash_bytes: [u8; 32], dest_ptr: u32) -> R...
  function new_uref (line 3130) | fn new_uref(&mut self, uref_ptr: u32, value_ptr: u32, value_size: u32) -...
  function write (line 3139) | fn write(
  function record_transfer (line 3154) | fn record_transfer(
  function record_era_info (line 3187) | fn record_era_info(&mut self, era_info: EraInfo) -> Result<(), ExecError> {
  function add (line 3206) | fn add(
  function read (line 3225) | fn read(
  function revert (line 3262) | fn revert(&mut self, status: u32) -> Trap {
  function can_manage_keys (line 3271) | fn can_manage_keys(&self) -> bool {
  function add_associated_key (line 3298) | fn add_associated_key(
  function remove_associated_key (line 3330) | fn remove_associated_key(
  function update_associated_key (line 3355) | fn update_associated_key(
  function set_action_threshold (line 3387) | fn set_action_threshold(
  function get_mint_hash (line 3412) | fn get_mint_hash(&self) -> Result<AddressableEntityHash, ExecError> {
  function get_handle_payment_hash (line 3419) | fn get_handle_payment_hash(&self) -> Result<AddressableEntityHash, ExecE...
  function get_standard_payment_hash (line 3426) | fn get_standard_payment_hash(&self) -> Result<AddressableEntityHash, Exe...
  function get_auction_hash (line 3433) | fn get_auction_hash(&self) -> Result<AddressableEntityHash, ExecError> {
  function mint_read_base_round_reward (line 3439) | fn mint_read_base_round_reward(
  function mint_mint (line 3457) | fn mint_mint(
  function mint_reduce_total_supply (line 3477) | fn mint_reduce_total_supply(
  function mint_create (line 3501) | fn mint_create(
  function create_purse (line 3511) | fn create_purse(&mut self) -> Result<URef, ExecError> {
  function mint_transfer (line 3518) | fn mint_transfer(
  function transfer_to_new_account (line 3549) | fn transfer_to_new_account(
  function transfer_to_existing_account (line 3672) | fn transfer_to_existing_account(
  function transfer_to_account (line 3690) | fn transfer_to_account(
  function transfer_from_purse_to_account_hash (line 3702) | fn transfer_from_purse_to_account_hash(
  function transfer_from_purse_to_account (line 3777) | fn transfer_from_purse_to_account(
  function transfer_from_purse_to_purse (line 3817) | fn transfer_from_purse_to_purse(
  function total_balance (line 3832) | fn total_balance(&mut self, purse: URef) -> Result<U512, ExecError> {
  function available_balance (line 3839) | fn available_balance(&mut self, purse: URef) -> Result<Option<U512>, Exe...
  function get_balance_host_buffer (line 3846) | fn get_balance_host_buffer(
  function get_system_contract (line 3891) | fn get_system_contract(
  function take_host_buffer (line 3912) | pub fn take_host_buffer(&mut self) -> Option<CLValue> {
  function can_write_to_host_buffer (line 3919) | fn can_write_to_host_buffer(&self) -> bool {
  function write_host_buffer (line 3924) | fn write_host_buffer(&mut self, data: CLValue) -> Result<(), ApiError> {
  function read_host_buffer (line 3932) | fn read_host_buffer(
  function print (line 3975) | fn print(&mut self, text_ptr: u32, text_size: u32) -> Result<(), Trap> {
  function get_named_arg_size (line 3981) | fn get_named_arg_size(
  function get_named_arg (line 4013) | fn get_named_arg(
  function validate_entry_point_access (line 4043) | fn validate_entry_point_access(
  function remove_contract_user_group (line 4081) | fn remove_contract_user_group(
  function provision_contract_user_group_uref (line 4169) | fn provision_contract_user_group_uref(
  function remove_contract_user_group_urefs (line 4271) | fn remove_contract_user_group_urefs(
  function charge_host_function_call (line 4339) | fn charge_host_function_call<T>(
  function new_dictionary (line 4355) | fn new_dictionary(&mut self, output_size_ptr: u32) -> Result<Result<(), ...
  function dictionary_get (line 4384) | fn dictionary_get(
  function dictionary_read (line 4433) | fn dictionary_read(
  function dictionary_put (line 4468) | fn dictionary_put(
  function is_system_immediate_caller (line 4506) | fn is_system_immediate_caller(&self) -> Result<bool, ExecError> {
  function load_authorization_keys (line 4529) | fn load_authorization_keys(
  function prune (line 4574) | fn prune(&mut self, key: Key) {
  function migrate_contract_and_contract_package (line 4578) | pub(crate) fn migrate_contract_and_contract_package(
  function add_message_topic (line 4592) | fn add_message_topic(&mut self, topic_name: &str) -> Result<Result<(), A...
  function emit_message (line 4600) | fn emit_message(
  function get_minimum_delegation_rate (line 4671) | fn get_minimum_delegation_rate(&self) -> Result<u8, ExecError> {
  function dump_runtime_stack_info (line 4698) | fn dump_runtime_stack_info(instance: casper_wasmi::ModuleRef, max_stack_...

FILE: execution_engine/src/runtime/stack.rs
  type RuntimeStackFrame (line 10) | pub type RuntimeStackFrame = Caller;
  type RuntimeStack (line 14) | pub struct RuntimeStack {
    method new (line 30) | pub fn new(max_height: usize) -> Self {
    method new_with_frame (line 38) | pub fn new_with_frame(max_height: usize, frame: RuntimeStackFrame) -> ...
    method is_empty (line 45) | pub fn is_empty(&self) -> bool {
    method len (line 50) | pub fn len(&self) -> usize {
    method current_frame (line 55) | pub fn current_frame(&self) -> Option<&RuntimeStackFrame> {
    method previous_frame (line 60) | pub fn previous_frame(&self) -> Option<&RuntimeStackFrame> {
    method first_frame (line 65) | pub fn first_frame(&self) -> Option<&RuntimeStackFrame> {
    method pop (line 71) | fn pop(&mut self) -> Result<(), RuntimeStackUnderflow> {
    method push (line 77) | pub fn push(&mut self, frame: RuntimeStackFrame) -> Result<(), Runtime...
    method call_stack_elements (line 88) | pub fn call_stack_elements(&self) -> &Vec<Caller> {
    method from_account_hash (line 93) | pub fn from_account_hash(account_hash: AccountHash, max_height: usize)...
  type RuntimeStackUnderflow (line 22) | struct RuntimeStackUnderflow;
  type RuntimeStackOverflow (line 26) | pub struct RuntimeStackOverflow;
  function nth_frame (line 109) | fn nth_frame(n: usize) -> Caller {
  function stack_should_respect_max_height_after_clone (line 118) | fn stack_should_respect_max_height_after_clone() {
  function stack_should_work_as_expected (line 131) | fn stack_should_work_as_expected() {

FILE: execution_engine/src/runtime/standard_payment_internal.rs
  constant METHOD_GET_PAYMENT_PURSE (line 15) | pub(crate) const METHOD_GET_PAYMENT_PURSE: &str = "get_payment_purse";
  function from (line 18) | fn from(exec_error: execution::Error) -> Self {
  method get_main_purse (line 34) | fn get_main_purse(&mut self) -> Result<URef, ApiError> {
  method transfer_purse_to_account (line 45) | fn transfer_purse_to_account(
  method get_payment_purse (line 64) | fn get_payment_purse(&mut self) -> Result<URef, ApiError> {

FILE: execution_engine/src/runtime/utils.rs
  function instance_and_memory (line 26) | pub(super) fn instance_and_memory(
  function attenuate_uref_in_args (line 45) | pub(super) fn attenuate_uref_in_args(
  function extract_urefs (line 62) | pub(super) fn extract_urefs(cl_value: &CLValue) -> Result<Vec<URef>, Exe...
  function rewrite_urefs (line 73) | fn rewrite_urefs(cl_value: CLValue, mut func: impl FnMut(&mut URef)) -> ...
  function cl_value_with_urefs_arb (line 1178) | fn cl_value_with_urefs_arb() -> impl Strategy<Value = (CLValue, Vec<URef...
  function extract_from_public_keys_to_urefs_map (line 1347) | fn extract_from_public_keys_to_urefs_map() {
  function extract_from_public_keys_to_uref_keys_map (line 1361) | fn extract_from_public_keys_to_uref_keys_map() {
  function should_modify_urefs (line 1376) | fn should_modify_urefs() {

FILE: execution_engine/src/runtime/wasm_prep.rs
  constant ATOMIC_OPCODE_PREFIX (line 19) | const ATOMIC_OPCODE_PREFIX: u8 = 0xfe;
  constant BULK_OPCODE_PREFIX (line 20) | const BULK_OPCODE_PREFIX: u8 = 0xfc;
  constant SIMD_OPCODE_PREFIX (line 21) | const SIMD_OPCODE_PREFIX: u8 = 0xfd;
  constant DEFAULT_GAS_MODULE_NAME (line 23) | const DEFAULT_GAS_MODULE_NAME: &str = "env";
  constant INTERNAL_GAS_FUNCTION_NAME (line 25) | const INTERNAL_GAS_FUNCTION_NAME: &str = "gas";
  constant DEFAULT_MAX_TABLE_SIZE (line 28) | pub const DEFAULT_MAX_TABLE_SIZE: u32 = 4096;
  constant DEFAULT_BR_TABLE_MAX_SIZE (line 30) | pub const DEFAULT_BR_TABLE_MAX_SIZE: u32 = 256;
  constant DEFAULT_MAX_GLOBALS (line 32) | pub const DEFAULT_MAX_GLOBALS: u32 = 256;
  constant DEFAULT_MAX_PARAMETER_COUNT (line 34) | pub const DEFAULT_MAX_PARAMETER_COUNT: u32 = 256;
  type WasmValidationError (line 39) | pub enum WasmValidationError {
  type PreprocessingError (line 109) | pub enum PreprocessingError {
    method from (line 133) | fn from(error: elements::Error) -> Self {
  function ensure_valid_access (line 149) | fn ensure_valid_access(module: &Module) -> Result<(), WasmValidationErro...
  function ensure_valid_function_index (line 229) | fn ensure_valid_function_index(index: u32, function_count: u32) -> Resul...
  function memory_section (line 237) | fn memory_section(module: &Module) -> Option<&MemorySection> {
  function ensure_table_size_limit (line 254) | fn ensure_table_size_limit(mut module: Module, limit: u32) -> Result<Mod...
  function ensure_br_table_size_limit (line 291) | fn ensure_br_table_size_limit(module: &Module, limit: u32) -> Result<(),...
  function ensure_global_variable_limit (line 318) | fn ensure_global_variable_limit(module: &Module, limit: u32) -> Result<(...
  function ensure_parameter_limit (line 336) | fn ensure_parameter_limit(module: &Module, limit: u32) -> Result<(), Was...
  function ensure_valid_imports (line 354) | fn ensure_valid_imports(module: &Module) -> Result<(), WasmValidationErr...
  function preprocess (line 386) | pub fn preprocess(
  function deserialize (line 416) | pub fn deserialize(module_bytes: &[u8]) -> Result<Module, PreprocessingE...
  function get_module_from_entry_points (line 452) | pub fn get_module_from_entry_points(
  function cycles_for_instruction (line 490) | pub fn cycles_for_instruction(instruction: &Instruction) -> u32 {
  type RuledOpcodeCosts (line 700) | struct RuledOpcodeCosts(OpcodeCosts);
    method instruction_cost_multiplier (line 704) | fn instruction_cost_multiplier(&self, instruction: &Instruction) -> Op...
  method instruction_cost (line 917) | fn instruction_cost(&self, instruction: &Instruction) -> Option<u32> {
  method memory_grow_cost (line 928) | fn memory_grow_cost(&self) -> Option<MemoryGrowCost> {
  function should_not_panic_on_empty_memory (line 945) | fn should_not_panic_on_empty_memory() {
  function should_not_overflow_in_export_section (line 963) | fn should_not_overflow_in_export_section() {
  function should_not_overflow_in_element_section (line 996) | fn should_not_overflow_in_element_section() {
  function should_not_overflow_in_call_opcode (line 1035) | fn should_not_overflow_in_call_opcode() {
  function should_not_overflow_in_start_section_without_code_section (line 1071) | fn should_not_overflow_in_start_section_without_code_section() {
  function should_not_overflow_in_start_section_with_code (line 1093) | fn should_not_overflow_in_start_section_with_code() {
  function should_not_accept_multi_value_proposal_wasm (line 1115) | fn should_not_accept_multi_value_proposal_wasm() {
  function should_not_accept_atomics_proposal_wasm (line 1149) | fn should_not_accept_atomics_proposal_wasm() {
  function should_not_accept_bulk_proposal_wasm (line 1182) | fn should_not_accept_bulk_proposal_wasm() {
  function should_not_accept_simd_proposal_wasm (line 1215) | fn should_not_accept_simd_proposal_wasm() {

FILE: execution_engine/src/runtime_context/mod.rs
  constant RANDOM_BYTES_COUNT (line 54) | pub const RANDOM_BYTES_COUNT: usize = 32;
  type AllowInstallUpgrade (line 58) | pub enum AllowInstallUpgrade {
  type RuntimeContext (line 66) | pub struct RuntimeContext<'a, R> {
  function new (line 103) | pub fn new(
  function new_from_self (line 156) | pub fn new_from_self(
  function authorization_keys (line 209) | pub fn authorization_keys(&self) -> &BTreeSet<AccountHash> {
  function named_keys_get (line 214) | pub fn named_keys_get(&self, name: &str) -> Option<&Key> {
  function named_keys (line 219) | pub fn named_keys(&self) -> &NamedKeys {
  function named_keys_mut (line 224) | pub fn named_keys_mut(&mut self) -> &mut NamedKeys {
  function named_keys_contains_key (line 229) | pub fn named_keys_contains_key(&self, name: &str) -> bool {
  function maybe_payment_purse (line 234) | pub fn maybe_payment_purse(&self) -> Option<URef> {
  function set_payment_purse (line 239) | pub fn set_payment_purse(&mut self, uref: URef) {
  function engine_config (line 244) | pub fn engine_config(&self) -> &EngineConfig {
  function remove_key_from_contract (line 249) | fn remove_key_from_contract(
  function remove_key_from_entity (line 263) | fn remove_key_from_entity(&mut self, name: &str) -> Result<(), ExecError> {
  function remove_key (line 310) | pub fn remove_key(&mut self, name: &str) -> Result<(), ExecError> {
  function get_block_info (line 316) | pub fn get_block_info(&self) -> BlockInfo {
  function get_transaction_hash (line 321) | pub fn get_transaction_hash(&self) -> TransactionHash {
  function access_rights_extend (line 326) | pub fn access_rights_extend(&mut self, urefs: &[URef]) {
  function access_rights (line 331) | pub fn access_rights(&self) -> &ContextAccessRights {
  function runtime_footprint (line 336) | pub fn runtime_footprint(&self) -> Rc<RefCell<RuntimeFootprint>> {
  function args (line 341) | pub fn args(&self) -> &RuntimeArgs {
  function set_args (line 345) | pub(crate) fn set_args(&mut self, args: RuntimeArgs) {
  function address_generator (line 350) | pub fn address_generator(&self) -> Rc<RefCell<AddressGenerator>> {
  function state (line 355) | pub(super) fn state(&self) -> Rc<RefCell<TrackingCopy<R>>> {
  function gas_limit (line 360) | pub fn gas_limit(&self) -> Gas {
  function gas_counter (line 365) | pub fn gas_counter(&self) -> Gas {
  function set_gas_counter (line 370) | pub fn set_gas_counter(&mut self, new_gas_counter: Gas) {
  function get_context_key (line 375) | pub fn get_context_key(&self) -> Key {
  function get_initiator (line 380) | pub fn get_initiator(&self) -> AccountHash {
  function protocol_version (line 385) | pub fn protocol_version(&self) -> ProtocolVersion {
  function phase (line 390) | pub fn phase(&self) -> Phase {
  function install_upgrade_allowed (line 395) | pub fn install_upgrade_allowed(&self) -> bool {
  function new_hash_address (line 400) | pub fn new_hash_address(&mut self) -> Result<[u8; KEY_HASH_LENGTH], Exec...
  function random_bytes (line 405) | pub fn random_bytes(&mut self) -> Result<[u8; RANDOM_BYTES_COUNT], ExecE...
  function new_uref (line 410) | pub fn new_uref(&mut self, value: StoredValue) -> Result<URef, ExecError> {
  function new_unit_uref (line 421) | pub(crate) fn new_unit_uref(&mut self) -> Result<URef, ExecError> {
  function put_key (line 426) | pub fn put_key(&mut self, name: String, key: Key) -> Result<(), ExecErro...
  function get_message_topics (line 450) | pub(crate) fn get_message_topics(
  function get_named_keys (line 460) | pub(crate) fn get_named_keys(&mut self, entity_key: Key) -> Result<Named...
  function write_entry_points (line 472) | pub(crate) fn write_entry_points(
  function get_casper_vm_v1_entry_point (line 492) | pub(crate) fn get_casper_vm_v1_entry_point(
  function total_balance (line 511) | pub(crate) fn total_balance(&mut self, purse_uref: &URef) -> Result<Mote...
  function available_balance (line 524) | pub(crate) fn available_balance(&mut self, purse_uref: &URef) -> Result<...
  function read_gs (line 533) | pub fn read_gs(&mut self, key: &Key) -> Result<Option<StoredValue>, Exec...
  function read_gs_unsafe (line 553) | pub fn read_gs_unsafe(&mut self, key: &Key) -> Result<Option<StoredValue...
  function read_gs_typed (line 564) | pub fn read_gs_typed<T>(&mut self, key: &Key) -> Result<T, ExecError>
  function get_keys (line 580) | pub fn get_keys(&mut self, key_tag: &KeyTag) -> Result<BTreeSet<Key>, Ex...
  function get_keys_with_prefix (line 588) | pub fn get_keys_with_prefix(&mut self, prefix: &[u8]) -> Result<Vec<Key>...
  function write_era_info (line 597) | pub fn write_era_info(&mut self, key: Key, value: EraInfo) {
  function account_to_validated_value (line 609) | fn account_to_validated_value(&self, account: Account) -> Result<StoredV...
  function write_account (line 616) | pub fn write_account(&mut self, key: Key, account: Account) -> Result<()...
  function read_account (line 628) | pub fn read_account(&mut self, key: &Key) -> Result<Option<StoredValue>,...
  function insert_named_key (line 644) | fn insert_named_key(&mut self, name: String, key: Key) {
  function insert_uref (line 654) | fn insert_uref(&mut self, uref: URef) {
  function grant_access (line 659) | pub fn grant_access(&mut self, uref: URef) -> GrantedAccess {
  function remove_access (line 664) | pub fn remove_access(&mut self, uref_addr: URefAddr, access_rights: Acce...
  function effects (line 669) | pub fn effects(&self) -> Effects {
  function messages (line 674) | pub fn messages(&self) -> Messages {
  function cache (line 679) | pub fn cache(&self) -> TrackingCopyCache {
  function emit_message_cost (line 684) | pub fn emit_message_cost(&self) -> U512 {
  function set_emit_message_cost (line 689) | pub fn set_emit_message_cost(&mut self, cost: U512) {
  function transfers (line 694) | pub fn transfers(&self) -> &Vec<Transfer> {
  function transfers_mut (line 699) | pub fn transfers_mut(&mut self) -> &mut Vec<Transfer> {
  function validate_cl_value (line 703) | fn validate_cl_value(&self, cl_value: &CLValue) -> Result<(), ExecError> {
  function validate_value (line 742) | pub(crate) fn validate_value(&self, value: &StoredValue) -> Result<(), E...
  function context_key_to_entity_addr (line 771) | pub(crate) fn context_key_to_entity_addr(&self) -> Result<EntityAddr, Ex...
  function validate_key (line 790) | pub(crate) fn validate_key(&self, key: &Key) -> Result<(), ExecError> {
  function validate_uref (line 802) | pub(crate) fn validate_uref(&self, uref: &URef) -> Result<(), ExecError> {
  function validate_readable (line 811) | fn validate_readable(&self, key: &Key) -> Result<(), ExecError> {
  function validate_addable (line 822) | fn validate_addable(&self, key: &Key) -> Result<(), ExecError> {
  function validate_writeable (line 833) | pub(crate) fn validate_writeable(&self, key: &Key) -> Result<(), ExecErr...
  function is_readable (line 844) | pub fn is_readable(&self, key: &Key) -> bool {
  function is_addable (line 855) | pub fn is_addable(&self, key: &Key) -> bool {
  function is_writeable (line 866) | pub fn is_writeable(&self, key: &Key) -> bool {
  function charge_gas (line 881) | pub(crate) fn charge_gas(&mut self, gas: Gas) -> Result<(), ExecError> {
  function is_system_addressable_entity (line 902) | pub(crate) fn is_system_addressable_entity(
  function charge_gas_storage (line 910) | fn charge_gas_storage(&mut self, bytes_count: usize) -> Result<(), ExecE...
  function charge_system_contract_call (line 926) | pub(crate) fn charge_system_contract_call<T>(&mut self, call_cost: T) ->...
  function prune_gs_unsafe (line 938) | pub(crate) fn prune_gs_unsafe<K>(&mut self, key: K)
  function migrate_package (line 945) | pub(crate) fn migrate_package(
  function metered_write_gs_unsafe (line 960) | pub(crate) fn metered_write_gs_unsafe<K, V>(
  function metered_emit_message (line 982) | pub(crate) fn metered_emit_message(
  function metered_write_gs (line 1021) | pub(crate) fn metered_write_gs<T>(&mut self, key: Key, value: T) -> Resu...
  function metered_add_gs_unsafe (line 1033) | pub(crate) fn metered_add_gs_unsafe(
  function metered_add_gs (line 1058) | pub(crate) fn metered_add_gs<K, V>(&mut self, key: K, value: V) -> Resul...
  function add_associated_key (line 1072) | pub(crate) fn add_associated_key(
  function remove_associated_key (line 1139) | pub(crate) fn remove_associated_key(
  function update_associated_key (line 1200) | pub(crate) fn update_associated_key(
  function is_authorized_by_admin (line 1264) | pub(crate) fn is_authorized_by_admin(&self) -> bool {
  function get_validated_contract_package (line 1272) | pub(crate) fn get_validated_contract_package(
  function set_action_threshold (line 1288) | pub(crate) fn set_action_threshold(
  function addressable_entity_to_validated_value (line 1349) | fn addressable_entity_to_validated_value(
  function runtime_footprint_by_account_hash (line 1358) | pub(crate) fn runtime_footprint_by_account_hash(
  function get_main_purse (line 1398) | pub fn get_main_purse(&mut self) -> Result<URef, ExecError> {
  function entry_point_type (line 1408) | pub fn entry_point_type(&self) -> EntryPointType {
  function get_validated_package (line 1413) | pub(crate) fn get_validated_package(
  function get_package (line 1428) | pub(crate) fn get_package(&mut self, package_hash: HashAddr) -> Result<P...
  function get_contract (line 1435) | pub(crate) fn get_contract(
  function get_contract_entity (line 1445) | pub(crate) fn get_contract_entity(
  function dictionary_get (line 1476) | pub(crate) fn dictionary_get(
  function dictionary_read (line 1494) | pub(crate) fn dictionary_read(
  function dictionary_put (line 1514) | pub fn dictionary_put(
  function get_system_contract (line 1546) | pub(crate) fn get_system_contract(
  function get_system_entity_key (line 1558) | pub(crate) fn get_system_entity_key(&self, name: &str) -> Result<Key, Ex...
  function system_entity_registry (line 1571) | pub fn system_entity_registry(&self) -> Result<SystemHashRegistry, ExecE...
  function remaining_spending_limit (line 1581) | pub(super) fn remaining_spending_limit(&self) -> U512 {
  function subtract_amount_spent (line 1586) | pub(crate) fn subtract_amount_spent(&mut self, amount: U512) -> Option<U...
  function set_remaining_spending_limit (line 1604) | pub(crate) fn set_remaining_spending_limit(&mut self, amount: U512) {
  function add_message_topic (line 1609) | pub(crate) fn add_message_topic(

FILE: execution_engine/src/runtime_context/tests.rs
  constant TXN_HASH_RAW (line 29) | const TXN_HASH_RAW: [u8; 32] = [1u8; 32];
  constant PHASE (line 30) | const PHASE: Phase = Phase::Session;
  constant GAS_LIMIT (line 31) | const GAS_LIMIT: u64 = 500_000_000_000_000u64;
  function test_engine_config (line 33) | fn test_engine_config() -> EngineConfig {
  function new_tracking_copy (line 37) | fn new_tracking_copy(
  function new_addressable_entity_with_purse (line 54) | fn new_addressable_entity_with_purse(
  function new_addressable_entity (line 76) | fn new_addressable_entity(
  function random_account_key (line 89) | fn random_account_key<G: RngCore>(entropy_source: &mut G) -> Key {
  function random_contract_key (line 96) | fn random_contract_key<G: RngCore>(entropy_source: &mut G) -> Key {
  function create_uref_as_key (line 103) | fn create_uref_as_key(address_generator: &mut AddressGenerator, rights: ...
  function random_hash (line 108) | fn random_hash<G: RngCore>(entropy_source: &mut G) -> Key {
  function new_runtime_context (line 114) | fn new_runtime_context<'a>(
  function assert_forged_reference (line 220) | fn assert_forged_reference<T>(result: Result<T, ExecError>) {
  function assert_invalid_access (line 228) | fn assert_invalid_access<T: std::fmt::Debug>(
  function build_runtime_context_and_execute (line 241) | fn build_runtime_context_and_execute<T, F>(
  function last_transform_kind_on_addressable_entity (line 272) | fn last_transform_kind_on_addressable_entity(
  function use_uref_valid (line 286) | fn use_uref_valid() {
  function use_uref_forged (line 302) | fn use_uref_forged() {
  function account_key_not_writeable (line 316) | fn account_key_not_writeable() {
  function entity_key_readable_valid (line 329) | fn entity_key_readable_valid() {
  function account_key_addable_returns_type_mismatch (line 347) | fn account_key_addable_returns_type_mismatch() {
  function account_key_addable_invalid (line 366) | fn account_key_addable_invalid() {
  function contract_key_readable_valid (line 383) | fn contract_key_readable_valid() {
  function contract_key_not_writeable (line 395) | fn contract_key_not_writeable() {
  function contract_key_addable_valid (line 411) | fn contract_key_addable_valid() {
  function contract_key_addable_invalid (line 503) | fn contract_key_addable_invalid() {
  function uref_key_readable_valid (line 580) | fn uref_key_readable_valid() {
  function uref_key_readable_invalid (line 592) | fn uref_key_readable_invalid() {
  function uref_key_writeable_valid (line 604) | fn uref_key_writeable_valid() {
  function uref_key_writeable_invalid (line 621) | fn uref_key_writeable_invalid() {
  function uref_key_addable_valid (line 638) | fn uref_key_addable_valid() {
  function uref_key_addable_invalid (line 654) | fn uref_key_addable_invalid() {
  function hash_key_is_not_writeable (line 671) | fn hash_key_is_not_writeable() {
  function hash_key_is_not_addable (line 683) | fn hash_key_is_not_addable() {
  function manage_associated_keys (line 695) | fn manage_associated_keys() {
  function action_thresholds_management (line 763) | fn action_thresholds_management() {
  function should_verify_ownership_before_adding_key (line 813) | fn should_verify_ownership_before_adding_key() {
  function should_verify_ownership_before_removing_a_key (line 855) | fn should_verify_ownership_before_removing_a_key() {
  function should_verify_ownership_before_setting_action_threshold (line 883) | fn should_verify_ownership_before_setting_action_threshold() {
  function remove_uref_works (line 911) | fn remove_uref_works() {
  function an_accounts_access_rights_should_include_main_purse (line 968) | fn an_accounts_access_rights_should_include_main_purse() {
  function validate_valid_purse_of_an_account (line 992) | fn validate_valid_purse_of_an_account() {
  function should_meter_for_gas_storage_write (line 1040) | fn should_meter_for_gas_storage_write() {
  function should_meter_for_gas_storage_add (line 1077) | fn should_meter_for_gas_storage_add() {
  function associated_keys_add_full (line 1115) | fn associated_keys_add_full() {

FILE: execution_engine_testing/test_support/build.rs
  function main (line 9) | fn main() {

FILE: execution_engine_testing/test_support/src/chainspec_config.rs
  constant CHAINSPEC_NAME (line 25) | pub const CHAINSPEC_NAME: &str = "chainspec.toml";
  type Error (line 36) | pub enum Error {
  type ChainspecConfig (line 51) | pub struct ChainspecConfig {
    method from_bytes (line 66) | fn from_bytes(bytes: &[u8]) -> Result<Self, Error> {
    method from_path (line 77) | fn from_path<P: AsRef<Path>>(path: P) -> Result<Self, Error> {
    method from_chainspec_path (line 87) | pub fn from_chainspec_path<P: AsRef<Path>>(filename: P) -> Result<Self...
    method is_valid (line 91) | fn is_valid(&self) -> bool {
    method create_genesis_request_from_chainspec (line 106) | pub(crate) fn create_genesis_request_from_chainspec<P: AsRef<Path>>(
    method create_genesis_request (line 116) | pub fn create_genesis_request(
    method create_genesis_request_from_local_chainspec (line 163) | pub fn create_genesis_request_from_local_chainspec(
    method with_minimum_delegation_rate (line 175) | pub fn with_minimum_delegation_rate(mut self, minimum_delegation_rate:...
    method with_max_associated_keys (line 181) | pub fn with_max_associated_keys(&mut self, value: u32) -> &mut Self {
    method with_vesting_schedule_period_millis (line 187) | pub fn with_vesting_schedule_period_millis(mut self, value: u64) -> Se...
    method with_max_delegators_per_validator (line 193) | pub fn with_max_delegators_per_validator(mut self, value: u32) -> Self {
    method with_minimum_delegation_amount (line 199) | pub fn with_minimum_delegation_amount(mut self, minimum_delegation_amo...
    method with_fee_handling (line 205) | pub fn with_fee_handling(mut self, fee_handling: FeeHandling) -> Self {
    method with_wasm_config (line 211) | pub fn with_wasm_config(mut self, wasm_config: WasmConfig) -> Self {
    method with_mint_costs (line 217) | pub fn with_mint_costs(self, mint_costs: MintCosts) -> Self {
    method with_wasm_max_stack_height (line 223) | pub fn with_wasm_max_stack_height(mut self, max_stack_height: u32) -> ...
    method with_refund_handling (line 229) | pub fn with_refund_handling(mut self, refund_handling: RefundHandling)...
    method with_pricing_handling (line 235) | pub fn with_pricing_handling(mut self, pricing_handling: PricingHandli...
    method with_strict_argument_checking (line 241) | pub fn with_strict_argument_checking(mut self, strict_argument_checkin...
    method with_enable_addressable_entity (line 247) | pub fn with_enable_addressable_entity(mut self, enable_addressable_ent...
    method max_associated_keys (line 253) | pub fn max_associated_keys(&self) -> u32 {
    method engine_config (line 258) | pub fn engine_config(&self) -> EngineConfig {
  method from (line 281) | fn from(chainspec_config: ChainspecConfig) -> Self {
  type Error (line 307) | type Error = Error;
  method try_from (line 309) | fn try_from(chainspec_config: ChainspecConfig) -> Result<Self, Self::Err...
  function should_load_chainspec_config_from_chainspec (line 342) | fn should_load_chainspec_config_from_chainspec() {
  function should_get_exec_config_from_chainspec_values (line 350) | fn should_get_exec_config_from_chainspec_values() {

FILE: execution_engine_testing/test_support/src/deploy_item.rs
  type DeployItem (line 14) | pub struct DeployItem {
    method new (line 33) | pub fn new(
    method is_native_transfer (line 52) | pub fn is_native_transfer(&self) -> bool {
    method new_session_from_deploy_item (line 57) | pub fn new_session_from_deploy_item(
    method new_custom_payment_from_deploy_item (line 81) | pub fn new_custom_payment_from_deploy_item(
    method from (line 107) | fn from(deploy: Deploy) -> Self {

FILE: execution_engine_testing/test_support/src/deploy_item_builder.rs
  type DeployItemData (line 13) | struct DeployItemData {
  type DeployItemBuilder (line 23) | pub struct DeployItemBuilder {
    method new (line 29) | pub fn new() -> Self {
    method with_address (line 34) | pub fn with_address(mut self, address: AccountHash) -> Self {
    method with_payment_bytes (line 40) | pub fn with_payment_bytes<T: Into<Bytes>>(
    method with_standard_payment (line 53) | pub fn with_standard_payment(self, args: RuntimeArgs) -> Self {
    method with_payment_code (line 58) | pub fn with_payment_code<T: AsRef<Path>>(self, file_name: T, args: Run...
    method with_stored_payment_hash (line 64) | pub fn with_stored_payment_hash(
    method with_stored_payment_named_key (line 79) | pub fn with_stored_payment_named_key(
    method with_stored_versioned_payment_hash (line 94) | pub fn with_stored_versioned_payment_hash(
    method with_stored_versioned_payment_named_key (line 110) | pub fn with_stored_versioned_payment_named_key(
    method with_session_bytes (line 126) | pub fn with_session_bytes<T: Into<Bytes>>(
    method with_session_code (line 139) | pub fn with_session_code<T: AsRef<Path>>(self, file_name: T, args: Run...
    method with_transfer_args (line 145) | pub fn with_transfer_args(mut self, args: RuntimeArgs) -> Self {
    method with_stored_session_hash (line 152) | pub fn with_stored_session_hash(
    method with_stored_session_named_key (line 167) | pub fn with_stored_session_named_key(
    method with_stored_versioned_contract_by_name (line 182) | pub fn with_stored_versioned_contract_by_name(
    method with_stored_versioned_contract_by_hash (line 199) | pub fn with_stored_versioned_contract_by_hash(
    method with_stored_versioned_payment_contract_by_name (line 216) | pub fn with_stored_versioned_payment_contract_by_name(
    method with_stored_versioned_payment_contract_by_hash (line 233) | pub fn with_stored_versioned_payment_contract_by_hash(
    method with_authorization_keys (line 250) | pub fn with_authorization_keys(mut self, authorization_keys: &[Account...
    method with_gas_price (line 256) | pub fn with_gas_price(mut self, gas_price: u8) -> Self {
    method with_deploy_hash (line 262) | pub fn with_deploy_hash(mut self, hash: [u8; 32]) -> Self {
    method build (line 268) | pub fn build(self) -> DeployItem {
  method default (line 293) | fn default() -> Self {
  function should_not_default_deploy_hash_to_zeros_if_not_specified (line 307) | fn should_not_default_deploy_hash_to_zeros_if_not_specified() {

FILE: execution_engine_testing/test_support/src/execute_request_builder.rs
  type ExecuteRequest (line 22) | pub struct ExecuteRequest {
    method is_install_upgrade_allowed (line 31) | pub fn is_install_upgrade_allowed(&self) -> bool {
  type ExecuteRequestBuilder (line 38) | pub struct ExecuteRequestBuilder {
    constant DEFAULT_STATE_HASH (line 61) | pub const DEFAULT_STATE_HASH: Digest = Digest::from_raw([1; 32]);
    constant DEFAULT_TRANSACTION_HASH (line 63) | pub const DEFAULT_TRANSACTION_HASH: TransactionHash =
    constant DEFAULT_ENTRY_POINT (line 66) | pub const DEFAULT_ENTRY_POINT: &'static str = "call";
    constant DEFAULT_PROTOCOL_VERSION (line 68) | pub const DEFAULT_PROTOCOL_VERSION: ProtocolVersion = ProtocolVersion:...
    method from_session_input_data_for_protocol_version (line 71) | pub fn from_session_input_data_for_protocol_version(
    method from_session_input_data (line 137) | pub fn from_session_input_data(session_input_data: &SessionInputData) ...
    method from_deploy_item (line 145) | pub fn from_deploy_item(deploy_item: &DeployItem) -> Self {
    method from_deploy_item_for_protocol_version (line 150) | pub fn from_deploy_item_for_protocol_version(
    method standard (line 213) | pub fn standard(
    method standard_with_protocol_version (line 227) | pub fn standard_with_protocol_version(
    method module_bytes (line 245) | pub fn module_bytes(
    method contract_call_by_hash (line 263) | pub fn contract_call_by_hash(
    method contract_call_by_name (line 280) | pub fn contract_call_by_name(
    method contract_call_by_hash_versioned_with_major (line 297) | pub fn contract_call_by_hash_versioned_with_major(
    method versioned_contract_call_by_hash (line 341) | pub fn versioned_contract_call_by_hash(
    method contract_call_by_name_versioned_with_major (line 364) | pub fn contract_call_by_name_versioned_with_major(
    method versioned_contract_call_by_name (line 408) | pub fn versioned_contract_call_by_name(
    method with_block_time (line 425) | pub fn with_block_time<T: Into<BlockTime>>(mut self, block_time: T) ->...
    method with_block_height (line 431) | pub fn with_block_height(mut self, block_height: u64) -> Self {
    method with_parent_block_hash (line 437) | pub fn with_parent_block_hash(mut self, parent_block_hash: BlockHash) ...
    method with_state_hash (line 443) | pub fn with_state_hash(mut self, state_hash: Digest) -> Self {
    method with_authorization_keys (line 449) | pub fn with_authorization_keys(mut self, authorization_keys: BTreeSet<...
    method with_protocol_version (line 455) | pub fn with_protocol_version(mut self, protocol_version: ProtocolVersi...
    method build (line 461) | pub fn build(self) -> ExecuteRequest {
  constant DEFAULT_GAS_LIMIT (line 57) | const DEFAULT_GAS_LIMIT: u64 = 5_000_u64 * 10u64.pow(9);

FILE: execution_engine_testing/test_support/src/genesis_config_builder.rs
  type GenesisConfigBuilder (line 20) | pub struct GenesisConfigBuilder {
    method new (line 40) | pub fn new() -> Self {
    method with_accounts (line 45) | pub fn with_accounts(mut self, accounts: Vec<GenesisAccount>) -> Self {
    method with_wasm_config (line 51) | pub fn with_wasm_config(mut self, wasm_config: WasmConfig) -> Self {
    method with_system_config (line 57) | pub fn with_system_config(mut self, system_config: SystemConfig) -> Se...
    method with_validator_slots (line 63) | pub fn with_validator_slots(mut self, validator_slots: u32) -> Self {
    method with_auction_delay (line 69) | pub fn with_auction_delay(mut self, auction_delay: u64) -> Self {
    method with_locked_funds_period_millis (line 75) | pub fn with_locked_funds_period_millis(mut self, locked_funds_period_m...
    method with_round_seigniorage_rate (line 81) | pub fn with_round_seigniorage_rate(mut self, round_seigniorage_rate: R...
    method with_unbonding_delay (line 87) | pub fn with_unbonding_delay(mut self, unbonding_delay: u64) -> Self {
    method with_genesis_timestamp_millis (line 93) | pub fn with_genesis_timestamp_millis(mut self, genesis_timestamp_milli...
    method with_enable_addressable_entity (line 99) | pub fn with_enable_addressable_entity(mut self, enable_addressable_ent...
    method with_rewards_ratio (line 105) | pub fn with_rewards_ratio(mut self, rewards_ratio: Ratio<u64>) -> Self {
    method with_storage_costs (line 111) | pub fn with_storage_costs(mut self, storage_costs: StorageCosts) -> Se...
    method with_minimum_delegation_rate (line 117) | pub fn with_minimum_delegation_rate(mut self, minimum_delegation_rate:...
    method build (line 123) | pub fn build(self) -> GenesisConfig {

FILE: execution_engine_testing/test_support/src/lib.rs
  constant DEFAULT_VALIDATOR_SLOTS (line 42) | pub const DEFAULT_VALIDATOR_SLOTS: u32 = 5;
  constant DEFAULT_AUCTION_DELAY (line 44) | pub const DEFAULT_AUCTION_DELAY: u64 = 1;
  constant DEFAULT_LOCKED_FUNDS_PERIOD_MILLIS (line 46) | pub const DEFAULT_LOCKED_FUNDS_PERIOD_MILLIS: u64 = 0;
  constant DEFAULT_VESTING_SCHEDULE_PERIOD_MILLIS (line 48) | pub const DEFAULT_VESTING_SCHEDULE_PERIOD_MILLIS: u64 = 0;
  constant DEFAULT_UNBONDING_DELAY (line 51) | pub const DEFAULT_UNBONDING_DELAY: u64 = 7;
  constant DEFAULT_ROUND_SEIGNIORAGE_RATE (line 60) | pub const DEFAULT_ROUND_SEIGNIORAGE_RATE: Ratio<u64> = Ratio::new_raw(1,...
  constant DEFAULT_CHAIN_NAME (line 63) | pub const DEFAULT_CHAIN_NAME: &str = "casper-execution-engine-testing";
  constant DEFAULT_GENESIS_TIMESTAMP_MILLIS (line 65) | pub const DEFAULT_GENESIS_TIMESTAMP_MILLIS: u64 = 0;
  constant DEFAULT_BLOCK_TIME (line 67) | pub const DEFAULT_BLOCK_TIME: u64 = 0;
  constant DEFAULT_GAS_PRICE (line 69) | pub const DEFAULT_GAS_PRICE: u8 = 1;
  constant ARG_AMOUNT (line 71) | pub const ARG_AMOUNT: &str = "amount";
  constant TIMESTAMP_MILLIS_INCREMENT (line 73) | pub const TIMESTAMP_MILLIS_INCREMENT: u64 = 30_000;
  constant DEFAULT_GAS_HOLD_BALANCE_HANDLING (line 75) | pub const DEFAULT_GAS_HOLD_BALANCE_HANDLING: HoldBalanceHandling = HoldB...
  constant DEFAULT_GAS_HOLD_INTERVAL_MILLIS (line 77) | pub const DEFAULT_GAS_HOLD_INTERVAL_MILLIS: u64 = 24 * 60 * 60 * 60;
  constant DEFAULT_MAX_ASSOCIATED_KEYS (line 80) | pub const DEFAULT_MAX_ASSOCIATED_KEYS: u32 = 100;
  constant DEFAULT_MAX_QUERY_DEPTH (line 83) | pub const DEFAULT_MAX_QUERY_DEPTH: u64 = 5;
  constant DEFAULT_MAX_RUNTIME_CALL_STACK_HEIGHT (line 85) | pub const DEFAULT_MAX_RUNTIME_CALL_STACK_HEIGHT: u32 = 12;
  constant DEFAULT_MINIMUM_DELEGATION_AMOUNT (line 87) | pub const DEFAULT_MINIMUM_DELEGATION_AMOUNT: u64 = 500 * 1_000_000_000;
  constant DEFAULT_MAXIMUM_DELEGATION_AMOUNT (line 89) | pub const DEFAULT_MAXIMUM_DELEGATION_AMOUNT: u64 = 1_000_000_000 * 1_000...
  constant DEFAULT_GENESIS_CONFIG_HASH (line 92) | pub const DEFAULT_GENESIS_CONFIG_HASH: Digest = Digest::from_raw([42; 32]);
  constant DEFAULT_ACCOUNT_INITIAL_BALANCE (line 108) | pub const DEFAULT_ACCOUNT_INITIAL_BALANCE: u64 = 10_000_000_000_000_000_...
  constant MINIMUM_ACCOUNT_CREATION_BALANCE (line 110) | pub const MINIMUM_ACCOUNT_CREATION_BALANCE: u64 = 7_500_000_000_000_000_...
  constant DEFAULT_PROTOCOL_VERSION (line 153) | pub const DEFAULT_PROTOCOL_VERSION: ProtocolVersion = ProtocolVersion::V...
  function defaults_should_match_production_chainspec_values (line 208) | fn defaults_should_match_production_chainspec_values() {

FILE: execution_engine_testing/test_support/src/step_request_builder.rs
  type StepRequestBuilder (line 9) | pub struct StepRequestBuilder {
    method new (line 23) | pub fn new() -> Self {
    method with_runtime_config (line 28) | pub fn with_runtime_config(mut self, runtime_config: Config) -> Self {
    method with_transfer_config (line 34) | pub fn with_transfer_config(mut self, transfer_config: TransferConfig)...
    method with_parent_state_hash (line 40) | pub fn with_parent_state_hash(mut self, parent_state_hash: Digest) -> ...
    method with_protocol_version (line 46) | pub fn with_protocol_version(mut self, protocol_version: ProtocolVersi...
    method with_slash_item (line 52) | pub fn with_slash_item(mut self, slash_item: SlashItem) -> Self {
    method with_reward_item (line 58) | pub fn with_reward_item(mut self, reward_item: RewardItem) -> Self {
    method with_evict_item (line 64) | pub fn with_evict_item(mut self, evict_item: EvictItem) -> Self {
    method with_evict_items (line 70) | pub fn with_evict_items(mut self, evict_items: impl IntoIterator<Item ...
    method with_run_auction (line 76) | pub fn with_run_auction(mut self, run_auction: bool) -> Self {
    method with_next_era_id (line 82) | pub fn with_next_era_id(mut self, next_era_id: EraId) -> Self {
    method with_era_end_timestamp_millis (line 88) | pub fn with_era_end_timestamp_millis(mut self, era_end_timestamp_milli...
    method build (line 94) | pub fn build(self) -> StepRequest {
  method default (line 108) | fn default() -> Self {

FILE: execution_engine_testing/test_support/src/transfer_request_builder.rs
  type TransferRequestBuilder (line 32) | pub struct TransferRequestBuilder {
    constant DEFAULT_CONFIG (line 46) | pub const DEFAULT_CONFIG: NativeRuntimeConfig = NativeRuntimeConfig::new(
    constant DEFAULT_STATE_HASH (line 67) | pub const DEFAULT_STATE_HASH: Digest = Digest::from_raw([1; 32]);
    constant DEFAULT_GAS (line 69) | pub const DEFAULT_GAS: u64 = 2_500_000_000;
    method new (line 72) | pub fn new<A: Into<U512>, T: Into<TransferTarget>>(amount: A, target: ...
    method with_native_runtime_config (line 103) | pub fn with_native_runtime_config(mut self, config: NativeRuntimeConfi...
    method with_block_time (line 109) | pub fn with_block_time(mut self, block_time: u64) -> Self {
    method with_protocol_version (line 115) | pub fn with_protocol_version(mut self, protocol_version: ProtocolVersi...
    method with_transaction_hash (line 121) | pub fn with_transaction_hash(mut self, transaction_hash: TransactionHa...
    method with_initiator (line 128) | pub fn with_initiator<T: Into<InitiatorAddr>>(mut self, initiator: T) ...
    method with_authorization_keys (line 137) | pub fn with_authorization_keys<T: IntoIterator<Item = AccountHash>>(
    method with_source (line 146) | pub fn with_source(mut self, source: URef) -> Self {
    method with_transfer_id (line 153) | pub fn with_transfer_id(mut self, id: u64) -> Self {
    method build (line 165) | pub fn build(self) -> TransferRequest {
    method with_args (line 237) | pub fn with_args(mut self, args: RuntimeArgs) -> Self {

FILE: execution_engine_testing/test_support/src/upgrade_request_builder.rs
  type UpgradeRequestBuilder (line 11) | pub struct UpgradeRequestBuilder {
    method new (line 36) | pub fn new() -> Self {
    method with_pre_state_hash (line 41) | pub fn with_pre_state_hash(mut self, pre_state_hash: Digest) -> Self {
    method with_current_protocol_version (line 47) | pub fn with_current_protocol_version(mut self, protocol_version: Proto...
    method with_new_protocol_version (line 53) | pub fn with_new_protocol_version(mut self, protocol_version: ProtocolV...
    method with_new_gas_hold_handling (line 59) | pub fn with_new_gas_hold_handling(mut self, gas_hold_handling: HoldBal...
    method with_new_gas_hold_interval (line 65) | pub fn with_new_gas_hold_interval(mut self, gas_hold_interval: u64) ->...
    method with_new_validator_slots (line 71) | pub fn with_new_validator_slots(mut self, new_validator_slots: u32) ->...
    method with_new_auction_delay (line 77) | pub fn with_new_auction_delay(mut self, new_auction_delay: u64) -> Self {
    method with_new_locked_funds_period_millis (line 83) | pub fn with_new_locked_funds_period_millis(
    method with_new_round_seigniorage_rate (line 92) | pub fn with_new_round_seigniorage_rate(mut self, rate: Ratio<u64>) -> ...
    method with_new_unbonding_delay (line 98) | pub fn with_new_unbonding_delay(mut self, unbonding_delay: u64) -> Self {
    method with_global_state_update (line 104) | pub fn with_global_state_update(
    method with_activation_point (line 113) | pub fn with_activation_point(mut self, activation_point: EraId) -> Self {
    method with_chainspec_registry (line 119) | pub fn with_chainspec_registry(mut self, chainspec_registry: Chainspec...
    method with_fee_handling (line 125) | pub fn with_fee_handling(mut self, fee_handling: FeeHandling) -> Self {
    method with_validator_minimum_bid_amount (line 131) | pub fn with_validator_minimum_bid_amount(mut self, validator_minimum_b...
    method with_maximum_delegation_amount (line 137) | pub fn with_maximum_delegation_amount(mut self, maximum_delegation_amo...
    method with_minimum_delegation_amount (line 143) | pub fn with_minimum_delegation_amount(mut self, minimum_delegation_amo...
    method with_enable_addressable_entity (line 149) | pub fn with_enable_addressable_entity(mut self, enable_entity: bool) -...
    method with_rewards_handling (line 155) | pub fn with_rewards_handling(mut self, rewards_handling: RewardsHandli...
    method with_new_minimum_delegation_rate (line 161) | pub fn with_new_minimum_delegation_rate(
    method build (line 170) | pub fn build(self) -> ProtocolUpgradeConfig {
  method default (line 197) | fn default() -> UpgradeRequestBuilder {

FILE: execution_engine_testing/test_support/src/utils.rs
  function get_compiled_wasm_paths (line 69) | fn get_compiled_wasm_paths() -> Vec<PathBuf> {
  function read_wasm_file (line 81) | pub fn read_wasm_file<T: AsRef<Path>>(contract_file: T) -> Bytes {
  function create_genesis_config (line 112) | pub fn create_genesis_config(accounts: Vec<GenesisAccount>) -> GenesisCo...
  function create_run_genesis_request (line 138) | pub fn create_run_genesis_request(accounts: Vec<GenesisAccount>) -> Gene...
  function get_precondition_failure (line 153) | pub fn get_precondition_failure(exec_result: &WasmV1Result) -> &Error {

FILE: execution_engine_testing/test_support/src/wasm_test_builder.rs
  constant DEFAULT_LMDB_PAGES (line 81) | pub(crate) const DEFAULT_LMDB_PAGES: usize = 256_000_000;
  constant DEFAULT_MAX_READERS (line 86) | pub(crate) const DEFAULT_MAX_READERS: u32 = 512;
  constant GLOBAL_STATE_DIR (line 89) | const GLOBAL_STATE_DIR: &str = "global_state";
  type EntityWithNamedKeys (line 93) | pub struct EntityWithNamedKeys {
    method new (line 100) | pub fn new(entity: AddressableEntity, named_keys: NamedKeys) -> Self {
    method entity (line 105) | pub fn entity(&self) -> AddressableEntity {
    method main_purse (line 110) | pub fn main_purse(&self) -> URef {
    method named_keys (line 115) | pub fn named_keys(&self) -> &NamedKeys {
  type WasmTestBuilder (line 121) | pub struct WasmTestBuilder<S> {
  function write_scratch_to_db (line 152) | pub fn write_scratch_to_db(&mut self) -> &mut Self {
  function flush_environment (line 164) | pub fn flush_environment(&self) {
  function scratch_exec_and_commit (line 174) | pub fn scratch_exec_and_commit(&mut self, mut exec_request: WasmV1Reques...
  method clone (line 204) | fn clone(&self) -> Self {
  type GlobalStateMode (line 225) | enum GlobalStateMode {
    method post_state_hash (line 233) | fn post_state_hash(self) -> Option<Digest> {
  type LmdbWasmTestBuilder (line 242) | pub type LmdbWasmTestBuilder = WasmTestBuilder<DataAccessLayer<LmdbGloba...
    method upgrade_using_scratch (line 252) | pub fn upgrade_using_scratch(
    method new_with_config (line 287) | pub fn new_with_config<T: AsRef<OsStr> + ?Sized>(
    method create_or_open (line 347) | fn create_or_open<T: AsRef<Path>>(
    method new_with_chainspec (line 433) | pub fn new_with_chainspec<T: AsRef<OsStr> + ?Sized, P: AsRef<Path>>(
    method new_with_production_chainspec (line 445) | pub fn new_with_production_chainspec<T: AsRef<OsStr> + ?Sized>(data_di...
    method new (line 450) | pub fn new<T: AsRef<OsStr> + ?Sized>(data_dir: &T) -> Self {
    method open (line 456) | pub fn open<T: AsRef<OsStr> + ?Sized>(
    method open_raw (line 474) | pub fn open_raw<T: AsRef<Path>>(
    method new_temporary_with_config (line 492) | pub fn new_temporary_with_config(chainspec: ChainspecConfig) -> Self {
    method new_temporary_with_chainspec (line 513) | pub fn new_temporary_with_chainspec<P: AsRef<Path>>(chainspec_path: P)...
    method create_global_state_dir (line 520) | fn create_global_state_dir<T: AsRef<Path>>(global_state_path: T) {
    method global_state_dir (line 529) | fn global_state_dir<T: AsRef<OsStr> + ?Sized>(data_dir: &T) -> PathBuf {
    method lmdb_on_disk_size (line 536) | pub fn lmdb_on_disk_size(&self) -> Option<u64> {
    method step_with_scratch (line 546) | pub fn step_with_scratch(&mut self, step_request: StepRequest) -> &mut...
    method transfer_and_commit (line 569) | pub fn transfer_and_commit(&mut self, mut transfer_request: TransferRe...
  method default (line 245) | fn default() -> Self {
  function run_genesis (line 589) | pub fn run_genesis(&mut self, request: GenesisRequest) -> &mut Self {
  function query_system_entity_registry (line 610) | fn query_system_entity_registry(
  function query (line 626) | pub fn query(
  function message_topics (line 647) | pub fn message_topics(
  function query_named_key_by_account_hash (line 666) | pub fn query_named_key_by_account_hash(
  function query_named_key (line 680) | pub fn query_named_key(
  function query_dictionary_item (line 701) | pub fn query_dictionary_item(
  function query_with_proof (line 714) | pub fn query_with_proof(
  function total_supply (line 740) | pub fn total_supply(
  function round_seigniorage_rate (line 761) | pub fn round_seigniorage_rate(
  function base_round_reward (line 788) | pub fn base_round_reward(
  function bidding (line 804) | pub fn bidding(
  function exec_wasm_v1 (line 870) | pub fn exec_wasm_v1(&mut self, mut request: WasmV1Request) -> &mut Self {
  function exec (line 883) | pub fn exec(&mut self, mut exec_request: ExecuteRequest) -> &mut Self {
  function commit (line 915) | pub fn commit(&mut self) -> &mut Self {
  function commit_transforms (line 925) | pub fn commit_transforms(&mut self, pre_state_hash: Digest, effects: Eff...
  function upgrade (line 935) | pub fn upgrade(&mut self, upgrade_config: &mut ProtocolUpgradeConfig) ->...
  function run_auction (line 960) | pub fn run_auction(
  function step (line 980) | pub fn step(&mut self, step_request: StepRequest) -> StepResult {
  function native_runtime_config (line 993) | fn native_runtime_config(&self) -> NativeRuntimeConfig {
  function distribute_fees (line 1029) | pub fn distribute_fees(
  function distribute (line 1057) | pub fn distribute(
  function distribute_with_rewards_handling (line 1088) | pub fn distribute_with_rewards_handling(
  function handle_fee (line 1153) | pub fn handle_fee(
  function expect_success (line 1179) | pub fn expect_success(&mut self) -> &mut Self {
  function expect_failure (line 1193) | pub fn expect_failure(&mut self) -> &mut Self {
  function is_error (line 1208) | pub fn is_error(&self) -> bool {
  function get_error (line 1217) | pub fn get_error(&self) -> Option<Error> {
  function get_error_message (line 1226) | pub fn get_error_message(&self) -> Option<String> {
  function get_effects (line 1235) | pub fn get_effects(&self) -> Vec<Effects> {
  function get_genesis_account (line 1240) | pub fn get_genesis_account(&self) -> &AddressableEntity {
  function get_mint_contract_hash (line 1247) | pub fn get_mint_contract_hash(&self) -> AddressableEntityHash {
  function get_handle_payment_contract_hash (line 1254) | pub fn get_handle_payment_contract_hash(&self) -> AddressableEntityHash {
  function get_standard_payment_contract_hash (line 1261) | pub fn get_standard_payment_contract_hash(&self) -> AddressableEntityHash {
  function get_system_entity_hash (line 1266) | fn get_system_entity_hash(&self, contract_name: &str) -> Option<Addressa...
  function get_auction_contract_hash (line 1274) | pub fn get_auction_contract_hash(&self) -> AddressableEntityHash {
  function get_genesis_effects (line 1280) | pub fn get_genesis_effects(&self) -> &Effects {
  function get_genesis_hash (line 1287) | pub fn get_genesis_hash(&self) -> Digest {
  function get_post_state_hash (line 1293) | pub fn get_post_state_hash(&self) -> Digest {
  function chainspec (line 1298) | pub fn chainspec(&self) -> &ChainspecConfig {
  function engine_config (line 1303) | pub fn engine_config(&self) -> &EngineConfig {
  function with_chainspec (line 1308) | pub fn with_chainspec(&mut self, chainspec: ChainspecConfig) -> &mut Self {
  function with_engine_config (line 1315) | pub fn with_engine_config(&mut self, engine_config: EngineConfig) -> &mu...
  function with_block_time (line 1321) | pub fn with_block_time(&mut self, block_time: BlockTime) -> &mut Self {
  function write_data_and_commit (line 1341) | pub fn write_data_and_commit(
  function with_gas_hold_config (line 1362) | pub fn with_gas_hold_config(
  function get_engine_state (line 1424) | pub fn get_engine_state(&self) -> &ExecutionEngineV1 {
  function data_access_layer (line 1429) | pub fn data_access_layer(&self) -> &S {
  function get_last_exec_result (line 1434) | pub fn get_last_exec_result(&self) -> Option<WasmV1Result> {
  function get_exec_result_owned (line 1439) | pub fn get_exec_result_owned(&self, index: usize) -> Option<WasmV1Result> {
  function get_exec_results_count (line 1444) | pub fn get_exec_results_count(&self) -> usize {
  function get_upgrade_result (line 1449) | pub fn get_upgrade_result(&self, index: usize) -> Option<&ProtocolUpgrad...
  function expect_upgrade_success (line 1454) | pub fn expect_upgrade_success(&mut self) -> &mut Self {
  function expect_upgrade_failure (line 1467) | pub fn expect_upgrade_failure(&mut self) -> &mut Self {
  function get_account (line 1480) | pub fn get_account(&self, account_hash: AccountHash) -> Option<Account> {
  function get_handle_payment_contract (line 1489) | pub fn get_handle_payment_contract(&self) -> EntityWithNamedKeys {
  function get_purse_balance (line 1517) | pub fn get_purse_balance(&self, purse: URef) -> U512 {
  function get_purse_balance_result_with_proofs (line 1526) | pub fn get_purse_balance_result_with_proofs(
  function get_public_key_balance_result_with_proofs (line 1545) | pub fn get_public_key_balance_result_with_proofs(
  function get_proposer_purse_balance (line 1564) | pub fn get_proposer_purse_balance(&self) -> U512 {
  function get_entity_hash_by_account_hash (line 1572) | pub fn get_entity_hash_by_account_hash(
  function get_entity_with_named_keys_by_account_hash (line 1587) | pub fn get_entity_with_named_keys_by_account_hash(
  function get_entity_with_named_keys_by_entity_hash (line 1600) | pub fn get_entity_with_named_keys_by_entity_hash(
  function get_entity_by_account_hash (line 1614) | pub fn get_entity_by_account_hash(
  function get_expected_addressable_entity_by_account_hash (line 1633) | pub fn get_expected_addressable_entity_by_account_hash(
  function get_addressable_entity (line 1642) | pub fn get_addressable_entity(
  function get_contract (line 1674) | pub fn get_contract(&self, contract_hash: ContractHash) -> Option<Contra...
  function get_byte_code (line 1687) | pub fn get_byte_code(&self, byte_code_hash: ByteCodeHash) -> Option<Byte...
  function get_package (line 1702) | pub fn get_package(&self, package_hash: PackageHash) -> Option<Package> {
  function exec_consumed (line 1720) | pub fn exec_consumed(&self, index: usize) -> Gas {
  function last_exec_gas_consumed (line 1728) | pub fn last_exec_gas_consumed(&self) -> Gas {
  function assert_error (line 1739) | pub fn assert_error(&self, expected_error: Error) {
  function get_era_validators (line 1747) | pub fn get_era_validators(&mut self) -> EraValidators {
  function get_validator_weights (line 1760) | pub fn get_validator_weights(&mut self, era_id: EraId) -> Option<Validat...
  function get_bids (line 1766) | pub fn get_bids(&mut self) -> Vec<BidKind> {
  function get_named_keys_by_account_hash (line 1775) | pub fn get_named_keys_by_account_hash(&self, account_hash: AccountHash) ...
  function get_named_keys_for_system_contract (line 1784) | pub fn get_named_keys_for_system_contract(
  function get_named_keys_for_contract (line 1792) | pub fn get_named_keys_for_contract(&self, contract_hash: AddressableEnti...
  function get_named_keys (line 1797) | pub fn get_named_keys(&self, entity_addr: EntityAddr) -> NamedKeys {
  function get_unbonds (line 1812) | pub fn get_unbonds(&mut self) -> BTreeMap<UnbondKind, Vec<Unbond>> {
  function get_validator_bid (line 1845) | pub fn get_validator_bid(&mut self, validator_public_key: PublicKey) -> ...
  function get_unbonding_purses (line 1872) | pub fn get_unbonding_purses(&mut self) -> BTreeMap<AccountHash, Vec<Unbo...
  function get_withdraw_purses (line 1902) | pub fn get_withdraw_purses(&mut self) -> WithdrawPurses {
  function get_balance_keys (line 1932) | pub fn get_balance_keys(&self) -> Vec<Key> {
  function get_keys (line 1937) | pub fn get_keys(
  function get_entry_points (line 1955) | pub fn get_entry_points(&self, entity_addr: EntityAddr) -> EntryPoints {
  function get_value (line 1970) | pub fn get_value<T>(&mut self, entity_addr: EntityAddr, name: &str) -> T
  function get_era (line 1984) | pub fn get_era(&mut self) -> EraId {
  function get_auction_delay (line 1990) | pub fn get_auction_delay(&mut self) -> u64 {
  function get_unbonding_delay (line 1999) | pub fn get_unbonding_delay(&mut self) -> u64 {
  function system_entity_key (line 2007) | fn system_entity_key(&self, request: SystemEntityRegistryRequest) -> Key {
  function get_system_auction_hash (line 2023) | pub fn get_system_auction_hash(&self) -> AddressableEntityHash {
  function get_system_mint_hash (line 2037) | pub fn get_system_mint_hash(&self) -> AddressableEntityHash {
  function get_system_handle_payment_hash (line 2052) | pub fn get_system_handle_payment_hash(
  function clear_results (line 2069) | pub fn clear_results(&mut self) -> &mut Self {
  function advance_eras_by (line 2077) | pub fn advance_eras_by(&mut self, num_eras: u64) {
  function advance_eras_by_default_auction_delay (line 2102) | pub fn advance_eras_by_default_auction_delay(&mut self) {
  function advance_era (line 2108) | pub fn advance_era(&mut self) {
  function step_request_builder (line 2113) | pub fn step_request_builder(&mut self) -> StepRequestBuilder {
  function get_trie (line 2121) | pub fn get_trie(&mut self, state_hash: Digest) -> Option<Trie<Key, Store...
  function get_auction_costs (line 2131) | pub fn get_auction_costs(&self) -> AuctionCosts {
  function get_mint_costs (line 2136) | pub fn get_mint_costs(&self) -> MintCosts {
  function get_handle_payment_costs (line 2141) | pub fn get_handle_payment_costs(&self) -> HandlePaymentCosts {
  function commit_prune (line 2146) | pub fn commit_prune(&mut self, prune_config: PruneRequest) -> &mut Self {
  function get_prune_result (line 2163) | pub fn get_prune_result(&self, index: usize) -> Option<&PruneResult> {
  function expect_prune_success (line 2168) | pub fn expect_prune_success(&mut self) -> &mut Self {
  function calculate_refund_amount (line 2188) | pub fn calculate_refund_amount(&self, payment_amount: U512) -> U512 {

FILE: execution_engine_testing/test_support/tests/version_numbers.rs
  function test_html_root_url (line 2) | fn test_html_root_url() {

FILE: execution_engine_testing/tests/src/lmdb_fixture.rs
  constant RELEASE_1_2_0 (line 19) | pub const RELEASE_1_2_0: &str = "release_1_2_0";
  constant RELEASE_1_3_1 (line 20) | pub const RELEASE_1_3_1: &str = "release_1_3_1";
  constant RELEASE_1_4_2 (line 21) | pub const RELEASE_1_4_2: &str = "release_1_4_2";
  constant RELEASE_1_4_3 (line 22) | pub const RELEASE_1_4_3: &str = "release_1_4_3";
  constant RELEASE_1_4_4 (line 23) | pub const RELEASE_1_4_4: &str = "release_1_4_4";
  constant RELEASE_1_4_5 (line 24) | pub const RELEASE_1_4_5: &str = "release_1_4_5";
  constant RELEASE_1_5_8 (line 25) | pub const RELEASE_1_5_8: &str = "release_1_5_8";
  constant STATE_JSON_FILE (line 26) | const STATE_JSON_FILE: &str = "state.json";
  constant FIXTURES_DIRECTORY (line 27) | const FIXTURES_DIRECTORY: &str = "fixtures";
  constant GENESIS_PROTOCOL_VERSION_FIELD (line 28) | const GENESIS_PROTOCOL_VERSION_FIELD: &str = "protocol_version";
  constant RUN_FIXTURE_GENERATORS_ENV (line 31) | const RUN_FIXTURE_GENERATORS_ENV: &str = "RUN_FIXTURE_GENERATORS";
  function is_fixture_generator_enabled (line 34) | pub(crate) fn is_fixture_generator_enabled() -> bool {
  constant ENTRY_REGISTRY_SPECIAL_ADDRESS (line 40) | pub(crate) const ENTRY_REGISTRY_SPECIAL_ADDRESS: Key =
  function path_to_lmdb_fixtures (line 43) | fn path_to_lmdb_fixtures() -> PathBuf {
  type LmdbFixtureState (line 49) | pub struct LmdbFixtureState {
    method genesis_protocol_version (line 57) | pub fn genesis_protocol_version(&self) -> ProtocolVersion {
  function builder_from_global_state_fixture (line 75) | pub fn builder_from_global_state_fixture(
  function builder_from_global_state_fixture_with_enable_ae (line 100) | pub fn builder_from_global_state_fixture_with_enable_ae(
  function generate_fixture (line 131) | pub fn generate_fixture(

FILE: execution_engine_testing/tests/src/test/calling_packages_by_version_query.rs
  constant DISABLE_CONTRACT (line 25) | const DISABLE_CONTRACT: &str = "disable_contract.wasm";
  constant CONTRACT_WASM (line 29) | const CONTRACT_WASM: &str = "key_putter.wasm";
  function should_call_package_hash_by_exact_version (line 33) | fn should_call_package_hash_by_exact_version() {
  function should_call_package_name_by_exact_version (line 52) | fn should_call_package_name_by_exact_version() {
  function should_call_package_hash_by_exact_version_after_protocol_version_change (line 71) | fn should_call_package_hash_by_exact_version_after_protocol_version_chan...
  function should_call_package_name_by_exact_version_after_protocol_version_change (line 93) | fn should_call_package_name_by_exact_version_after_protocol_version_chan...
  function should_call_by_hash_newest_version_when_only_major_specified (line 113) | fn should_call_by_hash_newest_version_when_only_major_specified() {
  function should_call_by_name_newest_version_when_only_major_specified (line 148) | fn should_call_by_name_newest_version_when_only_major_specified() {
  function should_call_by_hash_the_newest_version (line 183) | fn should_call_by_hash_the_newest_version() {
  function should_call_by_name_the_newest_version (line 233) | fn should_call_by_name_the_newest_version() {
  function when_disamiguous_calls_are_enabled_should_call_by_hash_querying_by_version (line 282) | fn when_disamiguous_calls_are_enabled_should_call_by_hash_querying_by_ve...
  function when_disamiguous_calls_are_disabled_then_ambiguous_call_by_hash_will_fail (line 328) | fn when_disamiguous_calls_are_disabled_then_ambiguous_call_by_hash_will_...
  function when_disamiguous_calls_are_disabled_then_ambiguous_call_by_name_will_fail (line 363) | fn when_disamiguous_calls_are_disabled_then_ambiguous_call_by_name_will_...
  function calling_by_package_hash_should_work_when_more_then_two_protocol_versions (line 397) | fn calling_by_package_hash_should_work_when_more_then_two_protocol_versi...
  function assert_contract_version_hash_placeholder_value (line 416) | fn assert_contract_version_hash_placeholder_value(
  function install (line 433) | fn install(builder: &mut LmdbWasmTestBuilder, file_name: &str, protocol_...
  function get_value_of_named_key_for_contract_hash_as_str (line 444) | fn get_value_of_named_key_for_contract_hash_as_str(
  function disable_contract_version (line 461) | fn disable_contract_version(
  function get_named_keys_for_contract_hash (line 482) | fn get_named_keys_for_contract_hash(
  function call_contract_entrypoint (line 489) | fn call_contract_entrypoint(
  function builder_for_calling_entrypoint (line 500) | fn builder_for_calling_entrypoint(
  function get_package_hash (line 541) | fn get_package_hash(builder: &mut LmdbWasmTestBuilder) -> [u8; 32] {
  function get_contract_hash_for_specific_version (line 554) | fn get_contract_hash_for_specific_version(
  function exec_put_key_by_package_name (line 576) | fn exec_put_key_by_package_name(
  function exec_put_key_by_package_hash (line 596) | fn exec_put_key_by_package_hash(
  function upgrade_version (line 617) | fn upgrade_version(
  function prepare_v1_builder (line 649) | fn prepare_v1_builder() -> LmdbWasmTestBuilder {

FILE: execution_engine_testing/tests/src/test/chainspec_registry.rs
  constant DEFAULT_ACTIVATION_POINT (line 13) | const DEFAULT_ACTIVATION_POINT: EraId = EraId::new(1);
  constant OLD_PROTOCOL_VERSION (line 15) | const OLD_PROTOCOL_VERSION: ProtocolVersion = DEFAULT_PROTOCOL_VERSION;
  constant NEW_PROTOCOL_VERSION (line 16) | const NEW_PROTOCOL_VERSION: ProtocolVersion = ProtocolVersion::from_parts(
  function should_commit_chainspec_registry_during_genesis (line 24) | fn should_commit_chainspec_registry_during_genesis() {
  function should_fail_to_commit_genesis_when_missing_genesis_accounts_hash (line 65) | fn should_fail_to_commit_genesis_when_missing_genesis_accounts_hash() {
  type TestConfig (line 84) | struct TestConfig {
  function should_upgrade_chainspec_registry (line 89) | fn should_upgrade_chainspec_registry(cfg: TestConfig) {
  function should_upgrade_chainspec_registry_with_global_state_hash (line 152) | fn should_upgrade_chainspec_registry_with_global_state_hash() {
  function should_upgrade_chainspec_registry_without_global_state_hash (line 162) | fn should_upgrade_chainspec_registry_without_global_state_hash() {
  function should_upgrade_chainspec_registry_with_global_state_hash_from_v1_4_4 (line 172) | fn should_upgrade_chainspec_registry_with_global_state_hash_from_v1_4_4() {
  function should_upgrade_chainspec_registry_without_global_state_hash_from_v1_4_4 (line 182) | fn should_upgrade_chainspec_registry_without_global_state_hash_from_v1_4...

FILE: execution_engine_testing/tests/src/test/check_transfer_success.rs
  constant ARG_AMOUNT (line 12) | const ARG_AMOUNT: &str = "amount";
  constant ARG_DESTINATION (line 13) | const ARG_DESTINATION: &str = "destination";
  constant TRANSFER_WASM (line 14) | const TRANSFER_WASM: &str = "transfer_main_purse_to_new_purse.wasm";
  constant NEW_PURSE_NAME (line 15) | const NEW_PURSE_NAME: &str = "test_purse";
  constant FIRST_TRANSFER_AMOUNT (line 16) | const FIRST_TRANSFER_AMOUNT: u64 = 142;
  constant SECOND_TRANSFER_AMOUNT (line 17) | const SECOND_TRANSFER_AMOUNT: u64 = 250;
  function test_check_transfer_success_with_source_only (line 21) | fn test_check_transfer_success_with_source_only() {
  function test_check_transfer_success_with_source_only_errors (line 86) | fn test_check_transfer_success_with_source_only_errors() {
  function test_check_transfer_success_with_source_and_target (line 149) | fn test_check_transfer_success_with_source_and_target() {

FILE: execution_engine_testing/tests/src/test/contract_api/account/associated_keys.rs
  constant CONTRACT_ADD_UPDATE_ASSOCIATED_KEY (line 15) | const CONTRACT_ADD_UPDATE_ASSOCIATED_KEY: &str = "add_update_associated_...
  constant CONTRACT_REMOVE_ASSOCIATED_KEY (line 16) | const CONTRACT_REMOVE_ASSOCIATED_KEY: &str = "remove_associated_key.wasm";
  constant CONTRACT_TRANSFER_PURSE_TO_ACCOUNT (line 17) | const CONTRACT_TRANSFER_PURSE_TO_ACCOUNT: &str = "transfer_purse_to_acco...
  constant ACCOUNT_1_ADDR (line 18) | const ACCOUNT_1_ADDR: AccountHash = AccountHash::new([1u8; 32]);
  constant ARG_ACCOUNT (line 19) | const ARG_ACCOUNT: &str = "account";
  function should_manage_associated_key (line 25) | fn should_manage_associated_key() {
  function should_remove_associated_key_when_at_max_allowed_cap (line 86) | fn should_remove_associated_key_when_at_max_allowed_cap() {

FILE: execution_engine_testing/tests/src/test/contract_api/account/authorized_keys.rs
  constant CONTRACT_ADD_ASSOCIATED_KEY (line 12) | const CONTRACT_ADD_ASSOCIATED_KEY: &str = "add_associated_key.wasm";
  constant CONTRACT_ADD_UPDATE_ASSOCIATED_KEY (line 13) | const CONTRACT_ADD_UPDATE_ASSOCIATED_KEY: &str = "add_update_associated_...
  constant CONTRACT_SET_ACTION_THRESHOLDS (line 14) | const CONTRACT_SET_ACTION_THRESHOLDS: &str = "set_action_thresholds.wasm";
  constant ARG_KEY_MANAGEMENT_THRESHOLD (line 15) | const ARG_KEY_MANAGEMENT_THRESHOLD: &str = "key_management_threshold";
  constant ARG_DEPLOY_THRESHOLD (line 16) | const ARG_DEPLOY_THRESHOLD: &str = "deploy_threshold";
  constant ARG_ACCOUNT (line 17) | const ARG_ACCOUNT: &str = "account";
  constant ARG_WEIGHT (line 18) | const ARG_WEIGHT: &str = "weight";
  constant KEY_1 (line 19) | const KEY_1: AccountHash = AccountHash::new([254; 32]);
  constant KEY_2 (line 20) | const KEY_2: AccountHash = AccountHash::new([253; 32]);
  constant KEY_2_WEIGHT (line 21) | const KEY_2_WEIGHT: Weight = Weight::new(100);
  constant KEY_3 (line 22) | const KEY_3: AccountHash = AccountHash::new([252; 32]);
  function should_deploy_with_authorized_identity_key (line 26) | fn should_deploy_with_authorized_identity_key() {
  function should_raise_auth_failure_with_invalid_key (line 46) | fn should_raise_auth_failure_with_invalid_key() {
  function should_raise_auth_failure_with_invalid_keys (line 95) | fn should_raise_auth_failure_with_invalid_keys() {
  function should_raise_deploy_authorization_failure (line 142) | fn should_raise_deploy_authorization_failure() {
  function should_authorize_deploy_with_multiple_keys (line 309) | fn should_authorize_deploy_with_multiple_keys() {
  function should_not_authorize_deploy_with_duplicated_keys (line 361) | fn should_not_authorize_deploy_with_duplicated_keys() {
  function should_not_authorize_transfer_without_deploy_key_threshold (line 444) | fn should_not_authorize_transfer_without_deploy_key_threshold() {

FILE: execution_engine_testing/tests/src/test/contract_api/account/key_management_thresholds.rs
  constant CONTRACT_KEY_MANAGEMENT_THRESHOLDS (line 7) | const CONTRACT_KEY_MANAGEMENT_THRESHOLDS: &str = "key_management_thresho...
  constant ARG_STAGE (line 9) | const ARG_STAGE: &str = "stage";
  function should_verify_key_management_permission_with_low_weight (line 13) | fn should_verify_key_management_permission_with_low_weight() {
  function should_verify_key_management_permission_with_sufficient_weight (line 38) | fn should_verify_key_management_permission_with_sufficient_weight() {

FILE: execution_engine_testing/tests/src/test/contract_api/account/named_keys.rs
  constant CONTRACT_NAMED_KEYS (line 6) | const CONTRACT_NAMED_KEYS: &str = "named_keys.wasm";
  constant EXPECTED_UREF_VALUE (line 7) | const EXPECTED_UREF_VALUE: u64 = 123_456_789u64;
  constant KEY1 (line 9) | const KEY1: &str = "hello-world";
  constant KEY2 (line 10) | const KEY2: &str = "big-value";
  constant COMMAND_CREATE_UREF1 (line 12) | const COMMAND_CREATE_UREF1: &str = "create-uref1";
  constant COMMAND_CREATE_UREF2 (line 13) | const COMMAND_CREATE_UREF2: &str = "create-uref2";
  constant COMMAND_REMOVE_UREF1 (line 14) | const COMMAND_REMOVE_UREF1: &str = "remove-uref1";
  constant COMMAND_REMOVE_UREF2 (line 15) | const COMMAND_REMOVE_UREF2: &str = "remove-uref2";
  constant COMMAND_TEST_READ_UREF1 (line 16) | const COMMAND_TEST_READ_UREF1: &str = "test-read-uref1";
  constant COMMAND_TEST_READ_UREF2 (line 17) | const COMMAND_TEST_READ_UREF2: &str = "test-read-uref2";
  constant COMMAND_INCREASE_UREF2 (line 18) | const COMMAND_INCREASE_UREF2: &str = "increase-uref2";
  constant COMMAND_OVERWRITE_UREF2 (line 19) | const COMMAND_OVERWRITE_UREF2: &str = "overwrite-uref2";
  constant ARG_COMMAND (line 20) | const ARG_COMMAND: &str = "command";
  function run_command (line 22) | fn run_command(builder: &mut LmdbWasmTestBuilder, command: &str) {
  function read_value (line 32) | fn read_value<T: CLTyped + FromBytes>(builder: &mut LmdbWasmTestBuilder,...
  function should_run_named_keys_contract (line 41) | fn should_run_named_keys_contract() {

FILE: execution_engine_testing/tests/src/test/contract_api/account/named_keys_stored.rs
  constant CONTRACT_HASH_NAME (line 7) | const CONTRACT_HASH_NAME: &str = "contract_stored";
  constant ENTRY_POINT_CONTRACT (line 8) | const ENTRY_POINT_CONTRACT: &str = "named_keys_contract";
  constant ENTRY_POINT_SESSION (line 9) | const ENTRY_POINT_SESSION: &str = "named_keys_session";
  constant ENTRY_POINT_CONTRACT_TO_CONTRACT (line 10) | const ENTRY_POINT_CONTRACT_TO_CONTRACT: &str = "named_keys_contract_to_c...
  function should_run_stored_named_keys_contract (line 14) | fn should_run_stored_named_keys_contract() {
  function should_run_stored_named_keys_session (line 29) | fn should_run_stored_named_keys_session() {
  function should_run_stored_named_keys_contract_to_contract (line 50) | fn should_run_stored_named_keys_contract_to_contract() {
  function should_run_stored_named_keys_module_bytes_to_contract (line 65) | fn should_run_stored_named_keys_module_bytes_to_contract() {
  function should_run_stored_named_keys_module_bytes_to_contract_to_contract (line 81) | fn should_run_stored_named_keys_module_bytes_to_contract_to_contract() {
  function setup (line 95) | fn setup() -> LmdbWasmTestBuilder {

FILE: execution_engine_testing/tests/src/test/contract_api/add_contract_version.rs
  constant CONTRACT (line 20) | const CONTRACT: &str = "do_nothing_stored.wasm";
  constant CHAIN_NAME (line 21) | const CHAIN_NAME: &str = "a";
  constant BLOCK_TIME (line 22) | const BLOCK_TIME: BlockTime = BlockTime::new(10);
  constant ARGS_MAP_KEY (line 24) | pub(crate) const ARGS_MAP_KEY: u16 = 0;
  constant TARGET_MAP_KEY (line 25) | pub(crate) const TARGET_MAP_KEY: u16 = 1;
  constant ENTRY_POINT_MAP_KEY (line 26) | pub(crate) const ENTRY_POINT_MAP_KEY: u16 = 2;
  constant SCHEDULING_MAP_KEY (line 27) | pub(crate) const SCHEDULING_MAP_KEY: u16 = 3;
  function should_allow_add_contract_version_via_deploy (line 31) | fn should_allow_add_contract_version_via_deploy() {
  function try_add_contract_version (line 42) | fn try_add_contract_version(
  function new_transaction_v1_session (line 110) | pub fn new_transaction_v1_session(
  function build_transaction (line 149) | fn build_transaction(
  function to_v1_session_input_data (line 176) | fn to_v1_session_input_data<'a>(
  function should_allow_add_contract_version_via_transaction_v1_installer_upgrader (line 211) | fn should_allow_add_contract_version_via_transaction_v1_installer_upgrad...
  function should_disallow_add_contract_version_via_transaction_v1_standard (line 219) | fn should_disallow_add_contract_version_via_transaction_v1_standard() {
  function should_allow_1x_user_to_add_contract_version_via_transaction_v1_installer_upgrader (line 227) | fn should_allow_1x_user_to_add_contract_version_via_transaction_v1_insta...

FILE: execution_engine_testing/tests/src/test/contract_api/auction.rs
  constant ADD_BIDS_WASM (line 14) | const ADD_BIDS_WASM: &str = "auction_bids.wasm";
  constant ARG_ENTRY_POINT (line 15) | const ARG_ENTRY_POINT: &str = "entry_point";
  constant CHAINSPEC_NAME (line 17) | pub const CHAINSPEC_NAME: &str = "chainspec.toml";
  function add_auction_should_fail_when_delegation_rate_not_met (line 23) | fn add_auction_should_fail_when_delegation_rate_not_met() {

FILE: execution_engine_testing/tests/src/test/contract_api/create_purse.rs
  constant CONTRACT_CREATE_PURSE_01 (line 9) | const CONTRACT_CREATE_PURSE_01: &str = "create_purse_01.wasm";
  constant CONTRACT_TRANSFER_PURSE_TO_ACCOUNT (line 10) | const CONTRACT_TRANSFER_PURSE_TO_ACCOUNT: &str = "transfer_purse_to_acco...
  constant ACCOUNT_1_ADDR (line 11) | const ACCOUNT_1_ADDR: AccountHash = AccountHash::new([1u8; 32]);
  constant TEST_PURSE_NAME (line 12) | const TEST_PURSE_NAME: &str = "test_purse";
  constant ARG_PURSE_NAME (line 13) | const ARG_PURSE_NAME: &str = "purse_name";
  function should_insert_account_into_named_keys (line 19) | fn should_insert_account_into_named_keys() {
  function should_create_usable_purse (line 54) | fn should_create_usable_purse() {

FILE: execution_engine_testing/tests/src/test/contract_api/dictionary.rs
  constant DICTIONARY_WASM (line 20) | const DICTIONARY_WASM: &str = "dictionary.wasm";
  constant DICTIONARY_CALL_WASM (line 21) | const DICTIONARY_CALL_WASM: &str = "dictionary_call.wasm";
  constant DICTIONARY_ITEM_KEY_CHECK (line 22) | const DICTIONARY_ITEM_KEY_CHECK: &str = "dictionary-item-key-check.wasm";
  constant DICTIONARY_READ (line 23) | const DICTIONARY_READ: &str = "dictionary_read.wasm";
  constant READ_FROM_KEY (line 24) | const READ_FROM_KEY: &str = "read_from_key.wasm";
  constant ACCOUNT_1_ADDR (line 25) | const ACCOUNT_1_ADDR: AccountHash = AccountHash::new([1u8; 32]);
  function setup (line 27) | fn setup() -> (LmdbWasmTestBuilder, AddressableEntityHash) {
  function query_dictionary_item (line 70) | fn query_dictionary_item(
  function should_modify_with_owned_access_rights (line 172) | fn should_modify_with_owned_access_rights() {
  function should_not_write_with_read_access_rights (line 251) | fn should_not_write_with_read_access_rights() {
  function should_read_with_read_access_rights (line 283) | fn should_read_with_read_access_rights() {
  function should_not_read_with_write_access_rights (line 302) | fn should_not_read_with_write_access_rights() {
  function should_write_with_write_access_rights (line 334) | fn should_write_with_write_access_rights() {
  function should_not_write_with_forged_uref (line 372) | fn should_not_write_with_forged_uref() {
  function should_fail_put_with_invalid_dictionary_item_key (line 415) | fn should_fail_put_with_invalid_dictionary_item_key() {
  function should_fail_get_with_invalid_dictionary_item_key (line 451) | fn should_fail_get_with_invalid_dictionary_item_key() {
  function dictionary_put_should_fail_with_large_item_key (line 487) | fn dictionary_put_should_fail_with_large_item_key() {
  function dictionary_get_should_fail_with_large_item_key (line 520) | fn dictionary_get_should_fail_with_large_item_key() {
  function should_query_dictionary_items_with_test_builder (line 553) | fn should_query_dictionary_items_with_test_builder() {
  function should_be_able_to_perform_dictionary_read (line 676) | fn should_be_able_to_perform_dictionary_read() {
  function should_be_able_to_perform_read_from_key (line 692) | fn should_be_able_to_perform_read_from_key() {

FILE: execution_engine_testing/tests/src/test/contract_api/generic_hash.rs
  constant GENERIC_HASH_WASM (line 6) | const GENERIC_HASH_WASM: &str = "generic_hash.wasm";
  function should_run_generic_hash_blake2 (line 10) | fn should_run_generic_hash_blake2() {
  function should_run_generic_hash_blake3 (line 31) | fn should_run_generic_hash_blake3() {
  function should_run_generic_hash_sha256 (line 52) | fn should_run_generic_hash_sha256() {

FILE: execution_engine_testing/tests/src/test/contract_api/get_arg.rs
  constant CONTRACT_GET_ARG (line 6) | const CONTRACT_GET_ARG: &str = "get_arg.wasm";
  constant ARG0_VALUE (line 7) | const ARG0_VALUE: &str = "Hello, world!";
  constant ARG1_VALUE (line 8) | const ARG1_VALUE: u64 = 42;
  constant ARG_VALUE0 (line 9) | const ARG_VALUE0: &str = "value0";
  constant ARG_VALUE1 (line 10) | const ARG_VALUE1: &str = "value1";
  function call_get_arg (line 14) | fn call_get_arg(args: RuntimeArgs) -> Result<(), String> {
  function should_use_passed_argument (line 34) | fn should_use_passed_argument() {
  function should_revert_with_missing_arg (line 44) | fn should_revert_with_missing_arg() {
  function should_revert_with_invalid_argument (line 57) | fn should_revert_with_invalid_argument() {

FILE: execution_engine_testing/tests/src/test/contract_api/get_block_info.rs
  constant CONTRACT_GET_BLOCKINFO (line 6) | const CONTRACT_GET_BLOCKINFO: &str = "get_blockinfo.wasm";
  constant ARG_FIELD_IDX (line 7) | const ARG_FIELD_IDX: &str = "field_idx";
  constant FIELD_IDX_BLOCK_TIME (line 9) | const FIELD_IDX_BLOCK_TIME: u8 = 0;
  constant ARG_KNOWN_BLOCK_TIME (line 10) | const ARG_KNOWN_BLOCK_TIME: &str = "known_block_time";
  function should_run_get_block_time (line 14) | fn should_run_get_block_time() {
  constant FIELD_IDX_BLOCK_HEIGHT (line 34) | const FIELD_IDX_BLOCK_HEIGHT: u8 = 1;
  constant ARG_KNOWN_BLOCK_HEIGHT (line 35) | const ARG_KNOWN_BLOCK_HEIGHT: &str = "known_block_height";
  function should_run_get_block_height (line 39) | fn should_run_get_block_height() {
  constant FIELD_IDX_PARENT_BLOCK_HASH (line 59) | const FIELD_IDX_PARENT_BLOCK_HASH: u8 = 2;
  constant ARG_KNOWN_BLOCK_PARENT_HASH (line 60) | const ARG_KNOWN_BLOCK_PARENT_HASH: &str = "known_block_parent_hash";
  function should_run_get_block_parent_hash (line 64) | fn should_run_get_block_parent_hash() {
  constant FIELD_IDX_STATE_HASH (line 87) | const FIELD_IDX_STATE_HASH: u8 = 3;
  constant ARG_KNOWN_STATE_HASH (line 88) | const ARG_KNOWN_STATE_HASH: &str = "known_state_hash";
  function should_run_get_state_hash (line 92) | fn should_run_get_state_hash() {
  constant FIELD_IDX_PROTOCOL_VERSION (line 114) | const FIELD_IDX_PROTOCOL_VERSION: u8 = 4;
  constant ARG_KNOWN_PROTOCOL_VERSION (line 115) | const ARG_KNOWN_PROTOCOL_VERSION: &str = "known_protocol_version";
  function should_run_get_protocol_version (line 119) | fn should_run_get_protocol_version() {
  constant FIELD_IDX_ADDRESSABLE_ENTITY (line 140) | const FIELD_IDX_ADDRESSABLE_ENTITY: u8 = 5;
  constant ARG_KNOWN_ADDRESSABLE_ENTITY (line 141) | const ARG_KNOWN_ADDRESSABLE_ENTITY: &str = "known_addressable_entity";
  function should_run_get_addressable_entity (line 145) | fn should_run_get_addressable_entity() {

FILE: execution_engine_testing/tests/src/test/contract_api/get_blocktime.rs
  constant CONTRACT_GET_BLOCKTIME (line 6) | const CONTRACT_GET_BLOCKTIME: &str = "get_blocktime.wasm";
  constant ARG_KNOWN_BLOCK_TIME (line 7) | const ARG_KNOWN_BLOCK_TIME: &str = "known_block_time";
  function should_run_get_blocktime_contract (line 11) | fn should_run_get_blocktime_contract() {

FILE: execution_engine_testing/tests/src/test/contract_api/get_call_stack.rs
  constant CONTRACT_RECURSIVE_SUBCALL (line 21) | const CONTRACT_RECURSIVE_SUBCALL: &str = "get_call_stack_recursive_subca...
  constant CONTRACT_CALL_RECURSIVE_SUBCALL (line 22) | const CONTRACT_CALL_RECURSIVE_SUBCALL: &str = "get_call_stack_call_recur...
  constant CONTRACT_PACKAGE_NAME (line 24) | const CONTRACT_PACKAGE_NAME: &str = "forwarder";
  constant CONTRACT_NAME (line 25) | const CONTRACT_NAME: &str = "our_contract_name";
  constant CONTRACT_FORWARDER_ENTRYPOINT_CONTRACT (line 27) | const CONTRACT_FORWARDER_ENTRYPOINT_CONTRACT: &str = METHOD_FORWARDER_CO...
  constant CONTRACT_FORWARDER_ENTRYPOINT_SESSION (line 28) | const CONTRACT_FORWARDER_ENTRYPOINT_SESSION: &str = METHOD_FORWARDER_SES...
  function stored_session (line 30) | fn stored_session(contract_hash: ContractHash) -> Call {
  function stored_versioned_session (line 38) | fn stored_versioned_session(contract_package_hash: ContractPackageHash) ...
  function stored_contract (line 46) | fn stored_contract(contract_hash: ContractHash) -> Call {
  function stored_versioned_contract (line 54) | fn stored_versioned_contract(contract_package_hash: ContractPackageHash)...
  function store_contract (line 62) | fn store_contract(builder: &mut LmdbWasmTestBuilder, session_filename: &...
  function execute_and_assert_result (line 72) | fn execute_and_assert_result(
  constant LARGE_AMOUNT (line 93) | const LARGE_AMOUNT: u64 = 1_500_000_000_000;
  function approved_amount (line 98) | pub fn approved_amount(idx: usize) -> U512 {
  type AccountExt (line 102) | trait AccountExt {
    method get_hash (line 103) | fn get_hash(&self, key: &str) -> HashAddr;
    method get_hash (line 107) | fn get_hash(&self, key: &str) -> HashAddr {
  type BuilderExt (line 116) | trait BuilderExt {
    method get_call_stack_from_session_context (line 117) | fn get_call_stack_from_session_context(&mut self, stored_call_stack_ke...
    method get_call_stack_from_contract_context (line 119) | fn get_call_stack_from_contract_context(
    method get_call_stack_from_session_context (line 127) | fn get_call_stack_from_session_context(&mut self, stored_call_stack_ke...
    method get_call_stack_from_contract_context (line 209) | fn get_call_stack_from_contract_context(
  function setup (line 307) | fn setup() -> LmdbWasmTestBuilder {
  function assert_each_context_has_correct_call_stack_info (line 314) | fn assert_each_context_has_correct_call_stack_info(
  function assert_invalid_context (line 358) | fn assert_invalid_context(builder: &mut LmdbWasmTestBuilder, depth: usiz...
  function assert_each_context_has_correct_call_stack_info_module_bytes (line 370) | fn assert_each_context_has_correct_call_stack_info_module_bytes(
  function assert_call_stack_matches_calls (line 409) | fn assert_call_stack_matches_calls(call_stack: Vec<Caller>, calls: &[Cal...
  constant DEPTHS (line 486) | const DEPTHS: &[usize] = &[0, 2, 5, 10];
  function session_bytes_to_stored_versioned_contract (line 492) | fn session_bytes_to_stored_versioned_contract() {
  function session_bytes_to_stored_contract (line 524) | fn session_bytes_to_stored_contract() {
  function session_bytes_to_stored_versioned_contract_to_stored_contract (line 556) | fn session_bytes_to_stored_versioned_contract_to_stored_contract() {
  function session_bytes_to_stored_contract_to_stored_versioned_contract (line 595) | fn session_bytes_to_stored_contract_to_stored_versioned_contract() {
  function session_bytes_to_stored_versioned_session_to_stored_versioned_contract (line 633) | fn session_bytes_to_stored_versioned_session_to_stored_versioned_contrac...
  function session_bytes_to_stored_versioned_session_to_stored_contract (line 674) | fn session_bytes_to_stored_versioned_session_to_stored_contract() {
  function session_bytes_to_stored_session_to_stored_versioned_contract (line 713) | fn session_bytes_to_stored_session_to_stored_versioned_contract() {
  function session_bytes_to_stored_session_to_stored_contract (line 751) | fn session_bytes_to_stored_session_to_stored_contract() {
  function session_bytes_to_stored_versioned_session (line 787) | fn session_bytes_to_stored_versioned_session() {
  function session_bytes_to_stored_versioned_session_to_stored_session (line 819) | fn session_bytes_to_stored_versioned_session_to_stored_session() {
  function session_bytes_to_stored_session_to_stored_versioned_session (line 858) | fn session_bytes_to_stored_session_to_stored_versioned_session() {
  function session_bytes_to_stored_session (line 896) | fn session_bytes_to_stored_session() {
  function session_bytes_to_stored_versioned_contract_to_stored_versioned_session_should_fail (line 930) | fn session_bytes_to_stored_versioned_contract_to_stored_versioned_sessio...
  function session_bytes_to_stored_versioned_contract_to_stored_session_should_fail (line 966) | fn session_bytes_to_stored_versioned_contract_to_stored_session_should_f...
  function session_bytes_to_stored_contract_to_stored_versioned_session_should_fail (line 1001) | fn session_bytes_to_stored_contract_to_stored_versioned_session_should_f...
  function session_bytes_to_stored_contract_to_stored_session_should_fail (line 1035) | fn session_bytes_to_stored_contract_to_stored_session_should_fail() {
  function stored_versioned_contract_by_name_to_stored_versioned_contract (line 1068) | fn stored_versioned_contract_by_name_to_stored_versioned_contract() {
  function stored_versioned_contract_by_hash_to_stored_versioned_contract (line 1103) | fn stored_versioned_contract_by_hash_to_stored_versioned_contract() {
  function stored_versioned_contract_by_name_to_stored_contract (line 1155) | fn stored_versioned_contract_by_name_to_stored_contract() {
  function stored_versioned_contract_by_hash_to_stored_contract (line 1190) | fn stored_versioned_contract_by_hash_to_stored_contract() {
  function stored_contract_by_name_to_stored_versioned_contract (line 1225) | fn stored_contract_by_name_to_stored_versioned_contract() {
  function stored_contract_by_hash_to_stored_versioned_contract (line 1260) | fn stored_contract_by_hash_to_stored_versioned_contract() {
  function stored_contract_by_name_to_stored_contract (line 1304) | fn stored_contract_by_name_to_stored_contract() {
  function stored_contract_by_hash_to_stored_contract (line 1338) | fn stored_contract_by_hash_to_stored_contract() {
  function stored_versioned_contract_by_name_to_stored_versioned_session_should_fail (line 1374) | fn stored_versioned_contract_by_name_to_stored_versioned_session_should_...
  function stored_versioned_contract_by_hash_to_stored_versioned_session_should_fail (line 1404) | fn stored_versioned_contract_by_hash_to_stored_versioned_session_should_...
  function stored_versioned_contract_by_name_to_stored_session_should_fail (line 1434) | fn stored_versioned_contract_by_name_to_stored_session_should_fail() {
  function stored_versioned_contract_by_hash_to_stored_session_should_fail (line 1463) | fn stored_versioned_contract_by_hash_to_stored_session_should_fail() {
  function stored_contract_by_name_to_stored_versioned_session_should_fail (line 1493) | fn stored_contract_by_name_to_stored_versioned_session_should_fail() {
  function stored_contract_by_hash_to_stored_versioned_session_should_fail (line 1522) | fn stored_contract_by_hash_to_stored_versioned_session_should_fail() {
  function stored_contract_by_name_to_stored_session_should_fail (line 1552) | fn stored_contract_by_name_to_stored_session_should_fail() {
  function stored_contract_by_hash_to_stored_session_should_fail (line 1580) | fn stored_contract_by_hash_to_stored_session_should_fail() {
  function stored_versioned_contract_by_name_to_stored_versioned_contract_to_stored_versioned_session_should_fail (line 1608) | fn stored_versioned_contract_by_name_to_stored_versioned_contract_to_sto...
  function stored_versioned_contract_by_hash_to_stored_versioned_contract_to_stored_session_should_fail (line 1647) | fn stored_versioned_contract_by_hash_to_stored_versioned_contract_to_sto...
  function stored_versioned_contract_by_name_to_stored_contract_to_stored_versioned_session_should_fail (line 1685) | fn stored_versioned_contract_by_name_to_stored_contract_to_stored_versio...
  function stored_versioned_contract_by_hash_to_stored_contract_to_stored_session_should_fail (line 1722) | fn stored_versioned_contract_by_hash_to_stored_contract_to_stored_sessio...
  function stored_contract_by_name_to_stored_versioned_contract_to_stored_versioned_session_should_fail (line 1756) | fn stored_contract_by_name_to_stored_versioned_contract_to_stored_versio...
  function stored_contract_by_hash_to_stored_versioned_contract_to_stored_session_should_fail (line 1794) | fn stored_contract_by_hash_to_stored_versioned_contract_to_stored_sessio...
  function stored_contract_by_name_to_stored_contract_to_stored_versioned_session_should_fail (line 1830) | fn stored_contract_by_name_to_stored_contract_to_stored_versioned_sessio...
  function stored_contract_by_hash_to_stored_contract_to_stored_session_should_fail (line 1865) | fn stored_contract_by_hash_to_stored_contract_to_stored_session_should_f...
  function stored_versioned_session_by_name_to_stored_versioned_session (line 1899) | fn stored_versioned_session_by_name_to_stored_versioned_session() {
  function stored_versioned_session_by_hash_to_stored_versioned_session (line 1934) | fn stored_versioned_session_by_hash_to_stored_versioned_session() {
  function stored_versioned_session_by_name_to_stored_session (line 1969) | fn stored_versioned_session_by_name_to_stored_session() {
  function stored_versioned_session_by_hash_to_stored_session (line 2004) | fn stored_versioned_session_by_hash_to_stored_session() {
  function stored_session_by_name_to_stored_versioned_session (line 2039) | fn stored_session_by_name_to_stored_versioned_session() {
  function stored_session_by_hash_to_stored_versioned_session (line 2074) | fn stored_session_by_hash_to_stored_versioned_session() {
  function stored_session_by_name_to_stored_session (line 2109) | fn stored_session_by_name_to_stored_session() {
  function stored_session_by_hash_to_stored_session (line 2143) | fn stored_session_by_hash_to_stored_session() {
  function stored_versioned_session_by_name_to_stored_versioned_contract (line 2177) | fn stored_versioned_session_by_name_to_stored_versioned_contract() {
  function stored_versioned_session_by_hash_to_stored_versioned_contract (line 2212) | fn stored_versioned_session_by_hash_to_stored_versioned_contract() {
  function stored_versioned_session_by_name_to_stored_contract (line 2247) | fn stored_versioned_session_by_name_to_stored_contract() {
  function stored_versioned_session_by_hash_to_stored_contract (line 2282) | fn stored_versioned_session_by_hash_to_stored_contract() {
  function stored_session_by_name_to_stored_versioned_contract (line 2317) | fn stored_session_by_name_to_stored_versioned_contract() {
  function stored_session_by_hash_to_stored_versioned_contract (line 2352) | fn stored_session_by_hash_to_stored_versioned_contract() {
  function stored_session_by_name_to_stored_contract (line 2387) | fn stored_session_by_name_to_stored_contract() {
  function stored_session_by_hash_to_stored_contract (line 2421) | fn stored_session_by_hash_to_stored_contract() {
  function stored_versioned_session_by_name_to_stored_versioned_contract_to_stored_versioned_session_should_fail (line 2457) | fn stored_versioned_session_by_name_to_stored_versioned_contract_to_stor...
  function stored_versioned_session_by_hash_to_stored_versioned_contract_to_stored_session_should_fail (line 2496) | fn stored_versioned_session_by_hash_to_stored_versioned_contract_to_stor...
  function stored_versioned_session_by_name_to_stored_contract_to_stored_versioned_session_should_fail (line 2534) | fn stored_versioned_session_by_name_to_stored_contract_to_stored_version...
  function stored_versioned_session_by_hash_to_stored_contract_to_stored_session_should_fail (line 2571) | fn stored_versioned_session_by_hash_to_stored_contract_to_stored_session...
  function stored_session_by_name_to_stored_versioned_contract_to_stored_versioned_session_should_fail (line 2605) | fn stored_session_by_name_to_stored_versioned_contract_to_stored_version...
  function stored_session_by_hash_to_stored_versioned_contract_to_stored_session_should_fail (line 2643) | fn stored_session_by_hash_to_stored_versioned_contract_to_stored_session...
  function stored_session_by_name_to_stored_contract_to_stored_versioned_session_should_fail (line 2679) | fn stored_session_by_name_to_stored_contract_to_stored_versioned_session...
  function stored_session_by_hash_to_stored_contract_to_stored_session_should_fail (line 2714) | fn stored_session_by_hash_to_stored_contract_to_stored_session_should_fa...
  constant DEPTHS (line 2765) | const DEPTHS: &[usize] = &[0, 6, 10];
  function execute (line 2767) | fn execute(
  function execute_stored_payment_by_package_name (line 2795) | fn execute_stored_payment_by_package_name(
  function execute_stored_payment_by_package_hash (line 2831) | fn execute_stored_payment_by_package_hash(
  function execute_stored_payment_by_contract_name (line 2864) | fn execute_stored_payment_by_contract_name(
  function execute_stored_payment_by_contract_hash (line 2899) | fn execute_stored_payment_by_contract_hash(
  function payment_bytes_to_stored_versioned_session_to_stored_versioned_contract (line 2935) | fn payment_bytes_to_stored_versioned_session_to_stored_versioned_contrac...
  function payment_bytes_to_stored_versioned_session_to_stored_contract (line 2958) | fn payment_bytes_to_stored_versioned_session_to_stored_contract() {
  function payment_bytes_to_stored_session_to_stored_versioned_contract (line 2980) | fn payment_bytes_to_stored_session_to_stored_versioned_contract() {
  function payment_bytes_to_stored_contract_to_stored_session (line 3006) | fn payment_bytes_to_stored_contract_to_stored_session() {
  function payment_bytes_to_stored_session_to_stored_contract_ (line 3021) | fn payment_bytes_to_stored_session_to_stored_contract_() {
  function payment_bytes_to_stored_versioned_contract_to_stored_versioned_session_should_fail (line 3042) | fn payment_bytes_to_stored_versioned_contract_to_stored_versioned_sessio...
  function payment_bytes_to_stored_versioned_contract_to_stored_session_should_fail (line 3065) | fn payment_bytes_to_stored_versioned_contract_to_stored_session_should_f...
  function payment_bytes_to_stored_contract_to_stored_versioned_session_should_fail (line 3087) | fn payment_bytes_to_stored_contract_to_stored_versioned_session_should_f...
  function payment_bytes_to_stored_contract_to_stored_session_should_fail (line 3110) | fn payment_bytes_to_stored_contract_to_stored_session_should_fail() {
  function stored_versioned_payment_by_name_to_stored_versioned_session (line 3132) | fn stored_versioned_payment_by_name_to_stored_versioned_session() {
  function stored_versioned_payment_by_hash_to_stored_versioned_session (line 3150) | fn stored_versioned_payment_by_hash_to_stored_versioned_session() {
  function stored_versioned_payment_by_name_to_stored_session (line 3173) | fn stored_versioned_payment_by_name_to_stored_session() {
  function stored_versioned_payment_by_hash_to_stored_session (line 3187) | fn stored_versioned_payment_by_hash_to_stored_session() {
  function stored_payment_by_name_to_stored_versioned_session (line 3207) | fn stored_payment_by_name_to_stored_versioned_session() {
  function stored_payment_by_hash_to_stored_versioned_session (line 3225) | fn stored_payment_by_hash_to_stored_versioned_session() {
  function stored_payment_by_name_to_stored_session (line 3249) | fn stored_payment_by_name_to_stored_session() {
  function stored_payment_by_hash_to_stored_session (line 3263) | fn stored_payment_by_hash_to_stored_session() {
  function stored_versioned_payment_by_name_to_stored_versioned_contract (line 3282) | fn stored_versioned_payment_by_name_to_stored_versioned_contract() {
  function stored_versioned_payment_by_hash_to_stored_versioned_contract (line 3300) | fn stored_versioned_payment_by_hash_to_stored_versioned_contract() {
  function stored_versioned_payment_by_name_to_stored_contract (line 3323) | fn stored_versioned_payment_by_name_to_stored_contract() {
  function stored_versioned_payment_by_hash_to_stored_contract (line 3337) | fn stored_versioned_payment_by_hash_to_stored_contract() {
  function stored_payment_by_name_to_stored_versioned_contract (line 3357) | fn stored_payment_by_name_to_stored_versioned_contract() {
  function stored_payment_by_hash_to_stored_versioned_contract (line 3375) | fn stored_payment_by_hash_to_stored_versioned_contract() {
  function stored_payment_by_name_to_stored_contract (line 3399) | fn stored_payment_by_name_to_stored_contract() {
  function stored_payment_by_hash_to_stored_contract (line 3413) | fn stored_payment_by_hash_to_stored_contract() {
  function stored_versioned_payment_by_name_to_stored_versioned_contract_to_stored_versioned_session_should_fail (line 3435) | fn stored_versioned_payment_by_name_to_stored_versioned_contract_to_stor...
  function stored_versioned_payment_by_hash_to_stored_versioned_contract_to_stored_session_should_fail (line 3459) | fn stored_versioned_payment_by_hash_to_stored_versioned_contract_to_stor...
  function stored_versioned_payment_by_name_to_stored_contract_to_stored_versioned_session_should_fail (line 3487) | fn stored_versioned_payment_by_name_to_stored_contract_to_stored_version...
  function stored_versioned_payment_by_hash_to_stored_contract_to_stored_session_should_fail (line 3511) | fn stored_versioned_payment_by_hash_to_stored_contract_to_stored_session...
  function stored_payment_by_name_to_stored_versioned_contract_to_stored_versioned_session_should_fail (line 3537) | fn stored_payment_by_name_to_stored_versioned_contract_to_stored_version...
  function stored_session_by_hash_to_stored_versioned_contract_to_stored_session_should_fail (line 3561) | fn stored_session_by_hash_to_stored_versioned_contract_to_stored_session...
  function stored_payment_by_name_to_stored_contract_to_stored_versioned_session_should_fail (line 3588) | fn stored_payment_by_name_to_stored_contract_to_stored_versioned_session...
  function stored_payment_by_name_to_stored_contract_to_stored_session_should_fail (line 3611) | fn stored_payment_by_name_to_stored_contract_to_stored_session_should_fa...

FILE: execution_engine_testing/tests/src/test/contract_api/get_caller.rs
  constant CONTRACT_GET_CALLER (line 13) | const CONTRACT_GET_CALLER: &str = "get_caller.wasm";
  constant CONTRACT_GET_CALLER_SUBCALL (line 14) | const CONTRACT_GET_CALLER_SUBCALL: &str = "get_caller_subcall.wasm";
  constant CONTRACT_TRANSFER_PURSE_TO_ACCOUNT (line 15) | const CONTRACT_TRANSFER_PURSE_TO_ACCOUNT: &str = "transfer_purse_to_acco...
  constant LOAD_CALLER_INFORMATION (line 16) | const LOAD_CALLER_INFORMATION: &str = "load_caller_info.wasm";
  constant ACCOUNT_1_ADDR (line 17) | const ACCOUNT_1_ADDR: AccountHash = AccountHash::new([1u8; 32]);
  constant LOAD_CALLER_INFO_HASH (line 18) | const LOAD_CALLER_INFO_HASH: &str = "load_caller_info_contract_hash";
  constant LOAD_CALLER_INFO_PACKAGE_HASH (line 19) | const LOAD_CALLER_INFO_PACKAGE_HASH: &str = "load_caller_info_package";
  function should_run_get_caller_contract (line 23) | fn should_run_get_caller_contract() {
  function should_run_get_caller_contract_other_account (line 40) | fn should_run_get_caller_contract_other_account() {
  function should_run_get_caller_subcall_contract (line 72) | fn should_run_get_caller_subcall_contract() {
  function should_load_caller_information_based_on_action (line 118) | fn should_load_caller_information_based_on_action() {

FILE: execution_engine_testing/tests/src/test/contract_api/get_phase.rs
  constant ARG_PHASE (line 7) | const ARG_PHASE: &str = "phase";
  constant ARG_AMOUNT (line 8) | const ARG_AMOUNT: &str = "amount";
  function should_run_get_phase_contract (line 12) | fn should_run_get_phase_contract() {

FILE: execution_engine_testing/tests/src/test/contract_api/list_authorization_keys.rs
  constant ARG_ACCOUNT (line 12) | const ARG_ACCOUNT: &str = "account";
  constant ARG_WEIGHT (line 13) | const ARG_WEIGHT: &str = "weight";
  constant DEFAULT_WEIGHT (line 14) | const DEFAULT_WEIGHT: Weight = Weight::new(1);
  constant CONTRACT_ADD_ASSOCIATED_KEY (line 16) | const CONTRACT_ADD_ASSOCIATED_KEY: &str = "add_associated_key.wasm";
  constant CONTRACT_LIST_AUTHORIZATION_KEYS (line 18) | const CONTRACT_LIST_AUTHORIZATION_KEYS: &str = "list_authorization_keys....
  constant ARG_EXPECTED_AUTHORIZATION_KEYS (line 19) | const ARG_EXPECTED_AUTHORIZATION_KEYS: &str = "expected_authorization_ke...
  constant USER_ERROR_ASSERTION (line 33) | const USER_ERROR_ASSERTION: u16 = 0;
  function should_list_authorization_keys (line 37) | fn should_list_authorization_keys() {
  function test_match (line 97) | fn test_match(
  function setup (line 130) | fn setup() -> LmdbWasmTestBuilder {

FILE: execution_engine_testing/tests/src/test/contract_api/list_named_keys.rs
  constant CONTRACT_LIST_NAMED_KEYS (line 6) | const CONTRACT_LIST_NAMED_KEYS: &str = "list_named_keys.wasm";
  constant NEW_NAME_ACCOUNT (line 7) | const NEW_NAME_ACCOUNT: &str = "Account";
  constant NEW_NAME_HASH (line 8) | const NEW_NAME_HASH: &str = "Hash";
  constant ARG_INITIAL_NAMED_KEYS (line 9) | const ARG_INITIAL_NAMED_KEYS: &str = "initial_named_args";
  constant ARG_NEW_NAMED_KEYS (line 10) | const ARG_NEW_NAMED_KEYS: &str = "new_named_keys";
  function should_list_named_keys (line 14) | fn should_list_named_keys() {

FILE: execution_engine_testing/tests/src/test/contract_api/main_purse.rs
  constant CONTRACT_MAIN_PURSE (line 7) | const CONTRACT_MAIN_PURSE: &str = "main_purse.wasm";
  constant CONTRACT_TRANSFER_PURSE_TO_ACCOUNT (line 8) | const CONTRACT_TRANSFER_PURSE_TO_ACCOUNT: &str = "transfer_purse_to_acco...
  constant ACCOUNT_1_ADDR (line 9) | const ACCOUNT_1_ADDR: AccountHash = AccountHash::new([1u8; 32]);
  constant ARG_TARGET (line 10) | const ARG_TARGET: &str = "target";
  constant ARG_AMOUNT (line 11) | const ARG_AMOUNT: &str = "amount";
  function should_run_main_purse_contract_default_account (line 15) | fn should_run_main_purse_contract_default_account() {
  function should_run_main_purse_contract_account_1 (line 36) | fn should_run_main_purse_contract_account_1() {

FILE: execution_engine_testing/tests/src/test/contract_api/mint_purse.rs
  constant CONTRACT_MINT_PURSE (line 7) | const CONTRACT_MINT_PURSE: &str = "mint_purse.wasm";
  constant CONTRACT_TRANSFER_TO_ACCOUNT (line 8) | const CONTRACT_TRANSFER_TO_ACCOUNT: &str = "transfer_to_account_u512.wasm";
  constant TRANSFER_AMOUNT (line 9) | const TRANSFER_AMOUNT: u64 = MINIMUM_ACCOUNT_CREATION_BALANCE;
  function should_run_mint_purse_contract (line 13) | fn should_run_mint_purse_contract() {
  function should_not_allow_non_system_accounts_to_mint (line 34) | fn should_not_allow_non_system_accounts_to_mint() {

FILE: execution_engine_testing/tests/src/test/contract_api/multisig_authorization.rs
  constant CONTRACT_ADD_ASSOCIATED_KEY (line 10) | const CONTRACT_ADD_ASSOCIATED_KEY: &str = "add_associated_key.wasm";
  constant CONTRACT_MULTISIG_AUTHORIZATION (line 11) | const CONTRACT_MULTISIG_AUTHORIZATION: &str = "multisig_authorization.wa...
  constant CONTRACT_KEY (line 12) | const CONTRACT_KEY: &str = "contract";
  constant ARG_AMOUNT (line 14) | const ARG_AMOUNT: &str = "amount";
  constant ARG_ACCOUNT (line 15) | const ARG_ACCOUNT: &str = "account";
  constant ARG_WEIGHT (line 16) | const ARG_WEIGHT: &str = "weight";
  constant DEFAULT_WEIGHT (line 17) | const DEFAULT_WEIGHT: Weight = Weight::new(1);
  constant ENTRYPOINT_A (line 18) | const ENTRYPOINT_A: &str = "entrypoint_a";
  constant ENTRYPOINT_B (line 19) | const ENTRYPOINT_B: &str = "entrypoint_b";
  constant ROLE_A_KEYS (line 21) | const ROLE_A_KEYS: [AccountHash; 3] = [
  constant ROLE_B_KEYS (line 27) | const ROLE_B_KEYS: [AccountHash; 3] = [
  constant USER_ERROR_PERMISSION_DENIED (line 33) | const USER_ERROR_PERMISSION_DENIED: u16 = 0;
  function should_verify_multisig_authorization_key_roles (line 37) | fn should_verify_multisig_authorization_key_roles() {
  function test_multisig_auth (line 143) | fn test_multisig_auth(
  function setup (line 174) | fn setup() -> LmdbWasmTestBuilder {

FILE: execution_engine_testing/tests/src/test/contract_api/named_dictionaries.rs
  function named_dictionaries_should_work_as_expected (line 9) | fn named_dictionaries_should_work_as_expected() {

FILE: execution_engine_testing/tests/src/test/contract_api/recover_secp256k1.rs
  constant RECOVER_SECP256K1_WASM (line 9) | const RECOVER_SECP256K1_WASM: &str = "recover_secp256k1.wasm";
  function should_recover_secp256k1 (line 13) | fn should_recover_secp256k1() {
  function should_fail_recover_secp256k1_recovery_id_out_of_range (line 49) | fn should_fail_recover_secp256k1_recovery_id_out_of_range() {
  function should_fail_recover_secp256k1_pk_mismatch (line 85) | fn should_fail_recover_secp256k1_pk_mismatch() {

FILE: execution_engine_testing/tests/src/test/contract_api/revert.rs
  constant REVERT_WASM (line 6) | const REVERT_WASM: &str = "revert.wasm";
  function should_revert (line 10) | fn should_revert() {

FILE: execution_engine_testing/tests/src/test/contract_api/runtime.rs
  constant ARG_BYTES (line 16) | const ARG_BYTES: &str = "bytes";
  constant ARG_AMOUNT (line 17) | const ARG_AMOUNT: &str = "amount";
  constant BLAKE2B_WASM (line 19) | const BLAKE2B_WASM: &str = "blake2b.wasm";
  constant HASH_RESULT (line 20) | const HASH_RESULT: &str = "hash_result";
  constant RANDOM_BYTES_WASM (line 22) | const RANDOM_BYTES_WASM: &str = "random_bytes.wasm";
  constant RANDOM_BYTES_RESULT (line 23) | const RANDOM_BYTES_RESULT: &str = "random_bytes_result";
  constant RANDOM_BYTES_PAYMENT_WASM (line 25) | const RANDOM_BYTES_PAYMENT_WASM: &str = "random_bytes_payment.wasm";
  constant RANDOM_BYTES_PAYMENT_RESULT (line 26) | const RANDOM_BYTES_PAYMENT_RESULT: &str = "random_bytes_payment_result";
  function get_value (line 28) | fn get_value<const COUNT: usize>(builder: &LmdbWasmTestBuilder, result: ...
  function should_return_different_random_bytes_on_different_phases (line 46) | fn should_return_different_random_bytes_on_different_phases() {
  function should_return_different_random_bytes_on_each_call (line 78) | fn should_return_different_random_bytes_on_each_call() {
  function should_hash (line 106) | fn should_hash() {

FILE: execution_engine_testing/tests/src/test/contract_api/subcall.rs
  constant ARG_TARGET (line 8) | const ARG_TARGET: &str = "target_contract";
  constant ARG_GAS_AMOUNT (line 9) | const ARG_GAS_AMOUNT: &str = "gas_amount";
  constant ARG_METHOD_NAME (line 10) | const ARG_METHOD_NAME: &str = "method_name";
  function should_enforce_subcall_consumption (line 14) | fn should_enforce_subcall_consumption() {
  function should_add_all_gas_consumed_for_subcall (line 80) | fn should_add_all_gas_consumed_for_subcall() {
  function expensive_subcall_should_consume_more (line 166) | fn expensive_subcall_should_consume_more() {

FILE: execution_engine_testing/tests/src/test/contract_api/transfer.rs
  constant CONTRACT_TRANSFER_PURSE_TO_ACCOUNT (line 17) | const CONTRACT_TRANSFER_PURSE_TO_ACCOUNT: &str = "transfer_purse_to_acco...
  constant CONTRACT_TRANSFER_TO_ACCOUNT (line 18) | const CONTRACT_TRANSFER_TO_ACCOUNT: &str = "transfer_to_account_u512.wasm";
  constant CONTRACT_TRANSFER_TO_PUBLIC_KEY (line 19) | const CONTRACT_TRANSFER_TO_PUBLIC_KEY: &str = "transfer_to_public_key.wa...
  constant CONTRACT_TRANSFER_PURSE_TO_PUBLIC_KEY (line 20) | const CONTRACT_TRANSFER_PURSE_TO_PUBLIC_KEY: &str = "transfer_purse_to_p...
  constant CONTRACT_TRANSFER_TO_NAMED_PURSE (line 21) | const CONTRACT_TRANSFER_TO_NAMED_PURSE: &str = "transfer_to_named_purse....
  constant ARG_TARGET (line 43) | const ARG_TARGET: &str = "target";
  constant ARG_AMOUNT (line 44) | const ARG_AMOUNT: &str = "amount";
  constant ARG_SOURCE_PURSE (line 45) | const ARG_SOURCE_PURSE: &str = "source_purse";
  constant ARG_PURSE_NAME (line 46) | const ARG_PURSE_NAME: &str = "purse_name";
  constant TEST_PURSE (line 47) | const TEST_PURSE: &str = "test_purse";
  function should_transfer_to_account (line 51) | fn should_transfer_to_account() {
  function should_transfer_to_public_key (line 104) | fn should_transfer_to_public_key() {
  function should_transfer_from_purse_to_public_key (line 157) | fn should_transfer_from_purse_to_public_key() {
  function should_transfer_from_account_to_account (line 235) | fn should_transfer_from_account_to_account() {
  function should_transfer_to_existing_account (line 325) | fn should_transfer_to_existing_account() {
  function should_fail_when_insufficient_funds (line 425) | fn should_fail_when_insufficient_funds() {
  function should_transfer_total_amount (line 474) | fn should_transfer_total_amount() {

FILE: execution_engine_testing/tests/src/test/contract_api/transfer_cached.rs
  constant TRANSFER_MOTES_AMOUNT (line 11) | const TRANSFER_MOTES_AMOUNT: u64 = 2_500_000_000;
  function should_transfer_to_account (line 29) | fn should_transfer_to_account() {
  function should_transfer_multiple_times (line 74) | fn should_transfer_multiple_times() {

FILE: execution_engine_testing/tests/src/test/contract_api/verify_signature.rs
  constant VERIFY_SIGNATURE_WASM (line 10) | const VERIFY_SIGNATURE_WASM: &str = "verify_signature.wasm";
  function should_verify_secp256k1_signature (line 14) | fn should_verify_secp256k1_signature() {
  function should_verify_ed25519_signature (line 48) | fn should_verify_ed25519_signature() {
  function should_fail_verify_secp256k1_signature (line 82) | fn should_fail_verify_secp256k1_signature() {
  function should_fail_verify_ed25519_signature (line 116) | fn should_fail_verify_ed25519_signature() {

FILE: execution_engine_testing/tests/src/test/contract_context.rs
  constant CONTRACT_HEADERS (line 7) | const CONTRACT_HEADERS: &str = "contract_context.wasm";
  constant PACKAGE_HASH_KEY (line 8) | const PACKAGE_HASH_KEY: &str = "package_hash_key";
  constant PACKAGE_ACCESS_KEY (line 9) | const PACKAGE_ACCESS_KEY: &str = "package_access_key";
  constant CONTRACT_HASH_KEY (line 10) | const CONTRACT_HASH_KEY: &str = "contract_hash_key";
  constant CONTRACT_CODE_TEST (line 12) | const CONTRACT_CODE_TEST: &str = "contract_code_test";
  constant NEW_KEY (line 14) | const NEW_KEY: &str = "new_key";
  constant CONTRACT_VERSION (line 16) | const CONTRACT_VERSION: &str = "contract_version";
  function should_enforce_intended_execution_contexts (line 20) | fn should_enforce_intended_execution_contexts() {
  function should_enforce_intended_execution_context_direct_by_name (line 78) | fn should_enforce_intended_execution_context_direct_by_name() {
  function should_enforce_intended_execution_context_direct_by_hash (line 121) | fn should_enforce_intended_execution_context_direct_by_hash() {

FILE: execution_engine_testing/tests/src/test/contract_messages.rs
  constant MESSAGE_EMITTER_INSTALLER_WASM (line 21) | const MESSAGE_EMITTER_INSTALLER_WASM: &str = "contract_messages_emitter....
  constant MESSAGE_EMITTER_UPGRADER_WASM (line 22) | const MESSAGE_EMITTER_UPGRADER_WASM: &str = "contract_messages_upgrader....
  constant MESSAGE_EMITTER_FROM_ACCOUNT (line 23) | const MESSAGE_EMITTER_FROM_ACCOUNT: &str = "contract_messages_from_accou...
  constant MESSAGE_EMITTER_PACKAGE_HASH_KEY_NAME (line 24) | const MESSAGE_EMITTER_PACKAGE_HASH_KEY_NAME: &str = "messages_emitter_pa...
  constant MESSAGE_EMITTER_GENERIC_TOPIC (line 25) | const MESSAGE_EMITTER_GENERIC_TOPIC: &str = "generic_messages";
  constant MESSAGE_EMITTER_UPGRADED_TOPIC (line 26) | const MESSAGE_EMITTER_UPGRADED_TOPIC: &str = "new_topic_after_upgrade";
  constant ENTRY_POINT_EMIT_MESSAGE (line 27) | const ENTRY_POINT_EMIT_MESSAGE: &str = "emit_message";
  constant ENTRY_POINT_EMIT_MULTIPLE_MESSAGES (line 28) | const ENTRY_POINT_EMIT_MULTIPLE_MESSAGES: &str = "emit_multiple_messages";
  constant ENTRY_POINT_EMIT_MESSAGE_FROM_EACH_VERSION (line 29) | const ENTRY_POINT_EMIT_MESSAGE_FROM_EACH_VERSION: &str = "emit_message_f...
  constant ARG_NUM_MESSAGES_TO_EMIT (line 30) | const ARG_NUM_MESSAGES_TO_EMIT: &str = "num_messages_to_emit";
  constant ARG_TOPIC_NAME (line 31) | const ARG_TOPIC_NAME: &str = "topic_name";
  constant ENTRY_POINT_ADD_TOPIC (line 32) | const ENTRY_POINT_ADD_TOPIC: &str = "add_topic";
  constant ARG_MESSAGE_SUFFIX_NAME (line 33) | const ARG_MESSAGE_SUFFIX_NAME: &str = "message_suffix";
  constant ARG_REGISTER_DEFAULT_TOPIC_WITH_INIT (line 34) | const ARG_REGISTER_DEFAULT_TOPIC_WITH_INIT: &str = "register_default_top...
  constant EMITTER_MESSAGE_PREFIX (line 36) | const EMITTER_MESSAGE_PREFIX: &str = "generic message: ";
  constant EMIT_MESSAGE_FROM_EACH_VERSION_NUM_MESSAGES (line 39) | const EMIT_MESSAGE_FROM_EACH_VERSION_NUM_MESSAGES: u32 = 3;
  function install_messages_emitter_contract (line 41) | fn install_messages_emitter_contract(
  function upgrade_messages_emitter_contract (line 88) | fn upgrade_messages_emitter_contract(
  function emit_message_with_suffix (line 150) | fn emit_message_with_suffix(
  type ContractQueryView (line 174) | struct ContractQueryView<'a> {
  function new (line 180) | fn new(
  function message_topics (line 190) | fn message_topics(&self) -> MessageTopics {
  function message_topic (line 200) | fn message_topic(&self, topic_name_hash: TopicNameHash) -> MessageTopicS...
  function message_summary (line 225) | fn message_summary(
  function should_emit_messages (line 250) | fn should_emit_messages() {
  function should_emit_message_on_empty_topic_in_new_block (line 361) | fn should_emit_message_on_empty_topic_in_new_block() {
  function should_add_topics (line 400) | fn should_add_topics() {
  function should_not_add_duplicate_topics (line 458) | fn should_not_add_duplicate_topics() {
  function should_not_exceed_configured_limits (line 491) | fn should_not_exceed_configured_limits() {
  function should_carry_message_topics_on_upgraded_contract (line 606) | fn should_carry_message_topics_on_upgraded_contract(use_initializer: boo...
  function should_carry_message_topics_on_upgraded_contract_with_initializer (line 633) | fn should_carry_message_topics_on_upgraded_contract_with_initializer() {
  function should_carry_message_topics_on_upgraded_contract_without_initializer (line 639) | fn should_carry_message_topics_on_upgraded_contract_without_initializer() {
  function should_not_emit_messages_from_account (line 645) | fn should_not_emit_messages_from_account() {
  function should_charge_expected_gas_for_storage (line 669) | fn should_charge_expected_gas_for_storage() {
  function should_charge_increasing_gas_consumed_for_multiple_messages_emitted (line 777) | fn should_charge_increasing_gas_consumed_for_multiple_messages_emitted() {
  function sh
Copy disabled (too large) Download .json
Condensed preview — 1607 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (15,104K chars).
[
  {
    "path": ".drone.yml",
    "chars": 8880,
    "preview": "---\nkind: pipeline\ntype: docker\nname: cargo-test\n\nenvironment:\n  RUSTC_WRAPPER: '/root/.cargo/bin/cachepot'\n  CACHEPOT_B"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feedback.yml",
    "chars": 2595,
    "preview": "name: Condor Release Feedback / Issue Form\ndescription: Please share your feedback or issues you face in incorporating C"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 317,
    "preview": "Please consider the following when creating a PR:\n\n* Provide a useful description of this PR, suitably verbose, aimed at"
  },
  {
    "path": ".github/workflows/casper-node.yml",
    "chars": 1214,
    "preview": "---\nname: casper-node\n# runs steps that are OK with normal rust based on ./rust-toolchain.toml\npermissions:\n  contents: "
  },
  {
    "path": ".github/workflows/lints-md.yml",
    "chars": 423,
    "preview": "---\nname: lints\npermissions:\n  contents: read\n\non:\n  push:\n    branches:\n      - dev\n      - trying\n      - staging\n    "
  },
  {
    "path": ".github/workflows/publish-global-state-update-gen.yml",
    "chars": 2244,
    "preview": "---\nname: publish-global-state-update-gen\npermissions:\n  contents: read\n  id-token: write\n\non:\n  push:\n    tags:\n      -"
  },
  {
    "path": ".github/workflows/publish-release-and-crates.yml",
    "chars": 1235,
    "preview": "---\nname: publish-release-and-crates\npermissions:\n  contents: read\n  id-token: write\n\non:\n  push:\n    tags:\n      - 'v*'"
  },
  {
    "path": ".github/workflows/push-artifacts.yml",
    "chars": 1710,
    "preview": "---\nname: push-artifacts\npermissions:\n  contents: read\n  id-token: write\n\non:\n  push:\n    branches:\n      - dev\n      - "
  },
  {
    "path": ".gitignore",
    "chars": 2842,
    "preview": "target_as\n\n# Criterion puts results in wrong directories inside workspace: https://github.com/bheisler/criterion.rs/issu"
  },
  {
    "path": "Cargo.toml",
    "chars": 1753,
    "preview": "[workspace]\n\n# highway-rewards-analysis and highway-state-grapher are temporarily disabled becasue\n# they use old reward"
  },
  {
    "path": "LICENSE",
    "chars": 11348,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "Makefile",
    "chars": 6902,
    "preview": "# This supports environments where $HOME/.cargo/env has not been sourced (CI, CLion Makefile runner)\nCARGO  = $(or $(she"
  },
  {
    "path": "README.md",
    "chars": 11398,
    "preview": "<a href=\"https://casper.network/\"><img src=\"images/Casper-association-logo-new.svg\" alt=\"Casper Network Logo\" width=\"300"
  },
  {
    "path": "binary_port/CHANGELOG.md",
    "chars": 566,
    "preview": "# Changelog\n\nAll notable changes to this project will be documented in this file.  The format is based on [Keep a Change"
  },
  {
    "path": "binary_port/Cargo.toml",
    "chars": 1108,
    "preview": "[package]\nname = \"casper-binary-port\"\nversion = \"1.1.1\"\nedition = \"2018\"\ndescription = \"Types for the casper node binary"
  },
  {
    "path": "binary_port/README.md",
    "chars": 752,
    "preview": "# `casper-binary-port`\n\n[![LOGO](https://raw.githubusercontent.com/casper-network/casper-node/master/images/casper-assoc"
  },
  {
    "path": "binary_port/src/balance_response.rs",
    "chars": 3542,
    "preview": "use std::collections::BTreeMap;\n#[cfg(test)]\nuse std::{collections::VecDeque, iter::FromIterator};\n\n#[cfg(test)]\nuse cas"
  },
  {
    "path": "binary_port/src/binary_message.rs",
    "chars": 10093,
    "preview": "#[cfg(test)]\nuse casper_types::testing::TestRng;\n#[cfg(test)]\nuse rand::Rng;\n\nuse bytes::{Buf, Bytes};\nuse tokio_util::c"
  },
  {
    "path": "binary_port/src/binary_response.rs",
    "chars": 4016,
    "preview": "use casper_types::bytesrepr::{self, Bytes, FromBytes, ToBytes};\n\nuse crate::{\n    binary_response_header::BinaryResponse"
  },
  {
    "path": "binary_port/src/binary_response_and_request.rs",
    "chars": 4135,
    "preview": "use casper_types::bytesrepr::{self, Bytes, FromBytes, ToBytes};\n\nuse crate::{binary_response::BinaryResponse, response_t"
  },
  {
    "path": "binary_port/src/binary_response_header.rs",
    "chars": 3682,
    "preview": "use crate::{error_code::ErrorCode, response_type::ResponseType};\nuse casper_types::bytesrepr::{self, FromBytes, ToBytes}"
  },
  {
    "path": "binary_port/src/command.rs",
    "chars": 7681,
    "preview": "use core::convert::TryFrom;\n\nuse casper_types::{\n    bytesrepr::{self, FromBytes, ToBytes},\n    Transaction,\n};\n\nuse cra"
  },
  {
    "path": "binary_port/src/dictionary_item_identifier.rs",
    "chars": 9518,
    "preview": "#[cfg(test)]\nuse casper_types::testing::TestRng;\n#[cfg(test)]\nuse rand::Rng;\n\nuse casper_types::{\n    account::AccountHa"
  },
  {
    "path": "binary_port/src/entity_qualifier.rs",
    "chars": 6661,
    "preview": "use super::dictionary_item_identifier::DictionaryItemIdentifier;\nuse crate::{KeyPrefix, PurseIdentifier};\n#[cfg(test)]\nu"
  },
  {
    "path": "binary_port/src/era_identifier.rs",
    "chars": 2513,
    "preview": "#[cfg(test)]\nuse casper_types::testing::TestRng;\n#[cfg(test)]\nuse rand::Rng;\n\nuse casper_types::{\n    bytesrepr::{self, "
  },
  {
    "path": "binary_port/src/error.rs",
    "chars": 446,
    "preview": "use thiserror::Error;\n\n#[derive(Error, Debug)]\npub enum Error {\n    #[error(\"Invalid command tag ({0})\")]\n    InvalidCom"
  },
  {
    "path": "binary_port/src/error_code.rs",
    "chars": 30535,
    "preview": "use core::{convert::TryFrom, fmt};\n\nuse casper_types::{InvalidDeploy, InvalidTransaction, InvalidTransactionV1};\n\nuse nu"
  },
  {
    "path": "binary_port/src/get_request.rs",
    "chars": 5144,
    "preview": "use casper_types::{\n    bytesrepr::{self, Bytes, FromBytes, ToBytes, U8_SERIALIZED_LENGTH},\n    Digest,\n};\n\nuse crate::s"
  },
  {
    "path": "binary_port/src/global_state_query_result.rs",
    "chars": 3470,
    "preview": "//! The result of the query for the global state value.\n\nuse casper_types::{\n    bytesrepr::{self, FromBytes, ToBytes},\n"
  },
  {
    "path": "binary_port/src/information_request.rs",
    "chars": 28912,
    "preview": "use core::convert::TryFrom;\n\n#[cfg(test)]\nuse rand::Rng;\n\nuse crate::{get_request::GetRequest, EraIdentifier};\n#[cfg(tes"
  },
  {
    "path": "binary_port/src/key_prefix.rs",
    "chars": 8488,
    "preview": "#[cfg(any(feature = \"testing\", test))]\nuse casper_types::testing::TestRng;\nuse casper_types::{\n    account::AccountHash,"
  },
  {
    "path": "binary_port/src/lib.rs",
    "chars": 1984,
    "preview": "//! A Rust library for types used by the binary port of a casper node.\n\nmod balance_response;\nmod binary_message;\nmod bi"
  },
  {
    "path": "binary_port/src/minimal_block_info.rs",
    "chars": 3432,
    "preview": "use casper_types::{\n    bytesrepr::{self, FromBytes, ToBytes},\n    Block, BlockHash, Digest, EraId, PublicKey, Timestamp"
  },
  {
    "path": "binary_port/src/node_status.rs",
    "chars": 7651,
    "preview": "use casper_types::{\n    bytesrepr::{self, FromBytes, ToBytes},\n    AvailableBlockRange, BlockHash, BlockSynchronizerStat"
  },
  {
    "path": "binary_port/src/purse_identifier.rs",
    "chars": 4377,
    "preview": "#[cfg(test)]\nuse casper_types::testing::TestRng;\n#[cfg(test)]\nuse rand::Rng;\n\nuse casper_types::{\n    account::AccountHa"
  },
  {
    "path": "binary_port/src/record_id.rs",
    "chars": 3458,
    "preview": "use core::convert::TryFrom;\n\n#[cfg(test)]\nuse rand::Rng;\nuse serde::Serialize;\n\n#[cfg(test)]\nuse casper_types::testing::"
  },
  {
    "path": "binary_port/src/response_type.rs",
    "chars": 18911,
    "preview": "//! The payload type.\n\nuse core::{convert::TryFrom, fmt};\n\n#[cfg(test)]\nuse rand::Rng;\n\n#[cfg(test)]\nuse casper_types::t"
  },
  {
    "path": "binary_port/src/speculative_execution_result.rs",
    "chars": 5572,
    "preview": "use once_cell::sync::Lazy;\n#[cfg(any(feature = \"testing\", test))]\nuse rand::Rng;\nuse serde::{Deserialize, Serialize};\n\n#"
  },
  {
    "path": "binary_port/src/state_request.rs",
    "chars": 3617,
    "preview": "use std::fmt::{Display, Formatter, Result as DisplayResult};\n\nuse crate::entity_qualifier::GlobalStateEntityQualifier;\n#"
  },
  {
    "path": "binary_port/src/type_wrappers.rs",
    "chars": 24882,
    "preview": "use core::{convert::TryFrom, num::TryFromIntError, time::Duration};\nuse std::collections::BTreeMap;\n\nuse casper_types::{"
  },
  {
    "path": "bors.toml",
    "chars": 525,
    "preview": "# require the below checks before bors merges anything\nstatus = [\n  \"continuous-integration/drone/push\"\n]\n\n# Ensure that"
  },
  {
    "path": "build_wasm_package.sh",
    "chars": 1582,
    "preview": "#!/bin/bash\n\nabspath() {\n  # generate absolute path from relative path\n  # $1     : relative filename\n  # return : absol"
  },
  {
    "path": "cargo_casper/Cargo.toml",
    "chars": 629,
    "preview": "[package]\nname = \"cargo-casper\"\nversion = \"0.1.0\"\nedition = \"2021\"\n\n[dependencies]\ncasper-contract-sdk-sys = { path = \"."
  },
  {
    "path": "cargo_casper/build.rs",
    "chars": 259,
    "preview": "use std::env;\n\nfn main() {\n    match env::var(\"TARGET\") {\n        Ok(target) => {\n            println!(\"cargo:rustc-env="
  },
  {
    "path": "cargo_casper/project_template/Cargo.toml",
    "chars": 188,
    "preview": "[package]\nname = \"project-template\"\nversion = \"0.1.0\"\nedition = \"2021\"\n\n[lib]\ncrate-type = [\"cdylib\", \"rlib\"]\n\n[dependen"
  },
  {
    "path": "cargo_casper/project_template/src/lib.rs",
    "chars": 965,
    "preview": "#![cfg_attr(target_arch = \"wasm32\", no_main)]\n#![cfg_attr(target_arch = \"wasm32\", no_std)]\n\nuse casper_contract_sdk::pre"
  },
  {
    "path": "cargo_casper/src/cli/build.rs",
    "chars": 3772,
    "preview": "use std::{io::Cursor, path::PathBuf, process::Command};\n\nuse anyhow::Context;\n\nuse crate::compilation::CompileJob;\n\n/// "
  },
  {
    "path": "cargo_casper/src/cli/build_schema/artifact.rs",
    "chars": 1354,
    "preview": "use std::{mem::MaybeUninit, path::Path};\n\nuse libloading::{Library, Symbol};\n\nconst COLLECT_SCHEMA_FUNC: &str = \"__cargo"
  },
  {
    "path": "cargo_casper/src/cli/build_schema.rs",
    "chars": 3277,
    "preview": "mod artifact;\n\nuse std::{env::consts::DLL_EXTENSION, ffi::OsStr, io::Write, path::PathBuf};\n\nuse anyhow::Context;\nuse ar"
  },
  {
    "path": "cargo_casper/src/cli/new.rs",
    "chars": 933,
    "preview": "use std::path::PathBuf;\n\nuse anyhow::Context;\n\nuse include_dir::{include_dir, Dir};\n\nstatic TEMPLATE_DIR: Dir = include_"
  },
  {
    "path": "cargo_casper/src/cli.rs",
    "chars": 2048,
    "preview": "use std::{\n    io,\n    path::{Path, PathBuf},\n};\n\nuse clap::Subcommand;\nuse include_dir::{Dir, DirEntry};\n\npub mod build"
  },
  {
    "path": "cargo_casper/src/compilation.rs",
    "chars": 5544,
    "preview": "use std::{\n    ffi::OsStr,\n    path::PathBuf,\n    process::{Command, Stdio},\n};\n\nuse anyhow::{anyhow, Result};\n\nuse crat"
  },
  {
    "path": "cargo_casper/src/main.rs",
    "chars": 1218,
    "preview": "use std::{fs::File, io::Write};\n\nuse clap::Parser;\nuse cli::{Cli, Command};\n\npub(crate) mod cli;\npub(crate) mod compilat"
  },
  {
    "path": "cargo_casper/src/utils/command_runner.rs",
    "chars": 9980,
    "preview": "use std::{\n    collections::VecDeque,\n    fmt::{Display, Formatter},\n    io::{self, BufRead, BufReader, Write},\n    os::"
  },
  {
    "path": "cargo_casper/src/utils.rs",
    "chars": 24,
    "preview": "pub mod command_runner;\n"
  },
  {
    "path": "cargo_casper/test.py",
    "chars": 324,
    "preview": "#!/usr/bin/env python\nimport itertools\nimport time\nimport sys\nimport os\n\nfor a in itertools.count():\n    if a % 2 == 0:\n"
  },
  {
    "path": "ci/build_update_package.sh",
    "chars": 2729,
    "preview": "#!/usr/bin/env bash\n\n# This script will build\n#  - bin.tar.gz\n#  - config.tar.gz\n#  - version.json\n# in target/upgrade_b"
  },
  {
    "path": "ci/casper_updater/Cargo.toml",
    "chars": 391,
    "preview": "[package]\nauthors = [\"Joe Sacher <joe.sacher@casper.network>\"]\ndescription = \"A tool to update versions of all published"
  },
  {
    "path": "ci/casper_updater/README.md",
    "chars": 704,
    "preview": "# casper-updater\n\nA tool to update versions of all published Casper packages.\n\n# Usage\n\nThe tool iterates through each p"
  },
  {
    "path": "ci/casper_updater/src/dependent_file.rs",
    "chars": 1842,
    "preview": "use std::{\n    fs,\n    path::{Path, PathBuf},\n};\n\nuse regex::Regex;\n\n/// A file which is dependent on the version of a c"
  },
  {
    "path": "ci/casper_updater/src/main.rs",
    "chars": 8469,
    "preview": "//! A tool to update versions of all published Casper packages.\n\n#![warn(unused, missing_copy_implementations, missing_d"
  },
  {
    "path": "ci/casper_updater/src/package.rs",
    "chars": 6079,
    "preview": "use std::{\n    io::{self, Write},\n    path::Path,\n};\n\nuse regex::Regex;\nuse semver::Version;\n\nuse crate::{\n    dependent"
  },
  {
    "path": "ci/casper_updater/src/regex_data.rs",
    "chars": 16236,
    "preview": "#![allow(clippy::wildcard_imports)]\n\nuse once_cell::sync::Lazy;\nuse regex::Regex;\n\nuse crate::dependent_file::DependentF"
  },
  {
    "path": "ci/check_cpu_features.sh",
    "chars": 447,
    "preview": "#!/usr/bin/env bash\n\n# Ensure that there has not been a change in CPU features used.\n\nset -e\n\ncd $(dirname $0)/..\n\ncargo"
  },
  {
    "path": "ci/ci.json",
    "chars": 625,
    "preview": "{\n  \"external_deps\": {\n    \"casper-client-rs\": {\n      \"github_repo_url\": \"https://github.com/casper-ecosystem/casper-cl"
  },
  {
    "path": "ci/cpu-features-1.4.13-release.txt",
    "chars": 69,
    "preview": "AVX\nAVX2\nBMI\nCMOV\nMODE64\nNOVLX\nPCLMUL\nSHA\nSSE1\nSSE2\nSSE3\nSSE41\nSSSE3\n"
  },
  {
    "path": "ci/markdown-link-check-config.json",
    "chars": 302,
    "preview": "{\n  \"ignorePatterns\": [\n    {\n      \"pattern\": \"^http://localhost.*\"\n    }\n  ],\n  \"httpHeaders\": [\n    {\n      \"urls\": ["
  },
  {
    "path": "ci/markdown_link_check.sh",
    "chars": 344,
    "preview": "#!/usr/bin/env bash\nset -e\n\nROOT_DIR=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")/..\" >/dev/null 2>&1 && pwd)\"\nCONFIG_PATH=\"$RO"
  },
  {
    "path": "ci/nctl_compile.sh",
    "chars": 1221,
    "preview": "#!/usr/bin/env bash\nset -e\nshopt -s expand_aliases\n\nROOT_DIR=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")/..\" >/dev/null 2>&1 &"
  },
  {
    "path": "ci/nctl_upgrade.sh",
    "chars": 6764,
    "preview": "#!/usr/bin/env bash\nset -e\nshopt -s expand_aliases\n\nROOT_DIR=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")/..\" >/dev/null 2>&1 &"
  },
  {
    "path": "ci/nctl_upgrade_stage.sh",
    "chars": 2481,
    "preview": "#!/usr/bin/env bash\n\n# Script used to group everything needed for nctl upgrade remotes.\n\nset -e\nshopt -s expand_aliases\n"
  },
  {
    "path": "ci/nightly-test.sh",
    "chars": 5441,
    "preview": "#!/usr/bin/env bash\nset -e\nshopt -s expand_aliases\n\nDRONE_ROOT_DIR=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")/..\" >/dev/null "
  },
  {
    "path": "ci/publish_deb_to_repo.sh",
    "chars": 2555,
    "preview": "#!/usr/bin/env bash\nset -e\n\n# Verify all variables are present\nif [[ -z $PLUGIN_GPG_KEY || -z $PLUGIN_GPG_PASS || -z $PL"
  },
  {
    "path": "ci/publish_to_crates_io.sh",
    "chars": 4723,
    "preview": "#!/usr/bin/env bash\n\nset -eu -o pipefail\n\nCRATES_URL=https://crates.io/api/v1/crates\nROOT_DIR=\"$(cd \"$(dirname \"${BASH_S"
  },
  {
    "path": "ci/test_casper-node_deb.sh",
    "chars": 1551,
    "preview": "#!/usr/bin/env bash\nset -e\n\n# This script is used to test install of casper-node.\n# It will also detect issues with chai"
  },
  {
    "path": "ci/test_deb_install.sh",
    "chars": 167,
    "preview": "#!/usr/bin/env bash\nset -ex\n\necho \"$1\"/\"$2\"*.deb\napt-get install -y \"$1\"/target/debian/\"$2\"*.deb\n\nif ! type \"$2\" > /dev/"
  },
  {
    "path": "ci/upgrade_package_s3_storage.sh",
    "chars": 2524,
    "preview": "#!/usr/bin/env bash\n\nset -e\n\n# This script allows uploading, downloading and purging of files to genesis.casper.network "
  },
  {
    "path": "docker_make.sh",
    "chars": 2078,
    "preview": "\n# Images used in this script are build in Casper/buildenv repo\n\n# This allows make commands without local build environ"
  },
  {
    "path": "execution_engine/CHANGELOG.md",
    "chars": 43714,
    "preview": "# Changelog\n\nAll notable changes to this project will be documented in this file.  The format is based on [Keep a Change"
  },
  {
    "path": "execution_engine/Cargo.toml",
    "chars": 2781,
    "preview": "[package]\nname = \"casper-execution-engine\"\nversion = \"9.0.0\" # when updating, also update 'html_root_url' in lib.rs\nauth"
  },
  {
    "path": "execution_engine/README.md",
    "chars": 725,
    "preview": "# `casper-execution-engine`\n\n[![LOGO](https://raw.githubusercontent.com/casper-network/casper-node/master/images/casper-"
  },
  {
    "path": "execution_engine/benches/trie_bench.rs",
    "chars": 2871,
    "preview": "use criterion::{black_box, criterion_group, criterion_main, Bencher, Criterion};\n\nuse casper_storage::global_state::trie"
  },
  {
    "path": "execution_engine/src/bin/run_wasm.rs",
    "chars": 7383,
    "preview": "use std::{\n    fs,\n    path::{Path, PathBuf},\n    time::{Duration, Instant},\n};\n\nuse casper_types::WasmConfig;\n\nuse casp"
  },
  {
    "path": "execution_engine/src/engine_state/engine_config.rs",
    "chars": 20047,
    "preview": "//! Support for runtime configuration of the execution engine - as an integral property of the\n//! `EngineState` instanc"
  },
  {
    "path": "execution_engine/src/engine_state/error.rs",
    "chars": 3340,
    "preview": "//! Definition of all the possible outcomes of the operation on an `EngineState` instance.\nuse datasize::DataSize;\nuse t"
  },
  {
    "path": "execution_engine/src/engine_state/execution_kind.rs",
    "chars": 4662,
    "preview": "//! Units of execution.\n\nuse casper_types::{\n    bytesrepr::Bytes,\n    contracts::{NamedKeys, ProtocolVersionMajor},\n   "
  },
  {
    "path": "execution_engine/src/engine_state/mod.rs",
    "chars": 7478,
    "preview": "//!  This module contains all the execution related code.\npub mod engine_config;\nmod error;\npub(crate) mod execution_kin"
  },
  {
    "path": "execution_engine/src/engine_state/wasm_v1.rs",
    "chars": 31805,
    "preview": "use std::{collections::BTreeSet, convert::TryFrom};\n\nuse serde::Serialize;\nuse thiserror::Error;\n\nuse casper_storage::{d"
  },
  {
    "path": "execution_engine/src/execution/error.rs",
    "chars": 10080,
    "preview": "//! Execution error and supporting code.\nuse std::str::Utf8Error;\nuse thiserror::Error;\n\nuse casper_storage::{global_sta"
  },
  {
    "path": "execution_engine/src/execution/executor.rs",
    "chars": 7449,
    "preview": "use std::{cell::RefCell, collections::BTreeSet, rc::Rc};\n\nuse casper_storage::{\n    global_state::{error::Error as Globa"
  },
  {
    "path": "execution_engine/src/execution/mod.rs",
    "chars": 141,
    "preview": "//! Code execution.\nmod error;\n#[macro_use]\nmod executor;\n\npub use self::error::Error as ExecError;\npub(crate) use self:"
  },
  {
    "path": "execution_engine/src/lib.rs",
    "chars": 688,
    "preview": "//! The engine which executes smart contracts on the Casper network.\n\n#![doc(html_root_url = \"https://docs.rs/casper-exe"
  },
  {
    "path": "execution_engine/src/resolvers/error.rs",
    "chars": 490,
    "preview": "//! Errors that may be emitted by a host function resolver.\nuse thiserror::Error;\n\nuse casper_types::ProtocolVersion;\n\n/"
  },
  {
    "path": "execution_engine/src/resolvers/memory_resolver.rs",
    "chars": 486,
    "preview": "//! This module contains resolver of a memory section of the WASM code.\nuse casper_wasmi::MemoryRef;\n\nuse super::error::"
  },
  {
    "path": "execution_engine/src/resolvers/mod.rs",
    "chars": 1607,
    "preview": "//! This module is responsible for resolving host functions from within the WASM engine.\npub mod error;\npub mod memory_r"
  },
  {
    "path": "execution_engine/src/resolvers/v1_function_index.rs",
    "chars": 2824,
    "preview": "//! WASM host function resolver for protocol version 1.x.x.\nuse num_derive::{FromPrimitive, ToPrimitive};\nuse num_traits"
  },
  {
    "path": "execution_engine/src/resolvers/v1_resolver.rs",
    "chars": 16300,
    "preview": "use std::cell::RefCell;\n\nuse casper_wasmi::{\n    memory_units::Pages, Error as InterpreterError, FuncInstance, FuncRef, "
  },
  {
    "path": "execution_engine/src/runtime/args.rs",
    "chars": 6699,
    "preview": "use casper_wasmi::{FromValue, RuntimeArgs, Trap};\n\npub(crate) trait Args\nwhere\n    Self: Sized,\n{\n    fn parse(args: Run"
  },
  {
    "path": "execution_engine/src/runtime/auction_internal.rs",
    "chars": 20866,
    "preview": "use std::collections::BTreeSet;\nuse tracing::{debug, error};\n\nuse casper_storage::{\n    global_state::{error::Error as G"
  },
  {
    "path": "execution_engine/src/runtime/cryptography.rs",
    "chars": 1354,
    "preview": "//! Cryptography module containing hashing functions used internally\n//! by the execution engine\n\nuse blake2::{\n    dige"
  },
  {
    "path": "execution_engine/src/runtime/externals.rs",
    "chars": 73293,
    "preview": "use std::{\n    collections::{BTreeMap, BTreeSet},\n    convert::TryFrom,\n};\n\nuse casper_wasmi::{Externals, RuntimeArgs, R"
  },
  {
    "path": "execution_engine/src/runtime/handle_payment_internal.rs",
    "chars": 6493,
    "preview": "use casper_storage::global_state::{error::Error as GlobalStateError, state::StateReader};\nuse std::collections::BTreeSet"
  },
  {
    "path": "execution_engine/src/runtime/host_function_flag.rs",
    "chars": 3354,
    "preview": "use std::{cell::Cell, rc::Rc};\n\nuse tracing::error;\n\n/// A flag to indicate whether the current runtime call is made wit"
  },
  {
    "path": "execution_engine/src/runtime/mint_internal.rs",
    "chars": 7553,
    "preview": "use tracing::error;\n\nuse casper_storage::{\n    global_state::{error::Error as GlobalStateError, state::StateReader},\n   "
  },
  {
    "path": "execution_engine/src/runtime/mod.rs",
    "chars": 182237,
    "preview": "//! This module contains executor state of the WASM code.\nmod args;\nmod auction_internal;\npub mod cryptography;\nmod exte"
  },
  {
    "path": "execution_engine/src/runtime/stack.rs",
    "chars": 5969,
    "preview": "//! Runtime stacks.\nuse casper_types::{account::AccountHash, system::Caller};\n\n/// A runtime stack frame.\n///\n/// Curren"
  },
  {
    "path": "execution_engine/src/runtime/standard_payment_internal.rs",
    "chars": 2965,
    "preview": "use casper_storage::global_state::{error::Error as GlobalStateError, state::StateReader};\nuse casper_types::{\n    accoun"
  },
  {
    "path": "execution_engine/src/runtime/utils.rs",
    "chars": 58515,
    "preview": "use std::collections::BTreeMap;\n\nuse casper_wasm::elements::Module;\nuse casper_wasmi::{ImportsBuilder, MemoryRef, Module"
  },
  {
    "path": "execution_engine/src/runtime/wasm_prep.rs",
    "chars": 45600,
    "preview": "//! Preprocessing of Wasm modules.\nuse std::{convert::TryInto, num::NonZeroU32};\n\nuse thiserror::Error;\n\nuse casper_type"
  },
  {
    "path": "execution_engine/src/runtime_context/mod.rs",
    "chars": 58389,
    "preview": "//! The context of execution of WASM code.\n\n#[cfg(test)]\nmod tests;\n\nuse std::{\n    cell::RefCell,\n    collections::BTre"
  },
  {
    "path": "execution_engine/src/runtime_context/tests.rs",
    "chars": 41235,
    "preview": "use std::{cell::RefCell, collections::BTreeSet, convert::TryInto, iter::FromIterator, rc::Rc};\n\nuse rand::RngCore;\n\nuse "
  },
  {
    "path": "execution_engine_testing/test_support/CHANGELOG.md",
    "chars": 6076,
    "preview": "# Changelog\n\nAll notable changes to this project will be documented in this file.  The format is based on [Keep a Change"
  },
  {
    "path": "execution_engine_testing/test_support/Cargo.toml",
    "chars": 1385,
    "preview": "[package]\nname = \"casper-engine-test-support\"\nversion = \"9.0.0\" # when updating, also update 'html_root_url' in lib.rs\na"
  },
  {
    "path": "execution_engine_testing/test_support/README.md",
    "chars": 717,
    "preview": "# `casper-engine-test-support`\n\n[![LOGO](https://raw.githubusercontent.com/casper-network/casper-node/master/images/casp"
  },
  {
    "path": "execution_engine_testing/test_support/build.rs",
    "chars": 983,
    "preview": "use humantime::format_rfc3339;\nuse std::{\n    env, fs,\n    path::Path,\n    time::{Duration, SystemTime},\n};\nuse toml_edi"
  },
  {
    "path": "execution_engine_testing/test_support/src/chainspec_config.rs",
    "chars": 13546,
    "preview": "use std::{\n    convert::TryFrom,\n    fs, io,\n    path::{Path, PathBuf},\n};\n\nuse log::error;\nuse once_cell::sync::Lazy;\nu"
  },
  {
    "path": "execution_engine_testing/test_support/src/deploy_item.rs",
    "chars": 4076,
    "preview": "//! Units of account-triggered execution.\n\nuse std::collections::BTreeSet;\n\nuse casper_execution_engine::engine_state::{"
  },
  {
    "path": "execution_engine_testing/test_support/src/deploy_item_builder.rs",
    "chars": 10131,
    "preview": "use std::{collections::BTreeSet, path::Path};\n\nuse rand::Rng;\n\nuse casper_types::{\n    account::AccountHash, bytesrepr::"
  },
  {
    "path": "execution_engine_testing/test_support/src/execute_request_builder.rs",
    "chars": 19135,
    "preview": "use std::collections::BTreeSet;\n\nuse casper_execution_engine::engine_state::{\n    BlockInfo, ExecutableItem, SessionData"
  },
  {
    "path": "execution_engine_testing/test_support/src/genesis_config_builder.rs",
    "chars": 5491,
    "preview": "//! A builder for an [`GenesisConfig`].\nuse casper_execution_engine::engine_state::engine_config::DEFAULT_ENABLE_ENTITY;"
  },
  {
    "path": "execution_engine_testing/test_support/src/lib.rs",
    "chars": 10436,
    "preview": "//! A library to support testing of Wasm smart contracts for use on the Casper Platform.\n\n#![doc(html_root_url = \"https:"
  },
  {
    "path": "execution_engine_testing/test_support/src/step_request_builder.rs",
    "chars": 3888,
    "preview": "use casper_storage::{\n    data_access_layer::{EvictItem, RewardItem, SlashItem, StepRequest},\n    system::runtime_native"
  },
  {
    "path": "execution_engine_testing/test_support/src/transfer_request_builder.rs",
    "chars": 9253,
    "preview": "use std::{\n    collections::{BTreeMap, BTreeSet},\n    iter,\n};\n\nuse blake2::{\n    digest::{Update, VariableOutput},\n    "
  },
  {
    "path": "execution_engine_testing/test_support/src/upgrade_request_builder.rs",
    "chars": 7846,
    "preview": "use std::collections::BTreeMap;\n\nuse num_rational::Ratio;\n\nuse casper_types::{\n    system::auction::DelegationRate, Chai"
  },
  {
    "path": "execution_engine_testing/test_support/src/utils.rs",
    "chars": 5973,
    "preview": "//! Utility types and functions for working with execution engine tests.\n\nuse std::{\n    env, fs,\n    path::{Path, PathB"
  },
  {
    "path": "execution_engine_testing/test_support/src/wasm_test_builder.rs",
    "chars": 81894,
    "preview": "use std::{\n    collections::{BTreeMap, BTreeSet},\n    convert::TryFrom,\n    ffi::OsStr,\n    fs,\n    iter::{self, FromIte"
  },
  {
    "path": "execution_engine_testing/test_support/tests/version_numbers.rs",
    "chars": 99,
    "preview": "#[test]\nfn test_html_root_url() {\n    version_sync::assert_html_root_url_updated!(\"src/lib.rs\");\n}\n"
  },
  {
    "path": "execution_engine_testing/tests/Cargo.toml",
    "chars": 1653,
    "preview": "[package]\nname = \"casper-engine-tests\"\nversion = \"0.1.0\"\nauthors = [\"Ed Hastings <ed@casper.network>, Henry Till <henryt"
  },
  {
    "path": "execution_engine_testing/tests/fixtures/call_stack_fixture/state.json",
    "chars": 151,
    "preview": "{\n  \"genesis_request\": {\n    \"protocol_version\": \"1.0.0\"\n  },\n  \"post_state_hash\": \"8d90f686f4d3906ca63ea4ac6b0b72348605"
  },
  {
    "path": "execution_engine_testing/tests/fixtures/counter_contract/state.json",
    "chars": 151,
    "preview": "{\n  \"genesis_request\": {\n    \"protocol_version\": \"1.0.0\"\n  },\n  \"post_state_hash\": \"e8ac57060d30935c297b7565fcb17b1591ed"
  },
  {
    "path": "execution_engine_testing/tests/fixtures/delegator_amount/state.json",
    "chars": 151,
    "preview": "{\n  \"genesis_request\": {\n    \"protocol_version\": \"2.0.0\"\n  },\n  \"post_state_hash\": \"09fefcac7cff208fa98018a20008b258f6d1"
  },
  {
    "path": "execution_engine_testing/tests/fixtures/disabled_versions/state.json",
    "chars": 151,
    "preview": "{\n  \"genesis_request\": {\n    \"protocol_version\": \"1.0.0\"\n  },\n  \"post_state_hash\": \"b06fd206cd3719a18c212bef2f21adbef240"
  },
  {
    "path": "execution_engine_testing/tests/fixtures/gh_3208/state.json",
    "chars": 10753,
    "preview": "{\n  \"description\": \"Default proposer account is also a genesis validator with a vesting schedule already initialized\",\n "
  },
  {
    "path": "execution_engine_testing/tests/fixtures/gh_3710/state.json",
    "chars": 10554,
    "preview": "{\n  \"genesis_request\": {\n    \"ee_config\": {\n      \"accounts\": [\n        {\n          \"Account\": {\n            \"balance\": "
  },
  {
    "path": "execution_engine_testing/tests/fixtures/groups/state.json",
    "chars": 151,
    "preview": "{\n  \"genesis_request\": {\n    \"protocol_version\": \"2.0.0\"\n  },\n  \"post_state_hash\": \"b899bb0ccee3c734859a075fff3a71196a84"
  },
  {
    "path": "execution_engine_testing/tests/fixtures/release_1_2_0/state.json",
    "chars": 10104,
    "preview": "{\n  \"genesis_request\": {\n    \"genesis_config_hash\": \"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a\",\n"
  },
  {
    "path": "execution_engine_testing/tests/fixtures/release_1_3_1/state.json",
    "chars": 10105,
    "preview": "{\n  \"genesis_request\": {\n    \"ee_config\": {\n      \"accounts\": [\n        {\n          \"Account\": {\n            \"balance\": "
  },
  {
    "path": "execution_engine_testing/tests/fixtures/release_1_4_2/state.json",
    "chars": 10582,
    "preview": "{\n  \"genesis_request\": {\n    \"ee_config\": {\n      \"accounts\": [\n        {\n          \"Account\": {\n            \"balance\": "
  },
  {
    "path": "execution_engine_testing/tests/fixtures/release_1_4_3/state.json",
    "chars": 11437,
    "preview": "{\n  \"genesis_request\": {\n    \"ee_config\": {\n      \"accounts\": [\n        {\n          \"Account\": {\n            \"balance\": "
  },
  {
    "path": "execution_engine_testing/tests/fixtures/release_1_4_4/state.json",
    "chars": 10130,
    "preview": "{\n  \"genesis_request\": {\n    \"ee_config\": {\n      \"accounts\": [\n        {\n          \"Account\": {\n            \"balance\": "
  },
  {
    "path": "execution_engine_testing/tests/fixtures/release_1_4_5/state.json",
    "chars": 10130,
    "preview": "{\n  \"genesis_request\": {\n    \"ee_config\": {\n      \"accounts\": [\n        {\n          \"Account\": {\n            \"balance\": "
  },
  {
    "path": "execution_engine_testing/tests/fixtures/release_1_5_8/state.json",
    "chars": 151,
    "preview": "{\n  \"genesis_request\": {\n    \"protocol_version\": \"1.0.0\"\n  },\n  \"post_state_hash\": \"29bbd3e40c68462422db2a7bb144e71e5360"
  },
  {
    "path": "execution_engine_testing/tests/fixtures/three_version_fixture/state.json",
    "chars": 151,
    "preview": "{\n  \"genesis_request\": {\n    \"protocol_version\": \"1.0.0\"\n  },\n  \"post_state_hash\": \"30da4f641f4297d77600cb0319153c6e3f33"
  },
  {
    "path": "execution_engine_testing/tests/fixtures/upgrade_thresholds/state.json",
    "chars": 11059,
    "preview": "{\n  \"genesis_request\": {\n    \"genesis_config_hash\": \"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a\",\n"
  },
  {
    "path": "execution_engine_testing/tests/fixtures/validator_minimum_bid/state.json",
    "chars": 151,
    "preview": "{\n  \"genesis_request\": {\n    \"protocol_version\": \"1.0.0\"\n  },\n  \"post_state_hash\": \"b39980efe0651ef956d8a9af5c197bc6a11a"
  },
  {
    "path": "execution_engine_testing/tests/src/lib.rs",
    "chars": 148,
    "preview": "pub mod lmdb_fixture;\npub mod wasm_utils;\npub use casper_engine_test_support::genesis_config_builder::GenesisConfigBuild"
  },
  {
    "path": "execution_engine_testing/tests/src/lmdb_fixture.rs",
    "chars": 6328,
    "preview": "use std::{\n    env,\n    fs::File,\n    io::Write,\n    path::{Path, PathBuf},\n};\n\nuse fs_extra::dir;\nuse serde::{Deseriali"
  },
  {
    "path": "execution_engine_testing/tests/src/test/calling_packages_by_version_query.rs",
    "chars": 22954,
    "preview": "use std::collections::BTreeSet;\n\n/// This test assumes that the provided fixture has v1 and v2 installed in protocol ver"
  },
  {
    "path": "execution_engine_testing/tests/src/test/chainspec_registry.rs",
    "chars": 6186,
    "preview": "use rand::Rng;\nuse tempfile::TempDir;\n\nuse casper_engine_test_support::{\n    LmdbWasmTestBuilder, UpgradeRequestBuilder,"
  },
  {
    "path": "execution_engine_testing/tests/src/test/check_transfer_success.rs",
    "chars": 8715,
    "preview": "use std::path::PathBuf;\n\nuse casper_engine_test_support::{\n    utils::create_genesis_config, DeployItemBuilder, ExecuteR"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/account/associated_keys.rs",
    "chars": 4383,
    "preview": "use once_cell::sync::Lazy;\n\nuse casper_engine_test_support::{\n    ExecuteRequestBuilder, LmdbWasmTestBuilder, DEFAULT_AC"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/account/authorized_keys.rs",
    "chars": 17793,
    "preview": "use casper_engine_test_support::{\n    DeployItemBuilder, ExecuteRequestBuilder, LmdbWasmTestBuilder, TransferRequestBuil"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/account/key_management_thresholds.rs",
    "chars": 2385,
    "preview": "use casper_engine_test_support::{\n    DeployItemBuilder, ExecuteRequestBuilder, LmdbWasmTestBuilder, ARG_AMOUNT,\n    DEF"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/account/mod.rs",
    "chars": 112,
    "preview": "mod associated_keys;\nmod authorized_keys;\nmod key_management_thresholds;\nmod named_keys;\nmod named_keys_stored;\n"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/account/named_keys.rs",
    "chars": 3483,
    "preview": "use casper_engine_test_support::{\n    ExecuteRequestBuilder, LmdbWasmTestBuilder, DEFAULT_ACCOUNT_ADDR, LOCAL_GENESIS_RE"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/account/named_keys_stored.rs",
    "chars": 3013,
    "preview": "use casper_engine_test_support::{\n    ExecuteRequestBuilder, LmdbWasmTestBuilder, DEFAULT_ACCOUNT_ADDR, LOCAL_GENESIS_RE"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/add_contract_version.rs",
    "chars": 8139,
    "preview": "use std::collections::{BTreeMap, BTreeSet};\n\nuse crate::lmdb_fixture;\nuse casper_engine_test_support::{\n    utils, Execu"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/auction.rs",
    "chars": 2086,
    "preview": "use casper_engine_test_support::{\n    ChainspecConfig, ExecuteRequestBuilder, LmdbWasmTestBuilder, DEFAULT_ACCOUNTS,\n   "
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/create_purse.rs",
    "chars": 2889,
    "preview": "use once_cell::sync::Lazy;\n\nuse casper_engine_test_support::{\n    ExecuteRequestBuilder, LmdbWasmTestBuilder, DEFAULT_AC"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/dictionary.rs",
    "chars": 23707,
    "preview": "use std::{convert::TryFrom, path::PathBuf};\n\nuse casper_engine_test_support::{\n    utils::create_genesis_config, DeployI"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/generic_hash.rs",
    "chars": 2523,
    "preview": "use casper_engine_test_support::{\n    ExecuteRequestBuilder, LmdbWasmTestBuilder, DEFAULT_ACCOUNT_ADDR, LOCAL_GENESIS_RE"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/get_arg.rs",
    "chars": 2317,
    "preview": "use casper_engine_test_support::{\n    ExecuteRequestBuilder, LmdbWasmTestBuilder, DEFAULT_ACCOUNT_ADDR, LOCAL_GENESIS_RE"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/get_block_info.rs",
    "chars": 4976,
    "preview": "use casper_engine_test_support::{\n    ExecuteRequestBuilder, LmdbWasmTestBuilder, DEFAULT_ACCOUNT_ADDR, LOCAL_GENESIS_RE"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/get_blocktime.rs",
    "chars": 764,
    "preview": "use casper_engine_test_support::{\n    ExecuteRequestBuilder, LmdbWasmTestBuilder, DEFAULT_ACCOUNT_ADDR, LOCAL_GENESIS_RE"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/get_call_stack.rs",
    "chars": 136740,
    "preview": "use num_traits::One;\n\nuse casper_engine_test_support::{\n    ExecuteRequest, ExecuteRequestBuilder, LmdbWasmTestBuilder, "
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/get_caller.rs",
    "chars": 7158,
    "preview": "use casper_engine_test_support::{\n    ExecuteRequestBuilder, LmdbWasmTestBuilder, DEFAULT_ACCOUNT_ADDR, DEFAULT_PAYMENT,"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/get_phase.rs",
    "chars": 1172,
    "preview": "use casper_engine_test_support::{\n    DeployItemBuilder, ExecuteRequestBuilder, LmdbWasmTestBuilder, DEFAULT_ACCOUNT_ADD"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/list_authorization_keys.rs",
    "chars": 5267,
    "preview": "use casper_engine_test_support::{\n    DeployItemBuilder, ExecuteRequestBuilder, LmdbWasmTestBuilder, TransferRequestBuil"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/list_named_keys.rs",
    "chars": 1433,
    "preview": "use casper_engine_test_support::{\n    ExecuteRequestBuilder, LmdbWasmTestBuilder, DEFAULT_ACCOUNT_ADDR, LOCAL_GENESIS_RE"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/main_purse.rs",
    "chars": 1988,
    "preview": "use casper_engine_test_support::{\n    ExecuteRequestBuilder, LmdbWasmTestBuilder, DEFAULT_ACCOUNT_ADDR, DEFAULT_PAYMENT,"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/mint_purse.rs",
    "chars": 1510,
    "preview": "use casper_engine_test_support::{\n    ExecuteRequestBuilder, LmdbWasmTestBuilder, DEFAULT_ACCOUNT_ADDR, LOCAL_GENESIS_RE"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/mod.rs",
    "chars": 459,
    "preview": "mod account;\nmod add_contract_version;\nmod auction;\nmod create_purse;\nmod dictionary;\nmod generic_hash;\nmod get_arg;\nmod"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/multisig_authorization.rs",
    "chars": 5844,
    "preview": "use casper_engine_test_support::{\n    DeployItemBuilder, ExecuteRequestBuilder, LmdbWasmTestBuilder, DEFAULT_ACCOUNT_ADD"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/named_dictionaries.rs",
    "chars": 1023,
    "preview": "use casper_engine_test_support::{\n    ExecuteRequestBuilder, LmdbWasmTestBuilder, DEFAULT_ACCOUNT_ADDR, LOCAL_GENESIS_RE"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/recover_secp256k1.rs",
    "chars": 3948,
    "preview": "use casper_engine_test_support::{\n    ExecuteRequestBuilder, LmdbWasmTestBuilder, DEFAULT_ACCOUNT_ADDR, LOCAL_GENESIS_RE"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/revert.rs",
    "chars": 544,
    "preview": "use casper_engine_test_support::{\n    ExecuteRequestBuilder, LmdbWasmTestBuilder, DEFAULT_ACCOUNT_ADDR, LOCAL_GENESIS_RE"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/runtime.rs",
    "chars": 4057,
    "preview": "use std::collections::HashSet;\n\nuse rand::Rng;\n\nuse casper_engine_test_support::{\n    DeployItemBuilder, ExecuteRequestB"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/subcall.rs",
    "chars": 7423,
    "preview": "use num_traits::cast::AsPrimitive;\n\nuse casper_engine_test_support::{\n    ExecuteRequestBuilder, LmdbWasmTestBuilder, DE"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/transfer.rs",
    "chars": 19241,
    "preview": "use assert_matches::assert_matches;\nuse once_cell::sync::Lazy;\n\nuse casper_engine_test_support::{\n    ExecuteRequestBuil"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/transfer_cached.rs",
    "chars": 3982,
    "preview": "use once_cell::sync::Lazy;\nuse tempfile::TempDir;\n\nuse casper_engine_test_support::{\n    LmdbWasmTestBuilder, TransferRe"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_api/verify_signature.rs",
    "chars": 4786,
    "preview": "use casper_engine_test_support::{\n    ExecuteRequestBuilder, LmdbWasmTestBuilder, DEFAULT_ACCOUNT_ADDR, LOCAL_GENESIS_RE"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_context.rs",
    "chars": 5092,
    "preview": "use casper_engine_test_support::{\n    ExecuteRequestBuilder, LmdbWasmTestBuilder, DEFAULT_ACCOUNT_ADDR, LOCAL_GENESIS_RE"
  },
  {
    "path": "execution_engine_testing/tests/src/test/contract_messages.rs",
    "chars": 41243,
    "preview": "use num_traits::Zero;\nuse std::cell::RefCell;\n\nuse casper_execution_engine::runtime::cryptography;\n\nuse casper_engine_te"
  },
  {
    "path": "execution_engine_testing/tests/src/test/counter_factory.rs",
    "chars": 9018,
    "preview": "use std::{collections::BTreeSet, iter::FromIterator};\n\nuse crate::wasm_utils;\nuse casper_engine_test_support::{\n    Exec"
  },
  {
    "path": "execution_engine_testing/tests/src/test/deploy/context_association.rs",
    "chars": 2384,
    "preview": "use casper_engine_test_support::{\n    DeployItemBuilder, ExecuteRequestBuilder, LmdbWasmTestBuilder, DEFAULT_ACCOUNT_ADD"
  },
  {
    "path": "execution_engine_testing/tests/src/test/deploy/mod.rs",
    "chars": 106,
    "preview": "mod context_association;\nmod non_standard_payment;\nmod preconditions;\nmod receipts;\nmod stored_contracts;\n"
  },
  {
    "path": "execution_engine_testing/tests/src/test/deploy/non_standard_payment.rs",
    "chars": 8577,
    "preview": "use casper_engine_test_support::{\n    DeployItemBuilder, ExecuteRequestBuilder, LmdbWasmTestBuilder, DEFAULT_ACCOUNT_ADD"
  },
  {
    "path": "execution_engine_testing/tests/src/test/deploy/preconditions.rs",
    "chars": 4409,
    "preview": "use assert_matches::assert_matches;\n\nuse casper_engine_test_support::{\n    utils, DeployItemBuilder, ExecuteRequestBuild"
  },
  {
    "path": "execution_engine_testing/tests/src/test/deploy/receipts.rs",
    "chars": 19849,
    "preview": "use std::collections::{BTreeMap, BTreeSet};\n\nuse once_cell::sync::Lazy;\n\nuse casper_engine_test_support::{\n    ExecuteRe"
  },
  {
    "path": "execution_engine_testing/tests/src/test/deploy/stored_contracts.rs",
    "chars": 28452,
    "preview": "use assert_matches::assert_matches;\nuse casper_engine_test_support::{\n    DeployItemBuilder, EntityWithNamedKeys, Execut"
  },
  {
    "path": "execution_engine_testing/tests/src/test/explorer/faucet.rs",
    "chars": 27535,
    "preview": "use num_rational::Ratio;\n\nuse casper_execution_engine::{engine_state, execution::ExecError};\n\nuse casper_engine_test_sup"
  },
  {
    "path": "execution_engine_testing/tests/src/test/explorer/faucet_test_helpers.rs",
    "chars": 18354,
    "preview": "use rand::Rng;\n\nuse casper_engine_test_support::{\n    DeployItemBuilder, EntityWithNamedKeys, ExecuteRequest, ExecuteReq"
  },
  {
    "path": "execution_engine_testing/tests/src/test/explorer/mod.rs",
    "chars": 1600,
    "preview": "mod faucet;\npub mod faucet_test_helpers;\n\nuse casper_types::account::AccountHash;\n\n// Test constants.\npub const FAUCET_I"
  },
  {
    "path": "execution_engine_testing/tests/src/test/get_balance.rs",
    "chars": 6097,
    "preview": "use once_cell::sync::Lazy;\n\nuse casper_engine_test_support::{\n    LmdbWasmTestBuilder, TransferRequestBuilder, LOCAL_GEN"
  },
  {
    "path": "execution_engine_testing/tests/src/test/groups.rs",
    "chars": 27158,
    "preview": "#![allow(deprecated)]\n\nuse assert_matches::assert_matches;\nuse once_cell::sync::Lazy;\n\nuse casper_engine_test_support::{"
  },
  {
    "path": "execution_engine_testing/tests/src/test/host_function_costs.rs",
    "chars": 6710,
    "preview": "use casper_engine_test_support::{\n    ExecuteRequestBuilder, LmdbWasmTestBuilder, DEFAULT_ACCOUNT_ADDR, LOCAL_GENESIS_RE"
  },
  {
    "path": "execution_engine_testing/tests/src/test/manage_groups.rs",
    "chars": 17533,
    "preview": "use std::collections::BTreeSet;\n\nuse assert_matches::assert_matches;\nuse once_cell::sync::Lazy;\n\nuse casper_engine_test_"
  },
  {
    "path": "execution_engine_testing/tests/src/test/mod.rs",
    "chars": 1534,
    "preview": "mod calling_packages_by_version_query;\nmod chainspec_registry;\nmod check_transfer_success;\nmod contract_api;\nmod contrac"
  },
  {
    "path": "execution_engine_testing/tests/src/test/private_chain/fees_accumulation.rs",
    "chars": 10816,
    "preview": "use std::collections::BTreeSet;\n\nuse casper_engine_test_support::{\n    ExecuteRequestBuilder, LmdbWasmTestBuilder, Trans"
  },
  {
    "path": "execution_engine_testing/tests/src/test/private_chain/management.rs",
    "chars": 29911,
    "preview": "use casper_engine_test_support::{\n    ChainspecConfig, DeployItemBuilder, ExecuteRequest, ExecuteRequestBuilder, LmdbWas"
  }
]

// ... and 1407 more files (download for full content)

About this extraction

This page contains the full source code of the casper-network/casper-node GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1607 files (13.8 MB), approximately 3.7M tokens, and a symbol index with 21091 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!