diff --git a/crates/integration_tests/README.md b/crates/integration_tests/README.md index a6335a984..511bd36b9 100644 --- a/crates/integration_tests/README.md +++ b/crates/integration_tests/README.md @@ -2,6 +2,55 @@ This crate contains integration tests for the Polkadot REST API. +## Project Structure + +``` +crates/integration_tests/ +├── src/ +│ ├── lib.rs # Library exports +│ ├── client.rs # HTTP test client +│ ├── config.rs # Test configuration loader +│ ├── fixtures.rs # Fixture loading utilities +│ ├── test_helpers.rs # Common test helpers and macros +│ └── utils.rs # JSON comparison utilities +├── tests/ +│ ├── accounts/ # Account endpoint tests (12 submodules) +│ ├── coretime/ # Coretime endpoint tests (6 submodules) +│ │ ├── mod.rs +│ │ ├── info.rs +│ │ ├── leases.rs +│ │ ├── overview.rs +│ │ ├── regions.rs +│ │ ├── renewals.rs +│ │ └── reservations.rs +│ ├── basic.rs # Health/version endpoint tests +│ ├── capabilities.rs # Capabilities endpoint tests +│ ├── chain_config.rs # Chain configuration tests +│ ├── historical.rs # Fixture-based regression tests +│ ├── latest.rs # Latest block endpoint tests +│ ├── relay_chain_connection.rs +│ ├── use_rc_block.rs # RC block parameter tests +│ ├── config/ +│ │ └── test_config.json +│ └── fixtures/ # Pre-recorded JSON responses +│ ├── polkadot/ +│ │ ├── blocks/ +│ │ ├── pallets/{pallet_name}/ +│ │ ├── runtime/ +│ │ ├── coretime/ +│ │ ├── paras/ +│ │ └── staking/ +│ ├── kusama/ +│ ├── asset-hub-polkadot/ +│ ├── asset-hub-kusama/ +│ ├── coretime-polkadot/ +│ ├── coretime-kusama/ +│ └── common/ +└── scripts/ + ├── migrate_fixtures.sh # Migrate flat fixtures to nested structure + └── update_fixture_paths.py # Update paths in test_config.json +``` + ## Test Suites ### 1. Basic Tests (`tests/basic.rs`) @@ -29,6 +78,25 @@ Regression tests using pre-recorded fixtures. These ensure API responses remain - Tests specific historical blocks (e.g., block 1,000,000) - Ignores time-varying fields (timestamps, etc.) +### 4. Coretime Tests (`tests/coretime/`) + +Comprehensive tests for coretime endpoints, organized by endpoint: + +- `leases.rs` - /v1/coretime/leases (10 tests) +- `reservations.rs` - /v1/coretime/reservations (8 tests) +- `renewals.rs` - /v1/coretime/renewals (10 tests) +- `regions.rs` - /v1/coretime/regions (10 tests) +- `info.rs` - /v1/coretime/info (10 tests) +- `overview.rs` - /v1/coretime/overview (13 tests) + +### 5. Account Tests (`tests/accounts/`) + +Tests for account-related endpoints with 12 submodules covering balance info, staking, vesting, proxies, and assets. + +### 6. Use RC Block Tests (`tests/use_rc_block.rs`) + +Tests for the `useRcBlock` query parameter feature, which allows querying parachain data via relay chain blocks. + ## Running Tests ### Prerequisites @@ -43,22 +111,35 @@ cargo run --release --bin polkadot-rest-api # For Kusama export SAS_SUBSTRATE_URL=wss://kusama-rpc.polkadot.io cargo run --release --bin polkadot-rest-api + +# For Coretime chains +export SAS_SUBSTRATE_URL=wss://kusama-coretime-rpc.polkadot.io +cargo run --release --bin polkadot-rest-api ``` ### Run Commands ```bash -# Run all tests in a suite (recommended) +# Run all integration tests +cargo test --package integration_tests + +# Run specific test suites cargo test --package integration_tests --test historical cargo test --package integration_tests --test latest cargo test --package integration_tests --test basic -# Run a specific chain's tests +# Run coretime tests (all submodules) +cargo test --package integration_tests coretime + +# Run specific coretime submodule +cargo test --package integration_tests coretime::leases +cargo test --package integration_tests coretime::overview + +# Run a specific chain's historical tests cargo test --package integration_tests --test historical test_historical_polkadot -cargo test --package integration_tests --test latest test_latest_polkadot -# View detailed output with progress indicators -cargo test --package integration_tests --test historical test_historical_polkadot -- --nocapture +# View detailed output +cargo test --package integration_tests --test historical -- --nocapture ``` ### Understanding the Output @@ -79,6 +160,80 @@ Historical Test Results for polkadot ════════════════════════════════════════════════════════════ ``` +## Test Helpers + +The `src/test_helpers.rs` module provides common utilities to reduce boilerplate: + +### Setup Helpers + +```rust +use integration_tests::test_helpers::{init_tracing, setup_client}; + +#[tokio::test] +async fn my_test() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + // ... +} +``` + +### Chain Detection + +```rust +use integration_tests::test_helpers::{is_coretime_chain, is_relay_chain, has_pallet}; + +// Check if connected to a coretime chain +if !is_coretime_chain(&client).await { + return skip_test("Not a coretime chain"); +} + +// Check for specific pallet +if !has_pallet(&client, "Staking").await { + return skip_test("Staking pallet not found"); +} +``` + +### Assertion Helpers + +```rust +use integration_tests::test_helpers::{ + assert_valid_at_field, + assert_array_field, + assert_string_field, + assert_bad_request, +}; + +// Validate response structure +assert_valid_at_field(&json)?; +let items = assert_array_field(&json, "leases")?; +let hash = assert_string_field(&json, "hash")?; + +// Test error responses +assert_bad_request(&client, "/v1/endpoint?at=invalid").await?; +``` + +### Macros + +```rust +use integration_tests::{require_coretime_chain, require_pallet, skip_if}; + +#[tokio::test] +async fn test_coretime_feature() -> Result<()> { + let client = setup_client().await?; + + // Skip if not on coretime chain + require_coretime_chain!(&client); + + // Skip if missing specific pallet + require_pallet!(&client, "Broker"); + + // Custom skip condition + skip_if!(some_condition, "Reason to skip"); + + // ... test code +} +``` + ## Configuration ### Test Configuration (`tests/config/test_config.json`) @@ -98,30 +253,37 @@ Defines chains, endpoints, and test cases: { "endpoint": "/v1/blocks/{blockId}", "block_height": 1000000, - "fixture_path": "polkadot/blocks_1000000.json" + "fixture_path": "polkadot/blocks/1000000.json" } ] } } ``` -### Fixtures (`tests/fixtures/`) +### Fixtures -Pre-recorded JSON responses organized by chain: +Pre-recorded JSON responses organized by chain and feature: ``` tests/fixtures/ ├── polkadot/ -│ ├── blocks_1000000.json -│ └── blocks_10000000.json +│ ├── blocks/ +│ │ ├── 1000000.json +│ │ └── range_1000000-1000002.json +│ ├── pallets/ +│ │ ├── balances/ +│ │ │ ├── errors.json +│ │ │ └── dispatchables_28500000.json +│ │ └── system/ +│ │ └── storage_20000000.json +│ ├── runtime/ +│ │ ├── metadata_21000000.json +│ │ └── spec_28500000.json +│ └── coretime/ +│ └── overview_24000000.json ├── kusama/ -│ └── blocks_5000000.json ├── asset-hub-polkadot/ -│ ├── blocks_10250000_pre_migration.json -│ └── blocks_10260000_post_migration.json -└── asset-hub-kusama/ - ├── blocks_11150000_pre_migration.json - └── blocks_11152000_post_migration.json +└── ... ``` ## Adding New Tests @@ -147,7 +309,7 @@ tests/fixtures/ { "endpoint": "/v1/runtime/spec", "block_height": 1000000, - "fixture_path": "polkadot/runtime_spec_1000000.json", + "fixture_path": "polkadot/runtime/spec_1000000.json", "description": "Test runtime spec at block 1,000,000" } ``` @@ -164,6 +326,42 @@ cargo run --bin update_fixtures -- polkadot Or manually create the fixture by calling the endpoint and saving the response. +### Adding a New Test Module + +For a new feature area, create a module directory: + +```bash +mkdir tests/new_feature +``` + +Create `tests/new_feature/mod.rs`: + +```rust +// Re-export common helpers +pub use integration_tests::test_helpers::{init_tracing, setup_client}; + +mod endpoint_a; +mod endpoint_b; +``` + +Create individual test files (e.g., `tests/new_feature/endpoint_a.rs`): + +```rust +use super::{init_tracing, setup_client}; +use anyhow::Result; + +#[tokio::test] +async fn test_endpoint_a_structure() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + let (status, json) = client.get_json("/v1/new-feature/endpoint-a").await?; + assert!(status.is_success()); + + Ok(()) +} +``` + ## Updating Fixtures When API responses change intentionally, update fixtures: @@ -177,12 +375,6 @@ cargo run --bin update_fixtures -- polkadot cargo run --bin update_fixtures -- kusama ``` -Or use the convenience script: - -```bash -./scripts/update_fixtures.sh -``` - ## Environment Variables | Variable | Default | Description | @@ -191,6 +383,7 @@ Or use the convenience script: | `TEST_CONFIG_PATH` | `tests/config/test_config.json` | Path to test configuration | | `FIXTURES_DIR` | `tests/fixtures` | Path to fixture files | | `RUST_LOG` | - | Log level (e.g., `info`, `debug`) | +| `TEST_DELAY_MS` | `0` | Delay between requests (rate limiting) | ## JSON Comparison @@ -203,6 +396,4 @@ The historical tests use a sophisticated JSON comparison system that: Ignored fields in historical tests: - `timestamp` -- `at` -- `blockNumber` -- `blockHash` +- `authorId` diff --git a/crates/integration_tests/scripts/migrate_fixtures.sh b/crates/integration_tests/scripts/migrate_fixtures.sh new file mode 100755 index 000000000..396dac3af --- /dev/null +++ b/crates/integration_tests/scripts/migrate_fixtures.sh @@ -0,0 +1,279 @@ +#!/bin/bash + +# Fixture Migration Script +# Reorganizes fixtures from flat structure to nested chain/feature structure + +set -e + +FIXTURES_DIR="$(dirname "$0")/../tests/fixtures" +DRY_RUN=${DRY_RUN:-false} + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +log_info() { + echo -e "${GREEN}[INFO]${NC} $1" +} + +log_warn() { + echo -e "${YELLOW}[WARN]${NC} $1" +} + +log_error() { + echo -e "${RED}[ERROR]${NC} $1" +} + +# Create directory if it doesn't exist +ensure_dir() { + local dir="$1" + if [ "$DRY_RUN" = true ]; then + echo " Would create directory: $dir" + else + mkdir -p "$dir" + fi +} + +# Move file to new location +move_file() { + local src="$1" + local dst="$2" + if [ "$DRY_RUN" = true ]; then + echo " $src -> $dst" + else + mv "$src" "$dst" + fi +} + +# Determine the feature category for a file +get_feature_category() { + local filename="$1" + + # Order matters - check more specific patterns first + case "$filename" in + blocks_*para_inclusions*) + echo "paras" + ;; + blocks_range*|blocks_header*|blocks_*extrinsics*|blocks_*) + echo "blocks" + ;; + extrinsic_*) + echo "blocks" + ;; + pallets_asset_conversion_*) + echo "pallets/asset_conversion" + ;; + pallets_assets_*) + echo "pallets/assets" + ;; + pallets_balances_*) + echo "pallets/balances" + ;; + pallets_foreign_assets_*) + echo "pallets/foreign_assets" + ;; + pallets_nomination_pools_*) + echo "pallets/nomination_pools" + ;; + pallets_on_going_referenda_*) + echo "pallets/referenda" + ;; + pallets_staking_progress_*|pallets_staking_validators_*) + echo "pallets/staking" + ;; + pallets_pool_assets_*) + echo "pallets/pool_assets" + ;; + pallets_staking_*) + echo "pallets/staking" + ;; + pallets_system_*) + echo "pallets/system" + ;; + pallets_timestamp_*) + echo "pallets/timestamp" + ;; + pallets_*) + echo "pallets" + ;; + runtime_code_*|runtime_metadata_*|runtime_spec_*) + echo "runtime" + ;; + coretime_*) + echo "coretime" + ;; + staking_progress_*|staking_validators_*) + echo "staking" + ;; + rc_blocks_*) + echo "rc_blocks" + ;; + use_rc_block_*) + echo "use_rc_block" + ;; + accounts_*) + echo "accounts" + ;; + *) + echo "other" + ;; + esac +} + +# Get new filename (strip the category prefix) +get_new_filename() { + local filename="$1" + local category="$2" + + case "$category" in + blocks) + # blocks_1000000.json -> 1000000.json + # blocks_range_1000000-1000002.json -> range_1000000-1000002.json + # blocks_header_1276963.json -> header_1276963.json + # extrinsic_11308795_2_with_docs.json -> extrinsic_11308795_2_with_docs.json + if [[ "$filename" == extrinsic_* ]]; then + echo "$filename" + else + echo "${filename#blocks_}" + fi + ;; + paras) + # blocks_10293194_para_inclusions.json -> 10293194_inclusions.json + echo "${filename#blocks_}" | sed 's/para_inclusions/inclusions/' + ;; + pallets/referenda) + # pallets_on_going_referenda_25000000.json -> on_going_25000000.json + echo "${filename#pallets_}" | sed 's/on_going_referenda_/on_going_/' + ;; + pallets/*) + # pallets_balances_errors_21000000.json -> errors_21000000.json + # pallets_system_storage_number_20000000.json -> storage_number_20000000.json + local pallet_name=$(echo "$category" | cut -d'/' -f2) + echo "${filename#pallets_${pallet_name}_}" + ;; + pallets) + echo "${filename#pallets_}" + ;; + runtime) + echo "${filename#runtime_}" + ;; + coretime) + echo "${filename#coretime_}" + ;; + staking) + # staking_progress_block_12000.json -> progress_12000.json + echo "${filename#staking_}" | sed 's/_block_/_/' + ;; + rc_blocks) + echo "${filename#rc_blocks_}" + ;; + use_rc_block) + echo "${filename#use_rc_block_}" + ;; + accounts) + echo "${filename#accounts_}" + ;; + *) + echo "$filename" + ;; + esac +} + +# Process a single chain directory +process_chain() { + local chain="$1" + local chain_dir="$FIXTURES_DIR/$chain" + + if [ ! -d "$chain_dir" ]; then + log_warn "Chain directory not found: $chain_dir" + return + fi + + log_info "Processing chain: $chain" + + # Create a temporary directory for the new structure + local temp_dir="$chain_dir.new" + if [ "$DRY_RUN" = false ]; then + rm -rf "$temp_dir" + mkdir -p "$temp_dir" + fi + + # Process each file + for file in "$chain_dir"/*.json; do + [ -e "$file" ] || continue + + local filename=$(basename "$file") + local category=$(get_feature_category "$filename") + local new_filename=$(get_new_filename "$filename" "$category") + + local target_dir="$temp_dir/$category" + local target_file="$target_dir/$new_filename" + + ensure_dir "$target_dir" + + if [ "$DRY_RUN" = true ]; then + echo " $filename -> $category/$new_filename" + else + cp "$file" "$target_file" + fi + done + + # Replace old directory with new structure + if [ "$DRY_RUN" = false ]; then + # Backup old directory + mv "$chain_dir" "$chain_dir.bak" + mv "$temp_dir" "$chain_dir" + log_info " Backed up old structure to $chain_dir.bak" + fi +} + +# Main +main() { + if [ "$DRY_RUN" = true ]; then + log_info "DRY RUN MODE - No files will be modified" + echo "" + fi + + log_info "Starting fixture migration..." + log_info "Fixtures directory: $FIXTURES_DIR" + echo "" + + # Process each chain + for chain_dir in "$FIXTURES_DIR"/*/; do + [ -d "$chain_dir" ] || continue + chain=$(basename "$chain_dir") + + # Skip if already migrated (has subdirectories) + if [ -d "$chain_dir/blocks" ] || [ -d "$chain_dir/pallets" ] || [ -d "$chain_dir/runtime" ]; then + log_warn "Chain $chain appears already migrated, skipping" + continue + fi + + process_chain "$chain" + done + + echo "" + if [ "$DRY_RUN" = true ]; then + log_info "Dry run complete. Run with DRY_RUN=false to apply changes." + else + log_info "Migration complete!" + log_info "Old directories backed up with .bak suffix" + log_info "Review the changes and delete .bak directories when satisfied" + fi +} + +# Handle root-level fixtures that aren't in chain directories +handle_root_fixtures() { + log_info "Checking for root-level fixtures..." + + for file in "$FIXTURES_DIR"/*.json; do + [ -e "$file" ] || continue + local filename=$(basename "$file") + log_warn "Found root-level fixture: $filename (not migrated)" + done +} + +main +handle_root_fixtures diff --git a/crates/integration_tests/scripts/update_fixture_paths.py b/crates/integration_tests/scripts/update_fixture_paths.py new file mode 100755 index 000000000..8ab65c65d --- /dev/null +++ b/crates/integration_tests/scripts/update_fixture_paths.py @@ -0,0 +1,132 @@ +#!/usr/bin/env python3 +""" +Script to update fixture paths in test_config.json to match the new nested structure. + +Old format: "polkadot/blocks_1000000.json" +New format: "polkadot/blocks/1000000.json" +""" + +import json +import re +import sys +from pathlib import Path + +def transform_fixture_path(old_path: str) -> str: + """Transform an old flat fixture path to the new nested structure.""" + + # Split into chain and filename + parts = old_path.split('/', 1) + if len(parts) != 2: + return old_path + + chain, filename = parts + + # Define transformation rules (order matters - more specific first) + transformations = [ + # Blocks - para inclusions go to paras/ + (r'^blocks_(\d+)_para_inclusions(.*)\.json$', r'paras/\1_inclusions\2.json'), + + # Blocks + (r'^blocks_range_(.*)\.json$', r'blocks/range_\1.json'), + (r'^blocks_header_(.*)\.json$', r'blocks/header_\1.json'), + (r'^blocks_(\d+)_extrinsics_raw\.json$', r'blocks/\1_extrinsics_raw.json'), + (r'^blocks_(\d+)_rc_extrinsics_raw\.json$', r'blocks/\1_rc_extrinsics_raw.json'), + (r'^blocks_(.*)\.json$', r'blocks/\1.json'), + + # Extrinsics (go to blocks/) + (r'^extrinsic_(.*)\.json$', r'blocks/extrinsic_\1.json'), + + # RC Blocks + (r'^rc_blocks_(.*)\.json$', r'rc_blocks/\1.json'), + + # Use RC Block + (r'^use_rc_block_(.*)\.json$', r'use_rc_block/\1.json'), + + # Pallets - specific pallets + (r'^pallets_asset_conversion_(.*)\.json$', r'pallets/asset_conversion/\1.json'), + (r'^pallets_assets_(.*)\.json$', r'pallets/assets/\1.json'), + (r'^pallets_balances_(.*)\.json$', r'pallets/balances/\1.json'), + (r'^pallets_foreign_assets_(.*)\.json$', r'pallets/foreign_assets/\1.json'), + (r'^pallets_nomination_pools_(.*)\.json$', r'pallets/nomination_pools/\1.json'), + (r'^pallets_on_going_referenda_(.*)\.json$', r'pallets/referenda/on_going_\1.json'), + (r'^pallets_pool_assets_(.*)\.json$', r'pallets/pool_assets/\1.json'), + (r'^pallets_staking_(.*)\.json$', r'pallets/staking/\1.json'), + (r'^pallets_system_(.*)\.json$', r'pallets/system/\1.json'), + (r'^pallets_timestamp_(.*)\.json$', r'pallets/timestamp/\1.json'), + + # Runtime + (r'^runtime_code_(.*)\.json$', r'runtime/code_\1.json'), + (r'^runtime_metadata_(.*)\.json$', r'runtime/metadata_\1.json'), + (r'^runtime_spec_(.*)\.json$', r'runtime/spec_\1.json'), + + # Coretime + (r'^coretime_(.*)\.json$', r'coretime/\1.json'), + + # Staking (standalone, not under pallets) + (r'^staking_progress_block_(\d+)\.json$', r'staking/progress_\1.json'), + (r'^staking_validators_block_(\d+)\.json$', r'staking/validators_\1.json'), + + # Accounts + (r'^accounts_(.*)\.json$', r'accounts/\1.json'), + ] + + for pattern, replacement in transformations: + match = re.match(pattern, filename) + if match: + new_filename = re.sub(pattern, replacement, filename) + return f"{chain}/{new_filename}" + + # If no transformation matched, return original + print(f"WARNING: No transformation for: {old_path}", file=sys.stderr) + return old_path + + +def update_config(config_path: Path) -> None: + """Update all fixture_path entries in the config file.""" + + with open(config_path, 'r') as f: + config = json.load(f) + + # Track changes + changes = [] + + # Update historical_tests + if 'historical_tests' in config: + for chain, tests in config['historical_tests'].items(): + for test in tests: + if 'fixture_path' in test: + old_path = test['fixture_path'] + new_path = transform_fixture_path(old_path) + if old_path != new_path: + changes.append((old_path, new_path)) + test['fixture_path'] = new_path + + # Write updated config + with open(config_path, 'w') as f: + json.dump(config, f, indent=2) + f.write('\n') # Add trailing newline + + # Print summary + print(f"Updated {len(changes)} fixture paths:") + for old, new in changes[:10]: + print(f" {old}") + print(f" -> {new}") + if len(changes) > 10: + print(f" ... and {len(changes) - 10} more") + + +def main(): + script_dir = Path(__file__).parent + config_path = script_dir.parent / 'tests' / 'config' / 'test_config.json' + + if not config_path.exists(): + print(f"Error: Config file not found: {config_path}", file=sys.stderr) + sys.exit(1) + + print(f"Updating fixture paths in: {config_path}") + update_config(config_path) + print("Done!") + + +if __name__ == '__main__': + main() diff --git a/crates/integration_tests/src/fixtures.rs b/crates/integration_tests/src/fixtures.rs index 665954cb3..56f0c61db 100644 --- a/crates/integration_tests/src/fixtures.rs +++ b/crates/integration_tests/src/fixtures.rs @@ -17,7 +17,16 @@ impl FixtureLoader { } } - /// Load a JSON fixture file + /// Load a JSON fixture file using the full path relative to fixtures dir + /// + /// # Examples + /// ```ignore + /// // Old flat structure (still supported for backwards compatibility) + /// loader.load("polkadot/blocks_1000000.json")?; + /// + /// // New nested structure + /// loader.load("polkadot/blocks/1000000.json")?; + /// ``` pub fn load(&self, path: impl AsRef) -> Result { let full_path = if path.as_ref().is_absolute() { path.as_ref().to_path_buf() @@ -34,6 +43,21 @@ impl FixtureLoader { Ok(json) } + /// Load a fixture using chain, feature, and filename components + /// + /// # Examples + /// ```ignore + /// // Load polkadot/blocks/1000000.json + /// loader.load_nested("polkadot", "blocks", "1000000.json")?; + /// + /// // Load asset-hub-polkadot/pallets/balances/errors.json + /// loader.load_nested("asset-hub-polkadot", "pallets/balances", "errors.json")?; + /// ``` + pub fn load_nested(&self, chain: &str, feature: &str, filename: &str) -> Result { + let path = PathBuf::from(chain).join(feature).join(filename); + self.load(&path) + } + /// Check if a fixture file exists pub fn exists(&self, path: impl AsRef) -> bool { let full_path = if path.as_ref().is_absolute() { @@ -44,8 +68,80 @@ impl FixtureLoader { full_path.exists() } + /// Check if a nested fixture exists + pub fn exists_nested(&self, chain: &str, feature: &str, filename: &str) -> bool { + let path = PathBuf::from(chain).join(feature).join(filename); + self.exists(&path) + } + /// Get the fixtures directory path pub fn fixtures_dir(&self) -> &Path { &self.fixtures_dir } + + /// List all fixture files in a chain/feature directory + pub fn list_fixtures(&self, chain: &str, feature: &str) -> Result> { + let dir_path = self.fixtures_dir.join(chain).join(feature); + if !dir_path.exists() { + return Ok(vec![]); + } + + let mut fixtures = Vec::new(); + for entry in std::fs::read_dir(&dir_path)? { + let entry = entry?; + let path = entry.path(); + if path.is_file() + && path.extension().is_some_and(|e| e == "json") + && let Some(filename) = path.file_name() + { + fixtures.push(filename.to_string_lossy().to_string()); + } + } + fixtures.sort(); + Ok(fixtures) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use std::env; + + fn get_fixtures_dir() -> PathBuf { + let manifest_dir = env::var("CARGO_MANIFEST_DIR").unwrap_or_else(|_| ".".to_string()); + PathBuf::from(manifest_dir).join("tests/fixtures") + } + + #[test] + fn test_load_nested_fixture() { + let loader = FixtureLoader::new(get_fixtures_dir()); + + // Test loading a fixture with the new nested structure + if loader.exists_nested("polkadot", "blocks", "1000000.json") { + let result = loader.load_nested("polkadot", "blocks", "1000000.json"); + assert!(result.is_ok(), "Should be able to load nested fixture"); + } + } + + #[test] + fn test_exists_nested() { + let loader = FixtureLoader::new(get_fixtures_dir()); + + // Test that a known fixture exists (after migration) + // This will pass once migration is complete + let exists = loader.exists_nested("polkadot", "blocks", "1000000.json"); + // Just verify the method works without panicking + let _ = exists; + } + + #[test] + fn test_list_fixtures() { + let loader = FixtureLoader::new(get_fixtures_dir()); + + // Test listing fixtures in a directory + if loader.exists("polkadot/blocks") { + let fixtures = loader.list_fixtures("polkadot", "blocks"); + assert!(fixtures.is_ok()); + } + } } diff --git a/crates/integration_tests/src/lib.rs b/crates/integration_tests/src/lib.rs index 4fba52b13..6001e71d7 100644 --- a/crates/integration_tests/src/lib.rs +++ b/crates/integration_tests/src/lib.rs @@ -4,11 +4,13 @@ pub mod client; pub mod config; pub mod fixtures; +pub mod test_helpers; pub mod utils; pub use client::TestClient; pub use config::{ChainConfig, TestConfig}; pub use fixtures::FixtureLoader; +pub use test_helpers::*; pub use utils::*; /// Test configuration constants diff --git a/crates/integration_tests/src/test_helpers.rs b/crates/integration_tests/src/test_helpers.rs new file mode 100644 index 000000000..fa24bf4c7 --- /dev/null +++ b/crates/integration_tests/src/test_helpers.rs @@ -0,0 +1,317 @@ +// Copyright (C) 2026 Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later + +//! Common test helpers, macros, and assertion utilities. +//! +//! This module provides reusable utilities to reduce boilerplate in integration tests. + +use crate::client::TestClient; +use crate::constants::API_READY_TIMEOUT_SECONDS; +use anyhow::Result; +use serde_json::Value; +use std::env; + +// ============================================================================ +// Test Setup Helpers +// ============================================================================ + +/// Initialize tracing for tests. Safe to call multiple times. +pub fn init_tracing() { + let _ = tracing_subscriber::fmt() + .with_env_filter(tracing_subscriber::EnvFilter::from_default_env()) + .try_init(); +} + +/// Create a test client and wait for the API to be ready. +pub async fn setup_client() -> Result { + let api_url = env::var("API_URL").unwrap_or_else(|_| "http://localhost:8080".to_string()); + let client = TestClient::new(api_url); + client.wait_for_ready(API_READY_TIMEOUT_SECONDS).await?; + Ok(client) +} + +/// Create a test client with a custom API URL. +pub async fn setup_client_with_url(api_url: &str) -> Result { + let client = TestClient::new(api_url.to_string()); + client.wait_for_ready(API_READY_TIMEOUT_SECONDS).await?; + Ok(client) +} + +// ============================================================================ +// Chain Detection Helpers +// ============================================================================ + +/// Check if the connected chain has the Broker pallet (is a coretime chain). +pub async fn is_coretime_chain(client: &TestClient) -> bool { + has_pallet(client, "Broker").await +} + +/// Check if the connected chain has a specific pallet. +pub async fn has_pallet(client: &TestClient, pallet_name: &str) -> bool { + if let Ok((status, json)) = client.get_json("/v1/capabilities").await + && status.is_success() + && let Some(pallets) = json["pallets"].as_array() + { + return pallets.iter().any(|p| p.as_str() == Some(pallet_name)); + } + false +} + +/// Check if the connected chain is a relay chain (has ParaInclusion pallet). +pub async fn is_relay_chain(client: &TestClient) -> bool { + has_pallet(client, "ParaInclusion").await +} + +/// Check if the connected chain is a parachain (not a relay chain). +pub async fn is_parachain(client: &TestClient) -> bool { + !is_relay_chain(client).await +} + +// ============================================================================ +// Response Structure Assertions +// ============================================================================ + +/// Assert that the response has a valid `at` field with hash and height. +pub fn assert_valid_at_field(json: &Value) -> Result<()> { + let at = json + .get("at") + .ok_or_else(|| anyhow::anyhow!("Response should have 'at' field"))?; + + anyhow::ensure!(at.get("hash").is_some(), "'at' should have 'hash' field"); + anyhow::ensure!( + at.get("height").is_some(), + "'at' should have 'height' field" + ); + anyhow::ensure!(at["hash"].is_string(), "'at.hash' should be a string"); + anyhow::ensure!(at["height"].is_string(), "'at.height' should be a string"); + + let hash = at["hash"].as_str().unwrap(); + anyhow::ensure!( + hash.starts_with("0x"), + "'at.hash' should be a hex string starting with 0x" + ); + + Ok(()) +} + +/// Assert that a field exists and is an array. +pub fn assert_array_field<'a>(json: &'a Value, field_name: &str) -> Result<&'a Vec> { + let field = json + .get(field_name) + .ok_or_else(|| anyhow::anyhow!("Response should have '{}' field", field_name))?; + + field + .as_array() + .ok_or_else(|| anyhow::anyhow!("'{}' should be an array", field_name)) +} + +/// Assert that a field exists and is a string. +pub fn assert_string_field<'a>(json: &'a Value, field_name: &str) -> Result<&'a str> { + let field = json + .get(field_name) + .ok_or_else(|| anyhow::anyhow!("Response should have '{}' field", field_name))?; + + field + .as_str() + .ok_or_else(|| anyhow::anyhow!("'{}' should be a string", field_name)) +} + +/// Assert that a field exists and is a number. +pub fn assert_number_field(json: &Value, field_name: &str) -> Result { + let field = json + .get(field_name) + .ok_or_else(|| anyhow::anyhow!("Response should have '{}' field", field_name))?; + + field + .as_f64() + .ok_or_else(|| anyhow::anyhow!("'{}' should be a number", field_name)) +} + +/// Assert that a hex string is valid (starts with 0x). +pub fn assert_hex_string(value: &str, field_name: &str) -> Result<()> { + anyhow::ensure!( + value.starts_with("0x"), + "'{}' should be a hex string starting with 0x, got: {}", + field_name, + value + ); + Ok(()) +} + +// ============================================================================ +// Error Response Assertions +// ============================================================================ + +/// Assert that an endpoint returns a specific HTTP status code. +pub async fn assert_status( + client: &TestClient, + endpoint: &str, + expected_status: u16, +) -> Result<()> { + let response = client.get(endpoint).await?; + anyhow::ensure!( + response.status.as_u16() == expected_status, + "Expected status {} for {}, got {}", + expected_status, + endpoint, + response.status + ); + Ok(()) +} + +/// Assert that an endpoint returns 400 Bad Request. +pub async fn assert_bad_request(client: &TestClient, endpoint: &str) -> Result<()> { + assert_status(client, endpoint, 400).await +} + +/// Assert that an endpoint returns 404 Not Found. +pub async fn assert_not_found(client: &TestClient, endpoint: &str) -> Result<()> { + assert_status(client, endpoint, 404).await +} + +/// Assert that an endpoint returns either 400 or 404. +pub async fn assert_client_error(client: &TestClient, endpoint: &str) -> Result<()> { + let response = client.get(endpoint).await?; + let status = response.status.as_u16(); + anyhow::ensure!( + status == 400 || status == 404, + "Expected 400 or 404 for {}, got {}", + endpoint, + status + ); + Ok(()) +} + +// ============================================================================ +// Test Skip Helpers +// ============================================================================ + +/// Print a skip message and return Ok(()). Use in tests that should be skipped. +pub fn skip_test(reason: &str) -> Result<()> { + println!("Skipping test: {}", reason); + Ok(()) +} + +/// Macro to skip a test if a condition is not met. +#[macro_export] +macro_rules! skip_if { + ($condition:expr, $reason:expr) => { + if $condition { + println!("Skipping test: {}", $reason); + return Ok(()); + } + }; +} + +/// Macro to skip a test if the chain doesn't have a required pallet. +#[macro_export] +macro_rules! require_pallet { + ($client:expr, $pallet:expr) => { + if !$crate::test_helpers::has_pallet($client, $pallet).await { + println!( + "Skipping test: {} pallet not found on connected chain", + $pallet + ); + return Ok(()); + } + }; +} + +/// Macro to skip a test if not connected to a coretime chain. +#[macro_export] +macro_rules! require_coretime_chain { + ($client:expr) => { + if !$crate::test_helpers::is_coretime_chain($client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + }; +} + +/// Macro to skip a test if not connected to a relay chain. +#[macro_export] +macro_rules! require_relay_chain { + ($client:expr) => { + if !$crate::test_helpers::is_relay_chain($client).await { + println!("Skipping test: Not a relay chain (ParaInclusion pallet not found)"); + return Ok(()); + } + }; +} + +// ============================================================================ +// Block Query Helpers +// ============================================================================ + +/// Get the latest block height from an endpoint response. +pub fn get_block_height(json: &Value) -> Result { + let height_str = json["at"]["height"] + .as_str() + .ok_or_else(|| anyhow::anyhow!("Could not get block height from response"))?; + + height_str + .parse() + .map_err(|e| anyhow::anyhow!("Could not parse block height '{}': {}", height_str, e)) +} + +/// Get the block hash from an endpoint response. +pub fn get_block_hash(json: &Value) -> Result<&str> { + json["at"]["hash"] + .as_str() + .ok_or_else(|| anyhow::anyhow!("Could not get block hash from response")) +} + +#[cfg(test)] +mod tests { + use super::*; + use serde_json::json; + + #[test] + fn test_assert_valid_at_field() { + let valid = json!({ + "at": { + "hash": "0x1234567890abcdef", + "height": "1000000" + } + }); + assert!(assert_valid_at_field(&valid).is_ok()); + + let missing_at = json!({}); + assert!(assert_valid_at_field(&missing_at).is_err()); + + let missing_hash = json!({ + "at": { + "height": "1000000" + } + }); + assert!(assert_valid_at_field(&missing_hash).is_err()); + + let invalid_hash = json!({ + "at": { + "hash": "not-hex", + "height": "1000000" + } + }); + assert!(assert_valid_at_field(&invalid_hash).is_err()); + } + + #[test] + fn test_assert_array_field() { + let json = json!({ + "items": [1, 2, 3] + }); + assert!(assert_array_field(&json, "items").is_ok()); + assert!(assert_array_field(&json, "missing").is_err()); + } + + #[test] + fn test_get_block_height() { + let json = json!({ + "at": { + "hash": "0xabc", + "height": "12345" + } + }); + assert_eq!(get_block_height(&json).unwrap(), 12345); + } +} diff --git a/crates/integration_tests/tests/config/test_config.json b/crates/integration_tests/tests/config/test_config.json index c1fa283b0..c482e4c83 100644 --- a/crates/integration_tests/tests/config/test_config.json +++ b/crates/integration_tests/tests/config/test_config.json @@ -253,7 +253,7 @@ "query_params": { "at": "28500000" }, - "fixture_path": "polkadot/runtime_spec_28500000.json", + "fixture_path": "polkadot/runtime/spec_28500000.json", "description": "Test runtime spec at Polkadot block 28,500,000" }, { @@ -263,7 +263,7 @@ "query_params": { "at": "21000000" }, - "fixture_path": "polkadot/runtime_metadata_21000000.json", + "fixture_path": "polkadot/runtime/metadata_21000000.json", "description": "Test runtime metadata at Polkadot block 21,000,000" }, { @@ -273,7 +273,7 @@ "query_params": { "at": "21000000" }, - "fixture_path": "polkadot/runtime_metadata_versions_21000000.json", + "fixture_path": "polkadot/runtime/metadata_versions_21000000.json", "description": "Test runtime metadata versions at Polkadot block 21,000,000" }, { @@ -283,7 +283,7 @@ "query_params": { "at": "21000000" }, - "fixture_path": "polkadot/runtime_metadata_v14_21000000.json", + "fixture_path": "polkadot/runtime/metadata_v14_21000000.json", "description": "Test runtime metadata v14 at Polkadot block 21,000,000" }, { @@ -293,7 +293,7 @@ "query_params": { "at": "21000000" }, - "fixture_path": "polkadot/runtime_metadata_v15_21000000.json", + "fixture_path": "polkadot/runtime/metadata_v15_21000000.json", "description": "Test runtime metadata v15 at Polkadot block 21,000,000" }, { @@ -303,7 +303,7 @@ "query_params": { "at": "21000000" }, - "fixture_path": "polkadot/runtime_code_21000000.json", + "fixture_path": "polkadot/runtime/code_21000000.json", "description": "Test runtime code at Polkadot block 21,000,000" }, { @@ -311,7 +311,7 @@ "block_height": 1000000, "account_id": null, "query_params": {}, - "fixture_path": "polkadot/blocks_1000000.json", + "fixture_path": "polkadot/blocks/1000000.json", "description": "Test block endpoint at Polkadot block 1,000,000" }, { @@ -319,7 +319,7 @@ "block_height": 10000000, "account_id": null, "query_params": {}, - "fixture_path": "polkadot/blocks_10000000.json", + "fixture_path": "polkadot/blocks/10000000.json", "description": "Test block endpoint at Polkadot block 10,000,000" }, { @@ -330,7 +330,7 @@ "extrinsicDocs": "true", "eventDocs": "true" }, - "fixture_path": "polkadot/blocks_10000006.json", + "fixture_path": "polkadot/blocks/10000006.json", "description": "Test block endpoint at Polkadot block 10,000,006" }, { @@ -338,7 +338,7 @@ "block_height": 20000006, "account_id": null, "query_params": {}, - "fixture_path": "polkadot/blocks_20000006.json", + "fixture_path": "polkadot/blocks/20000006.json", "description": "Test block endpoint at Polkadot block 20,000,006" }, { @@ -348,7 +348,7 @@ "query_params": { "decodedXcmMsgs": "true" }, - "fixture_path": "polkadot/blocks_28490503_decode_xcm.json", + "fixture_path": "polkadot/blocks/28490503_decode_xcm.json", "description": "Test block endpoint at Polkadot block 28,490,503 with XCM decoding" }, { @@ -356,7 +356,7 @@ "block_height": 10293194, "account_id": null, "query_params": {}, - "fixture_path": "polkadot/blocks_10293194_para_inclusions.json", + "fixture_path": "polkadot/paras/10293194_inclusions.json", "description": "Test para-inclusions endpoint at Polkadot block 10,293,194" }, { @@ -366,7 +366,7 @@ "query_params": { "paraId": "1000" }, - "fixture_path": "polkadot/blocks_10293194_para_inclusions_para_id_1000.json", + "fixture_path": "polkadot/paras/10293194_inclusions_para_id_1000.json", "description": "Test para-inclusions endpoint with paraId filter at Polkadot block 10,293,194" }, { @@ -376,7 +376,7 @@ "query_params": { "range": "1000000-1000002" }, - "fixture_path": "polkadot/blocks_range_1000000-1000002.json", + "fixture_path": "polkadot/blocks/range_1000000-1000002.json", "description": "Test /blocks endpoint with range 1000000-1000002" }, { @@ -386,7 +386,7 @@ "query_params": { "at": "28500000" }, - "fixture_path": "polkadot/pallets_balances_dispatchables_28500000.json", + "fixture_path": "polkadot/pallets/balances/dispatchables_28500000.json", "description": "Test pallets balances dispatchables at Polkadot block 28,500,000" }, { @@ -397,7 +397,7 @@ "at": "28500000", "metadata": "true" }, - "fixture_path": "polkadot/pallets_balances_dispatchables_transfer_allow_death_28500000.json", + "fixture_path": "polkadot/pallets/balances/dispatchables_transfer_allow_death_28500000.json", "description": "Test pallets balances dispatchables transfer_allow_death at Polkadot block 28,500,000" }, { @@ -407,7 +407,7 @@ "query_params": { "at": "28500000" }, - "fixture_path": "polkadot/pallets_nomination_pools_info_28500000.json", + "fixture_path": "polkadot/pallets/nomination_pools/info_28500000.json", "description": "Test nomination pools info at Polkadot block 28,500,000" }, { @@ -418,7 +418,7 @@ "query_params": { "at": "28500000" }, - "fixture_path": "polkadot/pallets_nomination_pools_1_28500000.json", + "fixture_path": "polkadot/pallets/nomination_pools/1_28500000.json", "description": "Test nomination pool 1 at Polkadot block 28,500,000" }, { @@ -428,7 +428,7 @@ "query_params": { "at": "29679173" }, - "fixture_path": "polkadot/pallets_balances_errors.json", + "fixture_path": "polkadot/pallets/balances/errors.json", "description": "Test pallets balances errors at Polkadot block 29,679,173" }, { @@ -438,7 +438,7 @@ "query_params": { "at": "21000000" }, - "fixture_path": "polkadot/pallets_balances_errors_21000000.json", + "fixture_path": "polkadot/pallets/balances/errors_21000000.json", "description": "Test pallets balances errors at Polkadot block 21,000,000" }, { @@ -449,7 +449,7 @@ "at": "29679173", "onlyIds": "true" }, - "fixture_path": "polkadot/pallets_balances_errors_onlyIds.json", + "fixture_path": "polkadot/pallets/balances/errors_onlyIds.json", "description": "Test pallets balances errors onlyIds at Polkadot block 29,679,173" }, { @@ -459,7 +459,7 @@ "query_params": { "at": "29679173" }, - "fixture_path": "polkadot/pallets_balances_errors_InsufficientBalance.json", + "fixture_path": "polkadot/pallets/balances/errors_InsufficientBalance.json", "description": "Test pallets balances errors InsufficientBalance at Polkadot block 29,679,173" }, { @@ -470,7 +470,7 @@ "at": "21000000", "metadata": "true" }, - "fixture_path": "polkadot/pallets_balances_errors_InsufficientBalance_21000000.json", + "fixture_path": "polkadot/pallets/balances/errors_InsufficientBalance_21000000.json", "description": "Test pallets balances errors InsufficientBalance at Polkadot block 21,000,000" }, { @@ -481,7 +481,7 @@ "at": "29679173", "metadata": "true" }, - "fixture_path": "polkadot/pallets_balances_errors_InsufficientBalance_metadata.json", + "fixture_path": "polkadot/pallets/balances/errors_InsufficientBalance_metadata.json", "description": "Test pallets balances errors InsufficientBalance with metadata at Polkadot block 29,679,173" }, { @@ -491,7 +491,7 @@ "query_params": { "at": "29679173" }, - "fixture_path": "polkadot/pallets_system_errors.json", + "fixture_path": "polkadot/pallets/system/errors.json", "description": "Test pallets system errors at Polkadot block 29,679,173" }, { @@ -501,7 +501,7 @@ "query_params": { "at": "24000000" }, - "fixture_path": "polkadot/pallets_on_going_referenda_24000000.json", + "fixture_path": "polkadot/pallets/referenda/on_going_24000000.json", "description": "Test on-going referenda at Polkadot block 24,000,000" }, { @@ -511,7 +511,7 @@ "query_params": { "at": "24000000" }, - "fixture_path": "polkadot/coretime_overview_24000000.json", + "fixture_path": "polkadot/coretime/overview_24000000.json", "description": "Test coretime overview endpoint at Polkadot block 24,000,000" }, { @@ -521,7 +521,7 @@ "query_params": { "at": "24000000" }, - "fixture_path": "polkadot/coretime_info_24000000.json", + "fixture_path": "polkadot/coretime/info_24000000.json", "description": "Test coretime info endpoint at Polkadot block 24,000,000" }, { @@ -531,7 +531,7 @@ "query_params": { "at": "20000000" }, - "fixture_path": "polkadot/pallets_system_storage_number_20000000.json", + "fixture_path": "polkadot/pallets/system/storage_number_20000000.json", "description": "Test System/Number storage item (Plain u32) at Polkadot block 20,000,000" }, { @@ -541,7 +541,7 @@ "query_params": { "at": "20000000" }, - "fixture_path": "polkadot/pallets_timestamp_storage_now_20000000.json", + "fixture_path": "polkadot/pallets/timestamp/storage_now_20000000.json", "description": "Test Timestamp/Now storage item (Plain u64) at Polkadot block 20,000,000" }, { @@ -551,7 +551,7 @@ "query_params": { "at": "20000000" }, - "fixture_path": "polkadot/pallets_staking_storage_validatorcount_20000000.json", + "fixture_path": "polkadot/pallets/staking/storage_validatorcount_20000000.json", "description": "Test Staking/ValidatorCount storage item (Plain u32) at Polkadot block 20,000,000" }, { @@ -561,7 +561,7 @@ "query_params": { "at": "20000000" }, - "fixture_path": "polkadot/pallets_staking_storage_minimumvalidatorcount_20000000.json", + "fixture_path": "polkadot/pallets/staking/storage_minimumvalidatorcount_20000000.json", "description": "Test Staking/MinimumValidatorCount storage item (Plain u32) at Polkadot block 20,000,000" }, { @@ -572,7 +572,7 @@ "keys[]": "16ZL8yLyXv3V3L3z9ofR1ovFLziyXaN1DPq4yffMAZ9czzBD", "at": "20000000" }, - "fixture_path": "polkadot/pallets_staking_storage_bonded_20000000.json", + "fixture_path": "polkadot/pallets/staking/storage_bonded_20000000.json", "description": "Test Staking/Bonded storage item (Map: AccountId32 -> AccountId32) at Polkadot block 20,000,000" } ], @@ -584,7 +584,7 @@ "query_params": { "at": "24000000" }, - "fixture_path": "kusama/runtime_metadata_24000000.json", + "fixture_path": "kusama/runtime/metadata_24000000.json", "description": "Test runtime metadata at Kusama block 24,000,000" }, { @@ -594,7 +594,7 @@ "query_params": { "at": "24000000" }, - "fixture_path": "kusama/runtime_metadata_versions_24000000.json", + "fixture_path": "kusama/runtime/metadata_versions_24000000.json", "description": "Test runtime metadata versions at Kusama block 24,000,000" }, { @@ -604,7 +604,7 @@ "query_params": { "at": "24000000" }, - "fixture_path": "kusama/runtime_metadata_v14_24000000.json", + "fixture_path": "kusama/runtime/metadata_v14_24000000.json", "description": "Test runtime metadata v14 at Kusama block 24,000,000" }, { @@ -614,7 +614,7 @@ "query_params": { "at": "24000000" }, - "fixture_path": "kusama/runtime_metadata_v15_24000000.json", + "fixture_path": "kusama/runtime/metadata_v15_24000000.json", "description": "Test runtime metadata v15 at Kusama block 24,000,000" }, { @@ -624,7 +624,7 @@ "query_params": { "at": "5000000" }, - "fixture_path": "kusama/runtime_spec_5000000.json", + "fixture_path": "kusama/runtime/spec_5000000.json", "description": "Test runtime spec at Kusama block 5,000,000" }, { @@ -634,7 +634,7 @@ "query_params": { "at": "5000000" }, - "fixture_path": "kusama/runtime_code_5000000.json", + "fixture_path": "kusama/runtime/code_5000000.json", "description": "Test runtime code at Kusama block 5,000,000" }, { @@ -642,7 +642,7 @@ "block_height": 5000000, "account_id": null, "query_params": {}, - "fixture_path": "kusama/blocks_5000000.json", + "fixture_path": "kusama/blocks/5000000.json", "description": "Test block endpoint at Kusama block 5,000,000" }, { @@ -652,7 +652,7 @@ "query_params": { "at": "25000000" }, - "fixture_path": "kusama/pallets_balances_dispatchables_25000000.json", + "fixture_path": "kusama/pallets/balances/dispatchables_25000000.json", "description": "Test pallets balances dispatchables at Kusama block 25,000,000" }, { @@ -663,7 +663,7 @@ "at": "25000000", "metadata": "true" }, - "fixture_path": "kusama/pallets_balances_dispatchables_transfer_allow_death_25000000.json", + "fixture_path": "kusama/pallets/balances/dispatchables_transfer_allow_death_25000000.json", "description": "Test pallets balances dispatchables transfer_allow_death at Kusama block 25,000,000" }, { @@ -673,7 +673,7 @@ "query_params": { "at": "24000000" }, - "fixture_path": "kusama/pallets_nomination_pools_info_24000000.json", + "fixture_path": "kusama/pallets/nomination_pools/info_24000000.json", "description": "Test nomination pools info at Kusama block 24,000,000" }, { @@ -684,7 +684,7 @@ "query_params": { "at": "24000000" }, - "fixture_path": "kusama/pallets_nomination_pools_1_24000000.json", + "fixture_path": "kusama/pallets/nomination_pools/1_24000000.json", "description": "Test nomination pool 1 at Kusama block 24,000,000" }, { @@ -694,7 +694,7 @@ "query_params": { "at": "32141942" }, - "fixture_path": "kusama/pallets_balances_errors.json", + "fixture_path": "kusama/pallets/balances/errors.json", "description": "Test pallets balances errors at Kusama block 32,141,942" }, { @@ -704,7 +704,7 @@ "query_params": { "at": "24000000" }, - "fixture_path": "kusama/pallets_balances_errors_24000000.json", + "fixture_path": "kusama/pallets/balances/errors_24000000.json", "description": "Test pallets balances errors at Kusama block 24,000,000" }, { @@ -715,7 +715,7 @@ "at": "32141942", "onlyIds": "true" }, - "fixture_path": "kusama/pallets_balances_errors_onlyIds.json", + "fixture_path": "kusama/pallets/balances/errors_onlyIds.json", "description": "Test pallets balances errors onlyIds at Kusama block 32,141,942" }, { @@ -725,7 +725,7 @@ "query_params": { "at": "32141942" }, - "fixture_path": "kusama/pallets_balances_errors_InsufficientBalance.json", + "fixture_path": "kusama/pallets/balances/errors_InsufficientBalance.json", "description": "Test pallets balances errors InsufficientBalance at Kusama block 32,141,942" }, { @@ -736,7 +736,7 @@ "at": "32141938", "metadata": "true" }, - "fixture_path": "kusama/pallets_balances_errors_InsufficientBalance_metadata.json", + "fixture_path": "kusama/pallets/balances/errors_InsufficientBalance_metadata.json", "description": "Test pallets balances errors InsufficientBalance with metadata at Kusama block 32,141,938" }, { @@ -746,7 +746,7 @@ "query_params": { "at": "24000000" }, - "fixture_path": "kusama/pallets_balances_errors_InsufficientBalance_24000000.json", + "fixture_path": "kusama/pallets/balances/errors_InsufficientBalance_24000000.json", "description": "Test pallets balances errors InsufficientBalance at Kusama block 24,000,000" }, { @@ -756,7 +756,7 @@ "query_params": { "at": "32141940" }, - "fixture_path": "kusama/pallets_system_errors.json", + "fixture_path": "kusama/pallets/system/errors.json", "description": "Test pallets system errors at Kusama block 32,141,940" }, { @@ -766,7 +766,7 @@ "query_params": { "at": "25000000" }, - "fixture_path": "kusama/pallets_on_going_referenda_25000000.json", + "fixture_path": "kusama/pallets/referenda/on_going_25000000.json", "description": "Test on-going referenda at Kusama block 25,000,000" }, { @@ -776,7 +776,7 @@ "query_params": { "at": "29000000" }, - "fixture_path": "kusama/coretime_overview_29000000.json", + "fixture_path": "kusama/coretime/overview_29000000.json", "description": "Test coretime overview endpoint at Kusama block 29,000,000" }, { @@ -786,7 +786,7 @@ "query_params": { "at": "29000000" }, - "fixture_path": "kusama/coretime_info_29000000.json", + "fixture_path": "kusama/coretime/info_29000000.json", "description": "Test coretime info endpoint at Kusama block 29,000,000" }, { @@ -796,7 +796,7 @@ "query_params": { "at": "25000000" }, - "fixture_path": "kusama/pallets_system_storage_number_25000000.json", + "fixture_path": "kusama/pallets/system/storage_number_25000000.json", "description": "Test System/Number storage item (Plain u32) at Kusama block 25,000,000" }, { @@ -806,7 +806,7 @@ "query_params": { "at": "25000000" }, - "fixture_path": "kusama/pallets_timestamp_storage_now_25000000.json", + "fixture_path": "kusama/pallets/timestamp/storage_now_25000000.json", "description": "Test Timestamp/Now storage item (Plain u64) at Kusama block 25,000,000" }, { @@ -816,7 +816,7 @@ "query_params": { "at": "25000000" }, - "fixture_path": "kusama/pallets_staking_storage_validatorcount_25000000.json", + "fixture_path": "kusama/pallets/staking/storage_validatorcount_25000000.json", "description": "Test Staking/ValidatorCount storage item (Plain u32) at Kusama block 25,000,000" }, { @@ -827,7 +827,7 @@ "keys[]": "CaKh7HmPMXxv22GnLgjEZxWHBUu7y7Twf2k8mP3mxpLYTH4", "at": "25000000" }, - "fixture_path": "kusama/pallets_staking_storage_bonded_25000000.json", + "fixture_path": "kusama/pallets/staking/storage_bonded_25000000.json", "description": "Test Staking/Bonded storage item (Map: AccountId32 -> AccountId32) at Kusama block 25,000,000" } ], @@ -839,7 +839,7 @@ "query_params": { "at": "10260000" }, - "fixture_path": "asset-hub-polkadot/runtime_metadata_10260000.json", + "fixture_path": "asset-hub-polkadot/runtime/metadata_10260000.json", "description": "Test runtime metadata at Asset Hub Polkadot block 10,260,000" }, { @@ -849,7 +849,7 @@ "query_params": { "at": "10260000" }, - "fixture_path": "asset-hub-polkadot/runtime_metadata_versions_10260000.json", + "fixture_path": "asset-hub-polkadot/runtime/metadata_versions_10260000.json", "description": "Test runtime metadata versions at Asset Hub Polkadot block 10,260,000" }, { @@ -859,7 +859,7 @@ "query_params": { "at": "10260000" }, - "fixture_path": "asset-hub-polkadot/runtime_metadata_v14_10260000.json", + "fixture_path": "asset-hub-polkadot/runtime/metadata_v14_10260000.json", "description": "Test runtime metadata v14 at Asset Hub Polkadot block 10,260,000" }, { @@ -869,7 +869,7 @@ "query_params": { "at": "10260000" }, - "fixture_path": "asset-hub-polkadot/runtime_metadata_v15_10260000.json", + "fixture_path": "asset-hub-polkadot/runtime/metadata_v15_10260000.json", "description": "Test runtime metadata v15 at Asset Hub Polkadot block 10,260,000" }, { @@ -879,7 +879,7 @@ "query_params": { "at": "10260000" }, - "fixture_path": "asset-hub-polkadot/runtime_spec_10260000.json", + "fixture_path": "asset-hub-polkadot/runtime/spec_10260000.json", "description": "Test runtime spec at Asset Hub Polkadot block 10,260,000" }, { @@ -889,7 +889,7 @@ "query_params": { "at": "10260000" }, - "fixture_path": "asset-hub-polkadot/runtime_code_10260000.json", + "fixture_path": "asset-hub-polkadot/runtime/code_10260000.json", "description": "Test runtime code at Asset Hub Polkadot block 10,260,000" }, { @@ -897,7 +897,7 @@ "block_height": 10250000, "account_id": null, "query_params": {}, - "fixture_path": "asset-hub-polkadot/blocks_10250000_pre_migration.json", + "fixture_path": "asset-hub-polkadot/blocks/10250000_pre_migration.json", "description": "Test block endpoint at Asset Hub Polkadot block 10,250,000 (pre-migration, Statemint era, before migration at 10,254,470)" }, { @@ -905,7 +905,7 @@ "block_height": 10260000, "account_id": null, "query_params": {}, - "fixture_path": "asset-hub-polkadot/blocks_10260000_post_migration.json", + "fixture_path": "asset-hub-polkadot/blocks/10260000_post_migration.json", "description": "Test block endpoint at Asset Hub Polkadot block 10,260,000 (post-migration, Asset Hub era, after migration ended at 10,259,208)" }, { @@ -916,7 +916,7 @@ "query_params": { "at": "10260000" }, - "fixture_path": "asset-hub-polkadot/pallets_assets_1984_asset_info_10260000.json", + "fixture_path": "asset-hub-polkadot/pallets/assets/1984_asset_info_10260000.json", "description": "Test pallets assets asset-info for USDT (asset 1984) at Asset Hub Polkadot block 10,260,000" }, { @@ -926,7 +926,7 @@ "query_params": { "at": "10260000" }, - "fixture_path": "asset-hub-polkadot/pallets_asset_conversion_next_available_id_10260000.json", + "fixture_path": "asset-hub-polkadot/pallets/asset_conversion/next_available_id_10260000.json", "description": "Test pallets asset-conversion next-available-id at Asset Hub Polkadot block 10,260,000" }, { @@ -936,15 +936,17 @@ "query_params": { "at": "10260000" }, - "fixture_path": "asset-hub-polkadot/pallets_asset_conversion_liquidity_pools_10260000.json", + "fixture_path": "asset-hub-polkadot/pallets/asset_conversion/liquidity_pools_10260000.json", "description": "Test pallets asset-conversion liquidity-pools at Asset Hub Polkadot block 10,260,000" }, { "endpoint": "/v1/pallets/foreign-assets", "block_height": null, "account_id": null, - "query_params": { "at": "10260000" }, - "fixture_path": "asset-hub-polkadot/pallets_foreign_assets_10260000.json", + "query_params": { + "at": "10260000" + }, + "fixture_path": "asset-hub-polkadot/pallets/foreign_assets/10260000.json", "description": "Test pallets foreign-assets endpoint at Asset Hub Polkadot block 10,260,000" }, { @@ -952,7 +954,7 @@ "block_height": 11308795, "account_id": null, "query_params": {}, - "fixture_path": "asset-hub-polkadot/blocks_11308795.json", + "fixture_path": "asset-hub-polkadot/blocks/11308795.json", "description": "Test block endpoint at Asset Hub Polkadot block 11,308,795, for staking event test" }, { @@ -960,7 +962,7 @@ "block_height": 1276963, "account_id": null, "query_params": {}, - "fixture_path": "asset-hub-polkadot/blocks_1276963_extrinsics_raw.json", + "fixture_path": "asset-hub-polkadot/blocks/1276963_extrinsics_raw.json", "description": "Test extrinsics-raw endpoint at Asset Hub Polkadot block 1,276,963" }, { @@ -969,7 +971,7 @@ "account_id": null, "extrinsic_index": 0, "query_params": {}, - "fixture_path": "asset-hub-polkadot/extrinsic_1276963_0.json", + "fixture_path": "asset-hub-polkadot/blocks/extrinsic_1276963_0.json", "description": "Test extrinsic endpoint at Asset Hub Polkadot block 1,276,963, extrinsic index 0" }, { @@ -981,7 +983,7 @@ "eventDocs": "true", "extrinsicDocs": "true" }, - "fixture_path": "asset-hub-polkadot/extrinsic_11308795_2_with_docs.json", + "fixture_path": "asset-hub-polkadot/blocks/extrinsic_11308795_2_with_docs.json", "description": "Test extrinsic endpoint at Asset Hub Polkadot block 11,308,795, extrinsic index 2, with eventDocs and extrinsicDocs enabled" }, { @@ -989,7 +991,7 @@ "block_height": 1276963, "account_id": null, "query_params": {}, - "fixture_path": "asset-hub-polkadot/blocks_header_1276963.json", + "fixture_path": "asset-hub-polkadot/blocks/header_1276963.json", "description": "Test block header endpoint at Asset Hub Polkadot block 1,276,963" }, { @@ -997,7 +999,7 @@ "block_height": 10293194, "account_id": null, "query_params": {}, - "fixture_path": "asset-hub-polkadot/blocks_10293194_rc_extrinsics_raw.json", + "fixture_path": "asset-hub-polkadot/blocks/10293194_rc_extrinsics_raw.json", "description": "Test RC extrinsics-raw endpoint at Polkadot Relay Chain block 10,293,194" }, { @@ -1010,7 +1012,7 @@ "extrinsicDocs": "false", "noFees": "true" }, - "fixture_path": "asset-hub-polkadot/rc_blocks_10293194-10293197_no_fees.json", + "fixture_path": "asset-hub-polkadot/rc_blocks/10293194-10293197_no_fees.json", "description": "Test rc/blocks endpoint with noFees=true for Polkadot relay chain blocks 10,293,194-10,293,197" }, { @@ -1023,7 +1025,7 @@ "extrinsicDocs": "true", "noFees": "false" }, - "fixture_path": "asset-hub-polkadot/rc_blocks_10293194-10293197_with_docs.json", + "fixture_path": "asset-hub-polkadot/rc_blocks/10293194-10293197_with_docs.json", "description": "Test rc/blocks endpoint with eventDocs and extrinsicDocs for Polkadot relay chain blocks 10,293,194-10,293,197" }, { @@ -1036,7 +1038,7 @@ "extrinsicDocs": "false", "noFees": "true" }, - "fixture_path": "asset-hub-polkadot/rc_blocks_24500000-24500010_no_fees.json", + "fixture_path": "asset-hub-polkadot/rc_blocks/24500000-24500010_no_fees.json", "description": "Test rc/blocks endpoint with noFees=true for recent Polkadot relay chain blocks 24,500,000-24,500,010" }, { @@ -1049,7 +1051,7 @@ "extrinsicDocs": "true", "noFees": "false" }, - "fixture_path": "asset-hub-polkadot/rc_blocks_24500000-24500010_with_docs.json", + "fixture_path": "asset-hub-polkadot/rc_blocks/24500000-24500010_with_docs.json", "description": "Test rc/blocks endpoint with fees (fromEvent) for recent Polkadot relay chain blocks 24,500,000-24,500,010" }, { @@ -1060,7 +1062,7 @@ "range": "10293194-10293197", "useRcBlock": "true" }, - "fixture_path": "asset-hub-polkadot/blocks_range_use_rc_block_10293194-10293197.json", + "fixture_path": "asset-hub-polkadot/blocks/range_use_rc_block_10293194-10293197.json", "description": "Test /blocks endpoint with range 10293194-10293197 and useRcBlock=true" }, { @@ -1068,7 +1070,7 @@ "block_height": 29698001, "account_id": null, "query_params": {}, - "fixture_path": "asset-hub-polkadot/rc_blocks_29698001.json", + "fixture_path": "asset-hub-polkadot/rc_blocks/29698001.json", "description": "Test /rc/blocks/{blockId} endpoint at Polkadot Relay Chain block 29,698,001" }, { @@ -1079,7 +1081,7 @@ "eventDocs": "true", "extrinsicDocs": "true" }, - "fixture_path": "asset-hub-polkadot/rc_blocks_29698001_eventDocs_extrinsicDocs.json", + "fixture_path": "asset-hub-polkadot/rc_blocks/29698001_eventDocs_extrinsicDocs.json", "description": "Test /rc/blocks/{blockId} endpoint with eventDocs and extrinsicDocs at Polkadot Relay Chain block 29,698,001" }, { @@ -1089,7 +1091,7 @@ "query_params": { "noFees": "true" }, - "fixture_path": "asset-hub-polkadot/rc_blocks_29698001_noFees.json", + "fixture_path": "asset-hub-polkadot/rc_blocks/29698001_noFees.json", "description": "Test /rc/blocks/{blockId} endpoint with noFees=true at Polkadot Relay Chain block 29,698,001" }, { @@ -1097,7 +1099,7 @@ "block_height": 10293194, "account_id": null, "query_params": {}, - "fixture_path": "asset-hub-polkadot/rc_blocks_10293194_para_inclusions.json", + "fixture_path": "asset-hub-polkadot/rc_blocks/10293194_para_inclusions.json", "description": "Test RC para-inclusions endpoint at Polkadot relay chain block 10,293,194" }, { @@ -1107,7 +1109,7 @@ "query_params": { "paraId": "1000" }, - "fixture_path": "asset-hub-polkadot/rc_blocks_10293194_para_inclusions_para_id_1000.json", + "fixture_path": "asset-hub-polkadot/rc_blocks/10293194_para_inclusions_para_id_1000.json", "description": "Test RC para-inclusions endpoint with paraId filter at Polkadot relay chain block 10,293,194" }, { @@ -1115,7 +1117,7 @@ "block_height": 29698001, "account_id": null, "query_params": {}, - "fixture_path": "asset-hub-polkadot/rc_blocks_29698001_header.json", + "fixture_path": "asset-hub-polkadot/rc_blocks/29698001_header.json", "description": "Test RC block header endpoint at Polkadot Relay Chain block 29,698,001" }, { @@ -1125,7 +1127,7 @@ "query_params": { "at": "10260000" }, - "fixture_path": "asset-hub-polkadot/pallets_balances_dispatchables_10260000.json", + "fixture_path": "asset-hub-polkadot/pallets/balances/dispatchables_10260000.json", "description": "Test pallets balances dispatchables at Asset Hub Polkadot block 10,260,000" }, { @@ -1136,7 +1138,7 @@ "at": "10260000", "metadata": "true" }, - "fixture_path": "asset-hub-polkadot/pallets_balances_dispatchables_transfer_allow_death_10260000.json", + "fixture_path": "asset-hub-polkadot/pallets/balances/dispatchables_transfer_allow_death_10260000.json", "description": "Test pallets balances dispatchables transfer_allow_death at Asset Hub Polkadot block 10,260,000" }, { @@ -1144,8 +1146,10 @@ "block_height": null, "account_id": null, "asset_id": "0", - "query_params": { "at": "10260000" }, - "fixture_path": "asset-hub-polkadot/pallets_pool_assets_0_asset_info_10260000.json", + "query_params": { + "at": "10260000" + }, + "fixture_path": "asset-hub-polkadot/pallets/pool_assets/0_asset_info_10260000.json", "description": "Test pallets pool-assets asset-info for pool asset 0 (LP token) at Asset Hub Polkadot block 10,260,000" }, { @@ -1154,7 +1158,7 @@ "account_id": null, "extrinsic_index": 1, "query_params": {}, - "fixture_path": "asset-hub-polkadot/rc_blocks_29698001_extrinsic_1.json", + "fixture_path": "asset-hub-polkadot/rc_blocks/29698001_extrinsic_1.json", "description": "Test RC extrinsic endpoint at Polkadot Relay Chain block 29,698,001, extrinsic index 1" }, { @@ -1166,7 +1170,7 @@ "eventDocs": "true", "extrinsicDocs": "true" }, - "fixture_path": "asset-hub-polkadot/rc_blocks_29698001_extrinsic_1_eventDocs_extrinsicDocs.json", + "fixture_path": "asset-hub-polkadot/rc_blocks/29698001_extrinsic_1_eventDocs_extrinsicDocs.json", "description": "Test RC extrinsic endpoint with eventDocs and extrinsicDocs at Polkadot Relay Chain block 29,698,001, extrinsic index 1" }, { @@ -1177,7 +1181,7 @@ "query_params": { "noFees": "true" }, - "fixture_path": "asset-hub-polkadot/rc_blocks_29698001_extrinsic_1_noFees.json", + "fixture_path": "asset-hub-polkadot/rc_blocks/29698001_extrinsic_1_noFees.json", "description": "Test RC extrinsic endpoint with noFees=true at Polkadot Relay Chain block 29,698,001, extrinsic index 1" }, { @@ -1187,7 +1191,7 @@ "query_params": { "at": "11741792" }, - "fixture_path": "asset-hub-polkadot/pallets_balances_errors.json", + "fixture_path": "asset-hub-polkadot/pallets/balances/errors.json", "description": "Test pallets balances errors at Asset Hub Polkadot block 11,741,792" }, { @@ -1197,7 +1201,7 @@ "query_params": { "at": "10260000" }, - "fixture_path": "asset-hub-polkadot/pallets_balances_errors_10260000.json", + "fixture_path": "asset-hub-polkadot/pallets/balances/errors_10260000.json", "description": "Test pallets balances errors at Asset Hub Polkadot block 10,260,000" }, { @@ -1208,7 +1212,7 @@ "at": "11741792", "onlyIds": "true" }, - "fixture_path": "asset-hub-polkadot/pallets_balances_errors_onlyIds.json", + "fixture_path": "asset-hub-polkadot/pallets/balances/errors_onlyIds.json", "description": "Test pallets balances errors onlyIds at Asset Hub Polkadot block 11,741,792" }, { @@ -1218,7 +1222,7 @@ "query_params": { "at": "11741792" }, - "fixture_path": "asset-hub-polkadot/pallets_balances_errors_InsufficientBalance.json", + "fixture_path": "asset-hub-polkadot/pallets/balances/errors_InsufficientBalance.json", "description": "Test pallets balances errors InsufficientBalance at Asset Hub Polkadot block 11,741,792" }, { @@ -1229,7 +1233,7 @@ "at": "11741792", "metadata": "true" }, - "fixture_path": "asset-hub-polkadot/pallets_balances_errors_InsufficientBalance_metadata.json", + "fixture_path": "asset-hub-polkadot/pallets/balances/errors_InsufficientBalance_metadata.json", "description": "Test pallets balances errors InsufficientBalance with metadata at Asset Hub Polkadot block 11,741,792" }, { @@ -1239,7 +1243,7 @@ "query_params": { "at": "10260000" }, - "fixture_path": "asset-hub-polkadot/pallets_balances_errors_InsufficientBalance_10260000.json", + "fixture_path": "asset-hub-polkadot/pallets/balances/errors_InsufficientBalance_10260000.json", "description": "Test pallets balances errors InsufficientBalance at Asset Hub Polkadot block 10,260,000" }, { @@ -1249,7 +1253,7 @@ "query_params": { "at": "11741793" }, - "fixture_path": "asset-hub-polkadot/pallets_system_errors.json", + "fixture_path": "asset-hub-polkadot/pallets/system/errors.json", "description": "Test pallets system errors at Asset Hub Polkadot block 11,741,793" }, { @@ -1259,7 +1263,7 @@ "query_params": { "useRcBlock": "true" }, - "fixture_path": "asset-hub-polkadot/use_rc_block_10554957.json", + "fixture_path": "asset-hub-polkadot/use_rc_block/10554957.json", "description": "Test /blocks/{blockId} endpoint with useRcBlock=true at Polkadot Relay Chain block 10,554,957" }, { @@ -1269,7 +1273,7 @@ "query_params": { "useRcBlock": "true" }, - "fixture_path": "asset-hub-polkadot/use_rc_block_header_10293194.json", + "fixture_path": "asset-hub-polkadot/use_rc_block/header_10293194.json", "description": "Test /blocks/{blockId}/header endpoint with useRcBlock=true at Polkadot Relay Chain block 10,293,194" }, { @@ -1279,7 +1283,7 @@ "query_params": { "useRcBlock": "true" }, - "fixture_path": "asset-hub-polkadot/use_rc_block_extrinsics_raw_10554957.json", + "fixture_path": "asset-hub-polkadot/use_rc_block/extrinsics_raw_10554957.json", "description": "Test /blocks/{blockId}/extrinsics-raw endpoint with useRcBlock=true at Polkadot Relay Chain block 10,554,957" }, { @@ -1290,7 +1294,7 @@ "query_params": { "useRcBlock": "true" }, - "fixture_path": "asset-hub-polkadot/use_rc_block_extrinsic_10554957_0.json", + "fixture_path": "asset-hub-polkadot/use_rc_block/extrinsic_10554957_0.json", "description": "Test /blocks/{blockId}/extrinsics/{extrinsicIndex} endpoint with useRcBlock=true at Polkadot Relay Chain block 10,554,957, extrinsic index 0" }, { @@ -1301,7 +1305,7 @@ "at": "10293194", "useRcBlock": "true" }, - "fixture_path": "asset-hub-polkadot/pallets_balances_events_use_rc_block_10293194.json", + "fixture_path": "asset-hub-polkadot/pallets/balances/events_use_rc_block_10293194.json", "description": "Test pallets balances events with useRcBlock=true at RC block 10,293,194" }, { @@ -1312,7 +1316,7 @@ "at": "10293194", "useRcBlock": "true" }, - "fixture_path": "asset-hub-polkadot/pallets_balances_events_Transfer_use_rc_block_10293194.json", + "fixture_path": "asset-hub-polkadot/pallets/balances/events_Transfer_use_rc_block_10293194.json", "description": "Test pallets balances events Transfer with useRcBlock=true at RC block 10,293,194" }, { @@ -1323,7 +1327,7 @@ "at": "29698001", "useRcBlock": "true" }, - "fixture_path": "asset-hub-polkadot/pallets_on_going_referenda_use_rc_block_29698001.json", + "fixture_path": "asset-hub-polkadot/pallets/referenda/on_going_use_rc_block_29698001.json", "description": "Test pallets on-going-referenda with useRcBlock=true at RC block 29,698,001" }, { @@ -1334,7 +1338,7 @@ "at": "29698001", "useRcBlock": "true" }, - "fixture_path": "asset-hub-polkadot/pallets_nomination_pools_info_use_rc_block_29698001.json", + "fixture_path": "asset-hub-polkadot/pallets/nomination_pools/info_use_rc_block_29698001.json", "description": "Test pallets nomination-pools info with useRcBlock=true at RC block 29,698,001" }, { @@ -1346,7 +1350,7 @@ "at": "29698001", "useRcBlock": "true" }, - "fixture_path": "asset-hub-polkadot/pallets_nomination_pools_1_use_rc_block_29698001.json", + "fixture_path": "asset-hub-polkadot/pallets/nomination_pools/1_use_rc_block_29698001.json", "description": "Test pallets nomination-pools pool 1 with useRcBlock=true at RC block 29,698,001" }, { @@ -1358,7 +1362,7 @@ "at": "29698001", "useRcBlock": "true" }, - "fixture_path": "asset-hub-polkadot/pallets_assets_1984_asset_info_use_rc_block_29698001.json", + "fixture_path": "asset-hub-polkadot/pallets/assets/1984_asset_info_use_rc_block_29698001.json", "description": "Test pallets assets asset-info for USDT (asset 1984) with useRcBlock=true at RC block 29,698,001" }, { @@ -1369,7 +1373,7 @@ "at": "29698001", "useRcBlock": "true" }, - "fixture_path": "asset-hub-polkadot/pallets_staking_progress_use_rc_block_29698001.json", + "fixture_path": "asset-hub-polkadot/pallets/staking/progress_use_rc_block_29698001.json", "description": "Test pallets staking progress with useRcBlock=true at RC block 29,698,001" }, { @@ -1380,7 +1384,7 @@ "useRcBlock": "true", "format": "object" }, - "fixture_path": "asset-hub-polkadot/use_rc_block_format_rc_10554957.json", + "fixture_path": "asset-hub-polkadot/use_rc_block/format_rc_10554957.json", "description": "Test /blocks/{blockId} with useRcBlock=true&format=object at RC block 10,554,957" }, { @@ -1391,7 +1395,7 @@ "useRcBlock": "true", "format": "object" }, - "fixture_path": "asset-hub-polkadot/use_rc_block_header_format_rc_10293194.json", + "fixture_path": "asset-hub-polkadot/use_rc_block/header_format_rc_10293194.json", "description": "Test /blocks/{blockId}/header with useRcBlock=true&format=object at RC block 10,293,194" }, { @@ -1402,7 +1406,7 @@ "useRcBlock": "true", "format": "object" }, - "fixture_path": "asset-hub-polkadot/use_rc_block_extrinsics_raw_format_rc_10554957.json", + "fixture_path": "asset-hub-polkadot/use_rc_block/extrinsics_raw_format_rc_10554957.json", "description": "Test /blocks/{blockId}/extrinsics-raw with useRcBlock=true&format=object at RC block 10,554,957" }, { @@ -1414,7 +1418,7 @@ "useRcBlock": "true", "format": "object" }, - "fixture_path": "asset-hub-polkadot/use_rc_block_extrinsic_format_rc_10554957_0.json", + "fixture_path": "asset-hub-polkadot/use_rc_block/extrinsic_format_rc_10554957_0.json", "description": "Test /blocks/{blockId}/extrinsics/{extrinsicIndex} with useRcBlock=true&format=object at RC block 10,554,957, extrinsic 0" }, { @@ -1426,7 +1430,7 @@ "useRcBlock": "true", "format": "object" }, - "fixture_path": "asset-hub-polkadot/pallets_balances_events_use_rc_block_format_rc_10293194.json", + "fixture_path": "asset-hub-polkadot/pallets/balances/events_use_rc_block_format_rc_10293194.json", "description": "Test pallets balances events with useRcBlock=true&format=object at RC block 10,293,194" }, { @@ -1438,7 +1442,7 @@ "useRcBlock": "true", "format": "object" }, - "fixture_path": "asset-hub-polkadot/pallets_balances_events_Transfer_use_rc_block_format_rc_10293194.json", + "fixture_path": "asset-hub-polkadot/pallets/balances/events_Transfer_use_rc_block_format_rc_10293194.json", "description": "Test pallets balances events Transfer with useRcBlock=true&format=object at RC block 10,293,194" }, { @@ -1450,7 +1454,7 @@ "useRcBlock": "true", "format": "object" }, - "fixture_path": "asset-hub-polkadot/pallets_on_going_referenda_use_rc_block_format_rc_29698001.json", + "fixture_path": "asset-hub-polkadot/pallets/referenda/on_going_use_rc_block_format_rc_29698001.json", "description": "Test pallets on-going-referenda with useRcBlock=true&format=object at RC block 29,698,001" }, { @@ -1462,7 +1466,7 @@ "useRcBlock": "true", "format": "object" }, - "fixture_path": "asset-hub-polkadot/pallets_nomination_pools_info_use_rc_block_format_rc_29698001.json", + "fixture_path": "asset-hub-polkadot/pallets/nomination_pools/info_use_rc_block_format_rc_29698001.json", "description": "Test pallets nomination-pools info with useRcBlock=true&format=object at RC block 29,698,001" }, { @@ -1475,7 +1479,7 @@ "useRcBlock": "true", "format": "object" }, - "fixture_path": "asset-hub-polkadot/pallets_nomination_pools_1_use_rc_block_format_rc_29698001.json", + "fixture_path": "asset-hub-polkadot/pallets/nomination_pools/1_use_rc_block_format_rc_29698001.json", "description": "Test pallets nomination-pools pool 1 with useRcBlock=true&format=object at RC block 29,698,001" }, { @@ -1487,7 +1491,7 @@ "useRcBlock": "true", "format": "object" }, - "fixture_path": "asset-hub-polkadot/pallets_balances_consts_use_rc_block_format_rc_10293194.json", + "fixture_path": "asset-hub-polkadot/pallets/balances/consts_use_rc_block_format_rc_10293194.json", "description": "Test pallets balances consts with useRcBlock=true&format=object at RC block 10,293,194" }, { @@ -1499,7 +1503,7 @@ "useRcBlock": "true", "format": "object" }, - "fixture_path": "asset-hub-polkadot/pallets_balances_consts_ExistentialDeposit_use_rc_block_format_rc_10293194.json", + "fixture_path": "asset-hub-polkadot/pallets/balances/consts_ExistentialDeposit_use_rc_block_format_rc_10293194.json", "description": "Test pallets balances consts ExistentialDeposit with useRcBlock=true&format=object at RC block 10,293,194" }, { @@ -1511,7 +1515,7 @@ "useRcBlock": "true", "format": "object" }, - "fixture_path": "asset-hub-polkadot/pallets_balances_dispatchables_use_rc_block_format_rc_10293194.json", + "fixture_path": "asset-hub-polkadot/pallets/balances/dispatchables_use_rc_block_format_rc_10293194.json", "description": "Test pallets balances dispatchables with useRcBlock=true&format=object at RC block 10,293,194" }, { @@ -1523,7 +1527,7 @@ "useRcBlock": "true", "format": "object" }, - "fixture_path": "asset-hub-polkadot/pallets_balances_dispatchables_transfer_allow_death_use_rc_block_format_rc_10293194.json", + "fixture_path": "asset-hub-polkadot/pallets/balances/dispatchables_transfer_allow_death_use_rc_block_format_rc_10293194.json", "description": "Test pallets balances dispatchables transfer_allow_death with useRcBlock=true&format=object at RC block 10,293,194" }, { @@ -1535,7 +1539,7 @@ "useRcBlock": "true", "format": "object" }, - "fixture_path": "asset-hub-polkadot/pallets_staking_validators_use_rc_block_format_rc_29698001.json", + "fixture_path": "asset-hub-polkadot/pallets/staking/validators_use_rc_block_format_rc_29698001.json", "description": "Test pallets staking/validators with useRcBlock=true&format=object at RC block 29,698,001" }, { @@ -1543,7 +1547,7 @@ "block_height": 12273189, "account_id": null, "query_params": {}, - "fixture_path": "asset-hub-polkadot/blocks_12273189.json", + "fixture_path": "asset-hub-polkadot/blocks/12273189.json", "description": "Test block endpoint at Asset Hub Polkadot block 12,273,189 (ChargeAssetTxPayment signed extension)" }, { @@ -1553,7 +1557,7 @@ "query_params": { "at": "10260000" }, - "fixture_path": "asset-hub-polkadot/accounts_balance_info_alice_10260000.json", + "fixture_path": "asset-hub-polkadot/accounts/balance_info_alice_10260000.json", "description": "Test accounts balance-info for Alice at Asset Hub Polkadot block 10,260,000" }, { @@ -1563,7 +1567,7 @@ "query_params": { "at": "10260000" }, - "fixture_path": "asset-hub-polkadot/accounts_foreign_asset_balances_alice_10260000.json", + "fixture_path": "asset-hub-polkadot/accounts/foreign_asset_balances_alice_10260000.json", "description": "Test accounts foreign-asset-balances for Alice at Asset Hub Polkadot block 10,260,000" }, { @@ -1573,7 +1577,7 @@ "query_params": { "at": "10260000" }, - "fixture_path": "asset-hub-polkadot/accounts_vesting_info_alice_10260000.json", + "fixture_path": "asset-hub-polkadot/accounts/vesting_info_alice_10260000.json", "description": "Test accounts vesting-info for Alice at Asset Hub Polkadot block 10,260,000" }, { @@ -1583,7 +1587,7 @@ "query_params": { "at": "10260000" }, - "fixture_path": "asset-hub-polkadot/accounts_proxy_info_alice_10260000.json", + "fixture_path": "asset-hub-polkadot/accounts/proxy_info_alice_10260000.json", "description": "Test accounts proxy-info for Alice at Asset Hub Polkadot block 10,260,000" }, { @@ -1594,7 +1598,7 @@ "at": "10260000", "denominated": "true" }, - "fixture_path": "asset-hub-polkadot/accounts_balance_info_alice_10260000_denominated.json", + "fixture_path": "asset-hub-polkadot/accounts/balance_info_alice_10260000_denominated.json", "description": "Test accounts balance-info with denominated=true for Alice at Asset Hub Polkadot block 10,260,000" }, { @@ -1605,7 +1609,7 @@ "at": "10260000", "token": "DOT" }, - "fixture_path": "asset-hub-polkadot/accounts_balance_info_alice_10260000_token_dot.json", + "fixture_path": "asset-hub-polkadot/accounts/balance_info_alice_10260000_token_dot.json", "description": "Test accounts balance-info with token=DOT for Alice at Asset Hub Polkadot block 10,260,000" }, { @@ -1613,7 +1617,7 @@ "block_height": null, "account_id": "15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5", "query_params": {}, - "fixture_path": "asset-hub-polkadot/accounts_validate_alice.json", + "fixture_path": "asset-hub-polkadot/accounts/validate_alice.json", "description": "Test accounts validate for Alice" }, { @@ -1623,7 +1627,7 @@ "query_params": { "at": "10260000" }, - "fixture_path": "asset-hub-polkadot/pallets_system_storage_number_10260000.json", + "fixture_path": "asset-hub-polkadot/pallets/system/storage_number_10260000.json", "description": "Test System/Number storage item (Plain u32) at Asset Hub Polkadot block 10,260,000" }, { @@ -1633,7 +1637,7 @@ "query_params": { "at": "10260000" }, - "fixture_path": "asset-hub-polkadot/pallets_timestamp_storage_now_10260000.json", + "fixture_path": "asset-hub-polkadot/pallets/timestamp/storage_now_10260000.json", "description": "Test Timestamp/Now storage item (Plain u64) at Asset Hub Polkadot block 10,260,000" } ], @@ -1645,7 +1649,7 @@ "query_params": { "at": "11152000" }, - "fixture_path": "asset-hub-kusama/runtime_metadata_11152000.json", + "fixture_path": "asset-hub-kusama/runtime/metadata_11152000.json", "description": "Test runtime metadata at Asset Hub Kusama block 11,152,000" }, { @@ -1655,7 +1659,7 @@ "query_params": { "at": "11152000" }, - "fixture_path": "asset-hub-kusama/runtime_metadata_versions_11152000.json", + "fixture_path": "asset-hub-kusama/runtime/metadata_versions_11152000.json", "description": "Test runtime metadata versions at Asset Hub Kusama block 11,152,000" }, { @@ -1665,7 +1669,7 @@ "query_params": { "at": "11152000" }, - "fixture_path": "asset-hub-kusama/runtime_metadata_v14_11152000.json", + "fixture_path": "asset-hub-kusama/runtime/metadata_v14_11152000.json", "description": "Test runtime metadata v14 at Asset Hub Kusama block 11,152,000" }, { @@ -1675,7 +1679,7 @@ "query_params": { "at": "11152000" }, - "fixture_path": "asset-hub-kusama/runtime_metadata_v15_11152000.json", + "fixture_path": "asset-hub-kusama/runtime/metadata_v15_11152000.json", "description": "Test runtime metadata v15 at Asset Hub Kusama block 11,152,000" }, { @@ -1685,7 +1689,7 @@ "query_params": { "at": "11152000" }, - "fixture_path": "asset-hub-kusama/runtime_spec_11152000.json", + "fixture_path": "asset-hub-kusama/runtime/spec_11152000.json", "description": "Test runtime spec at Asset Hub Kusama block 11,152,000" }, { @@ -1695,7 +1699,7 @@ "query_params": { "at": "11152000" }, - "fixture_path": "asset-hub-kusama/runtime_code_11152000.json", + "fixture_path": "asset-hub-kusama/runtime/code_11152000.json", "description": "Test runtime code at Asset Hub Kusama block 11,152,000" }, { @@ -1703,7 +1707,7 @@ "block_height": 11150000, "account_id": null, "query_params": {}, - "fixture_path": "asset-hub-kusama/blocks_11150000_pre_migration.json", + "fixture_path": "asset-hub-kusama/blocks/11150000_pre_migration.json", "description": "Test block endpoint at Asset Hub Kusama block 11,150,000 (pre-migration, Statemine era, before migration at 11,150,168)" }, { @@ -1711,7 +1715,7 @@ "block_height": 11152000, "account_id": null, "query_params": {}, - "fixture_path": "asset-hub-kusama/blocks_11152000_post_migration.json", + "fixture_path": "asset-hub-kusama/blocks/11152000_post_migration.json", "description": "Test block endpoint at Asset Hub Kusama block 11,152,000 (post-migration, Asset Hub era, after migration ended at 11,151,931)" }, { @@ -1720,7 +1724,7 @@ "account_id": null, "extrinsic_index": 2, "query_params": {}, - "fixture_path": "asset-hub-kusama/rc_blocks_28494701_extrinsics_2.json", + "fixture_path": "asset-hub-kusama/rc_blocks/28494701_extrinsics_2.json", "description": "Test extrinsic endpoint at Asset Hub kusama block 28,494,701, extrinsic index 2" }, { @@ -1731,7 +1735,7 @@ "query_params": { "at": "11152000" }, - "fixture_path": "asset-hub-kusama/pallets_assets_1984_asset_info_11152000.json", + "fixture_path": "asset-hub-kusama/pallets/assets/1984_asset_info_11152000.json", "description": "Test pallets assets asset-info for USDT (asset 1984) at Asset Hub Kusama block 11,152,000" }, { @@ -1741,7 +1745,7 @@ "query_params": { "at": "8000000" }, - "fixture_path": "asset-hub-kusama/pallets_asset_conversion_next_available_id_8000000.json", + "fixture_path": "asset-hub-kusama/pallets/asset_conversion/next_available_id_8000000.json", "description": "Test pallets asset-conversion next-available-id at Asset Hub Kusama block 8,000,000" }, { @@ -1751,7 +1755,7 @@ "query_params": { "at": "8000000" }, - "fixture_path": "asset-hub-kusama/pallets_asset_conversion_liquidity_pools_8000000.json", + "fixture_path": "asset-hub-kusama/pallets/asset_conversion/liquidity_pools_8000000.json", "description": "Test pallets asset-conversion liquidity-pools at Asset Hub Kusama block 8,000,000" }, { @@ -1761,7 +1765,7 @@ "query_params": { "at": "8000000" }, - "fixture_path": "asset-hub-kusama/pallets_balances_dispatchables_8000000.json", + "fixture_path": "asset-hub-kusama/pallets/balances/dispatchables_8000000.json", "description": "Test pallets balances dispatchables at Asset Hub Kusama block 8,000,000" }, { @@ -1772,7 +1776,7 @@ "at": "8000000", "metadata": "true" }, - "fixture_path": "asset-hub-kusama/pallets_balances_dispatchables_transfer_allow_death_8000000.json", + "fixture_path": "asset-hub-kusama/pallets/balances/dispatchables_transfer_allow_death_8000000.json", "description": "Test pallets balances dispatchables transfer_allow_death at Asset Hub Kusama block 8,000,000" }, { @@ -1780,16 +1784,20 @@ "block_height": null, "account_id": null, "asset_id": "0", - "query_params": { "at": "8000000" }, - "fixture_path": "asset-hub-kusama/pallets_pool_assets_0_asset_info_8000000.json", + "query_params": { + "at": "8000000" + }, + "fixture_path": "asset-hub-kusama/pallets/pool_assets/0_asset_info_8000000.json", "description": "Test pallets pool-assets asset-info for pool asset 0 (LP token) at Asset Hub Kusama block 8,000,000" }, { "endpoint": "/v1/pallets/foreign-assets", "block_height": null, "account_id": null, - "query_params": { "at": "11152000" }, - "fixture_path": "asset-hub-kusama/pallets_foreign_assets_11152000.json", + "query_params": { + "at": "11152000" + }, + "fixture_path": "asset-hub-kusama/pallets/foreign_assets/11152000.json", "description": "Test pallets foreign-assets endpoint at Asset Hub Kusama block 11,152,000" }, { @@ -1799,7 +1807,7 @@ "query_params": { "at": "12987114" }, - "fixture_path": "asset-hub-kusama/pallets_balances_errors.json", + "fixture_path": "asset-hub-kusama/pallets/balances/errors.json", "description": "Test pallets balances errors at Asset Hub Kusama block 12,987,114" }, { @@ -1809,7 +1817,7 @@ "query_params": { "at": "11152000" }, - "fixture_path": "asset-hub-kusama/pallets_balances_errors_11152000.json", + "fixture_path": "asset-hub-kusama/pallets/balances/errors_11152000.json", "description": "Test pallets balances errors at Asset Hub Kusama block 11,152,000" }, { @@ -1820,7 +1828,7 @@ "at": "12987120", "onlyIds": "true" }, - "fixture_path": "asset-hub-kusama/pallets_balances_errors_onlyIds.json", + "fixture_path": "asset-hub-kusama/pallets/balances/errors_onlyIds.json", "description": "Test pallets balances errors onlyIds at Asset Hub Kusama block 12,987,120" }, { @@ -1830,7 +1838,7 @@ "query_params": { "at": "12987120" }, - "fixture_path": "asset-hub-kusama/pallets_balances_errors_InsufficientBalance.json", + "fixture_path": "asset-hub-kusama/pallets/balances/errors_InsufficientBalance.json", "description": "Test pallets balances errors InsufficientBalance at Asset Hub Kusama block 12,987,120" }, { @@ -1841,7 +1849,7 @@ "at": "12987123", "metadata": "true" }, - "fixture_path": "asset-hub-kusama/pallets_balances_errors_InsufficientBalance_metadata.json", + "fixture_path": "asset-hub-kusama/pallets/balances/errors_InsufficientBalance_metadata.json", "description": "Test pallets balances errors InsufficientBalance with metadata at Asset Hub Kusama block 12,987,123" }, { @@ -1851,7 +1859,7 @@ "query_params": { "at": "11152000" }, - "fixture_path": "asset-hub-kusama/pallets_balances_errors_InsufficientBalance_11152000.json", + "fixture_path": "asset-hub-kusama/pallets/balances/errors_InsufficientBalance_11152000.json", "description": "Test pallets balances errors InsufficientBalance at Asset Hub Kusama block 11,152,000" }, { @@ -1861,7 +1869,7 @@ "query_params": { "at": "12987123" }, - "fixture_path": "asset-hub-kusama/pallets_system_errors.json", + "fixture_path": "asset-hub-kusama/pallets/system/errors.json", "description": "Test pallets system errors at Asset Hub Kusama block 12,987,123" }, { @@ -1871,7 +1879,7 @@ "query_params": { "useEvmFormat": "true" }, - "fixture_path": "asset-hub-kusama/blocks_12949861_use_evm_format.json", + "fixture_path": "asset-hub-kusama/blocks/12949861_use_evm_format.json", "description": "Test block endpoint with useEvmFormat parameter at Asset Hub Kusama block 12,949,861" }, { @@ -1884,7 +1892,7 @@ "extrinsicDocs": "true", "useEvmFormat": "true" }, - "fixture_path": "asset-hub-kusama/extrinsic_12949861_1_use_evm_format.json", + "fixture_path": "asset-hub-kusama/blocks/extrinsic_12949861_1_use_evm_format.json", "description": "Test extrinsic endpoint with useEvmFormat parameter at Asset Hub Kusama block 12,949,861, extrinsic index 1" }, { @@ -1895,7 +1903,7 @@ "range": "12949861-12949863", "useEvmFormat": "true" }, - "fixture_path": "asset-hub-kusama/blocks_range_12949861-12949863_use_evm_format.json", + "fixture_path": "asset-hub-kusama/blocks/range_12949861-12949863_use_evm_format.json", "description": "Test blocks range endpoint with useEvmFormat parameter at Asset Hub Kusama blocks 12,949,861-12,949,863" }, { @@ -1905,7 +1913,7 @@ "query_params": { "at": "11152000" }, - "fixture_path": "asset-hub-kusama/pallets_system_storage_number_11152000.json", + "fixture_path": "asset-hub-kusama/pallets/system/storage_number_11152000.json", "description": "Test System/Number storage item (Plain u32) at Asset Hub Kusama block 11,152,000" }, { @@ -1915,7 +1923,7 @@ "query_params": { "at": "11152000" }, - "fixture_path": "asset-hub-kusama/pallets_timestamp_storage_now_11152000.json", + "fixture_path": "asset-hub-kusama/pallets/timestamp/storage_now_11152000.json", "description": "Test Timestamp/Now storage item (Plain u64) at Asset Hub Kusama block 11,152,000" } ], @@ -1927,7 +1935,7 @@ "query_params": { "at": "1000000" }, - "fixture_path": "coretime-kusama/coretime_leases_1000000.json", + "fixture_path": "coretime-kusama/coretime/leases_1000000.json", "description": "Test coretime leases endpoint at Coretime Kusama block 1,000,000" }, { @@ -1937,7 +1945,7 @@ "query_params": { "at": "2789500" }, - "fixture_path": "coretime-kusama/coretime_regions_2789500.json", + "fixture_path": "coretime-kusama/coretime/regions_2789500.json", "description": "Test coretime regions endpoint at Coretime Kusama block 2,789,500" }, { @@ -1947,7 +1955,7 @@ "query_params": { "at": "1000000" }, - "fixture_path": "coretime-kusama/coretime_reservations_1000000.json", + "fixture_path": "coretime-kusama/coretime/reservations_1000000.json", "description": "Test coretime reservations endpoint at Coretime Kusama block 1,000,000" }, { @@ -1957,7 +1965,7 @@ "query_params": { "at": "2000000" }, - "fixture_path": "coretime-kusama/coretime_renewals_2000000.json", + "fixture_path": "coretime-kusama/coretime/renewals_2000000.json", "description": "Test coretime renewals endpoint at Coretime Kusama block 2,000,000" }, { @@ -1967,7 +1975,7 @@ "query_params": { "at": "2000000" }, - "fixture_path": "coretime-kusama/coretime_overview_2000000.json", + "fixture_path": "coretime-kusama/coretime/overview_2000000.json", "description": "Test coretime overview endpoint at Coretime Kusama block 2,000,000" }, { @@ -1977,7 +1985,7 @@ "query_params": { "at": "2000000" }, - "fixture_path": "coretime-kusama/coretime_info_2000000.json", + "fixture_path": "coretime-kusama/coretime/info_2000000.json", "description": "Test coretime info endpoint at Coretime Kusama block 2,000,000" } ], @@ -1989,7 +1997,7 @@ "query_params": { "at": "1000000" }, - "fixture_path": "coretime-polkadot/coretime_leases_1000000.json", + "fixture_path": "coretime-polkadot/coretime/leases_1000000.json", "description": "Test coretime leases endpoint at Coretime Polkadot block 1,000,000" }, { @@ -1999,7 +2007,7 @@ "query_params": { "at": "2289500" }, - "fixture_path": "coretime-polkadot/coretime_regions_2289500.json", + "fixture_path": "coretime-polkadot/coretime/regions_2289500.json", "description": "Test coretime regions endpoint at Coretime Polkadot block 2,289,500" }, { @@ -2009,7 +2017,7 @@ "query_params": { "at": "1000000" }, - "fixture_path": "coretime-polkadot/coretime_reservations_1000000.json", + "fixture_path": "coretime-polkadot/coretime/reservations_1000000.json", "description": "Test coretime reservations endpoint at Coretime Polkadot block 1,000,000" }, { @@ -2019,7 +2027,7 @@ "query_params": { "at": "1000000" }, - "fixture_path": "coretime-polkadot/coretime_renewals_1000000.json", + "fixture_path": "coretime-polkadot/coretime/renewals_1000000.json", "description": "Test coretime renewals endpoint at Coretime Polkadot block 1,000,000" }, { @@ -2029,7 +2037,7 @@ "query_params": { "at": "1000000" }, - "fixture_path": "coretime-polkadot/coretime_overview_1000000.json", + "fixture_path": "coretime-polkadot/coretime/overview_1000000.json", "description": "Test coretime overview endpoint at Coretime Polkadot block 1,000,000" }, { @@ -2039,7 +2047,7 @@ "query_params": { "at": "2000000" }, - "fixture_path": "coretime-polkadot/coretime_info_2000000.json", + "fixture_path": "coretime-polkadot/coretime/info_2000000.json", "description": "Test coretime info endpoint at Coretime Polkadot block 2,000,000" } ] diff --git a/crates/integration_tests/tests/coretime.rs b/crates/integration_tests/tests/coretime.rs deleted file mode 100644 index 70b3d1c2d..000000000 --- a/crates/integration_tests/tests/coretime.rs +++ /dev/null @@ -1,2858 +0,0 @@ -// Copyright (C) 2026 Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later - -//! Integration tests for coretime endpoints. -//! -//! These tests verify the coretime endpoint behavior against a running API server. -//! The endpoints are only available on coretime chains (chains with the Broker pallet). -//! -//! Run with: -//! API_URL=http://localhost:8080 cargo test --package integration_tests --test coretime -//! -//! For testing against a coretime chain: -//! SAS_SUBSTRATE_URL=wss://kusama-coretime-rpc.polkadot.io cargo run --release & -//! API_URL=http://localhost:8080 cargo test --package integration_tests --test coretime - -use anyhow::Result; -use integration_tests::{client::TestClient, constants::API_READY_TIMEOUT_SECONDS}; -use std::env; - -// ============================================================================ -// Test Helpers -// ============================================================================ - -fn init_tracing() { - let _ = tracing_subscriber::fmt() - .with_env_filter(tracing_subscriber::EnvFilter::from_default_env()) - .try_init(); -} - -async fn setup_client() -> Result { - let api_url = env::var("API_URL").unwrap_or_else(|_| "http://localhost:8080".to_string()); - let client = TestClient::new(api_url); - client.wait_for_ready(API_READY_TIMEOUT_SECONDS).await?; - Ok(client) -} - -/// Check if the connected chain is a coretime chain (has Broker pallet) -async fn is_coretime_chain(client: &TestClient) -> bool { - if let Ok((status, json)) = client.get_json("/v1/capabilities").await { - if status.is_success() { - if let Some(pallets) = json["pallets"].as_array() { - return pallets.iter().any(|p| p.as_str() == Some("Broker")); - } - } - } - false -} - -// ============================================================================ -// Leases Response Structure Tests -// ============================================================================ - -/// Test that the coretime/leases endpoint returns valid JSON with correct structure -#[tokio::test] -async fn test_coretime_leases_response_structure() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - tracing::info!("Testing /v1/coretime/leases endpoint structure"); - let (status, json) = client.get_json("/v1/coretime/leases").await?; - - assert!( - status.is_success(), - "Coretime leases endpoint should return success status, got {}", - status - ); - - // Verify response has required fields - assert!(json.get("at").is_some(), "Response should have 'at' field"); - assert!( - json.get("leases").is_some(), - "Response should have 'leases' field" - ); - - // Verify 'at' structure - let at = &json["at"]; - assert!( - at.get("hash").is_some(), - "Response 'at' should have 'hash' field" - ); - assert!( - at.get("height").is_some(), - "Response 'at' should have 'height' field" - ); - assert!(at["hash"].is_string(), "'at.hash' should be a string"); - assert!(at["height"].is_string(), "'at.height' should be a string"); - - // Verify hash format (should start with 0x) - let hash = at["hash"].as_str().unwrap(); - assert!( - hash.starts_with("0x"), - "'at.hash' should be a hex string starting with 0x" - ); - - // Verify leases is an array - assert!(json["leases"].is_array(), "'leases' should be an array"); - - println!("ok: Coretime leases response structure test passed"); - Ok(()) -} - -/// Test lease item structure when leases are present -#[tokio::test] -async fn test_coretime_leases_item_structure() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - let (status, json) = client.get_json("/v1/coretime/leases").await?; - assert!(status.is_success()); - - let leases = json["leases"].as_array().unwrap(); - - if leases.is_empty() { - println!("Skipping item structure test: No leases present on chain"); - return Ok(()); - } - - // Check first lease item structure - let lease = &leases[0]; - - assert!( - lease.get("task").is_some(), - "Lease should have 'task' field" - ); - assert!( - lease.get("until").is_some(), - "Lease should have 'until' field" - ); - - assert!(lease["task"].is_string(), "'task' should be a string"); - assert!(lease["until"].is_number(), "'until' should be a number"); - - // 'core' is optional but if present should be a number - if lease.get("core").is_some() && !lease["core"].is_null() { - assert!( - lease["core"].is_number(), - "'core' should be a number when present" - ); - } - - // Validate task is a valid parachain ID (numeric string) - let task = lease["task"].as_str().unwrap(); - assert!( - task.parse::().is_ok(), - "'task' should be a numeric string (parachain ID)" - ); - - // Validate until is a positive number - let until_num = lease["until"].as_u64().expect("'until' should be a number"); - assert!( - until_num > 0, - "'until' should be a positive timeslice value" - ); - - println!( - "ok: Coretime leases item structure test passed ({} leases found)", - leases.len() - ); - Ok(()) -} - -// ============================================================================ -// Query Parameter Tests -// ============================================================================ - -/// Test the 'at' query parameter with a block number -#[tokio::test] -async fn test_coretime_leases_at_block_number() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - // First get the latest block to find a valid block number - let (_, latest_json) = client.get_json("/v1/coretime/leases").await?; - let latest_height: u64 = latest_json["at"]["height"] - .as_str() - .unwrap() - .parse() - .unwrap(); - - // Query a slightly older block (if available) - let query_height = if latest_height > 10 { - latest_height - 5 - } else { - latest_height - }; - - let (status, json) = client - .get_json(&format!("/v1/coretime/leases?at={}", query_height)) - .await?; - - assert!( - status.is_success(), - "Should succeed with valid block number, got {}", - status - ); - - // Verify the response is at the requested block - let response_height: u64 = json["at"]["height"].as_str().unwrap().parse().unwrap(); - assert_eq!( - response_height, query_height, - "Response should be at the requested block height" - ); - - println!("ok: Coretime leases 'at' block number test passed"); - Ok(()) -} - -/// Test the 'at' query parameter with a block hash -#[tokio::test] -async fn test_coretime_leases_at_block_hash() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - // First get the latest block to get a valid block hash - let (_, latest_json) = client.get_json("/v1/coretime/leases").await?; - let block_hash = latest_json["at"]["hash"].as_str().unwrap(); - - let (status, json) = client - .get_json(&format!("/v1/coretime/leases?at={}", block_hash)) - .await?; - - assert!( - status.is_success(), - "Should succeed with valid block hash, got {}", - status - ); - - // Verify the response has the same hash - let response_hash = json["at"]["hash"].as_str().unwrap(); - assert_eq!( - response_hash, block_hash, - "Response should be at the requested block hash" - ); - - println!("ok: Coretime leases 'at' block hash test passed"); - Ok(()) -} - -// ============================================================================ -// Error Handling Tests -// ============================================================================ - -/// Test error response for invalid block parameter -#[tokio::test] -async fn test_coretime_leases_invalid_block_param() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain"); - return Ok(()); - } - - let response = client.get("/v1/coretime/leases?at=invalid-block").await?; - - assert_eq!( - response.status.as_u16(), - 400, - "Should return 400 for invalid block parameter" - ); - - println!("ok: Coretime leases invalid block parameter test passed"); - Ok(()) -} - -/// Test error response for non-existent block (very high block number) -#[tokio::test] -async fn test_coretime_leases_nonexistent_block() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain"); - return Ok(()); - } - - // Use a very high block number that doesn't exist - let response = client.get("/v1/coretime/leases?at=999999999").await?; - - // Should return 400 for non-existent block (block number larger than chain height) - assert_eq!( - response.status.as_u16(), - 400, - "Should return 400 for non-existent block, got {}", - response.status - ); - - let json = response.json()?; - assert!( - json["message"] - .as_str() - .map(|m| m.to_lowercase().contains("block")) - .unwrap_or(false), - "Error message should mention block: {:?}", - json - ); - - println!("ok: Coretime leases non-existent block test passed"); - Ok(()) -} - -/// Test error response for very large block numbers that cause RPC errors -#[tokio::test] -async fn test_coretime_leases_very_large_block_number() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain"); - return Ok(()); - } - - let response = client.get("/v1/coretime/leases?at=999999999999").await?; - - assert_eq!( - response.status.as_u16(), - 400, - "Should return 400 for very large block number, got {}", - response.status - ); - - println!("ok: Coretime leases very large block number test passed"); - Ok(()) -} - -/// Test error response for invalid block hash format -#[tokio::test] -async fn test_coretime_leases_invalid_block_hash() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain"); - return Ok(()); - } - - // Invalid hex string (not 32 bytes) - let response = client.get("/v1/coretime/leases?at=0xabc123").await?; - - assert!( - response.status.as_u16() == 400 || response.status.as_u16() == 404, - "Should return 400 or 404 for invalid block hash format, got {}", - response.status - ); - - println!("ok: Coretime leases invalid block hash test passed"); - Ok(()) -} - -// ============================================================================ -// Consistency Tests -// ============================================================================ - -/// Test that multiple requests return consistent data -#[tokio::test] -async fn test_coretime_leases_consistency() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - // Get the latest block hash to ensure we're querying the same block - let (_, first_response) = client.get_json("/v1/coretime/leases").await?; - let block_hash = first_response["at"]["hash"].as_str().unwrap(); - - // Query the same block multiple times - for i in 0..3 { - let (status, json) = client - .get_json(&format!("/v1/coretime/leases?at={}", block_hash)) - .await?; - - assert!(status.is_success(), "Request {} should succeed", i + 1); - - assert_eq!( - json["at"]["hash"].as_str().unwrap(), - block_hash, - "Request {} should return same block hash", - i + 1 - ); - - assert_eq!( - json["leases"].as_array().map(|a| a.len()), - first_response["leases"].as_array().map(|a| a.len()), - "Request {} should return same number of leases", - i + 1 - ); - } - - println!("ok: Coretime leases consistency test passed"); - Ok(()) -} - -/// Test that leases are sorted by core ID -#[tokio::test] -async fn test_coretime_leases_sorting() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - let (status, json) = client.get_json("/v1/coretime/leases").await?; - assert!(status.is_success()); - - let leases = json["leases"].as_array().unwrap(); - - if leases.len() < 2 { - println!("Skipping sorting test: Need at least 2 leases to verify sorting"); - return Ok(()); - } - - // Check that leases with cores are sorted by core ID - // and leases without cores come last - let mut last_core: Option = None; - let mut seen_none = false; - - for lease in leases { - let core = lease - .get("core") - .and_then(|c| c.as_str()) - .and_then(|s| s.parse::().ok()); - - match (core, last_core, seen_none) { - // If we see a Some after a None, that's wrong - (Some(_), _, true) => { - panic!("Leases with cores should come before leases without cores"); - } - // If we have two Some values, they should be in order - (Some(c), Some(last), _) => { - assert!( - c >= last, - "Leases should be sorted by core ID (ascending): {} should come after {}", - c, - last - ); - } - // If we transition from Some to None, mark it - (None, _, _) => { - seen_none = true; - } - _ => {} - } - - last_core = core; - } - - println!("ok: Coretime leases sorting test passed"); - Ok(()) -} - -// ============================================================================ -// Reservations Response Structure Tests -// ============================================================================ - -/// Test that the coretime/reservations endpoint returns valid JSON with correct structure -#[tokio::test] -async fn test_coretime_reservations_response_structure() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - tracing::info!("Testing /v1/coretime/reservations endpoint structure"); - let (status, json) = client.get_json("/v1/coretime/reservations").await?; - - assert!( - status.is_success(), - "Coretime reservations endpoint should return success status, got {}", - status - ); - - // Verify response has required fields - assert!(json.get("at").is_some(), "Response should have 'at' field"); - assert!( - json.get("reservations").is_some(), - "Response should have 'reservations' field" - ); - - // Verify 'at' structure - let at = &json["at"]; - assert!( - at.get("hash").is_some(), - "Response 'at' should have 'hash' field" - ); - assert!( - at.get("height").is_some(), - "Response 'at' should have 'height' field" - ); - assert!(at["hash"].is_string(), "'at.hash' should be a string"); - assert!(at["height"].is_string(), "'at.height' should be a string"); - - // Verify hash format (should start with 0x) - let hash = at["hash"].as_str().unwrap(); - assert!( - hash.starts_with("0x"), - "'at.hash' should be a hex string starting with 0x" - ); - - // Verify reservations is an array - assert!( - json["reservations"].is_array(), - "'reservations' should be an array" - ); - - println!("ok: Coretime reservations response structure test passed"); - Ok(()) -} - -/// Test reservation item structure when reservations are present -#[tokio::test] -async fn test_coretime_reservations_item_structure() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - let (status, json) = client.get_json("/v1/coretime/reservations").await?; - assert!(status.is_success()); - - let reservations = json["reservations"].as_array().unwrap(); - - if reservations.is_empty() { - println!("Skipping item structure test: No reservations present on chain"); - return Ok(()); - } - - // Check first reservation item structure - let reservation = &reservations[0]; - - assert!( - reservation.get("mask").is_some(), - "Reservation should have 'mask' field" - ); - assert!( - reservation.get("task").is_some(), - "Reservation should have 'task' field" - ); - - assert!(reservation["mask"].is_string(), "'mask' should be a string"); - assert!(reservation["task"].is_string(), "'task' should be a string"); - - // Validate mask is a valid hex string (should start with 0x) - let mask = reservation["mask"].as_str().unwrap(); - assert!( - mask.starts_with("0x"), - "'mask' should be a hex string starting with 0x" - ); - - // CoreMask is 80 bits = 10 bytes = 20 hex chars + "0x" prefix - assert_eq!( - mask.len(), - 22, - "'mask' should be 22 characters (0x + 20 hex digits for 10 bytes)" - ); - - // Validate task is either empty, "Pool", or a numeric string (task ID) - let task = reservation["task"].as_str().unwrap(); - assert!( - task.is_empty() || task == "Pool" || task.parse::().is_ok(), - "'task' should be empty (Idle), 'Pool', or a numeric task ID, got: {}", - task - ); - - println!( - "ok: Coretime reservations item structure test passed ({} reservations found)", - reservations.len() - ); - Ok(()) -} - -// ============================================================================ -// Reservations Query Parameter Tests -// ============================================================================ - -/// Test the 'at' query parameter with a block number for reservations -#[tokio::test] -async fn test_coretime_reservations_at_block_number() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - // First get the latest block to find a valid block number - let (_, latest_json) = client.get_json("/v1/coretime/reservations").await?; - let latest_height: u64 = latest_json["at"]["height"] - .as_str() - .unwrap() - .parse() - .unwrap(); - - // Query a slightly older block (if available) - let query_height = if latest_height > 10 { - latest_height - 5 - } else { - latest_height - }; - - let (status, json) = client - .get_json(&format!("/v1/coretime/reservations?at={}", query_height)) - .await?; - - assert!( - status.is_success(), - "Should succeed with valid block number, got {}", - status - ); - - // Verify the response is at the requested block - let response_height: u64 = json["at"]["height"].as_str().unwrap().parse().unwrap(); - assert_eq!( - response_height, query_height, - "Response should be at the requested block height" - ); - - println!("ok: Coretime reservations 'at' block number test passed"); - Ok(()) -} - -/// Test the 'at' query parameter with a block hash for reservations -#[tokio::test] -async fn test_coretime_reservations_at_block_hash() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - // First get the latest block to get a valid block hash - let (_, latest_json) = client.get_json("/v1/coretime/reservations").await?; - let block_hash = latest_json["at"]["hash"].as_str().unwrap(); - - let (status, json) = client - .get_json(&format!("/v1/coretime/reservations?at={}", block_hash)) - .await?; - - assert!( - status.is_success(), - "Should succeed with valid block hash, got {}", - status - ); - - // Verify the response has the same hash - let response_hash = json["at"]["hash"].as_str().unwrap(); - assert_eq!( - response_hash, block_hash, - "Response should be at the requested block hash" - ); - - println!("ok: Coretime reservations 'at' block hash test passed"); - Ok(()) -} - -// ============================================================================ -// Reservations Error Handling Tests -// ============================================================================ - -/// Test error response for invalid block parameter for reservations -#[tokio::test] -async fn test_coretime_reservations_invalid_block_param() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain"); - return Ok(()); - } - - let response = client - .get("/v1/coretime/reservations?at=invalid-block") - .await?; - - assert_eq!( - response.status.as_u16(), - 400, - "Should return 400 for invalid block parameter" - ); - - println!("ok: Coretime reservations invalid block parameter test passed"); - Ok(()) -} - -/// Test error response for non-existent block (very high block number) for reservations -#[tokio::test] -async fn test_coretime_reservations_nonexistent_block() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain"); - return Ok(()); - } - - // Use a very high block number that doesn't exist - let response = client.get("/v1/coretime/reservations?at=999999999").await?; - - assert_eq!( - response.status.as_u16(), - 400, - "Should return 400 for non-existent block, got {}", - response.status - ); - - let json = response.json()?; - assert!( - json["message"] - .as_str() - .map(|m| m.to_lowercase().contains("block")) - .unwrap_or(false), - "Error message should mention block: {:?}", - json - ); - - println!("ok: Coretime reservations non-existent block test passed"); - Ok(()) -} - -/// Test error response for very large block numbers that cause RPC errors for reservations -#[tokio::test] -async fn test_coretime_reservations_very_large_block_number() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain"); - return Ok(()); - } - - let response = client - .get("/v1/coretime/reservations?at=999999999999") - .await?; - - assert_eq!( - response.status.as_u16(), - 400, - "Should return 400 for very large block number, got {}", - response.status - ); - - println!("ok: Coretime reservations very large block number test passed"); - Ok(()) -} - -/// Test error response for invalid block hash format for reservations -#[tokio::test] -async fn test_coretime_reservations_invalid_block_hash() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain"); - return Ok(()); - } - - // Invalid hex string (not 32 bytes) - let response = client.get("/v1/coretime/reservations?at=0xabc123").await?; - - assert!( - response.status.as_u16() == 400 || response.status.as_u16() == 404, - "Should return 400 or 404 for invalid block hash format, got {}", - response.status - ); - - println!("ok: Coretime reservations invalid block hash test passed"); - Ok(()) -} - -// ============================================================================ -// Reservations Consistency Tests -// ============================================================================ - -/// Test that multiple requests return consistent data for reservations -#[tokio::test] -async fn test_coretime_reservations_consistency() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - // Get the latest block hash to ensure we're querying the same block - let (_, first_response) = client.get_json("/v1/coretime/reservations").await?; - let block_hash = first_response["at"]["hash"].as_str().unwrap(); - - // Query the same block multiple times - for i in 0..3 { - let (status, json) = client - .get_json(&format!("/v1/coretime/reservations?at={}", block_hash)) - .await?; - - assert!(status.is_success(), "Request {} should succeed", i + 1); - - assert_eq!( - json["at"]["hash"].as_str().unwrap(), - block_hash, - "Request {} should return same block hash", - i + 1 - ); - - assert_eq!( - json["reservations"].as_array().map(|a| a.len()), - first_response["reservations"].as_array().map(|a| a.len()), - "Request {} should return same number of reservations", - i + 1 - ); - } - - println!("ok: Coretime reservations consistency test passed"); - Ok(()) -} - -// ============================================================================ -// Renewals Response Structure Tests -// ============================================================================ - -/// Test that the coretime/renewals endpoint returns valid JSON with correct structure -#[tokio::test] -async fn test_coretime_renewals_response_structure() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - tracing::info!("Testing /v1/coretime/renewals endpoint structure"); - let (status, json) = client.get_json("/v1/coretime/renewals").await?; - - assert!( - status.is_success(), - "Coretime renewals endpoint should return success status, got {}", - status - ); - - // Verify response has required fields - assert!(json.get("at").is_some(), "Response should have 'at' field"); - assert!( - json.get("renewals").is_some(), - "Response should have 'renewals' field" - ); - - // Verify 'at' structure - let at = &json["at"]; - assert!( - at.get("hash").is_some(), - "Response 'at' should have 'hash' field" - ); - assert!( - at.get("height").is_some(), - "Response 'at' should have 'height' field" - ); - assert!(at["hash"].is_string(), "'at.hash' should be a string"); - assert!(at["height"].is_string(), "'at.height' should be a string"); - - // Verify hash format (should start with 0x) - let hash = at["hash"].as_str().unwrap(); - assert!( - hash.starts_with("0x"), - "'at.hash' should be a hex string starting with 0x" - ); - - // Verify renewals is an array - assert!(json["renewals"].is_array(), "'renewals' should be an array"); - - println!("ok: Coretime renewals response structure test passed"); - Ok(()) -} - -/// Test renewal item structure when renewals are present -#[tokio::test] -async fn test_coretime_renewals_item_structure() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - let (status, json) = client.get_json("/v1/coretime/renewals").await?; - assert!(status.is_success()); - - let renewals = json["renewals"].as_array().unwrap(); - - if renewals.is_empty() { - println!("Skipping item structure test: No renewals present on chain"); - return Ok(()); - } - - // Check first renewal item structure - let renewal = &renewals[0]; - - // Required fields - assert!( - renewal.get("core").is_some(), - "Renewal should have 'core' field" - ); - assert!( - renewal.get("when").is_some(), - "Renewal should have 'when' field" - ); - assert!( - renewal.get("task").is_some(), - "Renewal should have 'task' field" - ); - - assert!(renewal["core"].is_number(), "'core' should be a number"); - assert!(renewal["when"].is_number(), "'when' should be a number"); - assert!(renewal["task"].is_string(), "'task' should be a string"); - - // Optional fields (if present should have correct types) - if let Some(completion) = renewal.get("completion") { - if !completion.is_null() { - assert!( - completion.is_string(), - "'completion' should be a string when present" - ); - let completion_str = completion.as_str().unwrap(); - assert!( - completion_str == "Complete" || completion_str == "Partial", - "'completion' should be 'Complete' or 'Partial', got: {}", - completion_str - ); - } - } - - if let Some(mask) = renewal.get("mask") { - if !mask.is_null() { - assert!(mask.is_string(), "'mask' should be a string when present"); - let mask_str = mask.as_str().unwrap(); - assert!( - mask_str.starts_with("0x"), - "'mask' should be a hex string starting with 0x" - ); - // CoreMask is 80 bits = 10 bytes = 20 hex chars + "0x" prefix - assert_eq!( - mask_str.len(), - 22, - "'mask' should be 22 characters (0x + 20 hex digits for 10 bytes)" - ); - } - } - - if let Some(price) = renewal.get("price") { - if !price.is_null() { - assert!(price.is_string(), "'price' should be a string when present"); - let price_str = price.as_str().unwrap(); - assert!( - price_str.parse::().is_ok(), - "'price' should be a numeric string, got: {}", - price_str - ); - } - } - - // Validate task is empty, "Pool", "Idle", or a numeric string (task ID) - let task = renewal["task"].as_str().unwrap(); - assert!( - task.is_empty() || task == "Pool" || task == "Idle" || task.parse::().is_ok(), - "'task' should be empty, 'Pool', 'Idle', or a numeric task ID, got: {}", - task - ); - - // Validate core and when are positive - let core = renewal["core"].as_u64().unwrap(); - let when = renewal["when"].as_u64().unwrap(); - assert!(when > 0, "'when' should be a positive timeslice value"); - - println!( - "ok: Coretime renewals item structure test passed ({} renewals found, first core: {})", - renewals.len(), - core - ); - Ok(()) -} - -// ============================================================================ -// Renewals Query Parameter Tests -// ============================================================================ - -/// Test the 'at' query parameter with a block number for renewals -#[tokio::test] -async fn test_coretime_renewals_at_block_number() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - // First get the latest block to find a valid block number - let (_, latest_json) = client.get_json("/v1/coretime/renewals").await?; - let latest_height: u64 = latest_json["at"]["height"] - .as_str() - .unwrap() - .parse() - .unwrap(); - - // Query a slightly older block (if available) - let query_height = if latest_height > 10 { - latest_height - 5 - } else { - latest_height - }; - - let (status, json) = client - .get_json(&format!("/v1/coretime/renewals?at={}", query_height)) - .await?; - - assert!( - status.is_success(), - "Should succeed with valid block number, got {}", - status - ); - - // Verify the response is at the requested block - let response_height: u64 = json["at"]["height"].as_str().unwrap().parse().unwrap(); - assert_eq!( - response_height, query_height, - "Response should be at the requested block height" - ); - - println!("ok: Coretime renewals 'at' block number test passed"); - Ok(()) -} - -/// Test the 'at' query parameter with a block hash for renewals -#[tokio::test] -async fn test_coretime_renewals_at_block_hash() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - // First get the latest block to get a valid block hash - let (_, latest_json) = client.get_json("/v1/coretime/renewals").await?; - let block_hash = latest_json["at"]["hash"].as_str().unwrap(); - - let (status, json) = client - .get_json(&format!("/v1/coretime/renewals?at={}", block_hash)) - .await?; - - assert!( - status.is_success(), - "Should succeed with valid block hash, got {}", - status - ); - - // Verify the response has the same hash - let response_hash = json["at"]["hash"].as_str().unwrap(); - assert_eq!( - response_hash, block_hash, - "Response should be at the requested block hash" - ); - - println!("ok: Coretime renewals 'at' block hash test passed"); - Ok(()) -} - -// ============================================================================ -// Renewals Error Handling Tests -// ============================================================================ - -/// Test error response for invalid block parameter for renewals -#[tokio::test] -async fn test_coretime_renewals_invalid_block_param() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain"); - return Ok(()); - } - - let response = client.get("/v1/coretime/renewals?at=invalid-block").await?; - - assert_eq!( - response.status.as_u16(), - 400, - "Should return 400 for invalid block parameter" - ); - - println!("ok: Coretime renewals invalid block parameter test passed"); - Ok(()) -} - -/// Test error response for non-existent block (very high block number) for renewals -#[tokio::test] -async fn test_coretime_renewals_nonexistent_block() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain"); - return Ok(()); - } - - // Use a very high block number that doesn't exist - let response = client.get("/v1/coretime/renewals?at=999999999").await?; - - assert_eq!( - response.status.as_u16(), - 400, - "Should return 400 for non-existent block, got {}", - response.status - ); - - let json = response.json()?; - assert!( - json["message"] - .as_str() - .map(|m| m.to_lowercase().contains("block")) - .unwrap_or(false), - "Error message should mention block: {:?}", - json - ); - - println!("ok: Coretime renewals non-existent block test passed"); - Ok(()) -} - -/// Test error response for very large block numbers that cause RPC errors for renewals -#[tokio::test] -async fn test_coretime_renewals_very_large_block_number() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain"); - return Ok(()); - } - - let response = client.get("/v1/coretime/renewals?at=999999999999").await?; - - assert_eq!( - response.status.as_u16(), - 400, - "Should return 400 for very large block number, got {}", - response.status - ); - - println!("ok: Coretime renewals very large block number test passed"); - Ok(()) -} - -/// Test error response for invalid block hash format for renewals -#[tokio::test] -async fn test_coretime_renewals_invalid_block_hash() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain"); - return Ok(()); - } - - // Invalid hex string (not 32 bytes) - let response = client.get("/v1/coretime/renewals?at=0xabc123").await?; - - assert!( - response.status.as_u16() == 400 || response.status.as_u16() == 404, - "Should return 400 or 404 for invalid block hash format, got {}", - response.status - ); - - println!("ok: Coretime renewals invalid block hash test passed"); - Ok(()) -} - -// ============================================================================ -// Renewals Consistency Tests -// ============================================================================ - -/// Test that multiple requests return consistent data for renewals -#[tokio::test] -async fn test_coretime_renewals_consistency() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - // Get the latest block hash to ensure we're querying the same block - let (_, first_response) = client.get_json("/v1/coretime/renewals").await?; - let block_hash = first_response["at"]["hash"].as_str().unwrap(); - - // Query the same block multiple times - for i in 0..3 { - let (status, json) = client - .get_json(&format!("/v1/coretime/renewals?at={}", block_hash)) - .await?; - - assert!(status.is_success(), "Request {} should succeed", i + 1); - - assert_eq!( - json["at"]["hash"].as_str().unwrap(), - block_hash, - "Request {} should return same block hash", - i + 1 - ); - - assert_eq!( - json["renewals"].as_array().map(|a| a.len()), - first_response["renewals"].as_array().map(|a| a.len()), - "Request {} should return same number of renewals", - i + 1 - ); - } - - println!("ok: Coretime renewals consistency test passed"); - Ok(()) -} - -/// Test that renewals are sorted by core ID -#[tokio::test] -async fn test_coretime_renewals_sorting() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - let (status, json) = client.get_json("/v1/coretime/renewals").await?; - assert!(status.is_success()); - - let renewals = json["renewals"].as_array().unwrap(); - - if renewals.len() < 2 { - println!("Skipping sorting test: Need at least 2 renewals to verify sorting"); - return Ok(()); - } - - // Check that renewals are sorted by core ID (ascending) - let mut last_core: Option = None; - - for renewal in renewals { - let core = renewal["core"].as_u64().unwrap(); - - if let Some(last) = last_core { - assert!( - core >= last, - "Renewals should be sorted by core ID (ascending): {} should come after {}", - core, - last - ); - } - - last_core = Some(core); - } - - println!("ok: Coretime renewals sorting test passed"); - Ok(()) -} - -// ============================================================================ -// Regions Response Structure Tests -// ============================================================================ - -/// Test that the coretime/regions endpoint returns valid JSON with correct structure -#[tokio::test] -async fn test_coretime_regions_response_structure() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - tracing::info!("Testing /v1/coretime/regions endpoint structure"); - let (status, json) = client.get_json("/v1/coretime/regions").await?; - - assert!( - status.is_success(), - "Coretime regions endpoint should return success status, got {}", - status - ); - - // Verify response has required fields - assert!(json.get("at").is_some(), "Response should have 'at' field"); - assert!( - json.get("regions").is_some(), - "Response should have 'regions' field" - ); - - // Verify 'at' structure - let at = &json["at"]; - assert!( - at.get("hash").is_some(), - "Response 'at' should have 'hash' field" - ); - assert!( - at.get("height").is_some(), - "Response 'at' should have 'height' field" - ); - assert!(at["hash"].is_string(), "'at.hash' should be a string"); - assert!(at["height"].is_string(), "'at.height' should be a string"); - - // Verify hash format (should start with 0x) - let hash = at["hash"].as_str().unwrap(); - assert!( - hash.starts_with("0x"), - "'at.hash' should be a hex string starting with 0x" - ); - - // Verify regions is an array - assert!(json["regions"].is_array(), "'regions' should be an array"); - - println!("ok: Coretime regions response structure test passed"); - Ok(()) -} - -/// Test region item structure when regions are present -#[tokio::test] -async fn test_coretime_regions_item_structure() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - let (status, json) = client.get_json("/v1/coretime/regions").await?; - assert!(status.is_success()); - - let regions = json["regions"].as_array().unwrap(); - - if regions.is_empty() { - println!("Skipping item structure test: No regions present on chain"); - return Ok(()); - } - - // Check first region item structure - let region = ®ions[0]; - - // Required fields - assert!( - region.get("core").is_some(), - "Region should have 'core' field" - ); - assert!( - region.get("begin").is_some(), - "Region should have 'begin' field" - ); - assert!( - region.get("mask").is_some(), - "Region should have 'mask' field" - ); - - assert!(region["core"].is_number(), "'core' should be a number"); - assert!(region["begin"].is_number(), "'begin' should be a number"); - assert!(region["mask"].is_string(), "'mask' should be a string"); - - // Validate mask is a valid hex string (should start with 0x) - let mask = region["mask"].as_str().unwrap(); - assert!( - mask.starts_with("0x"), - "'mask' should be a hex string starting with 0x" - ); - - // CoreMask is 80 bits = 10 bytes = 20 hex chars + "0x" prefix - assert_eq!( - mask.len(), - 22, - "'mask' should be 22 characters (0x + 20 hex digits for 10 bytes)" - ); - - // Optional fields: end, owner, paid - // If present, check their types - if let Some(end) = region.get("end") { - if !end.is_null() { - assert!(end.is_number(), "'end' should be a number when present"); - } - } - - if let Some(owner) = region.get("owner") { - if !owner.is_null() { - assert!(owner.is_string(), "'owner' should be a string when present"); - let owner_str = owner.as_str().unwrap(); - // Owner is an SS58-encoded address (base58 string, typically 47-48 chars) - // This matches substrate-api-sidecar behavior which uses .toString() on AccountId - assert!( - !owner_str.is_empty() && owner_str.chars().all(|c| c.is_alphanumeric()), - "'owner' should be a valid SS58 address string, got: {}", - owner_str - ); - } - } - - if let Some(paid) = region.get("paid") { - if !paid.is_null() { - assert!(paid.is_string(), "'paid' should be a string when present"); - // paid should be a numeric string - let paid_str = paid.as_str().unwrap(); - assert!( - paid_str.parse::().is_ok(), - "'paid' should be a numeric string" - ); - } - } - - println!( - "ok: Coretime regions item structure test passed ({} regions found)", - regions.len() - ); - Ok(()) -} - -// ============================================================================ -// Regions Query Parameter Tests -// ============================================================================ - -/// Test the 'at' query parameter with a block number for regions -#[tokio::test] -async fn test_coretime_regions_at_block_number() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - // First get the latest block to find a valid block number - let (_, latest_json) = client.get_json("/v1/coretime/regions").await?; - let latest_height: u64 = latest_json["at"]["height"] - .as_str() - .unwrap() - .parse() - .unwrap(); - - // Query a slightly older block (if available) - let query_height = if latest_height > 10 { - latest_height - 5 - } else { - latest_height - }; - - let (status, json) = client - .get_json(&format!("/v1/coretime/regions?at={}", query_height)) - .await?; - - assert!( - status.is_success(), - "Should succeed with valid block number, got {}", - status - ); - - // Verify the response is at the requested block - let response_height: u64 = json["at"]["height"].as_str().unwrap().parse().unwrap(); - assert_eq!( - response_height, query_height, - "Response should be at the requested block height" - ); - - println!("ok: Coretime regions 'at' block number test passed"); - Ok(()) -} - -/// Test the 'at' query parameter with a block hash for regions -#[tokio::test] -async fn test_coretime_regions_at_block_hash() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - // First get the latest block to get a valid block hash - let (_, latest_json) = client.get_json("/v1/coretime/regions").await?; - let block_hash = latest_json["at"]["hash"].as_str().unwrap(); - - let (status, json) = client - .get_json(&format!("/v1/coretime/regions?at={}", block_hash)) - .await?; - - assert!( - status.is_success(), - "Should succeed with valid block hash, got {}", - status - ); - - // Verify the response has the same hash - let response_hash = json["at"]["hash"].as_str().unwrap(); - assert_eq!( - response_hash, block_hash, - "Response should be at the requested block hash" - ); - - println!("ok: Coretime regions 'at' block hash test passed"); - Ok(()) -} - -// ============================================================================ -// Regions Error Handling Tests -// ============================================================================ - -/// Test error response for invalid block parameter for regions -#[tokio::test] -async fn test_coretime_regions_invalid_block_param() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain"); - return Ok(()); - } - - let response = client.get("/v1/coretime/regions?at=invalid-block").await?; - - assert_eq!( - response.status.as_u16(), - 400, - "Should return 400 for invalid block parameter" - ); - - println!("ok: Coretime regions invalid block parameter test passed"); - Ok(()) -} - -/// Test error response for non-existent block (very high block number) for regions -#[tokio::test] -async fn test_coretime_regions_nonexistent_block() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain"); - return Ok(()); - } - - // Use a very high block number that doesn't exist - let response = client.get("/v1/coretime/regions?at=999999999").await?; - - assert_eq!( - response.status.as_u16(), - 400, - "Should return 400 for non-existent block, got {}", - response.status - ); - - let json = response.json()?; - assert!( - json["message"] - .as_str() - .map(|m| m.to_lowercase().contains("block")) - .unwrap_or(false), - "Error message should mention block: {:?}", - json - ); - - println!("ok: Coretime regions non-existent block test passed"); - Ok(()) -} - -/// Test error response for very large block numbers that cause RPC errors for regions -#[tokio::test] -async fn test_coretime_regions_very_large_block_number() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain"); - return Ok(()); - } - - let response = client.get("/v1/coretime/regions?at=999999999999").await?; - - assert_eq!( - response.status.as_u16(), - 400, - "Should return 400 for very large block number, got {}", - response.status - ); - - println!("ok: Coretime regions very large block number test passed"); - Ok(()) -} - -/// Test error response for invalid block hash format for regions -#[tokio::test] -async fn test_coretime_regions_invalid_block_hash() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain"); - return Ok(()); - } - - // Invalid hex string (not 32 bytes) - let response = client.get("/v1/coretime/regions?at=0xabc123").await?; - - assert!( - response.status.as_u16() == 400 || response.status.as_u16() == 404, - "Should return 400 or 404 for invalid block hash format, got {}", - response.status - ); - - println!("ok: Coretime regions invalid block hash test passed"); - Ok(()) -} - -// ============================================================================ -// Regions Consistency Tests -// ============================================================================ - -/// Test that multiple requests return consistent data for regions -#[tokio::test] -async fn test_coretime_regions_consistency() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - // Get the latest block hash to ensure we're querying the same block - let (_, first_response) = client.get_json("/v1/coretime/regions").await?; - let block_hash = first_response["at"]["hash"].as_str().unwrap(); - - // Query the same block multiple times - for i in 0..3 { - let (status, json) = client - .get_json(&format!("/v1/coretime/regions?at={}", block_hash)) - .await?; - - assert!(status.is_success(), "Request {} should succeed", i + 1); - - assert_eq!( - json["at"]["hash"].as_str().unwrap(), - block_hash, - "Request {} should return same block hash", - i + 1 - ); - - assert_eq!( - json["regions"].as_array().map(|a| a.len()), - first_response["regions"].as_array().map(|a| a.len()), - "Request {} should return same number of regions", - i + 1 - ); - } - - println!("ok: Coretime regions consistency test passed"); - Ok(()) -} - -/// Test that regions are sorted by core ID -#[tokio::test] -async fn test_coretime_regions_sorting() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - let (status, json) = client.get_json("/v1/coretime/regions").await?; - assert!(status.is_success()); - - let regions = json["regions"].as_array().unwrap(); - - if regions.len() < 2 { - println!("Skipping sorting test: Need at least 2 regions to verify sorting"); - return Ok(()); - } - - // Check that regions are sorted by core ID - let mut last_core: Option = None; - - for region in regions { - let core = region["core"].as_u64().unwrap(); - - if let Some(last) = last_core { - assert!( - core >= last, - "Regions should be sorted by core ID (ascending): {} should come after {}", - core, - last - ); - } - - last_core = Some(core); - } - - println!("ok: Coretime regions sorting test passed"); - Ok(()) -} - -/// Test that the coretime/info endpoint returns valid JSON with correct structure for coretime chains -#[tokio::test] -async fn test_coretime_info_response_structure() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - tracing::info!("Testing /v1/coretime/info endpoint structure on coretime chain"); - let (status, json) = client.get_json("/v1/coretime/info").await?; - - assert!( - status.is_success(), - "Coretime info endpoint should return success status, got {}", - status - ); - - // Verify response has required fields - assert!(json.get("at").is_some(), "Response should have 'at' field"); - - // Verify 'at' structure - let at = &json["at"]; - assert!( - at.get("hash").is_some(), - "Response 'at' should have 'hash' field" - ); - assert!( - at.get("height").is_some(), - "Response 'at' should have 'height' field" - ); - assert!(at["hash"].is_string(), "'at.hash' should be a string"); - assert!(at["height"].is_string(), "'at.height' should be a string"); - - // Verify hash format (should start with 0x) - let hash = at["hash"].as_str().unwrap(); - assert!( - hash.starts_with("0x"), - "'at.hash' should be a hex string starting with 0x" - ); - - println!("ok: Coretime info response structure test passed"); - Ok(()) -} - -/// Test coretime/info configuration section -#[tokio::test] -async fn test_coretime_info_configuration() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - let (status, json) = client.get_json("/v1/coretime/info").await?; - assert!(status.is_success()); - - // Configuration may be present if broker is configured - if let Some(config) = json.get("configuration") { - if !config.is_null() { - assert!( - config.get("regionLength").is_some(), - "Configuration should have 'regionLength'" - ); - assert!( - config.get("interludeLength").is_some(), - "Configuration should have 'interludeLength'" - ); - assert!( - config.get("leadinLength").is_some(), - "Configuration should have 'leadinLength'" - ); - assert!( - config.get("relayBlocksPerTimeslice").is_some(), - "Configuration should have 'relayBlocksPerTimeslice'" - ); - - // Verify values are numbers (u32 fields) - assert!( - config["regionLength"].is_number(), - "'regionLength' should be a number" - ); - assert!( - config["relayBlocksPerTimeslice"].is_number(), - "'relayBlocksPerTimeslice' should be a number" - ); - - println!( - "ok: Configuration found - regionLength: {}, timeslicePeriod: {}", - config["regionLength"], config["relayBlocksPerTimeslice"] - ); - } - } - - println!("ok: Coretime info configuration test passed"); - Ok(()) -} - -/// Test coretime/info cores section -#[tokio::test] -async fn test_coretime_info_cores() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - let (status, json) = client.get_json("/v1/coretime/info").await?; - assert!(status.is_success()); - - // Cores section may be present if a sale is active - if let Some(cores) = json.get("cores") { - if !cores.is_null() { - assert!( - cores.get("available").is_some(), - "Cores should have 'available'" - ); - assert!(cores.get("sold").is_some(), "Cores should have 'sold'"); - assert!(cores.get("total").is_some(), "Cores should have 'total'"); - assert!( - cores.get("currentCorePrice").is_some(), - "Cores should have 'currentCorePrice'" - ); - - // Verify types - u32 fields are numbers, u128 (Balance) fields are strings - assert!( - cores["available"].is_number(), - "'available' should be a number" - ); - assert!(cores["sold"].is_number(), "'sold' should be a number"); - assert!(cores["total"].is_number(), "'total' should be a number"); - assert!( - cores["currentCorePrice"].is_string(), - "'currentCorePrice' should be a string (u128 Balance)" - ); - - // Verify logical constraints - let available = cores["available"].as_u64().unwrap(); - let sold = cores["sold"].as_u64().unwrap(); - let total = cores["total"].as_u64().unwrap(); - assert!( - available + sold <= total, - "available + sold should be <= total" - ); - - println!( - "ok: Cores found - available: {}, sold: {}, total: {}", - available, sold, total - ); - } - } - - println!("ok: Coretime info cores test passed"); - Ok(()) -} - -/// Test coretime/info phase section -#[tokio::test] -async fn test_coretime_info_phase() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - let (status, json) = client.get_json("/v1/coretime/info").await?; - assert!(status.is_success()); - - // Phase section may be present if broker is configured and sale is active - if let Some(phase) = json.get("phase") { - if !phase.is_null() { - assert!( - phase.get("currentPhase").is_some(), - "Phase should have 'currentPhase'" - ); - assert!(phase.get("config").is_some(), "Phase should have 'config'"); - - let current_phase = phase["currentPhase"].as_str().unwrap(); - assert!( - ["renewals", "priceDiscovery", "fixedPrice"].contains(¤t_phase), - "'currentPhase' should be one of: renewals, priceDiscovery, fixedPrice, got: {}", - current_phase - ); - - // Verify config is an array - assert!(phase["config"].is_array(), "'config' should be an array"); - - let config_array = phase["config"].as_array().unwrap(); - if !config_array.is_empty() { - let first_phase = &config_array[0]; - assert!( - first_phase.get("phaseName").is_some(), - "Phase config should have 'phaseName'" - ); - assert!( - first_phase.get("lastRelayBlock").is_some(), - "Phase config should have 'lastRelayBlock'" - ); - assert!( - first_phase.get("lastTimeslice").is_some(), - "Phase config should have 'lastTimeslice'" - ); - } - - println!("ok: Phase found - currentPhase: {}", current_phase); - } - } - - println!("ok: Coretime info phase test passed"); - Ok(()) -} - -/// Test coretime/info 'at' query parameter with block number -#[tokio::test] -async fn test_coretime_info_at_block_number() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - // First get the latest block to find a valid block number - let (_, latest_json) = client.get_json("/v1/coretime/info").await?; - let latest_height: u64 = latest_json["at"]["height"] - .as_str() - .unwrap() - .parse() - .unwrap(); - - // Query a slightly older block (if available) - let query_height = if latest_height > 10 { - latest_height - 5 - } else { - latest_height - }; - - let (status, json) = client - .get_json(&format!("/v1/coretime/info?at={}", query_height)) - .await?; - - assert!( - status.is_success(), - "Should succeed with valid block number, got {}", - status - ); - - // Verify the response is at the requested block - let response_height: u64 = json["at"]["height"].as_str().unwrap().parse().unwrap(); - assert_eq!( - response_height, query_height, - "Response should be at the requested block height" - ); - - println!("ok: Coretime info 'at' block number test passed"); - Ok(()) -} - -/// Test coretime/info 'at' query parameter with block hash -#[tokio::test] -async fn test_coretime_info_at_block_hash() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - // First get the latest block to get a valid block hash - let (_, latest_json) = client.get_json("/v1/coretime/info").await?; - let block_hash = latest_json["at"]["hash"].as_str().unwrap(); - - let (status, json) = client - .get_json(&format!("/v1/coretime/info?at={}", block_hash)) - .await?; - - assert!( - status.is_success(), - "Should succeed with valid block hash, got {}", - status - ); - - // Verify the response has the same hash - let response_hash = json["at"]["hash"].as_str().unwrap(); - assert_eq!( - response_hash, block_hash, - "Response should be at the requested block hash" - ); - - println!("ok: Coretime info 'at' block hash test passed"); - Ok(()) -} - -/// Test coretime/info error response for invalid block parameter -#[tokio::test] -async fn test_coretime_info_invalid_block_param() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - // Coretime routes only exist on relay and coretime chains - if !is_coretime_chain(&client).await && !is_relay_chain(&client).await { - println!("Skipping test: No coretime routes on this chain type"); - return Ok(()); - } - - let response = client.get("/v1/coretime/info?at=invalid-block").await?; - - assert_eq!( - response.status.as_u16(), - 400, - "Should return 400 for invalid block parameter" - ); - - println!("ok: Coretime info invalid block parameter test passed"); - Ok(()) -} - -/// Test coretime/info error response for non-existent block -#[tokio::test] -async fn test_coretime_info_nonexistent_block() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - // Coretime routes only exist on relay and coretime chains - if !is_coretime_chain(&client).await && !is_relay_chain(&client).await { - println!("Skipping test: No coretime routes on this chain type"); - return Ok(()); - } - - // Use a very high block number that doesn't exist - let response = client.get("/v1/coretime/info?at=999999999").await?; - - // Should return 400 for non-existent block (block number larger than chain height) - assert_eq!( - response.status.as_u16(), - 400, - "Should return 400 for non-existent block, got {}", - response.status - ); - - println!("ok: Coretime info non-existent block test passed"); - Ok(()) -} - -/// Test coretime/info consistency across multiple requests -#[tokio::test] -async fn test_coretime_info_consistency() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - // Get the latest block hash to ensure we're querying the same block - let (_, first_response) = client.get_json("/v1/coretime/info").await?; - let block_hash = first_response["at"]["hash"].as_str().unwrap(); - - // Query the same block multiple times - for i in 0..3 { - let (status, json) = client - .get_json(&format!("/v1/coretime/info?at={}", block_hash)) - .await?; - - assert!(status.is_success(), "Request {} should succeed", i + 1); - - assert_eq!( - json["at"]["hash"].as_str().unwrap(), - block_hash, - "Request {} should return same block hash", - i + 1 - ); - } - - println!("ok: Coretime info consistency test passed"); - Ok(()) -} - -/// Check if the connected chain is a relay chain (has Coretime pallet but not Broker) -async fn is_relay_chain(client: &TestClient) -> bool { - if let Ok((status, json)) = client.get_json("/v1/capabilities").await { - if status.is_success() { - if let Some(pallets) = json["pallets"].as_array() { - let has_coretime = pallets.iter().any(|p| p.as_str() == Some("Coretime")); - let has_broker = pallets.iter().any(|p| p.as_str() == Some("Broker")); - return has_coretime && !has_broker; - } - } - } - false -} - -/// Test that the coretime/info endpoint returns valid JSON on relay chains -#[tokio::test] -async fn test_coretime_info_relay_chain_response() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_relay_chain(&client).await { - println!( - "Skipping test: Not a relay chain (Coretime pallet not found or Broker pallet present)" - ); - return Ok(()); - } - - tracing::info!("Testing /v1/coretime/info endpoint structure on relay chain"); - let (status, json) = client.get_json("/v1/coretime/info").await?; - - assert!( - status.is_success(), - "Coretime info endpoint should return success status on relay chain, got {}", - status - ); - - // Verify response has required fields - assert!(json.get("at").is_some(), "Response should have 'at' field"); - - // Verify 'at' structure - let at = &json["at"]; - assert!(at["hash"].is_string(), "'at.hash' should be a string"); - assert!(at["height"].is_string(), "'at.height' should be a string"); - - // Check for relay-chain specific fields (any of these may be present) - let has_relay_fields = json.get("brokerId").is_some() - || json.get("storageVersion").is_some() - || json.get("maxHistoricalRevenue").is_some(); - - if has_relay_fields { - // If brokerId is present, verify it's a number (u32) - if let Some(broker_id) = json.get("brokerId") { - if !broker_id.is_null() { - assert!( - broker_id.is_number(), - "'brokerId' should be a number when present" - ); - } - } - - // If storageVersion is present, verify it's a number (u16) - if let Some(version) = json.get("storageVersion") { - if !version.is_null() { - assert!( - version.is_number(), - "'storageVersion' should be a number when present" - ); - } - } - - // If maxHistoricalRevenue is present, verify it's a number (u32) - if let Some(revenue) = json.get("maxHistoricalRevenue") { - if !revenue.is_null() { - assert!( - revenue.is_number(), - "'maxHistoricalRevenue' should be a number when present" - ); - } - } - } - - println!("ok: Coretime info relay chain response test passed"); - Ok(()) -} - -// ============================================================================ -// Overview Response Structure Tests -// ============================================================================ - -/// Test that the coretime/overview endpoint returns valid JSON with correct structure -#[tokio::test] -async fn test_coretime_overview_response_structure() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - tracing::info!("Testing /v1/coretime/overview endpoint structure"); - let (status, json) = client.get_json("/v1/coretime/overview").await?; - - assert!( - status.is_success(), - "Coretime overview endpoint should return success status, got {}", - status - ); - - // Verify response has required fields - assert!(json.get("at").is_some(), "Response should have 'at' field"); - assert!( - json.get("cores").is_some(), - "Response should have 'cores' field" - ); - - // Verify 'at' structure - let at = &json["at"]; - assert!( - at.get("hash").is_some(), - "Response 'at' should have 'hash' field" - ); - assert!( - at.get("height").is_some(), - "Response 'at' should have 'height' field" - ); - assert!(at["hash"].is_string(), "'at.hash' should be a string"); - assert!(at["height"].is_string(), "'at.height' should be a string"); - - // Verify hash format (should start with 0x) - let hash = at["hash"].as_str().unwrap(); - assert!( - hash.starts_with("0x"), - "'at.hash' should be a hex string starting with 0x" - ); - - // Verify cores is an array - assert!(json["cores"].is_array(), "'cores' should be an array"); - - println!("ok: Coretime overview response structure test passed"); - Ok(()) -} - -/// Test core item structure when cores are present -#[tokio::test] -async fn test_coretime_overview_item_structure() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - let (status, json) = client.get_json("/v1/coretime/overview").await?; - assert!(status.is_success()); - - let cores = json["cores"].as_array().unwrap(); - - if cores.is_empty() { - println!("Skipping item structure test: No cores present on chain"); - return Ok(()); - } - - // Check first core item structure - let core = &cores[0]; - - // Required fields - assert!( - core.get("coreId").is_some(), - "Core should have 'coreId' field" - ); - assert!( - core.get("paraId").is_some(), - "Core should have 'paraId' field" - ); - assert!( - core.get("workload").is_some(), - "Core should have 'workload' field" - ); - assert!( - core.get("workplan").is_some(), - "Core should have 'workplan' field" - ); - assert!(core.get("type").is_some(), "Core should have 'type' field"); - assert!( - core.get("regions").is_some(), - "Core should have 'regions' field" - ); - - assert!(core["coreId"].is_number(), "'coreId' should be a number"); - assert!(core["paraId"].is_string(), "'paraId' should be a string"); - assert!( - core["workload"].is_object(), - "'workload' should be an object" - ); - assert!(core["workplan"].is_array(), "'workplan' should be an array"); - assert!(core["type"].is_object(), "'type' should be an object"); - assert!(core["regions"].is_array(), "'regions' should be an array"); - - // Validate workload structure - let workload = &core["workload"]; - assert!( - workload.get("isPool").is_some(), - "Workload should have 'isPool' field" - ); - assert!( - workload.get("isTask").is_some(), - "Workload should have 'isTask' field" - ); - assert!( - workload.get("mask").is_some(), - "Workload should have 'mask' field" - ); - assert!( - workload.get("task").is_some(), - "Workload should have 'task' field" - ); - - assert!( - workload["isPool"].is_boolean(), - "'workload.isPool' should be a boolean" - ); - assert!( - workload["isTask"].is_boolean(), - "'workload.isTask' should be a boolean" - ); - assert!( - workload["mask"].is_string(), - "'workload.mask' should be a string" - ); - assert!( - workload["task"].is_string(), - "'workload.task' should be a string" - ); - - // Validate mask format (should start with 0x, 10 bytes = 20 hex chars) - let mask = workload["mask"].as_str().unwrap(); - assert!( - mask.starts_with("0x"), - "'workload.mask' should be a hex string starting with 0x" - ); - assert_eq!( - mask.len(), - 22, - "'workload.mask' should be 22 characters (0x + 20 hex digits for 10 bytes)" - ); - - // Validate type structure - let core_type = &core["type"]; - assert!( - core_type.get("condition").is_some(), - "Type should have 'condition' field" - ); - assert!( - core_type["condition"].is_string(), - "'type.condition' should be a string" - ); - - let condition = core_type["condition"].as_str().unwrap(); - assert!( - condition == "lease" - || condition == "bulk" - || condition == "reservation" - || condition == "ondemand", - "'type.condition' should be 'lease', 'bulk', 'reservation', or 'ondemand', got: {}", - condition - ); - - println!( - "ok: Coretime overview item structure test passed ({} cores found)", - cores.len() - ); - Ok(()) -} - -// ============================================================================ -// Overview Query Parameter Tests -// ============================================================================ - -/// Test the 'at' query parameter with a block number for overview -#[tokio::test] -async fn test_coretime_overview_at_block_number() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - // First get the latest block to find a valid block number - let (_, latest_json) = client.get_json("/v1/coretime/overview").await?; - let latest_height: u64 = latest_json["at"]["height"] - .as_str() - .unwrap() - .parse() - .unwrap(); - - // Query a slightly older block (if available) - let query_height = if latest_height > 10 { - latest_height - 5 - } else { - latest_height - }; - - let (status, json) = client - .get_json(&format!("/v1/coretime/overview?at={}", query_height)) - .await?; - - assert!( - status.is_success(), - "Should succeed with valid block number, got {}", - status - ); - - // Verify the response is at the requested block - let response_height: u64 = json["at"]["height"].as_str().unwrap().parse().unwrap(); - assert_eq!( - response_height, query_height, - "Response should be at the requested block height" - ); - - println!("ok: Coretime overview 'at' block number test passed"); - Ok(()) -} - -/// Test the 'at' query parameter with a block hash for overview -#[tokio::test] -async fn test_coretime_overview_at_block_hash() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - // First get the latest block to get a valid block hash - let (_, latest_json) = client.get_json("/v1/coretime/overview").await?; - let block_hash = latest_json["at"]["hash"].as_str().unwrap(); - - let (status, json) = client - .get_json(&format!("/v1/coretime/overview?at={}", block_hash)) - .await?; - - assert!( - status.is_success(), - "Should succeed with valid block hash, got {}", - status - ); - - // Verify the response has the same hash - let response_hash = json["at"]["hash"].as_str().unwrap(); - assert_eq!( - response_hash, block_hash, - "Response should be at the requested block hash" - ); - - println!("ok: Coretime overview 'at' block hash test passed"); - Ok(()) -} - -// ============================================================================ -// Overview Error Handling Tests -// ============================================================================ - -/// Test error response for invalid block parameter for overview -#[tokio::test] -async fn test_coretime_overview_invalid_block_param() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - // Coretime routes only exist on relay and coretime chains - if !is_coretime_chain(&client).await && !is_relay_chain(&client).await { - println!("Skipping test: No coretime routes on this chain type"); - return Ok(()); - } - - let response = client.get("/v1/coretime/overview?at=invalid-block").await?; - - assert_eq!( - response.status.as_u16(), - 400, - "Should return 400 for invalid block parameter" - ); - - println!("ok: Coretime overview invalid block parameter test passed"); - Ok(()) -} - -/// Test error response for non-existent block (very high block number) for overview -#[tokio::test] -async fn test_coretime_overview_nonexistent_block() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - // Coretime routes only exist on relay and coretime chains - if !is_coretime_chain(&client).await && !is_relay_chain(&client).await { - println!("Skipping test: No coretime routes on this chain type"); - return Ok(()); - } - - // Use a very high block number that doesn't exist - let response = client.get("/v1/coretime/overview?at=999999999").await?; - - // Should return 400 for non-existent block (block number larger than chain height) - assert_eq!( - response.status.as_u16(), - 400, - "Should return 400 for non-existent block, got {}", - response.status - ); - - let json = response.json()?; - assert!( - json["message"] - .as_str() - .map(|m| m.to_lowercase().contains("block")) - .unwrap_or(false), - "Error message should mention block: {:?}", - json - ); - - println!("ok: Coretime overview non-existent block test passed"); - Ok(()) -} - -/// Test error response for very large block numbers that cause RPC errors for overview -#[tokio::test] -async fn test_coretime_overview_very_large_block_number() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - // Coretime routes only exist on relay and coretime chains - if !is_coretime_chain(&client).await && !is_relay_chain(&client).await { - println!("Skipping test: No coretime routes on this chain type"); - return Ok(()); - } - - let response = client.get("/v1/coretime/overview?at=999999999999").await?; - - assert_eq!( - response.status.as_u16(), - 400, - "Should return 400 for very large block number, got {}", - response.status - ); - - println!("ok: Coretime overview very large block number test passed"); - Ok(()) -} - -/// Test error response for invalid block hash format for overview -#[tokio::test] -async fn test_coretime_overview_invalid_block_hash() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - // Invalid hex string (not 32 bytes) - let response = client.get("/v1/coretime/overview?at=0xabc123").await?; - - // Should return 400 or 404 for invalid block hash format - assert!( - response.status.as_u16() == 400 || response.status.as_u16() == 404, - "Should return 400 or 404 for invalid block hash format, got {}", - response.status - ); - - println!("ok: Coretime overview invalid block hash test passed"); - Ok(()) -} - -// ============================================================================ -// Overview Consistency Tests -// ============================================================================ - -/// Test that multiple requests return consistent data for overview -#[tokio::test] -async fn test_coretime_overview_consistency() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - // Get the latest block hash to ensure we're querying the same block - let (_, first_response) = client.get_json("/v1/coretime/overview").await?; - let block_hash = first_response["at"]["hash"].as_str().unwrap(); - - // Query the same block multiple times - for i in 0..3 { - let (status, json) = client - .get_json(&format!("/v1/coretime/overview?at={}", block_hash)) - .await?; - - assert!(status.is_success(), "Request {} should succeed", i + 1); - - assert_eq!( - json["at"]["hash"].as_str().unwrap(), - block_hash, - "Request {} should return same block hash", - i + 1 - ); - - assert_eq!( - json["cores"].as_array().map(|a| a.len()), - first_response["cores"].as_array().map(|a| a.len()), - "Request {} should return same number of cores", - i + 1 - ); - } - - println!("ok: Coretime overview consistency test passed"); - Ok(()) -} - -/// Test that cores are sorted by core ID -#[tokio::test] -async fn test_coretime_overview_sorting() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - let (status, json) = client.get_json("/v1/coretime/overview").await?; - assert!(status.is_success()); - - let cores = json["cores"].as_array().unwrap(); - - if cores.len() < 2 { - println!("Skipping sorting test: Need at least 2 cores to verify sorting"); - return Ok(()); - } - - // Check that cores are sorted by core ID (ascending) - let mut last_core_id: Option = None; - - for core in cores { - let core_id = core["coreId"].as_u64().unwrap(); - - if let Some(last) = last_core_id { - assert!( - core_id >= last, - "Cores should be sorted by coreId (ascending): {} should come after {}", - core_id, - last - ); - } - - last_core_id = Some(core_id); - } - - println!("ok: Coretime overview sorting test passed"); - Ok(()) -} - -// ============================================================================ -// Overview Data Consistency Tests -// ============================================================================ - -/// Test that overview aggregates data correctly from other endpoints -#[tokio::test] -async fn test_coretime_overview_data_aggregation() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - // Get overview at specific block - let (_, overview_json) = client.get_json("/v1/coretime/overview").await?; - let block_hash = overview_json["at"]["hash"].as_str().unwrap(); - - // Get individual endpoints at the same block for comparison - let (_, leases_json) = client - .get_json(&format!("/v1/coretime/leases?at={}", block_hash)) - .await?; - let (_, reservations_json) = client - .get_json(&format!("/v1/coretime/reservations?at={}", block_hash)) - .await?; - let (_, regions_json) = client - .get_json(&format!("/v1/coretime/regions?at={}", block_hash)) - .await?; - - let cores = overview_json["cores"].as_array().unwrap(); - let leases = leases_json["leases"].as_array().unwrap(); - let reservations = reservations_json["reservations"].as_array().unwrap(); - let regions = regions_json["regions"].as_array().unwrap(); - - // Count cores by type in overview - let mut lease_count = 0; - let mut reservation_count = 0; - let mut ondemand_count = 0; - let mut bulk_count = 0; - - for core in cores { - match core["type"]["condition"].as_str().unwrap() { - "lease" => lease_count += 1, - "reservation" => reservation_count += 1, - "ondemand" => ondemand_count += 1, - "bulk" => bulk_count += 1, - _ => {} - } - } - - // Verify counts are reasonable (overview should see same or more cores than individual endpoints) - // Note: The counts may not match exactly due to the classification logic - println!( - "Overview: {} cores ({} lease, {} reservation, {} ondemand, {} bulk)", - cores.len(), - lease_count, - reservation_count, - ondemand_count, - bulk_count - ); - println!( - "Individual endpoints: {} leases, {} reservations, {} regions", - leases.len(), - reservations.len(), - regions.len() - ); - - // Basic sanity checks - assert!( - cores.len() > 0 || (leases.is_empty() && reservations.is_empty()), - "If there are leases or reservations, there should be cores in overview" - ); - - println!("ok: Coretime overview data aggregation test passed"); - Ok(()) -} - -/// Test that workplan entries have correct structure -#[tokio::test] -async fn test_coretime_overview_workplan_structure() -> Result<()> { - init_tracing(); - let client = setup_client().await?; - - if !is_coretime_chain(&client).await { - println!("Skipping test: Not a coretime chain (Broker pallet not found)"); - return Ok(()); - } - - let (status, json) = client.get_json("/v1/coretime/overview").await?; - assert!(status.is_success()); - - let cores = json["cores"].as_array().unwrap(); - - // Find a core with workplan entries - let core_with_workplan = cores.iter().find(|c| { - c["workplan"] - .as_array() - .map(|arr| !arr.is_empty()) - .unwrap_or(false) - }); - - if let Some(core) = core_with_workplan { - let workplan = core["workplan"].as_array().unwrap(); - let entry = &workplan[0]; - - // Verify workplan entry structure - assert!( - entry.get("core").is_some(), - "Workplan entry should have 'core' field" - ); - assert!( - entry.get("timeslice").is_some(), - "Workplan entry should have 'timeslice' field" - ); - assert!( - entry.get("info").is_some(), - "Workplan entry should have 'info' field" - ); - - assert!( - entry["core"].is_number(), - "'workplan.core' should be a number" - ); - assert!( - entry["timeslice"].is_number(), - "'workplan.timeslice' should be a number" - ); - assert!( - entry["info"].is_array(), - "'workplan.info' should be an array" - ); - - // If info array is not empty, check its structure - if let Some(info_array) = entry["info"].as_array() { - if !info_array.is_empty() { - let info_item = &info_array[0]; - assert!( - info_item.get("isPool").is_some(), - "Workplan info should have 'isPool' field" - ); - assert!( - info_item.get("isTask").is_some(), - "Workplan info should have 'isTask' field" - ); - assert!( - info_item.get("mask").is_some(), - "Workplan info should have 'mask' field" - ); - assert!( - info_item.get("task").is_some(), - "Workplan info should have 'task' field" - ); - } - } - - println!( - "ok: Coretime overview workplan structure test passed ({} workplan entries in first matching core)", - workplan.len() - ); - } else { - println!("Skipping workplan structure test: No cores have workplan entries"); - } - - Ok(()) -} diff --git a/crates/integration_tests/tests/coretime/info.rs b/crates/integration_tests/tests/coretime/info.rs new file mode 100644 index 000000000..871c6a57b --- /dev/null +++ b/crates/integration_tests/tests/coretime/info.rs @@ -0,0 +1,486 @@ +// Copyright (C) 2026 Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later + +//! Integration tests for the /v1/coretime/info endpoint. + +use super::{init_tracing, is_coretime_chain, setup_client}; +use anyhow::Result; + + println!("ok: Coretime regions sorting test passed"); + Ok(()) +} + +/// Test that the coretime/info endpoint returns valid JSON with correct structure for coretime chains +#[tokio::test] +async fn test_coretime_info_response_structure() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + tracing::info!("Testing /v1/coretime/info endpoint structure on coretime chain"); + let (status, json) = client.get_json("/v1/coretime/info").await?; + + assert!( + status.is_success(), + "Coretime info endpoint should return success status, got {}", + status + ); + + // Verify response has required fields + assert!(json.get("at").is_some(), "Response should have 'at' field"); + + // Verify 'at' structure + let at = &json["at"]; + assert!( + at.get("hash").is_some(), + "Response 'at' should have 'hash' field" + ); + assert!( + at.get("height").is_some(), + "Response 'at' should have 'height' field" + ); + assert!(at["hash"].is_string(), "'at.hash' should be a string"); + assert!(at["height"].is_string(), "'at.height' should be a string"); + + // Verify hash format (should start with 0x) + let hash = at["hash"].as_str().unwrap(); + assert!( + hash.starts_with("0x"), + "'at.hash' should be a hex string starting with 0x" + ); + + println!("ok: Coretime info response structure test passed"); + Ok(()) +} + +/// Test coretime/info configuration section +#[tokio::test] +async fn test_coretime_info_configuration() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + let (status, json) = client.get_json("/v1/coretime/info").await?; + assert!(status.is_success()); + + // Configuration may be present if broker is configured + if let Some(config) = json.get("configuration") { + if !config.is_null() { + assert!( + config.get("regionLength").is_some(), + "Configuration should have 'regionLength'" + ); + assert!( + config.get("interludeLength").is_some(), + "Configuration should have 'interludeLength'" + ); + assert!( + config.get("leadinLength").is_some(), + "Configuration should have 'leadinLength'" + ); + assert!( + config.get("relayBlocksPerTimeslice").is_some(), + "Configuration should have 'relayBlocksPerTimeslice'" + ); + + // Verify values are numbers (u32 fields) + assert!( + config["regionLength"].is_number(), + "'regionLength' should be a number" + ); + assert!( + config["relayBlocksPerTimeslice"].is_number(), + "'relayBlocksPerTimeslice' should be a number" + ); + + println!( + "ok: Configuration found - regionLength: {}, timeslicePeriod: {}", + config["regionLength"], config["relayBlocksPerTimeslice"] + ); + } + } + + println!("ok: Coretime info configuration test passed"); + Ok(()) +} + +/// Test coretime/info cores section +#[tokio::test] +async fn test_coretime_info_cores() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + let (status, json) = client.get_json("/v1/coretime/info").await?; + assert!(status.is_success()); + + // Cores section may be present if a sale is active + if let Some(cores) = json.get("cores") { + if !cores.is_null() { + assert!( + cores.get("available").is_some(), + "Cores should have 'available'" + ); + assert!(cores.get("sold").is_some(), "Cores should have 'sold'"); + assert!(cores.get("total").is_some(), "Cores should have 'total'"); + assert!( + cores.get("currentCorePrice").is_some(), + "Cores should have 'currentCorePrice'" + ); + + // Verify types - u32 fields are numbers, u128 (Balance) fields are strings + assert!( + cores["available"].is_number(), + "'available' should be a number" + ); + assert!(cores["sold"].is_number(), "'sold' should be a number"); + assert!(cores["total"].is_number(), "'total' should be a number"); + assert!( + cores["currentCorePrice"].is_string(), + "'currentCorePrice' should be a string (u128 Balance)" + ); + + // Verify logical constraints + let available = cores["available"].as_u64().unwrap(); + let sold = cores["sold"].as_u64().unwrap(); + let total = cores["total"].as_u64().unwrap(); + assert!( + available + sold <= total, + "available + sold should be <= total" + ); + + println!( + "ok: Cores found - available: {}, sold: {}, total: {}", + available, sold, total + ); + } + } + + println!("ok: Coretime info cores test passed"); + Ok(()) +} + +/// Test coretime/info phase section +#[tokio::test] +async fn test_coretime_info_phase() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + let (status, json) = client.get_json("/v1/coretime/info").await?; + assert!(status.is_success()); + + // Phase section may be present if broker is configured and sale is active + if let Some(phase) = json.get("phase") { + if !phase.is_null() { + assert!( + phase.get("currentPhase").is_some(), + "Phase should have 'currentPhase'" + ); + assert!(phase.get("config").is_some(), "Phase should have 'config'"); + + let current_phase = phase["currentPhase"].as_str().unwrap(); + assert!( + ["renewals", "priceDiscovery", "fixedPrice"].contains(¤t_phase), + "'currentPhase' should be one of: renewals, priceDiscovery, fixedPrice, got: {}", + current_phase + ); + + // Verify config is an array + assert!(phase["config"].is_array(), "'config' should be an array"); + + let config_array = phase["config"].as_array().unwrap(); + if !config_array.is_empty() { + let first_phase = &config_array[0]; + assert!( + first_phase.get("phaseName").is_some(), + "Phase config should have 'phaseName'" + ); + assert!( + first_phase.get("lastRelayBlock").is_some(), + "Phase config should have 'lastRelayBlock'" + ); + assert!( + first_phase.get("lastTimeslice").is_some(), + "Phase config should have 'lastTimeslice'" + ); + } + + println!("ok: Phase found - currentPhase: {}", current_phase); + } + } + + println!("ok: Coretime info phase test passed"); + Ok(()) +} + +/// Test coretime/info 'at' query parameter with block number +#[tokio::test] +async fn test_coretime_info_at_block_number() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + // First get the latest block to find a valid block number + let (_, latest_json) = client.get_json("/v1/coretime/info").await?; + let latest_height: u64 = latest_json["at"]["height"] + .as_str() + .unwrap() + .parse() + .unwrap(); + + // Query a slightly older block (if available) + let query_height = if latest_height > 10 { + latest_height - 5 + } else { + latest_height + }; + + let (status, json) = client + .get_json(&format!("/v1/coretime/info?at={}", query_height)) + .await?; + + assert!( + status.is_success(), + "Should succeed with valid block number, got {}", + status + ); + + // Verify the response is at the requested block + let response_height: u64 = json["at"]["height"].as_str().unwrap().parse().unwrap(); + assert_eq!( + response_height, query_height, + "Response should be at the requested block height" + ); + + println!("ok: Coretime info 'at' block number test passed"); + Ok(()) +} + +/// Test coretime/info 'at' query parameter with block hash +#[tokio::test] +async fn test_coretime_info_at_block_hash() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + // First get the latest block to get a valid block hash + let (_, latest_json) = client.get_json("/v1/coretime/info").await?; + let block_hash = latest_json["at"]["hash"].as_str().unwrap(); + + let (status, json) = client + .get_json(&format!("/v1/coretime/info?at={}", block_hash)) + .await?; + + assert!( + status.is_success(), + "Should succeed with valid block hash, got {}", + status + ); + + // Verify the response has the same hash + let response_hash = json["at"]["hash"].as_str().unwrap(); + assert_eq!( + response_hash, block_hash, + "Response should be at the requested block hash" + ); + + println!("ok: Coretime info 'at' block hash test passed"); + Ok(()) +} + +/// Test coretime/info error response for invalid block parameter +#[tokio::test] +async fn test_coretime_info_invalid_block_param() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + // Coretime routes only exist on relay and coretime chains + if !is_coretime_chain(&client).await && !is_relay_chain(&client).await { + println!("Skipping test: No coretime routes on this chain type"); + return Ok(()); + } + + let response = client.get("/v1/coretime/info?at=invalid-block").await?; + + assert_eq!( + response.status.as_u16(), + 400, + "Should return 400 for invalid block parameter" + ); + + println!("ok: Coretime info invalid block parameter test passed"); + Ok(()) +} + +/// Test coretime/info error response for non-existent block +#[tokio::test] +async fn test_coretime_info_nonexistent_block() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + // Coretime routes only exist on relay and coretime chains + if !is_coretime_chain(&client).await && !is_relay_chain(&client).await { + println!("Skipping test: No coretime routes on this chain type"); + return Ok(()); + } + + // Use a very high block number that doesn't exist + let response = client.get("/v1/coretime/info?at=999999999").await?; + + // Should return 400 for non-existent block (block number larger than chain height) + assert_eq!( + response.status.as_u16(), + 400, + "Should return 400 for non-existent block, got {}", + response.status + ); + + println!("ok: Coretime info non-existent block test passed"); + Ok(()) +} + +/// Test coretime/info consistency across multiple requests +#[tokio::test] +async fn test_coretime_info_consistency() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + // Get the latest block hash to ensure we're querying the same block + let (_, first_response) = client.get_json("/v1/coretime/info").await?; + let block_hash = first_response["at"]["hash"].as_str().unwrap(); + + // Query the same block multiple times + for i in 0..3 { + let (status, json) = client + .get_json(&format!("/v1/coretime/info?at={}", block_hash)) + .await?; + + assert!(status.is_success(), "Request {} should succeed", i + 1); + + assert_eq!( + json["at"]["hash"].as_str().unwrap(), + block_hash, + "Request {} should return same block hash", + i + 1 + ); + } + + println!("ok: Coretime info consistency test passed"); + Ok(()) +} + +/// Check if the connected chain is a relay chain (has Coretime pallet but not Broker) +async fn is_relay_chain(client: &TestClient) -> bool { + if let Ok((status, json)) = client.get_json("/v1/capabilities").await { + if status.is_success() { + if let Some(pallets) = json["pallets"].as_array() { + let has_coretime = pallets.iter().any(|p| p.as_str() == Some("Coretime")); + let has_broker = pallets.iter().any(|p| p.as_str() == Some("Broker")); + return has_coretime && !has_broker; + } + } + } + false +} + +/// Test that the coretime/info endpoint returns valid JSON on relay chains +#[tokio::test] +async fn test_coretime_info_relay_chain_response() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_relay_chain(&client).await { + println!( + "Skipping test: Not a relay chain (Coretime pallet not found or Broker pallet present)" + ); + return Ok(()); + } + + tracing::info!("Testing /v1/coretime/info endpoint structure on relay chain"); + let (status, json) = client.get_json("/v1/coretime/info").await?; + + assert!( + status.is_success(), + "Coretime info endpoint should return success status on relay chain, got {}", + status + ); + + // Verify response has required fields + assert!(json.get("at").is_some(), "Response should have 'at' field"); + + // Verify 'at' structure + let at = &json["at"]; + assert!(at["hash"].is_string(), "'at.hash' should be a string"); + assert!(at["height"].is_string(), "'at.height' should be a string"); + + // Check for relay-chain specific fields (any of these may be present) + let has_relay_fields = json.get("brokerId").is_some() + || json.get("storageVersion").is_some() + || json.get("maxHistoricalRevenue").is_some(); + + if has_relay_fields { + // If brokerId is present, verify it's a number (u32) + if let Some(broker_id) = json.get("brokerId") { + if !broker_id.is_null() { + assert!( + broker_id.is_number(), + "'brokerId' should be a number when present" + ); + } + } + + // If storageVersion is present, verify it's a number (u16) + if let Some(version) = json.get("storageVersion") { + if !version.is_null() { + assert!( + version.is_number(), + "'storageVersion' should be a number when present" + ); + } + } + + // If maxHistoricalRevenue is present, verify it's a number (u32) + if let Some(revenue) = json.get("maxHistoricalRevenue") { + if !revenue.is_null() { + assert!( + revenue.is_number(), + "'maxHistoricalRevenue' should be a number when present" + ); + } + } + } + + println!("ok: Coretime info relay chain response test passed"); + Ok(()) +} + diff --git a/crates/integration_tests/tests/coretime/leases.rs b/crates/integration_tests/tests/coretime/leases.rs new file mode 100644 index 000000000..a9ae2bea7 --- /dev/null +++ b/crates/integration_tests/tests/coretime/leases.rs @@ -0,0 +1,434 @@ +// Copyright (C) 2026 Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later + +//! Integration tests for the /v1/coretime/leases endpoint. + +use super::{init_tracing, is_coretime_chain, setup_client}; +use anyhow::Result; + +// ============================================================================ +// Response Structure Tests +// ============================================================================ + +/// Test that the coretime/leases endpoint returns valid JSON with correct structure +#[tokio::test] +async fn test_coretime_leases_response_structure() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + tracing::info!("Testing /v1/coretime/leases endpoint structure"); + let (status, json) = client.get_json("/v1/coretime/leases").await?; + + assert!( + status.is_success(), + "Coretime leases endpoint should return success status, got {}", + status + ); + + // Verify response has required fields + assert!(json.get("at").is_some(), "Response should have 'at' field"); + assert!( + json.get("leases").is_some(), + "Response should have 'leases' field" + ); + + // Verify 'at' structure + let at = &json["at"]; + assert!( + at.get("hash").is_some(), + "Response 'at' should have 'hash' field" + ); + assert!( + at.get("height").is_some(), + "Response 'at' should have 'height' field" + ); + assert!(at["hash"].is_string(), "'at.hash' should be a string"); + assert!(at["height"].is_string(), "'at.height' should be a string"); + + // Verify hash format (should start with 0x) + let hash = at["hash"].as_str().unwrap(); + assert!( + hash.starts_with("0x"), + "'at.hash' should be a hex string starting with 0x" + ); + + // Verify leases is an array + assert!(json["leases"].is_array(), "'leases' should be an array"); + + println!("ok: Coretime leases response structure test passed"); + Ok(()) +} + +/// Test lease item structure when leases are present +#[tokio::test] +async fn test_coretime_leases_item_structure() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + let (status, json) = client.get_json("/v1/coretime/leases").await?; + assert!(status.is_success()); + + let leases = json["leases"].as_array().unwrap(); + + if leases.is_empty() { + println!("Skipping item structure test: No leases present on chain"); + return Ok(()); + } + + // Check first lease item structure + let lease = &leases[0]; + + assert!( + lease.get("task").is_some(), + "Lease should have 'task' field" + ); + assert!( + lease.get("until").is_some(), + "Lease should have 'until' field" + ); + + assert!(lease["task"].is_string(), "'task' should be a string"); + assert!(lease["until"].is_number(), "'until' should be a number"); + + // 'core' is optional but if present should be a number + if lease.get("core").is_some() && !lease["core"].is_null() { + assert!( + lease["core"].is_number(), + "'core' should be a number when present" + ); + } + + // Validate task is a valid parachain ID (numeric string) + let task = lease["task"].as_str().unwrap(); + assert!( + task.parse::().is_ok(), + "'task' should be a numeric string (parachain ID)" + ); + + // Validate until is a positive number + let until_num = lease["until"].as_u64().expect("'until' should be a number"); + assert!( + until_num > 0, + "'until' should be a positive timeslice value" + ); + + println!( + "ok: Coretime leases item structure test passed ({} leases found)", + leases.len() + ); + Ok(()) +} + +// ============================================================================ +// Query Parameter Tests +// ============================================================================ + +/// Test the 'at' query parameter with a block number +#[tokio::test] +async fn test_coretime_leases_at_block_number() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + // First get the latest block to find a valid block number + let (_, latest_json) = client.get_json("/v1/coretime/leases").await?; + let latest_height: u64 = latest_json["at"]["height"] + .as_str() + .unwrap() + .parse() + .unwrap(); + + // Query a slightly older block (if available) + let query_height = if latest_height > 10 { + latest_height - 5 + } else { + latest_height + }; + + let (status, json) = client + .get_json(&format!("/v1/coretime/leases?at={}", query_height)) + .await?; + + assert!( + status.is_success(), + "Should succeed with valid block number, got {}", + status + ); + + // Verify the response is at the requested block + let response_height: u64 = json["at"]["height"].as_str().unwrap().parse().unwrap(); + assert_eq!( + response_height, query_height, + "Response should be at the requested block height" + ); + + println!("ok: Coretime leases 'at' block number test passed"); + Ok(()) +} + +/// Test the 'at' query parameter with a block hash +#[tokio::test] +async fn test_coretime_leases_at_block_hash() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + // First get the latest block to get a valid block hash + let (_, latest_json) = client.get_json("/v1/coretime/leases").await?; + let block_hash = latest_json["at"]["hash"].as_str().unwrap(); + + let (status, json) = client + .get_json(&format!("/v1/coretime/leases?at={}", block_hash)) + .await?; + + assert!( + status.is_success(), + "Should succeed with valid block hash, got {}", + status + ); + + // Verify the response has the same hash + let response_hash = json["at"]["hash"].as_str().unwrap(); + assert_eq!( + response_hash, block_hash, + "Response should be at the requested block hash" + ); + + println!("ok: Coretime leases 'at' block hash test passed"); + Ok(()) +} + +// ============================================================================ +// Error Handling Tests +// ============================================================================ + +/// Test error response for invalid block parameter +#[tokio::test] +async fn test_coretime_leases_invalid_block_param() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain"); + return Ok(()); + } + + let response = client.get("/v1/coretime/leases?at=invalid-block").await?; + + assert_eq!( + response.status.as_u16(), + 400, + "Should return 400 for invalid block parameter" + ); + + println!("ok: Coretime leases invalid block parameter test passed"); + Ok(()) +} + +/// Test error response for non-existent block (very high block number) +#[tokio::test] +async fn test_coretime_leases_nonexistent_block() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain"); + return Ok(()); + } + + // Use a very high block number that doesn't exist + let response = client.get("/v1/coretime/leases?at=999999999").await?; + + // Should return 400 for non-existent block (block number larger than chain height) + assert_eq!( + response.status.as_u16(), + 400, + "Should return 400 for non-existent block, got {}", + response.status + ); + + let json = response.json()?; + assert!( + json["message"] + .as_str() + .map(|m| m.to_lowercase().contains("block")) + .unwrap_or(false), + "Error message should mention block: {:?}", + json + ); + + println!("ok: Coretime leases non-existent block test passed"); + Ok(()) +} + +/// Test error response for very large block numbers that cause RPC errors +#[tokio::test] +async fn test_coretime_leases_very_large_block_number() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain"); + return Ok(()); + } + + let response = client.get("/v1/coretime/leases?at=999999999999").await?; + + assert_eq!( + response.status.as_u16(), + 400, + "Should return 400 for very large block number, got {}", + response.status + ); + + println!("ok: Coretime leases very large block number test passed"); + Ok(()) +} + +/// Test error response for invalid block hash format +#[tokio::test] +async fn test_coretime_leases_invalid_block_hash() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain"); + return Ok(()); + } + + // Invalid hex string (not 32 bytes) + let response = client.get("/v1/coretime/leases?at=0xabc123").await?; + + assert!( + response.status.as_u16() == 400 || response.status.as_u16() == 404, + "Should return 400 or 404 for invalid block hash format, got {}", + response.status + ); + + println!("ok: Coretime leases invalid block hash test passed"); + Ok(()) +} + +// ============================================================================ +// Consistency Tests +// ============================================================================ + +/// Test that multiple requests return consistent data +#[tokio::test] +async fn test_coretime_leases_consistency() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + // Get the latest block hash to ensure we're querying the same block + let (_, first_response) = client.get_json("/v1/coretime/leases").await?; + let block_hash = first_response["at"]["hash"].as_str().unwrap(); + + // Query the same block multiple times + for i in 0..3 { + let (status, json) = client + .get_json(&format!("/v1/coretime/leases?at={}", block_hash)) + .await?; + + assert!(status.is_success(), "Request {} should succeed", i + 1); + + assert_eq!( + json["at"]["hash"].as_str().unwrap(), + block_hash, + "Request {} should return same block hash", + i + 1 + ); + + assert_eq!( + json["leases"].as_array().map(|a| a.len()), + first_response["leases"].as_array().map(|a| a.len()), + "Request {} should return same number of leases", + i + 1 + ); + } + + println!("ok: Coretime leases consistency test passed"); + Ok(()) +} + +/// Test that leases are sorted by core ID +#[tokio::test] +async fn test_coretime_leases_sorting() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + let (status, json) = client.get_json("/v1/coretime/leases").await?; + assert!(status.is_success()); + + let leases = json["leases"].as_array().unwrap(); + + if leases.len() < 2 { + println!("Skipping sorting test: Need at least 2 leases to verify sorting"); + return Ok(()); + } + + // Check that leases with cores are sorted by core ID + // and leases without cores come last + let mut last_core: Option = None; + let mut seen_none = false; + + for lease in leases { + let core = lease + .get("core") + .and_then(|c| c.as_str()) + .and_then(|s| s.parse::().ok()); + + match (core, last_core, seen_none) { + // If we see a Some after a None, that's wrong + (Some(_), _, true) => { + panic!("Leases with cores should come before leases without cores"); + } + // If we have two Some values, they should be in order + (Some(c), Some(last), _) => { + assert!( + c >= last, + "Leases should be sorted by core ID (ascending): {} should come after {}", + c, + last + ); + } + // If we transition from Some to None, mark it + (None, _, _) => { + seen_none = true; + } + _ => {} + } + + last_core = core; + } + + println!("ok: Coretime leases sorting test passed"); + Ok(()) +} diff --git a/crates/integration_tests/tests/coretime/mod.rs b/crates/integration_tests/tests/coretime/mod.rs new file mode 100644 index 000000000..d39abe476 --- /dev/null +++ b/crates/integration_tests/tests/coretime/mod.rs @@ -0,0 +1,26 @@ +// Copyright (C) 2026 Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later + +//! Integration tests for coretime endpoints. +//! +//! These tests verify the coretime endpoint behavior against a running API server. +//! The endpoints are only available on coretime chains (chains with the Broker pallet). +//! +//! Run with: +//! API_URL=http://localhost:8080 cargo test --package integration_tests --test coretime +//! +//! For testing against a coretime chain: +//! SAS_SUBSTRATE_URL=wss://kusama-coretime-rpc.polkadot.io cargo run --release & +//! API_URL=http://localhost:8080 cargo test --package integration_tests --test coretime + +// Submodules +mod info; +mod leases; +mod overview; +mod regions; +mod renewals; +mod reservations; + +// Re-export common test helpers from the library for use in submodules. +// This provides a convenient way for tests to access these utilities via `super::*`. +pub use integration_tests::test_helpers::{init_tracing, is_coretime_chain, setup_client}; diff --git a/crates/integration_tests/tests/coretime/overview.rs b/crates/integration_tests/tests/coretime/overview.rs new file mode 100644 index 000000000..1d313836e --- /dev/null +++ b/crates/integration_tests/tests/coretime/overview.rs @@ -0,0 +1,651 @@ +// Copyright (C) 2026 Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later + +//! Integration tests for the /v1/coretime/overview endpoint. + +use super::{init_tracing, is_coretime_chain, setup_client}; +use anyhow::Result; + +// ============================================================================ +// Overview Response Structure Tests +// ============================================================================ + +/// Test that the coretime/overview endpoint returns valid JSON with correct structure +#[tokio::test] +async fn test_coretime_overview_response_structure() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + tracing::info!("Testing /v1/coretime/overview endpoint structure"); + let (status, json) = client.get_json("/v1/coretime/overview").await?; + + assert!( + status.is_success(), + "Coretime overview endpoint should return success status, got {}", + status + ); + + // Verify response has required fields + assert!(json.get("at").is_some(), "Response should have 'at' field"); + assert!( + json.get("cores").is_some(), + "Response should have 'cores' field" + ); + + // Verify 'at' structure + let at = &json["at"]; + assert!( + at.get("hash").is_some(), + "Response 'at' should have 'hash' field" + ); + assert!( + at.get("height").is_some(), + "Response 'at' should have 'height' field" + ); + assert!(at["hash"].is_string(), "'at.hash' should be a string"); + assert!(at["height"].is_string(), "'at.height' should be a string"); + + // Verify hash format (should start with 0x) + let hash = at["hash"].as_str().unwrap(); + assert!( + hash.starts_with("0x"), + "'at.hash' should be a hex string starting with 0x" + ); + + // Verify cores is an array + assert!(json["cores"].is_array(), "'cores' should be an array"); + + println!("ok: Coretime overview response structure test passed"); + Ok(()) +} + +/// Test core item structure when cores are present +#[tokio::test] +async fn test_coretime_overview_item_structure() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + let (status, json) = client.get_json("/v1/coretime/overview").await?; + assert!(status.is_success()); + + let cores = json["cores"].as_array().unwrap(); + + if cores.is_empty() { + println!("Skipping item structure test: No cores present on chain"); + return Ok(()); + } + + // Check first core item structure + let core = &cores[0]; + + // Required fields + assert!( + core.get("coreId").is_some(), + "Core should have 'coreId' field" + ); + assert!( + core.get("paraId").is_some(), + "Core should have 'paraId' field" + ); + assert!( + core.get("workload").is_some(), + "Core should have 'workload' field" + ); + assert!( + core.get("workplan").is_some(), + "Core should have 'workplan' field" + ); + assert!(core.get("type").is_some(), "Core should have 'type' field"); + assert!( + core.get("regions").is_some(), + "Core should have 'regions' field" + ); + + assert!(core["coreId"].is_number(), "'coreId' should be a number"); + assert!(core["paraId"].is_string(), "'paraId' should be a string"); + assert!( + core["workload"].is_object(), + "'workload' should be an object" + ); + assert!(core["workplan"].is_array(), "'workplan' should be an array"); + assert!(core["type"].is_object(), "'type' should be an object"); + assert!(core["regions"].is_array(), "'regions' should be an array"); + + // Validate workload structure + let workload = &core["workload"]; + assert!( + workload.get("isPool").is_some(), + "Workload should have 'isPool' field" + ); + assert!( + workload.get("isTask").is_some(), + "Workload should have 'isTask' field" + ); + assert!( + workload.get("mask").is_some(), + "Workload should have 'mask' field" + ); + assert!( + workload.get("task").is_some(), + "Workload should have 'task' field" + ); + + assert!( + workload["isPool"].is_boolean(), + "'workload.isPool' should be a boolean" + ); + assert!( + workload["isTask"].is_boolean(), + "'workload.isTask' should be a boolean" + ); + assert!( + workload["mask"].is_string(), + "'workload.mask' should be a string" + ); + assert!( + workload["task"].is_string(), + "'workload.task' should be a string" + ); + + // Validate mask format (should start with 0x, 10 bytes = 20 hex chars) + let mask = workload["mask"].as_str().unwrap(); + assert!( + mask.starts_with("0x"), + "'workload.mask' should be a hex string starting with 0x" + ); + assert_eq!( + mask.len(), + 22, + "'workload.mask' should be 22 characters (0x + 20 hex digits for 10 bytes)" + ); + + // Validate type structure + let core_type = &core["type"]; + assert!( + core_type.get("condition").is_some(), + "Type should have 'condition' field" + ); + assert!( + core_type["condition"].is_string(), + "'type.condition' should be a string" + ); + + let condition = core_type["condition"].as_str().unwrap(); + assert!( + condition == "lease" + || condition == "bulk" + || condition == "reservation" + || condition == "ondemand", + "'type.condition' should be 'lease', 'bulk', 'reservation', or 'ondemand', got: {}", + condition + ); + + println!( + "ok: Coretime overview item structure test passed ({} cores found)", + cores.len() + ); + Ok(()) +} + +// ============================================================================ +// Overview Query Parameter Tests +// ============================================================================ + +/// Test the 'at' query parameter with a block number for overview +#[tokio::test] +async fn test_coretime_overview_at_block_number() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + // First get the latest block to find a valid block number + let (_, latest_json) = client.get_json("/v1/coretime/overview").await?; + let latest_height: u64 = latest_json["at"]["height"] + .as_str() + .unwrap() + .parse() + .unwrap(); + + // Query a slightly older block (if available) + let query_height = if latest_height > 10 { + latest_height - 5 + } else { + latest_height + }; + + let (status, json) = client + .get_json(&format!("/v1/coretime/overview?at={}", query_height)) + .await?; + + assert!( + status.is_success(), + "Should succeed with valid block number, got {}", + status + ); + + // Verify the response is at the requested block + let response_height: u64 = json["at"]["height"].as_str().unwrap().parse().unwrap(); + assert_eq!( + response_height, query_height, + "Response should be at the requested block height" + ); + + println!("ok: Coretime overview 'at' block number test passed"); + Ok(()) +} + +/// Test the 'at' query parameter with a block hash for overview +#[tokio::test] +async fn test_coretime_overview_at_block_hash() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + // First get the latest block to get a valid block hash + let (_, latest_json) = client.get_json("/v1/coretime/overview").await?; + let block_hash = latest_json["at"]["hash"].as_str().unwrap(); + + let (status, json) = client + .get_json(&format!("/v1/coretime/overview?at={}", block_hash)) + .await?; + + assert!( + status.is_success(), + "Should succeed with valid block hash, got {}", + status + ); + + // Verify the response has the same hash + let response_hash = json["at"]["hash"].as_str().unwrap(); + assert_eq!( + response_hash, block_hash, + "Response should be at the requested block hash" + ); + + println!("ok: Coretime overview 'at' block hash test passed"); + Ok(()) +} + +// ============================================================================ +// Overview Error Handling Tests +// ============================================================================ + +/// Test error response for invalid block parameter for overview +#[tokio::test] +async fn test_coretime_overview_invalid_block_param() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + // Coretime routes only exist on relay and coretime chains + if !is_coretime_chain(&client).await && !is_relay_chain(&client).await { + println!("Skipping test: No coretime routes on this chain type"); + return Ok(()); + } + + let response = client.get("/v1/coretime/overview?at=invalid-block").await?; + + assert_eq!( + response.status.as_u16(), + 400, + "Should return 400 for invalid block parameter" + ); + + println!("ok: Coretime overview invalid block parameter test passed"); + Ok(()) +} + +/// Test error response for non-existent block (very high block number) for overview +#[tokio::test] +async fn test_coretime_overview_nonexistent_block() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + // Coretime routes only exist on relay and coretime chains + if !is_coretime_chain(&client).await && !is_relay_chain(&client).await { + println!("Skipping test: No coretime routes on this chain type"); + return Ok(()); + } + + // Use a very high block number that doesn't exist + let response = client.get("/v1/coretime/overview?at=999999999").await?; + + // Should return 400 for non-existent block (block number larger than chain height) + assert_eq!( + response.status.as_u16(), + 400, + "Should return 400 for non-existent block, got {}", + response.status + ); + + let json = response.json()?; + assert!( + json["message"] + .as_str() + .map(|m| m.to_lowercase().contains("block")) + .unwrap_or(false), + "Error message should mention block: {:?}", + json + ); + + println!("ok: Coretime overview non-existent block test passed"); + Ok(()) +} + +/// Test error response for very large block numbers that cause RPC errors for overview +#[tokio::test] +async fn test_coretime_overview_very_large_block_number() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + // Coretime routes only exist on relay and coretime chains + if !is_coretime_chain(&client).await && !is_relay_chain(&client).await { + println!("Skipping test: No coretime routes on this chain type"); + return Ok(()); + } + + let response = client.get("/v1/coretime/overview?at=999999999999").await?; + + assert_eq!( + response.status.as_u16(), + 400, + "Should return 400 for very large block number, got {}", + response.status + ); + + println!("ok: Coretime overview very large block number test passed"); + Ok(()) +} + +/// Test error response for invalid block hash format for overview +#[tokio::test] +async fn test_coretime_overview_invalid_block_hash() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + // Invalid hex string (not 32 bytes) + let response = client.get("/v1/coretime/overview?at=0xabc123").await?; + + // Should return 400 or 404 for invalid block hash format + assert!( + response.status.as_u16() == 400 || response.status.as_u16() == 404, + "Should return 400 or 404 for invalid block hash format, got {}", + response.status + ); + + println!("ok: Coretime overview invalid block hash test passed"); + Ok(()) +} + +// ============================================================================ +// Overview Consistency Tests +// ============================================================================ + +/// Test that multiple requests return consistent data for overview +#[tokio::test] +async fn test_coretime_overview_consistency() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + // Get the latest block hash to ensure we're querying the same block + let (_, first_response) = client.get_json("/v1/coretime/overview").await?; + let block_hash = first_response["at"]["hash"].as_str().unwrap(); + + // Query the same block multiple times + for i in 0..3 { + let (status, json) = client + .get_json(&format!("/v1/coretime/overview?at={}", block_hash)) + .await?; + + assert!(status.is_success(), "Request {} should succeed", i + 1); + + assert_eq!( + json["at"]["hash"].as_str().unwrap(), + block_hash, + "Request {} should return same block hash", + i + 1 + ); + + assert_eq!( + json["cores"].as_array().map(|a| a.len()), + first_response["cores"].as_array().map(|a| a.len()), + "Request {} should return same number of cores", + i + 1 + ); + } + + println!("ok: Coretime overview consistency test passed"); + Ok(()) +} + +/// Test that cores are sorted by core ID +#[tokio::test] +async fn test_coretime_overview_sorting() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + let (status, json) = client.get_json("/v1/coretime/overview").await?; + assert!(status.is_success()); + + let cores = json["cores"].as_array().unwrap(); + + if cores.len() < 2 { + println!("Skipping sorting test: Need at least 2 cores to verify sorting"); + return Ok(()); + } + + // Check that cores are sorted by core ID (ascending) + let mut last_core_id: Option = None; + + for core in cores { + let core_id = core["coreId"].as_u64().unwrap(); + + if let Some(last) = last_core_id { + assert!( + core_id >= last, + "Cores should be sorted by coreId (ascending): {} should come after {}", + core_id, + last + ); + } + + last_core_id = Some(core_id); + } + + println!("ok: Coretime overview sorting test passed"); + Ok(()) +} + +// ============================================================================ +// Overview Data Consistency Tests +// ============================================================================ + +/// Test that overview aggregates data correctly from other endpoints +#[tokio::test] +async fn test_coretime_overview_data_aggregation() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + // Get overview at specific block + let (_, overview_json) = client.get_json("/v1/coretime/overview").await?; + let block_hash = overview_json["at"]["hash"].as_str().unwrap(); + + // Get individual endpoints at the same block for comparison + let (_, leases_json) = client + .get_json(&format!("/v1/coretime/leases?at={}", block_hash)) + .await?; + let (_, reservations_json) = client + .get_json(&format!("/v1/coretime/reservations?at={}", block_hash)) + .await?; + let (_, regions_json) = client + .get_json(&format!("/v1/coretime/regions?at={}", block_hash)) + .await?; + + let cores = overview_json["cores"].as_array().unwrap(); + let leases = leases_json["leases"].as_array().unwrap(); + let reservations = reservations_json["reservations"].as_array().unwrap(); + let regions = regions_json["regions"].as_array().unwrap(); + + // Count cores by type in overview + let mut lease_count = 0; + let mut reservation_count = 0; + let mut ondemand_count = 0; + let mut bulk_count = 0; + + for core in cores { + match core["type"]["condition"].as_str().unwrap() { + "lease" => lease_count += 1, + "reservation" => reservation_count += 1, + "ondemand" => ondemand_count += 1, + "bulk" => bulk_count += 1, + _ => {} + } + } + + // Verify counts are reasonable (overview should see same or more cores than individual endpoints) + // Note: The counts may not match exactly due to the classification logic + println!( + "Overview: {} cores ({} lease, {} reservation, {} ondemand, {} bulk)", + cores.len(), + lease_count, + reservation_count, + ondemand_count, + bulk_count + ); + println!( + "Individual endpoints: {} leases, {} reservations, {} regions", + leases.len(), + reservations.len(), + regions.len() + ); + + // Basic sanity checks + assert!( + cores.len() > 0 || (leases.is_empty() && reservations.is_empty()), + "If there are leases or reservations, there should be cores in overview" + ); + + println!("ok: Coretime overview data aggregation test passed"); + Ok(()) +} + +/// Test that workplan entries have correct structure +#[tokio::test] +async fn test_coretime_overview_workplan_structure() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + let (status, json) = client.get_json("/v1/coretime/overview").await?; + assert!(status.is_success()); + + let cores = json["cores"].as_array().unwrap(); + + // Find a core with workplan entries + let core_with_workplan = cores.iter().find(|c| { + c["workplan"] + .as_array() + .map(|arr| !arr.is_empty()) + .unwrap_or(false) + }); + + if let Some(core) = core_with_workplan { + let workplan = core["workplan"].as_array().unwrap(); + let entry = &workplan[0]; + + // Verify workplan entry structure + assert!( + entry.get("core").is_some(), + "Workplan entry should have 'core' field" + ); + assert!( + entry.get("timeslice").is_some(), + "Workplan entry should have 'timeslice' field" + ); + assert!( + entry.get("info").is_some(), + "Workplan entry should have 'info' field" + ); + + assert!( + entry["core"].is_number(), + "'workplan.core' should be a number" + ); + assert!( + entry["timeslice"].is_number(), + "'workplan.timeslice' should be a number" + ); + assert!( + entry["info"].is_array(), + "'workplan.info' should be an array" + ); + + // If info array is not empty, check its structure + if let Some(info_array) = entry["info"].as_array() { + if !info_array.is_empty() { + let info_item = &info_array[0]; + assert!( + info_item.get("isPool").is_some(), + "Workplan info should have 'isPool' field" + ); + assert!( + info_item.get("isTask").is_some(), + "Workplan info should have 'isTask' field" + ); + assert!( + info_item.get("mask").is_some(), + "Workplan info should have 'mask' field" + ); + assert!( + info_item.get("task").is_some(), + "Workplan info should have 'task' field" + ); + } + } + + println!( + "ok: Coretime overview workplan structure test passed ({} workplan entries in first matching core)", + workplan.len() + ); + } else { + println!("Skipping workplan structure test: No cores have workplan entries"); + } + + Ok(()) +} diff --git a/crates/integration_tests/tests/coretime/regions.rs b/crates/integration_tests/tests/coretime/regions.rs new file mode 100644 index 000000000..94e9e6aef --- /dev/null +++ b/crates/integration_tests/tests/coretime/regions.rs @@ -0,0 +1,445 @@ +// Copyright (C) 2026 Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later + +//! Integration tests for the /v1/coretime/regions endpoint. + +use super::{init_tracing, is_coretime_chain, setup_client}; +use anyhow::Result; + +// ============================================================================ +// Regions Response Structure Tests +// ============================================================================ + +/// Test that the coretime/regions endpoint returns valid JSON with correct structure +#[tokio::test] +async fn test_coretime_regions_response_structure() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + tracing::info!("Testing /v1/coretime/regions endpoint structure"); + let (status, json) = client.get_json("/v1/coretime/regions").await?; + + assert!( + status.is_success(), + "Coretime regions endpoint should return success status, got {}", + status + ); + + // Verify response has required fields + assert!(json.get("at").is_some(), "Response should have 'at' field"); + assert!( + json.get("regions").is_some(), + "Response should have 'regions' field" + ); + + // Verify 'at' structure + let at = &json["at"]; + assert!( + at.get("hash").is_some(), + "Response 'at' should have 'hash' field" + ); + assert!( + at.get("height").is_some(), + "Response 'at' should have 'height' field" + ); + assert!(at["hash"].is_string(), "'at.hash' should be a string"); + assert!(at["height"].is_string(), "'at.height' should be a string"); + + // Verify hash format (should start with 0x) + let hash = at["hash"].as_str().unwrap(); + assert!( + hash.starts_with("0x"), + "'at.hash' should be a hex string starting with 0x" + ); + + // Verify regions is an array + assert!(json["regions"].is_array(), "'regions' should be an array"); + + println!("ok: Coretime regions response structure test passed"); + Ok(()) +} + +/// Test region item structure when regions are present +#[tokio::test] +async fn test_coretime_regions_item_structure() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + let (status, json) = client.get_json("/v1/coretime/regions").await?; + assert!(status.is_success()); + + let regions = json["regions"].as_array().unwrap(); + + if regions.is_empty() { + println!("Skipping item structure test: No regions present on chain"); + return Ok(()); + } + + // Check first region item structure + let region = ®ions[0]; + + // Required fields + assert!( + region.get("core").is_some(), + "Region should have 'core' field" + ); + assert!( + region.get("begin").is_some(), + "Region should have 'begin' field" + ); + assert!( + region.get("mask").is_some(), + "Region should have 'mask' field" + ); + + assert!(region["core"].is_number(), "'core' should be a number"); + assert!(region["begin"].is_number(), "'begin' should be a number"); + assert!(region["mask"].is_string(), "'mask' should be a string"); + + // Validate mask is a valid hex string (should start with 0x) + let mask = region["mask"].as_str().unwrap(); + assert!( + mask.starts_with("0x"), + "'mask' should be a hex string starting with 0x" + ); + + // CoreMask is 80 bits = 10 bytes = 20 hex chars + "0x" prefix + assert_eq!( + mask.len(), + 22, + "'mask' should be 22 characters (0x + 20 hex digits for 10 bytes)" + ); + + // Optional fields: end, owner, paid + // If present, check their types + if let Some(end) = region.get("end") { + if !end.is_null() { + assert!(end.is_number(), "'end' should be a number when present"); + } + } + + if let Some(owner) = region.get("owner") { + if !owner.is_null() { + assert!(owner.is_string(), "'owner' should be a string when present"); + let owner_str = owner.as_str().unwrap(); + // Owner is an SS58-encoded address (base58 string, typically 47-48 chars) + // This matches substrate-api-sidecar behavior which uses .toString() on AccountId + assert!( + !owner_str.is_empty() && owner_str.chars().all(|c| c.is_alphanumeric()), + "'owner' should be a valid SS58 address string, got: {}", + owner_str + ); + } + } + + if let Some(paid) = region.get("paid") { + if !paid.is_null() { + assert!(paid.is_string(), "'paid' should be a string when present"); + // paid should be a numeric string + let paid_str = paid.as_str().unwrap(); + assert!( + paid_str.parse::().is_ok(), + "'paid' should be a numeric string" + ); + } + } + + println!( + "ok: Coretime regions item structure test passed ({} regions found)", + regions.len() + ); + Ok(()) +} + +// ============================================================================ +// Regions Query Parameter Tests +// ============================================================================ + +/// Test the 'at' query parameter with a block number for regions +#[tokio::test] +async fn test_coretime_regions_at_block_number() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + // First get the latest block to find a valid block number + let (_, latest_json) = client.get_json("/v1/coretime/regions").await?; + let latest_height: u64 = latest_json["at"]["height"] + .as_str() + .unwrap() + .parse() + .unwrap(); + + // Query a slightly older block (if available) + let query_height = if latest_height > 10 { + latest_height - 5 + } else { + latest_height + }; + + let (status, json) = client + .get_json(&format!("/v1/coretime/regions?at={}", query_height)) + .await?; + + assert!( + status.is_success(), + "Should succeed with valid block number, got {}", + status + ); + + // Verify the response is at the requested block + let response_height: u64 = json["at"]["height"].as_str().unwrap().parse().unwrap(); + assert_eq!( + response_height, query_height, + "Response should be at the requested block height" + ); + + println!("ok: Coretime regions 'at' block number test passed"); + Ok(()) +} + +/// Test the 'at' query parameter with a block hash for regions +#[tokio::test] +async fn test_coretime_regions_at_block_hash() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + // First get the latest block to get a valid block hash + let (_, latest_json) = client.get_json("/v1/coretime/regions").await?; + let block_hash = latest_json["at"]["hash"].as_str().unwrap(); + + let (status, json) = client + .get_json(&format!("/v1/coretime/regions?at={}", block_hash)) + .await?; + + assert!( + status.is_success(), + "Should succeed with valid block hash, got {}", + status + ); + + // Verify the response has the same hash + let response_hash = json["at"]["hash"].as_str().unwrap(); + assert_eq!( + response_hash, block_hash, + "Response should be at the requested block hash" + ); + + println!("ok: Coretime regions 'at' block hash test passed"); + Ok(()) +} + +// ============================================================================ +// Regions Error Handling Tests +// ============================================================================ + +/// Test error response for invalid block parameter for regions +#[tokio::test] +async fn test_coretime_regions_invalid_block_param() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain"); + return Ok(()); + } + + let response = client.get("/v1/coretime/regions?at=invalid-block").await?; + + assert_eq!( + response.status.as_u16(), + 400, + "Should return 400 for invalid block parameter" + ); + + println!("ok: Coretime regions invalid block parameter test passed"); + Ok(()) +} + +/// Test error response for non-existent block (very high block number) for regions +#[tokio::test] +async fn test_coretime_regions_nonexistent_block() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain"); + return Ok(()); + } + + // Use a very high block number that doesn't exist + let response = client.get("/v1/coretime/regions?at=999999999").await?; + + assert_eq!( + response.status.as_u16(), + 400, + "Should return 400 for non-existent block, got {}", + response.status + ); + + let json = response.json()?; + assert!( + json["message"] + .as_str() + .map(|m| m.to_lowercase().contains("block")) + .unwrap_or(false), + "Error message should mention block: {:?}", + json + ); + + println!("ok: Coretime regions non-existent block test passed"); + Ok(()) +} + +/// Test error response for very large block numbers that cause RPC errors for regions +#[tokio::test] +async fn test_coretime_regions_very_large_block_number() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain"); + return Ok(()); + } + + let response = client.get("/v1/coretime/regions?at=999999999999").await?; + + assert_eq!( + response.status.as_u16(), + 400, + "Should return 400 for very large block number, got {}", + response.status + ); + + println!("ok: Coretime regions very large block number test passed"); + Ok(()) +} + +/// Test error response for invalid block hash format for regions +#[tokio::test] +async fn test_coretime_regions_invalid_block_hash() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain"); + return Ok(()); + } + + // Invalid hex string (not 32 bytes) + let response = client.get("/v1/coretime/regions?at=0xabc123").await?; + + assert!( + response.status.as_u16() == 400 || response.status.as_u16() == 404, + "Should return 400 or 404 for invalid block hash format, got {}", + response.status + ); + + println!("ok: Coretime regions invalid block hash test passed"); + Ok(()) +} + +// ============================================================================ +// Regions Consistency Tests +// ============================================================================ + +/// Test that multiple requests return consistent data for regions +#[tokio::test] +async fn test_coretime_regions_consistency() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + // Get the latest block hash to ensure we're querying the same block + let (_, first_response) = client.get_json("/v1/coretime/regions").await?; + let block_hash = first_response["at"]["hash"].as_str().unwrap(); + + // Query the same block multiple times + for i in 0..3 { + let (status, json) = client + .get_json(&format!("/v1/coretime/regions?at={}", block_hash)) + .await?; + + assert!(status.is_success(), "Request {} should succeed", i + 1); + + assert_eq!( + json["at"]["hash"].as_str().unwrap(), + block_hash, + "Request {} should return same block hash", + i + 1 + ); + + assert_eq!( + json["regions"].as_array().map(|a| a.len()), + first_response["regions"].as_array().map(|a| a.len()), + "Request {} should return same number of regions", + i + 1 + ); + } + + println!("ok: Coretime regions consistency test passed"); + Ok(()) +} + +/// Test that regions are sorted by core ID +#[tokio::test] +async fn test_coretime_regions_sorting() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + let (status, json) = client.get_json("/v1/coretime/regions").await?; + assert!(status.is_success()); + + let regions = json["regions"].as_array().unwrap(); + + if regions.len() < 2 { + println!("Skipping sorting test: Need at least 2 regions to verify sorting"); + return Ok(()); + } + + // Check that regions are sorted by core ID + let mut last_core: Option = None; + + for region in regions { + let core = region["core"].as_u64().unwrap(); + + if let Some(last) = last_core { + assert!( + core >= last, + "Regions should be sorted by core ID (ascending): {} should come after {}", + core, + last + ); + } + + last_core = Some(core); + } + diff --git a/crates/integration_tests/tests/coretime/renewals.rs b/crates/integration_tests/tests/coretime/renewals.rs new file mode 100644 index 000000000..fee0eac8d --- /dev/null +++ b/crates/integration_tests/tests/coretime/renewals.rs @@ -0,0 +1,460 @@ +// Copyright (C) 2026 Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later + +//! Integration tests for the /v1/coretime/renewals endpoint. + +use super::{init_tracing, is_coretime_chain, setup_client}; +use anyhow::Result; + +// ============================================================================ +// Renewals Response Structure Tests +// ============================================================================ + +/// Test that the coretime/renewals endpoint returns valid JSON with correct structure +#[tokio::test] +async fn test_coretime_renewals_response_structure() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + tracing::info!("Testing /v1/coretime/renewals endpoint structure"); + let (status, json) = client.get_json("/v1/coretime/renewals").await?; + + assert!( + status.is_success(), + "Coretime renewals endpoint should return success status, got {}", + status + ); + + // Verify response has required fields + assert!(json.get("at").is_some(), "Response should have 'at' field"); + assert!( + json.get("renewals").is_some(), + "Response should have 'renewals' field" + ); + + // Verify 'at' structure + let at = &json["at"]; + assert!( + at.get("hash").is_some(), + "Response 'at' should have 'hash' field" + ); + assert!( + at.get("height").is_some(), + "Response 'at' should have 'height' field" + ); + assert!(at["hash"].is_string(), "'at.hash' should be a string"); + assert!(at["height"].is_string(), "'at.height' should be a string"); + + // Verify hash format (should start with 0x) + let hash = at["hash"].as_str().unwrap(); + assert!( + hash.starts_with("0x"), + "'at.hash' should be a hex string starting with 0x" + ); + + // Verify renewals is an array + assert!(json["renewals"].is_array(), "'renewals' should be an array"); + + println!("ok: Coretime renewals response structure test passed"); + Ok(()) +} + +/// Test renewal item structure when renewals are present +#[tokio::test] +async fn test_coretime_renewals_item_structure() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + let (status, json) = client.get_json("/v1/coretime/renewals").await?; + assert!(status.is_success()); + + let renewals = json["renewals"].as_array().unwrap(); + + if renewals.is_empty() { + println!("Skipping item structure test: No renewals present on chain"); + return Ok(()); + } + + // Check first renewal item structure + let renewal = &renewals[0]; + + // Required fields + assert!( + renewal.get("core").is_some(), + "Renewal should have 'core' field" + ); + assert!( + renewal.get("when").is_some(), + "Renewal should have 'when' field" + ); + assert!( + renewal.get("task").is_some(), + "Renewal should have 'task' field" + ); + + assert!(renewal["core"].is_number(), "'core' should be a number"); + assert!(renewal["when"].is_number(), "'when' should be a number"); + assert!(renewal["task"].is_string(), "'task' should be a string"); + + // Optional fields (if present should have correct types) + if let Some(completion) = renewal.get("completion") { + if !completion.is_null() { + assert!( + completion.is_string(), + "'completion' should be a string when present" + ); + let completion_str = completion.as_str().unwrap(); + assert!( + completion_str == "Complete" || completion_str == "Partial", + "'completion' should be 'Complete' or 'Partial', got: {}", + completion_str + ); + } + } + + if let Some(mask) = renewal.get("mask") { + if !mask.is_null() { + assert!(mask.is_string(), "'mask' should be a string when present"); + let mask_str = mask.as_str().unwrap(); + assert!( + mask_str.starts_with("0x"), + "'mask' should be a hex string starting with 0x" + ); + // CoreMask is 80 bits = 10 bytes = 20 hex chars + "0x" prefix + assert_eq!( + mask_str.len(), + 22, + "'mask' should be 22 characters (0x + 20 hex digits for 10 bytes)" + ); + } + } + + if let Some(price) = renewal.get("price") { + if !price.is_null() { + assert!(price.is_string(), "'price' should be a string when present"); + let price_str = price.as_str().unwrap(); + assert!( + price_str.parse::().is_ok(), + "'price' should be a numeric string, got: {}", + price_str + ); + } + } + + // Validate task is empty, "Pool", "Idle", or a numeric string (task ID) + let task = renewal["task"].as_str().unwrap(); + assert!( + task.is_empty() || task == "Pool" || task == "Idle" || task.parse::().is_ok(), + "'task' should be empty, 'Pool', 'Idle', or a numeric task ID, got: {}", + task + ); + + // Validate core and when are positive + let core = renewal["core"].as_u64().unwrap(); + let when = renewal["when"].as_u64().unwrap(); + assert!(when > 0, "'when' should be a positive timeslice value"); + + println!( + "ok: Coretime renewals item structure test passed ({} renewals found, first core: {})", + renewals.len(), + core + ); + Ok(()) +} + +// ============================================================================ +// Renewals Query Parameter Tests +// ============================================================================ + +/// Test the 'at' query parameter with a block number for renewals +#[tokio::test] +async fn test_coretime_renewals_at_block_number() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + // First get the latest block to find a valid block number + let (_, latest_json) = client.get_json("/v1/coretime/renewals").await?; + let latest_height: u64 = latest_json["at"]["height"] + .as_str() + .unwrap() + .parse() + .unwrap(); + + // Query a slightly older block (if available) + let query_height = if latest_height > 10 { + latest_height - 5 + } else { + latest_height + }; + + let (status, json) = client + .get_json(&format!("/v1/coretime/renewals?at={}", query_height)) + .await?; + + assert!( + status.is_success(), + "Should succeed with valid block number, got {}", + status + ); + + // Verify the response is at the requested block + let response_height: u64 = json["at"]["height"].as_str().unwrap().parse().unwrap(); + assert_eq!( + response_height, query_height, + "Response should be at the requested block height" + ); + + println!("ok: Coretime renewals 'at' block number test passed"); + Ok(()) +} + +/// Test the 'at' query parameter with a block hash for renewals +#[tokio::test] +async fn test_coretime_renewals_at_block_hash() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + // First get the latest block to get a valid block hash + let (_, latest_json) = client.get_json("/v1/coretime/renewals").await?; + let block_hash = latest_json["at"]["hash"].as_str().unwrap(); + + let (status, json) = client + .get_json(&format!("/v1/coretime/renewals?at={}", block_hash)) + .await?; + + assert!( + status.is_success(), + "Should succeed with valid block hash, got {}", + status + ); + + // Verify the response has the same hash + let response_hash = json["at"]["hash"].as_str().unwrap(); + assert_eq!( + response_hash, block_hash, + "Response should be at the requested block hash" + ); + + println!("ok: Coretime renewals 'at' block hash test passed"); + Ok(()) +} + +// ============================================================================ +// Renewals Error Handling Tests +// ============================================================================ + +/// Test error response for invalid block parameter for renewals +#[tokio::test] +async fn test_coretime_renewals_invalid_block_param() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain"); + return Ok(()); + } + + let response = client.get("/v1/coretime/renewals?at=invalid-block").await?; + + assert_eq!( + response.status.as_u16(), + 400, + "Should return 400 for invalid block parameter" + ); + + println!("ok: Coretime renewals invalid block parameter test passed"); + Ok(()) +} + +/// Test error response for non-existent block (very high block number) for renewals +#[tokio::test] +async fn test_coretime_renewals_nonexistent_block() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain"); + return Ok(()); + } + + // Use a very high block number that doesn't exist + let response = client.get("/v1/coretime/renewals?at=999999999").await?; + + assert_eq!( + response.status.as_u16(), + 400, + "Should return 400 for non-existent block, got {}", + response.status + ); + + let json = response.json()?; + assert!( + json["message"] + .as_str() + .map(|m| m.to_lowercase().contains("block")) + .unwrap_or(false), + "Error message should mention block: {:?}", + json + ); + + println!("ok: Coretime renewals non-existent block test passed"); + Ok(()) +} + +/// Test error response for very large block numbers that cause RPC errors for renewals +#[tokio::test] +async fn test_coretime_renewals_very_large_block_number() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain"); + return Ok(()); + } + + let response = client.get("/v1/coretime/renewals?at=999999999999").await?; + + assert_eq!( + response.status.as_u16(), + 400, + "Should return 400 for very large block number, got {}", + response.status + ); + + println!("ok: Coretime renewals very large block number test passed"); + Ok(()) +} + +/// Test error response for invalid block hash format for renewals +#[tokio::test] +async fn test_coretime_renewals_invalid_block_hash() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain"); + return Ok(()); + } + + // Invalid hex string (not 32 bytes) + let response = client.get("/v1/coretime/renewals?at=0xabc123").await?; + + assert!( + response.status.as_u16() == 400 || response.status.as_u16() == 404, + "Should return 400 or 404 for invalid block hash format, got {}", + response.status + ); + + println!("ok: Coretime renewals invalid block hash test passed"); + Ok(()) +} + +// ============================================================================ +// Renewals Consistency Tests +// ============================================================================ + +/// Test that multiple requests return consistent data for renewals +#[tokio::test] +async fn test_coretime_renewals_consistency() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + // Get the latest block hash to ensure we're querying the same block + let (_, first_response) = client.get_json("/v1/coretime/renewals").await?; + let block_hash = first_response["at"]["hash"].as_str().unwrap(); + + // Query the same block multiple times + for i in 0..3 { + let (status, json) = client + .get_json(&format!("/v1/coretime/renewals?at={}", block_hash)) + .await?; + + assert!(status.is_success(), "Request {} should succeed", i + 1); + + assert_eq!( + json["at"]["hash"].as_str().unwrap(), + block_hash, + "Request {} should return same block hash", + i + 1 + ); + + assert_eq!( + json["renewals"].as_array().map(|a| a.len()), + first_response["renewals"].as_array().map(|a| a.len()), + "Request {} should return same number of renewals", + i + 1 + ); + } + + println!("ok: Coretime renewals consistency test passed"); + Ok(()) +} + +/// Test that renewals are sorted by core ID +#[tokio::test] +async fn test_coretime_renewals_sorting() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + let (status, json) = client.get_json("/v1/coretime/renewals").await?; + assert!(status.is_success()); + + let renewals = json["renewals"].as_array().unwrap(); + + if renewals.len() < 2 { + println!("Skipping sorting test: Need at least 2 renewals to verify sorting"); + return Ok(()); + } + + // Check that renewals are sorted by core ID (ascending) + let mut last_core: Option = None; + + for renewal in renewals { + let core = renewal["core"].as_u64().unwrap(); + + if let Some(last) = last_core { + assert!( + core >= last, + "Renewals should be sorted by core ID (ascending): {} should come after {}", + core, + last + ); + } + + last_core = Some(core); + } + + println!("ok: Coretime renewals sorting test passed"); + Ok(()) +} + diff --git a/crates/integration_tests/tests/coretime/reservations.rs b/crates/integration_tests/tests/coretime/reservations.rs new file mode 100644 index 000000000..2eee3de70 --- /dev/null +++ b/crates/integration_tests/tests/coretime/reservations.rs @@ -0,0 +1,381 @@ +// Copyright (C) 2026 Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later + +//! Integration tests for the /v1/coretime/reservations endpoint. + +use super::{init_tracing, is_coretime_chain, setup_client}; +use anyhow::Result; + +// ============================================================================ +// Reservations Response Structure Tests +// ============================================================================ + +/// Test that the coretime/reservations endpoint returns valid JSON with correct structure +#[tokio::test] +async fn test_coretime_reservations_response_structure() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + tracing::info!("Testing /v1/coretime/reservations endpoint structure"); + let (status, json) = client.get_json("/v1/coretime/reservations").await?; + + assert!( + status.is_success(), + "Coretime reservations endpoint should return success status, got {}", + status + ); + + // Verify response has required fields + assert!(json.get("at").is_some(), "Response should have 'at' field"); + assert!( + json.get("reservations").is_some(), + "Response should have 'reservations' field" + ); + + // Verify 'at' structure + let at = &json["at"]; + assert!( + at.get("hash").is_some(), + "Response 'at' should have 'hash' field" + ); + assert!( + at.get("height").is_some(), + "Response 'at' should have 'height' field" + ); + assert!(at["hash"].is_string(), "'at.hash' should be a string"); + assert!(at["height"].is_string(), "'at.height' should be a string"); + + // Verify hash format (should start with 0x) + let hash = at["hash"].as_str().unwrap(); + assert!( + hash.starts_with("0x"), + "'at.hash' should be a hex string starting with 0x" + ); + + // Verify reservations is an array + assert!( + json["reservations"].is_array(), + "'reservations' should be an array" + ); + + println!("ok: Coretime reservations response structure test passed"); + Ok(()) +} + +/// Test reservation item structure when reservations are present +#[tokio::test] +async fn test_coretime_reservations_item_structure() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + let (status, json) = client.get_json("/v1/coretime/reservations").await?; + assert!(status.is_success()); + + let reservations = json["reservations"].as_array().unwrap(); + + if reservations.is_empty() { + println!("Skipping item structure test: No reservations present on chain"); + return Ok(()); + } + + // Check first reservation item structure + let reservation = &reservations[0]; + + assert!( + reservation.get("mask").is_some(), + "Reservation should have 'mask' field" + ); + assert!( + reservation.get("task").is_some(), + "Reservation should have 'task' field" + ); + + assert!(reservation["mask"].is_string(), "'mask' should be a string"); + assert!(reservation["task"].is_string(), "'task' should be a string"); + + // Validate mask is a valid hex string (should start with 0x) + let mask = reservation["mask"].as_str().unwrap(); + assert!( + mask.starts_with("0x"), + "'mask' should be a hex string starting with 0x" + ); + + // CoreMask is 80 bits = 10 bytes = 20 hex chars + "0x" prefix + assert_eq!( + mask.len(), + 22, + "'mask' should be 22 characters (0x + 20 hex digits for 10 bytes)" + ); + + // Validate task is either empty, "Pool", or a numeric string (task ID) + let task = reservation["task"].as_str().unwrap(); + assert!( + task.is_empty() || task == "Pool" || task.parse::().is_ok(), + "'task' should be empty (Idle), 'Pool', or a numeric task ID, got: {}", + task + ); + + println!( + "ok: Coretime reservations item structure test passed ({} reservations found)", + reservations.len() + ); + Ok(()) +} + +// ============================================================================ +// Reservations Query Parameter Tests +// ============================================================================ + +/// Test the 'at' query parameter with a block number for reservations +#[tokio::test] +async fn test_coretime_reservations_at_block_number() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + // First get the latest block to find a valid block number + let (_, latest_json) = client.get_json("/v1/coretime/reservations").await?; + let latest_height: u64 = latest_json["at"]["height"] + .as_str() + .unwrap() + .parse() + .unwrap(); + + // Query a slightly older block (if available) + let query_height = if latest_height > 10 { + latest_height - 5 + } else { + latest_height + }; + + let (status, json) = client + .get_json(&format!("/v1/coretime/reservations?at={}", query_height)) + .await?; + + assert!( + status.is_success(), + "Should succeed with valid block number, got {}", + status + ); + + // Verify the response is at the requested block + let response_height: u64 = json["at"]["height"].as_str().unwrap().parse().unwrap(); + assert_eq!( + response_height, query_height, + "Response should be at the requested block height" + ); + + println!("ok: Coretime reservations 'at' block number test passed"); + Ok(()) +} + +/// Test the 'at' query parameter with a block hash for reservations +#[tokio::test] +async fn test_coretime_reservations_at_block_hash() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + // First get the latest block to get a valid block hash + let (_, latest_json) = client.get_json("/v1/coretime/reservations").await?; + let block_hash = latest_json["at"]["hash"].as_str().unwrap(); + + let (status, json) = client + .get_json(&format!("/v1/coretime/reservations?at={}", block_hash)) + .await?; + + assert!( + status.is_success(), + "Should succeed with valid block hash, got {}", + status + ); + + // Verify the response has the same hash + let response_hash = json["at"]["hash"].as_str().unwrap(); + assert_eq!( + response_hash, block_hash, + "Response should be at the requested block hash" + ); + + println!("ok: Coretime reservations 'at' block hash test passed"); + Ok(()) +} + +// ============================================================================ +// Reservations Error Handling Tests +// ============================================================================ + +/// Test error response for invalid block parameter for reservations +#[tokio::test] +async fn test_coretime_reservations_invalid_block_param() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain"); + return Ok(()); + } + + let response = client + .get("/v1/coretime/reservations?at=invalid-block") + .await?; + + assert_eq!( + response.status.as_u16(), + 400, + "Should return 400 for invalid block parameter" + ); + + println!("ok: Coretime reservations invalid block parameter test passed"); + Ok(()) +} + +/// Test error response for non-existent block (very high block number) for reservations +#[tokio::test] +async fn test_coretime_reservations_nonexistent_block() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain"); + return Ok(()); + } + + // Use a very high block number that doesn't exist + let response = client.get("/v1/coretime/reservations?at=999999999").await?; + + assert_eq!( + response.status.as_u16(), + 400, + "Should return 400 for non-existent block, got {}", + response.status + ); + + let json = response.json()?; + assert!( + json["message"] + .as_str() + .map(|m| m.to_lowercase().contains("block")) + .unwrap_or(false), + "Error message should mention block: {:?}", + json + ); + + println!("ok: Coretime reservations non-existent block test passed"); + Ok(()) +} + +/// Test error response for very large block numbers that cause RPC errors for reservations +#[tokio::test] +async fn test_coretime_reservations_very_large_block_number() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain"); + return Ok(()); + } + + let response = client + .get("/v1/coretime/reservations?at=999999999999") + .await?; + + assert_eq!( + response.status.as_u16(), + 400, + "Should return 400 for very large block number, got {}", + response.status + ); + + println!("ok: Coretime reservations very large block number test passed"); + Ok(()) +} + +/// Test error response for invalid block hash format for reservations +#[tokio::test] +async fn test_coretime_reservations_invalid_block_hash() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain"); + return Ok(()); + } + + // Invalid hex string (not 32 bytes) + let response = client.get("/v1/coretime/reservations?at=0xabc123").await?; + + assert!( + response.status.as_u16() == 400 || response.status.as_u16() == 404, + "Should return 400 or 404 for invalid block hash format, got {}", + response.status + ); + + println!("ok: Coretime reservations invalid block hash test passed"); + Ok(()) +} + +// ============================================================================ +// Reservations Consistency Tests +// ============================================================================ + +/// Test that multiple requests return consistent data for reservations +#[tokio::test] +async fn test_coretime_reservations_consistency() -> Result<()> { + init_tracing(); + let client = setup_client().await?; + + if !is_coretime_chain(&client).await { + println!("Skipping test: Not a coretime chain (Broker pallet not found)"); + return Ok(()); + } + + // Get the latest block hash to ensure we're querying the same block + let (_, first_response) = client.get_json("/v1/coretime/reservations").await?; + let block_hash = first_response["at"]["hash"].as_str().unwrap(); + + // Query the same block multiple times + for i in 0..3 { + let (status, json) = client + .get_json(&format!("/v1/coretime/reservations?at={}", block_hash)) + .await?; + + assert!(status.is_success(), "Request {} should succeed", i + 1); + + assert_eq!( + json["at"]["hash"].as_str().unwrap(), + block_hash, + "Request {} should return same block hash", + i + 1 + ); + + assert_eq!( + json["reservations"].as_array().map(|a| a.len()), + first_response["reservations"].as_array().map(|a| a.len()), + "Request {} should return same number of reservations", + i + 1 + ); + } + + println!("ok: Coretime reservations consistency test passed"); + Ok(()) +} + diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/blocks_11150000_pre_migration.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/blocks/11150000_pre_migration.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/blocks_11150000_pre_migration.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/blocks/11150000_pre_migration.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/blocks_11152000_post_migration.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/blocks/11152000_post_migration.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/blocks_11152000_post_migration.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/blocks/11152000_post_migration.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/blocks_12949861_use_evm_format.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/blocks/12949861_use_evm_format.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/blocks_12949861_use_evm_format.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/blocks/12949861_use_evm_format.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/extrinsic_12949861_1_use_evm_format.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/blocks/extrinsic_12949861_1_use_evm_format.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/extrinsic_12949861_1_use_evm_format.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/blocks/extrinsic_12949861_1_use_evm_format.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/blocks_range_12949861-12949863_use_evm_format.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/blocks/range_12949861-12949863_use_evm_format.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/blocks_range_12949861-12949863_use_evm_format.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/blocks/range_12949861-12949863_use_evm_format.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_asset_conversion_liquidity_pools_8000000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/asset_conversion/liquidity_pools_8000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_asset_conversion_liquidity_pools_8000000.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/asset_conversion/liquidity_pools_8000000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_asset_conversion_next_available_id_8000000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/asset_conversion/next_available_id_8000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_asset_conversion_next_available_id_8000000.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/asset_conversion/next_available_id_8000000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_assets_1984_asset_info_11152000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/assets/1984_asset_info_11152000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_assets_1984_asset_info_11152000.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/assets/1984_asset_info_11152000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_balances_dispatchables_8000000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/balances/dispatchables_8000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_balances_dispatchables_8000000.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/balances/dispatchables_8000000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_balances_dispatchables_transfer_allow_death_8000000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/balances/dispatchables_transfer_allow_death_8000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_balances_dispatchables_transfer_allow_death_8000000.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/balances/dispatchables_transfer_allow_death_8000000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_balances_errors.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/balances/errors.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_balances_errors.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/balances/errors.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_balances_errors_11152000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/balances/errors_11152000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_balances_errors_11152000.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/balances/errors_11152000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_balances_errors_InsufficientBalance.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/balances/errors_InsufficientBalance.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_balances_errors_InsufficientBalance.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/balances/errors_InsufficientBalance.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_balances_errors_InsufficientBalance_11152000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/balances/errors_InsufficientBalance_11152000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_balances_errors_InsufficientBalance_11152000.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/balances/errors_InsufficientBalance_11152000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_balances_errors_InsufficientBalance_metadata.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/balances/errors_InsufficientBalance_metadata.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_balances_errors_InsufficientBalance_metadata.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/balances/errors_InsufficientBalance_metadata.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_balances_errors_onlyIds.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/balances/errors_onlyIds.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_balances_errors_onlyIds.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/balances/errors_onlyIds.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_foreign_assets_11152000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/foreign_assets/11152000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_foreign_assets_11152000.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/foreign_assets/11152000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_pool_assets_0_asset_info_8000000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/pool_assets/0_asset_info_8000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_pool_assets_0_asset_info_8000000.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/pool_assets/0_asset_info_8000000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_system_errors.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/system/errors.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_system_errors.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/system/errors.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_system_storage_number_11152000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/system/storage_number_11152000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_system_storage_number_11152000.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/system/storage_number_11152000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_timestamp_storage_now_11152000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/timestamp/storage_now_11152000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_timestamp_storage_now_11152000.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets/timestamp/storage_now_11152000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_assets_storage_12676268.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_assets_storage_12676268.json deleted file mode 100644 index 2212d0c10..000000000 --- a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_assets_storage_12676268.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "at": { - "hash": "0x6750195fcf8ffdbd5ee3fae98d21d04789596144169b511e4973c866ddae4d9c", - "height": "12676268" - }, - "pallet": "assets", - "palletIndex": "50", - "items": [ - { - "name": "Asset", - "modifier": "Optional", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "4", - "value": "953" - } - }, - "fallback": "0x00", - "docs": " Details of an asset.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Account", - "modifier": "Optional", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat", - "Blake2_128Concat" - ], - "key": "955", - "value": "956" - } - }, - "fallback": "0x00", - "docs": " The holdings of a specific account for a specific asset.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Approvals", - "modifier": "Optional", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat", - "Blake2_128Concat", - "Blake2_128Concat" - ], - "key": "959", - "value": "960" - } - }, - "fallback": "0x00", - "docs": " Approved balance transfers. First balance is the amount approved for transfer. Second\n is the amount of `T::Currency` reserved for storing this.\n First key is the asset ID, second key is the owner and third key is the delegate.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Metadata", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "4", - "value": "961" - } - }, - "fallback": "0x0000000000000000000000000000000000000000", - "docs": " Metadata of an asset.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "NextAssetId", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " The asset ID enforced for the next asset creation, if any present. Otherwise, this storage\n item has no effect.\n\n This can be useful for setting up constraints for IDs of the new assets. For example, by\n providing an initial [`NextAssetId`] and using the [`crate::AutoIncAssetId`] callback, an\n auto-increment model can be applied to all new asset IDs.\n\n The initial next asset ID can be set using the [`GenesisConfig`] or the\n [SetNextAssetId](`migration::next_asset_id::SetNextAssetId`) migration.", - "deprecationInfo": { - "notDeprecated": null - } - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_assets_storage_5000000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_assets_storage_5000000.json deleted file mode 100644 index a4c16b1f8..000000000 --- a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_assets_storage_5000000.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "at": { - "hash": "0x96974dcd54b94f973aefd8c0b36e59fc8d58b20885ae753f3cfb45515462899b", - "height": "5000000" - }, - "pallet": "assets", - "palletIndex": "50", - "items": [ - { - "name": "Asset", - "modifier": "Optional", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "4", - "value": "332" - } - }, - "fallback": "0x00", - "docs": " Details of an asset.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Account", - "modifier": "Optional", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat", - "Blake2_128Concat" - ], - "key": "334", - "value": "335" - } - }, - "fallback": "0x00", - "docs": " The holdings of a specific account for a specific asset.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Approvals", - "modifier": "Optional", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat", - "Blake2_128Concat", - "Blake2_128Concat" - ], - "key": "338", - "value": "339" - } - }, - "fallback": "0x00", - "docs": " Approved balance transfers. First balance is the amount approved for transfer. Second\n is the amount of `T::Currency` reserved for storing this.\n First key is the asset ID, second key is the owner and third key is the delegate.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Metadata", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "4", - "value": "340" - } - }, - "fallback": "0x0000000000000000000000000000000000000000", - "docs": " Metadata of an asset.", - "deprecationInfo": { - "notDeprecated": null - } - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_balances_dispatchables_7000000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_balances_dispatchables_7000000.json deleted file mode 100644 index e69de29bb..000000000 diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_balances_dispatchables_transfer_allow_death_7000000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_balances_dispatchables_transfer_allow_death_7000000.json deleted file mode 100644 index e69de29bb..000000000 diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_system_consts_11152000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_system_consts_11152000.json deleted file mode 100644 index 4146ff3c9..000000000 --- a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_system_consts_11152000.json +++ /dev/null @@ -1 +0,0 @@ -{"at":{"hash":"0x70c613cd0258cf801515f7b7f3e4bd9f00d1c597aa62a51b9b777528b284962f","height":"11152000"},"pallet":"system","palletIndex":"0","items":[{"name":"BlockWeights","type":"793","value":"0x0700f2052a01000b00204aa9d101020080020265cd1d00010bc026fb7f740102000002010b0068e5cf8b01020020020100000265cd1d00010bc0de5f59ba0102006002010b00204aa9d10102008002010700b864d945020060000265cd1d00000000","docs":[" Block & extrinsics weights: base values and limits."],"deprecationInfo":{"notDeprecated":null}},{"name":"BlockLength","type":"796","value":"0x000044000000500000005000","docs":[" The maximum length of a block (in bytes)."],"deprecationInfo":{"notDeprecated":null}},{"name":"BlockHashCount","type":"4","value":"0x00100000","docs":[" Maximum number of block number to block hash mappings to keep (oldest pruned first)."],"deprecationInfo":{"notDeprecated":null}},{"name":"DbWeight","type":"798","value":"0x40787d010000000000e1f50500000000","docs":[" The weight of runtime database operations the runtime can invoke."],"deprecationInfo":{"notDeprecated":null}},{"name":"Version","type":"799","value":"0x2473746174656d696e652473746174656d696e650100000069650f00000000005cdd718d5cc53262d40100000004e70521a0d3d2f801000000d7bdd8a272ca0d6502000000df6acb689907609b0500000037e397fc7c91f5e40200000040fe3ad401f8959a06000000d2bc9897eed08f1503000000f78b278be53f454c02000000ab3c0572291feb8b01000000bc9d89904f5b923f010000008a8047a53a8277ec0100000037c8bb1350a9a2a804000000f3ff14d5ab527059030000006ff52ee858e6c5bd0100000091b1c8b16328eb92020000009ffb505aa738d69c010000002609be83ac4468dc0100000012c8e3d4d7e06de001000000de92b8a0426b9bf602000000ea93e3f16f3d696203000000fbc577b9d747efd601000000a2ddb6a58477bf63010000008c403e5c4a9fd442010000000f00000001","docs":[" Get the chain's in-code version."],"deprecationInfo":{"notDeprecated":null}},{"name":"SS58Prefix","type":"194","value":"0x0200","docs":[" The designated SS58 prefix of this chain.",""," This replaces the \"ss58Format\" property declared in the chain spec. Reason is"," that the runtime should know about the prefix in order to make use of it as"," an identifier of the chain."],"deprecationInfo":{"notDeprecated":null}}]} \ No newline at end of file diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_system_consts_blockweights_11152000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_system_consts_blockweights_11152000.json deleted file mode 100644 index fbcc5a2fa..000000000 --- a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_system_consts_blockweights_11152000.json +++ /dev/null @@ -1 +0,0 @@ -{"at":{"hash":"0x70c613cd0258cf801515f7b7f3e4bd9f00d1c597aa62a51b9b777528b284962f","height":"11152000"},"pallet":"system","palletIndex":"0","constantsItem":"blockWeights","metadata":{"name":"BlockWeights","type":"793","value":"0x0700f2052a01000b00204aa9d101020080020265cd1d00010bc026fb7f740102000002010b0068e5cf8b01020020020100000265cd1d00010bc0de5f59ba0102006002010b00204aa9d10102008002010700b864d945020060000265cd1d00000000","docs":[" Block & extrinsics weights: base values and limits."],"deprecationInfo":{"notDeprecated":null}}} \ No newline at end of file diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_system_storage_1000000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_system_storage_1000000.json deleted file mode 100644 index 2376404ec..000000000 --- a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_system_storage_1000000.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "at": { - "hash": "0xd7426f1052682ee4fe82ceb47923201f9d2cbeaba3042aa605ee658da8fc6ac5", - "height": "1000000" - }, - "pallet": "system", - "palletIndex": "0", - "items": [ - { - "name": "Account", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "T::AccountId", - "value": "AccountInfo" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "docs": " The full account information for a particular account ID.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicCount", - "modifier": "Optional", - "type": { - "plain": "u32" - }, - "fallback": "0x00", - "docs": " Total extrinsics count for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockWeight", - "modifier": "Default", - "type": { - "plain": "ConsumedWeight" - }, - "fallback": "0x000000000000000000000000000000000000000000000000", - "docs": " The current weight for the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AllExtrinsicsLen", - "modifier": "Optional", - "type": { - "plain": "u32" - }, - "fallback": "0x00", - "docs": " Total length (in bytes) for all extrinsics put together, for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockHash", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "T::BlockNumber", - "value": "T::Hash" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Map of block numbers to block hashes.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicData", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "u32", - "value": "Vec" - } - }, - "fallback": "0x00", - "docs": " Extrinsics data for the current block (maps an extrinsic's index to its data).", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Number", - "modifier": "Default", - "type": { - "plain": "T::BlockNumber" - }, - "fallback": "0x00000000", - "docs": " The current block number being processed. Set by `execute_block`.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ParentHash", - "modifier": "Default", - "type": { - "plain": "T::Hash" - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Hash of the previous block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Digest", - "modifier": "Default", - "type": { - "plain": "DigestOf" - }, - "fallback": "0x00", - "docs": " Digest of the current block, also part of the block header.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Events", - "modifier": "Default", - "type": { - "plain": "Vec>" - }, - "fallback": "0x00", - "docs": " Events deposited for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventCount", - "modifier": "Default", - "type": { - "plain": "EventIndex" - }, - "fallback": "0x00000000", - "docs": " The number of events in the `Events` list.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventTopics", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "T::Hash", - "value": "Vec<(T::BlockNumber, EventIndex)>" - } - }, - "fallback": "0x00", - "docs": " Mapping between a topic (represented by T::Hash) and a vector of indexes\n of events in the `>` list.\n\n All topic vectors have deterministic storage locations depending on the topic. This\n allows light-clients to leverage the changes trie storage tracking mechanism and\n in case of changes fetch the list of events of interest.\n\n The value has the type `(T::BlockNumber, EventIndex)` because if we used only just\n the `EventIndex` then in case if the topic has the same contents on the next block\n no notification will be triggered thus the event might be lost.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "LastRuntimeUpgrade", - "modifier": "Optional", - "type": { - "plain": "LastRuntimeUpgradeInfo" - }, - "fallback": "0x00", - "docs": " Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToU32RefCount", - "modifier": "Default", - "type": { - "plain": "bool" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that `type RefCount` is `u32`. False (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToTripleRefCount", - "modifier": "Default", - "type": { - "plain": "bool" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that AccountInfo contains three types of `RefCount`. False\n (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExecutionPhase", - "modifier": "Optional", - "type": { - "plain": "Phase" - }, - "fallback": "0x00", - "docs": " The execution phase of the block.", - "deprecationInfo": { - "notDeprecated": null - } - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_system_storage_12000000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_system_storage_12000000.json deleted file mode 100644 index 919dad77f..000000000 --- a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_system_storage_12000000.json +++ /dev/null @@ -1,262 +0,0 @@ -{ - "at": { - "hash": "0x266ce4da49bc741ead72d7048eb74bf7e1ecde3128b2a925416a3f6fca749bfe", - "height": "12000000" - }, - "pallet": "system", - "palletIndex": "0", - "items": [ - { - "name": "Account", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "0", - "value": "3" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", - "docs": " The full account information for a particular account ID.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicCount", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total extrinsics count for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "InherentsApplied", - "modifier": "Default", - "type": { - "plain": "8" - }, - "fallback": "0x00", - "docs": " Whether all inherents have been applied.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockWeight", - "modifier": "Default", - "type": { - "plain": "9" - }, - "fallback": "0x000000000000", - "docs": " The current weight for the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AllExtrinsicsLen", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total length (in bytes) for all extrinsics put together, for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockHash", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "13" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Map of block numbers to block hashes.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicData", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "14" - } - }, - "fallback": "0x00", - "docs": " Extrinsics data for the current block (maps an extrinsic's index to its data).", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Number", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The current block number being processed. Set by `execute_block`.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ParentHash", - "modifier": "Default", - "type": { - "plain": "13" - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Hash of the previous block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Digest", - "modifier": "Default", - "type": { - "plain": "15" - }, - "fallback": "0x00", - "docs": " Digest of the current block, also part of the block header.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Events", - "modifier": "Default", - "type": { - "plain": "19" - }, - "fallback": "0x00", - "docs": " Events deposited for the current block.\n\n NOTE: The item is unbound and should therefore never be read on chain.\n It could otherwise inflate the PoV size of a block.\n\n Events have a large in-memory size. Box the events to not go out-of-memory\n just in case someone still reads them from within the runtime.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventCount", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The number of events in the `Events` list.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventTopics", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "13", - "value": "743" - } - }, - "fallback": "0x00", - "docs": " Mapping between a topic (represented by T::Hash) and a vector of indexes\n of events in the `>` list.\n\n All topic vectors have deterministic storage locations depending on the topic. This\n allows light-clients to leverage the changes trie storage tracking mechanism and\n in case of changes fetch the list of events of interest.\n\n The value has the type `(BlockNumberFor, EventIndex)` because if we used only just\n the `EventIndex` then in case if the topic has the same contents on the next block\n no notification will be triggered thus the event might be lost.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "LastRuntimeUpgrade", - "modifier": "Optional", - "type": { - "plain": "790" - }, - "fallback": "0x00", - "docs": " Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToU32RefCount", - "modifier": "Default", - "type": { - "plain": "8" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that `type RefCount` is `u32`. False (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToTripleRefCount", - "modifier": "Default", - "type": { - "plain": "8" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that AccountInfo contains three types of `RefCount`. False\n (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExecutionPhase", - "modifier": "Optional", - "type": { - "plain": "789" - }, - "fallback": "0x00", - "docs": " The execution phase of the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AuthorizedUpgrade", - "modifier": "Optional", - "type": { - "plain": "793" - }, - "fallback": "0x00", - "docs": " `Some` if a code upgrade has been authorized.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicWeightReclaimed", - "modifier": "Default", - "type": { - "plain": "10" - }, - "fallback": "0x0000", - "docs": " The weight reclaimed for the extrinsic.\n\n This information is available until the end of the extrinsic execution.\n More precisely this information is removed in `note_applied_extrinsic`.\n\n Logic doing some post dispatch weight reduction must update this storage to avoid duplicate\n reduction.", - "deprecationInfo": { - "notDeprecated": null - } - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_system_storage_12676268.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_system_storage_12676268.json deleted file mode 100644 index cc275e094..000000000 --- a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_system_storage_12676268.json +++ /dev/null @@ -1,262 +0,0 @@ -{ - "at": { - "hash": "0x6750195fcf8ffdbd5ee3fae98d21d04789596144169b511e4973c866ddae4d9c", - "height": "12676268" - }, - "pallet": "system", - "palletIndex": "0", - "items": [ - { - "name": "Account", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "0", - "value": "3" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", - "docs": " The full account information for a particular account ID.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicCount", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total extrinsics count for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "InherentsApplied", - "modifier": "Default", - "type": { - "plain": "8" - }, - "fallback": "0x00", - "docs": " Whether all inherents have been applied.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockWeight", - "modifier": "Default", - "type": { - "plain": "9" - }, - "fallback": "0x000000000000", - "docs": " The current weight for the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AllExtrinsicsLen", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total length (in bytes) for all extrinsics put together, for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockHash", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "13" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Map of block numbers to block hashes.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicData", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "14" - } - }, - "fallback": "0x00", - "docs": " Extrinsics data for the current block (maps an extrinsic's index to its data).", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Number", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The current block number being processed. Set by `execute_block`.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ParentHash", - "modifier": "Default", - "type": { - "plain": "13" - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Hash of the previous block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Digest", - "modifier": "Default", - "type": { - "plain": "15" - }, - "fallback": "0x00", - "docs": " Digest of the current block, also part of the block header.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Events", - "modifier": "Default", - "type": { - "plain": "19" - }, - "fallback": "0x00", - "docs": " Events deposited for the current block.\n\n NOTE: The item is unbound and should therefore never be read on chain.\n It could otherwise inflate the PoV size of a block.\n\n Events have a large in-memory size. Box the events to not go out-of-memory\n just in case someone still reads them from within the runtime.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventCount", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The number of events in the `Events` list.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventTopics", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "13", - "value": "744" - } - }, - "fallback": "0x00", - "docs": " Mapping between a topic (represented by T::Hash) and a vector of indexes\n of events in the `>` list.\n\n All topic vectors have deterministic storage locations depending on the topic. This\n allows light-clients to leverage the changes trie storage tracking mechanism and\n in case of changes fetch the list of events of interest.\n\n The value has the type `(BlockNumberFor, EventIndex)` because if we used only just\n the `EventIndex` then in case if the topic has the same contents on the next block\n no notification will be triggered thus the event might be lost.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "LastRuntimeUpgrade", - "modifier": "Optional", - "type": { - "plain": "791" - }, - "fallback": "0x00", - "docs": " Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToU32RefCount", - "modifier": "Default", - "type": { - "plain": "8" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that `type RefCount` is `u32`. False (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToTripleRefCount", - "modifier": "Default", - "type": { - "plain": "8" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that AccountInfo contains three types of `RefCount`. False\n (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExecutionPhase", - "modifier": "Optional", - "type": { - "plain": "790" - }, - "fallback": "0x00", - "docs": " The execution phase of the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AuthorizedUpgrade", - "modifier": "Optional", - "type": { - "plain": "794" - }, - "fallback": "0x00", - "docs": " `Some` if a code upgrade has been authorized.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicWeightReclaimed", - "modifier": "Default", - "type": { - "plain": "10" - }, - "fallback": "0x0000", - "docs": " The weight reclaimed for the extrinsic.\n\n This information is available until the end of the extrinsic execution.\n More precisely this information is removed in `note_applied_extrinsic`.\n\n Logic doing some post dispatch weight reduction must update this storage to avoid duplicate\n reduction.", - "deprecationInfo": { - "notDeprecated": null - } - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_system_storage_5000000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_system_storage_5000000.json deleted file mode 100644 index 6476e237d..000000000 --- a/crates/integration_tests/tests/fixtures/asset-hub-kusama/pallets_system_storage_5000000.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "at": { - "hash": "0x96974dcd54b94f973aefd8c0b36e59fc8d58b20885ae753f3cfb45515462899b", - "height": "5000000" - }, - "pallet": "system", - "palletIndex": "0", - "items": [ - { - "name": "Account", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "0", - "value": "3" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", - "docs": " The full account information for a particular account ID.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicCount", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total extrinsics count for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockWeight", - "modifier": "Default", - "type": { - "plain": "8" - }, - "fallback": "0x000000000000", - "docs": " The current weight for the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AllExtrinsicsLen", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total length (in bytes) for all extrinsics put together, for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockHash", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "12" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Map of block numbers to block hashes.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicData", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "13" - } - }, - "fallback": "0x00", - "docs": " Extrinsics data for the current block (maps an extrinsic's index to its data).", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Number", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The current block number being processed. Set by `execute_block`.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ParentHash", - "modifier": "Default", - "type": { - "plain": "12" - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Hash of the previous block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Digest", - "modifier": "Default", - "type": { - "plain": "14" - }, - "fallback": "0x00", - "docs": " Digest of the current block, also part of the block header.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Events", - "modifier": "Default", - "type": { - "plain": "18" - }, - "fallback": "0x00", - "docs": " Events deposited for the current block.\n\n NOTE: The item is unbound and should therefore never be read on chain.\n It could otherwise inflate the PoV size of a block.\n\n Events have a large in-memory size. Box the events to not go out-of-memory\n just in case someone still reads them from within the runtime.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventCount", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The number of events in the `Events` list.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventTopics", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "12", - "value": "126" - } - }, - "fallback": "0x00", - "docs": " Mapping between a topic (represented by T::Hash) and a vector of indexes\n of events in the `>` list.\n\n All topic vectors have deterministic storage locations depending on the topic. This\n allows light-clients to leverage the changes trie storage tracking mechanism and\n in case of changes fetch the list of events of interest.\n\n The value has the type `(T::BlockNumber, EventIndex)` because if we used only just\n the `EventIndex` then in case if the topic has the same contents on the next block\n no notification will be triggered thus the event might be lost.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "LastRuntimeUpgrade", - "modifier": "Optional", - "type": { - "plain": "128" - }, - "fallback": "0x00", - "docs": " Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToU32RefCount", - "modifier": "Default", - "type": { - "plain": "82" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that `type RefCount` is `u32`. False (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToTripleRefCount", - "modifier": "Default", - "type": { - "plain": "82" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that AccountInfo contains three types of `RefCount`. False\n (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExecutionPhase", - "modifier": "Optional", - "type": { - "plain": "124" - }, - "fallback": "0x00", - "docs": " The execution phase of the block.", - "deprecationInfo": { - "notDeprecated": null - } - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/rc_blocks_28494701_extrinsics_2.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/rc_blocks/28494701_extrinsics_2.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/rc_blocks_28494701_extrinsics_2.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/rc_blocks/28494701_extrinsics_2.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/runtime_code_11152000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/runtime/code_11152000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/runtime_code_11152000.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/runtime/code_11152000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/runtime_metadata_11152000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/runtime/metadata_11152000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/runtime_metadata_11152000.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/runtime/metadata_11152000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/runtime_metadata_v14_11152000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/runtime/metadata_v14_11152000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/runtime_metadata_v14_11152000.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/runtime/metadata_v14_11152000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/runtime_metadata_v15_11152000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/runtime/metadata_v15_11152000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/runtime_metadata_v15_11152000.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/runtime/metadata_v15_11152000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/runtime_metadata_versions_11152000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/runtime/metadata_versions_11152000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/runtime_metadata_versions_11152000.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/runtime/metadata_versions_11152000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-kusama/runtime_spec_11152000.json b/crates/integration_tests/tests/fixtures/asset-hub-kusama/runtime/spec_11152000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-kusama/runtime_spec_11152000.json rename to crates/integration_tests/tests/fixtures/asset-hub-kusama/runtime/spec_11152000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts_balance_info_alice_10260000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts/balance_info_alice_10260000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts_balance_info_alice_10260000.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts/balance_info_alice_10260000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts_balance_info_alice_10260000_denominated.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts/balance_info_alice_10260000_denominated.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts_balance_info_alice_10260000_denominated.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts/balance_info_alice_10260000_denominated.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts_balance_info_alice_10260000_token_dot.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts/balance_info_alice_10260000_token_dot.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts_balance_info_alice_10260000_token_dot.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts/balance_info_alice_10260000_token_dot.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts_foreign_asset_balances_alice_10260000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts/foreign_asset_balances_alice_10260000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts_foreign_asset_balances_alice_10260000.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts/foreign_asset_balances_alice_10260000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts_proxy_info_alice_10260000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts/proxy_info_alice_10260000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts_proxy_info_alice_10260000.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts/proxy_info_alice_10260000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts_validate_alice.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts/validate_alice.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts_validate_alice.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts/validate_alice.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts_vesting_info_alice_10260000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts/vesting_info_alice_10260000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts_vesting_info_alice_10260000.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/accounts/vesting_info_alice_10260000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks_10250000_pre_migration.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks/10250000_pre_migration.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks_10250000_pre_migration.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks/10250000_pre_migration.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks_10260000_post_migration.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks/10260000_post_migration.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks_10260000_post_migration.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks/10260000_post_migration.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks_10293194_rc_extrinsics_raw.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks/10293194_rc_extrinsics_raw.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks_10293194_rc_extrinsics_raw.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks/10293194_rc_extrinsics_raw.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks_11308795.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks/11308795.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks_11308795.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks/11308795.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks_12273189.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks/12273189.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks_12273189.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks/12273189.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks_1276963_extrinsics_raw.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks/1276963_extrinsics_raw.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks_1276963_extrinsics_raw.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks/1276963_extrinsics_raw.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/extrinsic_11308795_2_with_docs.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks/extrinsic_11308795_2_with_docs.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/extrinsic_11308795_2_with_docs.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks/extrinsic_11308795_2_with_docs.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/extrinsic_1276963_0.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks/extrinsic_1276963_0.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/extrinsic_1276963_0.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks/extrinsic_1276963_0.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks_header_1276963.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks/header_1276963.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks_header_1276963.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks/header_1276963.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks_range_use_rc_block_10293194-10293197.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks/range_use_rc_block_10293194-10293197.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks_range_use_rc_block_10293194-10293197.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/blocks/range_use_rc_block_10293194-10293197.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_asset_conversion_liquidity_pools_10260000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/asset_conversion/liquidity_pools_10260000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_asset_conversion_liquidity_pools_10260000.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/asset_conversion/liquidity_pools_10260000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_asset_conversion_next_available_id_10260000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/asset_conversion/next_available_id_10260000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_asset_conversion_next_available_id_10260000.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/asset_conversion/next_available_id_10260000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_assets_1984_asset_info_10260000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/assets/1984_asset_info_10260000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_assets_1984_asset_info_10260000.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/assets/1984_asset_info_10260000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_assets_1984_asset_info_use_rc_block_29698001.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/assets/1984_asset_info_use_rc_block_29698001.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_assets_1984_asset_info_use_rc_block_29698001.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/assets/1984_asset_info_use_rc_block_29698001.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_consts_ExistentialDeposit_use_rc_block_format_rc_10293194.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/consts_ExistentialDeposit_use_rc_block_format_rc_10293194.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_consts_ExistentialDeposit_use_rc_block_format_rc_10293194.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/consts_ExistentialDeposit_use_rc_block_format_rc_10293194.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_consts_use_rc_block_format_rc_10293194.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/consts_use_rc_block_format_rc_10293194.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_consts_use_rc_block_format_rc_10293194.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/consts_use_rc_block_format_rc_10293194.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_dispatchables_10260000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/dispatchables_10260000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_dispatchables_10260000.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/dispatchables_10260000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_dispatchables_transfer_allow_death_10260000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/dispatchables_transfer_allow_death_10260000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_dispatchables_transfer_allow_death_10260000.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/dispatchables_transfer_allow_death_10260000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_dispatchables_transfer_allow_death_use_rc_block_format_rc_10293194.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/dispatchables_transfer_allow_death_use_rc_block_format_rc_10293194.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_dispatchables_transfer_allow_death_use_rc_block_format_rc_10293194.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/dispatchables_transfer_allow_death_use_rc_block_format_rc_10293194.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_dispatchables_use_rc_block_format_rc_10293194.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/dispatchables_use_rc_block_format_rc_10293194.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_dispatchables_use_rc_block_format_rc_10293194.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/dispatchables_use_rc_block_format_rc_10293194.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_errors.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/errors.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_errors.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/errors.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_errors_10260000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/errors_10260000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_errors_10260000.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/errors_10260000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_errors_InsufficientBalance.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/errors_InsufficientBalance.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_errors_InsufficientBalance.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/errors_InsufficientBalance.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_errors_InsufficientBalance_10260000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/errors_InsufficientBalance_10260000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_errors_InsufficientBalance_10260000.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/errors_InsufficientBalance_10260000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_errors_InsufficientBalance_metadata.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/errors_InsufficientBalance_metadata.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_errors_InsufficientBalance_metadata.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/errors_InsufficientBalance_metadata.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_errors_onlyIds.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/errors_onlyIds.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_errors_onlyIds.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/errors_onlyIds.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_events_Transfer_use_rc_block_10293194.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/events_Transfer_use_rc_block_10293194.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_events_Transfer_use_rc_block_10293194.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/events_Transfer_use_rc_block_10293194.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_events_Transfer_use_rc_block_format_rc_10293194.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/events_Transfer_use_rc_block_format_rc_10293194.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_events_Transfer_use_rc_block_format_rc_10293194.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/events_Transfer_use_rc_block_format_rc_10293194.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_events_use_rc_block_10293194.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/events_use_rc_block_10293194.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_events_use_rc_block_10293194.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/events_use_rc_block_10293194.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_events_use_rc_block_format_rc_10293194.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/events_use_rc_block_format_rc_10293194.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_events_use_rc_block_format_rc_10293194.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/balances/events_use_rc_block_format_rc_10293194.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_foreign_assets_10260000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/foreign_assets/10260000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_foreign_assets_10260000.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/foreign_assets/10260000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_nomination_pools_1_use_rc_block_29698001.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/nomination_pools/1_use_rc_block_29698001.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_nomination_pools_1_use_rc_block_29698001.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/nomination_pools/1_use_rc_block_29698001.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_nomination_pools_1_use_rc_block_format_rc_29698001.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/nomination_pools/1_use_rc_block_format_rc_29698001.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_nomination_pools_1_use_rc_block_format_rc_29698001.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/nomination_pools/1_use_rc_block_format_rc_29698001.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_nomination_pools_info_use_rc_block_29698001.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/nomination_pools/info_use_rc_block_29698001.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_nomination_pools_info_use_rc_block_29698001.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/nomination_pools/info_use_rc_block_29698001.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_nomination_pools_info_use_rc_block_format_rc_29698001.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/nomination_pools/info_use_rc_block_format_rc_29698001.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_nomination_pools_info_use_rc_block_format_rc_29698001.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/nomination_pools/info_use_rc_block_format_rc_29698001.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_pool_assets_0_asset_info_10260000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/pool_assets/0_asset_info_10260000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_pool_assets_0_asset_info_10260000.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/pool_assets/0_asset_info_10260000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_on_going_referenda_use_rc_block_29698001.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/referenda/on_going_use_rc_block_29698001.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_on_going_referenda_use_rc_block_29698001.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/referenda/on_going_use_rc_block_29698001.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_on_going_referenda_use_rc_block_format_rc_29698001.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/referenda/on_going_use_rc_block_format_rc_29698001.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_on_going_referenda_use_rc_block_format_rc_29698001.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/referenda/on_going_use_rc_block_format_rc_29698001.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_staking_progress_use_rc_block_29698001.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/staking/progress_use_rc_block_29698001.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_staking_progress_use_rc_block_29698001.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/staking/progress_use_rc_block_29698001.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_staking_validators_use_rc_block_format_rc_29698001.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/staking/validators_use_rc_block_format_rc_29698001.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_staking_validators_use_rc_block_format_rc_29698001.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/staking/validators_use_rc_block_format_rc_29698001.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_system_errors.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/system/errors.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_system_errors.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/system/errors.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_system_storage_number_10260000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/system/storage_number_10260000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_system_storage_number_10260000.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/system/storage_number_10260000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_timestamp_storage_now_10260000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/timestamp/storage_now_10260000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_timestamp_storage_now_10260000.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets/timestamp/storage_now_10260000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_assets_storage_11184807.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_assets_storage_11184807.json deleted file mode 100644 index feb7387a3..000000000 --- a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_assets_storage_11184807.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "at": { - "hash": "0xc917133e207cb0f456edfc8e43fe002b94929fe847ba779e4ee1cb662a232e3c", - "height": "11184807" - }, - "pallet": "assets", - "palletIndex": "50", - "items": [ - { - "name": "Asset", - "modifier": "Optional", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "4", - "value": "856" - } - }, - "fallback": "0x00", - "docs": " Details of an asset.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Account", - "modifier": "Optional", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat", - "Blake2_128Concat" - ], - "key": "858", - "value": "859" - } - }, - "fallback": "0x00", - "docs": " The holdings of a specific account for a specific asset.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Approvals", - "modifier": "Optional", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat", - "Blake2_128Concat", - "Blake2_128Concat" - ], - "key": "862", - "value": "863" - } - }, - "fallback": "0x00", - "docs": " Approved balance transfers. First balance is the amount approved for transfer. Second\n is the amount of `T::Currency` reserved for storing this.\n First key is the asset ID, second key is the owner and third key is the delegate.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Metadata", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "4", - "value": "864" - } - }, - "fallback": "0x0000000000000000000000000000000000000000", - "docs": " Metadata of an asset.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "NextAssetId", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " The asset ID enforced for the next asset creation, if any present. Otherwise, this storage\n item has no effect.\n\n This can be useful for setting up constraints for IDs of the new assets. For example, by\n providing an initial [`NextAssetId`] and using the [`crate::AutoIncAssetId`] callback, an\n auto-increment model can be applied to all new asset IDs.\n\n The initial next asset ID can be set using the [`GenesisConfig`] or the\n [SetNextAssetId](`migration::next_asset_id::SetNextAssetId`) migration.", - "deprecationInfo": { - "notDeprecated": null - } - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_assets_storage_5000000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_assets_storage_5000000.json deleted file mode 100644 index 12c5a9616..000000000 --- a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_assets_storage_5000000.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "at": { - "hash": "0x63cf90d74a0067a48b4bd0cc4bfd8de06a1bb352e631671294c5e486124ef508", - "height": "5000000" - }, - "pallet": "assets", - "palletIndex": "50", - "items": [ - { - "name": "Asset", - "modifier": "Optional", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "4", - "value": "332" - } - }, - "fallback": "0x00", - "docs": " Details of an asset.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Account", - "modifier": "Optional", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat", - "Blake2_128Concat" - ], - "key": "334", - "value": "335" - } - }, - "fallback": "0x00", - "docs": " The holdings of a specific account for a specific asset.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Approvals", - "modifier": "Optional", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat", - "Blake2_128Concat", - "Blake2_128Concat" - ], - "key": "338", - "value": "339" - } - }, - "fallback": "0x00", - "docs": " Approved balance transfers. First balance is the amount approved for transfer. Second\n is the amount of `T::Currency` reserved for storing this.\n First key is the asset ID, second key is the owner and third key is the delegate.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Metadata", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "4", - "value": "340" - } - }, - "fallback": "0x0000000000000000000000000000000000000000", - "docs": " Metadata of an asset.", - "deprecationInfo": { - "notDeprecated": null - } - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_dispatchables_7000000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_dispatchables_7000000.json deleted file mode 100644 index e69de29bb..000000000 diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_dispatchables_transfer_allow_death_7000000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_balances_dispatchables_transfer_allow_death_7000000.json deleted file mode 100644 index e69de29bb..000000000 diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_system_consts_10260000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_system_consts_10260000.json deleted file mode 100644 index d303a1e1e..000000000 --- a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_system_consts_10260000.json +++ /dev/null @@ -1 +0,0 @@ -{"at":{"hash":"0xec77b29816dec211e0565fdbdee1e29a7fc482f6f19e6e44ecdebc37545a155e","height":"10260000"},"pallet":"system","palletIndex":"0","items":[{"name":"BlockWeights","type":"703","value":"0x0700f2052a01000b00204aa9d101020080020265cd1d00010bc026fb7f740102000002010b0068e5cf8b01020020020100000265cd1d00010bc0de5f59ba0102006002010b00204aa9d10102008002010700b864d945020060000265cd1d00000000","docs":[" Block & extrinsics weights: base values and limits."],"deprecationInfo":{"notDeprecated":null}},{"name":"BlockLength","type":"706","value":"0x000044000000500000005000","docs":[" The maximum length of a block (in bytes)."],"deprecationInfo":{"notDeprecated":null}},{"name":"BlockHashCount","type":"4","value":"0x00100000","docs":[" Maximum number of block number to block hash mappings to keep (oldest pruned first)."],"deprecationInfo":{"notDeprecated":null}},{"name":"DbWeight","type":"708","value":"0x40787d010000000000e1f50500000000","docs":[" The weight of runtime database operations the runtime can invoke."],"deprecationInfo":{"notDeprecated":null}},{"name":"Version","type":"709","value":"0x2473746174656d696e742473746174656d696e740100000080841e000000000064dd718d5cc53262d40100000004e70521a0d3d2f801000000d7bdd8a272ca0d6502000000df6acb689907609b0500000037e397fc7c91f5e40200000040fe3ad401f8959a06000000d2bc9897eed08f1503000000f78b278be53f454c02000000ab3c0572291feb8b01000000ccd9de6396c899ca01000000bc9d89904f5b923f0100000037c8bb1350a9a2a804000000f3ff14d5ab527059030000006ff52ee858e6c5bd0100000091b1c8b16328eb92020000009ffb505aa738d69c010000002609be83ac4468dc0100000012c8e3d4d7e06de001000000de92b8a0426b9bf602000000ea93e3f16f3d696203000000fbc577b9d747efd6010000008a8047a53a8277ec01000000a2ddb6a58477bf630100000017a6bc0d0062aeb30100000018ef58a3b67ba770010000000f00000001","docs":[" Get the chain's in-code version."],"deprecationInfo":{"notDeprecated":null}},{"name":"SS58Prefix","type":"180","value":"0x0000","docs":[" The designated SS58 prefix of this chain.",""," This replaces the \"ss58Format\" property declared in the chain spec. Reason is"," that the runtime should know about the prefix in order to make use of it as"," an identifier of the chain."],"deprecationInfo":{"notDeprecated":null}}]} \ No newline at end of file diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_system_consts_blockweights_10260000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_system_consts_blockweights_10260000.json deleted file mode 100644 index ad94d384b..000000000 --- a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_system_consts_blockweights_10260000.json +++ /dev/null @@ -1 +0,0 @@ -{"at":{"hash":"0xec77b29816dec211e0565fdbdee1e29a7fc482f6f19e6e44ecdebc37545a155e","height":"10260000"},"pallet":"system","palletIndex":"0","constantsItem":"blockWeights","metadata":{"name":"BlockWeights","type":"703","value":"0x0700f2052a01000b00204aa9d101020080020265cd1d00010bc026fb7f740102000002010b0068e5cf8b01020020020100000265cd1d00010bc0de5f59ba0102006002010b00204aa9d10102008002010700b864d945020060000265cd1d00000000","docs":[" Block & extrinsics weights: base values and limits."],"deprecationInfo":{"notDeprecated":null}}} \ No newline at end of file diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_system_storage_1000000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_system_storage_1000000.json deleted file mode 100644 index 2cf886cdc..000000000 --- a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_system_storage_1000000.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "at": { - "hash": "0xeb737eab71ea40b5cfcb79f4bdeb07c4fa8f16dee2dec7f351e34d1e7d4284bd", - "height": "1000000" - }, - "pallet": "system", - "palletIndex": "0", - "items": [ - { - "name": "Account", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "0", - "value": "3" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "docs": " The full account information for a particular account ID.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicCount", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total extrinsics count for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockWeight", - "modifier": "Default", - "type": { - "plain": "7" - }, - "fallback": "0x000000000000000000000000000000000000000000000000", - "docs": " The current weight for the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AllExtrinsicsLen", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total length (in bytes) for all extrinsics put together, for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockHash", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "9" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Map of block numbers to block hashes.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicData", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "10" - } - }, - "fallback": "0x00", - "docs": " Extrinsics data for the current block (maps an extrinsic's index to its data).", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Number", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The current block number being processed. Set by `execute_block`.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ParentHash", - "modifier": "Default", - "type": { - "plain": "9" - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Hash of the previous block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Digest", - "modifier": "Default", - "type": { - "plain": "11" - }, - "fallback": "0x00", - "docs": " Digest of the current block, also part of the block header.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Events", - "modifier": "Default", - "type": { - "plain": "15" - }, - "fallback": "0x00", - "docs": " Events deposited for the current block.\n\n NOTE: This storage item is explicitly unbounded since it is never intended to be read\n from within the runtime.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventCount", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The number of events in the `Events` list.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventTopics", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "9", - "value": "94" - } - }, - "fallback": "0x00", - "docs": " Mapping between a topic (represented by T::Hash) and a vector of indexes\n of events in the `>` list.\n\n All topic vectors have deterministic storage locations depending on the topic. This\n allows light-clients to leverage the changes trie storage tracking mechanism and\n in case of changes fetch the list of events of interest.\n\n The value has the type `(T::BlockNumber, EventIndex)` because if we used only just\n the `EventIndex` then in case if the topic has the same contents on the next block\n no notification will be triggered thus the event might be lost.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "LastRuntimeUpgrade", - "modifier": "Optional", - "type": { - "plain": "96" - }, - "fallback": "0x00", - "docs": " Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToU32RefCount", - "modifier": "Default", - "type": { - "plain": "85" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that `type RefCount` is `u32`. False (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToTripleRefCount", - "modifier": "Default", - "type": { - "plain": "85" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that AccountInfo contains three types of `RefCount`. False\n (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExecutionPhase", - "modifier": "Optional", - "type": { - "plain": "92" - }, - "fallback": "0x00", - "docs": " The execution phase of the block.", - "deprecationInfo": { - "notDeprecated": null - } - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_system_storage_11000000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_system_storage_11000000.json deleted file mode 100644 index 376891292..000000000 --- a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_system_storage_11000000.json +++ /dev/null @@ -1,262 +0,0 @@ -{ - "at": { - "hash": "0x4d58661c8e475de71a6037cd3009c6e2c492e50da8c8cb383b07c224bec9f96e", - "height": "11000000" - }, - "pallet": "system", - "palletIndex": "0", - "items": [ - { - "name": "Account", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "0", - "value": "3" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", - "docs": " The full account information for a particular account ID.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicCount", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total extrinsics count for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "InherentsApplied", - "modifier": "Default", - "type": { - "plain": "8" - }, - "fallback": "0x00", - "docs": " Whether all inherents have been applied.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockWeight", - "modifier": "Default", - "type": { - "plain": "9" - }, - "fallback": "0x000000000000", - "docs": " The current weight for the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AllExtrinsicsLen", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total length (in bytes) for all extrinsics put together, for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockHash", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "13" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Map of block numbers to block hashes.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicData", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "14" - } - }, - "fallback": "0x00", - "docs": " Extrinsics data for the current block (maps an extrinsic's index to its data).", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Number", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The current block number being processed. Set by `execute_block`.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ParentHash", - "modifier": "Default", - "type": { - "plain": "13" - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Hash of the previous block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Digest", - "modifier": "Default", - "type": { - "plain": "15" - }, - "fallback": "0x00", - "docs": " Digest of the current block, also part of the block header.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Events", - "modifier": "Default", - "type": { - "plain": "19" - }, - "fallback": "0x00", - "docs": " Events deposited for the current block.\n\n NOTE: The item is unbound and should therefore never be read on chain.\n It could otherwise inflate the PoV size of a block.\n\n Events have a large in-memory size. Box the events to not go out-of-memory\n just in case someone still reads them from within the runtime.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventCount", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The number of events in the `Events` list.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventTopics", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "13", - "value": "663" - } - }, - "fallback": "0x00", - "docs": " Mapping between a topic (represented by T::Hash) and a vector of indexes\n of events in the `>` list.\n\n All topic vectors have deterministic storage locations depending on the topic. This\n allows light-clients to leverage the changes trie storage tracking mechanism and\n in case of changes fetch the list of events of interest.\n\n The value has the type `(BlockNumberFor, EventIndex)` because if we used only just\n the `EventIndex` then in case if the topic has the same contents on the next block\n no notification will be triggered thus the event might be lost.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "LastRuntimeUpgrade", - "modifier": "Optional", - "type": { - "plain": "699" - }, - "fallback": "0x00", - "docs": " Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToU32RefCount", - "modifier": "Default", - "type": { - "plain": "8" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that `type RefCount` is `u32`. False (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToTripleRefCount", - "modifier": "Default", - "type": { - "plain": "8" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that AccountInfo contains three types of `RefCount`. False\n (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExecutionPhase", - "modifier": "Optional", - "type": { - "plain": "698" - }, - "fallback": "0x00", - "docs": " The execution phase of the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AuthorizedUpgrade", - "modifier": "Optional", - "type": { - "plain": "702" - }, - "fallback": "0x00", - "docs": " `Some` if a code upgrade has been authorized.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicWeightReclaimed", - "modifier": "Default", - "type": { - "plain": "10" - }, - "fallback": "0x0000", - "docs": " The weight reclaimed for the extrinsic.\n\n This information is available until the end of the extrinsic execution.\n More precisely this information is removed in `note_applied_extrinsic`.\n\n Logic doing some post dispatch weight reduction must update this storage to avoid duplicate\n reduction.", - "deprecationInfo": { - "notDeprecated": null - } - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_system_storage_11184807.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_system_storage_11184807.json deleted file mode 100644 index ef7f0e39a..000000000 --- a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_system_storage_11184807.json +++ /dev/null @@ -1,262 +0,0 @@ -{ - "at": { - "hash": "0xc917133e207cb0f456edfc8e43fe002b94929fe847ba779e4ee1cb662a232e3c", - "height": "11184807" - }, - "pallet": "system", - "palletIndex": "0", - "items": [ - { - "name": "Account", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "0", - "value": "3" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", - "docs": " The full account information for a particular account ID.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicCount", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total extrinsics count for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "InherentsApplied", - "modifier": "Default", - "type": { - "plain": "8" - }, - "fallback": "0x00", - "docs": " Whether all inherents have been applied.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockWeight", - "modifier": "Default", - "type": { - "plain": "9" - }, - "fallback": "0x000000000000", - "docs": " The current weight for the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AllExtrinsicsLen", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total length (in bytes) for all extrinsics put together, for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockHash", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "13" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Map of block numbers to block hashes.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicData", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "14" - } - }, - "fallback": "0x00", - "docs": " Extrinsics data for the current block (maps an extrinsic's index to its data).", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Number", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The current block number being processed. Set by `execute_block`.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ParentHash", - "modifier": "Default", - "type": { - "plain": "13" - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Hash of the previous block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Digest", - "modifier": "Default", - "type": { - "plain": "15" - }, - "fallback": "0x00", - "docs": " Digest of the current block, also part of the block header.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Events", - "modifier": "Default", - "type": { - "plain": "19" - }, - "fallback": "0x00", - "docs": " Events deposited for the current block.\n\n NOTE: The item is unbound and should therefore never be read on chain.\n It could otherwise inflate the PoV size of a block.\n\n Events have a large in-memory size. Box the events to not go out-of-memory\n just in case someone still reads them from within the runtime.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventCount", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The number of events in the `Events` list.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventTopics", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "13", - "value": "663" - } - }, - "fallback": "0x00", - "docs": " Mapping between a topic (represented by T::Hash) and a vector of indexes\n of events in the `>` list.\n\n All topic vectors have deterministic storage locations depending on the topic. This\n allows light-clients to leverage the changes trie storage tracking mechanism and\n in case of changes fetch the list of events of interest.\n\n The value has the type `(BlockNumberFor, EventIndex)` because if we used only just\n the `EventIndex` then in case if the topic has the same contents on the next block\n no notification will be triggered thus the event might be lost.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "LastRuntimeUpgrade", - "modifier": "Optional", - "type": { - "plain": "699" - }, - "fallback": "0x00", - "docs": " Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToU32RefCount", - "modifier": "Default", - "type": { - "plain": "8" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that `type RefCount` is `u32`. False (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToTripleRefCount", - "modifier": "Default", - "type": { - "plain": "8" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that AccountInfo contains three types of `RefCount`. False\n (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExecutionPhase", - "modifier": "Optional", - "type": { - "plain": "698" - }, - "fallback": "0x00", - "docs": " The execution phase of the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AuthorizedUpgrade", - "modifier": "Optional", - "type": { - "plain": "702" - }, - "fallback": "0x00", - "docs": " `Some` if a code upgrade has been authorized.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicWeightReclaimed", - "modifier": "Default", - "type": { - "plain": "10" - }, - "fallback": "0x0000", - "docs": " The weight reclaimed for the extrinsic.\n\n This information is available until the end of the extrinsic execution.\n More precisely this information is removed in `note_applied_extrinsic`.\n\n Logic doing some post dispatch weight reduction must update this storage to avoid duplicate\n reduction.", - "deprecationInfo": { - "notDeprecated": null - } - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_system_storage_5000000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_system_storage_5000000.json deleted file mode 100644 index 78ee94c8e..000000000 --- a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/pallets_system_storage_5000000.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "at": { - "hash": "0x63cf90d74a0067a48b4bd0cc4bfd8de06a1bb352e631671294c5e486124ef508", - "height": "5000000" - }, - "pallet": "system", - "palletIndex": "0", - "items": [ - { - "name": "Account", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "0", - "value": "3" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", - "docs": " The full account information for a particular account ID.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicCount", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total extrinsics count for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockWeight", - "modifier": "Default", - "type": { - "plain": "8" - }, - "fallback": "0x000000000000", - "docs": " The current weight for the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AllExtrinsicsLen", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total length (in bytes) for all extrinsics put together, for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockHash", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "12" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Map of block numbers to block hashes.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicData", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "13" - } - }, - "fallback": "0x00", - "docs": " Extrinsics data for the current block (maps an extrinsic's index to its data).", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Number", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The current block number being processed. Set by `execute_block`.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ParentHash", - "modifier": "Default", - "type": { - "plain": "12" - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Hash of the previous block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Digest", - "modifier": "Default", - "type": { - "plain": "14" - }, - "fallback": "0x00", - "docs": " Digest of the current block, also part of the block header.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Events", - "modifier": "Default", - "type": { - "plain": "18" - }, - "fallback": "0x00", - "docs": " Events deposited for the current block.\n\n NOTE: The item is unbound and should therefore never be read on chain.\n It could otherwise inflate the PoV size of a block.\n\n Events have a large in-memory size. Box the events to not go out-of-memory\n just in case someone still reads them from within the runtime.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventCount", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The number of events in the `Events` list.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventTopics", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "12", - "value": "126" - } - }, - "fallback": "0x00", - "docs": " Mapping between a topic (represented by T::Hash) and a vector of indexes\n of events in the `>` list.\n\n All topic vectors have deterministic storage locations depending on the topic. This\n allows light-clients to leverage the changes trie storage tracking mechanism and\n in case of changes fetch the list of events of interest.\n\n The value has the type `(T::BlockNumber, EventIndex)` because if we used only just\n the `EventIndex` then in case if the topic has the same contents on the next block\n no notification will be triggered thus the event might be lost.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "LastRuntimeUpgrade", - "modifier": "Optional", - "type": { - "plain": "128" - }, - "fallback": "0x00", - "docs": " Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToU32RefCount", - "modifier": "Default", - "type": { - "plain": "82" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that `type RefCount` is `u32`. False (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToTripleRefCount", - "modifier": "Default", - "type": { - "plain": "82" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that AccountInfo contains three types of `RefCount`. False\n (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExecutionPhase", - "modifier": "Optional", - "type": { - "plain": "124" - }, - "fallback": "0x00", - "docs": " The execution phase of the block.", - "deprecationInfo": { - "notDeprecated": null - } - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_10293194-10293197_no_fees.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/10293194-10293197_no_fees.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_10293194-10293197_no_fees.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/10293194-10293197_no_fees.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_10293194-10293197_with_docs.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/10293194-10293197_with_docs.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_10293194-10293197_with_docs.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/10293194-10293197_with_docs.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_10293194_para_inclusions.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/10293194_para_inclusions.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_10293194_para_inclusions.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/10293194_para_inclusions.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_10293194_para_inclusions_para_id_1000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/10293194_para_inclusions_para_id_1000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_10293194_para_inclusions_para_id_1000.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/10293194_para_inclusions_para_id_1000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_24500000-24500010_no_fees.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/24500000-24500010_no_fees.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_24500000-24500010_no_fees.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/24500000-24500010_no_fees.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_24500000-24500010_with_docs.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/24500000-24500010_with_docs.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_24500000-24500010_with_docs.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/24500000-24500010_with_docs.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_29698001.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/29698001.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_29698001.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/29698001.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_29698001_eventDocs_extrinsicDocs.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/29698001_eventDocs_extrinsicDocs.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_29698001_eventDocs_extrinsicDocs.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/29698001_eventDocs_extrinsicDocs.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_29698001_extrinsic_1.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/29698001_extrinsic_1.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_29698001_extrinsic_1.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/29698001_extrinsic_1.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_29698001_extrinsic_1_eventDocs_extrinsicDocs.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/29698001_extrinsic_1_eventDocs_extrinsicDocs.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_29698001_extrinsic_1_eventDocs_extrinsicDocs.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/29698001_extrinsic_1_eventDocs_extrinsicDocs.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_29698001_extrinsic_1_noFees.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/29698001_extrinsic_1_noFees.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_29698001_extrinsic_1_noFees.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/29698001_extrinsic_1_noFees.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_29698001_header.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/29698001_header.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_29698001_header.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/29698001_header.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_29698001_noFees.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/29698001_noFees.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks_29698001_noFees.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/rc_blocks/29698001_noFees.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/runtime_code_10260000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/runtime/code_10260000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/runtime_code_10260000.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/runtime/code_10260000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/runtime_metadata_10260000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/runtime/metadata_10260000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/runtime_metadata_10260000.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/runtime/metadata_10260000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/runtime_metadata_v14_10260000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/runtime/metadata_v14_10260000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/runtime_metadata_v14_10260000.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/runtime/metadata_v14_10260000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/runtime_metadata_v15_10260000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/runtime/metadata_v15_10260000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/runtime_metadata_v15_10260000.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/runtime/metadata_v15_10260000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/runtime_metadata_versions_10260000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/runtime/metadata_versions_10260000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/runtime_metadata_versions_10260000.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/runtime/metadata_versions_10260000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/runtime_spec_10260000.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/runtime/spec_10260000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/runtime_spec_10260000.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/runtime/spec_10260000.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/staking_progress_block_11350267.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/staking_progress_block_11350267.json deleted file mode 100644 index f79d2baad..000000000 --- a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/staking_progress_block_11350267.json +++ /dev/null @@ -1,615 +0,0 @@ -{ - "at": { - "hash": "0x18c3efd7f2990cdbbe045768c8be64e7a167c091e4048d3a46491cbeba00b53f", - "height": "11350267" - }, - "activeEra": "2061", - "forceEra": "NotForcing", - "nextSessionEstimate": "11351876", - "unappliedSlashes": [], - "validatorSet": [ - "111B8CxcmnWbuDLyGvgUmRezDCK1brRZmvUuQ6SrFdMyc3S", - "114SUbKCXjmb9czpWTtS3JANSmNRwVa4mmsMrWYpRG1kDH5", - "11VR4pF6c7kfBhfmuwwjWY3FodeYBKWx7ix2rsRCU2q6hqJ", - "11uMPbeaEDJhUxzU4ZfWW9VQEsryP9XqFcNRfPdYda6aFWJ", - "1123RekaPHgWaPL5v9qfsikRemeZdYC4tvKXYuLXwhfT3NKy", - "13mK8AssyPekT5cFuYQ7ijKNXcjHPq8Gnx6TxF5eFCAwoLQ", - "144i3MsnDSGAi5F4XsfRe8kSS7Sy2hfbXaydgnN1UGW1vsQ", - "14fcsJbrR7MQfUMJmb7NKpE2shVRyko17rt2PcaY4HKthQg", - "15uCAG6qK9qdx3EG3kyb5TFn83PgFUSQEioUgA9GLTjMFfq", - "15xn6gRCCB28TbNMQr4jpQ6pTTmqZ2PAkmfYz9tDaTwncMh", - "16KjnbCmBXqT3R956sHak7THsgQZ9Ek8ibnG1sFyCNtfJ8y", - "16RfWatcKzDUqYyGKifUhHDcossWumW7bkyiX9fEMN77WKA", - "16hUkBK3h94uh7682gk7HeTYvPmSa4D1Y2w4KUZh1u1cP5J", - "16zgGRrNMKBfz5CGJgvAmkavER9T8syxVBELqVA8SMLP3gm", - "1737bipUqNUHYjUB5HCezyYqto5ZjFiMSXNAX8fWktnD5AS", - "17NNvQg1ZEYo6VeBE7X9z9hdAiCvbEHLKnwfgUJLkj9RCK1", - "17T31HJzsoBFkwpje8CqvgUpFGSzAVR3NcaNxacknfHYopx", - "18xmWVx2sRYSDEv2XDrPviDxkQft7A4gzxViGTQ4vTwQVcc", - "1917XxexsKrPL74VVohQpReVTpjLXFJ7aZ2VqVF6aR12Xjz", - "19MDWWzc5nBTroVSN8cQFYkSC1x6ZYJ7s1846Ff5MKdutuh", - "19QjsGF2Gdfag3uNgRT4zpVQqJuvHS6eX6cK3R6LDeq9wyf", - "19v8rnEDLbrJSyuCLao768QnA6v7SxincyDhQkCD6BYmYhE", - "1A2ATy1FEu5yQ9ZzghPLsRckPQ7XLmq5MJQYcTvGnxGvCho", - "1ArdZJtNUrZsfidfn1t69xHaSWwzf6PQNdLEUpcnVmbkZc5", - "1BwjS7oyQ5EDGrdfMBgbVRAXkW5fnbWeQAYWaSCzu27dwwh", - "1CGs7yMf55AdzjYkNjVbc4WyibUPwDEdBwbDngTu9dD2ouq", - "1CQh6CLJdzkFrbGPim4N48ZGz42VHyPyEFFHnUvB4FrwJmL", - "1CZdvokFgBMfU2Fjv2tE9HCbjq3tNbTgpW4bXKVciAN53NH", - "1E5Sq4tX9mbUVBDxjrNbzHzhZpWbWMSRmJxVikJqJovJgKV", - "1ELXjXXoFGVaBFdZ3HSo61E5ySRhr68sC4pArQHcDqt2NFR", - "1ERUvCzrrA5GfUfnQyxSjNPudMKEwcD5rtp661Dbfb4EdTG", - "1Ehsfg3Jn79wVogKcKc1URBYDY9EoijVxiQ3fYWU1XxY8YA", - "1Ew5wAsMtvbRdd4RdxSheLpEkSRc718gtcfTv8EmgzEbknA", - "1EwUAppef3eii8rNEXM44WxVsB6y1apZkfD8ejpwH7d4nmQ", - "1GmTVLwj9K91jQBmnPWM4KkwQFWGakUo5JUDKUPD6TPrZTC", - "1HMQVknF2rGz2vBegqA9jU4NhZKQtW7nZTDQykgeSm8FgPa", - "1HhL766bJ7SsULUGRCKUs3tUY2H59jFSXsnaMiJwWagNtw1", - "1HjWQTK8xe8xncukmcwUvQLTXRdfMW6aruMn5kXLDwMim2P", - "1HmAqbBRrWvsqbLkvpiVDkdA2PcctUE5JUe3qokEh1FN455", - "1KQS1Tsk9oKrTJ6u5vJs7bF3Zh8JqceZSuUkaAdJ1DZxoPN", - "1KfeQgNt2h9mxB9eHqkr7rWrXjP3qPoZdnS65GYyyp99C8d", - "1Ki7BgQXWVqptuQzYCZxdMj8inHhDePvQTJiFr3XvBQWkRP", - "1KikY9PK1kYwawnGcERnzLbSi39cJyxMRW5iLNsg2nfjWiN", - "1Kmfp4pKbspNG94nLgUzdoz526uMh9RojCNoFKr1GXrgodo", - "1KvmDU738aReuE8La7wvVcJSTcnVf9ZU9YmWUK8QpHVeLX2", - "1LMtHkfrADk7awSEFC45nyDKWxPu9cK796vtrf7Fu3NZQmB", - "1LSJZCk7hGj5Q7afjzdNCtWsTQQUGwNoHbJQoFz3YUscgh9", - "1LSvoFpnspPhvwgJ1GLLT4SRHBmWXwXE26JHiiZJ4RKxHqC", - "1LVSi9pT8SoCpjcGXZmfUo22EZtuwcwXim5dQFRVKDMFf3f", - "1NDRMvN7FH9YtJLVPf9doF5zbuUwn6hdH1b4WmVyZDr5joM", - "1NchFAs3YJHr2BzoCsJW3m5HgD5XaHAQokUatme4bgyxEm9", - "1NebF2xZHb4TJJpiqZZ3reeTo8dZov6LZ49qZqcHHbsmHfo", - "1Pa88VEmcsSg7ZVKFSKG9VzF6otQYM9HiAV8SujvSRAJo7J", - "1PqUaCWULAwrdvY2B6FnkzPHWzAhbKEk6hoFoUGs2tCy5jS", - "1QmHs5E9zGeJ2iGZMYoBdYKvNLfF316WGi7GvGtSruUJzW9", - "1Qowgb1YqPTVA2R3DBSbtyk9V3gh2nwGohYonvZ6q8JL9dF", - "1RFEB8hM8DSBojiSZPydc2CrozNutn65BAypYMzpNxSTFsZ", - "1RG5T6zGY4XovW75mTgpH6Bx7Y6uwwMmPToMCJSdMwdm4EW", - "1RJP5i7zuyBLtgGTMCD9oF8zQMTQvfc4zpKNsVxfvTKdHmr", - "1RhqvtG4SS6ooc3JELk8kpTaDiLP9f92jdyR5p5efPWVsx1", - "1TunGctS5HELfuJZjd5qBNoMVsST2EBdMw5vWK8f3dCFbq9", - "1VrKDfXunzstY5uxPpjArUbZekirGXcpMDYvCBJmjV1KdEm", - "1W7CrXX5DE9SM3A4XP8zdhGq6EXWXonCtDmtrS8XgQJwuVm", - "1WLTprf3uUDPz9HbQFe3t2CJdSrpUgiVzvxCbC9yKDSta24", - "1Wo6qcrh7wxc1kQY5nfixFuCAFuzkgiwau64SmrPXBE7vVf", - "1Y2D4qp5Sm9SPKZhaoN6jRoA5b7PFR3njaZLJygeNUjjr3X", - "1Y7eWuJarw1MUMf13YQiiTrgq2GAxzF4YR4JATi6G4a6Pgx", - "1Yi8HY3jPZVqpByf8ESDdt4rXWCZLKy4tHfsSZUAegz3uF9", - "1ZHNWmKsVHCS528yKDteRPpnx5hTrGUZvyjEpvaWppKDiPt", - "1ZVP61Y4pFV5XqfrW6HXA8qAxsaN34aqFsFEidB8cMvdEkV", - "1ZXdGs6gFETHVTEW9RAZXwYxkDwAfE7wdt6czjBM4QRfMfk", - "1ZyhbSPMDMMuveHErhmd4XR4YK7r23E1kwn1RQzhp2EnSme", - "1bAVKRsNUbq1Qmvj7Cemkncjo17WgyWAusCFZQdUfeHSTYj", - "1brNvj8Y6pYTKQGitEHbL237PmV2XZvFhpw5QiUcGbSoYDq", - "1bxnxTev14jMGab4QRXeafa7chTRHV7ZZ9e6GrKrrpXAHtM", - "1d6po5LATxuHeAUTSRd61LGA6QWJ7dJRzi852kojKFLbL3t", - "1dGsgLgFez7gt5WjX2FYzNCJtaCjGG6W9dA42d9cHngDYGg", - "1eU1WMiUCBTxuCoVSE1HMQ4YyqfWuTfL9eX573cc3GCP5ow", - "1edsjLpqQ4QxtgLPP5xQiNNkjzKcXuaNmUQ6vc944J1jQAa", - "1ei39mGT2pHgduaXPESVfZJAjdEJZ6JnFbt3uWA5tarT4He", - "1gYP3iNJY3iNNtgmMdRcZXJruc9SqruknuBdQ3TbtpBM7xK", - "1guBaaUmYpYPmsNmooQApqFmpmRHeaipb1CxoncMuiaqXGh", - "1hFMbRrA43YckuwGDW3zzHFSfX64wZMezqg4pmhe8P2srtu", - "1hT5LC2keHNNKAC7zR5JFJ8CNBi5mXhuphP4Tt6YynijgnL", - "1hchSbMVTPrxmMuuCQQ2dkZnUcWLwNHcuU4C5RR9raKkfXh", - "1iyDF3iHuNjTNuQS7XEqMSdvx4CrdaxK6kLhpMCBc9rKumm", - "1jbUHVCrwyKtUmoCZ4sJousx1og8aoP1HEyFcAW6xvdKYCU", - "1jeB5w8XyBADtgmVmwk2stWpTyfTVWEgLo85tF7gYVxnmSw", - "1jqkeJhuoRudNTVL5dV1qZf8RQtyzcf6ZT4yyvUQbKFktr8", - "1k5HSoFHQ6qWB7NAu8bVXgUo64rfdA5YytAKq2jUWG5ccFe", - "1ngMQVEqj9Dm1RNUxAQTNeBwePyKq8rXcM5x3bT2KqgFZ5n", - "1q5QgXCsasUtjvwq8ByT5QPivNgidUSR55c4kFJnjKSiF4q", - "1qNhYLFbBi1tFyvYfSRRBP3Ce5cjS1xKMTMVNr8gJZvNTXM", - "1qUKZLhxVGUPozs8j8XpxH8VbZX5ckXV7ziUf6ji83ieZYd", - "1rxCNHsCnvgBRE6duxifTPaBA5vhmpwADXb4FBqfgXbzue5", - "1sAkfdTH3cHAdJRYqMPNdeV7GhTKrddvMfkQrm3pQBABWrN", - "1scioGhw4gEtZP94gYyRDupmKaDUdEsohuecWoVrNB5q8ec", - "1ufRSF5gx9Q8hrYoj7KwpzQzDNqLJdbKrFwC6okxa5gtBRd", - "1v7QwYLMaABh7eyFKN9PHbKquAyPt6PtcYZZWvf12KV5pMk", - "1vP68Adjn7JW7brJJc89V7R4hAXPtJr3FzKuJF1qm6uyzWt", - "1vRNR4nicdV1LbxGWJg15Lr4ZL3tn8e5bwbP1LNqAwQWdiH", - "1vTaLKEyj2Wn9xEkUGixBkVXJAd4pzDgXzz9CuVjhVqhHRQ", - "1wcx1MBUQkmHL1ed4jMjo7U7eNNVvZjV7iVYedP7FEKqay6", - "1xgB6seaZbH1v7GnK686iiNcqafPyGa3KexabQSSFhQcfAy", - "1y3bTaJiiTbyp8run4WG7XKrqZC7Zxw1AZVAeyNXj48ybhW", - "1y6CPLgccsysCEii3M7jQF834GZsz9A3HMcZz3w7RjGPpBL", - "1yHi5zxx5d5RBFg7ekfFoPnoaD8W2wmQqNN6crDr4RKUphP", - "1yMDtinZfWBBhSWfoTvSV9o7EH1rVrEPZNDK9JcAUc45CNZ", - "1zugcaaABVRXtyepKmwNR4g5iH2NtTNVBz1McZ81p91uAm8", - "1zugcabTuN7rs1bFYb33gRemtg67i4Mvp1twW85nQKiwhwQ", - "1zugcacYFxX3HveFpJVUShjfb3KyaomfVqMTFoxYuUWCdD8", - "1zugcag7cJVBtVRnFxv5Qftn7xKAnR6YJ9x4x3XLgGgmNnS", - "1zugcaiwmKdWsfuubmCMBgKKMLSef2TEC3Gfvv5GxLGTKMN", - "1zugcakrhr3ZR7q7B8WKuaZY5BjZAU43m79xEyhNQwLTFjb", - "1zugcapKRuHy2C1PceJxTvXWiq6FHEDm2xa5XSU7KYP3rJE", - "1zugcawsx74AgoC4wz2dMEVFVDNo7rVuTRjZMnfNp9T49po", - "1zurWXfmErC3hpcrJt32wUD6VyWzDfdGDrmgaoGioY5euwo", - "121MoEeXB7xYcyww8w77C2SxjcSKaxfGURQebibU28G3Tb7D", - "121gZtuuG6sq3BZp1UKg8oRLRZvp89SAYSxXypwDJjaSRJR5", - "123VugBRFMqUEFviSYrG3ewdZ46ZmqxjmRaGY6BvakfdPVaG", - "123kFHVth2udmM79sn3RPQ81HukrQWCxA1vmTWkGHSvkR4k1", - "123tW2XkkkA23FPcPikULPtYARWkztBKVE7fv2k48FgPV15q", - "126ANkfm32BEYjHLGvqW5KDEkzmTGxAr6RchdE85GoyjMjeW", - "126RwaHn4MDekLWfUYfiqcVbiQHapwDSAT9vZZS15HLqfDJh", - "126cWhehuBFhQvbDqt26dWBNgELfkpc72WvJV3sx82qRogkT", - "12713bbq45c66CN9AD7yusSXWE1kY91DcMpjVcB2rXqZKy2w", - "12771k5UXewvK7FXd1RpPHxvFiCG4GQCrxRmXWN5tAAwDQoi", - "127zarPDhVzmCXVQ7Kfr1yyaa9wsMuJ74GJW9Q7ezHfQEgh6", - "128cG9CRYUL8XRzB8n53jjfb1iJ2FasrMdrTVHjKguqg5CPS", - "128s81jFBAUESm9zvNqHaE6Dq2Qs4Gv8wPMZZhpmZr23j6e5", - "129TM37DNpyJqtRYYimSMp8aQZ8QW7Jg3b4qtSrRqjgAChQf", - "12BVn5jTsJv78Kd8PhpguMnQjiBLUBzXTys9F8V8Scm7y4St", - "12C8CffSFabw8kx8AJaJ7Spnm54iktTjzW6mcYuLr4ZwAFdS", - "12CJw9KNkC7FzVVg3dvny4PWHjjkvdyM17mmNfXyfucp8JfM", - "12DsMGfoKUnB8jSSHVP4QLJetNesSeXg36m64DfbBYjRFEEB", - "12DsYUto9AcKA4kRz1yLcGh13CTLe7LbUjDkMS8ZY8rCK4rn", - "12DvzVED8odXuDrrk4izuFKit2uFgpXrfSoXApLq7NjqfrLc", - "12EJoY9YDAHcKAN95jD6kedaisjqnuwe2oyhU3XrpFo4Ezxe", - "12ErBetb4FWp3992tXET1GtHrTW3TdhUXsnQd5zDuF9WaxYV", - "12EwbukHX8SUkYtQSrYNxFD9GCkZ65E6orXAULzSsiSPooLN", - "12Ftq9EM1qc3persmD9NFrzFZqF5CALsP7oKDUsGTBe7FBDm", - "12GTt3pfM3SjTU6UL6dQ3SMgMSvdw94PnRoF6osU6hPvxbUZ", - "12H9FfSYdQ4GrKc7tdxK8U6DitAZMqfnhB8gtHwd2rpCiZfN", - "12HC5RsJcPRNhemZ1dixD2f4MWCQUFzem6YDNNrqS9jz9off", - "12HFymxpDmi4XXPHaEMp74CNpRhkqwG5qxnrgikkhon1XMrj", - "12HZiQM4Hk44Lgug9EFGiZx5Vk1tSUbH4DsJSQcorurB4GdE", - "12HfFn5RBJSUqYF5dLopowmSRqthTPQ7733LdT3ezNtUMxqf", - "12Jv95j4ybvc94qjN9ZCHjENXEL85e9HgRVPyU7x2aJDzBp4", - "12KYrnCDjdx1amhJfgmii5W1dGT1bgN4iMLy2r2BpX19XG1s", - "12L4a8t2RGou15GZDMu8Eokx4gXxQAim5MePgYjHeAeSmNHY", - "12L5m9htNsUP58mBHFXcsABDSCohhX2J4nMuY9TrJHNLCssQ", - "12LCH7wmj8LAa4bXLq1iQnDbeZZfE9AUjvP7xqDNiR87fLdp", - "12MgK2Sc8Rrh6DXS2gDrt7fWJ24eGeVb23NALbZLMw1grnkL", - "12NbS8DamkXEi4xu9yUDz8ticuSsMda6rG7bhh2baK9RXX3x", - "12Qq3fn9xnFZ37Ltcj6BH8NSpAQjEMp2oKnEALa7bbuguU4L", - "12R2eXcE2QhMa9BkMsWktt9wmoxbgiQBDG9YUM1p94r2F5UD", - "12RTaMcEfdU6QQhMNdUo931gxG8RxwbLZB1YoaxJwytp8b4i", - "12T7VqGAcQzdxNk3Qub7Ln9jFnsN3dtJwdSsqNfThSeCAjSf", - "12TB6KHDVSRy6f2rwDFwrKosBQXayNdCPKAAXHYtev2yxuZC", - "12TemnsyrwfMXRsdUsnpeQGAof8nnoNRib8hDUivzAsBkr2t", - "12TxPQBN99gGwn4g9HRKCjndrnCSv3SuRaCHstk3qmoQuS9L", - "12UKciN33b5Thw4aiMxhewRNmWWH6vQPmaUtHC5ta1SBt6VZ", - "12WRpiUFDZ1GjksnpmBL3EzT2jz2TZ7QHhUTqoubhYPQ7PAZ", - "12YFWxpS32wTZq4HcH28HMR5atkGhxzfD7aNjhTCu5Vyz9J9", - "12YP2b7L7gcHabZqE7vJMyF9eSZA9W68gnvb8BzTYx4MUxRo", - "12YVhYTtGpTCSXRvPHyNjDK7y5p4J52ppBVJGjWh2PGrUe9r", - "12Yo8LQiJLoviSS6tWV98pvNVnhfjtQ1cqjE94q6Dn1d4e3F", - "12ZTDL5BPYrrPxLWZM2TEe3GckXm9rz86mDZSkRvWrXeJ3c1", - "12aweZ5yqNHoKHG6yBQhWyY9mxvVpwQ4FNTQ18PPTvFbX2NE", - "12bUkY5nrGyoXqBpxKDf88z5VQWzaUK83PCgyHtJ1UN1ujjU", - "12cxB2QQWTNN9gpqSjeaMmgHUr1DJLRsMJeHuy6LptaBzrRY", - "12dGS1zjyiUqj7GuxDDwv9i72RMye1mT7tSWNaSx7QVeJ32H", - "12dcw2zLV55dhmLc2FQwDsNWSmWBes9jWseqek7DSZxEEWxr", - "12doSHUJN1P6HL9zj96Bh2ZwVBXH7NcCi78caVtte8aQWGHz", - "12dvyqCFhVubTDqMdojyjhkxVUMaYVXWLv8uZW1NomUunPmN", - "12dwp8NPxAxmfUkWRCFHvuoCEgQwbTpotGVWaYtBGcV5DoKc", - "12e1tkDgfF3GYdiTkRq1vunXrvvhpKq3BQZYbJ1haXHApQTn", - "12e5iFDMe4DuBMRmQtRg5yzCc3vc6ZueSUZiF9sxMBRP1Q9r", - "12eJYg9RLVtAphFfr7FZ7rV3T5NmRa1B6jWPGNgGzE1mEDSa", - "12gDFFh77N1mx27FRyujXzwoDnmw5pN4Cu7X1bZWyesK5gEB", - "12gPFmRqnsDhc9C5DuXyXBFA23io5fSGtKTSAimQtAWgueD2", - "12gandRebSiGHsyYyePTqcKghP2ij79QFRKv5AzqcaYNNiLN", - "12gkhA8JEz8ywmVj1tsVafSp9C4saKzSofgMwBJcmFJAGUVX", - "12gp3USksqBBrThp7G3QYJ2Nw3JR2azFxqYgsSch4NyPFgN5", - "12h4jeQtjecPx2MyrXmMpQLBumAPxHgGiL7vFoaLkgVBQCNJ", - "12h59u6mkMSi4Xpa6F6QKWQwn4oWx1dVxdm3V6noMdzGHmxx", - "12iawP6HW33wj95sc3g7bVun8YkYnzP4FGkdmjnkpJowzUKf", - "12iqwZGB2sguEhjFi2ZRuWWixU8mHJnSiP1pwDefqGsBy4rV", - "12iyk5eDsjzKYPVrtduC4WNoCGynHHbjirv6gGpXPERkGYw8", - "12jBKTExAPTLsJEPqp9nPha2vmuP4KK2aLPQ8cUwZ5GMtXkp", - "12kfhcuKzM1WMwweyz3inYeYivufQguWVqkCh8Qz98JHKz7Q", - "12mbV9Kr9X17qUhocmntAM4UQGRejhUPXtdnNjGt93A1aSXJ", - "12oyrzYfsjH1SMJ4oydkibQNeS6k8uzk5DbymP8YkkJpaYbF", - "12pRpKrKXRyG6QSYX9gnvjMM4a8JPQ8nGzB8wNNY5sN7GGwA", - "12pVRQpqU9vja9MnmLRvKpeVdL4zzBhA7byoy3atrqN1V8f9", - "12pZ8VV6o3A6BFYg3b3kk6TC1ZD53x9bXwkoFenv183DEods", - "12pZQvd4DsC1GQgaujxCPosv25teZRJsjcYRGQKH9teTZ7nw", - "12ryLNrg44r7Qv7oWZa2wK6PuzUmAMueyVHRBsyR5N6anEaV", - "12sNJAzECf7AUgz1Asc8iYTmoFZLy7prg88nuX5VASVZmjnq", - "12uT5wrkGedBiKLfPRZaSVdaoKQfpnQyLRHgB65cJHH3zQn9", - "12uqiMnVAmuz6MhSVHyYzKeZuSneDK1Jga9yP6Zfnjs8yZFQ", - "12wtfs4UfodYT1Y6y8NQsQaduLSJbhz7oaNt1F6gTLFHD1y5", - "12x3EG6dvZv9h3sLNaEFd4z2q8259tNgiEU6vismjrEZjbzN", - "12xdDFDSmYKYijQLjFNB3dgveDf9ymdzodHcBcQWsdYSBo8g", - "12xedMA9ZJFe6Ui5VDYML3PsCde2LbhUzEYEPyCgFRcJvfRB", - "12zQwS7c2oWQ91kTXSDCwUj8gvZb1rccSzKikcBxBivRdAwk", - "12zREJg4524bbPVhZrH1tyJAWkAWV1kUd5hh8TeALSSjCv65", - "12zTFfxSi1oa2cgSGHavuZctowWXkyukgSq7H8AV169hXdPj", - "12zh6tchkvua1HR6padi7KEXJz8HM1bu311ckVZymVqFXE4v", - "12zisb4tk4nxGyja1kiEkGFRWMGZo2mnUxpb5mqARfTjq8tE", - "131Qzz7SvHUn7zdDAt2jFZmzVsP2KkoiDWLZa9N7FivGTXpB", - "13353aPRxkEPSQSu9EypGLWXCHbGbbDtaUpPASjdLrtdnyC5", - "133EMnuUGgQN1yCkSZJ28RmkkgY6eTP24EoB4aws5mGB2FpG", - "133oN3pkmNqqR5rzpaTEDq3AtmVNhfFDfoYLFMk7EuTwNzNZ", - "1342iFZNrBfCP9VWxqt5p39LiHp2ynyq85Ww9K7R8w6BURps", - "134493oxkFuEiGx47AMnZZQGLrkrYLNquBXxdH9Krty16MDe", - "134Bw4gHcAaHBYx6JVK91b1CeC9yWseVdZqyttpaN5zBHn43", - "135rhF4kG1VxfrDf7a6c6TQzrPTyKNTqtXX5HDS8k4bDSeJy", - "136a4dn4RD3MHgM7k8isUgEL6rdpriuRT7pHaiW1mfVD2P28", - "138SnSYhxMUyAafW7QVnBxHiZtEjQXA1zbbE8jUayJ8e2Fer", - "138fgCNfybZ6BYbBb6b9kbkS4J4KnCXHpPFYue1EGnVSkyaf", - "138tCNoHg9QbhjqanRS7R8ZC8547A6CdaSmrCtJCRLpjQk6r", - "139J8svWogi6Xbn4rfYnCBCwh7CQj6hRxmSaZQMhTGsB81s1", - "139QeschFEpjMJECamzcMtAWewV7VsvbaRXMUbzN5yARfHCe", - "13AxoWJYFEHxjrFYvjNCsad8XMqnbhEgH3G2ULPjiuudywNJ", - "13B1jiLG32NNeEiuarQze5YQtJ3S3DpALrkK2kkXMs3Esgf9", - "13BWVNKSQn9dTrLXhmgm3QHZZNCKZ9ToEsJitjypEvLwJB13", - "13BeUcLu7hzSTaoKpEtpdqiXKZz6yVfT9exKH6JuTW8RQQvJ", - "13C2DHD8djdFiXorENB1nPkjhN3f9efNmstqKQqzaiDrVe8L", - "13DXEEVtyqbhCJzFVPTUk31oTzBxCJQtButgWGhrUdYu5muM", - "13EEEhiXeCFpFjVQxmjJsHjr9LFvnAurcnwQ1FDgB5LmJwQp", - "13GFUpQkNonsMMiBuYK4pqGUkwnE5AojvtigR95ahiimMaBb", - "13J6LkvsEtdZpvRwUMVNbag26md9ycmGe5PM8UnEokhL6Tgk", - "13JuwkvSqGUDo8zErgfC9ivGfKfcdDyceFkvh9NW4wz7NbuF", - "13JvVC9TLVX5FT52Z4kEfQT6nZ36jVdJpwxsEaKbCjx23N9y", - "13JxPP5Cc5oE3y3BC9RadyiHdUMctMnvdExApfN8M22NgdAS", - "13KMzebkh8xQQ9QUzYJyj5qdpKoarQFaU7LKNF1LWyPQp1p8", - "13MeD3vqaN5cFKzX3hzBjkpLfoqwJGYGaA4dDgiiS55wVXGG", - "13MqUAZVA2KEy3EChkzuVqdwPpe51DbmzDhLtxaca596W5S4", - "13N7R5rP3gtz3W4uDEQBVddXf5HE9V3CsAibuxUjCr6UWjwA", - "13NL7w9SitBziaa9nBhWmuzmEaRTuX1RvWYs21zKyrvBokgT", - "13Nd71b9XLWNptAcSgesGMKJctpm1uLjZBWDfVdeA6oyXdg6", - "13Q48Ep3PVpvXA1BeVcUhNJerLshsaeq4EdgPUHnemqJYmND", - "13QPp7NpcgPGFY8k5t5pcN2bSZXrubvwGd4piV6bu5LGczyU", - "13Qh1MjFX8C31GguPGzzQT6PqUEGfrBkdsVXqHyx7k6PJmEF", - "13REihPMQRbujGMrSUyCvWhg1Rrzuy2BAyXaRv4KXFyCsrMq", - "13S541dQ5NXFCxSBqFUFghkCfUU6LsZUVem7z2tfvsJwWFys", - "13SRcrvGsN474GrjgW8YydonT9UxhoK24Ndvcc6Sm41p5io5", - "13Srw7dVtGJnZrV3o6RCAJ97MaGbSKShQQiSYjbGp4Jvu4Cs", - "13TBraYSRLejaxxMqAYFQ87RNPoCy3c4LTE3Y7FKq4qcFEqf", - "13VKHPMcWj9Lpu9sBd6ZpxHW45kBSuM6aPCgpCZqUS8jZ5Ea", - "13VUefWScvmVkPFgNcup5XMpRy4ez9LMtCTi1kRhWpy5AiZk", - "13Vfrc4PjiE4ZKsHxCa54AUpFRRPb1d247STD4Ankb82Fgaf", - "13Ybj8CPEArUee78DxUAP9yX3ABmFNVQME1ZH4w8HVncHGzc", - "13Z9qHxDALpNq7bwbwkjwPLR4vb7qwrEt3VNtVFzs3UB3NP6", - "13agGwdvkkrUbjiR1BMptgxYXbPQNVqDFPRGu7wAHRb8Wj4M", - "13bCTo1PNcdX2nY7Nrnrn4Bz2nBWWcNDbPLmFf3FhiavMkfC", - "13bRirNoyWD3iEF9yHvua5QBoeYjSSEFmZ7bhoryTH5NkGue", - "13bVhUJ3sf8dcZUiitAxdSNadDmx5QQ56efD3ZxkL9BnRCMX", - "13dADwBtYmjGqjZTdYJ61H8WqLLe4eZiY9hjVPLJQ76DHUp8", - "13dTRkoKWSDbZpcDtrNMW1uzns1ZKBmAUSzcp5vvpFRjuH1S", - "13dxtHunX3FLX3TJbLypxJXsoEuEYDcQZWn3TMf19tP17jEj", - "13eG7ySsd1kv47PR44yszF23MDpqUgPNZwikZZ5cowF817h2", - "13f1iU967VsBeRxueqs9zrJV6JZ1EmEP6A1QTatThBcYbxqE", - "13foHgXdzr1agokV6Ed9CBHGQG1NpBqvqhmUL7rojcBUBzvq", - "13g1ypDWPNjjGKLQNMtLFiXLhBWvLxMDzPZJNik2cfD3NDBs", - "13g3qpjcv4yuCEnqn7VFKbeq4LZ8qNMvNTJcfsaC4Dgms2tH", - "13gQZWtAVc3v55wEpNfQR1VrDgEhNQdFr7x6q8pK5mW51Rn5", - "13gVeT6Yhy9BWV6VrRuqS54Tk9ZY8PH32sbw9fPS4oWw7Pjg", - "13giQQe5CS4AAjkz1roun8NYUmZAQ2KYp32qTnJHLTcw4VxW", - "13iPW4pSokbEQWomqZhwsyrMWuNspt6R1YnuCHXqUVvFYM1H", - "13iTwLiWy8jcZsUgeSJjvooy3wAhedrBq9yapo4QzhTH2npU", - "13iWeBT4h5FtBAYkZBkoMmyzXv7PUrEMigtag1YQc4NhLwHs", - "13j3AKfGDjDaKvF2CrTADL1guzT542rqyRUzPXsiAxHUpzz7", - "13jHcLP59Btr8hTFaa7jVdgYWPCNNdPqibC4gUWyocXY3kcx", - "13jN7oYuc8TBcUwGjpjbSghvPE8DdEuArvjvymqTCB6Vkguc", - "13jagnVH4vS6a5XD1xixGA4zUxgjkZ9h8dbQDVCDZYR6rS9m", - "13mscy5wfYAmDBgLoA43rkWGpR1PJApcGtXJt8NvtMcM9VAr", - "13mz9ZNxhBhRPFCw8D2mHeyGdZU2RJ5ZGHFLmfKfCHci2Wvj", - "13nmvNGGE93Vi49wdmdhZqdFGyBAR5bfm9qEZpxnX9LJSDmb", - "13ougYD2SRkn88L14XiYCJc3mL7AzWoAMVdn1FwLumV49LjU", - "13pYWKctR5s8vQuyZt3pxQXue4SRH9coyAS9S9z5HtogAnhs", - "13pZskDR7Pt67NtcChSr4uFRBf9ZS52nQeyrceSykq8MDrMe", - "13q4HqAupCcepyZXXi7468g7c9jjkRzM8jBywP8VsMKLN1mU", - "13qsqBRWCaH12UsuKuaLuvW9M29FRjfxtZMmMMZLLi9JmyZc", - "13rG5oK2qskxP27mjUEyn1YbrmzpCV6fbBVcnBUd8Y7sQX6Z", - "13sEUJrHpcyBZh6yKKwou6s9sXoMhVW9mfXq8xW75So9a9Ys", - "13sULqZ2NidBvrocYwJYxT6WJkcSY77SiQXtFiJHsurTZgqN", - "13sbui4Y5u8qvE7BQjWW9tZ6fQCXHPeaVLBiUADHUQ19b8NJ", - "13uBxESEQZ63cKu4LtLNdHX7CYkokh5iiJryJSA2A2AZenJQ", - "13uW7auWPX9WAtqwkBx7yagb78PLcv8FAcPZEVCovbXoNJK4", - "13v7qn69K6y3LPeYXhxjyhvwCMXA3JizyEJKksPb1aLcuU1R", - "13wroNHV6aJEkUFJEx4NYv7kv5vgq4HypLAPSz347VVQbYj3", - "13xTKARCtSSTtveDMuTz6s3t9nb1cU1Qasi3iA7BiHobxUdy", - "13xfWrP1eF6mYp7mQ1CuNYVktPTxhP5Q2xGXiyVtv1j5hNFB", - "13y1gcRK3GLZy7wzood9je2aZwwcXJMAgQj1ZgGZpFEHJ9Aj", - "13zEhzmZ29etGbhCvxZqKwkRkJ5UyeBnrDqQAUsqwHVVVisL", - "1413DEcy31nBpzFN5XZeHv6i4iDECDkFs6pRcjp8H9fqSx98", - "141FXbEYs6vTwjN82h8zD8JGDNZW1qqgTt8KphUB1FqWG3BQ", - "141NH4UNM8n2FTXw1i54PrYnuWtvdg7nTsfvZnbMDu4EW5H7", - "1429tQ2RK8xCwiVYYw7YVUFGX2rbASQN2maMExay7x18neoZ", - "142xjGmUioKgrwXfhXyiPU1tt3WeKKZnHX3NM6w16qtwbtFU", - "143bj6p3rQeoC1RuWEgZNu2pbwaQtdhiwX28599EdqvCSPmb", - "144mEFX4Cj9KTdbjS5w2iFrjwyhFnDrEJfXU2VNFa7EaUfgw", - "145QiuMq8w1vBVXfwDVFxUSchdRZ6W1tTGb1uZ45TcoUskRC", - "146NTtgi4qDnY5dC2UwNiqqgJMqnx5vmCYpARsCMgcYoCGiX", - "147sNiboCGb2B4TCBwKW3vz8faCx9fh9kQsxRjvLyjJmduZE", - "148CkH8YBzA1pbudK1bMo2zUMHZwbucBVH8s3utwTS687UiR", - "1497QNdycmxqMi3VJDxZDhaJh4s9tytr5RFWyrLcNse2xqPD", - "149AnEATtGViYqvJ5EqRMt1BkrJo88GUAdmiG9RuvMz8CKUk", - "149BBzx5gSQVzHmtsWT1JZBZLvS2Nu3AMQngBzFBVVKU78de", - "149DCJve7z3wppHtnQWLqWjYSz5PvzRrFG6PL1qaJvVFgCty", - "14AkAFBzukRhAFh1wyko1ZoNWnUyq7bY1XbjeTeCHimCzPU1", - "14DE8GdKnNvgoXCLFq62ZjNz2zsGqnxXBsRMwNpiPip2JSFJ", - "14DvQhUDWVABBzqD3jEK3VHHRZ1UbKDGCExf7LYNJLQd8CGd", - "14EoEECHSTJE1n6oCQ72zoC5hjpRU29JF8NZRK7S5vk1enwt", - "14KHzXAZ5admFLXdgbEGpSjCGxiePniHRDM6t5r4o8kbYV7P", - "14MDvXHcSfZXacZR3nvbS4XYgpWi2dY65BnthsUnMZU6R1kH", - "14MTdqp8fT5yt541RkvCMaj7aALnCXoEbm68T8Wuv3D18KJP", - "14MvgGf3PzgsEmMBHxdqwQrfhEzsGhzPReATQdpLVpN6aK6U", - "14N5GT7YTaDBSsLpfxxtCxNdYfgDofGj5wQSfqC1URKHdT8C", - "14N5nJ4oR4Wj36DsBcPLh1JqjvrM2Uf23No2yc2ojjCvSC24", - "14PkBX3BUF71wDh44BLeNby2u7X9ZBu36V28LMcBrdK35yC2", - "14PnEHmpqAJfBm5Nc95nCy6tdW5YozQwkXVEc7BjnANjGLXm", - "14PzUQfFjRPiyi5jnizJY4YRcNhTCMaEu1jQuyESuPsueXko", - "14QBQABMSFBsT3pDTaEQdshq7ZLmhzKiae2weZH45pw5ErYu", - "14Qw2ptHYqxR98tWtfbcghQvd86k5H2WYYYpGZN1c7zf3trE", - "14SvpNr394ZedPfXMkNm87HvTBJWCdrW7C5Cb1J9LSP4s27p", - "14V8kBx6LkEnDLNj5HgQ6z1kPsa7bsHSr9djshQuEWnEMC95", - "14VsdLMt7eH66aZFM13imSjFriYGU84bwPNZb99qNVhKuYSC", - "14WLfLvnZgZYWi1xiN5bJB6Tok6QcLiN5uSqLm3dqGCMFPvb", - "14Xh6ffkMALKBVAmFwgSwnrU1D5ufQAUa1o2sZ54dGuGfDY2", - "14Y4s6V1PWrwBLvxW47gcYgZCGTYekmmzvFsK1kiqNH2d84t", - "14Y626iStBUWcNtnmH97163BBJJ2f7jc1piGMZwEQfK3t8zw", - "14YAS53q62dSfm2NSCJ9LT8ndJDX2P1eiP4jKwLkFE9pK1M2", - "14YEkQjfqQqWy8ckNsgbH4CiwTLMKEMgzYPSfgBRNocwDigB", - "14aAaj2oHD4qQvSdGdV138Mr7Sr3jT5qXNWGzAyMUBfsysJC", - "14aCA6DHDyUKbPpE8JRp5pzhU2P2xgfj7BpKL1EY1EAonozr", - "14aD1tQavhRi9eB6SZ2JNoTFiW1RpGtavFANwrfQnT1B7t6D", - "14awM7uRaZgTUojRUVZvFGDPuSYkqDb7mCpajVvVp3Mmwrr1", - "14axX6XFbjCeYcCgcYBPHHX8qKXCcdUde8SqG9WbyKyUFjZT", - "14b9zpD1z9xpWdw2YBkwAABVdpjkGpETW4ACx9RE1nYzL4Jz", - "14bGpFntaPUgoSNdXeU99ddPH8RvHfZRic1dCcQBwnNuJwwr", - "14bMb6TJGX7pS8aZb9ayFZ5LLfwnSG1YbSRdLFSbqoow4ZzP", - "14bUYpiF2oxVpmXDnFxBipSi4m9zYBThMZoLpY8bRQrPQNG1", - "14cxMDpBNLsNEXWyCzked3zghzaYWXwoqGT4h12GqQXdVhmn", - "14d2kv44xf9nFnYdms32dYPKQsr5C9urbDzTz7iwU8iHb9az", - "14dTZLAwhcBennygERRS5tXnWVAHq3e12LoCoHrQsmDd4X4H", - "14das6GvVjXMFf6PysheHX9ek59fCgH3MhnvQ2aNLD9n8VDV", - "14dcFGfWhzn32PWf6g5d6A6dDPUZdssEv2fCuouydd6Rc4Aq", - "14dffMjf4Ec1RwCLHp21CifU6CX4hVnZtRCKgc6AGCt9K4v9", - "14e6xD5f8MuyWqLNanZDqSGe9TEzNMn29namWpKBJBa5ukwJ", - "14fiiokuMzrh8DvorHgM1yXt1kDBQwq8AGPyHxQz9JCXkLGQ", - "14fu8gsdLTMvAWxq2c7DJxyfbcHmkFWcngxAkxmMtX3fDtk8", - "14g5cxpdKcne2ZEXggWabRiBAyzjaxTZMeS3PNyDpFFxx9S2", - "14g5vMTk5CR9ZUM4Ji2jkwTHuycmUJthEYCYUfj8mQLSks4p", - "14g7XsFWsMpsPNkwQNhdHfsqKRehdRbpPLaGVTEhBe4Pt3Eu", - "14gR76wiFhWSuzftMCmkJDJLW6MZg2r78RUz4KLBrBFbgTR9", - "14ghKTz5mjZPgGYvgVC9VnFw1HYZmmsnYvSSHFgFTJfMvwQS", - "14hM4oLJCK6wtS7gNfwTDhthRjy5QJ1t3NAcoPjEepo9AH67", - "14iWQr1LrDR5sE3x1dMJrxSGRtvRrkmRNUxjaWaAH5o7gjUn", - "14ices1G5qTmqhMfDVBECh4jotNDGTLu8fhE9YktWT3cLF2F", - "14iffevcSjvG6NCP1CwLy8GLmigkS6saa7KjmWWTkUhXYp7R", - "14j7YcVqpfiZwbrPuwMfcKWuY176cKN1SMHVSZvT7yrfhbnt", - "14kpNbU4XjEHfYdqp95Gq3NkBWbgFd6J8Yjd2SneWNzvf1Yp", - "14kwc543va8QxjZGomprwEgQwxDvG4ssP8EWFVin7VpAX6Pf", - "14m2QAeBxWoZxvSWE2SwBa3dWb3Pb7eGBdYycnurPVMoCNY8", - "14m39ghoPS1QRM8tochabXfSiSTYc3uQsiNdCEcnnX4LuCUu", - "14m7VDz8PUe35Agvt1Z4ymxzR5fnKxfnGM9wT2WdtoYEtFQ4", - "14m9Nv4di6HKwFoX3NHwChQmkZmXftKyJcqKYfafMCu2tVmW", - "14mGFFn2sUnLwm2PPbF5mbUB4K7cNafauAng9CpRMkvcFJw7", - "14mbCrev6vqt5YcyjFsJgi5of44CRhCj9aUZUiCcvwjNZrKS", - "14mub2yVK2D1JHKBC1sVtapfpFS3hawSLfHzTkKhwYMgPDCZ", - "14oRE62MB1SWR6h5RTx3GY5HK2oZipi1Gp3zdiLwVYLfEyRZ", - "14quk7PGMUjpsRJa66rHSQbeuXr7444xp6eVs4B4XKijmRm6", - "14r3Pgm2P1MuwBDXNcjq5ZshMYcQEpc3aTnSVUtQNhJ8Hnua", - "14rMkNfbNVjJqnBSmAbrALZnSrrnmL6ahr5nehbKFcnuDHyb", - "14rpAavvQY8uZB7nvD6okx7S8ZYdypWfC9P5C7dHgpk4B631", - "14rzUwqFaqEYcC5QmPscEDWNBptorzYkd5wjS2ToL7g93n6s", - "14sMwQdRHxFLmjqp14FCxsCjAe98BWf5EqY8obbF8YYvKnHq", - "14tcxHSTAiZf7M4vcLfFdGkGJFjfx6zDqds5QVyz2H24hKgG", - "14tqhjkG5BQMZeT3Wh4F24u6Dynfmpdg5zJssJF6akbJSTGq", - "14uXNEUx4xqgBafCtxvZMxDEgHdjUTcSXKQqFjHCGXoAY4Kn", - "14v1KAyrm7LQJJvRpRP44qpf36uQWkRT1mzqUQzDY92r7BDa", - "14vxzYNs1Z4fMyJyq1zNVTYP6VVMaH6y1VVgsmza1mqEw82a", - "14wDWhXn2kNC1zpNJEUXgYg1vWVGM6xFhvJRGJzDoqqPZrbW", - "14wFkAiTSxhUUdpkN37QMhZv6dYcURJVgSGwqDRd4TK2qhrL", - "14wpitUpAcUnooXGs6JTRB9Zqa3g5tKdonCsSu2RE1A4aQSq", - "14wymhAEzK44WuRLTfNDcLGJjgmHyoUpQtBEkaa2yeQPzpJX", - "14xKzzU1ZYDnzFj7FgdtDAYSMJNARjDc2gNw4XAFDgr4uXgp", - "14xso8KpEUMD174VA7FQR9qSK5fg2tHGsQ1ftF3LVTC4R4vy", - "14yosBv2k4YTdLc6ZXusv9Cz5SG2JBi9MLimAFutF4LgjTpB", - "14yrHPbyTy4ffNqaJJTUx1tqPdW3jJ9m48q7gGymyhVcmJDL", - "14zfiH2sMH955cG2yKUQbHSP3oQ8W4Ai9p9wSSZunvQ4TU4k", - "152ZUcifBLGL9UgF3McaxkcLn2z4MxYWbRHTAMyv9qob9MWh", - "152cdecr7tagcB2t63dvjBnxV5j7YDW8PpbfX7orXj6ZQFWG", - "1532FHXPCkWCJKFCDxz3J1SHgXCYyQRhWPAp9cLXvoaxJaRx", - "1535dDRXs8ga9CJeAMinCogZcEhpfrmm8cdJnhkVehbnedmb", - "153DL8bBeS2QD5AwFkK5Tic5MLnGSt5gfp1pgB6gjjd6tyUf", - "153KvYcTQ1NSiogioahA6SgHcf7PdgsPAeYBWM7oQdY6TgPY", - "153YD8ZHD9dRh82U419bSCB5SzWhbdAFzjj4NtA5pMazR2yC", - "155CFLBnr2WN3PziGZCgjfY9gmrWBK8LagSzyQwxh1viH6fu", - "155DgtpDborwtUFPZ4kPBFX7JTFfs7AxfzDqdu5uz8Sun4Qy", - "155htNoLnXSr4wkQsBfv7S7pZq6ZUTnQnsjsTHGBiqCBiwoe", - "155qLCXRwMZjepZgfcwsoGuXXtHyWum6bScc5SbfM2yekfc3", - "155tk9HmeJGsNZtA5LFasSCGZCdpAb2P2Gs6ej9JeP38sAww", - "1561LhDTKVRFYGhS2FFZaemYKvSwHKPWsMvjrY15ZczS9dRk", - "1567C3iuit53D5TaiySC6jYuJzDtJcgSV6vEkxu5x6wrVBTa", - "1569aqCBma2m4TuUe1MxEs8EXBAZFCmwwcZMLde6HNbimuW8", - "156dG94Rcq61HVrn6Ndx33NysDimutzAq7j5Mz7yo2Hxf6wh", - "157uG3dxLhejwEY1huP2njDEp6MUKuM5YcEhVSMmHrX15jzS", - "157wUw3289QR7E2bMnVUxzwMYQX69S14kuYWARVYs4d8YEdt", - "157zaRVMj8eAfdie8jDe2z11Xh4nFu3E4SRUja3Zu113igP1", - "1589py9LSPRHCLQQ1pzTBnuF4p6swy9JovmmpR3SeWfBzjDV", - "158KiRt1ue86wzYRDfy9CKZvkhNBzdFTL1po8bE2eo3wRkVC", - "158fogEu2vf8VdWPhEkPZTkZziC8AvRBoFEYqzmsFgsaYZTa", - "158ihFTX2xr96UW4kRfEm4Cbm219swtzUT52GemqDrvGhmwx", - "15ALKNeS2c2JE3cW5LGpCp734afhzLCi17wax1UVbDeG4yMo", - "15ANfaUMadXk65NtRqzCKuhAiVSA47Ks6fZs8rUcRQX11pzM", - "15ASn2hhzYBquxFNMf2dF2kKLrgkijGUYqbYeLSuLHX6zLyQ", - "15AVEN1kU3Usup1sRJSdoSMEb1n1htVwuFVfBGKpiz5cMTJt", - "15AcyKihrmGs9RD4AHUwRvv6LkhbeDyGH3GVADp1Biv4bfFv", - "15B3UVXPRp3yS2gU7GogS41mwoT2fTL1KaNYPF7eMVjjWZJJ", - "15B9z922jSHotJZp3VR8B25nJHfFXwpYSkJF1DZPbZiscC3F", - "15BMv7ZwBLyuttHPKvFMc7fTcYM6C5zezHxyZScyMdyddyie", - "15BNTyFjDxEN6vzMB1d4DLeYS8gjW6GpHZRRHrYx9bKM4uU6", - "15BVHZCc1azw47rsKCW4oPL4KL3reHmLfPEHTb4W37XGMt63", - "15CosmEmAfQAhnxwan18e5TueAe6bDzrqqxg13dToDWr7A8M", - "15DBqKVWRScitsf4rsEqWEbQXCFdh7JmPnXt3GBfxwiXRHbY", - "15DJ6BzNKGYKtScD77hC1NEWe6iybp89A96kchPtkWyFWXLg", - "15DNBRr6pNbQ4Le9pNxqDqQfGUG5byoCkSiL5SEr2fr7cGGL", - "15DrUZpBdedSxGwTRG6k35kkJezho54PA837eJ45d6j6fTkT", - "15FctDfqPsFubuXo6UpKMQdbdCC3XXdnHsRMZ3DN6ZKPLrSu", - "15G171nzcUvrTRwWZx8K5GLh1NReHdnTDANeWSMRK4Rjuhfu", - "15GAZsLr6X2vhDjcpnztFZuYibAemzVw2i8VYBb42VHJhcZB", - "15GK3dFg9tr4BUXP5dFzCAHSiV6DSJbxkLT1GVTCQGYzSBdc", - "15JUQodJ9iM6M6D6gWM5bdcgHLtemnUctGiR13tAfyrHjXFJ", - "15KQ7wL7XvhAgMhK5XjUqyR4A41hXx6ZQAe1UqX5eUNXSmpD", - "15KhD36jXQsqrAbYCjcTmguPYvBdCNdZFvEZbntAB1mrRN8Y", - "15MLn9YQaHZ4GMkhK3qXqR5iGGSdULyJ995ctjeBgFRseyi6", - "15MUBwP6dyVw5CXF9PjSSv7SdXQuDSwjX86v1kBodCSWVR7c", - "15MYgThgMfKf9Dz1TV1UC1RBiA8xDNYoGbKkkvXNtah8yACC", - "15MZqPwJTkmPieNpT3vNXeqZ9S1B5ThmnE8jtqotEVXQoLcE", - "15P7yHcMoNXMW76EVWgKwSRapdJCdbHwp7EA63KrT5NfggW3", - "15PJA4PKoCZ2eeuaoFpoAQikHX6nZB7oW4qFTRhKutzekn1L", - "15Ppahb9NfCEyYYSrYXTKXuFoLssuxUqccdE49yBcs5kU723", - "15Q7LRbAKrVExHs9xtrhDKuNmPApo4iBQdJp3k11YMDjTF2f", - "15QbBVsKoTnshpY7tvntziYYSTD2FyUR15xPiMdpkpJDUygh", - "15UVN8DnBFdBJCStbaWeKT55wuSMAkoqEa7guYkZLtnszdQY", - "15Uc3mRPJxdZTc9X6wUUCxzUrhrXD7ZWGPsPGYJcQYY2i5e7", - "15UveirdTG15rzBJyeLMtNUjsMKPJz8WnbUw4R17Q8KbCXAE", - "15V6NjwmKkZihe644Tyr8GVLxjEzBAHktf6ZcJCTx7RPCoYS", - "15V7kggXFSr79BcLRsxxonx19B1kMRGyR4FtyYYuNiKvynnr", - "15VXp8coU7Hb5oBZmab1HNTfpfJk6RAiuzBLdNM5ijgTQVd8", - "15XMg2NaaBguwfme1ny2FSuhEGpgqwbKEzvdHiZHi1SKFqea", - "15XU7uzAP3nS7inBaWDNdZQXN8oXLnhkxUX7sink7HfxW752", - "15XY7oJ99hVscy5jS3zUh5M3H6sxfccovyTVCPt15DuXCRAF", - "15XrzrDfmDf8nZG47Vwci7ZSDcLswzXEEn1ePDmCNDrfy4v2", - "15ZvLonEseaWZNy8LDkXXj3Y8bmAjxCjwvpy4pXWSL4nGSBs", - "15Zx4M1W1caBHvwdQY6EjUDVoAv714eEBLcLCuE5A25RqiMH", - "15a6fbawvVNpQEoJLp1r9AW4ma9RgRXBvRp6BfHKNw3RCD2A", - "15a9ScnYeVfQGL9HQtTn3nkUY1DTB8LzEX391yZvFRzJZ9V7", - "15axNgLsGTaBYfpC53YZ31LSskSGsDVXzw7edW9MT3z6rJ56", - "15ba93BbFArbPPydSz5EMMRAfhV1NVMRccfpYaAsYVhBUzYv", - "15cfSaBcTxNr8rV59cbhdMNCRagFr3GE6B3zZRsCp4QHHKPu", - "15ciPs3xZsJd86WFoijPs365f7viqGnubZ14aa9fGavyWJoM", - "15cow6Uoq1KtBvyvRetuX52M1DepVpfVmc8qrpqCWH9grHdq", - "15dEbKrzyw8Hwb7KkZHYKgCaPQGxnMgWm2EXb1zh6DmRKX22", - "15drCUvFMiWvy1YfkU6xgENxRzmFXDaqQFpjUwR5nu11DHu3", - "15fMqfNt5i2yz1Nq6fHAbmLokfbWfDbuTFZoLxv2RZkWpDTu", - "15fU523Wq5BCt2NWAmrCU6p8nFB29uVifeG7bwYJHbw5Mmd9", - "15faP4KV8Puvtex2WXnhUoeedhNpTPt4jWcAmZVsUuNMVvUX", - "15fd6W2m8GLyD6HghwCBuRuHS8w1N7Agbjzp6yU2gHbihEHt", - "15g4s7BbwoB375dDxJJEaufKC2APvCxb5T1ck5b6sEeuGDcz", - "15gx1QMCKtB16pfYh3wKc8844NygfrXWKh6UqojajDftxS1d", - "15i7KZA28F82jCfHubQ22RptEJypTZsbnSSobjU9KUnxUvdW", - "15iA5hpjUecWBbf38Nfegwmtyux25o3LrGaNodfZDxq5nXXE", - "15iZKK7DxcPKVsQDhvtXU2X2cbnKFtArcWdJN5MZ3Ms9EWi5", - "15kb76J3G8QvtoYKZdWyvPC12MzewsMYYneYT7E6SM2R3oTB", - "15kkg1mK1tCGgqqo3c1CghtKCQsBEAPPjYNNmmRT3r29FeRX", - "15m31T5USFFiQdYw1R5ZDgfrdNDNi3mxoHSbv2bTE3fBBP2W", - "15oH3ET4QGW954CPiBvhgKHXNrb4Ef4FTihRiH2VjmFTRzZa", - "15oKi7HoBQbwwdQc47k71q4sJJWnu5opn1pqoGx4NAEYZSHs", - "15oQ16zXhMJQc5R5HoHpyr6qKvdo6snYMFkzuvtXo9mpQtge", - "15obLH9MxzvqKHyb5JpSxku4KsejjvuWn1tiRVBGCZ3HfT1H", - "15omhU2Gi3ounztEznJ9Bj49dvoPhSi9wN1M7uoniTt9F72d", - "15orHupBCN5RKrtNpEsvxcyGxdtmbcmwZwepcUzXyQkSqKnt", - "15p158r32Z12YyFU7BiqLcqpySmHUedVfJLJ4M73THBixKJY", - "15p4wTCaY2tggjfHc62FGmXr9wuLgmK5PnZW1kWKhsqKm88H", - "15qhbgGE4xrmzawwQPHcD57MuuqixTdq99idSvwmppfWJHAa", - "15qiiCBRGjyKbQRLci7cM9gHWDqNDGY8LZTTksczsy4j1dKb", - "15qomv8YFTpHrbiJKicP4oXfxRDyG4XEHZH7jdfJScnw2xnV", - "15qtTjVnfFs1DqAbUJBX4N74k7mAbXiPwww8qiWFXbpUoB4y", - "15rGBBEWWDVk9wRYaj9okQ8JFeLduWtkKsjvu9rWCjz7SPBV", - "15rXwocVx8FjoHi8UKfF1L3gdzmiP3H9YiiNQ3zh9Qn2JCVQ", - "15roBmbe5NmRXb4imfmhKxSjH8k9J5xtHSrvYJKpmmCLoPqD", - "15tfUt4iQNjMyhZiJGBf4EpETE2KqtW1nfJwbBT1MvWjvcK9", - "15tsaRbwLLBHst5chP1pVkQHc5n2JS4DcapFdhCnqJMZebda", - "15ttPoUNmSdBmQAtYt47U5d1JCtKCFaxFMtdAcKsG8qVmm3x", - "15twfAkh6TKdNpE7kNgxcQSRYtSpt3QpgjxmR6HKHFGs6Yrz", - "15vUnTtXK5BAv8UkEn7NMfYUVHp8Fr5EFburmL6CR7fhPyaU", - "15vgF71w3fRJrie8Y8NScfvqV9yNKKkw2nrFwzbJvVoDzuq6", - "15vthsDeqGnawu8L9Cz3RheobRFZyzgbB59MpFFVFurW4AP9", - "15wD8upZxRZijKkF7JZDdaaFXuRZJhFyYpFQC5j6FaZL5Pza", - "15wE6FKHd4vS6PUVohpJdtW3M3CGq1yatMaYBodpPkLdQJfu", - "15wdC56juwXeqriyBJMdEpi6FrnB9PsrLjVuKZG4Smp9a2fP", - "15wepZh1jWNqxBjsgErm8HmYiE21n79c5krQJeTsYAjHddeM", - "15x21oPqRLeVakTN3grGB82HZ92ELqbnzE9W2wc3CHRreefB", - "15x643ScnbVQM3zGcyRw3qVtaCoddmAfDv5LZVfU8fNxkVaR", - "15xZLy5xssjWq83PWa71wSisUVizoAD5ZruiWeY7L1LWN5dg", - "15yWjJfhPwiBECjVezPTA42EFpcrxmRUjzPN6nf3azvZ5wDX", - "15ym3MDSG4WPABNoEtx2rAzBB1EYWJDWbWYpNg1BwuWRAQcY", - "15zH8tbFxyBgvkAdF3UWSfykAXADbS32vJuYRHTkZJ15Y4jd", - "161kZAmiB7X5eZFxcVn2uaXUqq8HMHwyat6fMYdxcB75oPf7", - "1627VVB5gtHiseCV8ZdffF7P3bWrLMkU92Q6u3LsG8tGuB63", - "162Cw32opH6PQRLU1dcLVgkvgC3EWrTFZQfjCK9kbuFYZ76p", - "162tJdpDKWQZEwXEaNJKPSJiSyJtsv7wYGxYrreaTAXtvhK3", - "163AJJfUjzonWiSqmGD71iZBPv9Q4VTbjgm6K6NTv9Fvd42p", - "164nz4vJEvNGH8ujptukVzNQXEep9Smx6icLcWGZKvTnohVs", - "1653t723BHhC2krGCFKUUNDQb5sUafy5pZvKVwnwo1oMAMi7", - "165NJXk1HKxeFPbNK3ZEsgRPoGTkxMU9DyteK3cE7AGt7xrJ", - "165VtFs6qEWeSHDsNp6fNmQDm6fviLSzWGJFhKuaGvk6PMYS", - "167PDZ9Th5rLRXJFaG3BpZFWXMZoYSRoRcdEj1YR42diDfHE", - "167ShbHu769mP5jbtt7AHayJhzEied6s8M5kN5nBSAQewnRz", - "167Upkf8NpuCMorKmdcKex1VeRhCqCuXcxRzc9BLsqh1kBER", - "167ePSNFzjb2jrBqqCqkWMcH728onmjVYYzozYsZQHwReqRJ", - "167kWNv6izrkGybYocz8PoVdHtC9PgCkg1SH1pp7DFpsty7b", - "167ztZ25Y121GHs2o841TAnYuX1Q25Adw6MeaPPXE2xKRnb3", - "168CakdikhdJAyNkDqaPMontvC5k14xVjc2dbGeGyGCbkHzo", - "16A1zLQ3KjMnxch1NAU44hoijFK3fHUjqb11bVgcHCfoj9z3", - "16A4n4UQqgxw5ndeehPjUAobDNmuX2bBoPXVKj4xTe16ktRN", - "16A9nLc3SXvbv7x1NUGL9zWjitQ27JWmKoc6yrUYhMsF8tGC", - "16ALG7wV7j1nUExAY8LYwxQxVwrMEoW2tqPRjKgbfX1ZNgZU", - "16AUtxRZDD8cVKwBQBTdsnFgWrnyvi6AJgmQYN91PhYAKJjX", - "16Ar9KjX2LQf2CdTrTxbyxPjDNswhL7qPhnwcr8ocMynBRWo", - "16BBtZT9N2zQkFBjwSTuPhG4fC2RS9YGkADqcwYMhoL4QkCN", - "16BEvxYpyRWPaFbtwCPzSCtHVKr1soViaobKojNWBH12U5dk", - "16CdHjb4nxVwF6uwmPm6A29pc4ubnLiY7UqasMxt7cT9BcoK", - "16Cmm8ZrZMauz7nzKWQvrTu12qznK8z2D8EVeRBfNqzpz4FY", - "16CwGV9RNGQMb1whyNQ2i4bwtEoniUyWEuaxBjvNWcegezWB", - "16DJbUVKFJp6igLoDxCTPesE2DMgMmiawLXG9jsGpYNTshxt", - "16DKyH4fggEXeGwCytqM19e9NFGkgR2neZPDJ5ta8BKpPbPK", - "16DswM6QWrqvtH8CTxhv9j5EWdkLkvzQucL3woJbLLrFZ9wa", - "16FCPBq8sa9CZvCRV3TPYtRBrES3dk1BVDaYiceTg2c99jsF", - "16FRYg2zE5cgrkKQmJhU9YJRT7Uquqxfz6hmp6GnqgdcBv16", - "16FUnnZX7h11sxio9wu6DGGqD66z5vXxNLcXuSJFWFAjkaZ5", - "16FWJSMDPM55M76nLwjmWtFgDQEa5ZFLQ65gLBVoANdkkGJV", - "16G8NDzxUeUbGiw2bFX3Wy7JwNEJz9U8B1smCFqqe4GPZbdN", - "16GDRhRYxk42paoK6TfHAqWej8PdDDUwdDazjv4bAn4KGNeb", - "16GRmk9cb48j4DNuZmufhWpmo2Kv55LiJP39aMyfWKcTp8YH", - "16JJSWvMNM8i7T97ULGPHPyjvBM3JrV7poyKJRjCzTTE6kWx", - "16Jh21ThTh2tW98NuN2gM7Q3KaYiuJLbxCNbuBkFpwcDkRqx", - "16JvJXLPySkFtH48aYhnCrpdsbFsMFB9ERtEWuXFmRxQrwx5", - "16JwE96t9MMvWQHuyHntqVyo6Ks97XCK1kHvWumGNLGVJg5p", - "16K5HDyq7MqLGBV7gCTZbLef81n7WF5CzGdLuX6LxGZbFXou", - "16KDeHRyHTXhTSkv3BDNKzBVrxsqdqvNacLy4TH5DfD64yEG", - "16LReiXssAN4ZcnDwph7Tt1UvZrUKWFh7EAjNXKpreVLPybi", - "16LqH1hCcMYu1GedZuh6sKHpVYW77BBCM8hr5unS8Lk2Zu4G", - "16M2yFjnsde81MG5ynrL1AFz4cev9boVPu4KkRZyiLyczZwX", - "16M3oPL7NAsaDyumZs84XmjhYRPLKA8jbVN8N4FNECZ1KSKy", - "16MTPYUDqLaCMErgvbTu6WehcUFKiocUWUDFN1Jdpeo5nED4", - "16MdN3hamVZ5UZn2T1Y6FxV4rR9J6vHu1scWh93ZSrvsfgku", - "16P6nQ6oigiaVm3GwvSLsNgDhmVpy23YRU5TiRPeQGShjRsi", - "16PUFLHexBvLGZFu6HRmCEXHDh6KWmtfpGrAqTHKJsBTaZ8U", - "16PhQfCRVDaMEgxGGFHHnuveHzXohbwatUuVxaDJcjBaN7WF", - "16RJiGgc9uhZNXmd47Nywsnf43ApCJkSrnLTiodi5RDodBd3", - "16Rtxs1CuR6EgQEsi2yJ4YFRFRwRakXShMCAuGW2MKRwpjHo", - "16SDUqoRr6f8DAyKhYWvo9dwFPdJHeFXFr1may1vhomqqPTQ", - "16SQ2fPAjhU6W7H22WWdSRrwyNSx6M51F3xC4GS5HW7w1AXF", - "16SpacegeUTft9v3ts27CEC3tJaxgvE4uZeCctThFH3Vb24p", - "16TnLArANi5Y4SmQbGjW8V8XV1NBbjPr7AzwUsrHjBoERXTp", - "16UgRGtYLuDWsBvjLLtc6FYVB3qSCV9c4sidcN4zaFm9qCFR", - "16UpmQgoFroRH1i4Gi1wVZmomXxSZc8gqkGQG2czD1yJHoEu", - "16Us8m3Q5dZ1qDntFj3Qwa2nPw1ptKfUButMukJVpU8UiDL8", - "16WzVw5JDCXLiA3t5D4LL15S2sqSBtCsjVNXkwLCVxGdeQGj", - "16YwUZyLdeAoe4KmhivGwuuJpBH1US4qkUtXK2V83MVXUy6x", - "16ZbWXQiBGgWfpKZ51ic5bMQHfVbWS6LdFjxce62aYBaBWcJ", - "16Zjo9bK3ubRrZCjwEkotG3fk4ka69TKQbPbUAJedHhMFYoH", - "16ZuZrRbAk4gXDDeFpuhkGtuoCRSv5myNEGTWqsU7KisBRpg", - "16aHTtVyQe61KJkcciSVtnEJ3ThNdErNsY223JTBvd7U5xfb", - "16aThbzrsb2ohiLXJLqN8jLST6JgUPRi3BqyHxUW4yVHBQ44", - "16btvgxktRwuX9iZC3NTjcTrJsDiARUVLZp95zPs6Yi7cbGS", - "16cTp6UVVE6aGNNkhAYaEMJ5P2Ndmd9op7ccBDkEkJFQWCFu", - "16cdSZUq7kxq6mtoVMWmYXo62FnNGT9jzWjVRUg87CpL9pxP", - "16d9PJvEJYydbkvhz5GawZZFqR4trJanWv6Kq2Eq92Pmw3Ri", - "16ervPpbDEnPTHwzh564ZSyfm13MZzkYkYf6UD3YPho2yfDj", - "16faUtGhiGAYPqsyL4nYyvCd7ePiJ6aYzQEvrErtX9wZDPK7", - "16fcR1ercimd6qyBVQyXTTjtWL1kosTS1myiSuVf7kxutxvg", - "16gxSXJyRkWUiFuMYURSQRHCHRiQvNAUDxXLehZcqizFkE6R", - "16hWLHbxMwucyrzpWcEMGQtVzXY4rBtyYTRhPix5rJeeKT8N", - "16hkW8LgYYAdsCPjqdCcochRzfdeyAAKiSo9drWQfd5mnzSt", - "16hwkvDGzdLLyaZ9CyPfwg85ijEAJUoHKxKSu6oSfDVyZm9j", - "16iPkhcq851iaeuP8rZyN1oejneBGtSeQCbhyGMwkiwm7dBX", - "16iiKwFsRKRsjAiEpD4zgNgEX84nzHtHHNFKXhz1sHtan3ne", - "16k5kPkBCMi89e1a9yGZGT4gHJW5H4KUQ5eVqPc8PGPxhi1K", - "16kL2BPH1ppm6tUKVF9hghVYCNaPJ8iNNGXdKKZGNzpVLvo5", - "16kQTZE5ecGckW8pir88kABULoBkz4uQxmy5VoGrKWXJZVbz", - "16kovK2pbJDZFTCVenu7yQGhxzvqfGLJyH6XpgxEcQKSGAn4", - "16kzYodFWy43sVGFKGnpDK8T3P8F9NhyMKqWNFfeFVN4XT9K", - "16mrcAndMguy3wqfuLNubgxxeyWQHjYAdqRbj26Vb2gYtszK" - ], - "nextActiveEraEstimate": "11359076", - "electionStatus": "Deprecated, see docs", - "idealValidatorCount": "600" -} \ No newline at end of file diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/staking_validators_block_11350267.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/staking_validators_block_11350267.json deleted file mode 100644 index 761175dd2..000000000 --- a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/staking_validators_block_11350267.json +++ /dev/null @@ -1,7533 +0,0 @@ -{ - "at": { - "hash": "0x18c3efd7f2990cdbbe045768c8be64e7a167c091e4048d3a46491cbeba00b53f", - "height": "11350267" - }, - "validators": [ - { - "address": "1BwjS7oyQ5EDGrdfMBgbVRAXkW5fnbWeQAYWaSCzu27dwwh", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "1zugcag7cJVBtVRnFxv5Qftn7xKAnR6YJ9x4x3XLgGgmNnS", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "1ZXdGs6gFETHVTEW9RAZXwYxkDwAfE7wdt6czjBM4QRfMfk", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "13iWeBT4h5FtBAYkZBkoMmyzXv7PUrEMigtag1YQc4NhLwHs", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "148Ta5cWD3wekK3C6EbdDhYrdxC5e71VTKQCjmHUjE1DCG31", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "12sJ7diwbhPCwfd4zgD264Mnz3fzZKuQKGcrsQ2nCv4bTEHR", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "123viL2RvWMFmCQQBzii6JzDUPbL6MZQa27q2VWvBpkrRran", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14awM7uRaZgTUojRUVZvFGDPuSYkqDb7mCpajVvVp3Mmwrr1", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "16BEvxYpyRWPaFbtwCPzSCtHVKr1soViaobKojNWBH12U5dk", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "13dxtHunX3FLX3TJbLypxJXsoEuEYDcQZWn3TMf19tP17jEj", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "12j2Cii99aT1K3kJQmz2JvPHURecq7BevCmtNx2g61kDqsBb", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "15i7KZA28F82jCfHubQ22RptEJypTZsbnSSobjU9KUnxUvdW", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "13WE4gVd4jW6o88Lnto9Y4WAhkMGeNNP7FWSqikeSCNqkwcv", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "139CZbU3e19bAsBu1RWo3WLX8hdEQ8i8as8kqdEW3ox5v2dm", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13j4FPuZvEVvHuAFu5szVJ8dRet78NLFzFP7xjAA7hAf2ZEV", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "168USYDs9D4ZLvtXfMLi8VDJhhqUryrWh5kGKaWNcrp68NR4", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "13jHcLP59Btr8hTFaa7jVdgYWPCNNdPqibC4gUWyocXY3kcx", - "status": "active", - "commission": "40000000", - "blocked": false - }, - { - "address": "13nFyzjzDi3jZUZMEFG2nUJ4XKChooTyjBXDQnamAJL71Wr5", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14N5nJ4oR4Wj36DsBcPLh1JqjvrM2Uf23No2yc2ojjCvSC24", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "13zf4XPyZ4tyJdFw5sux7wGNzDRKsdon4DtUR1yXq2pTcFe4", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "15YEmR3tTcFzAquDyBPw18tKK9hYU89WCYrobhpAdHNqgak8", - "status": "waiting", - "commission": "40000000", - "blocked": false - }, - { - "address": "14v1KAyrm7LQJJvRpRP44qpf36uQWkRT1mzqUQzDY92r7BDa", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15wBDAZUQoYHHou3rsrTLevR31xRFNfgkKPBswQgQ2hS6UhA", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13u67w5ADEykbJ2Ut469t37ZxT7gB1dFobt4euafvfoXUNNQ", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "13iTiojfEzSXLprKzvE7Sdmg8gtUD2S2Am2Xv61xrtmDHcvJ", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14MTdqp8fT5yt541RkvCMaj7aALnCXoEbm68T8Wuv3D18KJP", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "15FhQYuQfvgRbXLSGjWwBj7ELGjs9cJHCTSjK36PtyCVyL41", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "15XPnFSn3CqjkCdNzdmgzwFadU9txoGizjYew3HmsXoE3J4Z", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15SLZCze9J5Fi2Z6gBtP3mtAgUs7fzo8muWZPeqkiaMXCVz2", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "14q8P9PHoCzvAubKofeYtriifRdTrMDwgvqF8Dx1AP57VvJn", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "13g3rtrqL6EHD2QixCxradk2XG7RkmTLKkXvMfLVUuChzFZX", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "15G171nzcUvrTRwWZx8K5GLh1NReHdnTDANeWSMRK4Rjuhfu", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "14das6GvVjXMFf6PysheHX9ek59fCgH3MhnvQ2aNLD9n8VDV", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13j3AKfGDjDaKvF2CrTADL1guzT542rqyRUzPXsiAxHUpzz7", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "14yoQPK5o9Y3zCSL2Cn6skrPywJx7Hd8PoRuytMA675Zc7zD", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "14xKzzU1ZYDnzFj7FgdtDAYSMJNARjDc2gNw4XAFDgr4uXgp", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "1sywP45NcZSQ3ev8WfcLZNm8hwCUiKzNYHmECpR9nYMAtMA", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "16Rtxs1CuR6EgQEsi2yJ4YFRFRwRakXShMCAuGW2MKRwpjHo", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "12uojE6H47DTppmrWCZHXM39YVpk7z8ywbaHYQskVdQBLLP4", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "13rs4dYSECE6tLSp5poDAv6Td4Bp55wxyao1Vbw4CxiViTYL", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15oQ16zXhMJQc5R5HoHpyr6qKvdo6snYMFkzuvtXo9mpQtge", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "15dgDz26NH8tDzKBX8qpN6bsDfDUsZxjxynwWfivR9MdqR39", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "12pArCQDYd372iCPxScTNwcwWxp78Gwgy1cHVmjjUfMYmKgY", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16btvgxktRwuX9iZC3NTjcTrJsDiARUVLZp95zPs6Yi7cbGS", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "1RhqvtG4SS6ooc3JELk8kpTaDiLP9f92jdyR5p5efPWVsx1", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "1pyeBBRDsCiKHh9dBwingmJkREAmY4dLuPnvu9xX8iPr6Ro", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "15SLb1NqESL7g7wbsEmPRNriDm15Bw4VWxK7ZoF3BD5jUXKQ", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "12woCF72ik4rYzm8gUagTkEBw4S1zE4rRnAk7SaiHbbV9tDy", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15kb76J3G8QvtoYKZdWyvPC12MzewsMYYneYT7E6SM2R3oTB", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1TM8cvbeb2wGw2tjfdp8wdoP9Wa1QHEycTsivDfRDpqYq55", - "status": "waiting", - "commission": "35000000", - "blocked": true - }, - { - "address": "12Ftq9EM1qc3persmD9NFrzFZqF5CALsP7oKDUsGTBe7FBDm", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "12TB6KHDVSRy6f2rwDFwrKosBQXayNdCPKAAXHYtev2yxuZC", - "status": "active", - "commission": "1", - "blocked": false - }, - { - "address": "13AxLFBLRACDWzjqEQn3YhHH2iErmyj3kC1HivYiSahkN2Fh", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "12KYrnCDjdx1amhJfgmii5W1dGT1bgN4iMLy2r2BpX19XG1s", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "16UUPzqdhbCwDGSRHHvSDJeWSHyfdy68p7CnXvedzQJ4PGJ4", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "12e1tkDgfF3GYdiTkRq1vunXrvvhpKq3BQZYbJ1haXHApQTn", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "12zh6tchkvua1HR6padi7KEXJz8HM1bu311ckVZymVqFXE4v", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13YVNYuGekTuLtggpjP6EjY9FY7QvrrwGZLnuC8qDh8K54Zu", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "157oKjCPSHzn4Qb6ECEgpnwAqyaYCwbPqsei61UP3B5fM8Mx", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "13C2DHD8djdFiXorENB1nPkjhN3f9efNmstqKQqzaiDrVe8L", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "13j1gyUymLf1VYnE8BF5UKEcnoKf52nLQHjNDhe6wHzqNGHh", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "16cTp6UVVE6aGNNkhAYaEMJ5P2Ndmd9op7ccBDkEkJFQWCFu", - "status": "active", - "commission": "35000000", - "blocked": true - }, - { - "address": "12BFFU4WpfHdEFfMHZaEbMhXbqYQhdSfDkE8SbeMDjBWF9VP", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "14mGFFn2sUnLwm2PPbF5mbUB4K7cNafauAng9CpRMkvcFJw7", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "13RBUCYQxX6AcwriGEcXp9j8qF3mEj2ovSUYaAoJshFci2Ry", - "status": "waiting", - "commission": "200000000", - "blocked": false - }, - { - "address": "12GgdEvta2erstTGyg9GS7mhQmvbbkcwK2iXxAgut3fwAzKw", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "145Vw57NN3Y4tqFNidLTmkhaMLD4HPoRtU91vioXrKcTcirS", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "164rimD79ygCxaDWNQryL6zJPEtKF7BnBaPNUajr3GtT8DDY", - "status": "waiting", - "commission": "5000000", - "blocked": false - }, - { - "address": "155htNoLnXSr4wkQsBfv7S7pZq6ZUTnQnsjsTHGBiqCBiwoe", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "13GtCixw3EZARj52CVbKLrsAzyc7dmmYhDV6quS5yeVCfnh1", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "15V6NjwmKkZihe644Tyr8GVLxjEzBAHktf6ZcJCTx7RPCoYS", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "1917XxexsKrPL74VVohQpReVTpjLXFJ7aZ2VqVF6aR12Xjz", - "status": "active", - "commission": "45000000", - "blocked": true - }, - { - "address": "16FCPBq8sa9CZvCRV3TPYtRBrES3dk1BVDaYiceTg2c99jsF", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14bJ3GACqzyN3oUvCCbhWKMhbLnCsxaxo7efYg2rUkq8MHPL", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12mbV9Kr9X17qUhocmntAM4UQGRejhUPXtdnNjGt93A1aSXJ", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "13bBzKWFnWPGGBixBR327orC54eoqwC3RpK6UxnG3yjrFo19", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12wzoKpr3svXV8UGKEbYpazB3eRwDxoJV8g1maNWDkNXuhuy", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "1653t723BHhC2krGCFKUUNDQb5sUafy5pZvKVwnwo1oMAMi7", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "129F1RvdcjiaceBwcYkX2CmP5xZbHvmD7D6SjQZEygi7rt2y", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13YNhNr6GU9YkHabngRx5SXMcwhPkXuzapywp7pyYtM9ktZS", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "14gRvJQdxhWh2CstKbg7yCkW14rxKYqe3f9oFgvSBRmU8tv7", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "155DgtpDborwtUFPZ4kPBFX7JTFfs7AxfzDqdu5uz8Sun4Qy", - "status": "active", - "commission": "350000000", - "blocked": false - }, - { - "address": "12771k5UXewvK7FXd1RpPHxvFiCG4GQCrxRmXWN5tAAwDQoi", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1eofKb3VEehz5PCi62iFnz4Wt5Bv7SkvP8ApEJwVFUeEoGE", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "15rq7GcKhBREzzh9c9Cg8AondmSd5eNxs4YLAseit6Yy2dyY", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16Am1y7FFyZ6srpKbJGP7yMnATQwastjiFx54XuC1AP99Q4w", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13pnfhCTNKqkqWLM7VpMMNh2AWtbN8irNzgqhTLycjNSdQEb", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "12U1c8iVozppp7Tp9qBoaJrT4PVCbxj6H4FmC1LrJkSX1sda", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "135rhF4kG1VxfrDf7a6c6TQzrPTyKNTqtXX5HDS8k4bDSeJy", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "12EZemmyPLVnf7swvzfHA3ymn4eVRzgnTE6EpLvPpVSDfWd2", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15Uhn79afSb4zWhWbcVt7Uxdg34ZDUKbtfwo6KJGJyCYqPBS", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1LMtHkfrADk7awSEFC45nyDKWxPu9cK796vtrf7Fu3NZQmB", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "15ho6JmfrKVviPKxVuwwV4nSe1BSjDP1rCBFsubBihP96wdZ", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "12jtoDZASJ1t6qbXRrGbz9C9d1yvKpFhWPiBgudhaBpfkBxU", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "168xfZuHXv13uyrVV2vADpuMa4B3kAtj11gRNHA8YKRH9xuW", - "status": "waiting", - "commission": "4200000", - "blocked": false - }, - { - "address": "14Y4s6V1PWrwBLvxW47gcYgZCGTYekmmzvFsK1kiqNH2d84t", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "13gMD93wc2P44QaVXRvThy1Q81846QKVovPBjZEWLzW9HnVR", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14V927wtP946DSjZBdez85FjJ8YnDUT3TJKkL2N5aggr2Mgt", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "15DBqKVWRScitsf4rsEqWEbQXCFdh7JmPnXt3GBfxwiXRHbY", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "14Xi1iQvaHsDw6dHzwRDSPCToan35cf5VSyFawh22rx9uX2W", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12dwp8NPxAxmfUkWRCFHvuoCEgQwbTpotGVWaYtBGcV5DoKc", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "14NRcqdfKyv9txzCoinHNExtUzTyYQvnbirqqRVzReCAcGHr", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "13DXEEVtyqbhCJzFVPTUk31oTzBxCJQtButgWGhrUdYu5muM", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "12H9FfSYdQ4GrKc7tdxK8U6DitAZMqfnhB8gtHwd2rpCiZfN", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "15ZvLonEseaWZNy8LDkXXj3Y8bmAjxCjwvpy4pXWSL4nGSBs", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15orHupBCN5RKrtNpEsvxcyGxdtmbcmwZwepcUzXyQkSqKnt", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "12pgR5dyEkUP6iTR9u7b74Nz7uCsCYKpkFfA5LFbQPjGwNHL", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12e7rUGgqdteUkbq4H9YLk1yZLjRXeTTJL9Ly6eHu6pCK8n4", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "14kwc543va8QxjZGomprwEgQwxDvG4ssP8EWFVin7VpAX6Pf", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "1Yi8HY3jPZVqpByf8ESDdt4rXWCZLKy4tHfsSZUAegz3uF9", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "14zf4PVrmW7LwLptMkZwhKK2fwroFnMpMLrKiy5jpYCMZBwW", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "15qdguCCzQjauGkwz8NcykLEh8zFhDDCrowDynFfkFJRDBAn", - "status": "waiting", - "commission": "25000000", - "blocked": false - }, - { - "address": "16i8gNQVRRSdraEbFAbgRGBZdrCgeAeyersrGfqmB2kT3rj", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "13mMSS2XnGSWUJMT1ZdM7HdikZXR3RckSpMSMH3fHEDWCtxX", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "16hfneqNf9EcTWVyy2BEQUSy4xYVbgpKp7aYi5Exey956xmM", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "1589py9LSPRHCLQQ1pzTBnuF4p6swy9JovmmpR3SeWfBzjDV", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "12BkPLskXyXrHhktrinLxVFkPzzvCzCyVCaqHkUEoxMwSzeq", - "status": "waiting", - "commission": "0", - "blocked": false - }, - { - "address": "14SvpNr394ZedPfXMkNm87HvTBJWCdrW7C5Cb1J9LSP4s27p", - "status": "active", - "commission": "1", - "blocked": false - }, - { - "address": "1Eazvgu3FqVTjraNgDsD8gnVfoXtBJJLR1ywwLboWFTXitb", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "13JobbXGptehn8JQz31FbH8PsTbFzJNXDHcQpHZArVyCZ9vw", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15wdC56juwXeqriyBJMdEpi6FrnB9PsrLjVuKZG4Smp9a2fP", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "1UXCHYkyDvKQArQfumvW3T587Bn9ZfpPgoHeRjEjkMDqd2J", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "12odFHrUVoPjgd2SJq3mJXmiLg184ubNDazKkL7AFBYcKBQZ", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "13dCwieVYyuLVRdDcxomFeaYU1C73QpNDJreqHvKcggikWjK", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14V8kBx6LkEnDLNj5HgQ6z1kPsa7bsHSr9djshQuEWnEMC95", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "16FUnnZX7h11sxio9wu6DGGqD66z5vXxNLcXuSJFWFAjkaZ5", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "13N1nE5AfTvhs5NgqABCsfgiwwDH5kBrnfYu8aUoTuXkspDf", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12sNJAzECf7AUgz1Asc8iYTmoFZLy7prg88nuX5VASVZmjnq", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "12pZ8VV6o3A6BFYg3b3kk6TC1ZD53x9bXwkoFenv183DEods", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "12xdDFDSmYKYijQLjFNB3dgveDf9ymdzodHcBcQWsdYSBo8g", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "12DsMGfoKUnB8jSSHVP4QLJetNesSeXg36m64DfbBYjRFEEB", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "168QooaS5Z1w3sYLDVwuTh7WZ9gLq934ErVQS5PUVEvVuMhm", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12uphR4S5NNF6Q4cAEY73mC2fXcYxi2K45bMFThaKZQ2fUGM", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15Uc3mRPJxdZTc9X6wUUCxzUrhrXD7ZWGPsPGYJcQYY2i5e7", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "15JMfqPSthTsiiaq3bUQjMosZ5KZ3aUo4Pr2kJdbEgzy3W7n", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "13EEEhiXeCFpFjVQxmjJsHjr9LFvnAurcnwQ1FDgB5LmJwQp", - "status": "active", - "commission": "49000000", - "blocked": false - }, - { - "address": "15tsaRbwLLBHst5chP1pVkQHc5n2JS4DcapFdhCnqJMZebda", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "14QRY2UTErfZCqVMFVRmgbeUt7XQdeCVgNUV1XqDcza4g9E", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1wcx1MBUQkmHL1ed4jMjo7U7eNNVvZjV7iVYedP7FEKqay6", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "131Qzz7SvHUn7zdDAt2jFZmzVsP2KkoiDWLZa9N7FivGTXpB", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "14ST1B7GfKz5YW2yjDB2rsxgBUoZ85DDiq8zrEAbssRgWYTR", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "16JJSWvMNM8i7T97ULGPHPyjvBM3JrV7poyKJRjCzTTE6kWx", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "12uWR6Lrq8GaiChf7B6GbbD3FVQ2jPNW3VckzFsxNUiE4qiR", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1zugcawsx74AgoC4wz2dMEVFVDNo7rVuTRjZMnfNp9T49po", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "12cxB2QQWTNN9gpqSjeaMmgHUr1DJLRsMJeHuy6LptaBzrRY", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14KDJPdZ7aNatRihFevpkz8JwGnsMSbtPQ3Nm5oiNMCnJK6s", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16NWoCHEY67DDHCLe76QhgKD3AAcRQtarY54FFQQaJeftJNu", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "12diYDNzb8USoz9AKxcnkbqLaQjdQHjRMNBsScPfNFsKBeXC", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12doHFjPjPngNvZCWX4WeF4rkLFJ5LmmEyDvPGQ2C1aPppwy", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "16aHTtVyQe61KJkcciSVtnEJ3ThNdErNsY223JTBvd7U5xfb", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1Y7eWuJarw1MUMf13YQiiTrgq2GAxzF4YR4JATi6G4a6Pgx", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "134Bw4gHcAaHBYx6JVK91b1CeC9yWseVdZqyttpaN5zBHn43", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "1zugcaebzKgKLebGSQvtxpmPGCZLFoEVu6AfqwD7W5ZKQZt", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "12gDFFh77N1mx27FRyujXzwoDnmw5pN4Cu7X1bZWyesK5gEB", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "14vucjYRyE9kwN2CXWwmzJ1W3x6yCG5Mwj4Cs5BS6zrJLQ8r", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "15roBmbe5NmRXb4imfmhKxSjH8k9J5xtHSrvYJKpmmCLoPqD", - "status": "active", - "commission": "20000000", - "blocked": false - }, - { - "address": "16P61t1wLB4xQ4jbwjYnWHgbwptBnCjHyLsu383kccQ3r449", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "13dbJuQL7Gg3V6ZUJEd47GrpR8czbbgYx1fVWNfJqHJihxji", - "status": "waiting", - "commission": "35000000", - "blocked": true - }, - { - "address": "19QjsGF2Gdfag3uNgRT4zpVQqJuvHS6eX6cK3R6LDeq9wyf", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "165NJXk1HKxeFPbNK3ZEsgRPoGTkxMU9DyteK3cE7AGt7xrJ", - "status": "active", - "commission": "49000000", - "blocked": false - }, - { - "address": "14uXNEUx4xqgBafCtxvZMxDEgHdjUTcSXKQqFjHCGXoAY4Kn", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "12jHVytraUmG29LLMLCZ6vN3kiZqNGhYqEboV7eZR7U6jhtY", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13qsqBRWCaH12UsuKuaLuvW9M29FRjfxtZMmMMZLLi9JmyZc", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15ciPs3xZsJd86WFoijPs365f7viqGnubZ14aa9fGavyWJoM", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "13pNR6YTSjW2TjGGhyVenKtzWEhBHk6wP5ScNDvfWkjwhXe2", - "status": "waiting", - "commission": "35000000", - "blocked": true - }, - { - "address": "16Y3FmTiJ3ZYAUZrf5rZtxrQJzcHsDBdscpu2zgMD2xN6NY7", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "138LYmCfDRrt3FxuT9hraYggVfyn6nVkwsn8VZpP3Pnt6xpa", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13q4HqAupCcepyZXXi7468g7c9jjkRzM8jBywP8VsMKLN1mU", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12Bwd4i3WYLfpYZa1p6u37fTVKVxanciH2s2DZSqHUxtgecX", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16kQTZE5ecGckW8pir88kABULoBkz4uQxmy5VoGrKWXJZVbz", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15oH3ET4QGW954CPiBvhgKHXNrb4Ef4FTihRiH2VjmFTRzZa", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "14yosBv2k4YTdLc6ZXusv9Cz5SG2JBi9MLimAFutF4LgjTpB", - "status": "active", - "commission": "45000000", - "blocked": true - }, - { - "address": "1xnFYogB642iL4mbqiUrkKV1xK562WMnG9z3e3C5gur4snc", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "1ndTwj337TvrcAM6hgqVdRyksyfhjESMBQr4kA2ALbjNLBr", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "15qiiCBRGjyKbQRLci7cM9gHWDqNDGY8LZTTksczsy4j1dKb", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "1zugcajGg5yDD9TEqKKzGx7iKuGWZMkRbYcyaFnaUaEkwMK", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "14sMwQdRHxFLmjqp14FCxsCjAe98BWf5EqY8obbF8YYvKnHq", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "14m9Nv4di6HKwFoX3NHwChQmkZmXftKyJcqKYfafMCu2tVmW", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "12HfFn5RBJSUqYF5dLopowmSRqthTPQ7733LdT3ezNtUMxqf", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "138KuHPDnb9gH6opLhzsz7nppG8CRoMCVaWwi48BTFiD9aT2", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "19GjAt19groHhCZh22eXXXLSf2azf65bLXjJTS5SmDafUff", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12Qq3fn9xnFZ37Ltcj6BH8NSpAQjEMp2oKnEALa7bbuguU4L", - "status": "active", - "commission": "20000000", - "blocked": false - }, - { - "address": "1guJrS2VMeySZaZo1YuRkXigzzFW6951Vr5Ej3NnQsSpKxx", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "157dtHAyPnpjtUDFz8sxRmvHaBRvVhtsSJ5GpP2dnuxTuA3o", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "1h9vUV9vvHZe1Uc7etrjxzYciHwJsJKkc55kJf6W2STpHkg", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15SPD9eHQPxwKFn6dBLewyDuoo4wcQeByocub1DTWyXjx5k3", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "12iawP6HW33wj95sc3g7bVun8YkYnzP4FGkdmjnkpJowzUKf", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12ZNJzjPBZUh8VV5cuJFkbbwMttFNkH39EhoeYcgGHsJd4MG", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "134BxqvdkMzf1v95j1Wr2NmXoqpys2Y96GXG5a5H3YtMKLqf", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "13foHgXdzr1agokV6Ed9CBHGQG1NpBqvqhmUL7rojcBUBzvq", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "167ePSNFzjb2jrBqqCqkWMcH728onmjVYYzozYsZQHwReqRJ", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "13mjnUDrHwYGATFB1FkFkZ1U3kYFsAQfHYTdcc8p3HP1xzZA", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "13TpYtx8D4XYdoj2pS6Xrf43mgBYyoPkQ3wx6KeB3QhGxkWm", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "14hM4oLJCK6wtS7gNfwTDhthRjy5QJ1t3NAcoPjEepo9AH67", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "13GFUpQkNonsMMiBuYK4pqGUkwnE5AojvtigR95ahiimMaBb", - "status": "active", - "commission": "1", - "blocked": false - }, - { - "address": "16kovK2pbJDZFTCVenu7yQGhxzvqfGLJyH6XpgxEcQKSGAn4", - "status": "active", - "commission": "20000000", - "blocked": false - }, - { - "address": "14PkBX3BUF71wDh44BLeNby2u7X9ZBu36V28LMcBrdK35yC2", - "status": "active", - "commission": "1", - "blocked": false - }, - { - "address": "13JvVC9TLVX5FT52Z4kEfQT6nZ36jVdJpwxsEaKbCjx23N9y", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "12Ks9P3pAAYpvzwuC9MyfgLPw4Au2fWAthHSuVtBRdvrMfbu", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "12ThsVB9ehJFN6KhNDJoz4NGwDGwcRbtPEGjfHncPodfXXhK", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "15tvRexXueswBvUpfJQZnkJHwdJzh7nHfoN4NMBGU8so3xGL", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "15GK3dFg9tr4BUXP5dFzCAHSiV6DSJbxkLT1GVTCQGYzSBdc", - "status": "active", - "commission": "1", - "blocked": true - }, - { - "address": "1ZhsUETRc5VQx4j6udFXUUTUHqrXVeos4Y4u5q1fPybgATT", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15dMdEYxCM9EWtbBdDf1vEvRV3se1tpvvxitFCURXV2jWArs", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "1NDRMvN7FH9YtJLVPf9doF5zbuUwn6hdH1b4WmVyZDr5joM", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15vvFZPWJcq62e2rQ2SYPP6PsZri9LWJb2354Qxx98pQC2KE", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14GrUvsPq8TXbwY1CE4piCbVcqBtm5wZKvecY7hTGfmh6mGb", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "13BN4WksoyexwDWhGsMMUbU5okehD19GzdyqL4DMPR2KkQpP", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "13GquXigTiCgTnhCf82qpBugHEeNeLjFb5tpjoZicNePoXVR", - "status": "waiting", - "commission": "30000000", - "blocked": true - }, - { - "address": "142zbv9g5osTGpuF1WigBMJBffPmT1Lo2Lsh1JgWiv965Du6", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14EoEECHSTJE1n6oCQ72zoC5hjpRU29JF8NZRK7S5vk1enwt", - "status": "active", - "commission": "49000000", - "blocked": false - }, - { - "address": "1Qowgb1YqPTVA2R3DBSbtyk9V3gh2nwGohYonvZ6q8JL9dF", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "1342iFZNrBfCP9VWxqt5p39LiHp2ynyq85Ww9K7R8w6BURps", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "1nTfEEWASm1x6D16FPLLjPFC42Fb7Q5zLovrxQpPQe6j86s", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13N8fKHJDQpA4tAjW52iCsbPMaJHpw8aXfZMWoyfJWjUcDcP", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "153DL8bBeS2QD5AwFkK5Tic5MLnGSt5gfp1pgB6gjjd6tyUf", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "14g7XsFWsMpsPNkwQNhdHfsqKRehdRbpPLaGVTEhBe4Pt3Eu", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "15u2pagtq7j199ooWbTkhbxJLRBDfrbZHsHzumBrVA3pm7kK", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "1sh6y8SMuseeuxn8JyW4eUHbJrLevi7ASH1TJQqb3DFjAYe", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "12jjUEmaKuwC1SxQHe8eXpcv6AzdWiXdvf55VvP1y8bf548b", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "12C9U6zSSoZ6pgwR2ksFyBLgQH6v7dkqqPCRyHceoP8MJRo2", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "1nWkDgVpmTSgj2vhbNqr26XMWCpgVQ7u9XmTAiCaJJS93hG", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "13twvNBcVq7dHRKuUgWB8MTEvKHNchoTMfShKuPzEB9sNFXN", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "12ZTDL5BPYrrPxLWZM2TEe3GckXm9rz86mDZSkRvWrXeJ3c1", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "15oHmEvy4gRsko3bkXzsfSFHEKvcKbNpKGaWK263f6HVcMrV", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "12HZiQM4Hk44Lgug9EFGiZx5Vk1tSUbH4DsJSQcorurB4GdE", - "status": "active", - "commission": "45000000", - "blocked": true - }, - { - "address": "14zGLKbiqsLHLoiT1vh7rEr556EW14Sci3dzv426eLSjapTR", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "12Jv95j4ybvc94qjN9ZCHjENXEL85e9HgRVPyU7x2aJDzBp4", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "13VKHPMcWj9Lpu9sBd6ZpxHW45kBSuM6aPCgpCZqUS8jZ5Ea", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "12RTaMcEfdU6QQhMNdUo931gxG8RxwbLZB1YoaxJwytp8b4i", - "status": "active", - "commission": "35000000", - "blocked": true - }, - { - "address": "16Jh21ThTh2tW98NuN2gM7Q3KaYiuJLbxCNbuBkFpwcDkRqx", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "1xjQ3oMzoD9YHkoXUcduUpAwent44HMQDqzAG43jwauHBYv", - "status": "waiting", - "commission": "250000000", - "blocked": false - }, - { - "address": "13sWHDukhwQQzwFmZLAhWkwhnzg3vxwsXPGd54YPtLTi1Ahc", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15KhD36jXQsqrAbYCjcTmguPYvBdCNdZFvEZbntAB1mrRN8Y", - "status": "active", - "commission": "40000000", - "blocked": false - }, - { - "address": "15UveirdTG15rzBJyeLMtNUjsMKPJz8WnbUw4R17Q8KbCXAE", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15FctDfqPsFubuXo6UpKMQdbdCC3XXdnHsRMZ3DN6ZKPLrSu", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "1zugcakrhr3ZR7q7B8WKuaZY5BjZAU43m79xEyhNQwLTFjb", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15kkg1mK1tCGgqqo3c1CghtKCQsBEAPPjYNNmmRT3r29FeRX", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "1neguHX9CV1CsCpHuYCgZKJioCHFf7Qx6MMdJDTxhEM9Ago", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "126y5f2ePBHvYorTEGUYys53tzvno6RNVwpLStJMbVukP9dJ", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "12pKYwvRiBqU3pNNUK1asvA8yqmttRJ5LMyWt8Nqh8D8Kgc5", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "13uao54DTGFCdsAi37bBSTzJPbuDXTsCS69yPnXFuVHiEeAh", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "16iPkhcq851iaeuP8rZyN1oejneBGtSeQCbhyGMwkiwm7dBX", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "15g4s7BbwoB375dDxJJEaufKC2APvCxb5T1ck5b6sEeuGDcz", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "155eqP54gbKJKBDAZMpLeQCtiFzhx8XHEPBb5KsYPTXWHvvi", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1bLyrPscHXw3kmo7pES6q4dLGjJKATp7tHgD7wweUqesXko", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "16fcR1ercimd6qyBVQyXTTjtWL1kosTS1myiSuVf7kxutxvg", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "13eG7ySsd1kv47PR44yszF23MDpqUgPNZwikZZ5cowF817h2", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "153acrz21joSN37VuCJUpZdhyTJivo81rJVxNTrnY3GeVWeU", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "15wD8upZxRZijKkF7JZDdaaFXuRZJhFyYpFQC5j6FaZL5Pza", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "1497QNdycmxqMi3VJDxZDhaJh4s9tytr5RFWyrLcNse2xqPD", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15ttPoUNmSdBmQAtYt47U5d1JCtKCFaxFMtdAcKsG8qVmm3x", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "14MmA9dnuewsgkNYspRL1Dr7JJqjVk3v3CBR9FSM7YDCpSWW", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14m39ghoPS1QRM8tochabXfSiSTYc3uQsiNdCEcnnX4LuCUu", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "158duJ3QJiN4j1bXq3ccxFXjpYo84wrY4pR1UzwWNThZs3Bk", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "12dvyqCFhVubTDqMdojyjhkxVUMaYVXWLv8uZW1NomUunPmN", - "status": "active", - "commission": "40000000", - "blocked": false - }, - { - "address": "12xYE59944gT4YFaxxREsn774gutNFRukwurNYK598k3DrPc", - "status": "waiting", - "commission": "45000000", - "blocked": false - }, - { - "address": "158SDQwxy6VPAGhnrUnPSZ4u7uvTRjQGB7HLuvcw97jNofNC", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1993smt7Bs38ffB1sJS1nAMfVf93BXwY87i9etAa8RQBSWg", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "12s8FmQvy93DMcUwkzJ2hTqcVfakYDc2n7uCnTi5KroAa7DB", - "status": "waiting", - "commission": "35000000", - "blocked": true - }, - { - "address": "1WLTprf3uUDPz9HbQFe3t2CJdSrpUgiVzvxCbC9yKDSta24", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "1emb3RLsNbEgRSTJb8pALYSx2372PLXd5vEzGhR122PbMZ3", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1jqkeJhuoRudNTVL5dV1qZf8RQtyzcf6ZT4yyvUQbKFktr8", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "12zisb4tk4nxGyja1kiEkGFRWMGZo2mnUxpb5mqARfTjq8tE", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "12gp3USksqBBrThp7G3QYJ2Nw3JR2azFxqYgsSch4NyPFgN5", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "14GWWeZzMYkR7bwyeBvq7c44nJr4ncEodM4fAJX89ZSAHLw3", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1W7neFxPiA76dthShJu3ZfJFNzyBjo3SrbafYQhT3GheLbD", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "19v8rnEDLbrJSyuCLao768QnA6v7SxincyDhQkCD6BYmYhE", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "1CyXdkcyQPjoFqA9qZqT48apNAozevMZsBfNsQVjNxNE3EZ", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "14iWQr1LrDR5sE3x1dMJrxSGRtvRrkmRNUxjaWaAH5o7gjUn", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "16CkEfNo9hQqzoCEV56PdkraRapjoNsppNyJoZ3YpzpgTzgP", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "16PhQfCRVDaMEgxGGFHHnuveHzXohbwatUuVxaDJcjBaN7WF", - "status": "active", - "commission": "35000000", - "blocked": true - }, - { - "address": "13WAmUbyS4PMcPQe7bLXJdcuuF3A4cshY7QBGA94dzP2VxLk", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "1ufRSF5gx9Q8hrYoj7KwpzQzDNqLJdbKrFwC6okxa5gtBRd", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "13uW7auWPX9WAtqwkBx7yagb78PLcv8FAcPZEVCovbXoNJK4", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15dUcAECtMrGwWjd3Na2D3ZnntmaQ8FmLD3NWADc3PMMDukH", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1311nP52HPRLCvSS4EXgWfqRfXnjexbr7t82aedpWpGCPnxV", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "17NNvQg1ZEYo6VeBE7X9z9hdAiCvbEHLKnwfgUJLkj9RCK1", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "12pVRQpqU9vja9MnmLRvKpeVdL4zzBhA7byoy3atrqN1V8f9", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "13KLXX7icm7juzFFP1qRAfwYABPf4TxenX92FBgZBUe6Nxp", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "1zugcavYA9yCuYwiEYeMHNJm9gXznYjNfXQjZsZukF1Mpow", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "14AkAFBzukRhAFh1wyko1ZoNWnUyq7bY1XbjeTeCHimCzPU1", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15VXp8coU7Hb5oBZmab1HNTfpfJk6RAiuzBLdNM5ijgTQVd8", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "15XY7oJ99hVscy5jS3zUh5M3H6sxfccovyTVCPt15DuXCRAF", - "status": "active", - "commission": "15000000", - "blocked": false - }, - { - "address": "12CTr5JEKMV6QMDCSax92h9eyF9gXZPRdrJUCm7zS2ct5tsr", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "16fMcM8dLKwzNZtCqykRp7DzxRzGtpPqZp3cWToPvKCsdbN9", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15XU7uzAP3nS7inBaWDNdZQXN8oXLnhkxUX7sink7HfxW752", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1LSJZCk7hGj5Q7afjzdNCtWsTQQUGwNoHbJQoFz3YUscgh9", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "18zLxNjoSpuQDFz9eSf3cLoZrPXM1dJrkwfYq6sWqLSfFD3", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1562eESnM5R1dPoXEeMNdNEw9b3HaQ9p6U5TLUV1fKe6qzvS", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "1535dDRXs8ga9CJeAMinCogZcEhpfrmm8cdJnhkVehbnedmb", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "16KDeHRyHTXhTSkv3BDNKzBVrxsqdqvNacLy4TH5DfD64yEG", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "1qjNXPh99ExYXmuqHgmvfmmwjjka1M21jaVDPddZtKZhzKH", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "12CJw9KNkC7FzVVg3dvny4PWHjjkvdyM17mmNfXyfucp8JfM", - "status": "active", - "commission": "20000000", - "blocked": false - }, - { - "address": "158EYy8EmF3yT7nV4uBdP7fJtmCG49TqXFpamxHXEGQTGTT3", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "13MeD3vqaN5cFKzX3hzBjkpLfoqwJGYGaA4dDgiiS55wVXGG", - "status": "active", - "commission": "35000000", - "blocked": true - }, - { - "address": "1124btppLcZCDo5F317Duybz6BPbbeDUpKaE4Xz6vWqGkxtk", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15is6fuLuU54YMyKrX6FSJB6nScQFTpEoJKWxD4RSf6MvYFB", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1Tjs2dPZr9SzE341Lu1AmhK4pt4SycY1EwYRaUgu9VaPutC", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "12BKa7xmKoUvLd5tupdVqat1JNiAiEiGBPvJAYxyaMdV5XpD", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "16ckko2BU17AZ6WDH7Nf3uDuQUoQky97A3tx4RxUzpAowK8U", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "1hFMbRrA43YckuwGDW3zzHFSfX64wZMezqg4pmhe8P2srtu", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "1rxCNHsCnvgBRE6duxifTPaBA5vhmpwADXb4FBqfgXbzue5", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "12eA9gosVR5Qa2hnibGZFNYSbxG3pafNeVGGi5eJQueautfX", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1GmTVLwj9K91jQBmnPWM4KkwQFWGakUo5JUDKUPD6TPrZTC", - "status": "active", - "commission": "35000000", - "blocked": true - }, - { - "address": "12wvHR5rjguXaiN6FhQwXvWhmBtRURvsEoJUbnMPziZHKkBL", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16DKyH4fggEXeGwCytqM19e9NFGkgR2neZPDJ5ta8BKpPbPK", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "126ANkfm32BEYjHLGvqW5KDEkzmTGxAr6RchdE85GoyjMjeW", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "1561LhDTKVRFYGhS2FFZaemYKvSwHKPWsMvjrY15ZczS9dRk", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13eQTsuduCgY2gmjgT7Si51aaDu97JS6UUjAXan1NNqfE51J", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "15cqv5Ei4DB64t7undqpnPtskY7VGb1uwiGuQSs5u2UYfpXa", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "149DCJve7z3wppHtnQWLqWjYSz5PvzRrFG6PL1qaJvVFgCty", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16cSiUTqGavZULqZStC6wvCxiFrtQmUafsDknoTmhAbMT6Jz", - "status": "waiting", - "commission": "0", - "blocked": false - }, - { - "address": "13g3qpjcv4yuCEnqn7VFKbeq4LZ8qNMvNTJcfsaC4Dgms2tH", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "15QKfrWAKUudbmu4C4Boyy1eie97AD9sjnQ72LURrww5CWnY", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15XMg2NaaBguwfme1ny2FSuhEGpgqwbKEzvdHiZHi1SKFqea", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "1zugcajKZ8XwjWvC5QZWcrpjfnjZZ9FfxRB9f5Hy6GdXBpZ", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "14xso8KpEUMD174VA7FQR9qSK5fg2tHGsQ1ftF3LVTC4R4vy", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16FWJSMDPM55M76nLwjmWtFgDQEa5ZFLQ65gLBVoANdkkGJV", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "16kzYodFWy43sVGFKGnpDK8T3P8F9NhyMKqWNFfeFVN4XT9K", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "16Ar9KjX2LQf2CdTrTxbyxPjDNswhL7qPhnwcr8ocMynBRWo", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "13bVhUJ3sf8dcZUiitAxdSNadDmx5QQ56efD3ZxkL9BnRCMX", - "status": "active", - "commission": "45000000", - "blocked": true - }, - { - "address": "123QZsdqWw5ygyKVRQ9aWQFHghbGaS9AWWYsZivZcwfbGZ4g", - "status": "waiting", - "commission": "35000000", - "blocked": true - }, - { - "address": "1HmAqbBRrWvsqbLkvpiVDkdA2PcctUE5JUe3qokEh1FN455", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15gx1QMCKtB16pfYh3wKc8844NygfrXWKh6UqojajDftxS1d", - "status": "active", - "commission": "49000000", - "blocked": false - }, - { - "address": "14yrHPbyTy4ffNqaJJTUx1tqPdW3jJ9m48q7gGymyhVcmJDL", - "status": "active", - "commission": "15000000", - "blocked": false - }, - { - "address": "12c5WXaEX4g42Wc7WaKpuLzimD6epopfZ92EZ8735CKTN7Dr", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13MaAh3mjhQJSNF5m6A9U4FRQAi34xME2qcnnodScTm827zH", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "121TxSjzr1xhy3X7NiNVEsm6oGZnZY15MMRgHxNmaZunCXy9", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "14jr3cxYb5QvoXaBFB2azXbWiNo4bzNiFEAokFbztrwP9LAz", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1x63rrHyhp5UW81xKJSDsKQ8kKZjMVLjsBiP5p7MV4UjW34", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12pdN2XsNmG2yPAv5QCkq7YYUg1MM3prvGMgusH7S6FnDHAx", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "12F6vXGkoZoFNeVUNhr7MymX79EaSga8YsbZh5hufNhv9VQZ", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "12hBW5Y4e1UxzquxRUstVDo4PKS3soe3BhzNLqzo4H7rJyFB", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "1569aqCBma2m4TuUe1MxEs8EXBAZFCmwwcZMLde6HNbimuW8", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "12CoBfDp1GKhF5xvC2AsiJf74d2WhNLJiWsaP4LVu2UBHCJ3", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "16SxHe93PgkkfCHouc4mtCrzbirN1Ba8nCLHatNm66nXtEJH", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15xzmgiDUyguYSqZjhi4dGPiUbsW4Z6b3cYALgbUjhE5pKpT", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "1VrKDfXunzstY5uxPpjArUbZekirGXcpMDYvCBJmjV1KdEm", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "1ptzfaqFVUSpyeyVRtzMkxghwWdLj7ofapxRh6VvVJ6fF7T", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "15a9ScnYeVfQGL9HQtTn3nkUY1DTB8LzEX391yZvFRzJZ9V7", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "13BgrDLEpN2S7wQuFMwgymnBvY3s71tar2gd1cdJaiJqoq8o", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "16Divajwsc8nq8NLQUfVyDjbG18xp6GrAS4GSDVBTwm6eY27", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1zugcaaABVRXtyepKmwNR4g5iH2NtTNVBz1McZ81p91uAm8", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "1LHerbBSF71DqonH3p696atmCUwmFQZg2e9aYuvF2xEvRBY", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "129Vo19NWqbZzTfqyYxMj7pf9xLMwW9JCnndPeGN7fVdtYvi", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "131S7wYRvxxwJpJSmiWRqGQPkugSAB4VW24ZQ1CPz21rFttU", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16Y9RTcBhfkLeN3GFSKYGtqXEL7VDK6fsM2uk7GwjnxtKRwd", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "15thjfpZX1xVcsnfya1oXmbXzau2on5abAc4XXYP62SNwwQQ", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14mJPqSXdh5cCWYyCfMTeakCCkF93RsK4VW5qD3EoQY9Ukhu", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14VsdLMt7eH66aZFM13imSjFriYGU84bwPNZb99qNVhKuYSC", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "13YDN239LTFZVFDuuyz8WTKHxMSCvEqiPQe1kyjABcRgxhNz", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12MgK2Sc8Rrh6DXS2gDrt7fWJ24eGeVb23NALbZLMw1grnkL", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "14oRE62MB1SWR6h5RTx3GY5HK2oZipi1Gp3zdiLwVYLfEyRZ", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "14Y626iStBUWcNtnmH97163BBJJ2f7jc1piGMZwEQfK3t8zw", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "12dGS1zjyiUqj7GuxDDwv9i72RMye1mT7tSWNaSx7QVeJ32H", - "status": "active", - "commission": "20000000", - "blocked": false - }, - { - "address": "13u9N1SL8qAtd5Wt5TPAQzfSvtzhJgDuVaTbdquwsT4g3Fgx", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "15KJ8D2WRTYP2ea9PQTPt6sChC8ZjLnAeLu6DBQdbQbVftPw", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15wE6FKHd4vS6PUVohpJdtW3M3CGq1yatMaYBodpPkLdQJfu", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16JwE96t9MMvWQHuyHntqVyo6Ks97XCK1kHvWumGNLGVJg5p", - "status": "active", - "commission": "49000000", - "blocked": false - }, - { - "address": "16WzVw5JDCXLiA3t5D4LL15S2sqSBtCsjVNXkwLCVxGdeQGj", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "16aThbzrsb2ohiLXJLqN8jLST6JgUPRi3BqyHxUW4yVHBQ44", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "1EwUAppef3eii8rNEXM44WxVsB6y1apZkfD8ejpwH7d4nmQ", - "status": "active", - "commission": "20000000", - "blocked": false - }, - { - "address": "15hkz83sTMouD7GiiWP3SQc5DXaZFumYgJ6bf8Xq3dphPQ4h", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12EwbukHX8SUkYtQSrYNxFD9GCkZ65E6orXAULzSsiSPooLN", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "1eLUhRLQiikdt4zUrYdY4LwdwYDsStmjrqzGzC46XmuTatG", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12Rnwa6JwTYcwv8pVcr5u9CfjTTgbm1wJimKjNpHL7uLV5yF", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "14coT8D8CB5L71J2HtKh6aCXZawKkeA8WE3A55qry3qeHJmF", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "16CdHjb4nxVwF6uwmPm6A29pc4ubnLiY7UqasMxt7cT9BcoK", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "14PzUQfFjRPiyi5jnizJY4YRcNhTCMaEu1jQuyESuPsueXko", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "16ce9zrmiuAtdi9qv1tuiQ1RC1xR6y6NgnBcRtMoQeAobqpZ", - "status": "waiting", - "commission": "2500000", - "blocked": false - }, - { - "address": "1ChAR84s9n6ZTYGSJqkKizzdnJBarK85bxficpxrd8CkGt4", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "15CosmEmAfQAhnxwan18e5TueAe6bDzrqqxg13dToDWr7A8M", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15B1BwPX47eKsnm76AUx15mYCbV2GhurKnqcFwiEC9fx3pKB", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "126brtAJ2VMLcDNZHNQ6cfaUSdgZikP7EbddVxoQzj8hEovX", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "16RJiGgc9uhZNXmd47Nywsnf43ApCJkSrnLTiodi5RDodBd3", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "1hT5LC2keHNNKAC7zR5JFJ8CNBi5mXhuphP4Tt6YynijgnL", - "status": "active", - "commission": "350000000", - "blocked": false - }, - { - "address": "155xycxcNhKizJb5obvXtHrRWnEsopF62bXMYwYhTyeYaCEq", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "16ccKvsUEj7zuvxadvrpsVpGUNKjycdQcads4u2afwvfLtbp", - "status": "waiting", - "commission": "0", - "blocked": false - }, - { - "address": "16Fwe1wFveAWmUJ8WucZmu87iyp5464m9hNqvUP8oE35nwc8", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1ELXjXXoFGVaBFdZ3HSo61E5ySRhr68sC4pArQHcDqt2NFR", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "13KMzebkh8xQQ9QUzYJyj5qdpKoarQFaU7LKNF1LWyPQp1p8", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "15x643ScnbVQM3zGcyRw3qVtaCoddmAfDv5LZVfU8fNxkVaR", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "143xeV45MsSeUGFpCns1ACgaUvCeouSJ4WDoppio9qNUNr5S", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "145cjTrrubRnAR798LWGqrDfHN6x1WdUcd3YAjw74PyccS9W", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12KK58ncKnnozV3MjmtTGMr6dZjBR5Ryc2Gm4v2ADrayoLQd", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "15jrQX54HczCKJgtYYoKvzJ2kgyCyyA4kyvMv2bC8x9UtDpn", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "16BBtZT9N2zQkFBjwSTuPhG4fC2RS9YGkADqcwYMhoL4QkCN", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "14gVF59c6axoK4q6D4aDmiPJBixTLSv3Dx4EketjjRqGWTF3", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14iffevcSjvG6NCP1CwLy8GLmigkS6saa7KjmWWTkUhXYp7R", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "149AnEATtGViYqvJ5EqRMt1BkrJo88GUAdmiG9RuvMz8CKUk", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "16DEMhVfBcAN5JzjjdDYWNsTYuU3nFpFVXtoTUKjY67WuA4t", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "13Vfrc4PjiE4ZKsHxCa54AUpFRRPb1d247STD4Ankb82Fgaf", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "1jZqirgn6ECrqwYNGUT1No9QSBWTatCkCe2nRzxFw2ufbyN", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "155qLCXRwMZjepZgfcwsoGuXXtHyWum6bScc5SbfM2yekfc3", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "14zybcYPYQEEmmZUnvCpTnAE6Tm2uRKWG4xPmDfHZn9Yjvrq", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "153KvYcTQ1NSiogioahA6SgHcf7PdgsPAeYBWM7oQdY6TgPY", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "14quk7PGMUjpsRJa66rHSQbeuXr7444xp6eVs4B4XKijmRm6", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "15AVEN1kU3Usup1sRJSdoSMEb1n1htVwuFVfBGKpiz5cMTJt", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "15apjb1k8NBZNsUr93tcffaGU6Z6erUm8TjSawpTWc8WAaKP", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15SfLgBPmtLAuqTdvga72k8g3rPTzfidgssXV4n4DvfB8xgr", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "13YJ7PrjwAhKHP9m99APDSuvLwWKSQSmKABfJY3H2Cepk2CA", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "14cxMDpBNLsNEXWyCzked3zghzaYWXwoqGT4h12GqQXdVhmn", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "15UjmGk7qn992vQ2TjQzVSYrrbM3eMUHReCF5TxL7RmpjpJn", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1MAQf4f1rbNHBJ4JxCtRgCJjvPazJDZZPGoX1AyV96wQTLe", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "1en4nS3TdToUaydZWQWmDwYKBi7RdgdfGP2vBsRAGbrNJcX", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12T7VqGAcQzdxNk3Qub7Ln9jFnsN3dtJwdSsqNfThSeCAjSf", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "168QqtYeiVgVogAaGssjayzrs1fZaeXcAb3PxmAemhGVC6vx", - "status": "waiting", - "commission": "70000000", - "blocked": false - }, - { - "address": "15rXwocVx8FjoHi8UKfF1L3gdzmiP3H9YiiNQ3zh9Qn2JCVQ", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "138jGBBQBwJGTmcxK7e8PT4KEAGdpXybMD3GepSJ3T76wuGc", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1yMDtinZfWBBhSWfoTvSV9o7EH1rVrEPZNDK9JcAUc45CNZ", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "127zarPDhVzmCXVQ7Kfr1yyaa9wsMuJ74GJW9Q7ezHfQEgh6", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "13Z9qHxDALpNq7bwbwkjwPLR4vb7qwrEt3VNtVFzs3UB3NP6", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1oLmnJxBtshWmwnxMRfgbk2TeHmurPx47wBKihRcZVXvZ4V", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "167ft2h9RshCcsQBqgrgAaBVKPFb3zoSqSifSZzzC8YJQADM", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "13pZskDR7Pt67NtcChSr4uFRBf9ZS52nQeyrceSykq8MDrMe", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "1Wo6qcrh7wxc1kQY5nfixFuCAFuzkgiwau64SmrPXBE7vVf", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15Q7LRbAKrVExHs9xtrhDKuNmPApo4iBQdJp3k11YMDjTF2f", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "148x2StndHXbqyfSPnMcyXx2RSSWqGYYV8qENU2JcAQQQjHM", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16MTPYUDqLaCMErgvbTu6WehcUFKiocUWUDFN1Jdpeo5nED4", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "15nLLFfX8jtyhnYogRqPU798qNpjvSp6n14AiH7ddHRFWnL8", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "142xjGmUioKgrwXfhXyiPU1tt3WeKKZnHX3NM6w16qtwbtFU", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "14wymhAEzK44WuRLTfNDcLGJjgmHyoUpQtBEkaa2yeQPzpJX", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "12WmM98h4Ar6y7ZyyMKPXwSyuP5GSZvXTbEkDXm1tirbZFW4", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "15XrzrDfmDf8nZG47Vwci7ZSDcLswzXEEn1ePDmCNDrfy4v2", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13eCmuo7gHRGDa2xSFU7J2Sbdd2BbP7qtYgiyn7aUUWhWYV3", - "status": "waiting", - "commission": "35000000", - "blocked": true - }, - { - "address": "15PJA4PKoCZ2eeuaoFpoAQikHX6nZB7oW4qFTRhKutzekn1L", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15UoZbtvakcqPudr7JU9fru8QruKjevYQCC2374YqEkjXh1g", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "16XkzHiDLyNKiiUKnfXyuHzddb7ovDRfL5YyUZCJbDp9ZMdT", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1CGs7yMf55AdzjYkNjVbc4WyibUPwDEdBwbDngTu9dD2ouq", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "15s6fiUuPf77LgWrsZLad6AVWYbDs2zHRTxN6XsBzroKM1Zs", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "167kWNv6izrkGybYocz8PoVdHtC9PgCkg1SH1pp7DFpsty7b", - "status": "active", - "commission": "35000000", - "blocked": true - }, - { - "address": "1HhL766bJ7SsULUGRCKUs3tUY2H59jFSXsnaMiJwWagNtw1", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "14ebRSbCJepTp2X3YwDsyE3wRRQ1RZYa8nEFnLxLe19qdHna", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "12gPFmRqnsDhc9C5DuXyXBFA23io5fSGtKTSAimQtAWgueD2", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "14wpitUpAcUnooXGs6JTRB9Zqa3g5tKdonCsSu2RE1A4aQSq", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "14fu8gsdLTMvAWxq2c7DJxyfbcHmkFWcngxAkxmMtX3fDtk8", - "status": "active", - "commission": "350000000", - "blocked": false - }, - { - "address": "1NchFAs3YJHr2BzoCsJW3m5HgD5XaHAQokUatme4bgyxEm9", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13KuUijCvWN3pwVcwjzVa2Nov8eZTKy7fJ69sMD7mZyQvjAF", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15MZqPwJTkmPieNpT3vNXeqZ9S1B5ThmnE8jtqotEVXQoLcE", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15PPJX7PvSbN7k6FSVZ5wnjWiMcf3swyRu4rzBZMnuhP7Koj", - "status": "waiting", - "commission": "0", - "blocked": false - }, - { - "address": "1JoBYyPoUdsuU7vZi3KgQAaQYn6WhKqUDXRDmsaJ8Zgxr4T", - "status": "waiting", - "commission": "45000000", - "blocked": false - }, - { - "address": "15DNBRr6pNbQ4Le9pNxqDqQfGUG5byoCkSiL5SEr2fr7cGGL", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "14wC1KVsGx8Axcu5GqVLkaaoSefBFXkXj5SqyFh92mboo4CA", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13AxoWJYFEHxjrFYvjNCsad8XMqnbhEgH3G2ULPjiuudywNJ", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "14N5GT7YTaDBSsLpfxxtCxNdYfgDofGj5wQSfqC1URKHdT8C", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "15a6fbawvVNpQEoJLp1r9AW4ma9RgRXBvRp6BfHKNw3RCD2A", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "14m8CmDmksk4cQ5YtvQzRva7J7B2gLCSSD8dwPfyH6WUahrG", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "12NTtnygPvQ9hVSE8ZLT5Qrp6oPBKxQw931vMxbppPoNrHSX", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "13NL7w9SitBziaa9nBhWmuzmEaRTuX1RvWYs21zKyrvBokgT", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13bEAraR65YASSynHhGNrsEyPgWfcLLYdgYV6GmeB6bbUeeg", - "status": "waiting", - "commission": "350000000", - "blocked": false - }, - { - "address": "16hUkBK3h94uh7682gk7HeTYvPmSa4D1Y2w4KUZh1u1cP5J", - "status": "active", - "commission": "5000000", - "blocked": false - }, - { - "address": "146NTtgi4qDnY5dC2UwNiqqgJMqnx5vmCYpARsCMgcYoCGiX", - "status": "active", - "commission": "45000000", - "blocked": true - }, - { - "address": "15uQxHKoGbA15XZUEtDXrD7ghh6G1QoCVYekkZKMgEhpeQmA", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "15MBzbxZeXFZxiTsMyvzKK7Hn4cqwHzC1QxT8uHYiYBWun3M", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14rpAavvQY8uZB7nvD6okx7S8ZYdypWfC9P5C7dHgpk4B631", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "1jN6pB7KnShhBCj3YeXU6VLxutK4U3hFdUHn1SBvoXvNXPU", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "12uUKHVCpXuqVgsm8XxLE56cyHNyvKXMNLJTUJ2j3R7xke7w", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "16SCz5jRccjBbuQVNenhcMhUeKyhxcQbbL5umEKni7ShYDaT", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "13Rt86UmzQwhmyULi8HjmQzW1HaAjsZdQkpLfjqwjVpkt9n9", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "12gandRebSiGHsyYyePTqcKghP2ij79QFRKv5AzqcaYNNiLN", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "13giQQe5CS4AAjkz1roun8NYUmZAQ2KYp32qTnJHLTcw4VxW", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "13zACZz6AuFSgnM6uKdJGcvn5XiSWpYKRLkmtTaPSsPDWheT", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16MNNfeq88Jar2ieeNng4PinnZsHB5gozUxcLAJPjTy8np2m", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14mbCrev6vqt5YcyjFsJgi5of44CRhCj9aUZUiCcvwjNZrKS", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "12zuGuVCwx4cQuSSwsFm66Hfb7iBreNGZAZrv5XNrC2NyJdC", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "1QvKiY3vzqk6g7LSAYFVx4EWQKLvFTQY72CojZbiFmpiUfg", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15faP4KV8Puvtex2WXnhUoeedhNpTPt4jWcAmZVsUuNMVvUX", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "1nr9CzVdvbEuDbuUwFyEQxSUNZSuZPATDd9XYFVxMn2WraR", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16d9PJvEJYydbkvhz5GawZZFqR4trJanWv6Kq2Eq92Pmw3Ri", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "12BVn5jTsJv78Kd8PhpguMnQjiBLUBzXTys9F8V8Scm7y4St", - "status": "active", - "commission": "49000000", - "blocked": false - }, - { - "address": "1C6dNJfCv5ANCWuXUsJT1XdvU6P9VAQWweYb59SEEjzEATa", - "status": "waiting", - "commission": "35000000", - "blocked": true - }, - { - "address": "12Dwdme7TjaBpd6KUuid9cc4CVr17zkPVmTa5tZ59CDd8trq", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1ugiyTgy2jH28Sw1aTErtR7thsdHPnvVQXFfTsUG5qNMxaF", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "13xfWrP1eF6mYp7mQ1CuNYVktPTxhP5Q2xGXiyVtv1j5hNFB", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "13Ybj8CPEArUee78DxUAP9yX3ABmFNVQME1ZH4w8HVncHGzc", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16iiKwFsRKRsjAiEpD4zgNgEX84nzHtHHNFKXhz1sHtan3ne", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "12jZDB1QiwffAdADz7r2tBALX3rAWQjqvE3PRuNmQXsd9pnw", - "status": "waiting", - "commission": "40000000", - "blocked": false - }, - { - "address": "13BWVNKSQn9dTrLXhmgm3QHZZNCKZ9ToEsJitjypEvLwJB13", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "12p6uXCuxgT3WW4WqihTgwTsnzDRmye4j73D737W7MFt3wGw", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1zugcacYFxX3HveFpJVUShjfb3KyaomfVqMTFoxYuUWCdD8", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "16PDw68JUYaQK9ohysuvnAQ5Kjrm4sf5WaFMkrbJxmR4Zizh", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "13avpNYE4rTxhN2EfJv8zcX1U52JLNgiTtgqrpEDoLZwZxd", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "14YAS53q62dSfm2NSCJ9LT8ndJDX2P1eiP4jKwLkFE9pK1M2", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "14e6xD5f8MuyWqLNanZDqSGe9TEzNMn29namWpKBJBa5ukwJ", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1ERUvCzrrA5GfUfnQyxSjNPudMKEwcD5rtp661Dbfb4EdTG", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "1Ki7BgQXWVqptuQzYCZxdMj8inHhDePvQTJiFr3XvBQWkRP", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "14NG7QT8U3CDcWYgxqDR8CwwAwoVXZKrA1WpujsCTEP63paE", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "1f1CUvxKMjnTBXBfNfDK1tthVjpMTkaS8Y9nVZY3uVQmqdh", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "14onyMFgj1Z7HQZ1XxvDRmnZAd7nG9sMFF6pAj4peGLqNZpe", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14zaNPxXJ58CnUWm5ra8uZWu5oxAke625pAgyoEdeVcxbYZK", - "status": "waiting", - "commission": "500000000", - "blocked": false - }, - { - "address": "14wWXZ3HyPZreBNc78hPFaFFhLsowTcwYT4jYKx4qofX9BRv", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "12TemnsyrwfMXRsdUsnpeQGAof8nnoNRib8hDUivzAsBkr2t", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "1k5HSoFHQ6qWB7NAu8bVXgUo64rfdA5YytAKq2jUWG5ccFe", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "15p158r32Z12YyFU7BiqLcqpySmHUedVfJLJ4M73THBixKJY", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12eJYg9RLVtAphFfr7FZ7rV3T5NmRa1B6jWPGNgGzE1mEDSa", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "14Y6TZaNAS43At4ovGMULSuGkdE7svmn6zqicWBkSiVd7A4T", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14tqhjkG5BQMZeT3Wh4F24u6Dynfmpdg5zJssJF6akbJSTGq", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "14TGapkhpa8VgZEViheFVSHY32ecxdUy7Ks6XXnexiNB5kRk", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "14TE6Mtk5d7bQPJV2Y7Jej3vet7GcFaxEygGZ3M63BBbh66D", - "status": "waiting", - "commission": "40000000", - "blocked": true - }, - { - "address": "13JxPP5Cc5oE3y3BC9RadyiHdUMctMnvdExApfN8M22NgdAS", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15cow6Uoq1KtBvyvRetuX52M1DepVpfVmc8qrpqCWH9grHdq", - "status": "active", - "commission": "6000000", - "blocked": false - }, - { - "address": "14AzFH6Vq1Vefp6eQYPK8DWuvYuUm3xVAvcN9wS352QsCH8L", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "15vthsDeqGnawu8L9Cz3RheobRFZyzgbB59MpFFVFurW4AP9", - "status": "active", - "commission": "49000000", - "blocked": false - }, - { - "address": "16g43B7VPfTmpXQujSz3aKbqY9twSrDreHFWtwp4P7bLkQPp", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "126RwaHn4MDekLWfUYfiqcVbiQHapwDSAT9vZZS15HLqfDJh", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15ANfaUMadXk65NtRqzCKuhAiVSA47Ks6fZs8rUcRQX11pzM", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13iuS9JHvW6g6Lz95XBGeM4uJ5PqdYcfwToASEiV48TwRPgn", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "12Moo7RngvfDeqvUKhWHymQH6846wV2pUGPuEv17XftpQ2WK", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "12pYX6iBjTYGxX2kRMy8Sgdxa6pL1pn72GG8Es79FE9MH5sA", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "12bPtPSEqtNKWRGuehj6psWMJ6JfQJT1FKmb6QMo8X2NyYLp", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "111B8CxcmnWbuDLyGvgUmRezDCK1brRZmvUuQ6SrFdMyc3S", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "14Xh6ffkMALKBVAmFwgSwnrU1D5ufQAUa1o2sZ54dGuGfDY2", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15UVN8DnBFdBJCStbaWeKT55wuSMAkoqEa7guYkZLtnszdQY", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15B9z922jSHotJZp3VR8B25nJHfFXwpYSkJF1DZPbZiscC3F", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "1gLsAbMjGPEvbJxkPEAokYYPS3rcdm54ASnRoPxE439FMMQ", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13JuwkvSqGUDo8zErgfC9ivGfKfcdDyceFkvh9NW4wz7NbuF", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "14DE8GdKnNvgoXCLFq62ZjNz2zsGqnxXBsRMwNpiPip2JSFJ", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "12Z6uaH8DhH9FkzH3PbMpeduwYvHRF9Gnb7qKjykXXi5PAAr", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "1NebF2xZHb4TJJpiqZZ3reeTo8dZov6LZ49qZqcHHbsmHfo", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "14j3azi9gKGx2de7ADL3dkzZXFzTTUy1t3RND21PymHRXRp6", - "status": "waiting", - "commission": "120000000", - "blocked": false - }, - { - "address": "13B1jiLG32NNeEiuarQze5YQtJ3S3DpALrkK2kkXMs3Esgf9", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "14d2kv44xf9nFnYdms32dYPKQsr5C9urbDzTz7iwU8iHb9az", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "133NkGSCzjzGTb2oepvrsWQLvD3E4sAZj6VR9B1eNiE6V26i", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "14DvQhUDWVABBzqD3jEK3VHHRZ1UbKDGCExf7LYNJLQd8CGd", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "1NqVmUJCyaj5yZ9jp7ZZa58hbUx2QaBZ4eSCu9bqAdZXgAm", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "13mx7NQBYoo6TY9sRsCAEbZBnen9BBK16AfkxhPf4LcsaTf5", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1qNhYLFbBi1tFyvYfSRRBP3Ce5cjS1xKMTMVNr8gJZvNTXM", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "12KWfEe5ttGK6kfp2bVfh1arhqSdneJpqA5S8pAix8yao1YT", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14PvFwPgmmWDRqNcz338Qg4xvTuKju8Pj7zmUixG95v5UZe8", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "13353aPRxkEPSQSu9EypGLWXCHbGbbDtaUpPASjdLrtdnyC5", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "15mYsj6DpBno58jRoV5HCTiVPFBuWhDLdsWtq3LxwZrfaTEZ", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "133oN3pkmNqqR5rzpaTEDq3AtmVNhfFDfoYLFMk7EuTwNzNZ", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "14b9zpD1z9xpWdw2YBkwAABVdpjkGpETW4ACx9RE1nYzL4Jz", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12MqEB7VLqKRgxCoGZXriPuo4GNYtaFiQ1tjMZhooPXAycM2", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14zCfcqjbNpc2gbiNwy4B7RiSfJzqpyznVGnZ1g6QCCQsY5F", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "153Ys4VrrPMCenFjb2P2NeajMQGduHAuWYqaTR2Z6srSW4SH", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "14otuuVxdRV98BcVrUJmxTRaLwDUFNubbPMYmPS1cnRQByno", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15faE22PfPsap8Gk7fbwsbiv81kavNkMP3FHuVGxBuf6hqbQ", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "16hkW8LgYYAdsCPjqdCcochRzfdeyAAKiSo9drWQfd5mnzSt", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "16UpmQgoFroRH1i4Gi1wVZmomXxSZc8gqkGQG2czD1yJHoEu", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15kQhquMupGiXVVtu36Lq5mmfHmN8orYqh7qeuMAeeXwR23Z", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "15AcyKihrmGs9RD4AHUwRvv6LkhbeDyGH3GVADp1Biv4bfFv", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "13xTKARCtSSTtveDMuTz6s3t9nb1cU1Qasi3iA7BiHobxUdy", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1WfPzrBRA6x87FC3NUxq2zJDJXqdSoYsiGqN9yHPg9px2SJ", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12HFymxpDmi4XXPHaEMp74CNpRhkqwG5qxnrgikkhon1XMrj", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "1KfeQgNt2h9mxB9eHqkr7rWrXjP3qPoZdnS65GYyyp99C8d", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "14axX6XFbjCeYcCgcYBPHHX8qKXCcdUde8SqG9WbyKyUFjZT", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "1Pa88VEmcsSg7ZVKFSKG9VzF6otQYM9HiAV8SujvSRAJo7J", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "1RFEB8hM8DSBojiSZPydc2CrozNutn65BAypYMzpNxSTFsZ", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "13REihPMQRbujGMrSUyCvWhg1Rrzuy2BAyXaRv4KXFyCsrMq", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1HrAp8Hsj1aavHowE418Xc8bbraAGemEHZaUMYWJAC8XJvH", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "12YQwgZshvaibw1z4AcMXC1kNnpvUPgY4FA1AsKuUv9F613t", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "16Q2PH4woP6gCE4LzgWtmwTGzxrrkxSsz5bDnXQnEpdabxf4", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1LVSi9pT8SoCpjcGXZmfUo22EZtuwcwXim5dQFRVKDMFf3f", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "16URZb1rT4jT6QkxDSYNMoGE5r4mE2PnY3XCK3ESgAzSJd1J", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "13Gae2ksRtpXsK9Em8pn4yHqsDpJBdRbtFsoHPaKVUbwFXv5", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12QVNbQdKKGM1ahx62TPAhc2Gy3G2i8UuizPES3Do1azeDVk", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15twfAkh6TKdNpE7kNgxcQSRYtSpt3QpgjxmR6HKHFGs6Yrz", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "15fd6W2m8GLyD6HghwCBuRuHS8w1N7Agbjzp6yU2gHbihEHt", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "14aCA6DHDyUKbPpE8JRp5pzhU2P2xgfj7BpKL1EY1EAonozr", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "14MJF1d4GkEi73GSzQ6vVrgvgv2apeXi6VSgAzKK8Xwv2NXA", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16G8NDzxUeUbGiw2bFX3Wy7JwNEJz9U8B1smCFqqe4GPZbdN", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "128s81jFBAUESm9zvNqHaE6Dq2Qs4Gv8wPMZZhpmZr23j6e5", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "1qUKZLhxVGUPozs8j8XpxH8VbZX5ckXV7ziUf6ji83ieZYd", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "13xN9Mw1Xif5VTd9RdVEjaYjPsZAZeSKbukuDVHzxAjGjJ1Q", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "14MvgGf3PzgsEmMBHxdqwQrfhEzsGhzPReATQdpLVpN6aK6U", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "15JMBW9Tehm4RLhdvKvVKHck2hkdhvTT6mFZnB3pg5opHtjh", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "14rR3ZJCL7cCUN2KSdGhaaGz8E37En5gZoPoHe82EyXPkA8E", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14kh8jr87q7vb5N7JrgAQj18Cz5vBGGFPYndLjRyCwPAnQTf", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "14tcr2XztACGuvLCfZsBhd7CAs9ySXnKGGJAmJVoXARsFs26", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14tcxHSTAiZf7M4vcLfFdGkGJFjfx6zDqds5QVyz2H24hKgG", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "14gdsk7YQms3efciqyUxQFhrSEzkFQRzFfURWrd1BL2YwpUs", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "15ba93BbFArbPPydSz5EMMRAfhV1NVMRccfpYaAsYVhBUzYv", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "1WMowFEogg7S1YEmigjJrP54mw2qUmsRLnesesnwP2c9XEx", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "16kL2BPH1ppm6tUKVF9hghVYCNaPJ8iNNGXdKKZGNzpVLvo5", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15MmtLaSL7VXLta5nk2SPWVfqdwUrWjshAznPasYbSWNdkk4", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "14bUYpiF2oxVpmXDnFxBipSi4m9zYBThMZoLpY8bRQrPQNG1", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "15DJ6BzNKGYKtScD77hC1NEWe6iybp89A96kchPtkWyFWXLg", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "13iTwLiWy8jcZsUgeSJjvooy3wAhedrBq9yapo4QzhTH2npU", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "162Cw32opH6PQRLU1dcLVgkvgC3EWrTFZQfjCK9kbuFYZ76p", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "1cFsLn7o74nmjbRyDtMAnMpQMc5ZLsjgCSz9Np2mcejUK83", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "16FRYg2zE5cgrkKQmJhU9YJRT7Uquqxfz6hmp6GnqgdcBv16", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15GHeZxmhs63coTnBPjh8EixWuB5oMKiGheLX5HRfwqzBZcR", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "1v7QwYLMaABh7eyFKN9PHbKquAyPt6PtcYZZWvf12KV5pMk", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13aucKviKoD8KhzeiBDmdyfRRTjTWgoAkkXNyYqtNtbrdQXj", - "status": "waiting", - "commission": "1000000", - "blocked": false - }, - { - "address": "1Ew5wAsMtvbRdd4RdxSheLpEkSRc718gtcfTv8EmgzEbknA", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "138UfM4EToSwT2YoUAw3Dp6cVgEjQDPk75E4S43gsSAN1eNt", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13CKU6wfn1j3SB8ena6Heb3hgo35yCFtvkAotyCPpJRnEkFg", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "16k8HY8eS7VYwmHrmxQvDmRt4bXypAMfDT6bU8eMkkjRw5Tk", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "12zREJg4524bbPVhZrH1tyJAWkAWV1kUd5hh8TeALSSjCv65", - "status": "active", - "commission": "49000000", - "blocked": false - }, - { - "address": "13unmJm4yBZn12rFXQjV1pirJQbYc6EzzxrYBcSxYcN31NsF", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "153YD8ZHD9dRh82U419bSCB5SzWhbdAFzjj4NtA5pMazR2yC", - "status": "active", - "commission": "40000000", - "blocked": false - }, - { - "address": "12YP2b7L7gcHabZqE7vJMyF9eSZA9W68gnvb8BzTYx4MUxRo", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "1L86sF5wiavbpgegPBhSP83JtMD7qkXSP2CUzwBMeGcAfyV", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "15vxmw6TU3NFiB41YD2ePTPqQFxy35eGHhoJ2z8iDoKLPBtS", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "12xhnCTMJFL8PsUKq2oeowLBESbekuJ2SadKovKY7fML9QAj", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16a4D989zW4m5os3R9oTzNYn6YfN2ZFxB9Y7fqj4kojvZSwy", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15JGaHWAu1nAEtMMjKZSeu8VsYoTBMmoJq6uwxsDBqmwytSN", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "1zugcacan4nrJ3HPBmiBgEn2XvRMbehqvmzSQXT3uLBDkh3", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "15rG8TKYDpSM74YkbHXX5LzJVjmVZF5KjKWWapEAX241U43p", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15quvZz4jndTcgyzostqbtHF5g6p94w8nJeYRQ9UZhHmW4Rk", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "13uRzu3mA38V7LJqbwXFxZh178t74YKNK83Hou8MzkNYpUwG", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "15QJ4FVa5g1qM33qiHqUaPs42s5jAHXigJTjYXKfdfxjfzo9", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1KikY9PK1kYwawnGcERnzLbSi39cJyxMRW5iLNsg2nfjWiN", - "status": "active", - "commission": "49999999", - "blocked": false - }, - { - "address": "15axNgLsGTaBYfpC53YZ31LSskSGsDVXzw7edW9MT3z6rJ56", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15uCAG6qK9qdx3EG3kyb5TFn83PgFUSQEioUgA9GLTjMFfq", - "status": "active", - "commission": "0", - "blocked": false - }, - { - "address": "12L4a8t2RGou15GZDMu8Eokx4gXxQAim5MePgYjHeAeSmNHY", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "12eVBx2xjVFzHyyGVHCqEQMp2yntKiSzE2JuGYM1kQAjVKzu", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15Zx4M1W1caBHvwdQY6EjUDVoAv714eEBLcLCuE5A25RqiMH", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "15rQD4ykz4uRD7YGdTpMT8UmgkNDJRKckZbAocALndBVzCjf", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1bAVKRsNUbq1Qmvj7Cemkncjo17WgyWAusCFZQdUfeHSTYj", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "15a9RMz1YXunLeCyphaETaPtj7caH7Pc8DVymuQKEiW6DLf4", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12BMeP8KKSxzCwxRxPQ7TytrW5LCaCZcgcoVAwdh2EqTyvKa", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "121MoEeXB7xYcyww8w77C2SxjcSKaxfGURQebibU28G3Tb7D", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16LgPFnbXWVTFVXRHUXuUzcCocikK4YNL5LxJJvsn2Sr1YW5", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "13dgtrnW32HYLRQNw4CnTxA4eQrco16aWiyjZkgFAGzC4Ndq", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15gZRPZ6iZGtaYSAbLLAD5Sz29RpG8J2m8BgosZtdhu53CAb", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "13sEUJrHpcyBZh6yKKwou6s9sXoMhVW9mfXq8xW75So9a9Ys", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "12Yz9HPcF66pAGpwEW5cyFZ59TFeXFGVnkuxTphC3Lrap29z", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "126cWhehuBFhQvbDqt26dWBNgELfkpc72WvJV3sx82qRogkT", - "status": "active", - "commission": "40000000", - "blocked": false - }, - { - "address": "12eU1BRZUobZSDRmsr6ZYGngdUqEBXCa9qfpZBhHyGSUT57v", - "status": "waiting", - "commission": "50000000", - "blocked": true - }, - { - "address": "18xmWVx2sRYSDEv2XDrPviDxkQft7A4gzxViGTQ4vTwQVcc", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "165JpxmCRi28GwbFAjjrD74FTfGdLfHi1LUGMaYLjziDvi4r", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "13sbui4Y5u8qvE7BQjWW9tZ6fQCXHPeaVLBiUADHUQ19b8NJ", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "12doSHUJN1P6HL9zj96Bh2ZwVBXH7NcCi78caVtte8aQWGHz", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "14g5cxpdKcne2ZEXggWabRiBAyzjaxTZMeS3PNyDpFFxx9S2", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "133A8RPTXQK7EeiuvuXx9CxB3twZYFYEZJq8Z2Zhc76Dbusz", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16LT2rsgKqaadjeGwfdhLDM6xEBjRHP1QN1ZeuBjMRnigLwE", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "13S541dQ5NXFCxSBqFUFghkCfUU6LsZUVem7z2tfvsJwWFys", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "16TnLArANi5Y4SmQbGjW8V8XV1NBbjPr7AzwUsrHjBoERXTp", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "13pZcfgfrfMPrLnFZLrWstvkefQ1Hupjg1YJyDv6TfFQVCAf", - "status": "waiting", - "commission": "0", - "blocked": false - }, - { - "address": "14zfiH2sMH955cG2yKUQbHSP3oQ8W4Ai9p9wSSZunvQ4TU4k", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "13DmhM7edu9eRpZmTNVPsvDeccVaH59pxLUz4xUhQQ4nafV3", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "12EJoY9YDAHcKAN95jD6kedaisjqnuwe2oyhU3XrpFo4Ezxe", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "12NdCS1BNxgiedktuiA9LDWT4aUha1BL86io1bJTS6FXM8nb", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "14QSrA6r1S2LYp8H18UmxLatgyFfWzxUBmM3tpqb7tYMByHY", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "12wtfs4UfodYT1Y6y8NQsQaduLSJbhz7oaNt1F6gTLFHD1y5", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "153baEhTdLPtfJtkcQF9dyt1BXYHxcB35dr4qowhaUBSbPHy", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "13N2JTpk5hhLczQRqxJRmfuCbxTusvDgXYfzkjVoEbaHtpZV", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "14vxzYNs1Z4fMyJyq1zNVTYP6VVMaH6y1VVgsmza1mqEw82a", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "167PDZ9Th5rLRXJFaG3BpZFWXMZoYSRoRcdEj1YR42diDfHE", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1dGsgLgFez7gt5WjX2FYzNCJtaCjGG6W9dA42d9cHngDYGg", - "status": "active", - "commission": "20000000", - "blocked": false - }, - { - "address": "1PqUaCWULAwrdvY2B6FnkzPHWzAhbKEk6hoFoUGs2tCy5jS", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "12BxCyEpjmi3fz582Vs99y5o4khR9oRMQXhM9LUcAj4mKaYo", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15dLKZa3mogtDh8zXGan8D2ZaywwgjsQNU8ZgqrDP6jBEKcM", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "12h59u6mkMSi4Xpa6F6QKWQwn4oWx1dVxdm3V6noMdzGHmxx", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "1gSTtCkVYdRatZWTSVU2Y1kMtgMWji4HLSxnRUbXy4ij9yK", - "status": "waiting", - "commission": "500000000", - "blocked": false - }, - { - "address": "16AKntJZW3cCcnRK1ww3Y9t71Y2k7ufkTnhjeSUk6dxkyZyB", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "156dG94Rcq61HVrn6Ndx33NysDimutzAq7j5Mz7yo2Hxf6wh", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "112CoSmozcyQv7BNJ1fqm7G11tnBAanWjwsFrvwWpYJsUuh1", - "status": "waiting", - "commission": "5000000", - "blocked": false - }, - { - "address": "1brNvj8Y6pYTKQGitEHbL237PmV2XZvFhpw5QiUcGbSoYDq", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12pRpKrKXRyG6QSYX9gnvjMM4a8JPQ8nGzB8wNNY5sN7GGwA", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "13Sz7qMcuSD1syDc8oKqZvUXJZc8G4DqKGbGz1H9VJWig2ja", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "123T8JG9KU7XJRAmX2tuEr2roDxZJSbpuZCDjnCe6CPr9NXJ", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1xgB6seaZbH1v7GnK686iiNcqafPyGa3KexabQSSFhQcfAy", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "13wroNHV6aJEkUFJEx4NYv7kv5vgq4HypLAPSz347VVQbYj3", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15wnPRex2QwgWNCMRVSqgqp2syDn8Gf6LPGGabRhA8zoohpt", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "14u3rkMLJEuuoPG2kbtok5FbNNdaHrR246yDfK9jG9JKVPJx", - "status": "waiting", - "commission": "50000000", - "blocked": true - }, - { - "address": "15kuNHFsYC2EFrCQc18s5edg2XFDiASWMUzDTYofar3ageni", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "13agGwdvkkrUbjiR1BMptgxYXbPQNVqDFPRGu7wAHRb8Wj4M", - "status": "active", - "commission": "1", - "blocked": false - }, - { - "address": "1Nizd4U2Ncw4CFuZxaT6PbX6JLB2s9mEWfGGoGY8fJRVAvv", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "12aunVU3BWgMk4zPhpGdjfWPN3rFaB6TTAoteP9FejTWE5rM", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "13uwV8CBHjv25W3GACLPzzvTu2v9USc2yCQdhrqPhyM3vx6w", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "12sfQom6mHWJPoW6RV48cZYv4ffUVmDHWKfU1uh57MUgCFcW", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "13mK8AssyPekT5cFuYQ7ijKNXcjHPq8Gnx6TxF5eFCAwoLQ", - "status": "active", - "commission": "40000000", - "blocked": false - }, - { - "address": "15iNLmx4wzAF5MR8tZn7q5KeGrnLbSssd7UNBfxFTJAAAb76", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "147sNiboCGb2B4TCBwKW3vz8faCx9fh9kQsxRjvLyjJmduZE", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15qomv8YFTpHrbiJKicP4oXfxRDyG4XEHZH7jdfJScnw2xnV", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "12713bbq45c66CN9AD7yusSXWE1kY91DcMpjVcB2rXqZKy2w", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "14aAaj2oHD4qQvSdGdV138Mr7Sr3jT5qXNWGzAyMUBfsysJC", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16RfWatcKzDUqYyGKifUhHDcossWumW7bkyiX9fEMN77WKA", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "145QiuMq8w1vBVXfwDVFxUSchdRZ6W1tTGb1uZ45TcoUskRC", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "14bGpFntaPUgoSNdXeU99ddPH8RvHfZRic1dCcQBwnNuJwwr", - "status": "active", - "commission": "1", - "blocked": false - }, - { - "address": "16Dgcx1qJzp8kme1CWsySDf3JWd1oKtbChYVm2yAYqM44woY", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "12DvzVED8odXuDrrk4izuFKit2uFgpXrfSoXApLq7NjqfrLc", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13RENAu9cpMpxp3EYzWFGpZXgvMZGDrnconYugNdynQz1sDQ", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "14GWn7pAANNyuADH9bV4gTiJCQKAi6kQu3gZdisxymWHWyWp", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12L5m9htNsUP58mBHFXcsABDSCohhX2J4nMuY9TrJHNLCssQ", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15qtTjVnfFs1DqAbUJBX4N74k7mAbXiPwww8qiWFXbpUoB4y", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "16AmqsMpCwJXYQCNRmnkG8g1t2LaQu63MVvxEvQQGgdQ5Ywk", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "1A2ATy1FEu5yQ9ZzghPLsRckPQ7XLmq5MJQYcTvGnxGvCho", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "16KjnbCmBXqT3R956sHak7THsgQZ9Ek8ibnG1sFyCNtfJ8y", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "12TaRwyKkyiAc2hMGqfYAwNcrWyXBfne7teFbvkiuufNzuwb", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "13ougYD2SRkn88L14XiYCJc3mL7AzWoAMVdn1FwLumV49LjU", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "155PUcH3apN6ZENAfW7kduwTKU3KqnnfcFDHWhnjcJw4zgVE", - "status": "waiting", - "commission": "50000000", - "blocked": true - }, - { - "address": "1zugcabYjgfQdMLC3cAzQ8tJZMo45tMnGpivpAzpxB4CZyK", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "15Gmh5c2JJ6VVfZpAsw82RfdPob3g2ALcxxDysNjdNGjoWQC", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1HjWQTK8xe8xncukmcwUvQLTXRdfMW6aruMn5kXLDwMim2P", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "15omhU2Gi3ounztEznJ9Bj49dvoPhSi9wN1M7uoniTt9F72d", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13xa7rCYpABL4WvisHhzkwMtzKbEy8hoFDoXJU8efKqrCUPu", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "15DTQ79EyVadDbSK2cB3Q7ALM9d9RYumf5CU8kga1WPCC5G9", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "13zTxDKSGvP8zHr4R1b2bCmJaMPg9a1X7U6LSnkeLEdWSvtB", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12ZKgiVzygpYvvVR3hXMDysNTmX4GLzMqtGrZY3rmwLcCdiT", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "15ALKNeS2c2JE3cW5LGpCp734afhzLCi17wax1UVbDeG4yMo", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "12Ktn2Y5YbrvHgsVdizTKzAryMc41PttpFE3AH9iTSQTdaMf", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1QtS58VE3x1XoVRmEjBibqEff3XWjdK6fqQKw2gLwzFgDTc", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "1xdwfgYK3Tnpn4pdXkG5wMdbsKKgj84es1GbyiQvNNrawtx", - "status": "waiting", - "commission": "30000000", - "blocked": true - }, - { - "address": "14fyGoTVyiDRSoJP5qXjuXU9hiVUPXMuXYugA8BjHJg979eY", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "158KiRt1ue86wzYRDfy9CKZvkhNBzdFTL1po8bE2eo3wRkVC", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "139QeschFEpjMJECamzcMtAWewV7VsvbaRXMUbzN5yARfHCe", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13Qh1MjFX8C31GguPGzzQT6PqUEGfrBkdsVXqHyx7k6PJmEF", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "1RsqWYLNuHr9fw961TBABLM4R76mZSZEZv3ohWeiNE6Pixb", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "16fPzNBxAUva9W3L8VyWhUuMkWE2HLvdjJwCP1qpgYbu4sJA", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13iPW4pSokbEQWomqZhwsyrMWuNspt6R1YnuCHXqUVvFYM1H", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "16Miri6rQEdt7r8z3psokmwYcFdGxLYDW6KrCbMRVPcnWdJ5", - "status": "waiting", - "commission": "140000000", - "blocked": true - }, - { - "address": "15DgXhXB4ZeyF9PMkUK8k2aGTLqC8qnTpQikcVqGTdUjWhFm", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15DrUZpBdedSxGwTRG6k35kkJezho54PA837eJ45d6j6fTkT", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "1155dDdp1X4F3rh35hAMoK8r4iDVdzprtRpVrScP35YPC2b", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "15QbBVsKoTnshpY7tvntziYYSTD2FyUR15xPiMdpkpJDUygh", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "14bMb6TJGX7pS8aZb9ayFZ5LLfwnSG1YbSRdLFSbqoow4ZzP", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "13afjaPfjhFwS5YSmdvuMpLVTpsCGFJ1MJ155zu7nxSsa5kt", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "158ihFTX2xr96UW4kRfEm4Cbm219swtzUT52GemqDrvGhmwx", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "16AUtxRZDD8cVKwBQBTdsnFgWrnyvi6AJgmQYN91PhYAKJjX", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "13wxjPuajyJrHcBabsgoD7oqL1mJhFVWjeXFxEvMbSBY9xn9", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13gQZWtAVc3v55wEpNfQR1VrDgEhNQdFr7x6q8pK5mW51Rn5", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "17bR6rzVsVrzVJS1hM4dSJU43z2MUmz7ZDpPLh8y2fqVg7m", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15qhbgGE4xrmzawwQPHcD57MuuqixTdq99idSvwmppfWJHAa", - "status": "active", - "commission": "45000000", - "blocked": true - }, - { - "address": "16GRmk9cb48j4DNuZmufhWpmo2Kv55LiJP39aMyfWKcTp8YH", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "15Sf82YbMQjtpgnExXFxzrwTsAXJKHVU9tzQV6WizAPo1dfL", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "16P6nQ6oigiaVm3GwvSLsNgDhmVpy23YRU5TiRPeQGShjRsi", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "16Ma3suDhT8TkTWffpPaS8sMFn2K6rEqddVJY4QCCUSj2J5J", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "165myM9dENxSvm9XjBQ82Mgd4xsGcADc7bkS537JAR6mSvq9", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "161kZAmiB7X5eZFxcVn2uaXUqq8HMHwyat6fMYdxcB75oPf7", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12bUkY5nrGyoXqBpxKDf88z5VQWzaUK83PCgyHtJ1UN1ujjU", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "14VmnsCzx1MzSt2x69xDj3DKbBYeaPtuZBT6rwDVCYJNdfoA", - "status": "waiting", - "commission": "0", - "blocked": false - }, - { - "address": "14d71bbo4vrVXV3QGUunCdXqoXYCG2xPJY2S1EDDnTj78Ath", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "13nmvNGGE93Vi49wdmdhZqdFGyBAR5bfm9qEZpxnX9LJSDmb", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "138fgCNfybZ6BYbBb6b9kbkS4J4KnCXHpPFYue1EGnVSkyaf", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "157uG3dxLhejwEY1huP2njDEp6MUKuM5YcEhVSMmHrX15jzS", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "1KmtAWkiVGRdMB9mBV6JVAcRw7ce8tZKY3L5ZH7uTNK4yMx", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1bDDSXZxgniZ1cmQRtD7v1NwRd9qDHGtGMLuuY8q7eZEBMF", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "1eU1WMiUCBTxuCoVSE1HMQ4YyqfWuTfL9eX573cc3GCP5ow", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "123VugBRFMqUEFviSYrG3ewdZ46ZmqxjmRaGY6BvakfdPVaG", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "15qf74EAddQEsWeKTvGk8xFVgx1zgZD71NTEM2ztDb9qws7d", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "14zoBYVu4yy2Uatp1oLBYbwwUYdzbSFVTf2kKSrCUmkEcCLs", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13TBraYSRLejaxxMqAYFQ87RNPoCy3c4LTE3Y7FKq4qcFEqf", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "1U3SRGexTgwQgaKHGFgFvAF1FLMqKUHCSPtAgGUuZ3En6T8", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "16PUFLHexBvLGZFu6HRmCEXHDh6KWmtfpGrAqTHKJsBTaZ8U", - "status": "active", - "commission": "35000000", - "blocked": true - }, - { - "address": "16ALG7wV7j1nUExAY8LYwxQxVwrMEoW2tqPRjKgbfX1ZNgZU", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15P7yHcMoNXMW76EVWgKwSRapdJCdbHwp7EA63KrT5NfggW3", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "15PcFYqF2HeLbgChHPCpGEz7K9ShVMjGypKWoHZW494xjjBf", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1ZLNgh4G3A7RtVv218BXF7wxUxm9wCQ1Wk8R8378j42jb1R", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "1edsjLpqQ4QxtgLPP5xQiNNkjzKcXuaNmUQ6vc944J1jQAa", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1php1QhFeBvoZxuDF32kGLhrJ5w1eJuSCuftDW3uujd8kB5", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "14V4VgVBUz9mqvHxXA5n4VmXETmmo9cx6pXivqQmikRyy4YB", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "121prvYjM2TszZdz25gtPmpufxpBHy47N7RuFZd67Ly18qVd", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "15pvcq2xjsEHD8bpnqhpodQQ99K4fKZf8AF3nVuNhdigujw5", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "16CwGV9RNGQMb1whyNQ2i4bwtEoniUyWEuaxBjvNWcegezWB", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "164nz4vJEvNGH8ujptukVzNQXEep9Smx6icLcWGZKvTnohVs", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "14dffMjf4Ec1RwCLHp21CifU6CX4hVnZtRCKgc6AGCt9K4v9", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "15wepZh1jWNqxBjsgErm8HmYiE21n79c5krQJeTsYAjHddeM", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "14kpNbU4XjEHfYdqp95Gq3NkBWbgFd6J8Yjd2SneWNzvf1Yp", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "15FjuTJQ2tzqYzCaExrUqXPG45HaMMdsWZLZDQbWwRJLMcUF", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "14AbuiHSAJZLTacXnckSXq4CisK9X112ZT48x9uvJPxKXBmg", - "status": "waiting", - "commission": "120000000", - "blocked": false - }, - { - "address": "12iqwZGB2sguEhjFi2ZRuWWixU8mHJnSiP1pwDefqGsBy4rV", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "1zugcarJnZ4ft2PiJoGg6DgmZjnKNBrcKTFrAzhGPCX6bJ5", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "13d8SdTpYGAiaB4PsES6ZNsdgWSxdGDPka89PYLZhzdMFV1X", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "121rFLaSsNH4FxetHBGkdQie8jWY3eE8aYv8qDvbNvQvKkjZ", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "15w5VAYZS3CKHFWHqMJo4kvyHDRAMEPu4sENrk5AY7KRfFZs", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "15VmD6BNi4wZHyXaqJ3dxT6BiiSPKZ8vFcxb8hCKmLvVAyfQ", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16WysSfNfFvNhVM372TPKrVkEx1YRzpKdqNRatZ4zWUH1rwC", - "status": "waiting", - "commission": "30000000", - "blocked": true - }, - { - "address": "1Ks98VYd7ZoRzFxWctQtFTghM6vL69g6MpEYp1D5c5w1iXr", - "status": "waiting", - "commission": "30000000", - "blocked": true - }, - { - "address": "15MUBwP6dyVw5CXF9PjSSv7SdXQuDSwjX86v1kBodCSWVR7c", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "138tCNoHg9QbhjqanRS7R8ZC8547A6CdaSmrCtJCRLpjQk6r", - "status": "active", - "commission": "0", - "blocked": false - }, - { - "address": "14r3Pgm2P1MuwBDXNcjq5ZshMYcQEpc3aTnSVUtQNhJ8Hnua", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "1iyDF3iHuNjTNuQS7XEqMSdvx4CrdaxK6kLhpMCBc9rKumm", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "1h2JtSy1YkzGyx2jPYt2Nk27AckAs74sSSHMcBFZneVzc8T", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "19K3AKAkcrVWcXrXCXJ1fbaySuo58kUXhpsh7gBpa6emdgz", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15zGS7UDQq5sPJPW5vZAppGsmMBuDSUqNnG6NY4RYhu5C7ix", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "13KokWVFbAfmAwi3FzTPfXvxVSXNerf8hrHvDC8pKitzDdiF", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "12QTG1GrqFtS6AJWw4NwHDXgbhPyjyT6BfJK5qAGedkvnrpQ", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "14YdmoUXEbd5vgEyL7sLmWAx4BZmTe9jS7CcLFhkxY9r5HpG", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16hWLHbxMwucyrzpWcEMGQtVzXY4rBtyYTRhPix5rJeeKT8N", - "status": "active", - "commission": "350000000", - "blocked": false - }, - { - "address": "14WAVMT53PQ4RM25xVPoQBL9ozLNwFBXiryqvuKipM9J4TwT", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "15JmHuEEGoQNrgF3xfSiEkBjq6Bn1wQFa8yepjyGvR9g1Bgg", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "157zaRVMj8eAfdie8jDe2z11Xh4nFu3E4SRUja3Zu113igP1", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "15SBhxZo6vtsCByTancARYT62UHdsxfv32szGu66NCDzdczJ", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16A9nLc3SXvbv7x1NUGL9zWjitQ27JWmKoc6yrUYhMsF8tGC", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "13xJtGmTZTLziqetbu2xrQKgiEG4fyGg74FvmYCjxtJT3k3b", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "145SvVXoAwR5ufJynYWDeNXzfyxbf5VkCqkHu3Jt7FSdYBE2", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "15x21oPqRLeVakTN3grGB82HZ92ELqbnzE9W2wc3CHRreefB", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "139J8svWogi6Xbn4rfYnCBCwh7CQj6hRxmSaZQMhTGsB81s1", - "status": "active", - "commission": "1", - "blocked": false - }, - { - "address": "1ArdZJtNUrZsfidfn1t69xHaSWwzf6PQNdLEUpcnVmbkZc5", - "status": "active", - "commission": "9000000", - "blocked": false - }, - { - "address": "1zugcagDxgkJtPQ4cMReSwXUbhQPGgtDEmFdHaaoHAhkKhU", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "16GDRhRYxk42paoK6TfHAqWej8PdDDUwdDazjv4bAn4KGNeb", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "16LeeYdZ9aDaAsTkt4NywHWpZHrT9i2nQCcmeRf2oetQBxpS", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1mkA5D3hsnmVSpVFPYMrS73tRbTWzfoyKUwgy74QMSUgyLf", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "13ond4N8gejhNeYFxAiCtDymHvgsyQMW3L2kvKMEPtmvi3Cu", - "status": "waiting", - "commission": "70000000", - "blocked": false - }, - { - "address": "15KQ7wL7XvhAgMhK5XjUqyR4A41hXx6ZQAe1UqX5eUNXSmpD", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "12hDY96BctWXcrTDAhrzHzFgdLs2qLyKAbFiktJQyvm94onU", - "status": "waiting", - "commission": "8000000", - "blocked": false - }, - { - "address": "15V7kggXFSr79BcLRsxxonx19B1kMRGyR4FtyYYuNiKvynnr", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "129TM37DNpyJqtRYYimSMp8aQZ8QW7Jg3b4qtSrRqjgAChQf", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "1zugca8p9rquswKkHtVKmzR6Z8R9PAmj8MGL1x3HArdAp1J", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "16SpacegeUTft9v3ts27CEC3tJaxgvE4uZeCctThFH3Vb24p", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "167ShbHu769mP5jbtt7AHayJhzEied6s8M5kN5nBSAQewnRz", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "15KDFYfFjdqhp3MDFEtHuyu9kLpXbT7k1zjx78MphViFdCaU", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "16P5hTGEMLMh49rbeHLtuncqPdkLEPoRAVtSTo4g6KJapKSN", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "13R1EqJ7wsZgAyEALDHMScLazdqPibgjUbRmVbf3UoZYLCqt", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "13BjZTpwEtPMcHrEbqxpgS8mz44cwv31UgyXoVM2uggSHKAT", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15zcvgPw9redZ359tZYfTLzCkCdLXcR1broanT7XBfcNc1j6", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "1sAkfdTH3cHAdJRYqMPNdeV7GhTKrddvMfkQrm3pQBABWrN", - "status": "active", - "commission": "7000000", - "blocked": false - }, - { - "address": "143sLK2EhGxfs7LjeB8q9Cc55Bmp2VhvHnKzEjBQiHwaKogL", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "152ZUcifBLGL9UgF3McaxkcLn2z4MxYWbRHTAMyv9qob9MWh", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "12eRgJAAxrcikqRby3tqxykQZfJ9UXjhKGpaVR3KumUi9VSp", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "1vkbVR4rndYRU9miZC2k2xGiqdiq6R41iGDTHJwoz6a2DKg", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14PnEHmpqAJfBm5Nc95nCy6tdW5YozQwkXVEc7BjnANjGLXm", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "14mub2yVK2D1JHKBC1sVtapfpFS3hawSLfHzTkKhwYMgPDCZ", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "15iZKK7DxcPKVsQDhvtXU2X2cbnKFtArcWdJN5MZ3Ms9EWi5", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14m2QAeBxWoZxvSWE2SwBa3dWb3Pb7eGBdYycnurPVMoCNY8", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "15AiY4wFzW12e9w5YSryP7Crsb8DJnX7SGmrmpYLtL6SXsny", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "13ujcqQ7UscipiqpKwihmCBzBLTQ13kYR1nPA59ANAFYS6HE", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12MuskpoaEq2ceda27cggfPCrnH25vC853pHPZ8etP588ESH", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "13T2eJChf9qqULJdctSkwX7oFa5qhMzApeN1t5tUvXaxFyE9", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "14Qw2ptHYqxR98tWtfbcghQvd86k5H2WYYYpGZN1c7zf3trE", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "16ccn3xe5tAeR8kvzCRTcqHZjMJHvuF2pnLfTqyF1EmMusCU", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "128cG9CRYUL8XRzB8n53jjfb1iJ2FasrMdrTVHjKguqg5CPS", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "15drCUvFMiWvy1YfkU6xgENxRzmFXDaqQFpjUwR5nu11DHu3", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "136gLKJd6CtzwwW5sJUy9XHQUkZPNNNpZ1zpkopybjAR79XV", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1123RekaPHgWaPL5v9qfsikRemeZdYC4tvKXYuLXwhfT3NKy", - "status": "active", - "commission": "5000000", - "blocked": false - }, - { - "address": "1zugcaiwmKdWsfuubmCMBgKKMLSef2TEC3Gfvv5GxLGTKMN", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15ASn2hhzYBquxFNMf2dF2kKLrgkijGUYqbYeLSuLHX6zLyQ", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "14fiiokuMzrh8DvorHgM1yXt1kDBQwq8AGPyHxQz9JCXkLGQ", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "17T31HJzsoBFkwpje8CqvgUpFGSzAVR3NcaNxacknfHYopx", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "15ym3MDSG4WPABNoEtx2rAzBB1EYWJDWbWYpNg1BwuWRAQcY", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "16K5HDyq7MqLGBV7gCTZbLef81n7WF5CzGdLuX6LxGZbFXou", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "15D26tyJ2EC5JUupSmUU3fZgdcTiFjDd6L3AivJcHLKB5T9J", - "status": "waiting", - "commission": "500000000", - "blocked": false - }, - { - "address": "13BTaSYfmStoAKjCh7UzTV3cE47aPi2ruyNujaz4szbyVLpA", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "15TFYgkh93qeEDAcZpmEcKSbRwC1VuJt8X2HVMgpt1MiuCPp", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "12UKciN33b5Thw4aiMxhewRNmWWH6vQPmaUtHC5ta1SBt6VZ", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "14zy72LYvcMiUzsacFSR1xzQsG84Pujby98LvWSVtzSiS3ti", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15fMqfNt5i2yz1Nq6fHAbmLokfbWfDbuTFZoLxv2RZkWpDTu", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "12uT5wrkGedBiKLfPRZaSVdaoKQfpnQyLRHgB65cJHH3zQn9", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "1ja8qGypM5HT9Rqq6AGQ9z58bSi2kfkrqsGuB84zxdp1SZH", - "status": "waiting", - "commission": "0", - "blocked": false - }, - { - "address": "16UgRGtYLuDWsBvjLLtc6FYVB3qSCV9c4sidcN4zaFm9qCFR", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "1jeB5w8XyBADtgmVmwk2stWpTyfTVWEgLo85tF7gYVxnmSw", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "11VR4pF6c7kfBhfmuwwjWY3FodeYBKWx7ix2rsRCU2q6hqJ", - "status": "active", - "commission": "7000000", - "blocked": false - }, - { - "address": "12TxPQBN99gGwn4g9HRKCjndrnCSv3SuRaCHstk3qmoQuS9L", - "status": "active", - "commission": "40000000", - "blocked": false - }, - { - "address": "12aweZ5yqNHoKHG6yBQhWyY9mxvVpwQ4FNTQ18PPTvFbX2NE", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "148CkH8YBzA1pbudK1bMo2zUMHZwbucBVH8s3utwTS687UiR", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "1bxnxTev14jMGab4QRXeafa7chTRHV7ZZ9e6GrKrrpXAHtM", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "15kXizCQG5qCphnqsZvLax4zG8D9GfKdixsLbPXtP52BBU94", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "123kFHVth2udmM79sn3RPQ81HukrQWCxA1vmTWkGHSvkR4k1", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "16MdN3hamVZ5UZn2T1Y6FxV4rR9J6vHu1scWh93ZSrvsfgku", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "1xzAes4aS1EK2hDBcuK3ZSrwvH4Hn4b5hs6aKrsoC8scLGK", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "12ucP6hMrNJ5AmpAfvJ5LedsbdCbWQMJMH15D96N4KSMfar8", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14XefeqDxiaVQEo7Xv7WBs3Wz8GZPes7DBjQxsNuxu683B9o", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "16cT2wjqq18WJdNwzeDvm57GgiQHhaQeWCrA5ZUPyKhyujtF", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "1LSvoFpnspPhvwgJ1GLLT4SRHBmWXwXE26JHiiZJ4RKxHqC", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "14aWupX88TM23UCmUTx69S9x9r7JNTLUZ4oprbdwy2s2xWyJ", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "1567C3iuit53D5TaiySC6jYuJzDtJcgSV6vEkxu5x6wrVBTa", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "13mscy5wfYAmDBgLoA43rkWGpR1PJApcGtXJt8NvtMcM9VAr", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "131Y21vAVYxm7f5xtaV3NydJRpig3CqyvjTyFM8gMpRbFH1T", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "12RQNDk26vMkhk2prtCAjisuuKxPRftffdF6VZmoMnSJwkBR", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "12VYdJfVizmqvYG45qrA2YHjcjPehGJvwy2PRCZG1RnzPtAL", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15uEJbTiJ95LW5NDU4TC5QD74GckqVXVNT1cwdGtCiguY4Rv", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "15xZLy5xssjWq83PWa71wSisUVizoAD5ZruiWeY7L1LWN5dg", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13Emjax1tBfQMEKisppTMMe7jMbqpmCH1jRpTXudLocaevND", - "status": "waiting", - "commission": "0", - "blocked": false - }, - { - "address": "1TunGctS5HELfuJZjd5qBNoMVsST2EBdMw5vWK8f3dCFbq9", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "14ghKTz5mjZPgGYvgVC9VnFw1HYZmmsnYvSSHFgFTJfMvwQS", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "15QAsdJBhMQB7jL9bTVtQPNB5FUJW7igqw8Sq8eqtP51K4hL", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "13g1AaHPagg11TAfzYuBzy6U1BmzfjP53Z71WBtEqPtghfMA", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "14rMkNfbNVjJqnBSmAbrALZnSrrnmL6ahr5nehbKFcnuDHyb", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12Yo8LQiJLoviSS6tWV98pvNVnhfjtQ1cqjE94q6Dn1d4e3F", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "13woBCoYsoB7mF4RkFWDsfpcXwCbiZATom3jar14FzQWtAvQ", - "status": "waiting", - "commission": "500000000", - "blocked": false - }, - { - "address": "15ML93PH72j5fFfqLrXRy7uDh7pUBCTUcSVYbaDV18LaTfeW", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "1zugcapmWWedvWwyvX6yb52w4SK6VbDw6uhYCqfYHaUAWnh", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "13Nd71b9XLWNptAcSgesGMKJctpm1uLjZBWDfVdeA6oyXdg6", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15Ppahb9NfCEyYYSrYXTKXuFoLssuxUqccdE49yBcs5kU723", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "12uqiMnVAmuz6MhSVHyYzKeZuSneDK1Jga9yP6Zfnjs8yZFQ", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "15BZW721S3fzMYT8vY3Dt2sVXNTECqwHQ1bNUM8q4fi7EVcc", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "1HMQVknF2rGz2vBegqA9jU4NhZKQtW7nZTDQykgeSm8FgPa", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "12GtV7u2vJYRDU3CntYQj1Pud88agafAotrMhpe19Z2AfKv9", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "12FB3Rj2CKWFzrZTUrFsz7tzKqGiMDig1tgUZ17TrkkTJhpv", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "15SFeGFNnZtLbM2u6MqJ4UfrgM84Sa45NKr5ZehLgU1iMHv", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "12LCH7wmj8LAa4bXLq1iQnDbeZZfE9AUjvP7xqDNiR87fLdp", - "status": "active", - "commission": "350000000", - "blocked": false - }, - { - "address": "15koMvYRHfSB4U2smwRQvKo6jd275Rdf8wS7TSkAe5yxbZsk", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "13QPp7NpcgPGFY8k5t5pcN2bSZXrubvwGd4piV6bu5LGczyU", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14j7YcVqpfiZwbrPuwMfcKWuY176cKN1SMHVSZvT7yrfhbnt", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "12x3EG6dvZv9h3sLNaEFd4z2q8259tNgiEU6vismjrEZjbzN", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16SCPst6Wo9Xw4AGps3USQp8u45H2h56FnLGF4HTLwQeMBjc", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "1ZyhbSPMDMMuveHErhmd4XR4YK7r23E1kwn1RQzhp2EnSme", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "16eybSNRCCJ7eHn2FFxdTir8EtcWv6mRpPBzccn28eyCoieB", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1RJP5i7zuyBLtgGTMCD9oF8zQMTQvfc4zpKNsVxfvTKdHmr", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "14i61mrUnaYZZD19v9uZ7MPudxNGP84SNEitammFPNuFArkA", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "12H9Z3sFVqALmBLp3NTbQ2kmSghMzXgM8x86jzRncqsx9mkz", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16JvJXLPySkFtH48aYhnCrpdsbFsMFB9ERtEWuXFmRxQrwx5", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "13rG5oK2qskxP27mjUEyn1YbrmzpCV6fbBVcnBUd8Y7sQX6Z", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "12rKtTb6MQ9pcwrrc4SS5b7yiJ7X1fe5vxmbCroVvfUkLXQo", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "144mEFX4Cj9KTdbjS5w2iFrjwyhFnDrEJfXU2VNFa7EaUfgw", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "12babejKnR6tmpTGj1RFR8S67qku2WAj1bfyF9FNPAWJXaFU", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "15fU523Wq5BCt2NWAmrCU6p8nFB29uVifeG7bwYJHbw5Mmd9", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "16ZrzTmq8yZ3Mq4LQZxQAaoNx4fStAp9neH8M62iNYks87bv", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "1zugcavJYzi2KErZy9CMbLANhfrFwMESgPz9q29eUCR5gTW", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "152krXgH7wEo7HDcdnir48vGqtNbtKHBH6BD6yYM6e4V9LZw", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15B3UVXPRp3yS2gU7GogS41mwoT2fTL1KaNYPF7eMVjjWZJJ", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "13u4sYVA2SeTNth9LcmsT8QHyudJAjm5b9fuBMDW4kYgQ9yH", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12YVhYTtGpTCSXRvPHyNjDK7y5p4J52ppBVJGjWh2PGrUe9r", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "1KvdmdzAUWU71GFq5JdqNaknbddPJzwSRSkScsPjW2Mv9Fq", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15XvGmoR6NqAPoV86yDGMDkvU8PCtYGJoywGq1AFcwF6Y2qy", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14zkWcFyhADd2RgdGm8RMoATNNCaWiQwZXcLbSQ4ivEbwLxP", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "12ud6X3HTfWmV6rYZxiFo6f6QEDc1FF74k91vF76AmCDMT4j", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "16A1zLQ3KjMnxch1NAU44hoijFK3fHUjqb11bVgcHCfoj9z3", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "143XCiQMmvh7y6YB1MF3umY6Fy8Fzd36UgGb7teTxiEuvfmZ", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "19KaPfHSSjv4soqNW1tqPMwAnSGmG3pGydPzrPvaNLXLFDZ", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16YwUZyLdeAoe4KmhivGwuuJpBH1US4qkUtXK2V83MVXUy6x", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "1Kmfp4pKbspNG94nLgUzdoz526uMh9RojCNoFKr1GXrgodo", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1737bipUqNUHYjUB5HCezyYqto5ZjFiMSXNAX8fWktnD5AS", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "16k5kPkBCMi89e1a9yGZGT4gHJW5H4KUQ5eVqPc8PGPxhi1K", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "14oxWC7QDs4DzWUjtiV85AKxDJfL4RpyQUAeGwRQWUTSN1Cj", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "126ti7e6DNcJJXCzV8KqgAZ5esuE3Pu5VWSdcvreZWa47TVw", - "status": "waiting", - "commission": "360000000", - "blocked": false - }, - { - "address": "12j9meADnMWXSumgPJtJf1pbL9di3XTzXdNvEy1yznRcQuJP", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "133EMnuUGgQN1yCkSZJ28RmkkgY6eTP24EoB4aws5mGB2FpG", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "121uoqZWdrvkh5xx4UTe7Wq3e9AZtaFLnG8vH2JcWQnHFrK4", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "15GAZsLr6X2vhDjcpnztFZuYibAemzVw2i8VYBb42VHJhcZB", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "14dTZLAwhcBennygERRS5tXnWVAHq3e12LoCoHrQsmDd4X4H", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "14DCwC1uGJjRdVLgqNbVkoGU8rooUx9WG7fWzC1Nn6g5yc5T", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1zugcabTuN7rs1bFYb33gRemtg67i4Mvp1twW85nQKiwhwQ", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "14fcsJbrR7MQfUMJmb7NKpE2shVRyko17rt2PcaY4HKthQg", - "status": "active", - "commission": "5000000", - "blocked": false - }, - { - "address": "12EdfY5dp5vLGuiSdQ2cT3NXjDBVATx74qoX41D5wBsadBat", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "15iA5hpjUecWBbf38Nfegwmtyux25o3LrGaNodfZDxq5nXXE", - "status": "active", - "commission": "20000000", - "blocked": false - }, - { - "address": "143bj6p3rQeoC1RuWEgZNu2pbwaQtdhiwX28599EdqvCSPmb", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "12KDtuktAqh4zeyWHJyZ6W531ceZqLmDUBuQEu4KeaGNnVHu", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16FjomLcXwdbZiN4AtoZ7qfV6Bh35xJ6xpzRr7P3kJSM9ybo", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "145dwwgdP5uAikujstMTMngez4Sap9kvFPFAVkSAFoNWes9F", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1627VVB5gtHiseCV8ZdffF7P3bWrLMkU92Q6u3LsG8tGuB63", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "12zYASSMxE7CJpWkCPaR6tqKzD8xHM6aWDYecECqr2BMXLT7", - "status": "waiting", - "commission": "50000000", - "blocked": true - }, - { - "address": "1X8p3KgPYTMf6296omDtMsgCBVXwsWo5NvDBDChniyEPL74", - "status": "waiting", - "commission": "35000000", - "blocked": true - }, - { - "address": "15BNTyFjDxEN6vzMB1d4DLeYS8gjW6GpHZRRHrYx9bKM4uU6", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "13gJhYAWEuZomHsp7nBushCwqizG5ZPXoNZ2Z9hP5dynmcnJ", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "13bRirNoyWD3iEF9yHvua5QBoeYjSSEFmZ7bhoryTH5NkGue", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15JUQodJ9iM6M6D6gWM5bdcgHLtemnUctGiR13tAfyrHjXFJ", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "12Pb8EcNTp9TQzNM73xh9GpYc4yZAPBEn7CVytQAqYsP65uq", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "1CQh6CLJdzkFrbGPim4N48ZGz42VHyPyEFFHnUvB4FrwJmL", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "16SDUqoRr6f8DAyKhYWvo9dwFPdJHeFXFr1may1vhomqqPTQ", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "1ErLJn1cgVLfRRpEa1draaZF7ronq2VP3zEvpf75dWj5Bre", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12jBKTExAPTLsJEPqp9nPha2vmuP4KK2aLPQ8cUwZ5GMtXkp", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "1gYP3iNJY3iNNtgmMdRcZXJruc9SqruknuBdQ3TbtpBM7xK", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "14dqJWMDRpM1Q3MibmYjFKYKVZpfqUdRaDtKyxLS5DBGumZy", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16LqH1hCcMYu1GedZuh6sKHpVYW77BBCM8hr5unS8Lk2Zu4G", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "16VVhErhwncZjgz6Mgx391G8jbHaXspBNLh8Q3V5WK1vWF9J", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12ryLNrg44r7Qv7oWZa2wK6PuzUmAMueyVHRBsyR5N6anEaV", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "14Meq7tN9RRkZCKiztmYLp3fMBFkftzfyFQNQrcyc619hgx5", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14rqNrqMwNK9YA1BSqRStNBUqGgwxKdysoL4dNQ8GH8LRcrq", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12kfhcuKzM1WMwweyz3inYeYivufQguWVqkCh8Qz98JHKz7Q", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "12spgf8bYd3tGgRWuTq3rCL6Xfgrkfvb5G5k1obbYs6SGH2W", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "15gGqrf9YsAyC3hrgTExZH1NNKGVdhp1H3DfyijR2ojAvDyF", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13uifUNALuwqiHZADQb2hrpwnL8kmawjqykx4yN661Tv7mR", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "1KQS1Tsk9oKrTJ6u5vJs7bF3Zh8JqceZSuUkaAdJ1DZxoPN", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "139FVSnE8hkd1vVJmECkAsKeLyAJrS6kKq5TxTJbDEq1YvRc", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12K8JbZbnxziawW6RnkniQ9rM1g5vnx1iZqQ6adgyz3Uk1zk", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15MS9CHMMRtM5NQax9rAh2HTbmAehVdpEPMf4UzsBL6Mn6mz", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "14PnsLeTyovxc5SNR1n29izokA9ZLVjW7mDi71HribZDeppz", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13bWcF6VD6gjpGeHeF5nWmY8qWPBXLMymuvJZHrtLmgQtcuC", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16mHow6qH5ZDQfbvWENdwxEBN3oV3xwkHetRffCjEHFJ2YWi", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15vUnTtXK5BAv8UkEn7NMfYUVHp8Fr5EFburmL6CR7fhPyaU", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16cdSZUq7kxq6mtoVMWmYXo62FnNGT9jzWjVRUg87CpL9pxP", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "121gZtuuG6sq3BZp1UKg8oRLRZvp89SAYSxXypwDJjaSRJR5", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "13EAmr66rhEEXD8mq5wiqvJ2aHibBYebF1ys9JRi1qyVjQyk", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "13zEhzmZ29etGbhCvxZqKwkRkJ5UyeBnrDqQAUsqwHVVVisL", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "12zTFfxSi1oa2cgSGHavuZctowWXkyukgSq7H8AV169hXdPj", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "14ices1G5qTmqhMfDVBECh4jotNDGTLu8fhE9YktWT3cLF2F", - "status": "active", - "commission": "15000000", - "blocked": false - }, - { - "address": "12e5iFDMe4DuBMRmQtRg5yzCc3vc6ZueSUZiF9sxMBRP1Q9r", - "status": "active", - "commission": "45000000", - "blocked": true - }, - { - "address": "16mrcAndMguy3wqfuLNubgxxeyWQHjYAdqRbj26Vb2gYtszK", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "16ipvgdXuEEnbC4d5RQA8FmhaoeJoJt8gvCqbGaRCFz5QvP", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "14m7VDz8PUe35Agvt1Z4ymxzR5fnKxfnGM9wT2WdtoYEtFQ4", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "16adfEUBgeaAi9CcuzzfCGoMQW1pzTZEbx9Cx4HfXF1G68nm", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "13N7R5rP3gtz3W4uDEQBVddXf5HE9V3CsAibuxUjCr6UWjwA", - "status": "active", - "commission": "1", - "blocked": false - }, - { - "address": "12sXNc4UZ3rqU8VexeYbffGsBxDD9GWV6CsnLxbmbzzUJDEJ", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "167Upkf8NpuCMorKmdcKex1VeRhCqCuXcxRzc9BLsqh1kBER", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "1RG5T6zGY4XovW75mTgpH6Bx7Y6uwwMmPToMCJSdMwdm4EW", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "124YFXA3XoRs9Epcx3aRUSk3EKYaznocqMWfrMKtGjx8TJ2W", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "114SUbKCXjmb9czpWTtS3JANSmNRwVa4mmsMrWYpRG1kDH5", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12bLdVAgWiKHgFHtAaQstasMUWVq35oG9iwHCwsKoFFNoNrk", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "12C8CffSFabw8kx8AJaJ7Spnm54iktTjzW6mcYuLr4ZwAFdS", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "15cfSaBcTxNr8rV59cbhdMNCRagFr3GE6B3zZRsCp4QHHKPu", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "14AakQ4jAmr2ytcrhfmaiHMpj5F9cR6wK1jRrdfC3N1oTbUz", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "13jagnVH4vS6a5XD1xixGA4zUxgjkZ9h8dbQDVCDZYR6rS9m", - "status": "active", - "commission": "1", - "blocked": false - }, - { - "address": "12YFWxpS32wTZq4HcH28HMR5atkGhxzfD7aNjhTCu5Vyz9J9", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "15TE1pbNpxc9KPxygAu8xaGn5iqmXXpCJhEKrv6MpDi17ajk", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "16aXLhFh9mZoyW5emqZM6fJWTqbWENGrJkAoGwtR1S8XoFwY", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "13bAubRyg3fAtQFNqHiiuQD6ia3JBvXja13dDRfaVRHqDq2X", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "13fqhWQCqTHTPbU1fyvbz9Ua3NC47fVVexYuNQRBwpSeZyKM", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14QBQABMSFBsT3pDTaEQdshq7ZLmhzKiae2weZH45pw5ErYu", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "16zgGRrNMKBfz5CGJgvAmkavER9T8syxVBELqVA8SMLP3gm", - "status": "active", - "commission": "28000000", - "blocked": false - }, - { - "address": "13KfCAozVFBySpWLmksr4rjfeSRGX8r5u9UeqgFvPJ4s4ikP", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15dEbKrzyw8Hwb7KkZHYKgCaPQGxnMgWm2EXb1zh6DmRKX22", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "1y6CPLgccsysCEii3M7jQF834GZsz9A3HMcZz3w7RjGPpBL", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "13e8KMQZHJkGDrMT3W2vbNLGJ4ZNEudvVuZbXQybd4RkfuQW", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14WLfLvnZgZYWi1xiN5bJB6Tok6QcLiN5uSqLm3dqGCMFPvb", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "16SQ2fPAjhU6W7H22WWdSRrwyNSx6M51F3xC4GS5HW7w1AXF", - "status": "active", - "commission": "35000000", - "blocked": true - }, - { - "address": "13sULqZ2NidBvrocYwJYxT6WJkcSY77SiQXtFiJHsurTZgqN", - "status": "active", - "commission": "0", - "blocked": false - }, - { - "address": "16DswM6QWrqvtH8CTxhv9j5EWdkLkvzQucL3woJbLLrFZ9wa", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15wznkm7fMaJLFaw7B8KrJWkNcWsDziyTKVjrpPhRLMyXsr5", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "13dTRkoKWSDbZpcDtrNMW1uzns1ZKBmAUSzcp5vvpFRjuH1S", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "13Q5v2kmjLCfRbcV5TQNkshPERSBVsoodFgZQakdPJsZKaMc", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14g5vMTk5CR9ZUM4Ji2jkwTHuycmUJthEYCYUfj8mQLSks4p", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "15MgmRSU1GUrhvSSYbrky6FU9vwmHYCfeKS7UwcJxaTAhHtX", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12n2oZdbZFGEpePco2gxmXfHt6FkGaqRT1oeGduADuHmZZFq", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13v7qn69K6y3LPeYXhxjyhvwCMXA3JizyEJKksPb1aLcuU1R", - "status": "active", - "commission": "20000000", - "blocked": false - }, - { - "address": "14JGqoxTz4V16jXx4vBpwL5u9CZuByRgZtj7FGiuqWhh6nQj", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "15rfaPEqaJyiQXPFoALYrR3inB2FEVuYhaHYgC7ExcgcPwYU", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "13dADwBtYmjGqjZTdYJ61H8WqLLe4eZiY9hjVPLJQ76DHUp8", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "13NBcMRRqss2Xi1orxATzHbVX39Ng9R2fyQ6VLRs4nJegLCZ", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "1q5QgXCsasUtjvwq8ByT5QPivNgidUSR55c4kFJnjKSiF4q", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "15p4wTCaY2tggjfHc62FGmXr9wuLgmK5PnZW1kWKhsqKm88H", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "12ErBetb4FWp3992tXET1GtHrTW3TdhUXsnQd5zDuF9WaxYV", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "11uMPbeaEDJhUxzU4ZfWW9VQEsryP9XqFcNRfPdYda6aFWJ", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15oKi7HoBQbwwdQc47k71q4sJJWnu5opn1pqoGx4NAEYZSHs", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15BMv7ZwBLyuttHPKvFMc7fTcYM6C5zezHxyZScyMdyddyie", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "1jbUHVCrwyKtUmoCZ4sJousx1og8aoP1HEyFcAW6xvdKYCU", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "148rDSmafc89EaFPaBjUrVSUzd5mHsCYH7ScDff3kqkN8Gip", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1ei39mGT2pHgduaXPESVfZJAjdEJZ6JnFbt3uWA5tarT4He", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "15kp911Z4kmzYsER56mnjnGabzqVWaYxPqn6A2Jp9yRiVmnH", - "status": "waiting", - "commission": "60000000", - "blocked": false - }, - { - "address": "13xMdu77bqK4XDVxPRomi69QAkDcf4ZCsiJuf3FCW1eG1CGG", - "status": "waiting", - "commission": "30000000", - "blocked": true - }, - { - "address": "1QNkyKDqdjYn3vHiSLwXPT5hMgy12W4BinGe5Z3sQVxqJaA", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "14wDWhXn2kNC1zpNJEUXgYg1vWVGM6xFhvJRGJzDoqqPZrbW", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15xn6gRCCB28TbNMQr4jpQ6pTTmqZ2PAkmfYz9tDaTwncMh", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "13BeUcLu7hzSTaoKpEtpdqiXKZz6yVfT9exKH6JuTW8RQQvJ", - "status": "active", - "commission": "20000000", - "blocked": false - }, - { - "address": "131bRoBPU1uUT7nyDqvi7bqMWPzrhMLrscmjpPXvfeFXyo5X", - "status": "waiting", - "commission": "35000000", - "blocked": true - }, - { - "address": "15kTtv8sRYJgx8PZAyVrQHFwyceakumBH3WprBWDUR23T4uW", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "14wmyxKwc1prq2oKcBeFVFhY4NiPRoxic357jgW6nqqyBzCB", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "16FGsSq3GCRZ31pA6gphPGXDwTr6zv8deSpLQz9zrvGWPe6s", - "status": "waiting", - "commission": "5000000", - "blocked": false - }, - { - "address": "16Zjo9bK3ubRrZCjwEkotG3fk4ka69TKQbPbUAJedHhMFYoH", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "126yb6VXrVQ6dYMbcEvy9yKFoAPKmLQmqkXYzabv3wEo293b", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "1scioGhw4gEtZP94gYyRDupmKaDUdEsohuecWoVrNB5q8ec", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "12R2eXcE2QhMa9BkMsWktt9wmoxbgiQBDG9YUM1p94r2F5UD", - "status": "active", - "commission": "4600000", - "blocked": false - }, - { - "address": "158fogEu2vf8VdWPhEkPZTkZziC8AvRBoFEYqzmsFgsaYZTa", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "136a4dn4RD3MHgM7k8isUgEL6rdpriuRT7pHaiW1mfVD2P28", - "status": "active", - "commission": "35000000", - "blocked": true - }, - { - "address": "12RXTLiaYh59PokjZVhQvKzcfBEB5CvDnjKKUmDUotzcTH3S", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "15VDoUubQzR9CGtuqbNpFavJ6FHC4uvdjMvUaSpe9mnVAJuT", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "14YEkQjfqQqWy8ckNsgbH4CiwTLMKEMgzYPSfgBRNocwDigB", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "123tW2XkkkA23FPcPikULPtYARWkztBKVE7fv2k48FgPV15q", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "1zugcaj4mBMu7EULN4rafT5UTfBjbvqaoypZyxWa3io6qJS", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "12gkhA8JEz8ywmVj1tsVafSp9C4saKzSofgMwBJcmFJAGUVX", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "16DJbUVKFJp6igLoDxCTPesE2DMgMmiawLXG9jsGpYNTshxt", - "status": "active", - "commission": "15000000", - "blocked": false - }, - { - "address": "1hchSbMVTPrxmMuuCQQ2dkZnUcWLwNHcuU4C5RR9raKkfXh", - "status": "active", - "commission": "1", - "blocked": false - }, - { - "address": "129NZ32Hxpq42QyTLW1mywHFFzYkAxiVZxYrHFLrhz9Z4yjr", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1guBaaUmYpYPmsNmooQApqFmpmRHeaipb1CxoncMuiaqXGh", - "status": "active", - "commission": "1", - "blocked": false - }, - { - "address": "12pZQvd4DsC1GQgaujxCPosv25teZRJsjcYRGQKH9teTZ7nw", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "13bCTo1PNcdX2nY7Nrnrn4Bz2nBWWcNDbPLmFf3FhiavMkfC", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "1zugcagg7BHZzexiKiHPedkdVNv5GYwE21MLpuP3cjpcwCT", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "15MLn9YQaHZ4GMkhK3qXqR5iGGSdULyJ995ctjeBgFRseyi6", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "12iyk5eDsjzKYPVrtduC4WNoCGynHHbjirv6gGpXPERkGYw8", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "13mz9ZNxhBhRPFCw8D2mHeyGdZU2RJ5ZGHFLmfKfCHci2Wvj", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12xteUu27nj8zxMJnQyaZyrChrN9USPh3vR1w5GnB7Ur2mUR", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "19djyrFjus2sd7u5wkaz2xsFkctXskDziUSfxRmm46DJ67N", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15tfUt4iQNjMyhZiJGBf4EpETE2KqtW1nfJwbBT1MvWjvcK9", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "12ECDEb18Wiy4MoLn3NTM5zhJfDfpS4mLNvjHpcEr8ogGrMZ", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "13Srw7dVtGJnZrV3o6RCAJ97MaGbSKShQQiSYjbGp4Jvu4Cs", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "1QrpZw6vcB5i24hzacHn4BsRx3isCqYbZcRUuegPqm9nHnq", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1F7Xgr5VM5RiYmkCxS1xWH6GbcBgSA5Jpq1H6XpXnxFJ5KH", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1Z4D8m5LsN8VzzexAxxQtFoDyW3R4hv6MNiqCVd5uuzc4gR", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14E5oijQt2PJo4MLtCVemjLVuAAu3hf1myeHVFsMoKNFcUpF", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13usWtLF5J6KqeqkkRnNZqrKv2nPJJjLiJKau3nx6hHbWykC", - "status": "waiting", - "commission": "40000000", - "blocked": false - }, - { - "address": "15obLH9MxzvqKHyb5JpSxku4KsejjvuWn1tiRVBGCZ3HfT1H", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1zurWXfmErC3hpcrJt32wUD6VyWzDfdGDrmgaoGioY5euwo", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "1ZVP61Y4pFV5XqfrW6HXA8qAxsaN34aqFsFEidB8cMvdEkV", - "status": "active", - "commission": "45000000", - "blocked": true - }, - { - "address": "15siBogFbrM2FUiYVtGQajTTsBq6GP2GKhbQzHZYXK3FRFKr", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "1jTGbLG6Ps9y26Lt9H12jKmvWCXE7o7i1ji7cZhuMbDQa5u", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "163BmbjpXzPyzQWhFBW2ghLT1gErMTiuFdR5NQEADybDTrAR", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "146GMtFQgu1vWuBdCWGaJR9KrBC77Y3sRPDFJucR1BzPcZki", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "15M1146TPz478GuwVMxnFApEXhwReTfuPxenD1qDbLuTZAd6", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16gxSXJyRkWUiFuMYURSQRHCHRiQvNAUDxXLehZcqizFkE6R", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15EA9PhxDtVmWp9CN4VAiB8ABahKM2j3MhRFis41b39ghRqK", - "status": "waiting", - "commission": "30000000", - "blocked": true - }, - { - "address": "13SRcrvGsN474GrjgW8YydonT9UxhoK24Ndvcc6Sm41p5io5", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "1E5Sq4tX9mbUVBDxjrNbzHzhZpWbWMSRmJxVikJqJovJgKV", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12dcw2zLV55dhmLc2FQwDsNWSmWBes9jWseqek7DSZxEEWxr", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14V72dFeQ8E3cQN2DFu7LjCYEjEW8ufsK3HhXXwrMaVThopf", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "1vTaLKEyj2Wn9xEkUGixBkVXJAd4pzDgXzz9CuVjhVqhHRQ", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "1y3bTaJiiTbyp8run4WG7XKrqZC7Zxw1AZVAeyNXj48ybhW", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "12oyrzYfsjH1SMJ4oydkibQNeS6k8uzk5DbymP8YkkJpaYbF", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13JtGDhV9eViRwDcK2krMt4YA7itENsxPLAm7mvXStv5eTrW", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14wFkAiTSxhUUdpkN37QMhZv6dYcURJVgSGwqDRd4TK2qhrL", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "149BBzx5gSQVzHmtsWT1JZBZLvS2Nu3AMQngBzFBVVKU78de", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "1Ehsfg3Jn79wVogKcKc1URBYDY9EoijVxiQ3fYWU1XxY8YA", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "14jJmGR9T65WQNpaNS38sy3RPs25HKWfSBRnTqw84sDyGWV", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12HC5RsJcPRNhemZ1dixD2f4MWCQUFzem6YDNNrqS9jz9off", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "15MYgThgMfKf9Dz1TV1UC1RBiA8xDNYoGbKkkvXNtah8yACC", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "19MDWWzc5nBTroVSN8cQFYkSC1x6ZYJ7s1846Ff5MKdutuh", - "status": "active", - "commission": "35000000", - "blocked": true - }, - { - "address": "165VtFs6qEWeSHDsNp6fNmQDm6fviLSzWGJFhKuaGvk6PMYS", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "13xZwV54UbBm6tZfJMBxkPH9LZLqDbq387w4R2qrii69Dgjg", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "168CakdikhdJAyNkDqaPMontvC5k14xVjc2dbGeGyGCbkHzo", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "138SnSYhxMUyAafW7QVnBxHiZtEjQXA1zbbE8jUayJ8e2Fer", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12DsYUto9AcKA4kRz1yLcGh13CTLe7LbUjDkMS8ZY8rCK4rn", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "14gR76wiFhWSuzftMCmkJDJLW6MZg2r78RUz4KLBrBFbgTR9", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15tomnGm9HsBVNJSpVntLxsH8rbSiAiaucVxjiv42xREmsw2", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1QmHs5E9zGeJ2iGZMYoBdYKvNLfF316WGi7GvGtSruUJzW9", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "1c7kE43pyc9DMh6AEEj1gxH6snPnTQNLyHVdZbozNVaEkfR", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13MqUAZVA2KEy3EChkzuVqdwPpe51DbmzDhLtxaca596W5S4", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "1LQhqj9PNZFyWNfepRpwmiPubQv6BpNzNRLGJy3QQMoqAEx", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "12YoHxjJLj6Qv9q8BU84k3emBDR1dbnGsdgq2vf5kv53JmpX", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "1d6po5LATxuHeAUTSRd61LGA6QWJ7dJRzi852kojKFLbL3t", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "14dcFGfWhzn32PWf6g5d6A6dDPUZdssEv2fCuouydd6Rc4Aq", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "1zugcaxRrQDr7ktb6SpjVMkywys2ysoZWBfUfs9CDPwFVHC", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "1567ec4zAYzqaSyashaepeUNpDwDJemWSYV8PsPVGukLFHuF", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "13Hp4FEF7z7famvakw8cgioHqDxcnhnyQkvd1jF4dxn7cayG", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "16DH4pJRCswEBUtW2jcp652PmRjm5EQWs5Wi5M636yfm2DYi", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14JduFfQDZ4cYmNoqFcfJPNetErCWYDnqCPqP1PVDz6hJZAW", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "14MDvXHcSfZXacZR3nvbS4XYgpWi2dY65BnthsUnMZU6R1kH", - "status": "active", - "commission": "1", - "blocked": false - }, - { - "address": "12VrKadF7gX1AfZmL7Ny4vU5CBPiZ3VBxkzF6doBMb7MaQXZ", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "1341kcAXqyA5ZJHBdPoLeHsDtmqLBZ2qm5Hu7e9tDR9Jv5RM", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "14KURZimLn51YJ7a6CZSiQdyAQQdxFJykbK3G8pnUfDB6XMv", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1429tQ2RK8xCwiVYYw7YVUFGX2rbASQN2maMExay7x18neoZ", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "1KVAfuinq8Y4H4goeiVxdNUJfK8hiME9tq83a16kh4JEyan", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14muArNrdJovje5CcRmdzvtbfnCqVdphfVKaokZvsRC18qXL", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "14oTqhVovqnamxu2SiP79WfJMvhRRwiF4d2Hjs25d4SDQNjJ", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "155CFLBnr2WN3PziGZCgjfY9gmrWBK8LagSzyQwxh1viH6fu", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "1465x17offrfUNDGZTahX8aRybbpcmDfKuRQYtSqcfFvEpvi", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12zQwS7c2oWQ91kTXSDCwUj8gvZb1rccSzKikcBxBivRdAwk", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "13GsRbLi36WtAjEwyA6r7TThg2QA6JvAVVPDB8q767P1Ad8Q", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "15rGBBEWWDVk9wRYaj9okQ8JFeLduWtkKsjvu9rWCjz7SPBV", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "13BfS9YkhpvFms17oXCEjRA7pfXjjLh63twrEy2MiU6MkAe5", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "16LReiXssAN4ZcnDwph7Tt1UvZrUKWFh7EAjNXKpreVLPybi", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "167ztZ25Y121GHs2o841TAnYuX1Q25Adw6MeaPPXE2xKRnb3", - "status": "active", - "commission": "1", - "blocked": true - }, - { - "address": "14rquPS4qr7yBHRAAV7KcwsMCsTvP5Kgspzry218cXyyL2vM", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1KSsKAbCmnAheLRMr6pQ3kUnLDhMtn3dVwwy3cSYHf5t3hz", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "13xUAQ2pNrddNgLyPz6agvSrwnbmUaviXLXNnQxNfk39AyzV", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "12RVY2KvBCyBuKXNEpjqWVFaePhURwubBXqcyXKsEKdhhujG", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1KvmDU738aReuE8La7wvVcJSTcnVf9ZU9YmWUK8QpHVeLX2", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "135gdB6m5XsPWdtS7Np9ZTRdnMuLcR78CvyiQrHsMk8ESijp", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "15BQ1wUA4ycSS7ydCbVU2DaSPBt5xsZPK8Wmty5U7gaq7gtL", - "status": "waiting", - "commission": "50000000", - "blocked": true - }, - { - "address": "12uHpa5VLMW2kqnc7EPauggWhhapncBz4FtB6VpFSDNPdi8y", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1yHi5zxx5d5RBFg7ekfFoPnoaD8W2wmQqNN6crDr4RKUphP", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "1vP68Adjn7JW7brJJc89V7R4hAXPtJr3FzKuJF1qm6uyzWt", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "14rieJCRXz6BjKp4fdh6xiPjPX8dMzVLbmZZUrRY4qpTM821", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "14r7Zxpc3t57ThNjPaFrzv2g8GGCaZiSk87geGXqUXeUXFfe", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "16QH9tYa8Som1eHmyiHCnM5MHGV7mCRcEuV8nzcgLbG4B2UT", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "16DsskUPMGtFMEcQwU4YZYyfGUDQJ8HnLNhvc5Q58zwu34L2", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12GTt3pfM3SjTU6UL6dQ3SMgMSvdw94PnRoF6osU6hPvxbUZ", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "162tJdpDKWQZEwXEaNJKPSJiSyJtsv7wYGxYrreaTAXtvhK3", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "148iQ9Sn9Je1RRNm9kcJudHyVyTZJkYDQ5sRyRe1v3i6AJKj", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14oRxBkBvuPrEba7MfwQsXEbUcHU2GJxZceRMwtCbHHgSKR4", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "1CZdvokFgBMfU2Fjv2tE9HCbjq3tNbTgpW4bXKVciAN53NH", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "136ZJZx1yw5L79XHfdodejKbd1gm1SwMVb6JQqAfU3X7NJ2T", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15AubFCkcJrwVijWNmR66MFDyZzoq5zaVZi4mdaesLNniYWf", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "14jAZAV6p4gcRC3HgB7wY63C98pVjcgh6tLkQGTkB2JeoeNK", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "1ZHNWmKsVHCS528yKDteRPpnx5hTrGUZvyjEpvaWppKDiPt", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16hwkvDGzdLLyaZ9CyPfwg85ijEAJUoHKxKSu6oSfDVyZm9j", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "13K6QTYBPMUFTbhZzqToKcfCiWbt4wDPHr3rUPyUessiPR61", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "16Us8m3Q5dZ1qDntFj3Qwa2nPw1ptKfUButMukJVpU8UiDL8", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "14m7kzwtWpAMAioNx6VRVvSoE534URpiZQp38s2EszgbswgQ", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "14aD1tQavhRi9eB6SZ2JNoTFiW1RpGtavFANwrfQnT1B7t6D", - "status": "active", - "commission": "1", - "blocked": false - }, - { - "address": "1486kNkPxvF7Pmgfr4MskGnn4p4KXCigMejv5Q7szMowioKK", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "13gVeT6Yhy9BWV6VrRuqS54Tk9ZY8PH32sbw9fPS4oWw7Pjg", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "16kudAMmCPELNwV4Lh7JRhiQHu9AhGxLDwjChCXRrA7VhaFk", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "126QitTKJ393GUKdTDYjwmSKixFDghmJZ6HBZfy3gVWVqFGs", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13f1iU967VsBeRxueqs9zrJV6JZ1EmEP6A1QTatThBcYbxqE", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "16ZbWXQiBGgWfpKZ51ic5bMQHfVbWS6LdFjxce62aYBaBWcJ", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "1W7CrXX5DE9SM3A4XP8zdhGq6EXWXonCtDmtrS8XgQJwuVm", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "134493oxkFuEiGx47AMnZZQGLrkrYLNquBXxdH9Krty16MDe", - "status": "active", - "commission": "45000000", - "blocked": true - }, - { - "address": "1eUd9JA8bLHHLWtrokB5HjHXQwYG9E4j8c4LFtvB7GQe7Q4", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1zugcaxcGLmRb6wFpftx99sYRSQihqq6KLTThimEkYsaSoq", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "1HdZ9haA6b7u7iE1bjwV5L4x9DKKaL3yGZy2qVEqNLgZoHB", - "status": "waiting", - "commission": "40000000", - "blocked": false - }, - { - "address": "167TCdKoazoysFCmbBmhivuXjZCpdaxhWjwRREdmnykpzJXt", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "13VUefWScvmVkPFgNcup5XMpRy4ez9LMtCTi1kRhWpy5AiZk", - "status": "active", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1WcL9LDnsdHS8UL8bGPqXcaJR8CJwWcfp6NW7FckkihHWop", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "13g1ypDWPNjjGKLQNMtLFiXLhBWvLxMDzPZJNik2cfD3NDBs", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "13uBxESEQZ63cKu4LtLNdHX7CYkokh5iiJryJSA2A2AZenJQ", - "status": "active", - "commission": "1", - "blocked": false - }, - { - "address": "1x5csusiEYbr5fwjqbYiwjsDdcHwnjZA9U6JHUQTpzm9okt", - "status": "waiting", - "commission": "750000000", - "blocked": false - }, - { - "address": "14dZ6AbsCRmppwyJERtyKg5UicgsXcRqGAHpRdZtnNucLHVV", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "1zugcapKRuHy2C1PceJxTvXWiq6FHEDm2xa5XSU7KYP3rJE", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "12GhpQVBoKw8srmjn3y3de8Fx67wMRghAXYBnz7wPvgg2yYn", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15zH8tbFxyBgvkAdF3UWSfykAXADbS32vJuYRHTkZJ15Y4jd", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "13EWPQ17GJTdBvA4FoAgq9mf8nwsH4cpahjn7fuAG3Xed72q", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12NtnFySs1LGLzvJPRB5mRkoXXhs3ErEYimfGkBLXSRCcQtS", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14KHzXAZ5admFLXdgbEGpSjCGxiePniHRDM6t5r4o8kbYV7P", - "status": "active", - "commission": "20000000", - "blocked": false - }, - { - "address": "15axLPDtT6kYX2pQh7WBSX1nvJowk8rbRxEWwgeVS5Qh9nRG", - "status": "waiting", - "commission": "50000000", - "blocked": true - }, - { - "address": "14G5CirqQfbbvGi6exv4jq6ZHFknYL5Br6kxmrmr7CpPQrgt", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "14fYaR5PPdhw3x2PdEKYFnCkRSpwjytpb39XzYWbHDeJBRup", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1ZKHNRib33noQn1FpjFsPCHuVYUfci5TXy4Lif1FcUUwZe6", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1413DEcy31nBpzFN5XZeHv6i4iDECDkFs6pRcjp8H9fqSx98", - "status": "active", - "commission": "45000000", - "blocked": true - }, - { - "address": "12MzfGCFfAAFJAZWc2RiG1MzTu8G6qs2CPi1xMvFeeWRRoLX", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15x1gKGjYQQi42D4ER8Wvn4gGDQn8FBTqU9faBum27CCsLQY", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "12p35sCgyNZTmcknCuXhapLr3NpYmHxYRgArr399dNzqMqba", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "1WL7pizkoiwHMzyb3Jg4cpsH2egt9ZnhtboSTftD3Q4X17W", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15BeWFXGDfrbZLMjuLoC6DmFvbS5rM3EHpUW9CwaAa5itYua", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12h4jeQtjecPx2MyrXmMpQLBumAPxHgGiL7vFoaLkgVBQCNJ", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "139MMfwzrHyveFAuCS5SUaZG85qwM66pRnvoKyST3gd9Ao1F", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "1zugcaijqkP5yUpK9rKjKVKbkk6woUcnmH7XgMFMftfBhXq", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "14rzUwqFaqEYcC5QmPscEDWNBptorzYkd5wjS2ToL7g93n6s", - "status": "active", - "commission": "45000000", - "blocked": true - }, - { - "address": "15yWjJfhPwiBECjVezPTA42EFpcrxmRUjzPN6nf3azvZ5wDX", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "13Q48Ep3PVpvXA1BeVcUhNJerLshsaeq4EdgPUHnemqJYmND", - "status": "active", - "commission": "10000000", - "blocked": false - }, - { - "address": "1t2uphWMfZpu9N64zYbD4TP21CH4NH7Yj6LAAJWEKDJXu7Y", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "129o9rYvETVNXW3mLSioZYmb2DieN1uwPKHJUJVNUYiZovBd", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1zijcwLdu95adCJU7yjpHeZfoHZvSq1ANURorAwFH36mnis", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "13pUwN63nYY3yd2fzhJqK2XjrPqmQTnYBkqnaRmK1H4qgM3i", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16Y8tre9CdNTiLpJ42VSjf8nmYHMziN3YshgZHtYbSKGbFwy", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "15vgF71w3fRJrie8Y8NScfvqV9yNKKkw2nrFwzbJvVoDzuq6", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "14Bc4vwBpfZbvphNzLu2ZUs7p9rLeYcssHG4EBKMKpxnXxhF", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "141FXbEYs6vTwjN82h8zD8JGDNZW1qqgTt8KphUB1FqWG3BQ", - "status": "active", - "commission": "1000000000", - "blocked": true - }, - { - "address": "12WRpiUFDZ1GjksnpmBL3EzT2jz2TZ7QHhUTqoubhYPQ7PAZ", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "1MrurrNb4VTrRJUXT6fGxHFdmwwscqHZUFkMistMsP8k5Nk", - "status": "waiting", - "commission": "40000000", - "blocked": false - }, - { - "address": "16M2yFjnsde81MG5ynrL1AFz4cev9boVPu4KkRZyiLyczZwX", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "15R1Th3ULXAq81QPGeEDfE1ywbw19AjZiARxH7czm83wS2w2", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "13ujCsf3t2YAdAhcpcEFVoJAPRYzMLHUHEnLroQp41sJCSnm", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "15iue6kZxn7LbKyD8UeGKAYux2bnMAsXebmfK9amYsaXYfBz", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "13EQui1GQSq6ibmyTAh2YWUvdPYdjNaDn8FWqo9xwEaDi9qq", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13jN7oYuc8TBcUwGjpjbSghvPE8DdEuArvjvymqTCB6Vkguc", - "status": "active", - "commission": "7000000", - "blocked": false - }, - { - "address": "141NH4UNM8n2FTXw1i54PrYnuWtvdg7nTsfvZnbMDu4EW5H7", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "144i3MsnDSGAi5F4XsfRe8kSS7Sy2hfbXaydgnN1UGW1vsQ", - "status": "active", - "commission": "20000000", - "blocked": false - }, - { - "address": "155tk9HmeJGsNZtA5LFasSCGZCdpAb2P2Gs6ej9JeP38sAww", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "14MQRooUhpmy6WNjpeXR3grZP229ihaxovGtSce1n3cm99uH", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "12xedMA9ZJFe6Ui5VDYML3PsCde2LbhUzEYEPyCgFRcJvfRB", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "1zugcaaaDTLhG77kp7PBPpWiaUWTND9oKNcNM94StNStnuw", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "16ervPpbDEnPTHwzh564ZSyfm13MZzkYkYf6UD3YPho2yfDj", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "15XKGYj2HNVSxDpvsrKUwkDiaKYArcP7qTBvZRBzwgvjTvSX", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "16A4n4UQqgxw5ndeehPjUAobDNmuX2bBoPXVKj4xTe16ktRN", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "1Y2D4qp5Sm9SPKZhaoN6jRoA5b7PFR3njaZLJygeNUjjr3X", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "16hzCDgyqnm1tskDccVWqxDVXYDLgdrrpC4Guxu3gPgLe5ib", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1HDgY7vpDjafR5NM8dbwm1b3Rrs4zATuSCHHbe7YgpKUKFw", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14MPt3EoUSKKhRtSvvCFFGw4o6GYZ5J1dtYpM2j75RsRmcE3", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "157wUw3289QR7E2bMnVUxzwMYQX69S14kuYWARVYs4d8YEdt", - "status": "active", - "commission": "1000000000", - "blocked": true - }, - { - "address": "1Z1KSJjbg5ub8ci4tQRcT6PYoMqnG4WKuhBeXzhdMj3HH47", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1ngMQVEqj9Dm1RNUxAQTNeBwePyKq8rXcM5x3bT2KqgFZ5n", - "status": "active", - "commission": "1000000000", - "blocked": true - }, - { - "address": "15XtoWwkanySeWKduwoLGjJPCXTRdCDMfa5UKF2KvG7wmekj", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "13fzMjvds2bN8qd8h3a4WonPgWH8U8EsetbbDr2poi6TD2TS", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "149NeZPEhMBJ5pUpeVu2LfMTAtXX4yw9UMRQL4r4rovFMbWD", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "14VWEJDSWfHyuTSwErEXxFaiCW3i2gf2NPRkZ5igx6rnmqFd", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1EzqNHr9YZjfHeCXvFrTLt1a814EAf3WBw8BDZBoHP1zvDn", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15PhKsje5DLm5CWqRhFz1YeS3WA94Ui8xMcihfFjbCPidisS", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "13J6LkvsEtdZpvRwUMVNbag26md9ycmGe5PM8UnEokhL6Tgk", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "12Ggk8WY7jHt1xi8admtpJJ4vV6HQpJUQWN21odnyxFpNDBW", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "15BVHZCc1azw47rsKCW4oPL4KL3reHmLfPEHTb4W37XGMt63", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "1gBKvQ9vbraAfhxEroBnxoGp9687Hu5wR7NYSwgJeAsw4x8", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "1KPeYhx2k2D4Fy7iw9CSykbTYN1UbtYxHpBceL85xQhAJdo", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "1vRNR4nicdV1LbxGWJg15Lr4ZL3tn8e5bwbP1LNqAwQWdiH", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "16faUtGhiGAYPqsyL4nYyvCd7ePiJ6aYzQEvrErtX9wZDPK7", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "148BLkq2vaSp4k3uRzg3kVWywLbkDFshrppr8refUaVR4VEZ", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16M3oPL7NAsaDyumZs84XmjhYRPLKA8jbVN8N4FNECZ1KSKy", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "155oJCFBZhc4WBmUTjY8kNTZZ1XGYNi8Tw6X1sNmqsU9XKfc", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16iaGoy9CDoAaguhjPfZ7xmMn14abDmLk3PDSCrVvTmn3Gjo", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1xsSvZudWSgr65zhRzeHrHHKVzRizHMdbmDKGCkSD5UXJYE", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "152cdecr7tagcB2t63dvjBnxV5j7YDW8PpbfX7orXj6ZQFWG", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "1EheUmzB58Y26i8hse4EJo9ffG3M5qmhHzrFXJMQLkY9HoX", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "16ZuZrRbAk4gXDDeFpuhkGtuoCRSv5myNEGTWqsU7KisBRpg", - "status": "active", - "commission": "100000000", - "blocked": false - }, - { - "address": "13wwVdoHmkTqdM7nYtp9ez9K2Y8xfgDuH5SnqVF8NSmHGVG5", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "13pYWKctR5s8vQuyZt3pxQXue4SRH9coyAS9S9z5HtogAnhs", - "status": "active", - "commission": "50000000", - "blocked": false - }, - { - "address": "15m31T5USFFiQdYw1R5ZDgfrdNDNi3mxoHSbv2bTE3fBBP2W", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "13y1gcRK3GLZy7wzood9je2aZwwcXJMAgQj1ZgGZpFEHJ9Aj", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "12pHJra8Wm8TKmUhVjDJgcWbYQm5q7BPtzm7mmZGaJHBcf7u", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "12NbS8DamkXEi4xu9yUDz8ticuSsMda6rG7bhh2baK9RXX3x", - "status": "active", - "commission": "100000000", - "blocked": true - }, - { - "address": "13JyYJsUmeUUEPcNMa1SJu1yAcymBqWCJuDvuct4BBtbQbJi", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "16Cmm8ZrZMauz7nzKWQvrTu12qznK8z2D8EVeRBfNqzpz4FY", - "status": "active", - "commission": "30000000", - "blocked": false - }, - { - "address": "15SxnRmnSoiXCGpj99RVywJBY4pz3z9v3fgzy5R5ftin8yHH", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "12eKu3VtN7wm2BN8VmuJJvDyJfWNCCQg8QQVcogk5L71wtC3", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "1532FHXPCkWCJKFCDxz3J1SHgXCYyQRhWPAp9cLXvoaxJaRx", - "status": "active", - "commission": "80000000", - "blocked": false - }, - { - "address": "163AJJfUjzonWiSqmGD71iZBPv9Q4VTbjgm6K6NTv9Fvd42p", - "status": "active", - "commission": "50000000", - "blocked": true - }, - { - "address": "135k1YvxzktnPDdzhipBYMEmWGBtmx6cSUE7DBNCUWXXo89z", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13daqiLSUDEQ41cUAT2nEooAEyqZssiaBc8UGcdsW9aBjrw3", - "status": "waiting", - "commission": "45000000", - "blocked": true - }, - { - "address": "13M79SsQnBvAGEJPdDrUVStwMYChH2YatmGG2EZ2i6628N6Q", - "status": "waiting", - "commission": "42690000", - "blocked": false - }, - { - "address": "14WBgUYr1scUwR5rvx7DwgMUhHtdtRyHMkurkU4AZ7wRgFxC", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "167UVcopJ1ZEP72wUyK2dZiTF5sz8VRXVD39eAKkRS12zYJN", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "15gDEmTcPwo76KueixWPzxgQ6sufgSs29XcYByfFYhT8cson", - "status": "waiting", - "commission": "1000000000", - "blocked": false - } - ], - "validatorsToBeChilled": [] -} \ No newline at end of file diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block_10554957.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block/10554957.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block_10554957.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block/10554957.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block_extrinsic_10554957_0.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block/extrinsic_10554957_0.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block_extrinsic_10554957_0.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block/extrinsic_10554957_0.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block_extrinsic_format_rc_10554957_0.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block/extrinsic_format_rc_10554957_0.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block_extrinsic_format_rc_10554957_0.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block/extrinsic_format_rc_10554957_0.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block_extrinsics_raw_10554957.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block/extrinsics_raw_10554957.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block_extrinsics_raw_10554957.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block/extrinsics_raw_10554957.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block_extrinsics_raw_format_rc_10554957.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block/extrinsics_raw_format_rc_10554957.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block_extrinsics_raw_format_rc_10554957.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block/extrinsics_raw_format_rc_10554957.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block_format_rc_10554957.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block/format_rc_10554957.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block_format_rc_10554957.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block/format_rc_10554957.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block_header_10293194.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block/header_10293194.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block_header_10293194.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block/header_10293194.json diff --git a/crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block_header_format_rc_10293194.json b/crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block/header_format_rc_10293194.json similarity index 100% rename from crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block_header_format_rc_10293194.json rename to crates/integration_tests/tests/fixtures/asset-hub-polkadot/use_rc_block/header_format_rc_10293194.json diff --git a/crates/integration_tests/tests/fixtures/coretime-kusama/coretime_info_2000000.json b/crates/integration_tests/tests/fixtures/coretime-kusama/coretime/info_2000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/coretime-kusama/coretime_info_2000000.json rename to crates/integration_tests/tests/fixtures/coretime-kusama/coretime/info_2000000.json diff --git a/crates/integration_tests/tests/fixtures/coretime-kusama/coretime_leases_1000000.json b/crates/integration_tests/tests/fixtures/coretime-kusama/coretime/leases_1000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/coretime-kusama/coretime_leases_1000000.json rename to crates/integration_tests/tests/fixtures/coretime-kusama/coretime/leases_1000000.json diff --git a/crates/integration_tests/tests/fixtures/coretime-kusama/coretime_overview_2000000.json b/crates/integration_tests/tests/fixtures/coretime-kusama/coretime/overview_2000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/coretime-kusama/coretime_overview_2000000.json rename to crates/integration_tests/tests/fixtures/coretime-kusama/coretime/overview_2000000.json diff --git a/crates/integration_tests/tests/fixtures/coretime-kusama/coretime_regions_2789500.json b/crates/integration_tests/tests/fixtures/coretime-kusama/coretime/regions_2789500.json similarity index 100% rename from crates/integration_tests/tests/fixtures/coretime-kusama/coretime_regions_2789500.json rename to crates/integration_tests/tests/fixtures/coretime-kusama/coretime/regions_2789500.json diff --git a/crates/integration_tests/tests/fixtures/coretime-kusama/coretime_renewals_2000000.json b/crates/integration_tests/tests/fixtures/coretime-kusama/coretime/renewals_2000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/coretime-kusama/coretime_renewals_2000000.json rename to crates/integration_tests/tests/fixtures/coretime-kusama/coretime/renewals_2000000.json diff --git a/crates/integration_tests/tests/fixtures/coretime-kusama/coretime_reservations_1000000.json b/crates/integration_tests/tests/fixtures/coretime-kusama/coretime/reservations_1000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/coretime-kusama/coretime_reservations_1000000.json rename to crates/integration_tests/tests/fixtures/coretime-kusama/coretime/reservations_1000000.json diff --git a/crates/integration_tests/tests/fixtures/coretime-polkadot/coretime_info_2000000.json b/crates/integration_tests/tests/fixtures/coretime-polkadot/coretime/info_2000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/coretime-polkadot/coretime_info_2000000.json rename to crates/integration_tests/tests/fixtures/coretime-polkadot/coretime/info_2000000.json diff --git a/crates/integration_tests/tests/fixtures/coretime-polkadot/coretime_leases_1000000.json b/crates/integration_tests/tests/fixtures/coretime-polkadot/coretime/leases_1000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/coretime-polkadot/coretime_leases_1000000.json rename to crates/integration_tests/tests/fixtures/coretime-polkadot/coretime/leases_1000000.json diff --git a/crates/integration_tests/tests/fixtures/coretime-polkadot/coretime_overview_1000000.json b/crates/integration_tests/tests/fixtures/coretime-polkadot/coretime/overview_1000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/coretime-polkadot/coretime_overview_1000000.json rename to crates/integration_tests/tests/fixtures/coretime-polkadot/coretime/overview_1000000.json diff --git a/crates/integration_tests/tests/fixtures/coretime-polkadot/coretime_regions_2289500.json b/crates/integration_tests/tests/fixtures/coretime-polkadot/coretime/regions_2289500.json similarity index 100% rename from crates/integration_tests/tests/fixtures/coretime-polkadot/coretime_regions_2289500.json rename to crates/integration_tests/tests/fixtures/coretime-polkadot/coretime/regions_2289500.json diff --git a/crates/integration_tests/tests/fixtures/coretime-polkadot/coretime_renewals_1000000.json b/crates/integration_tests/tests/fixtures/coretime-polkadot/coretime/renewals_1000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/coretime-polkadot/coretime_renewals_1000000.json rename to crates/integration_tests/tests/fixtures/coretime-polkadot/coretime/renewals_1000000.json diff --git a/crates/integration_tests/tests/fixtures/coretime-polkadot/coretime_reservations_1000000.json b/crates/integration_tests/tests/fixtures/coretime-polkadot/coretime/reservations_1000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/coretime-polkadot/coretime_reservations_1000000.json rename to crates/integration_tests/tests/fixtures/coretime-polkadot/coretime/reservations_1000000.json diff --git a/crates/integration_tests/tests/fixtures/kusama-asset-hub/pallets_assets_events_8000000.json b/crates/integration_tests/tests/fixtures/kusama-asset-hub/pallets_assets_events_8000000.json deleted file mode 100644 index 5b28cb8a0..000000000 --- a/crates/integration_tests/tests/fixtures/kusama-asset-hub/pallets_assets_events_8000000.json +++ /dev/null @@ -1,766 +0,0 @@ -{ - "at": { - "hash": "0xea0442ef1a0f40fac210f64f8d20431cf576ceac14ad219d35d41e07806881f3", - "height": "8000000" - }, - "pallet": "assets", - "palletIndex": "50", - "items": [ - { - "name": "Created", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "creator", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "owner", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - } - ], - "index": "0", - "docs": [ - "Some asset class was created." - ], - "args": [ - "u32", - "AccountId32", - "AccountId32" - ] - }, - { - "name": "Issued", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "owner", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "1", - "docs": [ - "Some assets were issued." - ], - "args": [ - "u32", - "AccountId32", - "u128" - ] - }, - { - "name": "Transferred", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "from", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "to", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "2", - "docs": [ - "Some assets were transferred." - ], - "args": [ - "u32", - "AccountId32", - "AccountId32", - "u128" - ] - }, - { - "name": "Burned", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "owner", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "balance", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "3", - "docs": [ - "Some assets were destroyed." - ], - "args": [ - "u32", - "AccountId32", - "u128" - ] - }, - { - "name": "TeamChanged", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "issuer", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "admin", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "freezer", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - } - ], - "index": "4", - "docs": [ - "The management team changed." - ], - "args": [ - "u32", - "AccountId32", - "AccountId32", - "AccountId32" - ] - }, - { - "name": "OwnerChanged", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "owner", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - } - ], - "index": "5", - "docs": [ - "The owner changed." - ], - "args": [ - "u32", - "AccountId32" - ] - }, - { - "name": "Frozen", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - } - ], - "index": "6", - "docs": [ - "Some account `who` was frozen." - ], - "args": [ - "u32", - "AccountId32" - ] - }, - { - "name": "Thawed", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - } - ], - "index": "7", - "docs": [ - "Some account `who` was thawed." - ], - "args": [ - "u32", - "AccountId32" - ] - }, - { - "name": "AssetFrozen", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - } - ], - "index": "8", - "docs": [ - "Some asset `asset_id` was frozen." - ], - "args": [ - "u32" - ] - }, - { - "name": "AssetThawed", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - } - ], - "index": "9", - "docs": [ - "Some asset `asset_id` was thawed." - ], - "args": [ - "u32" - ] - }, - { - "name": "AccountsDestroyed", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "accounts_destroyed", - "type": "4", - "typeName": "u32", - "docs": [] - }, - { - "name": "accounts_remaining", - "type": "4", - "typeName": "u32", - "docs": [] - } - ], - "index": "10", - "docs": [ - "Accounts were destroyed for given asset." - ], - "args": [ - "u32", - "u32", - "u32" - ] - }, - { - "name": "ApprovalsDestroyed", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "approvals_destroyed", - "type": "4", - "typeName": "u32", - "docs": [] - }, - { - "name": "approvals_remaining", - "type": "4", - "typeName": "u32", - "docs": [] - } - ], - "index": "11", - "docs": [ - "Approvals were destroyed for given asset." - ], - "args": [ - "u32", - "u32", - "u32" - ] - }, - { - "name": "DestructionStarted", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - } - ], - "index": "12", - "docs": [ - "An asset class is in the process of being destroyed." - ], - "args": [ - "u32" - ] - }, - { - "name": "Destroyed", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - } - ], - "index": "13", - "docs": [ - "An asset class was destroyed." - ], - "args": [ - "u32" - ] - }, - { - "name": "ForceCreated", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "owner", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - } - ], - "index": "14", - "docs": [ - "Some asset class was force-created." - ], - "args": [ - "u32", - "AccountId32" - ] - }, - { - "name": "MetadataSet", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "name", - "type": "14", - "typeName": "Vec", - "docs": [] - }, - { - "name": "symbol", - "type": "14", - "typeName": "Vec", - "docs": [] - }, - { - "name": "decimals", - "type": "2", - "typeName": "u8", - "docs": [] - }, - { - "name": "is_frozen", - "type": "8", - "typeName": "bool", - "docs": [] - } - ], - "index": "15", - "docs": [ - "New metadata has been set for an asset." - ], - "args": [ - "u32", - "Bytes", - "Bytes", - "u8", - "bool" - ] - }, - { - "name": "MetadataCleared", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - } - ], - "index": "16", - "docs": [ - "Metadata has been cleared for an asset." - ], - "args": [ - "u32" - ] - }, - { - "name": "ApprovedTransfer", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "source", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "delegate", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "17", - "docs": [ - "(Additional) funds have been approved for transfer to a destination account." - ], - "args": [ - "u32", - "AccountId32", - "AccountId32", - "u128" - ] - }, - { - "name": "ApprovalCancelled", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "owner", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "delegate", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - } - ], - "index": "18", - "docs": [ - "An approval for account `delegate` was cancelled by `owner`." - ], - "args": [ - "u32", - "AccountId32", - "AccountId32" - ] - }, - { - "name": "TransferredApproved", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "owner", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "delegate", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "destination", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "19", - "docs": [ - "An `amount` was transferred in its entirety from `owner` to `destination` by", - "the approved `delegate`." - ], - "args": [ - "u32", - "AccountId32", - "AccountId32", - "AccountId32", - "u128" - ] - }, - { - "name": "AssetStatusChanged", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - } - ], - "index": "20", - "docs": [ - "An asset has had its attributes changed by the `Force` origin." - ], - "args": [ - "u32" - ] - }, - { - "name": "AssetMinBalanceChanged", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "new_min_balance", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "21", - "docs": [ - "The min_balance of an asset has been updated by the asset owner." - ], - "args": [ - "u32", - "u128" - ] - }, - { - "name": "Touched", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "depositor", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - } - ], - "index": "22", - "docs": [ - "Some account `who` was created with a deposit from `depositor`." - ], - "args": [ - "u32", - "AccountId32", - "AccountId32" - ] - }, - { - "name": "Blocked", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - } - ], - "index": "23", - "docs": [ - "Some account `who` was blocked." - ], - "args": [ - "u32", - "AccountId32" - ] - }, - { - "name": "Deposited", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "24", - "docs": [ - "Some assets were deposited (e.g. for transaction fees)." - ], - "args": [ - "u32", - "AccountId32", - "u128" - ] - }, - { - "name": "Withdrawn", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "25", - "docs": [ - "Some assets were withdrawn from the account (e.g. for transaction fees)." - ], - "args": [ - "u32", - "AccountId32", - "u128" - ] - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/kusama-asset-hub/pallets_assets_events_Created_8000000.json b/crates/integration_tests/tests/fixtures/kusama-asset-hub/pallets_assets_events_Created_8000000.json deleted file mode 100644 index 70893956f..000000000 --- a/crates/integration_tests/tests/fixtures/kusama-asset-hub/pallets_assets_events_Created_8000000.json +++ /dev/null @@ -1 +0,0 @@ -{"at":{"hash":"0xea0442ef1a0f40fac210f64f8d20431cf576ceac14ad219d35d41e07806881f3","height":"8000000"},"pallet":"assets","palletIndex":"50","eventItem":"created","metadata":{"name":"Created","fields":[{"name":"asset_id","type":"4","typeName":"T::AssetId","docs":[]},{"name":"creator","type":"0","typeName":"T::AccountId","docs":[]},{"name":"owner","type":"0","typeName":"T::AccountId","docs":[]}],"index":"0","docs":["Some asset class was created."],"args":["u32","AccountId32","AccountId32"]}} \ No newline at end of file diff --git a/crates/integration_tests/tests/fixtures/kusama/blocks_5000000.json b/crates/integration_tests/tests/fixtures/kusama/blocks/5000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/blocks_5000000.json rename to crates/integration_tests/tests/fixtures/kusama/blocks/5000000.json diff --git a/crates/integration_tests/tests/fixtures/kusama/coretime_info_29000000.json b/crates/integration_tests/tests/fixtures/kusama/coretime/info_29000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/coretime_info_29000000.json rename to crates/integration_tests/tests/fixtures/kusama/coretime/info_29000000.json diff --git a/crates/integration_tests/tests/fixtures/kusama/coretime_overview_29000000.json b/crates/integration_tests/tests/fixtures/kusama/coretime/overview_29000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/coretime_overview_29000000.json rename to crates/integration_tests/tests/fixtures/kusama/coretime/overview_29000000.json diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_balances_dispatchables_25000000.json b/crates/integration_tests/tests/fixtures/kusama/pallets/balances/dispatchables_25000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/pallets_balances_dispatchables_25000000.json rename to crates/integration_tests/tests/fixtures/kusama/pallets/balances/dispatchables_25000000.json diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_balances_dispatchables_transfer_allow_death_25000000.json b/crates/integration_tests/tests/fixtures/kusama/pallets/balances/dispatchables_transfer_allow_death_25000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/pallets_balances_dispatchables_transfer_allow_death_25000000.json rename to crates/integration_tests/tests/fixtures/kusama/pallets/balances/dispatchables_transfer_allow_death_25000000.json diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_balances_errors.json b/crates/integration_tests/tests/fixtures/kusama/pallets/balances/errors.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/pallets_balances_errors.json rename to crates/integration_tests/tests/fixtures/kusama/pallets/balances/errors.json diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_balances_errors_24000000.json b/crates/integration_tests/tests/fixtures/kusama/pallets/balances/errors_24000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/pallets_balances_errors_24000000.json rename to crates/integration_tests/tests/fixtures/kusama/pallets/balances/errors_24000000.json diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_balances_errors_InsufficientBalance.json b/crates/integration_tests/tests/fixtures/kusama/pallets/balances/errors_InsufficientBalance.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/pallets_balances_errors_InsufficientBalance.json rename to crates/integration_tests/tests/fixtures/kusama/pallets/balances/errors_InsufficientBalance.json diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_balances_errors_InsufficientBalance_24000000.json b/crates/integration_tests/tests/fixtures/kusama/pallets/balances/errors_InsufficientBalance_24000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/pallets_balances_errors_InsufficientBalance_24000000.json rename to crates/integration_tests/tests/fixtures/kusama/pallets/balances/errors_InsufficientBalance_24000000.json diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_balances_errors_InsufficientBalance_metadata.json b/crates/integration_tests/tests/fixtures/kusama/pallets/balances/errors_InsufficientBalance_metadata.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/pallets_balances_errors_InsufficientBalance_metadata.json rename to crates/integration_tests/tests/fixtures/kusama/pallets/balances/errors_InsufficientBalance_metadata.json diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_balances_errors_onlyIds.json b/crates/integration_tests/tests/fixtures/kusama/pallets/balances/errors_onlyIds.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/pallets_balances_errors_onlyIds.json rename to crates/integration_tests/tests/fixtures/kusama/pallets/balances/errors_onlyIds.json diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_nomination_pools_1_24000000.json b/crates/integration_tests/tests/fixtures/kusama/pallets/nomination_pools/1_24000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/pallets_nomination_pools_1_24000000.json rename to crates/integration_tests/tests/fixtures/kusama/pallets/nomination_pools/1_24000000.json diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_nomination_pools_info_24000000.json b/crates/integration_tests/tests/fixtures/kusama/pallets/nomination_pools/info_24000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/pallets_nomination_pools_info_24000000.json rename to crates/integration_tests/tests/fixtures/kusama/pallets/nomination_pools/info_24000000.json diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_on_going_referenda_25000000.json b/crates/integration_tests/tests/fixtures/kusama/pallets/referenda/on_going_25000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/pallets_on_going_referenda_25000000.json rename to crates/integration_tests/tests/fixtures/kusama/pallets/referenda/on_going_25000000.json diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_staking_storage_bonded_25000000.json b/crates/integration_tests/tests/fixtures/kusama/pallets/staking/storage_bonded_25000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/pallets_staking_storage_bonded_25000000.json rename to crates/integration_tests/tests/fixtures/kusama/pallets/staking/storage_bonded_25000000.json diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_staking_storage_validatorcount_25000000.json b/crates/integration_tests/tests/fixtures/kusama/pallets/staking/storage_validatorcount_25000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/pallets_staking_storage_validatorcount_25000000.json rename to crates/integration_tests/tests/fixtures/kusama/pallets/staking/storage_validatorcount_25000000.json diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_system_errors.json b/crates/integration_tests/tests/fixtures/kusama/pallets/system/errors.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/pallets_system_errors.json rename to crates/integration_tests/tests/fixtures/kusama/pallets/system/errors.json diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_system_storage_number_25000000.json b/crates/integration_tests/tests/fixtures/kusama/pallets/system/storage_number_25000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/pallets_system_storage_number_25000000.json rename to crates/integration_tests/tests/fixtures/kusama/pallets/system/storage_number_25000000.json diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_timestamp_storage_now_25000000.json b/crates/integration_tests/tests/fixtures/kusama/pallets/timestamp/storage_now_25000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/pallets_timestamp_storage_now_25000000.json rename to crates/integration_tests/tests/fixtures/kusama/pallets/timestamp/storage_now_25000000.json diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_balances_events_24000000.json b/crates/integration_tests/tests/fixtures/kusama/pallets_balances_events_24000000.json deleted file mode 100644 index 658d67c38..000000000 --- a/crates/integration_tests/tests/fixtures/kusama/pallets_balances_events_24000000.json +++ /dev/null @@ -1,562 +0,0 @@ -{ - "at": { - "hash": "0x7f494fe774c3b7791f2c71ce9f3d05ac581376fef0cb382f6bacd6708eff5612", - "height": "24000000" - }, - "pallet": "balances", - "palletIndex": "4", - "items": [ - { - "name": "Endowed", - "fields": [ - { - "name": "account", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "free_balance", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "0", - "docs": [ - "An account was created with some free balance." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "DustLost", - "fields": [ - { - "name": "account", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "1", - "docs": [ - "An account was removed whose balance was non-zero but below ExistentialDeposit,", - "resulting in an outright loss." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Transfer", - "fields": [ - { - "name": "from", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "to", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "2", - "docs": [ - "Transfer succeeded." - ], - "args": [ - "AccountId32", - "AccountId32", - "u128" - ] - }, - { - "name": "BalanceSet", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "free", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "3", - "docs": [ - "A balance was set by root." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Reserved", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "4", - "docs": [ - "Some balance was reserved (moved from free to reserved)." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Unreserved", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "5", - "docs": [ - "Some balance was unreserved (moved from reserved to free)." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "ReserveRepatriated", - "fields": [ - { - "name": "from", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "to", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - }, - { - "name": "destination_status", - "type": "33", - "typeName": "Status", - "docs": [] - } - ], - "index": "6", - "docs": [ - "Some balance was moved from the reserve of the first account to the second account.", - "Final argument indicates the destination balance type." - ], - "args": [ - "AccountId32", - "AccountId32", - "u128", - "{\"_enum\":[\"Free\",\"Reserved\"]}" - ] - }, - { - "name": "Deposit", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "7", - "docs": [ - "Some amount was deposited (e.g. for transaction fees)." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Withdraw", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "8", - "docs": [ - "Some amount was withdrawn from the account (e.g. for transaction fees)." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Slashed", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "9", - "docs": [ - "Some amount was removed from the account (e.g. for misbehavior)." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Minted", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "10", - "docs": [ - "Some amount was minted into an account." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Burned", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "11", - "docs": [ - "Some amount was burned from an account." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Suspended", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "12", - "docs": [ - "Some amount was suspended from an account (it can be restored later)." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Restored", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "13", - "docs": [ - "Some amount was restored into an account." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Upgraded", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - } - ], - "index": "14", - "docs": [ - "An account was upgraded." - ], - "args": [ - "AccountId32" - ] - }, - { - "name": "Issued", - "fields": [ - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "15", - "docs": [ - "Total issuance was increased by `amount`, creating a credit to be balanced." - ], - "args": [ - "u128" - ] - }, - { - "name": "Rescinded", - "fields": [ - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "16", - "docs": [ - "Total issuance was decreased by `amount`, creating a debt to be balanced." - ], - "args": [ - "u128" - ] - }, - { - "name": "Locked", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "17", - "docs": [ - "Some balance was locked." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Unlocked", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "18", - "docs": [ - "Some balance was unlocked." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Frozen", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "19", - "docs": [ - "Some balance was frozen." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Thawed", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "20", - "docs": [ - "Some balance was thawed." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "TotalIssuanceForced", - "fields": [ - { - "name": "old", - "type": "6", - "typeName": "T::Balance", - "docs": [] - }, - { - "name": "new", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "21", - "docs": [ - "The `TotalIssuance` was forcefully changed." - ], - "args": [ - "u128", - "u128" - ] - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_balances_events_Transfer_24000000.json b/crates/integration_tests/tests/fixtures/kusama/pallets_balances_events_Transfer_24000000.json deleted file mode 100644 index 038317fb7..000000000 --- a/crates/integration_tests/tests/fixtures/kusama/pallets_balances_events_Transfer_24000000.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "at": { - "hash": "0x7f494fe774c3b7791f2c71ce9f3d05ac581376fef0cb382f6bacd6708eff5612", - "height": "24000000" - }, - "pallet": "balances", - "palletIndex": "4", - "eventItem": "transfer", - "metadata": { - "name": "Transfer", - "fields": [ - { - "name": "from", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "to", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "2", - "docs": [ - "Transfer succeeded." - ], - "args": [ - "AccountId32", - "AccountId32", - "u128" - ] - } -} diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_system_consts_24000000.json b/crates/integration_tests/tests/fixtures/kusama/pallets_system_consts_24000000.json deleted file mode 100644 index 13317ea9d..000000000 --- a/crates/integration_tests/tests/fixtures/kusama/pallets_system_consts_24000000.json +++ /dev/null @@ -1 +0,0 @@ -{"at":{"hash":"0x7f494fe774c3b7791f2c71ce9f3d05ac581376fef0cb382f6bacd6708eff5612","height":"24000000"},"pallet":"system","palletIndex":"0","items":[{"name":"BlockWeights","type":"528","value":"0x07a81a0a5303000b00204aa9d10113ffffffffffffffff4273bb1d00010b30f3708f580113a3703d0ad7a370bd010b0098f73e5d0113ffffffffffffffbf0100004273bb1d00010b307bc3f9cc0113a3703d0ad7a370fd010b00204aa9d10113ffffffffffffffff01070088526a741300000000000000404273bb1d00000000","docs":[" Block & extrinsics weights: base values and limits."],"deprecationInfo":{"notDeprecated":null}},{"name":"BlockLength","type":"531","value":"0x00003c000000500000005000","docs":[" The maximum length of a block (in bytes)."],"deprecationInfo":{"notDeprecated":null}},{"name":"BlockHashCount","type":"4","value":"0x00100000","docs":[" Maximum number of block number to block hash mappings to keep (oldest pruned first)."],"deprecationInfo":{"notDeprecated":null}},{"name":"DbWeight","type":"533","value":"0x40787d010000000000e1f50500000000","docs":[" The weight of runtime database operations the runtime can invoke."],"deprecationInfo":{"notDeprecated":null}},{"name":"Version","type":"534","value":"0x186b7573616d61347061726974792d6b7573616d6102000000164a0f00000000004cdf6acb689907609b0400000037e397fc7c91f5e40200000040fe3ad401f8959a06000000d2bc9897eed08f1503000000f78b278be53f454c02000000af2c0297a23e6d3d0a00000049eaaf1b548a0cb00300000091d5df18b0d2cf58020000002a5e924655399e6001000000ed99c5acb25eedf503000000cbca25e39f14238702000000687ad44ad37f03c201000000ab3c0572291feb8b01000000bc9d89904f5b923f0100000037c8bb1350a9a2a804000000f3ff14d5ab5270590300000017a6bc0d0062aeb30100000018ef58a3b67ba77001000000fbc577b9d747efd6010000001a00000001","docs":[" Get the chain's current version."],"deprecationInfo":{"notDeprecated":null}},{"name":"SS58Prefix","type":"94","value":"0x0200","docs":[" The designated SS58 prefix of this chain.",""," This replaces the \"ss58Format\" property declared in the chain spec. Reason is"," that the runtime should know about the prefix in order to make use of it as"," an identifier of the chain."],"deprecationInfo":{"notDeprecated":null}}]} \ No newline at end of file diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_system_consts_blockweights_24000000.json b/crates/integration_tests/tests/fixtures/kusama/pallets_system_consts_blockweights_24000000.json deleted file mode 100644 index 6eb492837..000000000 --- a/crates/integration_tests/tests/fixtures/kusama/pallets_system_consts_blockweights_24000000.json +++ /dev/null @@ -1 +0,0 @@ -{"at":{"hash":"0x7f494fe774c3b7791f2c71ce9f3d05ac581376fef0cb382f6bacd6708eff5612","height":"24000000"},"pallet":"system","palletIndex":"0","constantsItem":"blockWeights","metadata":{"name":"BlockWeights","type":"528","value":"0x07a81a0a5303000b00204aa9d10113ffffffffffffffff4273bb1d00010b30f3708f580113a3703d0ad7a370bd010b0098f73e5d0113ffffffffffffffbf0100004273bb1d00010b307bc3f9cc0113a3703d0ad7a370fd010b00204aa9d10113ffffffffffffffff01070088526a741300000000000000404273bb1d00000000","docs":[" Block & extrinsics weights: base values and limits."],"deprecationInfo":{"notDeprecated":null}}} \ No newline at end of file diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_system_storage_10000000_v14.json b/crates/integration_tests/tests/fixtures/kusama/pallets_system_storage_10000000_v14.json deleted file mode 100644 index f91458574..000000000 --- a/crates/integration_tests/tests/fixtures/kusama/pallets_system_storage_10000000_v14.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "at": { - "hash": "0xdcbaa224ab080f2fbf3dfc85f3387ab21019355c392d79a143d7e50afba3c6e9", - "height": "10000000" - }, - "pallet": "system", - "palletIndex": "0", - "items": [ - { - "name": "Account", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "0", - "value": "3" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "docs": " The full account information for a particular account ID.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicCount", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total extrinsics count for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockWeight", - "modifier": "Default", - "type": { - "plain": "7" - }, - "fallback": "0x000000000000000000000000000000000000000000000000", - "docs": " The current weight for the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AllExtrinsicsLen", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total length (in bytes) for all extrinsics put together, for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockHash", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "9" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Map of block numbers to block hashes.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicData", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "10" - } - }, - "fallback": "0x00", - "docs": " Extrinsics data for the current block (maps an extrinsic's index to its data).", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Number", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The current block number being processed. Set by `execute_block`.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ParentHash", - "modifier": "Default", - "type": { - "plain": "9" - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Hash of the previous block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Digest", - "modifier": "Default", - "type": { - "plain": "11" - }, - "fallback": "0x00", - "docs": " Digest of the current block, also part of the block header.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Events", - "modifier": "Default", - "type": { - "plain": "18" - }, - "fallback": "0x00", - "docs": " Events deposited for the current block.\n\n NOTE: This storage item is explicitly unbounded since it is never intended to be read\n from within the runtime.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventCount", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The number of events in the `Events` list.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventTopics", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "9", - "value": "144" - } - }, - "fallback": "0x00", - "docs": " Mapping between a topic (represented by T::Hash) and a vector of indexes\n of events in the `>` list.\n\n All topic vectors have deterministic storage locations depending on the topic. This\n allows light-clients to leverage the changes trie storage tracking mechanism and\n in case of changes fetch the list of events of interest.\n\n The value has the type `(T::BlockNumber, EventIndex)` because if we used only just\n the `EventIndex` then in case if the topic has the same contents on the next block\n no notification will be triggered thus the event might be lost.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "LastRuntimeUpgrade", - "modifier": "Optional", - "type": { - "plain": "145" - }, - "fallback": "0x00", - "docs": " Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToU32RefCount", - "modifier": "Default", - "type": { - "plain": "55" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that `type RefCount` is `u32`. False (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToTripleRefCount", - "modifier": "Default", - "type": { - "plain": "55" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that AccountInfo contains three types of `RefCount`. False\n (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExecutionPhase", - "modifier": "Optional", - "type": { - "plain": "142" - }, - "fallback": "0x00", - "docs": " The execution phase of the block.", - "deprecationInfo": { - "notDeprecated": null - } - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_system_storage_1000000_v12.json b/crates/integration_tests/tests/fixtures/kusama/pallets_system_storage_1000000_v12.json deleted file mode 100644 index 0f063703a..000000000 --- a/crates/integration_tests/tests/fixtures/kusama/pallets_system_storage_1000000_v12.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "at": { - "hash": "0xb267ffd706bbb93779eab04f47c7038031657b0a863794dbdd73170e3976c3e7", - "height": "1000000" - }, - "pallet": "system", - "palletIndex": "0", - "items": [ - { - "name": "AccountNonce", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_256" - ], - "key": "T::AccountId", - "value": "T::Index" - } - }, - "fallback": "0x00000000", - "docs": " Extrinsics nonce for accounts.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicCount", - "modifier": "Optional", - "type": { - "plain": "u32" - }, - "fallback": "0x00", - "docs": " Total extrinsics count for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AllExtrinsicsWeight", - "modifier": "Optional", - "type": { - "plain": "Weight" - }, - "fallback": "0x00", - "docs": " Total weight for all extrinsics put together, for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AllExtrinsicsLen", - "modifier": "Optional", - "type": { - "plain": "u32" - }, - "fallback": "0x00", - "docs": " Total length (in bytes) for all extrinsics put together, for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockHash", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_256" - ], - "key": "T::BlockNumber", - "value": "T::Hash" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Map of block numbers to block hashes.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicData", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_256" - ], - "key": "u32", - "value": "Vec" - } - }, - "fallback": "0x00", - "docs": " Extrinsics data for the current block (maps an extrinsic's index to its data).", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Number", - "modifier": "Default", - "type": { - "plain": "T::BlockNumber" - }, - "fallback": "0x00000000", - "docs": " The current block number being processed. Set by `execute_block`.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ParentHash", - "modifier": "Default", - "type": { - "plain": "T::Hash" - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Hash of the previous block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicsRoot", - "modifier": "Default", - "type": { - "plain": "T::Hash" - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Extrinsics root of the current block, also part of the block header.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Digest", - "modifier": "Default", - "type": { - "plain": "DigestOf" - }, - "fallback": "0x00", - "docs": " Digest of the current block, also part of the block header.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Events", - "modifier": "Default", - "type": { - "plain": "Vec>" - }, - "fallback": "0x00", - "docs": " Events deposited for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventCount", - "modifier": "Default", - "type": { - "plain": "EventIndex" - }, - "fallback": "0x00000000", - "docs": " The number of events in the `Events` list.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventTopics", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_256" - ], - "key": "T::Hash", - "value": "Vec<(T::BlockNumber, EventIndex)>" - } - }, - "fallback": "0x00", - "docs": " Mapping between a topic (represented by T::Hash) and a vector of indexes\n of events in the `>` list.\n\n All topic vectors have deterministic storage locations depending on the topic. This\n allows light-clients to leverage the changes trie storage tracking mechanism and\n in case of changes fetch the list of events of interest.\n\n The value has the type `(T::BlockNumber, EventIndex)` because if we used only just\n the `EventIndex` then in case if the topic has the same contents on the next block\n no notification will be triggered thus the event might be lost.", - "deprecationInfo": { - "notDeprecated": null - } - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_system_storage_26100000.json b/crates/integration_tests/tests/fixtures/kusama/pallets_system_storage_26100000.json deleted file mode 100644 index 8b45b3bf3..000000000 --- a/crates/integration_tests/tests/fixtures/kusama/pallets_system_storage_26100000.json +++ /dev/null @@ -1,250 +0,0 @@ -{ - "at": { - "hash": "0xd3f8c0670d6f3924386087751f23561640bdc10f5b3c3cd68b93b216cde2ba12", - "height": "26100000" - }, - "pallet": "system", - "palletIndex": "0", - "items": [ - { - "name": "Account", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "0", - "value": "3" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", - "docs": " The full account information for a particular account ID.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicCount", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total extrinsics count for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "InherentsApplied", - "modifier": "Default", - "type": { - "plain": "8" - }, - "fallback": "0x00", - "docs": " Whether all inherents have been applied.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockWeight", - "modifier": "Default", - "type": { - "plain": "9" - }, - "fallback": "0x000000000000", - "docs": " The current weight for the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AllExtrinsicsLen", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total length (in bytes) for all extrinsics put together, for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockHash", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "13" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Map of block numbers to block hashes.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicData", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "14" - } - }, - "fallback": "0x00", - "docs": " Extrinsics data for the current block (maps an extrinsic's index to its data).", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Number", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The current block number being processed. Set by `execute_block`.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ParentHash", - "modifier": "Default", - "type": { - "plain": "13" - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Hash of the previous block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Digest", - "modifier": "Default", - "type": { - "plain": "15" - }, - "fallback": "0x00", - "docs": " Digest of the current block, also part of the block header.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Events", - "modifier": "Default", - "type": { - "plain": "19" - }, - "fallback": "0x00", - "docs": " Events deposited for the current block.\n\n NOTE: The item is unbound and should therefore never be read on chain.\n It could otherwise inflate the PoV size of a block.\n\n Events have a large in-memory size. Box the events to not go out-of-memory\n just in case someone still reads them from within the runtime.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventCount", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The number of events in the `Events` list.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventTopics", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "13", - "value": "528" - } - }, - "fallback": "0x00", - "docs": " Mapping between a topic (represented by T::Hash) and a vector of indexes\n of events in the `>` list.\n\n All topic vectors have deterministic storage locations depending on the topic. This\n allows light-clients to leverage the changes trie storage tracking mechanism and\n in case of changes fetch the list of events of interest.\n\n The value has the type `(BlockNumberFor, EventIndex)` because if we used only just\n the `EventIndex` then in case if the topic has the same contents on the next block\n no notification will be triggered thus the event might be lost.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "LastRuntimeUpgrade", - "modifier": "Optional", - "type": { - "plain": "529" - }, - "fallback": "0x00", - "docs": " Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToU32RefCount", - "modifier": "Default", - "type": { - "plain": "8" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that `type RefCount` is `u32`. False (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToTripleRefCount", - "modifier": "Default", - "type": { - "plain": "8" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that AccountInfo contains three types of `RefCount`. False\n (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExecutionPhase", - "modifier": "Optional", - "type": { - "plain": "527" - }, - "fallback": "0x00", - "docs": " The execution phase of the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AuthorizedUpgrade", - "modifier": "Optional", - "type": { - "plain": "531" - }, - "fallback": "0x00", - "docs": " `Some` if a code upgrade has been authorized.", - "deprecationInfo": { - "notDeprecated": null - } - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_system_storage_31785029.json b/crates/integration_tests/tests/fixtures/kusama/pallets_system_storage_31785029.json deleted file mode 100644 index c7942a740..000000000 --- a/crates/integration_tests/tests/fixtures/kusama/pallets_system_storage_31785029.json +++ /dev/null @@ -1,262 +0,0 @@ -{ - "at": { - "hash": "0x7b3eef60d20d2912f9f9df2cb837fec5142a42ce2393ff6a7ce61b81e004911a", - "height": "31785029" - }, - "pallet": "system", - "palletIndex": "0", - "items": [ - { - "name": "Account", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "0", - "value": "3" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", - "docs": " The full account information for a particular account ID.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicCount", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total extrinsics count for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "InherentsApplied", - "modifier": "Default", - "type": { - "plain": "8" - }, - "fallback": "0x00", - "docs": " Whether all inherents have been applied.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockWeight", - "modifier": "Default", - "type": { - "plain": "9" - }, - "fallback": "0x000000000000", - "docs": " The current weight for the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AllExtrinsicsLen", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total length (in bytes) for all extrinsics put together, for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockHash", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "13" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Map of block numbers to block hashes.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicData", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "14" - } - }, - "fallback": "0x00", - "docs": " Extrinsics data for the current block (maps an extrinsic's index to its data).", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Number", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The current block number being processed. Set by `execute_block`.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ParentHash", - "modifier": "Default", - "type": { - "plain": "13" - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Hash of the previous block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Digest", - "modifier": "Default", - "type": { - "plain": "15" - }, - "fallback": "0x00", - "docs": " Digest of the current block, also part of the block header.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Events", - "modifier": "Default", - "type": { - "plain": "19" - }, - "fallback": "0x00", - "docs": " Events deposited for the current block.\n\n NOTE: The item is unbound and should therefore never be read on chain.\n It could otherwise inflate the PoV size of a block.\n\n Events have a large in-memory size. Box the events to not go out-of-memory\n just in case someone still reads them from within the runtime.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventCount", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The number of events in the `Events` list.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventTopics", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "13", - "value": "627" - } - }, - "fallback": "0x00", - "docs": " Mapping between a topic (represented by T::Hash) and a vector of indexes\n of events in the `>` list.\n\n All topic vectors have deterministic storage locations depending on the topic. This\n allows light-clients to leverage the changes trie storage tracking mechanism and\n in case of changes fetch the list of events of interest.\n\n The value has the type `(BlockNumberFor, EventIndex)` because if we used only just\n the `EventIndex` then in case if the topic has the same contents on the next block\n no notification will be triggered thus the event might be lost.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "LastRuntimeUpgrade", - "modifier": "Optional", - "type": { - "plain": "628" - }, - "fallback": "0x00", - "docs": " Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToU32RefCount", - "modifier": "Default", - "type": { - "plain": "8" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that `type RefCount` is `u32`. False (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToTripleRefCount", - "modifier": "Default", - "type": { - "plain": "8" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that AccountInfo contains three types of `RefCount`. False\n (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExecutionPhase", - "modifier": "Optional", - "type": { - "plain": "626" - }, - "fallback": "0x00", - "docs": " The execution phase of the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AuthorizedUpgrade", - "modifier": "Optional", - "type": { - "plain": "631" - }, - "fallback": "0x00", - "docs": " `Some` if a code upgrade has been authorized.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicWeightReclaimed", - "modifier": "Default", - "type": { - "plain": "10" - }, - "fallback": "0x0000", - "docs": " The weight reclaimed for the extrinsic.\n\n This information is available until the end of the extrinsic execution.\n More precisely this information is removed in `note_applied_extrinsic`.\n\n Logic doing some post dispatch weight reduction must update this storage to avoid duplicate\n reduction.", - "deprecationInfo": { - "notDeprecated": null - } - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/kusama/pallets_system_storage_5000000_v13.json b/crates/integration_tests/tests/fixtures/kusama/pallets_system_storage_5000000_v13.json deleted file mode 100644 index b43f1832f..000000000 --- a/crates/integration_tests/tests/fixtures/kusama/pallets_system_storage_5000000_v13.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "at": { - "hash": "0xe360cc614f6de435a6e1e2598795aca7ca9dfc658b84ecf8e7139b89d7a161e3", - "height": "5000000" - }, - "pallet": "system", - "palletIndex": "0", - "items": [ - { - "name": "Account", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "T::AccountId", - "value": "AccountInfo" - } - }, - "fallback": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "docs": " The full account information for a particular account ID.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicCount", - "modifier": "Optional", - "type": { - "plain": "u32" - }, - "fallback": "0x00", - "docs": " Total extrinsics count for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockWeight", - "modifier": "Default", - "type": { - "plain": "weights::ExtrinsicsWeight" - }, - "fallback": "0x00000000000000000000000000000000", - "docs": " The current weight for the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AllExtrinsicsLen", - "modifier": "Optional", - "type": { - "plain": "u32" - }, - "fallback": "0x00", - "docs": " Total length (in bytes) for all extrinsics put together, for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockHash", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "T::BlockNumber", - "value": "T::Hash" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Map of block numbers to block hashes.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicData", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "u32", - "value": "Vec" - } - }, - "fallback": "0x00", - "docs": " Extrinsics data for the current block (maps an extrinsic's index to its data).", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Number", - "modifier": "Default", - "type": { - "plain": "T::BlockNumber" - }, - "fallback": "0x00000000", - "docs": " The current block number being processed. Set by `execute_block`.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ParentHash", - "modifier": "Default", - "type": { - "plain": "T::Hash" - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Hash of the previous block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicsRoot", - "modifier": "Default", - "type": { - "plain": "T::Hash" - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Extrinsics root of the current block, also part of the block header.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Digest", - "modifier": "Default", - "type": { - "plain": "DigestOf" - }, - "fallback": "0x00", - "docs": " Digest of the current block, also part of the block header.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Events", - "modifier": "Default", - "type": { - "plain": "Vec>" - }, - "fallback": "0x00", - "docs": " Events deposited for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventCount", - "modifier": "Default", - "type": { - "plain": "EventIndex" - }, - "fallback": "0x00000000", - "docs": " The number of events in the `Events` list.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventTopics", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "T::Hash", - "value": "Vec<(T::BlockNumber, EventIndex)>" - } - }, - "fallback": "0x00", - "docs": " Mapping between a topic (represented by T::Hash) and a vector of indexes\n of events in the `>` list.\n\n All topic vectors have deterministic storage locations depending on the topic. This\n allows light-clients to leverage the changes trie storage tracking mechanism and\n in case of changes fetch the list of events of interest.\n\n The value has the type `(T::BlockNumber, EventIndex)` because if we used only just\n the `EventIndex` then in case if the topic has the same contents on the next block\n no notification will be triggered thus the event might be lost.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "LastRuntimeUpgrade", - "modifier": "Optional", - "type": { - "plain": "LastRuntimeUpgradeInfo" - }, - "fallback": "0x00", - "docs": " Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToU32RefCount", - "modifier": "Default", - "type": { - "plain": "bool" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that `type RefCount` is `u32`. False (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExecutionPhase", - "modifier": "Optional", - "type": { - "plain": "Phase" - }, - "fallback": "0x00", - "docs": " The execution phase of the block.", - "deprecationInfo": { - "notDeprecated": null - } - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/kusama/runtime_code_5000000.json b/crates/integration_tests/tests/fixtures/kusama/runtime/code_5000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/runtime_code_5000000.json rename to crates/integration_tests/tests/fixtures/kusama/runtime/code_5000000.json diff --git a/crates/integration_tests/tests/fixtures/kusama/runtime_metadata_24000000.json b/crates/integration_tests/tests/fixtures/kusama/runtime/metadata_24000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/runtime_metadata_24000000.json rename to crates/integration_tests/tests/fixtures/kusama/runtime/metadata_24000000.json diff --git a/crates/integration_tests/tests/fixtures/kusama/runtime_metadata_v14_24000000.json b/crates/integration_tests/tests/fixtures/kusama/runtime/metadata_v14_24000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/runtime_metadata_v14_24000000.json rename to crates/integration_tests/tests/fixtures/kusama/runtime/metadata_v14_24000000.json diff --git a/crates/integration_tests/tests/fixtures/kusama/runtime_metadata_v15_24000000.json b/crates/integration_tests/tests/fixtures/kusama/runtime/metadata_v15_24000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/runtime_metadata_v15_24000000.json rename to crates/integration_tests/tests/fixtures/kusama/runtime/metadata_v15_24000000.json diff --git a/crates/integration_tests/tests/fixtures/kusama/runtime_metadata_versions_24000000.json b/crates/integration_tests/tests/fixtures/kusama/runtime/metadata_versions_24000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/runtime_metadata_versions_24000000.json rename to crates/integration_tests/tests/fixtures/kusama/runtime/metadata_versions_24000000.json diff --git a/crates/integration_tests/tests/fixtures/kusama/runtime_spec_5000000.json b/crates/integration_tests/tests/fixtures/kusama/runtime/spec_5000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/kusama/runtime_spec_5000000.json rename to crates/integration_tests/tests/fixtures/kusama/runtime/spec_5000000.json diff --git a/crates/integration_tests/tests/fixtures/polkadot-asset-hub/pallets_assets_events_8000000.json b/crates/integration_tests/tests/fixtures/polkadot-asset-hub/pallets_assets_events_8000000.json deleted file mode 100644 index 5971f6dd9..000000000 --- a/crates/integration_tests/tests/fixtures/polkadot-asset-hub/pallets_assets_events_8000000.json +++ /dev/null @@ -1,766 +0,0 @@ -{ - "at": { - "hash": "0xf6951594192d626c24f8517eda02d7a9b30ddd9e581b0673c2ed4abfaebdb1f2", - "height": "8000000" - }, - "pallet": "assets", - "palletIndex": "50", - "items": [ - { - "name": "Created", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "creator", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "owner", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - } - ], - "index": "0", - "docs": [ - "Some asset class was created." - ], - "args": [ - "u32", - "AccountId32", - "AccountId32" - ] - }, - { - "name": "Issued", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "owner", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "1", - "docs": [ - "Some assets were issued." - ], - "args": [ - "u32", - "AccountId32", - "u128" - ] - }, - { - "name": "Transferred", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "from", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "to", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "2", - "docs": [ - "Some assets were transferred." - ], - "args": [ - "u32", - "AccountId32", - "AccountId32", - "u128" - ] - }, - { - "name": "Burned", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "owner", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "balance", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "3", - "docs": [ - "Some assets were destroyed." - ], - "args": [ - "u32", - "AccountId32", - "u128" - ] - }, - { - "name": "TeamChanged", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "issuer", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "admin", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "freezer", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - } - ], - "index": "4", - "docs": [ - "The management team changed." - ], - "args": [ - "u32", - "AccountId32", - "AccountId32", - "AccountId32" - ] - }, - { - "name": "OwnerChanged", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "owner", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - } - ], - "index": "5", - "docs": [ - "The owner changed." - ], - "args": [ - "u32", - "AccountId32" - ] - }, - { - "name": "Frozen", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - } - ], - "index": "6", - "docs": [ - "Some account `who` was frozen." - ], - "args": [ - "u32", - "AccountId32" - ] - }, - { - "name": "Thawed", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - } - ], - "index": "7", - "docs": [ - "Some account `who` was thawed." - ], - "args": [ - "u32", - "AccountId32" - ] - }, - { - "name": "AssetFrozen", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - } - ], - "index": "8", - "docs": [ - "Some asset `asset_id` was frozen." - ], - "args": [ - "u32" - ] - }, - { - "name": "AssetThawed", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - } - ], - "index": "9", - "docs": [ - "Some asset `asset_id` was thawed." - ], - "args": [ - "u32" - ] - }, - { - "name": "AccountsDestroyed", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "accounts_destroyed", - "type": "4", - "typeName": "u32", - "docs": [] - }, - { - "name": "accounts_remaining", - "type": "4", - "typeName": "u32", - "docs": [] - } - ], - "index": "10", - "docs": [ - "Accounts were destroyed for given asset." - ], - "args": [ - "u32", - "u32", - "u32" - ] - }, - { - "name": "ApprovalsDestroyed", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "approvals_destroyed", - "type": "4", - "typeName": "u32", - "docs": [] - }, - { - "name": "approvals_remaining", - "type": "4", - "typeName": "u32", - "docs": [] - } - ], - "index": "11", - "docs": [ - "Approvals were destroyed for given asset." - ], - "args": [ - "u32", - "u32", - "u32" - ] - }, - { - "name": "DestructionStarted", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - } - ], - "index": "12", - "docs": [ - "An asset class is in the process of being destroyed." - ], - "args": [ - "u32" - ] - }, - { - "name": "Destroyed", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - } - ], - "index": "13", - "docs": [ - "An asset class was destroyed." - ], - "args": [ - "u32" - ] - }, - { - "name": "ForceCreated", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "owner", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - } - ], - "index": "14", - "docs": [ - "Some asset class was force-created." - ], - "args": [ - "u32", - "AccountId32" - ] - }, - { - "name": "MetadataSet", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "name", - "type": "14", - "typeName": "Vec", - "docs": [] - }, - { - "name": "symbol", - "type": "14", - "typeName": "Vec", - "docs": [] - }, - { - "name": "decimals", - "type": "2", - "typeName": "u8", - "docs": [] - }, - { - "name": "is_frozen", - "type": "8", - "typeName": "bool", - "docs": [] - } - ], - "index": "15", - "docs": [ - "New metadata has been set for an asset." - ], - "args": [ - "u32", - "Bytes", - "Bytes", - "u8", - "bool" - ] - }, - { - "name": "MetadataCleared", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - } - ], - "index": "16", - "docs": [ - "Metadata has been cleared for an asset." - ], - "args": [ - "u32" - ] - }, - { - "name": "ApprovedTransfer", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "source", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "delegate", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "17", - "docs": [ - "(Additional) funds have been approved for transfer to a destination account." - ], - "args": [ - "u32", - "AccountId32", - "AccountId32", - "u128" - ] - }, - { - "name": "ApprovalCancelled", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "owner", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "delegate", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - } - ], - "index": "18", - "docs": [ - "An approval for account `delegate` was cancelled by `owner`." - ], - "args": [ - "u32", - "AccountId32", - "AccountId32" - ] - }, - { - "name": "TransferredApproved", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "owner", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "delegate", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "destination", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "19", - "docs": [ - "An `amount` was transferred in its entirety from `owner` to `destination` by", - "the approved `delegate`." - ], - "args": [ - "u32", - "AccountId32", - "AccountId32", - "AccountId32", - "u128" - ] - }, - { - "name": "AssetStatusChanged", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - } - ], - "index": "20", - "docs": [ - "An asset has had its attributes changed by the `Force` origin." - ], - "args": [ - "u32" - ] - }, - { - "name": "AssetMinBalanceChanged", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "new_min_balance", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "21", - "docs": [ - "The min_balance of an asset has been updated by the asset owner." - ], - "args": [ - "u32", - "u128" - ] - }, - { - "name": "Touched", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "depositor", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - } - ], - "index": "22", - "docs": [ - "Some account `who` was created with a deposit from `depositor`." - ], - "args": [ - "u32", - "AccountId32", - "AccountId32" - ] - }, - { - "name": "Blocked", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - } - ], - "index": "23", - "docs": [ - "Some account `who` was blocked." - ], - "args": [ - "u32", - "AccountId32" - ] - }, - { - "name": "Deposited", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "24", - "docs": [ - "Some assets were deposited (e.g. for transaction fees)." - ], - "args": [ - "u32", - "AccountId32", - "u128" - ] - }, - { - "name": "Withdrawn", - "fields": [ - { - "name": "asset_id", - "type": "4", - "typeName": "T::AssetId", - "docs": [] - }, - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "25", - "docs": [ - "Some assets were withdrawn from the account (e.g. for transaction fees)." - ], - "args": [ - "u32", - "AccountId32", - "u128" - ] - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/polkadot-asset-hub/pallets_assets_events_Created_8000000.json b/crates/integration_tests/tests/fixtures/polkadot-asset-hub/pallets_assets_events_Created_8000000.json deleted file mode 100644 index f7bb60808..000000000 --- a/crates/integration_tests/tests/fixtures/polkadot-asset-hub/pallets_assets_events_Created_8000000.json +++ /dev/null @@ -1 +0,0 @@ -{"at":{"hash":"0xf6951594192d626c24f8517eda02d7a9b30ddd9e581b0673c2ed4abfaebdb1f2","height":"8000000"},"pallet":"assets","palletIndex":"50","eventItem":"created","metadata":{"name":"Created","fields":[{"name":"asset_id","type":"4","typeName":"T::AssetId","docs":[]},{"name":"creator","type":"0","typeName":"T::AccountId","docs":[]},{"name":"owner","type":"0","typeName":"T::AccountId","docs":[]}],"index":"0","docs":["Some asset class was created."],"args":["u32","AccountId32","AccountId32"]}} \ No newline at end of file diff --git a/crates/integration_tests/tests/fixtures/polkadot/blocks_1000000.json b/crates/integration_tests/tests/fixtures/polkadot/blocks/1000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/blocks_1000000.json rename to crates/integration_tests/tests/fixtures/polkadot/blocks/1000000.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/blocks_10000000.json b/crates/integration_tests/tests/fixtures/polkadot/blocks/10000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/blocks_10000000.json rename to crates/integration_tests/tests/fixtures/polkadot/blocks/10000000.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/blocks_10000006.json b/crates/integration_tests/tests/fixtures/polkadot/blocks/10000006.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/blocks_10000006.json rename to crates/integration_tests/tests/fixtures/polkadot/blocks/10000006.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/blocks_20000006.json b/crates/integration_tests/tests/fixtures/polkadot/blocks/20000006.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/blocks_20000006.json rename to crates/integration_tests/tests/fixtures/polkadot/blocks/20000006.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/blocks_28490503_decode_xcm.json b/crates/integration_tests/tests/fixtures/polkadot/blocks/28490503_decode_xcm.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/blocks_28490503_decode_xcm.json rename to crates/integration_tests/tests/fixtures/polkadot/blocks/28490503_decode_xcm.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/blocks_range_1000000-1000002.json b/crates/integration_tests/tests/fixtures/polkadot/blocks/range_1000000-1000002.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/blocks_range_1000000-1000002.json rename to crates/integration_tests/tests/fixtures/polkadot/blocks/range_1000000-1000002.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/blocks_10000001.json b/crates/integration_tests/tests/fixtures/polkadot/blocks_10000001.json deleted file mode 100644 index a0ece7589..000000000 --- a/crates/integration_tests/tests/fixtures/polkadot/blocks_10000001.json +++ /dev/null @@ -1,1751 +0,0 @@ -{ - "number": "10000001", - "hash": "0x587c8adf5f3745b3c0bf7ffdcb7fdc9fe9e64d97395d01c5904cf271f83d45af", - "parentHash": "0x6c51377632106ddba379416f2ef5e24450e90cee8c78a70daa262b2ae6f27e93", - "stateRoot": "0x16c900f75ca0dda020e197e414af802bbbbb2edfa371e3c7ac962fc3f22c85b2", - "extrinsicsRoot": "0xb767dc86183e7d00f4347bcbb9d80de19571672418bf48960c4854e89cfbe7c3", - "authorId": "114SUbKCXjmb9czpWTtS3JANSmNRwVa4mmsMrWYpRG1kDH5", - "logs": [ - { - "type": "PreRuntime", - "index": "6", - "value": [ - "0x42414245", - "0x030100000080fc6510000000001acb23fcd12c7816a2b68eea69d5a02a46dfd8103c878e98a204ff928ccd8a413b3cc84bcdd2eb8dee4826f25255deef5fd5f6cbd3e60fc9c727cd5043ebbf07891baa1b6eba4d70fe74107cc92b56fdd22d0567ba4e35d8f3f789b0a73c110a" - ] - }, - { - "type": "Seal", - "index": "5", - "value": [ - "0x42414245", - "0x2e5f0bcb3bd4a091fc1744d46177033291edae5ec26e4bfe89003b8ef291f97173fcb7a999c53ad4088b7b7f19708d03b162bd762bd39e5bbcaa21c853d35486" - ] - } - ], - "onInitialize": { - "events": [] - }, - "extrinsics": [ - { - "method": { - "pallet": "timestamp", - "method": "set" - }, - "signature": null, - "nonce": null, - "args": { - "now": "1650715392002" - }, - "tip": null, - "hash": "0xb46422d14ade17f236d04bf713d8cc2fc90b8b0448f4fe73bb7335f46e0b21c5", - "info": {}, - "era": { - "immortalEra": "0x00" - }, - "events": [ - { - "method": { - "pallet": "system", - "method": "ExtrinsicSuccess" - }, - "data": [ - { - "weight": "154884000", - "class": "Mandatory", - "paysFee": "Yes" - } - ] - } - ], - "success": true, - "paysFee": false - }, - { - "method": { - "pallet": "paraInherent", - "method": "enter" - }, - "signature": null, - "nonce": null, - "args": { - "data": { - "bitfields": [ - { - "payload": "0x1419000000", - "validatorIndex": "0", - "signature": "0x6ccc99f09d2e1451756f4af0da0aee261bf6648ae520107ad14b3346aa9502637d4c4dce512ae3677800493738bf708125443cd803f36002ecb2ddb900aeb08d" - }, - { - "payload": "0x1419000000", - "validatorIndex": "1", - "signature": "0xf8c868b86812ff301997fbd14f6ddf332f0d07458fe11535773135aa8c0d6d3cee4218d77bc897524e13671b44e14b430c4f22d50089f975a0fa918c60d0dc85" - }, - { - "payload": "0x1419000000", - "validatorIndex": "2", - "signature": "0x00a800a5b739fce97349cf75bb2c314838da8d83145724737f70894da0a37f6c699a646b0841f4f72517459b3ba352f2ef5c866255e3af59393e2192bce89c8f" - }, - { - "payload": "0x1419000000", - "validatorIndex": "3", - "signature": "0xf460fdb693505278149a4ef2078c7f639da5185aa56420ade66ce5fe95766b3156cf27a7af2bf6dddd7791fc6ddd34af0b97215786dc7f6d589b730558aa7e86" - }, - { - "payload": "0x1419000000", - "validatorIndex": "4", - "signature": "0xe44dcfb5ee5cdb3d572280bc300db9aaa1ccf3dca4820aa6090e970cdb94aa47c5b8853f2d00dc407764ee0df6d4cc2a1bf9599d3af3332a82c9b4cbea084682" - }, - { - "payload": "0x1419000000", - "validatorIndex": "5", - "signature": "0x26202d635c946743bd1a898c779430409cd1e5de3c617e98fc7612a879df752aa453c6e2bd7f1872ba50f0f13b7b5ce35e4916f5616208c1242a9dd9d8493582" - }, - { - "payload": "0x1419000000", - "validatorIndex": "6", - "signature": "0x9e1f5b90160a3ef6ea73a3fbdd1073a88cdda137a000c4316826a5daf0d7b52468ca912d47a6664fdbca29c645f042576542f9747f8bda828afdf3eaff67f18c" - }, - { - "payload": "0x1419000000", - "validatorIndex": "7", - "signature": "0x061398066329fe4b61a3293f183a656402e81a903e2f15a42de75da0eae45b50c16bc8329c9041ebe566747e988e3e45bdca1f6609091f0cb03f803a789dcc8b" - }, - { - "payload": "0x1419000000", - "validatorIndex": "8", - "signature": "0xf6e65a8773a75720e85dcf89e7fe0914ec88f87b30f11ee740da65896fbb68439daabf6b2ad046ea6b08a2ec6176bd3fde808827f1f970693732abda153d9d80" - }, - { - "payload": "0x1419000000", - "validatorIndex": "9", - "signature": "0xd8652c705054fbf68171da6b2e1ef2ba7f2650ee141aaf7d7ddb241372d2d736182d73c36f49f85ac1cd607aa145c58e4f97dba6c1d62fe0ade734f039b7018c" - }, - { - "payload": "0x1419000000", - "validatorIndex": "10", - "signature": "0x5a357dbf9ba836eac6881351314bca5a2d51910dc03809bd47ed48698b4b280f0514b64baeec1e2b417b26855e82cee4fef27ee3cb279f27cb74da97a3a2638e" - }, - { - "payload": "0x0411000000", - "validatorIndex": "11", - "signature": "0x56680438fa5e6da1dff9851d9cb622ea9f420ff543af1b202f3e5ea85055ee1d9b3a31a267ed5f5dba65ea5b36218146dff1f410c1d8c91c94e0010c379e518a" - }, - { - "payload": "0x1419000000", - "validatorIndex": "12", - "signature": "0xa8412bad48b7a5933f50bdf66037ff44e8954aa7fac7936d89ca7360fc2eb02f54fa06eaba34258932c46fa941fc752138a61d55f3958c7cebc6d462b3fa368a" - }, - { - "payload": "0x1419000000", - "validatorIndex": "13", - "signature": "0x202eb63faf7fc6a582ce25bcbb72205dfbd08e41d91d30d2b8b90d8c85bf27646644d71395db2014cd58c93ec6e9b0108eddb1a95d920d0ac5379e3765a2f184" - }, - { - "payload": "0x1419000000", - "validatorIndex": "14", - "signature": "0x38c1f59788140b4026a42620d588a57decae0045ded0e7f9fc55336f9b58492aa3f27ee24b56efad708a8eecaecdfca024e0570b06d4786ea0cc8e661278f18b" - }, - { - "payload": "0x1419000000", - "validatorIndex": "15", - "signature": "0xd6863ed522ba070b3f768e7d154a21d38fe092cb25d84837eb3f7c31d7de8729d15c8706bc04f3d37dc60106ebf850564006cc2ac6dad7d23e43bb195d79c383" - }, - { - "payload": "0x1419000000", - "validatorIndex": "16", - "signature": "0xfc74b1694e290b1a515d26118c1f4d0fbadc7530eb0eee1f7306c95c563803042b3d9506839b909fd0f02da7016d40f14f580efa70b294f836f0ec48ec74c582" - }, - { - "payload": "0x1419000000", - "validatorIndex": "17", - "signature": "0xbe67742ccf018936c76ce8bfc7638901a4ea323747043a29bd279aaf7da84b7cd5d4b13645b7306bcf706af5e26b44a22e8e8a5a01ef489330476c37f4b48388" - }, - { - "payload": "0x1419000000", - "validatorIndex": "18", - "signature": "0xbc0fa5e1062bec0b0ec5ea11da80762b362968a2748bbb524526a9fca00dd91ad6c52faa2a0465f60ac680c4626f906f1f21613df08fc20c554ae424f2bfc486" - }, - { - "payload": "0x1419000000", - "validatorIndex": "19", - "signature": "0xba38f80d2d35d1aeaa34fc2b89c27da70bc67b0de08d9dd17eec865303e42c5f56d30d69222d624c5b0ee92d9e9b4c84b88e6224b976b43fb9d914d2a72b0f80" - }, - { - "payload": "0x1419000000", - "validatorIndex": "20", - "signature": "0x4c11dba3b3b0f07b77d078b3e5c49ecea0b315382d12598b82dfb789c51fd668b78264a9e78fe43caba0b1619088a050cc07ab8da1da58b56adb7cefc0bfae84" - }, - { - "payload": "0x1419000000", - "validatorIndex": "21", - "signature": "0xa67edab443b9069209fe3dbac925a5750aff81085275a4bd858e746cd0a189661c9320aadd53a5b480b52f796684bd565d076ad2df452506229a5f101f073381" - }, - { - "payload": "0x1419000000", - "validatorIndex": "22", - "signature": "0xa60066a2905fc54e0560ffa1f0fecb838e2d4688a1ccfb2c9328d0203a18543e627152b4f6693d97fa96cf0719aed23e4105fc794b765c7202afb38d559aaa89" - }, - { - "payload": "0x1419000000", - "validatorIndex": "23", - "signature": "0xb438595c2b7234fdc15571454cb81448a554a350271b34631236bda8ecd55035d3ec0b42e5ffbb5f249921eeb772d66f198164696632e112b3a55c034624f884" - }, - { - "payload": "0x1419000000", - "validatorIndex": "24", - "signature": "0x00f92f8bbdfac038a1b83a676080b89b71b1b2062578f13a31cbcac8c1d98c3aaa3c88d8a95e8e7b9a35a64bd6319a3fe8327943cadacd7fd70896a0710d1c8e" - }, - { - "payload": "0x1419000000", - "validatorIndex": "25", - "signature": "0x008b820627df791f0c67dd69db35230e01064146a4586fdf776260548dba5620f75be1f651b21434075f89a8bc564cf37f44f08c226adb0c61d25acde5856b83" - }, - { - "payload": "0x1419000000", - "validatorIndex": "26", - "signature": "0x3ecac5e8da2bdd707c9b47139fc02cdc3dad3fcf496bd970c2a4da92fb259a62d014fc202c5854bc7bf010cf9f0246c1e8ba11526d8071fbe80568596c8dd088" - }, - { - "payload": "0x1419000000", - "validatorIndex": "27", - "signature": "0xdc01f7a5bc19d168fbf8d44453e4470c94cd7af8121266f12ecaec115aa28334885083f92caca67da3de86168c44edb4f10afffbf0377e16252dce128dc70281" - }, - { - "payload": "0x1419000000", - "validatorIndex": "28", - "signature": "0x0432e95bb3acb4e28e8b039aaeb264d77d8a3d2b0e57a26aaeb2f6de953103608d9d5a25701831d49d8d30dc48708adb9d147d4dde288b05f15be7ddcda8fe81" - }, - { - "payload": "0x1419000000", - "validatorIndex": "29", - "signature": "0xf0f6b56260a5f72fb5b8a3865e54ede923494dc9192524036f74c445972daf4e3d0b4a6e7ab303bbb425089765ea113b40894ab7dad83d4c347646b26e0fb780" - }, - { - "payload": "0x1419000000", - "validatorIndex": "30", - "signature": "0x5681e1818ac78f4ec5ead05b6f7f6bfdb5b109f204ac53ba792ed6a486d5986bdfebac6d994ef5fdd526e9ddc7368cfe7488fe594be2f60027ce94cc07704480" - }, - { - "payload": "0x1419000000", - "validatorIndex": "31", - "signature": "0xdc49d697e4142e58f8b1698d010accd7a31c4fad04b3d7224f17f12c98cb7c18a7b3007e54b0c9998e9d526de775bec462b2d7becfafd318a6d9bb0c420cd980" - }, - { - "payload": "0x1419000000", - "validatorIndex": "32", - "signature": "0x84625420215ccf473ed63ad456f79655920c233268b771a44261db9c41ae5112bcb4924c1c9fe8eea9e9ea07aae74e84f342a87d0f2b703f9bea1e646fbb7c84" - }, - { - "payload": "0x1419000000", - "validatorIndex": "33", - "signature": "0x9499226cc93e9febce0e342be2709e3ce300f30b39eddb2f5e9f186d92da07798741358110725c8d07ac755bea67342b8fa3dea72f6a88040a368e6edbd49686" - }, - { - "payload": "0x1419000000", - "validatorIndex": "34", - "signature": "0x20efb98dbc5269b7877f5002ec7132d85e9362d0365c6780d6cbce4e7279902827262f2a372e75f074b568c0d171499e235835a4dd36d59cf11d679f850d3c8f" - }, - { - "payload": "0x1419000000", - "validatorIndex": "35", - "signature": "0x3019248f4407c6d5a1b0f469fdcc7930851b5eb2ae8dc724aa607c17b46950615b22e6bbb5371a0dc0d47a0e0dfe7afd37f34193c4cff1769c2ff312d7b5078b" - }, - { - "payload": "0x1419000000", - "validatorIndex": "36", - "signature": "0xbe9dfb5526885592ff4943dc00b1e800361a6adc690f5f3ff35228cc7bc0d540e11bbfbd0a746d773f101ba04438e7d4edd3c4ae3362f71d1711729687df0c8f" - }, - { - "payload": "0x1419000000", - "validatorIndex": "37", - "signature": "0x8e24bbe67361a0d333a08c8c51f483558a59fb7d9f8b5abb34561fbf19d4b739247e624524f94b3d776300d69d01675f5b924e5c8c486033b06ad9fd10204383" - }, - { - "payload": "0x1019000000", - "validatorIndex": "38", - "signature": "0x0a87d7cf59de1aa860b94274f021e6c85c789b05fb6acb343c9143fecd04577326be26c5a586bc0475c0431d1953e9d55a3797f7543cc80b5962b1c1866f5f8f" - }, - { - "payload": "0x1419000000", - "validatorIndex": "39", - "signature": "0xee91656337edd409820bcc8400318c78361904d4c3e40cde44d87f0dd4ae5453fd7e06c1aebe6a010d14ab08046ce3eac7042547bb97df35bf142d4e23baba8e" - }, - { - "payload": "0x1419000000", - "validatorIndex": "40", - "signature": "0xe29f780fda9e720befcf9f9f13a2f0e394cc0d22303683a99869c6a13340ef05c49ed11c9d896ba656c6281574304e4fdf02bdd9094914e24e041f2591238e81" - }, - { - "payload": "0x1419000000", - "validatorIndex": "41", - "signature": "0x1651a7e05121739317915d0296c574d968b9b1792fbda0fa857eb89be3e08c2bf43fe868984e95666512c048251348aa69275eb2fe945be0744cd281d758db8c" - }, - { - "payload": "0x1419000000", - "validatorIndex": "42", - "signature": "0x2ab50310891c8cfcab47c4dea79d814e36798f5900ce0a89599250015946b74eb24965fbe9dc98c8dd1c0b206e3e63aa5ef713fab8ab335e6d3e6350ebca4489" - }, - { - "payload": "0x1419000000", - "validatorIndex": "43", - "signature": "0xe8412ae34112df0e044e05aea2e5165f937bc6f8538dde905a4c30b7fe929e2f4704d39dadd62c1915dc6e62dce8385371bee8a2c60b196d8169b4d25fab5d8e" - }, - { - "payload": "0x1419000000", - "validatorIndex": "44", - "signature": "0x5083b208582892459eeb6e495db4e3a62db9700efd187eab4287f1dce057a10878ba94e9ea38ee75634dcb1db101bc5030821753f8cbbecc43e5b8f86a035984" - }, - { - "payload": "0x1419000000", - "validatorIndex": "45", - "signature": "0xaab3a147ec9f0207b6fe5d151884732838a86d9963eb6e3a4f91dc9186611842451c850f393dfdd1c0a94368a4faba0983f46795cae4e5c81e3d63b66896218a" - }, - { - "payload": "0x1019000000", - "validatorIndex": "46", - "signature": "0x84fe812591ec5e97fd7df2cad2a4bf4e7131eea9947139d307ecb7f0ccedf42d7772e5cf64b560e2906df4312d552d1a85b7282349928f1991cc715a639ab180" - }, - { - "payload": "0x1419000000", - "validatorIndex": "47", - "signature": "0xa21e87d9b33b7b03befbd815b53b38ba0e5aa28d7cb25f86e8a838dac9429c7cd62c784763ea2f033be7478e3af69df5a140660b844e16b6a3e9835fc2905a8a" - }, - { - "payload": "0x1419000000", - "validatorIndex": "48", - "signature": "0x9a3be94ec5fe7f4d5335e2602a06108dead0aeea7dd9355af32611b3e868ef5245c90837e2f80b64a01b10137d16cc1e39405d572bc8d449d6222729dd646681" - }, - { - "payload": "0x1419000000", - "validatorIndex": "49", - "signature": "0x88daf7a7f23a9ed194fc350f5a9f6273bd613963babc148e2acc4bb6cceafa024838d1a4ae71cd0b77474fd9841a1ff079da45e4b8c4043cd4d935fff0dba68f" - }, - { - "payload": "0x1419000000", - "validatorIndex": "50", - "signature": "0x18a94030dda51da8da732b36ff40dfe0119c5ce1ef86b211e39d75650f49ca753e610e3182e705c634150ff971e6539b8ad67a037cc16e4fd637392b978e4780" - }, - { - "payload": "0x1419000000", - "validatorIndex": "51", - "signature": "0x46939c216b70225c83e4b97808802de89213c43374e872aaa35860a42ab159527f98d1ee59f2d173ac299d3c7d25a07606b911536a4bf5aa5c2efb58ee1c458d" - }, - { - "payload": "0x1419000000", - "validatorIndex": "52", - "signature": "0x04789ed529eefc68eb623c565e5dcc9b68f78d975c17af0637f180b2033fa47a069e7ffe09e3eef95c74671258025eac965586ac14c7fa73604ceb5de6e1e086" - }, - { - "payload": "0x1419000000", - "validatorIndex": "53", - "signature": "0x5c1ded578be73a552e4a260a38ed754e0f73c190acd2e8c2f7ceb81f1274cd1f28872e41c75a9021abc609ecee792814c2106e307d5e4e226d7275eb574d3a8f" - }, - { - "payload": "0x1419000000", - "validatorIndex": "54", - "signature": "0x0af1b75354cfd4f0336093aaaeaa1bed051d85a2a37d1f9a5b4b85847e7be54667b9b577e6c491ed7659050073e9eb4c15adbb02673dc8c220f34efb0ac1c58b" - }, - { - "payload": "0x1419000000", - "validatorIndex": "55", - "signature": "0x261470e2a06a854db141dbac8ce690f7095e45a1e5a6947693d4d4adc584953b9a4be99a1b91694dfc499f2d0fb88e1cc596a4d5d29a6f71578e275278b2788c" - }, - { - "payload": "0x1419000000", - "validatorIndex": "56", - "signature": "0x88e349e01062cd5462541aaf0860dd3a14545da7ba24f7ff931a07c807d232614580373aee3921f8ede3170b81427da8dcd3dce79465275b051c35787c598b8c" - }, - { - "payload": "0x1419000000", - "validatorIndex": "57", - "signature": "0x32d99af2f5830fa9e60c7f77059f791569a83e8ee20d0877cfabb48cc961e2448dc6934c96163d07f80d10bc431cd5852795acf3e5660165be189c0259096b83" - }, - { - "payload": "0x1419000000", - "validatorIndex": "58", - "signature": "0x5e08e66fd3851fd6e6f8c54c87d477f15ab1cde589e6949b0c2625aa028eaa31903a0e9ddec95f03e4cdc15b35785cacf604132922af529059ea928402212a80" - }, - { - "payload": "0x1419000000", - "validatorIndex": "59", - "signature": "0x6807f679fe8440024a637842c6df7554b389fcd47a5ff3e76709debbca8288376dd64dbb777650b3a12c4ff028936a488c34471f32b4c149cce6c5fa2ec06f81" - }, - { - "payload": "0x1419000000", - "validatorIndex": "60", - "signature": "0xb8eca05f9c228af8a1f60abec60fb08f0f3282a571c51036618efd61a03d2230999fc300f7d4f66cdc2f3bc0383d9df9bec51014ad62872d5634823adabb4b81" - }, - { - "payload": "0x1419000000", - "validatorIndex": "61", - "signature": "0x20e010f00e9f0616ca8fd9f70098a44f8799622c40f621222dca54fd443ee840a61d487548e2d216de4317e1f5bc482b0f396d73d7060863f9cf0de9eeee9888" - }, - { - "payload": "0x1419000000", - "validatorIndex": "62", - "signature": "0xc81beada3ee377770ffbc602ced9decf930059bc30ef16a27e2912ba9aad3f69e0fd06ab6add20f9ad5aba85212485356b0e7ae4f785a9affcb00abc6dc7068f" - }, - { - "payload": "0x1419000000", - "validatorIndex": "63", - "signature": "0x365ef6cb80a9bef01c84d04fb8e3d749e9a87daa4e4a6144af72297f51cbb02f3a243d5f29097dfa36e134c8088913ed19d5e7ad6c4b3590ef19e9f05b53d18a" - }, - { - "payload": "0x1419000000", - "validatorIndex": "64", - "signature": "0xfa830c2632dbd0ae0c2356c89d314e6fdb13873603fb6749b7a153c974665f2151137321edfd50419726777926b2fc154d16ca1fde2ea1ee4f5dc68fe22d1e89" - }, - { - "payload": "0x1409000000", - "validatorIndex": "65", - "signature": "0x30e4079c9160c89da1017c7d81db6c1ab36fb9dbf5d18538c7a3d0ae2ad1c5756eef749cf67360e42bd646573dc8e6d02b7b17149e23b6de0156e5f13478ec8b" - }, - { - "payload": "0x1419000000", - "validatorIndex": "66", - "signature": "0xd845328c5ebbfa64a55e43cf1e9dfca389d0e8d79b23c7f55676a5cd435e1a76f712558f0d957d44d921a2153d794b6978a88edfb90400e5e809fcf7a6fbaa85" - }, - { - "payload": "0x1419000000", - "validatorIndex": "67", - "signature": "0x147628cc4e53857d836e9db7eb0b83c03d937a115f4b62f23c2a5aad9b1dbc2e1ec0a4f262d97087862d1802a3d5b65bccf7f0d96f10b5bbf95844a9facb9b81" - }, - { - "payload": "0x1419000000", - "validatorIndex": "68", - "signature": "0x667bdeea6433c1a401e6f62a62e2b1565ea330209ea9ee86887721f27f36f43c738e2571e16451b3c2ed0f74d73268f35b74300658539dd108c76c411dbe828e" - }, - { - "payload": "0x1419000000", - "validatorIndex": "69", - "signature": "0x445f3c7ea84c801e59704a2c5b4598d5cb97264d747898bf0b86d24f06a6a37007317facede2dd8a81d5357016d08ce72626452a91201c12c6699b57163a7e86" - }, - { - "payload": "0x1419000000", - "validatorIndex": "70", - "signature": "0x4cfe503e708abb1f5b4e99ea7d909d8efae5ef338bc43d1a3d76b425e893123cb8a1a614d73584485f6577a4a2f2a42771a6a6409719e0b88b11949f42e9fb84" - }, - { - "payload": "0x1419000000", - "validatorIndex": "71", - "signature": "0x06eaf083f5ea4a6b374b08722806e2f75a8e05dbd8380d969085b5b07bb05870c88cb255a846ee8d7826847357838ceb66be892c494ad83acecf1e6a138dc586" - }, - { - "payload": "0x1419000000", - "validatorIndex": "72", - "signature": "0x3635ad1faa384bdeaea98d74526d69e36ac30b2db73785b204753ec03168cf09f2a9b28639ddf20206496018c028608eb85ef91ed9519517ee90cc9878fa088a" - }, - { - "payload": "0x1419000000", - "validatorIndex": "73", - "signature": "0x84de634be766b377a3857804a7136d77f13f22c84f5ca32c3b6d255793cf454b8242bce01303beeac17b4b130b6e602484aefc34b3e29064596afd7006364084" - }, - { - "payload": "0x1419000000", - "validatorIndex": "74", - "signature": "0x62b450bc7d03b0854cdc00794d79e0b72433638415b3ab87f7c02e8a160b283f6c9a68600ba09be7df63fcde47a242bd93bd6680f4ad4dc4dbf2c4fa19d7d183" - }, - { - "payload": "0x1018000000", - "validatorIndex": "75", - "signature": "0xf63274aa892d6886736f146ffa28e55d187d9f70c7f623d689e83e60daf8f23db12224cba2ccfdff21db9bc7979791fc8f4764e8aa4191f2fda695b1f4610f8a" - }, - { - "payload": "0x1419000000", - "validatorIndex": "76", - "signature": "0x7e291fdce6115ccdb3ae1159acbcbd910e323db36508a3e68fa1c57174e0a15806bc9b7007acbe6e963b2d20b79b2a09a3facdf1011a5b643a48450f6b164f86" - }, - { - "payload": "0x1419000000", - "validatorIndex": "77", - "signature": "0x88e3d3fc10fee653f09d045378d4d47e842dc6b77ff022c6863a60885ca5c65863be2ab5aa6cb795e54c0b127695810f5d60365f23211638cfcb6a18040c3088" - }, - { - "payload": "0x1419000000", - "validatorIndex": "78", - "signature": "0xf0cc9f8fea3ecb947aab8315d600567270966d5c3581ba174ea6bc3663aebb00d00325764a9d08f63040ab8142fe5c4ffe941843de8770482dd1d4d99aa08387" - }, - { - "payload": "0x1419000000", - "validatorIndex": "79", - "signature": "0xa2c055f39db37670d9bb3da98c72d846803c4ef0658afcc0a6c2b58d5defdf4ddf19bf78b75b62282648d8ebe7c8c77768bb181d6c040832d41a03a06a1fec87" - }, - { - "payload": "0x1419000000", - "validatorIndex": "80", - "signature": "0x9aedb80c459ffd57891643af75b83d5fd6c85791e04a9303dd465316d39025705ecbf35c5fc9b95f3e0347d98a963a1af82f4f8a2ed7ca56b2f49b9f8e28f983" - }, - { - "payload": "0x1419000000", - "validatorIndex": "81", - "signature": "0x1839f0d55e0effeb1ad0ae34082a7b5100836c8de2c1d040e1a83f03dcd9ae141ea21c1be5017b70fc19e38da26174fe99b9ee3567bb59174ece7583e53b9181" - }, - { - "payload": "0x1419000000", - "validatorIndex": "82", - "signature": "0x4238d8459578878d1aa13fbfdadba3b7308ddfa3a9579f359b59b3b920461c54f912519cd84947b3713fe611ce059d3b7bed3a226fddd79030527cdb34325b83" - }, - { - "payload": "0x1419000000", - "validatorIndex": "83", - "signature": "0xe4c0a5e692dedf6cfc7a187dee262b82e94e42b977e11783bbec3a13c6fb860a368187a73927173b884da2394b5e4cce8a37b075f04d73db8f62d2ec43198a89" - }, - { - "payload": "0x1419000000", - "validatorIndex": "84", - "signature": "0x52acf79167e577122a7845d4a52b3c7ec90849a33690aed5c5366829b45e0979b9cea4c46387d4af136e85da2ebe90779d5d918976587728b4bd202d5fbd1c81" - }, - { - "payload": "0x1419000000", - "validatorIndex": "85", - "signature": "0x2c83bca1cbbc7048cf80f62d954589c354a9ff6694735d6a9ff3764a089e9b5f371b725453e914bc383f154ad69a5a62af984b11c4d4a49c205790b88b7fb081" - }, - { - "payload": "0x1419000000", - "validatorIndex": "86", - "signature": "0xd275d87dad1b1da96807f267e8ff8e52d6b6ddcd450089796645de94bbef062c4b47aa0d7b97d861ec76f88c64cf52ca290527496262be3b7e13362ea671fa81" - }, - { - "payload": "0x1419000000", - "validatorIndex": "87", - "signature": "0x7e73c5e365214c032027ce4850462021b6e53bc4ec3cbe5cda5cefca4a599e7d9e64ffd4f98f2e06d4b619272253c303be1af19996c69e1af882b53ea0d07f81" - }, - { - "payload": "0x1419000000", - "validatorIndex": "88", - "signature": "0x2c29df3a15f2bf959e551fb5b50f470f980f0dcd69679ef993da73af6f9fdb1203140594ca7767207fa533bdc4371df2950b887cd3877963a6e1a1936099ad8e" - }, - { - "payload": "0x1419000000", - "validatorIndex": "89", - "signature": "0x46efaa8c67f1274a00035a6a1b4039940e10137997addef176043eb9db0ea500d0ed94d4b86a576884f7e68cb6927f22b6ef483a558e001e4cc81d87a7c7a988" - }, - { - "payload": "0x1419000000", - "validatorIndex": "90", - "signature": "0xbafa8009c782abd7f5bc4a8ccebaa606f9a0160882ff3ee0e2a13d14be1fc14707760e876b5ea6aea491eb2049ff300ee5bce9c1b0e1ff9027f2ba59bb336c87" - }, - { - "payload": "0x1419000000", - "validatorIndex": "91", - "signature": "0xaac70869d955f61aedc58c11b223b7016a57c37dc6eb114887d289272e4dbf42fe8959b11c93eb34a8ed1fc97d605d7915b6f1604864a6b787bf0ea4c6eea585" - }, - { - "payload": "0x1419000000", - "validatorIndex": "92", - "signature": "0x605e402ee435d444cee82ffd3c1a98be5809ca61b641e5fff2bcc7182173f218400230d04cd23c8432b98f888e5f06f4422db42016722682eef57cab75489f8b" - }, - { - "payload": "0x1419000000", - "validatorIndex": "93", - "signature": "0x00bc4c96d81beb4bedc41833e9eb09c85d4b4c5349563f011e9cc4ca57d9607514651a6b22de8eee3d74c939882228abd74a1b398d4906566f2385b5fbf1ed8c" - }, - { - "payload": "0x1419000000", - "validatorIndex": "94", - "signature": "0xac09907bbee4924510eea4f6ecd7377063ac2fefbc0bc32ed100af47ce920b2b76b73146a85750109e4367a202422f875756ca0994ec870710b6880f6a762383" - }, - { - "payload": "0x1419000000", - "validatorIndex": "95", - "signature": "0x3e209a7e70b3f92f7eba3554afd3e8701d3cdfa81d3f7ad701ec53d13b47800297c15745c595bc68a49142a8b1ad2afbd46bba6c76b9e367ea2b8d8fe8fe5786" - }, - { - "payload": "0x1419000000", - "validatorIndex": "96", - "signature": "0xe63bdfa635cb0cb6ece12d0df5efd610673a406ac398c53358b19919f8399972452420140184dcefda9ab5b3b2a404043b8ddf3e8d59630a7f51e60093efbd81" - }, - { - "payload": "0x1419000000", - "validatorIndex": "97", - "signature": "0x06fbe5cd135d997ba13be82a213b42f44ed1e4887c78cad547d59c5c2f5f9270611f4e646de2f586d88117e5ec953fdfed5387b76ea34f82d81d829c287c748c" - }, - { - "payload": "0x1419000000", - "validatorIndex": "98", - "signature": "0x5c02d91506c571578d1183871cbaeb20e326b3adcee69a25fe908c7c0b8b0503550822ab58c2aa204e0ec3d83755beff99ba73b62650e874c6f76a19fa702686" - }, - { - "payload": "0x1419000000", - "validatorIndex": "99", - "signature": "0xcae42a6ec321ef7f08e9af74a7ee62ab89e65795a78d2adaa81ebd8b32ade96982fb04de061d40c5bdc3b9979d293cab87215c736d7558b4174cc11097b48887" - }, - { - "payload": "0x1419000000", - "validatorIndex": "100", - "signature": "0xf83b7d7476b9a82b6e0597fa2c56adef6fd13d7fe89b1526a7fc54d1314be92d99cb69c1003ca47150b5ec20371df54b8889f3efcd9759ff8d54e0f772a68d8e" - }, - { - "payload": "0x1419000000", - "validatorIndex": "101", - "signature": "0xd096f9303c81002b94cb645678e7f213754bf510768676dd18abea47ec4450367dc6da6099304d2e330168cf2f1f4ab867867616e041248ae4882eb815c0ed8b" - }, - { - "payload": "0x1419000000", - "validatorIndex": "102", - "signature": "0x4240f8658a6a16f924d11a6b2220049cc370919df6b853d4b48222636d097779ce88f954c7532b471bf97ab96c7781aeb3399228e477bb277e77abf9dad0f18f" - }, - { - "payload": "0x1419000000", - "validatorIndex": "103", - "signature": "0xbe0bcfe6161d5d82656cddece2b39195a6291d1958a6e951213c7be83d3662573cbc903b9c8b4815189d5af11719aaa1000e69a757a587785c59e2e2c6aa908b" - }, - { - "payload": "0x1419000000", - "validatorIndex": "104", - "signature": "0x98d980776e2538019a492bc723eaf1523b5c50708328df19ffa854506736e740feb1b77d6542f6994c73fc723b774dfe90707f078646d86327a6f32b160dc58e" - }, - { - "payload": "0x1419000000", - "validatorIndex": "105", - "signature": "0xa0d0b3c4c3fd71e9af662595e3d2eaea37b1f7020b80cf5cc1438dbe44bcfc6a2da27e5b4e51470cbb09aeecb8db45b07d38076fac899cd6084e066a1d587183" - }, - { - "payload": "0x1419000000", - "validatorIndex": "106", - "signature": "0x0663c9351122aaef0bc5bd08d85f2882e1d066ecf1b2ee2e5504ad31932b0a3b347108956e4440baa6f8b4b7f63e7b59368c6303d49fce7f3e5148ae35a84e87" - }, - { - "payload": "0x1419000000", - "validatorIndex": "107", - "signature": "0x3ec6d8f039818e1e07fda673c757e35428fef42e77adebefa4448b940107233e990e49ad3413be8b4ba80501284e6e103c612960b21a3cc33a45ba793b58c589" - }, - { - "payload": "0x1419000000", - "validatorIndex": "108", - "signature": "0xb439fbde26d08be9d194411fd3be742b3addd1d460e30d666b0104cc584b994bff0c2552046d15e212cf7943c3084a995e4cc0007677120a2ddd4c17a4895383" - }, - { - "payload": "0x1419000000", - "validatorIndex": "109", - "signature": "0xce4e0880f81bab19684681caa17bbbb9c35e11733751aed6767ddf3d70a1d60b7be1d269c8261a9346e6df050864352abb92a7c14c02de99254f87e1e6d14484" - }, - { - "payload": "0x1419000000", - "validatorIndex": "110", - "signature": "0x5eaa10550c26859b062ccaaee0560e1b4991f94bedfd6d5900809e648ca5cd46e026e2837321c2ba0b8d838e65fb74556a20062f9f5ad5ff95090beae6732489" - }, - { - "payload": "0x1419000000", - "validatorIndex": "111", - "signature": "0x627bc61fb2c4bed923534fc5501492caecff1b656d5c8d9deb12af24ae33dc28db574796bdcee820bc62a9a9c9605bff8c05560595eb107a8d16a301503b198e" - }, - { - "payload": "0x1419000000", - "validatorIndex": "112", - "signature": "0x70bc0b842805d825d826413a24fc9b4b2a619ae0964a8cedbbf2c84e49783e79c4fbe884fa9896b5906481a61726c3d4ebd6c3eb74323b7bfeaf9ed8c4976784" - }, - { - "payload": "0x1419000000", - "validatorIndex": "113", - "signature": "0xceb1655de74595aa2db4771773170c44f8ad4741fa5871cd0ffc51972fe6b73928e9ec8be3f80006ed67e07cacb90abc2f2fbee42b446ee484907ce8e5fb9086" - }, - { - "payload": "0x1419000000", - "validatorIndex": "114", - "signature": "0xcacb8445778b13c2027a9a025c50eae48c9033acd3f6e44256c80924d889330418cf4f8d29c794e0a75b96e3a6c090eee22fc6c02bd6ca080770d9fc89f6ea8a" - }, - { - "payload": "0x1419000000", - "validatorIndex": "115", - "signature": "0x1a84caa913b02f1004f83375534690049168747a169d5632fbf617debbf61710dba66ba38ba9e1cb020ef0e66e10e0f9552d2f508ec26332be09085daa183f82" - }, - { - "payload": "0x1019000000", - "validatorIndex": "116", - "signature": "0x44e94742785c0b707c92db62b3345294a16d124113c0b92a9269bc77f57ac11a8e0047d075ad89e76c9b4abc2600ef3d195a8e4a5e923d3125ca429059143985" - }, - { - "payload": "0x1419000000", - "validatorIndex": "117", - "signature": "0x5ec6b6c31c9737302703ef1cb267c0629c0e43d5aa301e55e05f03e59501f92d2f15ab89a5013d24552eed6ac30997a07ab3b3208b77d9726864772947516c89" - }, - { - "payload": "0x1419000000", - "validatorIndex": "118", - "signature": "0x0c6e4014e28d0f55075090aa05e51abade84bb22255ef944cecfbaca6aa5193f64af2e0ac7407600b8bea7fb756c117e5cd220fc6260bdf7c9add05699105e85" - }, - { - "payload": "0x1419000000", - "validatorIndex": "119", - "signature": "0x28c575ea7dc16c01651c1f732a3d65ca3a35480dcc4f170b8979c0655aa1193dfde505f2a11c673da5a9742672a5f6f748cd6d6adfb0be236ef56e540360848e" - }, - { - "payload": "0x1418000000", - "validatorIndex": "120", - "signature": "0x8e4249a6286762260f08b5d1811b7bc5e8e25cb7f4b72a4fb75435c66194c320c891270947ed9de86db02202e20dc40573a103b560128914a41d3babdfda5e8a" - }, - { - "payload": "0x1419000000", - "validatorIndex": "121", - "signature": "0x7a7f29d516fbafec3a0cf763dd504a60af7e8b91fbb4f50faf5e582a59591a1e7a9ace887511c925722af103f8fa266ccdb7d0d300e6bdba1c57984ab9a5728f" - }, - { - "payload": "0x1419000000", - "validatorIndex": "122", - "signature": "0xe430b473527345db3d02cc16db27a0d0aa39e8794f9db11ea4ab2736ee2ba20445a3bac0a9ef6771d8b0a554efb7b6f5ea0829445b760ba3500f5149a47e418e" - }, - { - "payload": "0x1419000000", - "validatorIndex": "123", - "signature": "0x6c9763a8351d5dc4dedec3e2faeec6527d3bcf08dfe1df96e6ed3b324302b11ee70b991294dee771ffd46ed8b205db981b5a641232fa3eea8732eb26934bae87" - }, - { - "payload": "0x1419000000", - "validatorIndex": "124", - "signature": "0x0a6161c3ec04db1bdc19762fa607594cf47938a00f6c839d7d113a56cf844c5685afc0a7c1b5ceb9d809b88a296a8aad91039a561d3c5336c68f7e5d9865e287" - }, - { - "payload": "0x1419000000", - "validatorIndex": "125", - "signature": "0xc0eb3ec4743cad0cd584d2ac040547daeabacbc79a247e149d690f3a5af3b0075967dc21414b9a876aac1f08b0b12f1a69ec3fe755c1e32091766ed38f98d88c" - }, - { - "payload": "0x1419000000", - "validatorIndex": "126", - "signature": "0x82abb70a4ed0e5ef7e935afb756f0a3ff2f1a86901812ef3982421e9c2d36b1cf1af80af990e7a84355b35e21870556995359699a3946df5205069c8b64b3380" - }, - { - "payload": "0x1419000000", - "validatorIndex": "127", - "signature": "0x02659b5476972830a8f84a4e5fbab786f9487e1e17d86b5f60a87f68a012ff28fb052ff2790c3d32fe6347e0cd66c2e4b224087b1be86f494fed4c6d0a790a80" - }, - { - "payload": "0x1419000000", - "validatorIndex": "128", - "signature": "0xd81755210794ad118c885d1ca7c5ca0d3171c29b14f62d62f48d2110c53d7e42e15f265c9128e5abdc2fcbb4db37ff9abb7eb06183ca5e9ef908b7c5b2126889" - }, - { - "payload": "0x1419000000", - "validatorIndex": "129", - "signature": "0x403f754d5a2dce00e5dfe3c16feee7e88abc8b70583eb6dc12b95cef14f4c06ebf7fbeb063d12f97c249c27f2c2341aca8e4c55c99fa8721a1f9449321879c85" - }, - { - "payload": "0x1419000000", - "validatorIndex": "130", - "signature": "0xae57185fd3788280615edd2ddf491f4093f4049d60362435c83f3a32a8f7a224a78b32266196847fb398b77f31482c6e4b0ced88999ba9ec76b1eb6e874ebf8b" - }, - { - "payload": "0x1419000000", - "validatorIndex": "131", - "signature": "0x50985e515d0930ca01329ed1f176e0d65ce0c4c20419d1216de3cdd830b3fd782b7af9be0ee5f8f22e321edddb934af8caf715e898a99dc1b0c6fb1bb46b6c8b" - }, - { - "payload": "0x1419000000", - "validatorIndex": "132", - "signature": "0x46fb99f56ae631d0a50250a560e5fc1bb2c9501c9b9e0860da2e65a36060fd54cde58ace106337a1c5644ec26c980c7b4c750d98e00f591c6603cc07b599c987" - }, - { - "payload": "0x1419000000", - "validatorIndex": "133", - "signature": "0xc40a07550c180f2bec720c2463ddd85e387fa53387c5363bf33aec4d1f652035f3b1fb648ea2c7fd569a6391391f8a1362b09a101946169ea94563eba06c5381" - }, - { - "payload": "0x1419000000", - "validatorIndex": "134", - "signature": "0x3cf45f327f03235f34cd9dc5d893d8027c0b756e484502c84d1e3f513306431770001c3bdce1b418e12511bd2956a02d8f1e715b062747f91ed8a21137677780" - }, - { - "payload": "0x1419000000", - "validatorIndex": "135", - "signature": "0x48c0d12f5851a0a70537cff2152728f8d9041e86c9857dda0d8dd2e58ba1807a43b33c23d14971b8b70ce5c5b13e019a50271968fba24b0de79c95fc3c52e387" - }, - { - "payload": "0x1419000000", - "validatorIndex": "136", - "signature": "0x88d95d0140c558db350cac9c520964cb10618527b83132b2e6348e55809d426d09fcadff6cca0b7d829d9ebdd958f68ce76f64b58f23155d74bf8497d8c99c89" - }, - { - "payload": "0x1419000000", - "validatorIndex": "137", - "signature": "0xae67e49124d7532888d89b895fb6960880092aa13a9342697b6b90e6d33bd6464631e4d0902ff637e91f6664691e7ff86808ff84cda8b04d49a824f608163a8f" - }, - { - "payload": "0x1419000000", - "validatorIndex": "138", - "signature": "0x34d6f5161d77d133d4150ce207fbf2402f552482d9759fe3cdb4b5a8aebe61352279efe24d8470fc6c68e66e83dfc8261cba964617d680159cf9ecffed29658f" - }, - { - "payload": "0x1419000000", - "validatorIndex": "139", - "signature": "0x821240a22e6e635c62d14967547d2752abd40b281bd9ca61553b578096f28052c118e51974ca0f0ca882d4cf4e5a69dec1bc7fd9a415611c6d177a6786030082" - }, - { - "payload": "0x1419000000", - "validatorIndex": "140", - "signature": "0x4e28a1bf4097d93dc3dd7ec9b813f3de35712c8c7b8810e1bccc60ad01f0fb48646c462e4c096e1bce576bd60d0161ce043c0ccba1fc3b1ac5970524251c7780" - }, - { - "payload": "0x1419000000", - "validatorIndex": "141", - "signature": "0x0ce15e6bca09eba392fd9eea931cbffdeffa2147fe90e6f1a2bdebdcd6502e7d5d54f29e2a959ccef38c23603a2f48a9f35d9e7c6d8d60aaca0d36e39ac7ae83" - }, - { - "payload": "0x1419000000", - "validatorIndex": "142", - "signature": "0xb057f62e02cada45039f9a40ffa13f487dd9b2714cf1d5c04688c3d0f148d1246255b86086d0c56d5de69f7fdf3d1e3174ad283dff88d2765a4ef7525cd5908d" - }, - { - "payload": "0x1019000000", - "validatorIndex": "143", - "signature": "0x50d775a35e06cfd0ae4816add229b36d418672ce1dbae2c953dde2fdea17253e37958350aaed8bf0d4134ef7eb5722f7f739a3bcb52ade2d9715b4b7e9e5a28d" - }, - { - "payload": "0x1419000000", - "validatorIndex": "144", - "signature": "0x42aa738c9e1358c75c44f408f12826b7b1745add66bb4736e4bc309b1911f26b87a83e0f35eefa54effeceb713bfbae8d2f80fcecc03f06293c955ea96e95882" - }, - { - "payload": "0x1419000000", - "validatorIndex": "145", - "signature": "0x64041c47df62ed3e548f0d7d6301d96013317f31b73da01a2eb62423d5b69e5b2de4dd2290ab97421568e94d303b80a6f33faf92e4ee7a8e04af5184bca0068a" - }, - { - "payload": "0x1419000000", - "validatorIndex": "146", - "signature": "0x0c9b304111be3b94593ff64ea71dc628a312652990cba293a7f440ef64a2913e80cdbb962db2491849da8bf7f7a5cc97d700dd619bf8eee611d66fb1022fec82" - }, - { - "payload": "0x1419000000", - "validatorIndex": "147", - "signature": "0x3684785a1d2c3ff8b032be840b84b834fb4cf0d267d54fe2fd21043e3016f440cb288c151b1a01338d53ac118cfc35f6d70eda414a3aed0c82d253d38f71bc82" - }, - { - "payload": "0x1419000000", - "validatorIndex": "148", - "signature": "0x5a36a392579b5aa07399fd38a773ecd76e4f054bf1fdb151dfacaf419b90c840e72e84c4707ddf758d507a5df28a3d98094045173f8554e6cd245b7df8d3908d" - }, - { - "payload": "0x1419000000", - "validatorIndex": "149", - "signature": "0xc66c34829c65bfc44764af09bfe3291ff535bbde425d3bf604d9b65cdf63c27bf81f5a3a3e124a0468af8e7078498cba4368c6ae36fa02bb14e65693114dab84" - }, - { - "payload": "0x1419000000", - "validatorIndex": "150", - "signature": "0xee340111e3f183b40dd2b1ff22aa453aef38b08c3298444bae924ebda0b28745ea73252ce913e36a672c94d2ab609f910e7c372a48d2f6c97a60ec5aa6c3f982" - }, - { - "payload": "0x1419000000", - "validatorIndex": "151", - "signature": "0xfa8bfa73fba06a17c11b5a25f9b40c89fffc68108ce7049a352282b64612bb38dd79f82239b31b46f2c56611b063f2e8136ea370f5087bf18949143c73988e8a" - }, - { - "payload": "0x1419000000", - "validatorIndex": "152", - "signature": "0xec09bbddae67ce0a8631a944a1bb8907a9b5484bd804be8c7774de0290d2d875d952fc69f4d5d508675eabf6a1a669c351477527cb641e375e7c88f8e7c45583" - }, - { - "payload": "0x1419000000", - "validatorIndex": "153", - "signature": "0xe48ecfe16d373737dd4dc1221414b11473b08614a2f3256c5c536d09a05d534bd25d26a8646875cd7bed0c419c68ae92aa54649cd710be0c6f4f202d7770d185" - }, - { - "payload": "0x1419000000", - "validatorIndex": "154", - "signature": "0x2827971897a4ac8fc712611cba04b7efca75b445929329deb5988c72fafb735b47548f8248101f64161fe3cb6a3ff5ec6252b89843d95bb8587742351376b086" - }, - { - "payload": "0x1419000000", - "validatorIndex": "155", - "signature": "0x0e0f60dc0427990b280130fc5eef3180b7626cfad31d5dcae7554966c90d6f5d74ea587ab4792cad342aa3d0f3b6a87bcc915ce5542ff40f92ed69f90dcba28d" - }, - { - "payload": "0x1419000000", - "validatorIndex": "156", - "signature": "0xb6d198faddf48975b93427c0004dbc4e56752dc605a99b41a9a75bce3c5ec51727360d3a6f57ddeb8a37d9cb76bfbfd200adec954024d81ac626569d463ff388" - }, - { - "payload": "0x1419000000", - "validatorIndex": "157", - "signature": "0x268abecd6ea45d3eff403374ac670f2096e3c9e434ce144da19da1cc91bab73bea3889643c4b8bf9a1e27ff3ab4e49d10517517e9730b8ab7d9f30f3f6abc086" - }, - { - "payload": "0x1419000000", - "validatorIndex": "158", - "signature": "0x20c1dab4d0bb99637b9569072d1541c9ba6619ff25938344dfcdb36e8e3652529e50b13c8fd48e95d5999adc7f69c1346cf71ac7ea5d76c76bfaa7276e570b8d" - }, - { - "payload": "0x1419000000", - "validatorIndex": "159", - "signature": "0xe000d6f759ab491e80e7e8466f20e2e2bec793025007b59523625fed98da7b034da6d577887c75cb31ebc5a3979e8189011a1bb961306a223cd8a2004af4fd89" - }, - { - "payload": "0x1419000000", - "validatorIndex": "160", - "signature": "0x2c484cb0b32e53acb6d3745b9e56d2f6fa669ee1c86d356a4b3bccf41180372d324b223c3615966445caebda35bf2a209729825a29cf6f237c2c2b0b6e6f938f" - }, - { - "payload": "0x1419000000", - "validatorIndex": "161", - "signature": "0x8a2566463cbd9b7292200b78e0ca0cdccbe1542e989d7b0cb43a80e73b8e291b54ccffc27af6354b39c87ed72c1e55648e6a0daa01eb7b429a72bf7c60fc9888" - }, - { - "payload": "0x1419000000", - "validatorIndex": "162", - "signature": "0x1c1a06af8e08e2191afd5109c14c3f355d6792261bceee75cfed731ea06b023d38bef61ff588d48c5ad5f6e143b86c6a74a85b08880ff0cecd04b4d12834b187" - }, - { - "payload": "0x1419000000", - "validatorIndex": "163", - "signature": "0x80f15ad386855413617e4ad11625bb4f0a81d660849c5d16263e300f909f371255b9cc4244073362c14cc1b4510cc424ee7d5fbcb40a552c18c85c6831fc3188" - }, - { - "payload": "0x1419000000", - "validatorIndex": "164", - "signature": "0x0e93185cf92e3532ca7a19dc48d02efe6df4b56a08b13f6fb7b24990e59fb66be48673ccfea158f5c9264c8f0d4fa15d975d1d3cd27349704efc392415db0f8b" - }, - { - "payload": "0x1419000000", - "validatorIndex": "165", - "signature": "0x7014268ef8d3f61348bed01df595d70b5a3a68243cd44f0533d439ad64b0846629b2cf27bb0509b28f7b3d43f4151a639fa554498af2ec59c487088eb001298b" - }, - { - "payload": "0x1419000000", - "validatorIndex": "166", - "signature": "0x1826cd42dd7979b9c131d02a707f8940b0e435355260b4cdecb11691b02ee539e9ec9b2faaac0bea3538ec57989f6b1f0308c869da453381b623dcb629d11586" - }, - { - "payload": "0x1419000000", - "validatorIndex": "167", - "signature": "0x58f99344c38334a91d84dd56e9bf33f7c376642003917f76b52d19b55c239037f4e657cefc08c9a5e6778a5a135ace213e204ed6a4c48e48e65dd66045530a8e" - }, - { - "payload": "0x1419000000", - "validatorIndex": "168", - "signature": "0xc45c981dc4e900be072b113281c9f04994e33b1b745b9309ef2939e4064ea45c6ae9823d1c2ad77c6bd8c6ec212b10dd794eba4747464c3ca79a3fefbc3c9b87" - }, - { - "payload": "0x1419000000", - "validatorIndex": "169", - "signature": "0xe6caacc320b5a5000741825741f8140aab8ea746515a80c5e4112daa4b881356d0e210d2370f037731d4c5c56ef2915115a53e1de659dd4249fc1ea9e9cd9e8b" - }, - { - "payload": "0x1419000000", - "validatorIndex": "170", - "signature": "0xb072c5144b24a8b40c6266bdff58cb1fec4d06b67beae534eba959896e024835c348dcdfbb4338674bbd60d0330c2d4ea25a7aa2bc548328c2b0656279c8a68f" - }, - { - "payload": "0x1419000000", - "validatorIndex": "171", - "signature": "0xf09c16a916e62622b5684104ae403fa77a8419db04a206f49a347a4e35644b5124e74f1aa8acb499b4f0ac1b9df6a9331b634263cc8013384db729d402140481" - }, - { - "payload": "0x1419000000", - "validatorIndex": "172", - "signature": "0x26790200e32739c1459ea2397edbf2b5140b7f44f1a1d80ba2abab8f16f1c0131623f8c9f0647680116480737477f14f212195ffad1438e966df230975bee18b" - }, - { - "payload": "0x1419000000", - "validatorIndex": "173", - "signature": "0x02af8e707a9d3449140b7982d16be4eac9bc127b7e16cc89170a85cc8d28ae335def0d3093c3dded95fb4a302b77b02eba8a6654cd6f84f5f91fe6be34ff1e80" - }, - { - "payload": "0x1419000000", - "validatorIndex": "174", - "signature": "0xd0bdc5547b4f4e1bd14666f985ac10506e4c1e42bc3d99b99ec5868948a05f39649c7936817f3d00a5c34332e65c0c08d6b45cdcd67c175e4a47385266de9787" - }, - { - "payload": "0x1419000000", - "validatorIndex": "175", - "signature": "0x068d9f16f826d45e53f3bf9e880c1ead9aa0b71ef707b956468611bf2463974835429f8cee67e0cc9b7056ba55fe668fb7ecc091e8fa07687de0e46179e41b8a" - }, - { - "payload": "0x1419000000", - "validatorIndex": "176", - "signature": "0xd82862f757e7754ba030056af08ffb70b69c9e5d3a79cfb60b9fd4106226176f2fc3b5a162118741083c9655a357cbaaf5db808e12c038d6ff09155219fe4d8b" - }, - { - "payload": "0x1419000000", - "validatorIndex": "177", - "signature": "0x525b2d9b939534e9b3ff065ca104b49a9d6a490f7707dcaca4f0b68a402be3213a523bdd2f4e86911b9ab944091e804e499c19df38d7617553f4ca72c3ecb98d" - }, - { - "payload": "0x1419000000", - "validatorIndex": "178", - "signature": "0x5cc65977e078a90dd9f880c18233b3bdad41f5a4fc59b85bde364f1b5ca83557da7a9c39b0ccdfca8b86f563a517628b4d4874554f2a9401bec0baa328859e83" - }, - { - "payload": "0x1419000000", - "validatorIndex": "179", - "signature": "0x1e168a3cc4f389b905178d011d737c00f27efe05243de17e94b0ab382ca6042bc27cef27fc861890cdcd487b5bdc6f2ae4495c818432b70536cdfb0d4339e089" - }, - { - "payload": "0x1419000000", - "validatorIndex": "180", - "signature": "0xd2be2a852463686aefc42400538311a56b34cd4e1d58e63bcb61671447d2602416a7d9bb01fdc92ede974a9ce5a084ae0e79395b5a0c78ddda0287e10274618a" - }, - { - "payload": "0x1419000000", - "validatorIndex": "181", - "signature": "0x00bd8b3cdfe003f888512be74bd5504e27654a13ce455d228f72b72d52ecab0410115e2d0135260c6cfc57c5e030094f611ea0c466d2bd00ac17249e0b1d818f" - }, - { - "payload": "0x1419000000", - "validatorIndex": "182", - "signature": "0x5cbab3a785a0ec8fb54a77ce9759194392641ba0280bfbdd63297d87e536e66c2047e9defe4845e01e1767bf349f99195aefe5e95ef87299e953f0b8cf3f5a8f" - }, - { - "payload": "0x1411000000", - "validatorIndex": "183", - "signature": "0x50fb7cd46bb4bb2bc8dd6ad5ef24a552d497dc4a0d9569b6b6a314939b0da51e7c03d387a726dfd77a6781979f6cd7fd052c1f5402a4dda61ebfa9b9bae6a088" - }, - { - "payload": "0x1419000000", - "validatorIndex": "184", - "signature": "0xfe08c7205124b7d6ccb8e5930e667c34fd6710293ba2a914fb1ad3e96d7425580718c91f6b4135151326857a7fcf5db280c172124bfe30b7963bb4d6313b358c" - }, - { - "payload": "0x1419000000", - "validatorIndex": "185", - "signature": "0xea0e5cb17ff1cfd5890d477b8ec80edf5843a1769b1d12fd5557fb907a22ce76d8085a78df92dcd7e9c3cd42c5f579f3cfc23e8350afae3ee6b6133a6d035983" - }, - { - "payload": "0x1419000000", - "validatorIndex": "186", - "signature": "0xe620f2b1ced4c5be4b3f80ebccef6d8e3a874acd8982f8e1a72da421b0ca7925781e634f9d5c51fb6469b95d61020ae7091499928fd8630afca6e673b4d2bf89" - }, - { - "payload": "0x1419000000", - "validatorIndex": "187", - "signature": "0x2ecc92dc77821b4ad271677cfd690e3bb595afd332da545b23f7f6848a74c94ea272f99835c44778e3c14f94e83acd8edda767d247f365dc7f70f1e6b02bae82" - }, - { - "payload": "0x1419000000", - "validatorIndex": "188", - "signature": "0x12a0c3825282f6eaaf22c45fcf8ae170df36c90cd42aef043a3f63c501b1377f35a1c4f406174593a7b213655aac3a94ab4015a372a08f1eb4acdc436ef29083" - }, - { - "payload": "0x1419000000", - "validatorIndex": "189", - "signature": "0xaad9dd7893daa125d8780c4063381da4ebdd48bf8ae7360ef80815df6f43ac2e571e403b02867551693a60206de3533eb87a4d75b3a457878fbf00d089ea9980" - }, - { - "payload": "0x1419000000", - "validatorIndex": "190", - "signature": "0x42a4fced40599da6eb84491c215cdb7185361c0a182b6ef681ebeac1058b82581732c37db25ef3c183a23dd5dc3001dfc55e9269d1261efd557b66af681baf89" - }, - { - "payload": "0x1419000000", - "validatorIndex": "191", - "signature": "0xb4d991b7de0487f639df0b5aaace64e2c11a121d081af845f2906f45a9e4183ffcb1b1a94cb565e960608ba4b2b6e41fe30fc5ab665482c0f640ff22ff66f686" - }, - { - "payload": "0x1419000000", - "validatorIndex": "192", - "signature": "0xfc5239c2c31699d2f679d0dae90dee79a37222ae6f9d4d6ca63d22afe5a6654daf0839b5097d13eee1f9bd5f9d27568443d6241b2267302e0552e6849a522287" - }, - { - "payload": "0x1419000000", - "validatorIndex": "193", - "signature": "0x42f8f63a93304d8580096100ff3ac3c499d585912a5e18678cb65cdb724ded527f0bf1aaaa86148b1ffb34268205d922de9fcd341c16f5785000ad4ee4052980" - }, - { - "payload": "0x1419000000", - "validatorIndex": "194", - "signature": "0xbceb12e74d1a6d8ecad6d1798a45ceae9201e04b37da95ebe415c56d5313fc4d234a19d1dc875dbde7ced52dbad47752c9ced72f600493a2f7ecacd030055587" - }, - { - "payload": "0x1419000000", - "validatorIndex": "195", - "signature": "0x28882052ad848b8dd1228d64781116f8e95b2fc4d519b2008a271dfe47c2ac5440bf86010a82b4130a510795d34c57e46fbfebeae831a4ac06649bebe0b6998e" - }, - { - "payload": "0x1419000000", - "validatorIndex": "196", - "signature": "0x4473633c7a569816f78f50edd69e6f74524b7db7f4d792a4e3876ddac9a0813e52b6e6a51a37868e52170c5e7147477299bc6eb39bb856374ed924fca32ed085" - }, - { - "payload": "0x1419000000", - "validatorIndex": "197", - "signature": "0x4c9aa0c9c9351c3d6d62f3c13863868eb477df56311fd938b3e6bf9bbbbbcf37492d0e38c99a273df1702c64d66269f69dfd284aac65f6a595f75cf0fded4486" - }, - { - "payload": "0x1419000000", - "validatorIndex": "198", - "signature": "0x74835e0cceb9b17b00a3d31ca24ebe6163735207bfc9f17e8f2c43ff8806f96df5fc782bfad60de8fab669e38ec18fc65755d54c66b459b4b678e73e006a2c8a" - }, - { - "payload": "0x1419000000", - "validatorIndex": "199", - "signature": "0x6ae5235239edd2f9fadc4432bca99b3f922251f93ef3f32db63ac7eaf2d3503f67da2d59c39333479d8f0b087a912cb5a29dc1d6d786462baa971f39c8a8dc8a" - } - ], - "backedCandidates": [ - { - "candidate": { - "descriptor": { - "paraId": "1000", - "relayParent": "0x6c51377632106ddba379416f2ef5e24450e90cee8c78a70daa262b2ae6f27e93", - "collator": "0x1e70cbdfb8be51c4ab07b76094ceffe24e0ab1e94c5b1181a8a55e9ffba32172", - "persistedValidationDataHash": "0x3eca8f6323e7145f85b6a6ee1cf5a76ed3b0b825e70f9ec8c103fc87ec1d41bc", - "povHash": "0x471a6ca0dec2185fe53fbe685ebbf0b5ed34e8f363801195c538cce0c1a7a3b1", - "erasureRoot": "0x3670a7f5ca62abf077b04a186cd85ff7e3f224dec28a894656ba5812d29f3d9c", - "signature": "0x14fa9dd4103de55393a67ff430b2f83214c1dd4e03789a0b3162dd5b1b788e5013035f178c78e78d814359d472bee5b86dd7ae4623ec934fd1dd1560e4ff6185", - "paraHead": "0x623955d1e6708279249f774458c03f99a3ca97a288a23ca958f007d5602ab820", - "validationCodeHash": "0x82a7312d98e4ae4eed52be99f781b669ff9a57f3ab451b5c4cfe6b35601caa2b" - }, - "commitments": { - "upwardMessages": [], - "horizontalMessages": [], - "newValidationCode": null, - "headData": "0xeb98527fe3bcc1e89e37c3377397826eef95043da7b0577088e641ab8b9737ab625b450087da8ce30a912b6040c346daf953f37bba1dbcc8fce369e8c985194daeee2bd75bea8207c26c7e84863ab9b94c0fa13122c51ace8b21e9fe4c0437124996f45f080661757261203ffe32080000000005617572610101208865233a426b20c8634570a966804fa4f972acf4cf15d27d8f994f18362e6f4d695294f23a0e065facea8f9ecea21f9e37bcdb3b374db89e986f0e7c9c8508", - "processedDownwardMessages": "0", - "hrmpWatermark": "10000000" - } - }, - "validityVotes": [ - { - "explicit": "0x9eae4030e5b2eab40c715a9d1cb9f1227fdddacf83136932878592da396d490de4ba51c8d8289732e794b17ecffa221b701e906a337ab59452b23eb526333380" - }, - { - "explicit": "0xf83669a39c01240a1414f07559e5de1e42a4be1b84743ec03a25d18a3b0fed608ac68cd10abed00b260d00b99f858601026951f225ccbfe7d228c31f01a5e889" - }, - { - "explicit": "0x30da8de9b9775a85a1c9c48ecc3e43cda8f5b045e497fbc5f740f2cc0dafe50c2b649af10ed354da4a11b9392ac38afca4b033d59213423cd57fe272243fad87" - }, - { - "explicit": "0x26eb1e590e250fc054500962cb5ec3a1ed4112de4b728dcc0ef978195b2e2271c55e874eb04dbf51a121bddb68d5cc2918a2c201a23478ae7b0cad51fbeb6286" - }, - { - "implicit": "0xd6932ef84b5e8d0fa8a6372eaab4c08e3c8f640265c7b59915ee753bf00cf13429f12e7a283f4237753fad40a9696c31e2962442569958fccfe045157005f089" - } - ], - "validatorIndices": "0x1f" - }, - { - "candidate": { - "descriptor": { - "paraId": "2000", - "relayParent": "0x6c51377632106ddba379416f2ef5e24450e90cee8c78a70daa262b2ae6f27e93", - "collator": "0xf65e9d4919a33689872aee620fcd869729f6118130c9c2637ca28440670fe54d", - "persistedValidationDataHash": "0xd3321d3a2104f586988c422007a0b78b79aee49da6fadd08bae423e7cc475f4d", - "povHash": "0x135c0d931c6cce4075b89c509ea90c8ae5742cd3acc283509f60e49aa122e139", - "erasureRoot": "0xf52b3a1690fcf0b321515118d1d3b79ba2555effbae03626a3a5524b21576c04", - "signature": "0x7aea82a164a8fa4c41715d1a5000b44e6558706c6d4e34d38e550076b6e27547e8238b2327ef4426ccbed77799e381178a9d360b4fa7b9f969abadef8e32d089", - "paraHead": "0xdeebdfe89b981d63491a8909ea24ea94ac365f0c66a1bd261e8682653418a30d", - "validationCodeHash": "0x2e103ca967b16d0938084828ce508287432bcc12d71937c11cc2f49d932a5ef8" - }, - "commitments": { - "upwardMessages": [], - "horizontalMessages": [], - "newValidationCode": null, - "headData": "0x7b5bd7f0ba96728057aeaf41c9713dc5ddfe013d010d4670ccea9043e344d2ecea0f35004474e94d9735a5bb00dff1c6d88212e042fbbbc0b6806830861830348248d9c8d2de26018605c5223c7b65e2e57b14a665d8e05d36d634d5622f50d6df49f6ae080661757261203ffe3208000000000561757261010102231920fea61aeb461e7a9de9c990d588390e7ef2f433d25c0342f3b3f4f319ed46c243d17bfeeeea9f83de9632a88f697f55e4a09fdc6f67057f9498b1028c", - "processedDownwardMessages": "0", - "hrmpWatermark": "10000000" - } - }, - "validityVotes": [ - { - "explicit": "0x1eaacc45315589f1b8548a63c40fad564a81780a982f0886b9a334469df4af005ece13d32cb99bbf633efa6f64b158c73017e21b46811eb8a4fba05e1b66c18a" - }, - { - "explicit": "0xf65cb61d13c6ee47ec0abb8b70968be23d5b3a08147cd1e2b4897d4e5ee13a52b90ae09d1996c13e788207b017a3662038c3b16f4c32ad775d240aafb10a1880" - }, - { - "implicit": "0x5ab83c4bc024bf09ab8773ddeb0b30d937a42a1900fe15c29d52d0e2cf57df1a31a172a7d8977e7d2849309d95fbea7d53a0bcad7bff3b61f65aac5f7cdfd98f" - }, - { - "implicit": "0xaac5342978864eb32d28ae59fc06a1ed1a66728f7389ddfc176379187df16d218c1f0d511da096fa11e62d36f30e2a379e81c4ade7d26fe13fe4dfd7e801d68c" - }, - { - "explicit": "0xa8e245e89c53e7c57792ee37f5d22973a5174b16523fd96ac465e6e5af83fc41c640da9e58f4abbf7187b8f165e790447acfcc4fdbe87b73be2d33a29182b783" - } - ], - "validatorIndices": "0x1f" - }, - { - "candidate": { - "descriptor": { - "paraId": "2011", - "relayParent": "0x6c51377632106ddba379416f2ef5e24450e90cee8c78a70daa262b2ae6f27e93", - "collator": "0x9c6712de13e97ea5c981650760b014e280681c456b72fbffe332c0873ead5926", - "persistedValidationDataHash": "0x567fcedd0351c51a31580ec401f4abe0aed860e37e62f5241bbde647ce15eeae", - "povHash": "0x47926531b3d833b92d669f91d0bfb747fe3a5a9a8d018c9d1804ecd26aed4f55", - "erasureRoot": "0x61971d7d5706a307c02d49f527d8ad1847dadb903a1c578916c57f4f1ff431d2", - "signature": "0xc4bd3b41e605dcd7cd1e8d1326baf57bf5b74c3ca16290bc2b5d3aaa90ec975e16d57ce98d7c7b6ac6b4cb394e85f309514113570b1c05245b2283b230f93b8d", - "paraHead": "0x65939e180190ac2701952bdf174ba69b265c2977045f6a6187a0492676ca1153", - "validationCodeHash": "0xd1dcce63a55a08b397ab69a06124332b424ae8935871d3c0e9c7bff19a6370f1" - }, - "commitments": { - "upwardMessages": [], - "horizontalMessages": [], - "newValidationCode": null, - "headData": "0xc136db6ff28b18408f5f14076764f76d424bffa5de5a893e8cc4550129efbb0852960600532a380b1cd9343b3ba46f218392082a9e2d5940c0f2c8528d4101287edaab17954f93ecaad979e418ba4c7d9adfc5624a588082e647c55316b7f80945935f3e080661757261203ffe320800000000056175726101012cec396f631c6bdc45381610ca9b64b1589eb188495501e1cec8ca2b7c971c1be10d2ac551fda1bcef9738b4564fe1ca0fbe9263024357f15b59670dfe9d1284", - "processedDownwardMessages": "0", - "hrmpWatermark": "10000000" - } - }, - "validityVotes": [ - { - "implicit": "0x3ed60e166579c6a86e5b158a7c39330f52f979b1799cce64dab2e035aaa69c48c8e72d05b8c3d370cbcfd6292b5a4602dc7b87dbe04a6206928349b004d89488" - }, - { - "explicit": "0x9829482f5331b3e2adeedc3114e486e65cb942dd9861611cd34b98c4b26ada5a48aff9e3eb8cdc6b9220ddcea3ee699e50e8447198bc3536a3b9118ef4898284" - }, - { - "explicit": "0x4c499aa5322620008d5b914b88f58ce1d6f784206766aa2a721b3ef9cd574402577e2b54a5cf0f9db4d4d2ea575dc20d6b6a806ada72970ed4af1594729cba87" - }, - { - "explicit": "0x6e6097fde5febe3475d1dbcb7462cf195afd01db0f249179219293f4d2c6650a0d7917a8bf9ae51534b0f013d2851e6c27f9fe6ea7e42a14900651e65b7e3f85" - } - ], - "validatorIndices": "0x1e" - }, - { - "candidate": { - "descriptor": { - "paraId": "2012", - "relayParent": "0x6c51377632106ddba379416f2ef5e24450e90cee8c78a70daa262b2ae6f27e93", - "collator": "0x747cfb1aacda7206a125c66dcd4b9026d2d9d1e5aa253db1fff66ed7bca37669", - "persistedValidationDataHash": "0x14210bd32b13c04e721189394e86958e1c3a2ab33fadfde0ab54a098e7533fd8", - "povHash": "0xd10bf5d7af57b0db2caec0f1f658dadbb320f96d53772c734c9b17950666665b", - "erasureRoot": "0xb1c378fba38ffe4e0fb3069c3238be0aa14c923e04336246cd31ea4edebaab28", - "signature": "0xd4e8a373d2928e034c5186b04ca4bcb63a703151c76f9eb5042eb9e4aaa49469095c6e1f88a93fa0b9604bd06472bb97d56488c907248a4bdee3a4619d9cc883", - "paraHead": "0x15b78b9638346476db286866bb0230fd3e0508c7d04d4079ecef1c7a90b99c89", - "validationCodeHash": "0x8ce8224df71ac76563a1f175ef3f7a2fa98e26f04af960f511ce0df796850a00" - }, - "commitments": { - "upwardMessages": [], - "horizontalMessages": [], - "newValidationCode": null, - "headData": "0x8d1af7fba7076e80b22c6ca3a12f90e967d5ffa1d107af22cce75c51fe14ee4cb2a131007cfbc9a34ee9fc18972e49cd412eccc1128793c150b7deded4fbbd9de2a0eb468411db287451b1e32cef0adf58e7fa8edcb2b05470476902f2bbf5e50bf9986d080661757261203ffe32080000000005617572610101020e289a9c5851ba3b704368724077319a2bd312995062d2a131cce31f05ab0cf562174a6e5cf60108007c17b2180b14d61eebd1f2a3a421c1b64fe792761382", - "processedDownwardMessages": "0", - "hrmpWatermark": "10000000" - } - }, - "validityVotes": [ - { - "explicit": "0x36bc31a045b63f6c1acd0052df99e42dd7ecb917ae9079f70f0e0ca76ec978289456b16b293f98b59d88be0a033aa2ae436287ae2a5a21cb24da0231f97cb384" - }, - { - "explicit": "0xaed2c67065e5d1556421881ccb873a9ab535812d1162767fb4c46d826ffd5347903889117cf0b250769b655c52b091f804f3909ed566491aa136a1a826656783" - }, - { - "implicit": "0x6c9f455322551829ca2c881301e0e4c1148213deaf947785aae42b336f18b05439b3f9d2b6d6c3c4b0c974027176835b4464912e63711f911ef3639cd2048f80" - }, - { - "implicit": "0xbe6c3be49ffa57583e46b4f52cb5009c2c4998c1d32baeecb6316a32d14f242c752cfb7732aab4124c553816d333d4ef7fa80b58920755d6037271882ba1038c" - }, - { - "explicit": "0x3266b5b551efb09b3b88dac03d674daa4d9e13c64cc0c1102cf324fefe05245283ebc8ee10a54c207ec3ae4defeefb0bf57070d408cef73908da01490ca1f585" - } - ], - "validatorIndices": "0x1f" - }, - { - "candidate": { - "descriptor": { - "paraId": "2031", - "relayParent": "0x6c51377632106ddba379416f2ef5e24450e90cee8c78a70daa262b2ae6f27e93", - "collator": "0x66b381c4f884091031c28ef5bb1b8f5e7a2a17b8cbe2168bc467a9eecdc46d73", - "persistedValidationDataHash": "0x62dc467fecf359186ac1dd3487948bb67bfda8cc0c8231af335d18c952559f3f", - "povHash": "0xf5559e448df81fdffeeb58755c6e3eb93b6f5887f0ed2adddcddc23aad7c3312", - "erasureRoot": "0x50ef3e81556387e237d3550a6d885f6a7d39849b07629edb71050e5e0d0b85c7", - "signature": "0xecaf202f36329e840e00e0b88a1cf7c3036f22174903596abd41e252184bbd40875d93083d5cd60e77650e711fb19f18bdfe6ef89a75a807a25dd2607e40d28a", - "paraHead": "0x9a62126564e07a47f77bf2dff52bb9fd44109751227945a6c7c310be85eee28d", - "validationCodeHash": "0x024aab592ae76eaa458cc18f9a80819fcec1caec087eb5263efcd4a1d163facb" - }, - "commitments": { - "upwardMessages": [], - "horizontalMessages": [], - "newValidationCode": null, - "headData": "0x37a3717548a120ecd6d3ab55f337fc8dd362a947ce3ff24856fea53dce4af4db4e5911007bbf8bd957bf579c58b4c6ca84786d2db8d1197e0e5b490e9484d6ca086b3f138c96dc874771ef57a2d055bb9935e6ece3099db73b4b334b5736864fd3eb514c080661757261203ffe320800000000056175726101016e7e4ec19a22f91f7edfddefd687dfeb84dc14a870e39d2ba4b47b4807864762fdc264b17ba184b7483b1a07051722d7fbaccfa477777ada1948b18978556f8f", - "processedDownwardMessages": "0", - "hrmpWatermark": "10000000" - } - }, - "validityVotes": [ - { - "explicit": "0xba373421b022504a045bbc90fa349dab3256164db271995d3d7b90348374e02df91e9b15f9f65b8c63868788399579d7b01779942b0f74897eeaad055de0678d" - }, - { - "implicit": "0x88e5d397bd4c0542be69966fd547caf143caab310fdaeaa241f8fcb1bcd76d57b39368211cb772090c35dbb043abc6a25b73cd530cd0f3d75dc0e819f509c08b" - }, - { - "explicit": "0x82755839fe9c87c5ea50415fdd3ff235c8e120697e28fe701cce6aa47f66a67f5758007db7735bbcdd83c5dc247e1e912beb960137804fb2d2914e9130b3d083" - }, - { - "explicit": "0xf2e468af7723af1477cd092087e9078376546fb7d8e4a87e17d0bfcab10fd5546e5c9354cc640b701e526aaa552d598d050d7c915eaa6dd3633a7a6f206f668a" - } - ], - "validatorIndices": "0x1b" - } - ], - "disputes": [], - "parentHeader": { - "parentHash": "0xf04971f76823b4be7cd4906dbb7da4c8134a458c2b8a796afa78ce465e0390ac", - "number": "10000000", - "stateRoot": "0x06168360078a9f02abe502b7714b053ca8178cfd4a846789ff9a367971e070c5", - "extrinsicsRoot": "0x46a532226cea214cf15f1ecbb152e5da1aff808f0c5fbb15ef1a4f8b9b4ef243", - "digest": { - "logs": [ - { - "preRuntime": [ - "0x42414245", - "0x01e00000007ffc651000000000e2e637d8b600209a50c37b4f745044cf577969f34a8103cf9631754975ae754a9814f1e92a3333321eb5230fce36d2d59c674c62715b15021859125f066f0e07b10b5ddf0eabfb816f8fb132ca1f96be969f5c01f6f7d6e037a1e69b9b09f105" - ] - }, - { - "seal": [ - "0x42414245", - "0x6c24f29d3b683c8468d8cc735681042ebc6c4ae58e6d6cc31f54ae5f963b1d6e0acfa9d014ce2a7a250369ccd794eed4f1252cd4b3f374b9756b8ca7b547ab86" - ] - } - ] - } - } - } - }, - "tip": null, - "hash": "0x47e41cf95f59c7c987494c6fb1602427d3c35cb68d584fcc60099addf2eebf13", - "info": {}, - "era": { - "immortalEra": "0x00" - }, - "events": [ - { - "method": { - "pallet": "paraInclusion", - "method": "CandidateIncluded" - }, - "data": [ - { - "descriptor": { - "paraId": "2002", - "relayParent": "0xf04971f76823b4be7cd4906dbb7da4c8134a458c2b8a796afa78ce465e0390ac", - "collator": "0x903b741cd2f898af63c36c0932b291fc9b235285ea8e34304561a3f0b36b6f69", - "persistedValidationDataHash": "0x464da131bbc2419737665f44325c2de1f16c659813f44132be252b243c8462ed", - "povHash": "0x9e4643d722cc26f42d7db80f5fc0f11895d98d30ecb40e36afa568daa313853b", - "erasureRoot": "0xe7b5b85efbbd32d1fefabd5847865105b8f7c8ccf748c549ffcf79ebf4163539", - "signature": "0x4271c604b7ed06f09f6ecf214200c46191e29c551ddedfeae91b00d3f4a37358c0ef3bfc89fb51f28e789a14694ae37b87c9d756b479838ea092d19369176d8f", - "paraHead": "0x4802a55a455fa8e86c9d7158e0bdee69fe1c5c1819661093f83c057012abe0da", - "validationCodeHash": "0x6ee1ebf8c2e2c44124791cc5d21f624abe120bf5c1797888e0687456b7e8102a" - }, - "commitmentsHash": "0x1395d71b7bb4ca9393280f3842b529792b4827c95da8a9bc519466f0b22417e4" - }, - "0x7bb0130c11ef5f83d3a662ee7a66ba4c5703cb66d938fad3f0f97f02c1a7d5a6f6f93200c4e4bfe06aee4e5cd6875892d662f4f0c9c5b73e9ea682f8488b3d991e2d6efe8df70c47a999f37986941ddb1f3b0aefd96b5b06d86a6e8c7c2070d04d0c3c350c0661757261207efc6510000000000466726f6e880191ad71fec688e7cec0daca406be8a44973f99b8c1ed6a4a8fc2ccda623fd9c6d00056175726101015ebe295a32c330566f7a273c40cc8aa7619277163290aef4fad29fcca787e745f448bb2a10dd4f150b1178e61b88026947e75ed6fd4cc3a78849a4fe4c9afb8a", - "2", - "28" - ] - }, - { - "method": { - "pallet": "paraInclusion", - "method": "CandidateIncluded" - }, - "data": [ - { - "descriptor": { - "paraId": "2006", - "relayParent": "0xf04971f76823b4be7cd4906dbb7da4c8134a458c2b8a796afa78ce465e0390ac", - "collator": "0xd0b084401fb8cdcd96c871f65d13b8e3091a160d13c815c8ab12864650a6cc65", - "persistedValidationDataHash": "0xc692a77cf0956b2832d3f148b7343cf8ed69213551b0f26dc81dba4a13c4f79f", - "povHash": "0xd9f73082976e32d83f0605e122b16277992dab0a4f40fa56abe58b389957a5c9", - "erasureRoot": "0xd290ddef7e88606a99064c606f4ce4455ac337e7a67cc55f7c2599c27732864a", - "signature": "0x32cc34070b29e48b38dbf5eb51b7cbdf6491fc18fef34835540bf2288b81794a46319928dd274a56868c8cddc0b2244d12a70c4871ab039b515cd7a630a95a8a", - "paraHead": "0xb16206031329a396621888755dbefdda9b108efac72335760e6b7ffb68d09f58", - "validationCodeHash": "0x20dbec2b0d90aa7a1520eeaa7edbc2e07de53472d20a167a9c2156b9eab9650f" - }, - "commitmentsHash": "0xcd2023533b56063918a70fe2b92c407288ff39e3c3cece77bd146ce71623ada4" - }, - "0x9812dbe3ca16ab2a2312d73962de440fa8ef45ce4ef129976dfba4da39536205faeb350063d54c0f91a7a556908e83ccd7ae4e4bd98c1cfcdc94d22d5ad9aebab0c3428cecb5788ae920493de7e7f9775499db75bc35937f090a978711c4433afc95a9710c0661757261203ffe3208000000000466726f6e0daf01d9d8ef34fda38bd92be92842f38b9ab941617e6b41b640a2c2bcceee09b05e9075052347ca6b1f90f51a552f327515cc093b534ca61735fabef28b17bd3492844f4d286fe2944b790efa4c372a526933a3e0a5a26fd3936dbb0de1e887dbddf3db52dbce81d8ad90deebe14dabd6748a810d514a1451898df33c10eb931fa1d41584edd5db8720591da82b2a35b857cbeeff2df4a051b52be2f853e4a805d9c91c0cfd4c9a62ed2647118ed692983c9aafc2b4854b1b64974252421213b61c710b24dd9c9381b643a99cab59d837580091bb043107b88a6ae7698e6ccf07199c5394764ca437e2917f84855bfe7f93cb571a4d7e4193972a91cddbcca0b4795688079c074eca422bac2dd953fd2318d40d2fdea5565aa87975a5643332ed01a14254f59e2bed58acb31f043d8b00cb14e2ac9e2b30680c4385acf8eed7dbce2529e902c3ea7ebf9d688f27a1585fad26fe76afbfcb2fca32e9bd634e0482b4e9cfc2fffaa19fe8ef300e64153bdde509115c73394612f192b2661fc2c0ce6439ba7950b6e02b07f85d5b086e51559d32008904ecbd685397ec34ef5c3db0cbd3ba85c92c289e7281d43086977da933bdc52d20721729442de328ba575544e0a77321ebc8c7aa687091ce485f04ea22a871bfa3111720ae2d80217f065be6f12f043043cb1fb1ea10643d59e68fd7a58b3fd15211f3adccbadd8ab9614b4ef9d025063b27025c5b2105b21045979322599cd2da399d5e41a44eda2ea9f71da175fd4de7e5cb91cca19f1e9a2c8b63db98efb10f6a5464e0e6d791447afd60d57ef2287458c55dfd7a9486e85704cb70473e0ed13c946314c95f1ac3df29347cb16dd1e06d29e4bcfb91b0a42e72f84b2753eee4536ba66b0fc24c03ac67f4439c7bdf34f6d0c84cd26479c24ebc595b508f02114aa5916359ab57923ea1d14194f0ef2122dd3446fabfba3115f070b9b2e035f1155bbe0cc1597454f63e5ac38dbaa5a5ee6852b635052a8e72666e61efb0e9094cde5db45eff2107e8b40b9bb6ba37f632b09c94f2e343949d095d7a4b481ef589926808c219ee743fb60615ef72694f4383c970eb8b3cbaa5493040c011067111c24e5fc0bd05c5bba2370b62fa72ba4df62c7bad311c1086395a19b0060df97f858e1497ac3bbd2067fa1a3089b7ddd7aa65f6ca14f2e42803baf4fdb32cc99544d9b37ec6931282d87f4674232e84c93cdba42f8252b874f5315029490e6585dc42053ddb10812117575d527f25eefdd2fb9bdb12d19823bd313eb921532fe1f800fd393699673a7ace1d10512a91a85a29896ce75e2f51835653e2ed6f5057013e1ccb8755541abb7c01b7ef015eea1232453ee2c2c4d5ed5ecf23f35075b4b70c76a961f7ebc661aadca28a94cafeba99c8e12f38b3d1276ccd45c92cd4803c9a7174142e26195f0b4a597496183cd333f070022fe00505238f21df4ccd7a9ba11199e86bae74c587c75b2ccf63ed86f539ed31c042848cec31a57940bac67cbb653c3aba96aa64fcf7885a476dd63fe9d76ddfd42bce28df17220856e1df19d86a192ae71b67950ffc8cb3b037a684e9e4ba24107d73453a6702557c3e2481e0ac3d2e96020d131a54e5b3b4c4336b36456b950431d9cd52df58ab846a561c59966cc33e95a7cda576941f619b575494ce1db546fadd510289bb94209daefd1728b141eb711f761150963e1c80ec6ef400abf1197eeabb4d70e60920c15fd0fa38787f45da4edfacca0ee4c5c12f7128e02db262983e22c0d005c5cfe00a88ba73f814f414014e3b6e2e92de844bb597d795f8fedf8db226c0dfdc63e6b9c3086bb2a2c450a0dfe1b2adfa4a5e82da5c5ca4803e68521c3b5123674996d1bdb4ded10815f3fd34b30afadaf3736d833c717f9353363ef114558b3052783f00c2422f7b3a8d874d410d13b98244065143d6ad06249edff3c58335f72eb58dfa6880260e292e878ca5f4479639c7c71c84b42d34e25d1cf9cfffc551a5251b3287316862e4486680cbbca586ea215aaf831fffada977cd43aa482e6e1d8ea7cd980d36e02cba6e4a59cb70f8f214940a9a0d31fcf37cc9b85b58a0bf9edba56e362b1c161def391414cf1be30464b4a3d5b1418e111d5a0e686900f427dea3301337733bfac523ed582ba138b2fa97f58f8af121306277e9a7891ee5f2ec6e1847971a325ce6f27286f52ae9721acb6f7ca313960036a51f39e370a55d358058c434085616eda36045f138518dfc8cbb24cf693b83d3a6ad356d4625f6cb89b53f9ba93bb8a37f29c84740db632070b6e3bc617993272e2860984cc5acf844958e9a5847e1e89ef43272f2916e6aa58402b8b3d1256541ccf1652a1e7391eee226f119ac0d3d984762e1cb179407095153d6e36b89b95307af3824e35d80d605782cfbd4317324fe3dfbfafbaaa910cf1c092c8fb77df073dc9edcd76b90ab65e26dc61fbf0dea0d9ee354e88bbe0034431bed02e16319129e5e32ad855c00a384c1460e1ee1677db64a37ea71dcd70c53112683d02515027e0f8257c21f383c5992d11f30f860f415b91a60fefd68f1215ac1e35a49eb75199d9ea83788d5493d887295022817ae59d3dbdb715adec76e490a623ff13619aa96a3346e7147030a05053bd838a5941431fa365ad01c9be96346ff9e3bb3643406795e133ef16a23a449c3404fcaa05c406acfb1a5cadcf5fb24fee56e6c25bf4aa2f79c60579b0f911b0102c47a6cb910de137d987c69f41b74ee65fc4704b96a8a29cc85fefed844805ff68709832db47701da5841574436df7bba00e665b001f3526078a01e88b6a2853b0fa756e539a401ba123afa660a896c3c77221b7b71e7d4203cbef111a3f82b214d2edc782e544c5bdd79efbf31265f37aa4a00e14baa401ced0b3cf3ebddf59f728d350a6c02b64600f2503ca229639b13ceea2852f47191d47a5381cca9fd2bc56568e619ec667b901f36f7c0e6c8a1cded609c92795a21ccdf6ae8c8cdec66ad0daf55169f5ebf486b8103eed075a2544c58763e8639e9873c32840f7310ccc08946fd3f63259c82e48b6d5c433d82e10aa3dc671ef0dd76a587cbff362732cfaa5190c6020ed89e20be69923096405d9bab7905fc0c92eafa33af74b33b18f973a4771cf55f71ebdceb2c35d982532159ea5aca2a6c31bd3c16bc38abd2c9dd78ce026165592dc9d9503c5dacc9f15171c4fd5d2b20b523f8f89e80edb9b237d780c02dc4203c0903f9c84d70c6939b5ddb4ef7b787798a4ffb9ca7530b007c53477368363aff8bf1a71664caafbebd98a7156db4a59c71150c5870365ea4f6fe636b547d629e92dc9e199af0c83c981125d1a1e5389739e60db2c50f3483f140f354ae30b855ca30d67f803fc38370b89fa85641b613151ed7a265830cee4d0bee720ad314f37da30dff6e6524b6628f069078eaf748def734597ece5e493e365e171d889829dbd880968c87744c7810009839783877cf17cc966d706a459631d7614dd0a9c80ca97b304868b303c2703c46cf5d4e6635ead2b421fc9e857314269f84a293ef2d3aa4a36ce7de84f940dffffca6b6e34c205c9b3138e73fec08bc80ebf9b54d057154cf065bc45415e9c8adc9161346392dbcfca1ad6de59854eca58b45c81a7a3d8fb387ec9c7844c1d99ffb937e7eaca31d9eb81c66ec6f7b8fccd1b7b1adf9ef6085de7b177832546418c1387119c864d204d1000496ff551d5239b3fb3c1ddd7647309bf05777e58076abab355b046f942e57cdcfff98d7991a09c8fcf3dd4a80f801532e14a1a57a7095449966aab87695858c1c7d60696dba9a72e57bd6c8e4e8b9b9ea405ab6e77d6b145a26e3e1831961418fb59f623c28c394fbcd75ca3e27f277dd837143d0d4dc50c1c58a2023ab44a0e4d98a7420ccad4258b33b88c6f9c5df4fe6e45e8bfbe35357a1bf075fc648b7dc98f442c21686b930e4b751d20bcba63f3ab6ce55f577c9b42ae2872f45c0169c0189fd553e8572009e3b245a46021c325152965e911c24191d6a5264c9213f57ecf8f7940361b827fa73c878b96b60fcfa3589c047f068e5ad0bb18d466736402612c2c339016afee5faafccf27188b51b495aea49bc53cad0b3e6e4e81feddac93c9ebb7a1d67bb7621847d0a4cf4166465dce84adad789ab632c648d29722992afae94f64500f5b2e2920740981306bfd310c29af431bfefa7454ea3076bedfa512a7ae92f423f49a58d405799a77afd17427fe69c5d87e51aa6cacacfa9096f16e21bd76700f390e0834c69660b541d330815ce54cd9ecfec29e1b871a7482ac2a365b16c565239f69f2ffb23aae31b6768fcc98ffd9de1b44b1b52b10f677155de166f6813ec066a79f5fff6cf87095c03e60989edd3b14730d2a123554a7c1116491e36c632e2e9e129c524938141080c2f085ecc0ec05afc79b7281caa427d9e7818eb86d5e3add31f020ae4e880473fbbc1125d07c90ead721662bd8ad712bdb22e6932e3f65ba2946b1d3d2d2b3061e8360343b9cd57a92f4773601e770b1db6714d990a376bf6102eeede7ce0140947ed2a01a27fbfcc4f9ae39e72131ecfc43d4108a46959979d97ee1d373dd6207c19e0b38a63801a1460d6b024e03a73144dc8f42b5711cfbf09898d30716b4a57748b80d8616a14cbe747507975b966ec2c9f7aa896d2e29bc48af67d3bfa03d2534ca0c5cec8c142464af90bbdbe28cc2665f9e4e3f55246f1657d8bb4681557bcda608cb2d1ac1c076976a1e5fb977bce65b266d4218e2a5273e6035fa2325f1a586e180574901ff1981ad4b3e5dec3723df7170893500a64f89c9c11c1717146bdbc4796130ea38e51cd5912a49373a71a173b84c3e602a45dc4043c1595b30a4acfd5a6a3b07f05340ac09eb61f7629a4ba89aa8150987587e9c5077f1be1cf8fbe1fc14c050e8b4e4818498c9e8383abf2b15cd446ee5866e3b0aa1b8bbf386b12a3e7a59813856c651cebbe27d0f1c948cef5855dbf29f9ca9e5f61060fea2087795635a4e48a2f24816fb4bce18444c4e190a923a3f35b6ebbee5cedcb888fa82c9a2a92d3298d72f0a4ecc8d23db5e48d2fc611c704c61eba1a96d1df42193bc27b88755f182c40cedf0e780d70ca9191f1491a6d87ef646e2d39d018382d821913684cc63e0dc5e5ff12caf29e76928198074fe8d0350905d9d9106861ac4dd1285924b039dbb37fa10a3086de1409ba5a3b1c238ad80325780adfe29e437533685a84d9c4e0a86b03f3ab9808460c5ca26a4b2d374111a7fe332b396bc45a0be06cfb0597c326cf6731afaedb486c0f898dfbed65ea0a38a83c87c17a1dfbf03c0f3f17a827db9893be5ae214950793031a73c616125229ac3b0272970a5650c84d607b56651a8fbef1dd970b63d2a299e3a651ae34adc15288442ee3b9eb9fce7b138a8401f196fc10a0b44c100cc1a3206cf34a11d9b1d9ecfd25ad51a07aab54ddc7f5712764eb9e7fb319715f3f8d948379baadf2b3ccb71bbf71e233183fef07b9e58b7a1a98a6f9810f41b1aadcc28daf432ac9abbdad557b16971fad42367e70009e00f7ce119a962a8000cc7ba2c7de350b9b391636ebf56da6f3213aa733ad40be6fda17d7b210801e93317cdd86f0f677321d033864477f1e83248393de368d8986c13554e92fcaeca910e49f0161a1b9ea78257ea62273855e23160237b0c097adffd909a61ef64986d8079866c0cc0544c6585e7f5443a1b064a23d7347858e1c57948ef71a366adb2c92bc48f2df6cce3039e210f004d378c429a31bddee15837cae2c56d38ee6d8e3f40b650a9ae50a00870d72eb817fd4d92d68c287e78b3a9037e9a3a470beaadb8cda1c7da46edd15c46a26dc14da314af9b59fdb9e70a4de2e1a5d3c03a306b30ed5f2879d789a9f4a8dad6b1b318d106001199d8fbc732dfa77225346654ee8b3815bcdc067e19ad43a8f464f7e0f2b7607b0980aab84a5db5444167340ba30dc431b46d19ed6a82b36a3912328a1bc5e82415fd07f4028d7275ef4a3077ebc1df4ee48d0bb352eef10d191765e2392676eea38ee9e6c3f87bd0e0d71607420a5467fc9807a65ecd23430ef00fd8b62b3575613eb94d9f1b2e895c41ef8531b521209fcc0a9ec9417b1c407a1a962ddd65020379ff0602b0804fe1bd29f3a62969a30ca3ba5fbd7f617bd1a14e2352445a5ccadefe1dfe0db43e310230e0db0e4be938ee881ee6d553a8501053dff51a0783acb1c23044a46d9699ec0c09a9a89461a4d59aa95c927c103b2082b6308fe9509f85c4c8685950d6d97e0f52d768538b0b97e4dc433dccb9a3007ce023013a58cf605650becfbfc97df42130728edc58625d54de18b106e883d4d825f26bc5c619f0d1dcd967be822b20c69250febc3c53e93e554880830c25a14b1c9831d1cb9693a10a0f5a03925858b99770f2a578f7147cab7675998eb20d40659f7d8729c34032728aa6ca37faac622fafee07225ea39ed2f2263b898ed6a24e03d2a1f42bf9f22d81b50823b5c35a109aea124c1bd94a863c050d3dcd65e7fcaf73a744e0a6b841254d2e8b56478ebc55a257cf057ed6817d819ce1a78f48f12d8a60834a6dd0c263b06228c2ea6606959b48b34730911ce7f433686e88defc84cb5e505435f19066756a654bbd8ec77c5b395b735a26edb0b87285718c152481139758cc5e03e5c76f865f79f8c4819f1958ff3d700464a04f874a934d300b4564846d0a88865a306be98f8acff4de7d09e75aab1e219df355af90e6af04908e1dd5f6d26c55eea639b26fb0797d4395a2eb15418b08e32f03d5ca3ce5241a1e3f0842ff134573bd276f9efa7b123595bc4d307fbdf9f4dc17e5cada98f7443920e06ff1502289426696e177d93836314dcea4ce4d03809a12c0fb2cb2ebc2ba53655c2499bab152620872b4938591c1b25f8c41077f1c4a4d77d77adb75aa7be82cece95e94a3a5ea5599b5303593d84e56ab14f1b56022aee7253b9e58f5f82f215485711e0646d13a37f5f3e1cd194baf19f85fe8a46cb63f67296e462232aae5f314dde5681599cd1f1e319515cad710e77598bb5897526ffcfa1015598e0d7327db9e8f38b18de5aae251d561f690defb848826519b8c5d00197dd628867c1b58e9234a4d9eadea4892417129020a040251a6afb6fe2d50364607cdd47ce993cbf26f642078c0ba3b7c07cbd36ac736ef15f820a45118f03b7b883fef3d33f8e3997ebfbac949a00cc92b78f4c77bae1958ecc18dc41b408b46b38bf26d477aef00d9116771e0fb8bbb2347db5b9330853a091d201f41181589bcbec8886de99a156872f2a0fe706152afc8dde824314b090a5d25e0449c75c0c0106ec9a9cc0098dee82ce73861d669d91df5517a51c484c91fe6b6ceb3fadde596bd856e13819cc9c2ae40b45aec12d6da1958094872427ae97f0153af2522e5a0b6ee63355cb07bd1cc38928b3741f1377fdc7b6f81c2038260cfa61d3e971c04654678fccb2fe36058b00bf39354e8295e7438ec5c9c68d0d1a530be09a64b90b1bbbf5cf5c71aa68a5a4d21877194ade3d435fba539dcd2ac2333b7f6759f5874e51a9bd8a47b3af5fba8ae09a91b85d770dcc5142202df623bb2e5272dde595631d469ebd796803c37433270b9a8d1a162b03758b277446006450bf2921d869b72ca530893e2c9912b262a72268f282877898bef0e6caa1e4cd4cf9ea50c6e3a4d91ef27388ea284df349f6a41d19c85d8bdfc6e496078d75e7c9000bc3e8891de2b57bce304be1ecb06b0c5ba6ac3a59aea9f9c6a675af54a80ab9048b00bdabeb4ced065c0a280e0d0d7887eb90eb192ba54f716749ec3262daa924c208ec6c62d2b89def4f9524d3727fecf45736dd68f1354855363c648d0dcdb80c2889652ae33af96f7cf48d5c8e3018f670e019438c73289da1b41d9706aa0a4d2377766d5c0835177f47ee5c81c22069c846e7704aec27b398e356636d2e779be53151f86d6fdc1606d019b38d2fbf5e79edf84e86d928789178af5579320501a298bee85b9576f1fe98d3b9ee6f046be34d619e1325d30976f9fccd20541665a897e724e0df88f48b877eff57a842d82b73415fd44b748617c130f586e37da5addbee7038247ad57fd7debea7bbe1682e514f5447163cf5d44471c64883bc4f1a314871335e47648512c5af7f6612f1435cb46b8a29ff941a401be344241c542d94ff88af90b747865bb23c2c28e8888d972b8d444582d825a84e5d6b8f77ba3cdcaf9b00a014d556dd842693d0ee0b4cc78f65cf679b12ce4d1509c09098aca1c1504cd93b785afef00d0eb11040695a485d969e637708966b04dd7f31b740309893a2bfe3813a9eba642a7f2b5fe4c75cbcdc3d367ad863396fcae905193245dc8db5896f217a3e3bde69122a9673a86d7a45f5a5b7d8144d73d71cf7bdb7b692ae0bf455a05f2fde7b9b9b58b943d3b9d22a097600f6a6435e37e8b18e5017ed10500eeb14af36341659c8b640ed4a55f4df700810664a7c5079b29802d2353253ffc6bc008fbf28b9d6ffffcef0a9d8cf9989154281e3ab0efab6c1b2edd7a764c42e62a0738691606426d580fd0cac84a3dd0b6c35bcba508582d55e9b2e2b226803d6d5a62b3d1aec8e9562f34a4c67bdf940c9475d7c637c660f8c128ee1b2133dfa6053435cd4e94e83428c46cbac16da63651bd981ee31dee5be8b8c4fb537593ae01f76f5f2216df254a477a6999a99d335a21f951e6ef5ee19fdc46a6e2c64dbe1e85347175fd7adf757c17679771c28980487fa746a505a83369b18d20b3217b5df8591095ce38c5916b9879e287e45b67110a63500a1584b4e7840cc888157cfe944cd5fa724f6a13eabe6926e057938d3c86759d47feaa72b6301ca8f6d87f729703e4b3a70632227a30bf8e786d9319f8219ef775adbc45269fc3c6c7dbf6688dc1cd65392ac69c5d60c4a601d8e4af0edf9aca0d5349ff2cd8bfa666553961d0be61dfdeb3a1591a8ac90e5b93806b56c3008ab1477d48bbb67c3fa1ab4d2de93a8bc33c4215ae18238351177e75cf69ce6c229ff62834897af4169980f427a40333b5f6cb660b3eadb6a67e188ff49e102db878b6eec86cdcff503ad04890a7c9c1de1bc14e37e6758fa40b5fb1ad08e3c308495de9ab8c8c2569475090094a64572e5edb0f2d2a6a277a669e5bec060b19d2e903423888b3fb03910035ae3a6f32e6bd2cbfe296dbc68f95e384c83d5d6c75c59897031e95136fa94e01fe1d0f0db3697b96b5c4fe65dcbf0074f3fb5a7243f11c5a5753eecec0ebac93da341825be707fdaf69ef1bfdf161b768b0b5dc1d04962f7a1e1b8f0a76a526477a18955f3113565de44bf639d1d25719e56fe47995a30899e2209d5095739006a17355c15459dfafc54ed61f6ac2ca93000bd85f7c30d68ef62ce096a8efb6f49a834e3deff88577afcb7b4735d1dc5279ca68c4a677b37785e19763b7df73674c2b704344dd1a7b594e279b245cb528e3660ab6cc2b90135fa76f2bd71b67c739c18571f0dde1d1c0ec6ff81b89ba456b564f0c6e7827a9ffac4b5e0cec026915183bbdbe86e902815958bf627e92d553dd666fe5cfcf0b785631fe553cddeb803cc933ad194ffd266b33d4a16a890e4fd639d17664ffee405668cac917a545f6dc06918fd3648d4f85ab7eb7c4a383d2ffe558f0dfe432e4e481bc9d2b9d163a8ed88f018f1c37a5b1600273007c0099b0048adb0ce93ef73b59f4afd4aa0fc6dac34df9e36c1bf0985d84f818cb5ebd80297be4486851af0a3ec367b45c32303ad33cc2c5e0ae9bf0af1c2694acb19814c13fdb69107befee4a8ee00d75f4e8d034957a3bc86ee41e5545eeef1ad43a7ef322f3b6e3ec041a61f9a1a77a8b2a8e9ff61deaf302418cead39cbc45341fbb5bcd21868612b9af29cf9e9e6747e1b3965c250d0d3d0ebc955f9d4d9b7ed2b30d0ad67135993fea2fe5413d464e282b7c5ca8fdec3aa954e698a7297e28603ec3a25cd1592481327b7e5cc1aea90178dee7225ffde511e37ff68aef702f7d5fc0ea710be782f48b15e580a73f0b1b8334024f8233edcc7523a109e1f0a598e5deb1d6f8da145a964ee00f4e46af09fefdf680117c39fdf312420a36872dffd1310f32454dff25fe9db0a5a3d6e70e020acbb5add84d1c932a7ace7572ce7a3b6a6affad43354e2e3aad02f7d91a942dcc210e894647932d2b43b31d643861751725a4d920d9511bdd9a734e1ae0b2868d2d03ddecf0ce2501c347e3765ee9a70ea6aec65ef6fdd274ec35f19af61fc757c334e964db870fd52257853a8a71620667ae1826964e76b42a3a0dc2319d574eb89cc4e9f0e9e9fdc28b6f2e601c95b2becb7123f4dee4d9450383df4506652962d7287fca7339a7773411157b40b4479cf6ddfbf9162cd02b4a8c2aecd37b066ea41fe8d2895c1d595aee840b1a6b319ea61b16add0295e042c392cab1d439716fcb73aa730beb90969a00803faa3043516d837b411f2838f05a7c594e021dc7e7b8e145f8efe037c9586218a7c8ad800828cb41728f06786e180a9ce8eeb72f8beedbdb2009a0e2c2395b69cefa561fb94206e386cb919e10c2ffc05649c83b870fa16108ac0b1870224d4da1b585f587426148a36c7ffcb3506b17a35ceded2c9f3edb61c3d23eb807696e9274c660c083a700b3c40275bcbb5dba2a6464d88e6bb93bd965f3bd038578626d1a0e1017fce382645a8fefd7847026c6677ef82a4512a961dacbcb173f594c3b6e18a3048e7d66e9d2df44e1e879f4e4cce263355ae99b9dd439b5b85774a742754dec9a9709ff1a19ed90fd0340ce69394b6a326d400db4ce649e766608181308342b3c26106188d2b850ab8e6f443f6d3c4c259149c5d4418c72a25483c67a36199da0feb612eaed3f65595b9b50e0f9460c1c63193fdb2a0e0d3c07dd1cd7873f03701fc67206eb6c7b91650f8b7240bbb5a51d0e5967cc8c836b43b8ea68982cad85ab3a35b67a8a08c61b3590444703092bda49e617d5c36d93a7e65f9c0b933866abc447b7296248c9e924ae80c425d1ef1deb989a3c1b36fb14ac9de29707d8a2aae6dde69518fe8576d31f20923ea4ee32b78d1395842b6458e2574df02176f96c3782c9c2d6268ba45d8938eb8e8564863dd22f46a6bd981ea71ba379d6420cb7ea48b55ef3ce3836b8fbc0b445e7d7699975adab5252f04bb29a02ed6aa403b6a5e31f7e1cb7ca8f414c2537f4ca26c175200eb0ba4e795514a93f7575a1606e0dce8b58fe71c4ca48187af0406e8a0f91cdba326aea8c906866c880a56a5f4f4e8f05bddda67bdeed77da5f47bafaa4ef33aca989208740a084c0681775134bc6814268035353cc4ca512062e5307b174c7356660c9ac462101ece221a8bf37c70be761aee93289060d2e68e16ef3bcbbf9c8c51296b12b17ad5bf5a6f7566b2af20343ca8912261c62b080cc4811cb6c36272d9eccf1f2ae5f88979ffb547bc30969e624451c8c7c11e0c391c0b214a015d28d592b64143a0dc9fe03b64bbdd3eb0917b79331b206559c88cdf9144369ab77b0afaeb6bd57f7a7be387c890296c574f1d07d28e4871df6817c4d7b24362988ef2baa8228c48dfe32b9bcb344eb5bb21791df776e12c33067d48ae810001d2a2d67ee4479ce3af7f6e697fffe4291bb0cb517cb110110e3df87364d773842732112132f6c211c4fbc122b20fa8c1c8ba37cf8c06c2e3d6a4014abecbadbb0195382496fc663880b8629a727bc63206910516c60b039591dbb5660643001c350951035ae9eeec4eadb935b8ef5e9aa043553801f34a2054487391aac07dd288203df8f080f896bfa72736deb3022d5e9ea85f234bde4a293b7b333bf4d8b0644afbaaab4f8a1b03c6c8fb2a0467f8e9e28ffcbc113f956c689cc983cc32818cb513937c70a56e019aea9f38ec28f560c10fc1b6f04a0d2e08ece35e20320f21b37ce08e193470ac72634c941a6bdaaa01ae2c9ce8ed9cb41ac9de375db12d9591654b0c4e0e722f4e637bc50492afaebde5aae0a8eb5aa7e88e5169b1cdee50b0c2699c32ccb44dfadaf51f7da7e0cd53e2157cc256d21523ffed72a6c682373ba3f116ae1828bee298fd28a285cc0082884935d98f6a68c2777263d4bb9e1029c6e74fa8ed39dc6098194fd119a1f8a5f0d397cc1947bc58b40d23ea2de540604f9ea246e8345fd0f65dc11314409869e1a2eb3cb16d5b33857c364608a58ca9a42cc08f3b38aa8009ebca50cf737ade4f1299bf029f36c26d3a1735ca90da504cb735e1473fdc70096ac0895d3ff467597fb1ec3e84dd4f9c48910068d4d664b5a0720c80ebbf0366591c642824c2f6f3cfe4fda0c70f04543171ac8be3fd97c973a715952e5b32c79adaa8b7fff4fefa0cbae7c6abb6fc8bc54c861b5eab9f675d7e7238028e519f0097c2421ec5b16a0205f72ee9a887e3dc742484520fea44a275e9eafdd49cca6fdf2563b4be12d35f4a1a9fb65c52141482c92cf0aaa1191a8c8493c9b192db81157b2daa4027364f3447c21c2a3b9e78a5da7ed6e3269ae6e62cd492c5bbbd8581f542686e1234271e5f0bea08df0df70a496192ac77867488b6f915686f1b61f7940510ba6826c4fa7e3ccc79d39a51dd11ee8e19a100e24b3906a5b9afe4ce83ca17abfc102f909d292ce9f1e77f641b9ba2006ee8dea87fdc06f411b9fc0cd97760e93cd540555b7ff451a280564665ce6d548653677bda8720bac8feb2b3b9c6920bf25f566fbe19eabc18cbf370f3474dc317b3f149758dab39529076376324bfd8c6e579d8a7a2fda068a252c8cd1c87a6f34ee001cc62bce3405800999ff2dcec83dbb6d238f21feea79af27dce2af1398202aaeb4d4af5bbb47e10620ed3f1049752958f765b9e16d2c8f8cf5c4ae8569749a7c15c228a25772cc0d6806a21e3ffd3e1bfe4227cad9fed3350531d49c6b5b9b5bddf28cc9c05fac7af53de75aefca377cd2a57c8a5e67d8e09ecd15e33475f4030f40185de385f3f7b5fac223c057adaa36f9445572312fba301fdeff81ea19230ac9a4e563ab696b843838335c0ba42224771f38f55b10e9221d0f215a5b5aaa62ebbc9e3ff9918086fc056a8626b46bde57a7778a7a3b33e7f50eaf6ed9d8da700914d7435b80d14e3b0791db87c19f26d6e456410487e0dd4241ca51a7cbe19a7501ba424181ebf446d64451d85b3e93998358e8e2503effe2db34281c1f2e2c51188dae6d620a92605e7218526846b09fd03f635ed272c407fd6e7f434257b8cd654b1bb404ebda3cb7c8906c2537429aa243cd99fb376a96e5a92d3d4160ef44308cf9f0d62bd01eea9a2d2fdb1144f9ffa74efda465eff0b01d325cc8d94e8335a37e3cec52ffa68523c1e8aebbb58cd66d505c3b8f58bd12751413f6607313355b8337748e99ec0474965ce5e658c9e7b314e3fc18de870a66f6ffde6dbbab24c9f40f0c358b45c3a4086d0c36d3d23e5982b47978a1c5a8861adf5641e8b4cac94ec8bc5ca5cc418e7a05eff8bcd7002d131e48dc3bea343df807caf836216eebc0c68ac4339f232f95e240386965a67e48f3cafdae62a68c76be3f134450390f85a7a9e056ea06cea3d53cf041079763fd3bd3c29645455b224ae1bd6dfa7171c6009f14c0df9ba0df577fbc1ea9d79029a443b0d6e611a54b9039e164ccfa227fead19e9b5ff6fcb45cf6ca9e4fa4b2d6ce1a9f6e506b9a103446d2f48a153b4314e7f3024e202d505bf5edf43432dc5ad04d96e7f1e29c73c325192dc08a29480792b03aa8f9c14565e96b3450682862088b3968ccb30dc0b5ae32c2b5e9bbd96c7618fadac3919f97f18ac4fcf29ff20aa736504956a1fdb33d29612a816bbdd1e350bb6580a067be292ae7cde17db090ae20d5818c275765275671d3a8891d3426d7e15eef22fe728b7a06c8c28c817ed9af6b3c9d7cacf76e65860bc79a6aa2c6ba0384afa168c1bead38ae9dff3095e328171dc401e8bfb0347172aad3844e0f217665e819597eb6d4c1363f5ee5a217387e85b5a484ec8c2761b7e27bb3cae7cc2b8f0a8b30c3d71ab029046c02a55ee8f64977d2d26bce72fef127f45146a184213a1e6fd015a1b5b2adfc1a4b6e64f373d543add43b737f525ce9151290cff9bc3dc65dc52e9738a58487e5fe278db0b7b0bf8f390d4a290f132a1ac317d5f04b338c8087eadb6e02aa62ad19f94a4f205598d678527c129928ef6e3ea0ad29129b1246d9563ce65dfd8aa68242101e554d8df999a55db00c3432fd16841f5945c4e63031ad2cb148c856bfbfcac5a09182b82356f10cfd428eabf6b2a161cc55dfdfc8c746d1e563449cdacb81230e82ab1b8c0ec272089946afb0da10220e074037759dc943b439e8cafd515b879393713cf46a6989b081e61ec3215d0eb48f2fa8db838851b97a8ffaa5df6096bcf7c3b830f414163e6ff52b439ce8c3644c619b44b733bea01ad9e2e4ff7ec167ab8d74966971541aacf81f0a0b5af315b5f9e3494db4264ab8c3b6de60785eac487c59b41c4422e67e4c0c7941cefb1ec2365b5efbf3b419a7f38d85b24825c3eb2f4f9089559a32a9e77fa972c09dca7ac625976019920d2055b0214d03ab9b7a3daacded1310327a709e0205d33c4ee93f43ea8e68975fbe9f117d23ad41d0fcae6c24f5e656b03e7d253596857e8a1677b1ab53d8c3245c299bb10e731c3752158e568eff108e9ece26a7e1d5ac23a64938766e6e5580e918681b38f6c62b15672221f108209c9d186d6e4c2b216efaefce83710ca49b1a965985b2db3007c1b1bd78d07d65b9df9d3575374e3dc30421314d3877a2ed1bc3121d6c130a0d3ed85597b010f61730a849d1db02cdb169932b8270a1465d4bf5a02a61bb5a48e2e3d4690c5a50658722c752053a697e677e55a17fc45be2663f825c48143f0e674dbfff7eda223881db96dadf790e5d7af267121bac4fb242c4546cfc1d9d8ed549f5f5118320bc51e9a5d8443b205218be8d98eb8fb23625b2673f3e716f429697e835ab7c307fd1b9c2d363041913a55f76352f51711bd4024aeed4083aa03f55994665eb7c87129f655cd103aa7dd7871c11f688682a9df0b550b878383e8cd3b2f5a2ebc163e2846056418fe49efb89f4391fe8fcb0ea619b8d67454b0936b8864de570d7ced2a0574a4f26d4d9dc708d3e0e2add58b1636c96adbd2fb54581a0cb81299526fbe9c043236813be3452841aa9e52fced780f7b44467301d7f73c9dc3b9050c565bd097e35fe49e3c087570482ae04e821234013e1c2e576f0a4583527fce430433911d11e93ac1c05def252aab91641baf18c25c491c81f8d82121b02e48a06b53925313faca7806accfc354a11e68d65fb813381d875c03b01ed5886b032a158bab074ce54437187b5f090e5eb2a602d4323d4e8ab07c67707ae58c6c1ca03e96ef4f4a4f68efb9237abd22b9222b27b0d065aac21f728ac61abe984162589268bc8bd096a1c01e35dfe34ac58f9bc08aea63dca6380e596f3376f0ecb248fdc789198652c194a9cf9a014c817b8835185d269ce93b4dc310bd6cdffce0ea16b2c22cefad6b1992dd20a2ab0d092041beca76b98cb742d0b61cb53c6a85b29b8c322e841fdf24485f09791c39f035a81c4150c882c1902496e07823170a159ff5a4107790ad436d55c586f1ec45d3685d2efaf1a1f6fa24cbb43233d9e9f24448924e49566da7016437805b8e11d712eec65405622956eca5037b5fe252a16d5e14c2056175726101010c393c525046dee77d40dbaae6c5a5b6cf084c860c2f326705a4086120658f4f122c6271a1ff54e4eac4f5df1148135e3a169eab1f1368fb4deda1258ed0a88c", - "4", - "30" - ] - }, - { - "method": { - "pallet": "paraInclusion", - "method": "CandidateIncluded" - }, - "data": [ - { - "descriptor": { - "paraId": "2021", - "relayParent": "0xf04971f76823b4be7cd4906dbb7da4c8134a458c2b8a796afa78ce465e0390ac", - "collator": "0x9e2366f04fc799f078b96841fb2ed03b2c42491d4b4fc138235181e1f5950124", - "persistedValidationDataHash": "0xf711a43ee5546d9db39551cdb288c76a3bad7c1d71bb0cd4aabd7ea502af1f27", - "povHash": "0x2d4c7463e3a8bdf133e873d39d355785410b94e9473b5e1b17c98609a156ee0f", - "erasureRoot": "0xd3d1dd71b1396f94a56b12c0fbb8b3fe0f23383565603e8c8d9401364baaaf50", - "signature": "0x78d36076dddfc7ca31749f15430aa2e4267093a1913164cde16bf1c8be50302f5ec005fa8c5e86c77ec6da5b3064efc7f46fe8d88485f0deaaba40fce013d58b", - "paraHead": "0x64ee1af74cdab863517dbebcd0447260ff71e94d2919e6fd28673b2d42232e59", - "validationCodeHash": "0xf580edc8b2c4f493ffa410eb67531744c52313a7662994c90314c160d7dad91e" - }, - "commitmentsHash": "0xf54658f3e07f13537abd042e75ddb0c756c0580f80d9747707850a176e212485" - }, - "0x191af735879c64149260bcd5843c6d369fa1b25b85d5e4a9fb2011dd031178721ea811003906d290f8c3014920b1b5ac2759b1334f96b0e901f4d208e14b5a8ccc099c02848ffc4444451a233787bac9df884d3bfa156f6e1b8eee7e17cb0896f77273a30c0661757261203ffe3208000000000470726f64803e9a1aa6cf1dd7cf111fc686bed06ef72beb346208cbf1e16fa7334d8fb130690561757261010194107a0bb2300c520f469525be6e972a9ea3fb3e69e2c9d3379ec0127909aa3503e54b57de5188a8a121934bc9235e7e81a39194c683a1e81be8a8a1f62e5086", - "8", - "34" - ] - }, - { - "method": { - "pallet": "paraInclusion", - "method": "CandidateIncluded" - }, - "data": [ - { - "descriptor": { - "paraId": "2032", - "relayParent": "0xf04971f76823b4be7cd4906dbb7da4c8134a458c2b8a796afa78ce465e0390ac", - "collator": "0xe8ecc7d3bb7cefaf04a31274fd8f8a0a9e1d1ebc95d824f28801f83f8945f444", - "persistedValidationDataHash": "0xf20bcf16891fa0fad6bf73295bc74f00c311c95bc4a74f46dc0ca744fbaffac6", - "povHash": "0x844a8883183791a17a0a52c16604ce87dacc314031cb4c49293c00c329f96082", - "erasureRoot": "0xc78c3a190cef9953494ae0937d435fefe2a13f1c81e159bc231f16affe2a8460", - "signature": "0x5cea22141327596522d06cd5784163b4e6f95a96102fb3691fe1a2345e8d2c01826f072027af9c5ac0bba2032c4fad2198539ab8af86d31bdcb96a4b2113ee87", - "paraHead": "0xc9ab4c7013a8e087a3744d729ee4b3401e47a819c5fa3211260e4972c1c025da", - "validationCodeHash": "0x878fe2c8fc4ca553a13d4814f37bc478c85d9148097cf68949e5282d19d00ed5" - }, - "commitmentsHash": "0xe03ce915236f7acd36a2c05740e29173663a7c7c8dd9d39a4c9f14d905fe3656" - }, - "0x815171c229313e702cf2abb696213c641f1975dd7cc1ce871acb83e954255b86fe680c00fac52d18476b06fc19be2289b8bd37f8bf557249745998faced3a3e06f97ee2c2c8e17c7f0ca8b30bab559e31f7283a50d4dae447619459f2493be04a8462584080661757261203ffe320800000000056175726101015675b4121dba62fe9a5eab632897eb0e4073bad618d910156e22c920aa39401c1593654ec3adffcf2eacfcd293860f065e709e0cde6fa7b371c21ba08bf4c086", - "11", - "37" - ] - }, - { - "method": { - "pallet": "paraInclusion", - "method": "CandidateIncluded" - }, - "data": [ - { - "descriptor": { - "paraId": "2034", - "relayParent": "0xf04971f76823b4be7cd4906dbb7da4c8134a458c2b8a796afa78ce465e0390ac", - "collator": "0x6249bc37357e2caa32a7eac1f11dcc2a7c4a83533d2b7135a489ed23ed56ea59", - "persistedValidationDataHash": "0xeb0dba463dfc2fa393264000e6c02d1b88d8090d059532f559d921b8a8d2b1a0", - "povHash": "0xc463939815c9139e0250c22d4415c1568674effb0167f5dffd8f4ce30a55e159", - "erasureRoot": "0xe2cc19c19b35d5e7ef8d2e5ca05b79b1662ec69dae422de45137ca329d61a2ac", - "signature": "0x2e79ca827be0869f424777a16729ac52f0f302e54311796ab917aee243c52e3e3acfa2bc331e4c09b4e934fb8b9fd6d34ae7ad245d3d82fd2de912bd91873185", - "paraHead": "0x6ae3d3d510e50ace6c36b3162b756f70e2ffb4ae8daab30bcac8b8a362f5fd38", - "validationCodeHash": "0x63d38059448511d9bac00338e32a61a88c352a9585d18ed1d59cfb8d78cf83e9" - }, - "commitmentsHash": "0x60014015f505abbf8daaa6d821d09dc257c3af36d31c7c8c078de60baca94f97" - }, - "0xfc2be024903c375d09d74f5c771f94b0c03f7d8d2b631927deac320eeef929333ece0e00baa4c7f38e3ce9d40be7b97e16a20a30f097148f09d1ce04cb8ab73585b4e22454ef2d69ef94291df99bab02eff024d4e8b2e6efc1fe0b762ea0371efa36d68f080661757261203ffe32080000000005617572610101042ce8fd97fb27a916337f39b0234d62fbdabdd21afe66308823e12aae7b387ab5594d905258523b32571722012dca52013bdf8f9c3646c511efb7127f772680", - "12", - "38" - ] - }, - { - "method": { - "pallet": "paraInclusion", - "method": "CandidateBacked" - }, - "data": [ - { - "descriptor": { - "paraId": "1000", - "relayParent": "0x6c51377632106ddba379416f2ef5e24450e90cee8c78a70daa262b2ae6f27e93", - "collator": "0x1e70cbdfb8be51c4ab07b76094ceffe24e0ab1e94c5b1181a8a55e9ffba32172", - "persistedValidationDataHash": "0x3eca8f6323e7145f85b6a6ee1cf5a76ed3b0b825e70f9ec8c103fc87ec1d41bc", - "povHash": "0x471a6ca0dec2185fe53fbe685ebbf0b5ed34e8f363801195c538cce0c1a7a3b1", - "erasureRoot": "0x3670a7f5ca62abf077b04a186cd85ff7e3f224dec28a894656ba5812d29f3d9c", - "signature": "0x14fa9dd4103de55393a67ff430b2f83214c1dd4e03789a0b3162dd5b1b788e5013035f178c78e78d814359d472bee5b86dd7ae4623ec934fd1dd1560e4ff6185", - "paraHead": "0x623955d1e6708279249f774458c03f99a3ca97a288a23ca958f007d5602ab820", - "validationCodeHash": "0x82a7312d98e4ae4eed52be99f781b669ff9a57f3ab451b5c4cfe6b35601caa2b" - }, - "commitmentsHash": "0x975b8f6b0a0896114fcef260f4d821f52b536e82fd9628ca9a3575f604a612d0" - }, - "0xeb98527fe3bcc1e89e37c3377397826eef95043da7b0577088e641ab8b9737ab625b450087da8ce30a912b6040c346daf953f37bba1dbcc8fce369e8c985194daeee2bd75bea8207c26c7e84863ab9b94c0fa13122c51ace8b21e9fe4c0437124996f45f080661757261203ffe32080000000005617572610101208865233a426b20c8634570a966804fa4f972acf4cf15d27d8f994f18362e6f4d695294f23a0e065facea8f9ecea21f9e37bcdb3b374db89e986f0e7c9c8508", - "0", - "26" - ] - }, - { - "method": { - "pallet": "paraInclusion", - "method": "CandidateBacked" - }, - "data": [ - { - "descriptor": { - "paraId": "2000", - "relayParent": "0x6c51377632106ddba379416f2ef5e24450e90cee8c78a70daa262b2ae6f27e93", - "collator": "0xf65e9d4919a33689872aee620fcd869729f6118130c9c2637ca28440670fe54d", - "persistedValidationDataHash": "0xd3321d3a2104f586988c422007a0b78b79aee49da6fadd08bae423e7cc475f4d", - "povHash": "0x135c0d931c6cce4075b89c509ea90c8ae5742cd3acc283509f60e49aa122e139", - "erasureRoot": "0xf52b3a1690fcf0b321515118d1d3b79ba2555effbae03626a3a5524b21576c04", - "signature": "0x7aea82a164a8fa4c41715d1a5000b44e6558706c6d4e34d38e550076b6e27547e8238b2327ef4426ccbed77799e381178a9d360b4fa7b9f969abadef8e32d089", - "paraHead": "0xdeebdfe89b981d63491a8909ea24ea94ac365f0c66a1bd261e8682653418a30d", - "validationCodeHash": "0x2e103ca967b16d0938084828ce508287432bcc12d71937c11cc2f49d932a5ef8" - }, - "commitmentsHash": "0xb8d060a2016f89f7d8ef678885b2e31c731106bf10e2d8c0364a9f5185aa261e" - }, - "0x7b5bd7f0ba96728057aeaf41c9713dc5ddfe013d010d4670ccea9043e344d2ecea0f35004474e94d9735a5bb00dff1c6d88212e042fbbbc0b6806830861830348248d9c8d2de26018605c5223c7b65e2e57b14a665d8e05d36d634d5622f50d6df49f6ae080661757261203ffe3208000000000561757261010102231920fea61aeb461e7a9de9c990d588390e7ef2f433d25c0342f3b3f4f319ed46c243d17bfeeeea9f83de9632a88f697f55e4a09fdc6f67057f9498b1028c", - "1", - "27" - ] - }, - { - "method": { - "pallet": "paraInclusion", - "method": "CandidateBacked" - }, - "data": [ - { - "descriptor": { - "paraId": "2011", - "relayParent": "0x6c51377632106ddba379416f2ef5e24450e90cee8c78a70daa262b2ae6f27e93", - "collator": "0x9c6712de13e97ea5c981650760b014e280681c456b72fbffe332c0873ead5926", - "persistedValidationDataHash": "0x567fcedd0351c51a31580ec401f4abe0aed860e37e62f5241bbde647ce15eeae", - "povHash": "0x47926531b3d833b92d669f91d0bfb747fe3a5a9a8d018c9d1804ecd26aed4f55", - "erasureRoot": "0x61971d7d5706a307c02d49f527d8ad1847dadb903a1c578916c57f4f1ff431d2", - "signature": "0xc4bd3b41e605dcd7cd1e8d1326baf57bf5b74c3ca16290bc2b5d3aaa90ec975e16d57ce98d7c7b6ac6b4cb394e85f309514113570b1c05245b2283b230f93b8d", - "paraHead": "0x65939e180190ac2701952bdf174ba69b265c2977045f6a6187a0492676ca1153", - "validationCodeHash": "0xd1dcce63a55a08b397ab69a06124332b424ae8935871d3c0e9c7bff19a6370f1" - }, - "commitmentsHash": "0x553a86a694bbd974041c569c90991ce429e8e53a38dd8337b87ce4b44b64c2c3" - }, - "0xc136db6ff28b18408f5f14076764f76d424bffa5de5a893e8cc4550129efbb0852960600532a380b1cd9343b3ba46f218392082a9e2d5940c0f2c8528d4101287edaab17954f93ecaad979e418ba4c7d9adfc5624a588082e647c55316b7f80945935f3e080661757261203ffe320800000000056175726101012cec396f631c6bdc45381610ca9b64b1589eb188495501e1cec8ca2b7c971c1be10d2ac551fda1bcef9738b4564fe1ca0fbe9263024357f15b59670dfe9d1284", - "5", - "31" - ] - }, - { - "method": { - "pallet": "paraInclusion", - "method": "CandidateBacked" - }, - "data": [ - { - "descriptor": { - "paraId": "2012", - "relayParent": "0x6c51377632106ddba379416f2ef5e24450e90cee8c78a70daa262b2ae6f27e93", - "collator": "0x747cfb1aacda7206a125c66dcd4b9026d2d9d1e5aa253db1fff66ed7bca37669", - "persistedValidationDataHash": "0x14210bd32b13c04e721189394e86958e1c3a2ab33fadfde0ab54a098e7533fd8", - "povHash": "0xd10bf5d7af57b0db2caec0f1f658dadbb320f96d53772c734c9b17950666665b", - "erasureRoot": "0xb1c378fba38ffe4e0fb3069c3238be0aa14c923e04336246cd31ea4edebaab28", - "signature": "0xd4e8a373d2928e034c5186b04ca4bcb63a703151c76f9eb5042eb9e4aaa49469095c6e1f88a93fa0b9604bd06472bb97d56488c907248a4bdee3a4619d9cc883", - "paraHead": "0x15b78b9638346476db286866bb0230fd3e0508c7d04d4079ecef1c7a90b99c89", - "validationCodeHash": "0x8ce8224df71ac76563a1f175ef3f7a2fa98e26f04af960f511ce0df796850a00" - }, - "commitmentsHash": "0xbfb226a3ca9beae375fd1b3bc237c7b607ecfa031b4dd2a473e9560d4e955d7d" - }, - "0x8d1af7fba7076e80b22c6ca3a12f90e967d5ffa1d107af22cce75c51fe14ee4cb2a131007cfbc9a34ee9fc18972e49cd412eccc1128793c150b7deded4fbbd9de2a0eb468411db287451b1e32cef0adf58e7fa8edcb2b05470476902f2bbf5e50bf9986d080661757261203ffe32080000000005617572610101020e289a9c5851ba3b704368724077319a2bd312995062d2a131cce31f05ab0cf562174a6e5cf60108007c17b2180b14d61eebd1f2a3a421c1b64fe792761382", - "6", - "32" - ] - }, - { - "method": { - "pallet": "paraInclusion", - "method": "CandidateBacked" - }, - "data": [ - { - "descriptor": { - "paraId": "2031", - "relayParent": "0x6c51377632106ddba379416f2ef5e24450e90cee8c78a70daa262b2ae6f27e93", - "collator": "0x66b381c4f884091031c28ef5bb1b8f5e7a2a17b8cbe2168bc467a9eecdc46d73", - "persistedValidationDataHash": "0x62dc467fecf359186ac1dd3487948bb67bfda8cc0c8231af335d18c952559f3f", - "povHash": "0xf5559e448df81fdffeeb58755c6e3eb93b6f5887f0ed2adddcddc23aad7c3312", - "erasureRoot": "0x50ef3e81556387e237d3550a6d885f6a7d39849b07629edb71050e5e0d0b85c7", - "signature": "0xecaf202f36329e840e00e0b88a1cf7c3036f22174903596abd41e252184bbd40875d93083d5cd60e77650e711fb19f18bdfe6ef89a75a807a25dd2607e40d28a", - "paraHead": "0x9a62126564e07a47f77bf2dff52bb9fd44109751227945a6c7c310be85eee28d", - "validationCodeHash": "0x024aab592ae76eaa458cc18f9a80819fcec1caec087eb5263efcd4a1d163facb" - }, - "commitmentsHash": "0xe545f736d071d44823ab5bf8a513bd6ccddfdc4c37a800fa5b3389e8f606ac73" - }, - "0x37a3717548a120ecd6d3ab55f337fc8dd362a947ce3ff24856fea53dce4af4db4e5911007bbf8bd957bf579c58b4c6ca84786d2db8d1197e0e5b490e9484d6ca086b3f138c96dc874771ef57a2d055bb9935e6ece3099db73b4b334b5736864fd3eb514c080661757261203ffe320800000000056175726101016e7e4ec19a22f91f7edfddefd687dfeb84dc14a870e39d2ba4b47b4807864762fdc264b17ba184b7483b1a07051722d7fbaccfa477777ada1948b18978556f8f", - "10", - "36" - ] - }, - { - "method": { - "pallet": "system", - "method": "ExtrinsicSuccess" - }, - "data": [ - { - "weight": "575877564000", - "class": "Mandatory", - "paysFee": "Yes" - } - ] - } - ], - "success": true, - "paysFee": false - }, - { - "method": { - "pallet": "utility", - "method": "batchAll" - }, - "signature": { - "signature": "0xb21d7def8ba15e6cabf8b1dfdc79b4dfc0f06d51f67e692c9f97e2866ff94f66e09f3efc49a4fe2278c6f882d1ca17a06b16fc8da7b4e3520092f676b6419489", - "signer": { - "id": "13vj58X9YtGCRBFHrcxP6GCkBu81ALcqexiwySx18ygqAUw" - } - }, - "nonce": "79962", - "args": { - "calls": [ - { - "method": { - "pallet": "system", - "method": "remark" - }, - "args": { - "remark": "0x55cf3c8103e53c20a5d9bee35bb001e185a6ea4f23174090342fca9aad14f9b6" - } - }, - { - "method": { - "pallet": "proxy", - "method": "proxy" - }, - "args": { - "real": "13wNbioJt44NKrcQ5ZUrshJqP7TKzQbzZt5nhkeL4joa3PAX", - "force_proxy_type": null, - "call": { - "method": { - "pallet": "crowdloan", - "method": "contribute" - }, - "args": { - "index": "2040", - "value": "100000000000", - "signature": null - } - } - } - } - ] - }, - "tip": "0", - "hash": "0x38a27f2c5f80c5e922431d1fe66a323810b4a88367a0d7aedd151cbe3470a4fb", - "info": { - "weight": "1055408000", - "class": "Normal", - "partialFee": "202000084", - "kind": "postDispatch" - }, - "era": { - "mortalEra": [ - "64", - "60" - ] - }, - "events": [ - { - "method": { - "pallet": "balances", - "method": "Withdraw" - }, - "data": [ - "13vj58X9YtGCRBFHrcxP6GCkBu81ALcqexiwySx18ygqAUw", - "202000084" - ] - }, - { - "method": { - "pallet": "utility", - "method": "ItemCompleted" - }, - "data": [] - }, - { - "method": { - "pallet": "balances", - "method": "Transfer" - }, - "data": [ - "13wNbioJt44NKrcQ5ZUrshJqP7TKzQbzZt5nhkeL4joa3PAX", - "13UVJyLnbVp77Z2t6qjFmcyzTXYQJjyb6Hww7ZHPumd81iht", - "100000000000" - ] - }, - { - "method": { - "pallet": "crowdloan", - "method": "Contributed" - }, - "data": [ - "13wNbioJt44NKrcQ5ZUrshJqP7TKzQbzZt5nhkeL4joa3PAX", - "2040", - "100000000000" - ] - }, - { - "method": { - "pallet": "proxy", - "method": "ProxyExecuted" - }, - "data": [ - { - "ok": null - } - ] - }, - { - "method": { - "pallet": "utility", - "method": "ItemCompleted" - }, - "data": [] - }, - { - "method": { - "pallet": "utility", - "method": "BatchCompleted" - }, - "data": [] - }, - { - "method": { - "pallet": "balances", - "method": "Deposit" - }, - "data": [ - "13UVJyLnbVp9RBZYFwFGyDvVd1y27Tt8tkntv6Q7JVPhFsTB", - "161600067" - ] - }, - { - "method": { - "pallet": "treasury", - "method": "Deposit" - }, - "data": [ - "161600067" - ] - }, - { - "method": { - "pallet": "balances", - "method": "Deposit" - }, - "data": [ - "114SUbKCXjmb9czpWTtS3JANSmNRwVa4mmsMrWYpRG1kDH5", - "40400017" - ] - }, - { - "method": { - "pallet": "system", - "method": "ExtrinsicSuccess" - }, - "data": [ - { - "weight": "1055408000", - "class": "Normal", - "paysFee": "Yes" - } - ] - } - ], - "success": true, - "paysFee": true - } - ], - "onFinalize": { - "events": [] - }, - "finalized": true -} \ No newline at end of file diff --git a/crates/integration_tests/tests/fixtures/polkadot/coretime_info_24000000.json b/crates/integration_tests/tests/fixtures/polkadot/coretime/info_24000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/coretime_info_24000000.json rename to crates/integration_tests/tests/fixtures/polkadot/coretime/info_24000000.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/coretime_overview_24000000.json b/crates/integration_tests/tests/fixtures/polkadot/coretime/overview_24000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/coretime_overview_24000000.json rename to crates/integration_tests/tests/fixtures/polkadot/coretime/overview_24000000.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_balances_dispatchables_28500000.json b/crates/integration_tests/tests/fixtures/polkadot/pallets/balances/dispatchables_28500000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/pallets_balances_dispatchables_28500000.json rename to crates/integration_tests/tests/fixtures/polkadot/pallets/balances/dispatchables_28500000.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_balances_dispatchables_transfer_allow_death_28500000.json b/crates/integration_tests/tests/fixtures/polkadot/pallets/balances/dispatchables_transfer_allow_death_28500000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/pallets_balances_dispatchables_transfer_allow_death_28500000.json rename to crates/integration_tests/tests/fixtures/polkadot/pallets/balances/dispatchables_transfer_allow_death_28500000.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_balances_errors.json b/crates/integration_tests/tests/fixtures/polkadot/pallets/balances/errors.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/pallets_balances_errors.json rename to crates/integration_tests/tests/fixtures/polkadot/pallets/balances/errors.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_balances_errors_21000000.json b/crates/integration_tests/tests/fixtures/polkadot/pallets/balances/errors_21000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/pallets_balances_errors_21000000.json rename to crates/integration_tests/tests/fixtures/polkadot/pallets/balances/errors_21000000.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_balances_errors_InsufficientBalance.json b/crates/integration_tests/tests/fixtures/polkadot/pallets/balances/errors_InsufficientBalance.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/pallets_balances_errors_InsufficientBalance.json rename to crates/integration_tests/tests/fixtures/polkadot/pallets/balances/errors_InsufficientBalance.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_balances_errors_InsufficientBalance_21000000.json b/crates/integration_tests/tests/fixtures/polkadot/pallets/balances/errors_InsufficientBalance_21000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/pallets_balances_errors_InsufficientBalance_21000000.json rename to crates/integration_tests/tests/fixtures/polkadot/pallets/balances/errors_InsufficientBalance_21000000.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_balances_errors_InsufficientBalance_metadata.json b/crates/integration_tests/tests/fixtures/polkadot/pallets/balances/errors_InsufficientBalance_metadata.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/pallets_balances_errors_InsufficientBalance_metadata.json rename to crates/integration_tests/tests/fixtures/polkadot/pallets/balances/errors_InsufficientBalance_metadata.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_balances_errors_onlyIds.json b/crates/integration_tests/tests/fixtures/polkadot/pallets/balances/errors_onlyIds.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/pallets_balances_errors_onlyIds.json rename to crates/integration_tests/tests/fixtures/polkadot/pallets/balances/errors_onlyIds.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_nomination_pools_1_28500000.json b/crates/integration_tests/tests/fixtures/polkadot/pallets/nomination_pools/1_28500000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/pallets_nomination_pools_1_28500000.json rename to crates/integration_tests/tests/fixtures/polkadot/pallets/nomination_pools/1_28500000.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_nomination_pools_info_28500000.json b/crates/integration_tests/tests/fixtures/polkadot/pallets/nomination_pools/info_28500000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/pallets_nomination_pools_info_28500000.json rename to crates/integration_tests/tests/fixtures/polkadot/pallets/nomination_pools/info_28500000.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_on_going_referenda_24000000.json b/crates/integration_tests/tests/fixtures/polkadot/pallets/referenda/on_going_24000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/pallets_on_going_referenda_24000000.json rename to crates/integration_tests/tests/fixtures/polkadot/pallets/referenda/on_going_24000000.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_staking_storage_bonded_20000000.json b/crates/integration_tests/tests/fixtures/polkadot/pallets/staking/storage_bonded_20000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/pallets_staking_storage_bonded_20000000.json rename to crates/integration_tests/tests/fixtures/polkadot/pallets/staking/storage_bonded_20000000.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_staking_storage_minimumvalidatorcount_20000000.json b/crates/integration_tests/tests/fixtures/polkadot/pallets/staking/storage_minimumvalidatorcount_20000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/pallets_staking_storage_minimumvalidatorcount_20000000.json rename to crates/integration_tests/tests/fixtures/polkadot/pallets/staking/storage_minimumvalidatorcount_20000000.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_staking_storage_validatorcount_20000000.json b/crates/integration_tests/tests/fixtures/polkadot/pallets/staking/storage_validatorcount_20000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/pallets_staking_storage_validatorcount_20000000.json rename to crates/integration_tests/tests/fixtures/polkadot/pallets/staking/storage_validatorcount_20000000.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_system_errors.json b/crates/integration_tests/tests/fixtures/polkadot/pallets/system/errors.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/pallets_system_errors.json rename to crates/integration_tests/tests/fixtures/polkadot/pallets/system/errors.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_system_storage_number_20000000.json b/crates/integration_tests/tests/fixtures/polkadot/pallets/system/storage_number_20000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/pallets_system_storage_number_20000000.json rename to crates/integration_tests/tests/fixtures/polkadot/pallets/system/storage_number_20000000.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_timestamp_storage_now_20000000.json b/crates/integration_tests/tests/fixtures/polkadot/pallets/timestamp/storage_now_20000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/pallets_timestamp_storage_now_20000000.json rename to crates/integration_tests/tests/fixtures/polkadot/pallets/timestamp/storage_now_20000000.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_balances_events_28500000.json b/crates/integration_tests/tests/fixtures/polkadot/pallets_balances_events_28500000.json deleted file mode 100644 index 22044d17e..000000000 --- a/crates/integration_tests/tests/fixtures/polkadot/pallets_balances_events_28500000.json +++ /dev/null @@ -1,580 +0,0 @@ -{ - "at": { - "hash": "0xc81393d2525d811740f3dbea75461babdf60a5c3cf266200eaaa6e3ff3eafe0e", - "height": "28500000" - }, - "pallet": "balances", - "palletIndex": "5", - "items": [ - { - "name": "Endowed", - "fields": [ - { - "name": "account", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "free_balance", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "0", - "docs": [ - "An account was created with some free balance." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "DustLost", - "fields": [ - { - "name": "account", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "1", - "docs": [ - "An account was removed whose balance was non-zero but below ExistentialDeposit,", - "resulting in an outright loss." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Transfer", - "fields": [ - { - "name": "from", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "to", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "2", - "docs": [ - "Transfer succeeded." - ], - "args": [ - "AccountId32", - "AccountId32", - "u128" - ] - }, - { - "name": "BalanceSet", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "free", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "3", - "docs": [ - "A balance was set by root." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Reserved", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "4", - "docs": [ - "Some balance was reserved (moved from free to reserved)." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Unreserved", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "5", - "docs": [ - "Some balance was unreserved (moved from reserved to free)." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "ReserveRepatriated", - "fields": [ - { - "name": "from", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "to", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - }, - { - "name": "destination_status", - "type": "40", - "typeName": "Status", - "docs": [] - } - ], - "index": "6", - "docs": [ - "Some balance was moved from the reserve of the first account to the second account.", - "Final argument indicates the destination balance type." - ], - "args": [ - "AccountId32", - "AccountId32", - "u128", - "{\"_enum\":[\"Free\",\"Reserved\"]}" - ] - }, - { - "name": "Deposit", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "7", - "docs": [ - "Some amount was deposited (e.g. for transaction fees)." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Withdraw", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "8", - "docs": [ - "Some amount was withdrawn from the account (e.g. for transaction fees)." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Slashed", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "9", - "docs": [ - "Some amount was removed from the account (e.g. for misbehavior)." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Minted", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "10", - "docs": [ - "Some amount was minted into an account." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Burned", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "11", - "docs": [ - "Some amount was burned from an account." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Suspended", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "12", - "docs": [ - "Some amount was suspended from an account (it can be restored later)." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Restored", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "13", - "docs": [ - "Some amount was restored into an account." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Upgraded", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - } - ], - "index": "14", - "docs": [ - "An account was upgraded." - ], - "args": [ - "AccountId32" - ] - }, - { - "name": "Issued", - "fields": [ - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "15", - "docs": [ - "Total issuance was increased by `amount`, creating a credit to be balanced." - ], - "args": [ - "u128" - ] - }, - { - "name": "Rescinded", - "fields": [ - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "16", - "docs": [ - "Total issuance was decreased by `amount`, creating a debt to be balanced." - ], - "args": [ - "u128" - ] - }, - { - "name": "Locked", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "17", - "docs": [ - "Some balance was locked." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Unlocked", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "18", - "docs": [ - "Some balance was unlocked." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Frozen", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "19", - "docs": [ - "Some balance was frozen." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "Thawed", - "fields": [ - { - "name": "who", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "20", - "docs": [ - "Some balance was thawed." - ], - "args": [ - "AccountId32", - "u128" - ] - }, - { - "name": "TotalIssuanceForced", - "fields": [ - { - "name": "old", - "type": "6", - "typeName": "T::Balance", - "docs": [] - }, - { - "name": "new", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "21", - "docs": [ - "The `TotalIssuance` was forcefully changed." - ], - "args": [ - "u128", - "u128" - ] - }, - { - "name": "Unexpected", - "fields": [ - { - "name": null, - "type": "41", - "typeName": "UnexpectedKind", - "docs": [] - } - ], - "index": "22", - "docs": [ - "An unexpected/defensive event was triggered." - ], - "args": [ - "{\"_enum\":[\"BalanceUpdated\",\"FailedToMutateAccount\"]}" - ] - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_balances_events_Transfer_28500000.json b/crates/integration_tests/tests/fixtures/polkadot/pallets_balances_events_Transfer_28500000.json deleted file mode 100644 index 6364f218e..000000000 --- a/crates/integration_tests/tests/fixtures/polkadot/pallets_balances_events_Transfer_28500000.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "at": { - "hash": "0xc81393d2525d811740f3dbea75461babdf60a5c3cf266200eaaa6e3ff3eafe0e", - "height": "28500000" - }, - "pallet": "balances", - "palletIndex": "5", - "eventItem": "transfer", - "metadata": { - "name": "Transfer", - "fields": [ - { - "name": "from", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "to", - "type": "0", - "typeName": "T::AccountId", - "docs": [] - }, - { - "name": "amount", - "type": "6", - "typeName": "T::Balance", - "docs": [] - } - ], - "index": "2", - "docs": [ - "Transfer succeeded." - ], - "args": [ - "AccountId32", - "AccountId32", - "u128" - ] - } -} diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_staking_storage_20000000.json b/crates/integration_tests/tests/fixtures/polkadot/pallets_staking_storage_20000000.json deleted file mode 100644 index 906b13b82..000000000 --- a/crates/integration_tests/tests/fixtures/polkadot/pallets_staking_storage_20000000.json +++ /dev/null @@ -1,561 +0,0 @@ -{ - "at": { - "hash": "0xde2f6847c0cfed45b7a088fe0a726941a848a1337f185978483ef32a4efddfb4", - "height": "20000000" - }, - "pallet": "staking", - "palletIndex": "7", - "items": [ - { - "name": "ValidatorCount", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The ideal number of active validators.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "MinimumValidatorCount", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " Minimum number of staking participants before emergency conditions are imposed.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Invulnerables", - "modifier": "Default", - "type": { - "plain": "111" - }, - "fallback": "0x00", - "docs": " Any validators that may never be slashed or forcibly kicked. It's a Vec since they're\n easy to initialize and the performance hit is minimal (we expect no more than four\n invulnerables) and restricted to testnets.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Bonded", - "modifier": "Optional", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "0", - "value": "0" - } - }, - "fallback": "0x00", - "docs": " Map from all locked \"stash\" accounts to the controller account.\n\n TWOX-NOTE: SAFE since `AccountId` is a secure hash.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "MinNominatorBond", - "modifier": "Default", - "type": { - "plain": "6" - }, - "fallback": "0x00000000000000000000000000000000", - "docs": " The minimum active bond to become and maintain the role of a nominator.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "MinValidatorBond", - "modifier": "Default", - "type": { - "plain": "6" - }, - "fallback": "0x00000000000000000000000000000000", - "docs": " The minimum active bond to become and maintain the role of a validator.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "MinimumActiveStake", - "modifier": "Default", - "type": { - "plain": "6" - }, - "fallback": "0x00000000000000000000000000000000", - "docs": " The minimum active nominator stake of the last successful election.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "MinCommission", - "modifier": "Default", - "type": { - "plain": "42" - }, - "fallback": "0x00000000", - "docs": " The minimum amount of commission that validators can set.\n\n If set to `0`, no limit exists.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Ledger", - "modifier": "Optional", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "0", - "value": "535" - } - }, - "fallback": "0x00", - "docs": " Map from all (unlocked) \"controller\" accounts to the info regarding the staking.\n\n Note: All the reads and mutations to this storage *MUST* be done through the methods exposed\n by [`StakingLedger`] to ensure data and lock consistency.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Payee", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "0", - "value": "41" - } - }, - "fallback": "0x00", - "docs": " Where the reward payment should be made. Keyed by stash.\n\n TWOX-NOTE: SAFE since `AccountId` is a secure hash.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Validators", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "0", - "value": "43" - } - }, - "fallback": "0x0000", - "docs": " The map from (wannabe) validator stash key to the preferences of that validator.\n\n TWOX-NOTE: SAFE since `AccountId` is a secure hash.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "CounterForValidators", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": "Counter for the related counted storage map", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "MaxValidatorsCount", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " The maximum validator count before we stop allowing new validators to join.\n\n When this value is not set, no limits are enforced.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Nominators", - "modifier": "Optional", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "0", - "value": "540" - } - }, - "fallback": "0x00", - "docs": " The map from nominator stash key to their nomination preferences, namely the validators that\n they wish to support.\n\n Note that the keys of this storage map might become non-decodable in case the\n account's [`NominationsQuota::MaxNominations`] configuration is decreased.\n In this rare case, these nominators\n are still existent in storage, their key is correct and retrievable (i.e. `contains_key`\n indicates that they exist), but their value cannot be decoded. Therefore, the non-decodable\n nominators will effectively not-exist, until they re-submit their preferences such that it\n is within the bounds of the newly set `Config::MaxNominations`.\n\n This implies that `::iter_keys().count()` and `::iter().count()` might return different\n values for this map. Moreover, the main `::count()` is aligned with the former, namely the\n number of keys that exist.\n\n Lastly, if any of the nominators become non-decodable, they can be chilled immediately via\n [`Call::chill_other`] dispatchable by anyone.\n\n TWOX-NOTE: SAFE since `AccountId` is a secure hash.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "CounterForNominators", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": "Counter for the related counted storage map", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "MaxNominatorsCount", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " The maximum nominator count before we stop allowing new validators to join.\n\n When this value is not set, no limits are enforced.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "CurrentEra", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " The current era index.\n\n This is the latest planned era, depending on how the Session pallet queues the validator\n set, it might be active or not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ActiveEra", - "modifier": "Optional", - "type": { - "plain": "542" - }, - "fallback": "0x00", - "docs": " The active era information, it holds index and start.\n\n The active era is the era being currently rewarded. Validator set of this era must be\n equal to [`SessionInterface::validators`].", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ErasStartSessionIndex", - "modifier": "Optional", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "4" - } - }, - "fallback": "0x00", - "docs": " The session index at which the era start for the last `HISTORY_DEPTH` eras.\n\n Note: This tracks the starting session (i.e. session index when era start being active)\n for the eras in `[CurrentEra - HISTORY_DEPTH, CurrentEra]`.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ErasStakers", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat", - "Twox64Concat" - ], - "key": "544", - "value": "60" - } - }, - "fallback": "0x000000", - "docs": " Exposure of validator at era.\n\n This is keyed first by the era index to allow bulk deletion and then the stash account.\n\n Is it removed after `HISTORY_DEPTH` eras.\n If stakers hasn't been set or has been removed then empty exposure is returned.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ErasStakersClipped", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat", - "Twox64Concat" - ], - "key": "544", - "value": "60" - } - }, - "fallback": "0x000000", - "docs": " Clipped Exposure of validator at era.\n\n This is similar to [`ErasStakers`] but number of nominators exposed is reduced to the\n `T::MaxNominatorRewardedPerValidator` biggest stakers.\n (Note: the field `total` and `own` of the exposure remains unchanged).\n This is used to limit the i/o cost for the nominator payout.\n\n This is keyed fist by the era index to allow bulk deletion and then the stash account.\n\n Is it removed after `HISTORY_DEPTH` eras.\n If stakers hasn't been set or has been removed then empty exposure is returned.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ErasValidatorPrefs", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat", - "Twox64Concat" - ], - "key": "544", - "value": "43" - } - }, - "fallback": "0x0000", - "docs": " Similar to `ErasStakers`, this holds the preferences of validators.\n\n This is keyed first by the era index to allow bulk deletion and then the stash account.\n\n Is it removed after `HISTORY_DEPTH` eras.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ErasValidatorReward", - "modifier": "Optional", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "6" - } - }, - "fallback": "0x00", - "docs": " The total validator era payout for the last `HISTORY_DEPTH` eras.\n\n Eras that haven't finished yet or has been removed doesn't have reward.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ErasRewardPoints", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "545" - } - }, - "fallback": "0x0000000000", - "docs": " Rewards for the last `HISTORY_DEPTH` eras.\n If reward hasn't been set or has been removed then 0 reward is returned.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ErasTotalStake", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "6" - } - }, - "fallback": "0x00000000000000000000000000000000", - "docs": " The total amount staked for the last `HISTORY_DEPTH` eras.\n If total hasn't been set or has been removed then 0 stake is returned.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ForceEra", - "modifier": "Default", - "type": { - "plain": "46" - }, - "fallback": "0x00", - "docs": " Mode of era forcing.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "SlashRewardFraction", - "modifier": "Default", - "type": { - "plain": "42" - }, - "fallback": "0x00000000", - "docs": " The percentage of the slash that is distributed to reporters.\n\n The rest of the slashed value is handled by the `Slash`.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "CanceledSlashPayout", - "modifier": "Default", - "type": { - "plain": "6" - }, - "fallback": "0x00000000000000000000000000000000", - "docs": " The amount of currency given to reporters of a slash event which was\n canceled by extraordinary circumstances (e.g. governance).", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UnappliedSlashes", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "549" - } - }, - "fallback": "0x00", - "docs": " All unapplied slashes that are queued for later.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BondedEras", - "modifier": "Default", - "type": { - "plain": "470" - }, - "fallback": "0x00", - "docs": " A mapping from still-bonded eras to the first session index of that era.\n\n Must contains information for eras for the range:\n `[active_era - bounding_duration; active_era]`", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ValidatorSlashInEra", - "modifier": "Optional", - "type": { - "map": { - "hashers": [ - "Twox64Concat", - "Twox64Concat" - ], - "key": "544", - "value": "551" - } - }, - "fallback": "0x00", - "docs": " All slashing events on validators, mapped by era to the highest slash proportion\n and slash value of the era.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "NominatorSlashInEra", - "modifier": "Optional", - "type": { - "map": { - "hashers": [ - "Twox64Concat", - "Twox64Concat" - ], - "key": "544", - "value": "6" - } - }, - "fallback": "0x00", - "docs": " All slashing events on nominators, mapped by era to the highest slash value of the era.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "SlashingSpans", - "modifier": "Optional", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "0", - "value": "552" - } - }, - "fallback": "0x00", - "docs": " Slashing spans for stash accounts.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "SpanSlash", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "548", - "value": "553" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Records information about the maximum slash of a stash within a slashing span,\n as well as how much reward has been paid out.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "CurrentPlannedSession", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The last planned session scheduled by the session pallet.\n\n This is basically in sync with the call to [`pallet_session::SessionManager::new_session`].", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "OffendingValidators", - "modifier": "Default", - "type": { - "plain": "554" - }, - "fallback": "0x00", - "docs": " Indices of validators that have offended in the active era and whether they are currently\n disabled.\n\n This value should be a superset of disabled validators since not all offences lead to the\n validator being disabled (if there was no slash). This is needed to track the percentage of\n validators that have offended in the current era, ensuring a new era is forced if\n `OffendingValidatorsThreshold` is reached. The vec is always kept sorted so that we can find\n whether a given validator has previously offended using binary search. It gets cleared when\n the era ends.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ChillThreshold", - "modifier": "Optional", - "type": { - "plain": "114" - }, - "fallback": "0x00", - "docs": " The threshold for when users can start calling `chill_other` for other validators /\n nominators. The threshold is compared to the actual number of validators / nominators\n (`CountFor*`) in the system compared to the configured max (`Max*Count`).", - "deprecationInfo": { - "notDeprecated": null - } - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_system_consts_21000000.json b/crates/integration_tests/tests/fixtures/polkadot/pallets_system_consts_21000000.json deleted file mode 100644 index a782f2613..000000000 --- a/crates/integration_tests/tests/fixtures/polkadot/pallets_system_consts_21000000.json +++ /dev/null @@ -1 +0,0 @@ -{"at":{"hash":"0x44bc3559c69ed5ce5827ce629adf5ed642e1131f9b91fce4342aafb80d96cd34","height":"21000000"},"pallet":"system","palletIndex":"0","items":[{"name":"BlockWeights","type":"525","value":"0x07b0bde93603000b00204aa9d10113ffffffffffffffff222d0d1e00010bb8845c8f580113a3703d0ad7a370bd010b0098f73e5d0113ffffffffffffffbf010000222d0d1e00010bb80caff9cc0113a3703d0ad7a370fd010b00204aa9d10113ffffffffffffffff01070088526a74130000000000000040222d0d1e00000000","docs":[" Block & extrinsics weights: base values and limits."],"deprecationInfo":{"notDeprecated":null}},{"name":"BlockLength","type":"528","value":"0x00003c000000500000005000","docs":[" The maximum length of a block (in bytes)."],"deprecationInfo":{"notDeprecated":null}},{"name":"BlockHashCount","type":"4","value":"0x00100000","docs":[" Maximum number of block number to block hash mappings to keep (oldest pruned first)."],"deprecationInfo":{"notDeprecated":null}},{"name":"DbWeight","type":"530","value":"0x38ca38010000000098aaf90400000000","docs":[" The weight of runtime database operations the runtime can invoke."],"deprecationInfo":{"notDeprecated":null}},{"name":"Version","type":"531","value":"0x20706f6c6b61646f743c7061726974792d706f6c6b61646f7400000000104a0f00000000004cdf6acb689907609b0400000037e397fc7c91f5e40200000040fe3ad401f8959a0600000017a6bc0d0062aeb30100000018ef58a3b67ba77001000000d2bc9897eed08f1503000000f78b278be53f454c02000000af2c0297a23e6d3d0a00000049eaaf1b548a0cb00300000091d5df18b0d2cf58020000002a5e924655399e6001000000ed99c5acb25eedf503000000cbca25e39f14238702000000687ad44ad37f03c201000000ab3c0572291feb8b01000000bc9d89904f5b923f0100000037c8bb1350a9a2a804000000f3ff14d5ab52705903000000fbc577b9d747efd6010000001900000001","docs":[" Get the chain's current version."],"deprecationInfo":{"notDeprecated":null}},{"name":"SS58Prefix","type":"100","value":"0x0000","docs":[" The designated SS58 prefix of this chain.",""," This replaces the \"ss58Format\" property declared in the chain spec. Reason is"," that the runtime should know about the prefix in order to make use of it as"," an identifier of the chain."],"deprecationInfo":{"notDeprecated":null}}]} \ No newline at end of file diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_system_consts_blockweights_21000000.json b/crates/integration_tests/tests/fixtures/polkadot/pallets_system_consts_blockweights_21000000.json deleted file mode 100644 index 9cfc677f1..000000000 --- a/crates/integration_tests/tests/fixtures/polkadot/pallets_system_consts_blockweights_21000000.json +++ /dev/null @@ -1 +0,0 @@ -{"at":{"hash":"0x44bc3559c69ed5ce5827ce629adf5ed642e1131f9b91fce4342aafb80d96cd34","height":"21000000"},"pallet":"system","palletIndex":"0","constantsItem":"blockWeights","metadata":{"name":"BlockWeights","type":"525","value":"0x07b0bde93603000b00204aa9d10113ffffffffffffffff222d0d1e00010bb8845c8f580113a3703d0ad7a370bd010b0098f73e5d0113ffffffffffffffbf010000222d0d1e00010bb80caff9cc0113a3703d0ad7a370fd010b00204aa9d10113ffffffffffffffff01070088526a74130000000000000040222d0d1e00000000","docs":[" Block & extrinsics weights: base values and limits."],"deprecationInfo":{"notDeprecated":null}}} \ No newline at end of file diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_system_storage_10000000_v14.json b/crates/integration_tests/tests/fixtures/polkadot/pallets_system_storage_10000000_v14.json deleted file mode 100644 index 730d9d38c..000000000 --- a/crates/integration_tests/tests/fixtures/polkadot/pallets_system_storage_10000000_v14.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "at": { - "hash": "0x6c51377632106ddba379416f2ef5e24450e90cee8c78a70daa262b2ae6f27e93", - "height": "10000000" - }, - "pallet": "system", - "palletIndex": "0", - "items": [ - { - "name": "Account", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "0", - "value": "3" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "docs": " The full account information for a particular account ID.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicCount", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total extrinsics count for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockWeight", - "modifier": "Default", - "type": { - "plain": "7" - }, - "fallback": "0x000000000000000000000000000000000000000000000000", - "docs": " The current weight for the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AllExtrinsicsLen", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total length (in bytes) for all extrinsics put together, for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockHash", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "9" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Map of block numbers to block hashes.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicData", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "10" - } - }, - "fallback": "0x00", - "docs": " Extrinsics data for the current block (maps an extrinsic's index to its data).", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Number", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The current block number being processed. Set by `execute_block`.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ParentHash", - "modifier": "Default", - "type": { - "plain": "9" - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Hash of the previous block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Digest", - "modifier": "Default", - "type": { - "plain": "11" - }, - "fallback": "0x00", - "docs": " Digest of the current block, also part of the block header.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Events", - "modifier": "Default", - "type": { - "plain": "15" - }, - "fallback": "0x00", - "docs": " Events deposited for the current block.\n\n NOTE: This storage item is explicitly unbounded since it is never intended to be read\n from within the runtime.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventCount", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The number of events in the `Events` list.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventTopics", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "9", - "value": "147" - } - }, - "fallback": "0x00", - "docs": " Mapping between a topic (represented by T::Hash) and a vector of indexes\n of events in the `>` list.\n\n All topic vectors have deterministic storage locations depending on the topic. This\n allows light-clients to leverage the changes trie storage tracking mechanism and\n in case of changes fetch the list of events of interest.\n\n The value has the type `(T::BlockNumber, EventIndex)` because if we used only just\n the `EventIndex` then in case if the topic has the same contents on the next block\n no notification will be triggered thus the event might be lost.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "LastRuntimeUpgrade", - "modifier": "Optional", - "type": { - "plain": "148" - }, - "fallback": "0x00", - "docs": " Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToU32RefCount", - "modifier": "Default", - "type": { - "plain": "60" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that `type RefCount` is `u32`. False (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToTripleRefCount", - "modifier": "Default", - "type": { - "plain": "60" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that AccountInfo contains three types of `RefCount`. False\n (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExecutionPhase", - "modifier": "Optional", - "type": { - "plain": "145" - }, - "fallback": "0x00", - "docs": " The execution phase of the block.", - "deprecationInfo": { - "notDeprecated": null - } - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_system_storage_1000000_v12.json b/crates/integration_tests/tests/fixtures/polkadot/pallets_system_storage_1000000_v12.json deleted file mode 100644 index 83db4d6db..000000000 --- a/crates/integration_tests/tests/fixtures/polkadot/pallets_system_storage_1000000_v12.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "at": { - "hash": "0x490cd542b4a40ad743183c7d1088a4fe7b1edf21e50c850b86f29e389f31c5c1", - "height": "1000000" - }, - "pallet": "system", - "palletIndex": "0", - "items": [ - { - "name": "Account", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "T::AccountId", - "value": "AccountInfo" - } - }, - "fallback": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "docs": " The full account information for a particular account ID.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicCount", - "modifier": "Optional", - "type": { - "plain": "u32" - }, - "fallback": "0x00", - "docs": " Total extrinsics count for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockWeight", - "modifier": "Default", - "type": { - "plain": "weights::ExtrinsicsWeight" - }, - "fallback": "0x00000000000000000000000000000000", - "docs": " The current weight for the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AllExtrinsicsLen", - "modifier": "Optional", - "type": { - "plain": "u32" - }, - "fallback": "0x00", - "docs": " Total length (in bytes) for all extrinsics put together, for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockHash", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "T::BlockNumber", - "value": "T::Hash" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Map of block numbers to block hashes.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicData", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "u32", - "value": "Vec" - } - }, - "fallback": "0x00", - "docs": " Extrinsics data for the current block (maps an extrinsic's index to its data).", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Number", - "modifier": "Default", - "type": { - "plain": "T::BlockNumber" - }, - "fallback": "0x00000000", - "docs": " The current block number being processed. Set by `execute_block`.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ParentHash", - "modifier": "Default", - "type": { - "plain": "T::Hash" - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Hash of the previous block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicsRoot", - "modifier": "Default", - "type": { - "plain": "T::Hash" - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Extrinsics root of the current block, also part of the block header.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Digest", - "modifier": "Default", - "type": { - "plain": "DigestOf" - }, - "fallback": "0x00", - "docs": " Digest of the current block, also part of the block header.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Events", - "modifier": "Default", - "type": { - "plain": "Vec>" - }, - "fallback": "0x00", - "docs": " Events deposited for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventCount", - "modifier": "Default", - "type": { - "plain": "EventIndex" - }, - "fallback": "0x00000000", - "docs": " The number of events in the `Events` list.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventTopics", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "T::Hash", - "value": "Vec<(T::BlockNumber, EventIndex)>" - } - }, - "fallback": "0x00", - "docs": " Mapping between a topic (represented by T::Hash) and a vector of indexes\n of events in the `>` list.\n\n All topic vectors have deterministic storage locations depending on the topic. This\n allows light-clients to leverage the changes trie storage tracking mechanism and\n in case of changes fetch the list of events of interest.\n\n The value has the type `(T::BlockNumber, EventIndex)` because if we used only just\n the `EventIndex` then in case if the topic has the same contents on the next block\n no notification will be triggered thus the event might be lost.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "LastRuntimeUpgrade", - "modifier": "Optional", - "type": { - "plain": "LastRuntimeUpgradeInfo" - }, - "fallback": "0x00", - "docs": " Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExecutionPhase", - "modifier": "Optional", - "type": { - "plain": "Phase" - }, - "fallback": "0x00", - "docs": " The execution phase of the block.", - "deprecationInfo": { - "notDeprecated": null - } - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_system_storage_20000000_v14.json b/crates/integration_tests/tests/fixtures/polkadot/pallets_system_storage_20000000_v14.json deleted file mode 100644 index 6c6c097fb..000000000 --- a/crates/integration_tests/tests/fixtures/polkadot/pallets_system_storage_20000000_v14.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "at": { - "hash": "0xde2f6847c0cfed45b7a088fe0a726941a848a1337f185978483ef32a4efddfb4", - "height": "20000000" - }, - "pallet": "system", - "palletIndex": "0", - "items": [ - { - "name": "Account", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "0", - "value": "3" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", - "docs": " The full account information for a particular account ID.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicCount", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total extrinsics count for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockWeight", - "modifier": "Default", - "type": { - "plain": "8" - }, - "fallback": "0x000000000000", - "docs": " The current weight for the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AllExtrinsicsLen", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total length (in bytes) for all extrinsics put together, for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockHash", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "12" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Map of block numbers to block hashes.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicData", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "13" - } - }, - "fallback": "0x00", - "docs": " Extrinsics data for the current block (maps an extrinsic's index to its data).", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Number", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The current block number being processed. Set by `execute_block`.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ParentHash", - "modifier": "Default", - "type": { - "plain": "12" - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Hash of the previous block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Digest", - "modifier": "Default", - "type": { - "plain": "14" - }, - "fallback": "0x00", - "docs": " Digest of the current block, also part of the block header.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Events", - "modifier": "Default", - "type": { - "plain": "18" - }, - "fallback": "0x00", - "docs": " Events deposited for the current block.\n\n NOTE: The item is unbound and should therefore never be read on chain.\n It could otherwise inflate the PoV size of a block.\n\n Events have a large in-memory size. Box the events to not go out-of-memory\n just in case someone still reads them from within the runtime.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventCount", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The number of events in the `Events` list.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventTopics", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "12", - "value": "470" - } - }, - "fallback": "0x00", - "docs": " Mapping between a topic (represented by T::Hash) and a vector of indexes\n of events in the `>` list.\n\n All topic vectors have deterministic storage locations depending on the topic. This\n allows light-clients to leverage the changes trie storage tracking mechanism and\n in case of changes fetch the list of events of interest.\n\n The value has the type `(BlockNumberFor, EventIndex)` because if we used only just\n the `EventIndex` then in case if the topic has the same contents on the next block\n no notification will be triggered thus the event might be lost.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "LastRuntimeUpgrade", - "modifier": "Optional", - "type": { - "plain": "471" - }, - "fallback": "0x00", - "docs": " Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToU32RefCount", - "modifier": "Default", - "type": { - "plain": "45" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that `type RefCount` is `u32`. False (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToTripleRefCount", - "modifier": "Default", - "type": { - "plain": "45" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that AccountInfo contains three types of `RefCount`. False\n (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExecutionPhase", - "modifier": "Optional", - "type": { - "plain": "469" - }, - "fallback": "0x00", - "docs": " The execution phase of the block.", - "deprecationInfo": { - "notDeprecated": null - } - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_system_storage_29467043.json b/crates/integration_tests/tests/fixtures/polkadot/pallets_system_storage_29467043.json deleted file mode 100644 index c3f4d6872..000000000 --- a/crates/integration_tests/tests/fixtures/polkadot/pallets_system_storage_29467043.json +++ /dev/null @@ -1,262 +0,0 @@ -{ - "at": { - "hash": "0xb6ae36d4cf5a078a43d4401d6b90bba4adb5fd5c654a8646817ca9130b83ad51", - "height": "29467043" - }, - "pallet": "system", - "palletIndex": "0", - "items": [ - { - "name": "Account", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "0", - "value": "3" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", - "docs": " The full account information for a particular account ID.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicCount", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total extrinsics count for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "InherentsApplied", - "modifier": "Default", - "type": { - "plain": "8" - }, - "fallback": "0x00", - "docs": " Whether all inherents have been applied.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockWeight", - "modifier": "Default", - "type": { - "plain": "9" - }, - "fallback": "0x000000000000", - "docs": " The current weight for the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AllExtrinsicsLen", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total length (in bytes) for all extrinsics put together, for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockHash", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "13" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Map of block numbers to block hashes.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicData", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "14" - } - }, - "fallback": "0x00", - "docs": " Extrinsics data for the current block (maps an extrinsic's index to its data).", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Number", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The current block number being processed. Set by `execute_block`.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ParentHash", - "modifier": "Default", - "type": { - "plain": "13" - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Hash of the previous block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Digest", - "modifier": "Default", - "type": { - "plain": "15" - }, - "fallback": "0x00", - "docs": " Digest of the current block, also part of the block header.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Events", - "modifier": "Default", - "type": { - "plain": "19" - }, - "fallback": "0x00", - "docs": " Events deposited for the current block.\n\n NOTE: The item is unbound and should therefore never be read on chain.\n It could otherwise inflate the PoV size of a block.\n\n Events have a large in-memory size. Box the events to not go out-of-memory\n just in case someone still reads them from within the runtime.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventCount", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The number of events in the `Events` list.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventTopics", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "13", - "value": "566" - } - }, - "fallback": "0x00", - "docs": " Mapping between a topic (represented by T::Hash) and a vector of indexes\n of events in the `>` list.\n\n All topic vectors have deterministic storage locations depending on the topic. This\n allows light-clients to leverage the changes trie storage tracking mechanism and\n in case of changes fetch the list of events of interest.\n\n The value has the type `(BlockNumberFor, EventIndex)` because if we used only just\n the `EventIndex` then in case if the topic has the same contents on the next block\n no notification will be triggered thus the event might be lost.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "LastRuntimeUpgrade", - "modifier": "Optional", - "type": { - "plain": "567" - }, - "fallback": "0x00", - "docs": " Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToU32RefCount", - "modifier": "Default", - "type": { - "plain": "8" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that `type RefCount` is `u32`. False (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToTripleRefCount", - "modifier": "Default", - "type": { - "plain": "8" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that AccountInfo contains three types of `RefCount`. False\n (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExecutionPhase", - "modifier": "Optional", - "type": { - "plain": "565" - }, - "fallback": "0x00", - "docs": " The execution phase of the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AuthorizedUpgrade", - "modifier": "Optional", - "type": { - "plain": "570" - }, - "fallback": "0x00", - "docs": " `Some` if a code upgrade has been authorized.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicWeightReclaimed", - "modifier": "Default", - "type": { - "plain": "10" - }, - "fallback": "0x0000", - "docs": " The weight reclaimed for the extrinsic.\n\n This information is available until the end of the extrinsic execution.\n More precisely this information is removed in `note_applied_extrinsic`.\n\n Logic doing some post dispatch weight reduction must update this storage to avoid duplicate\n reduction.", - "deprecationInfo": { - "notDeprecated": null - } - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_system_storage_5000000_v13.json b/crates/integration_tests/tests/fixtures/polkadot/pallets_system_storage_5000000_v13.json deleted file mode 100644 index c592752ec..000000000 --- a/crates/integration_tests/tests/fixtures/polkadot/pallets_system_storage_5000000_v13.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "at": { - "hash": "0x8a8a7aa9ac863359b2cc609b836e3ebd7086d775c31f8c177f183ed9ffa71fa5", - "height": "5000000" - }, - "pallet": "system", - "palletIndex": "0", - "items": [ - { - "name": "Account", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "T::AccountId", - "value": "AccountInfo" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "docs": " The full account information for a particular account ID.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicCount", - "modifier": "Optional", - "type": { - "plain": "u32" - }, - "fallback": "0x00", - "docs": " Total extrinsics count for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockWeight", - "modifier": "Default", - "type": { - "plain": "ConsumedWeight" - }, - "fallback": "0x000000000000000000000000000000000000000000000000", - "docs": " The current weight for the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AllExtrinsicsLen", - "modifier": "Optional", - "type": { - "plain": "u32" - }, - "fallback": "0x00", - "docs": " Total length (in bytes) for all extrinsics put together, for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockHash", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "T::BlockNumber", - "value": "T::Hash" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Map of block numbers to block hashes.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicData", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "u32", - "value": "Vec" - } - }, - "fallback": "0x00", - "docs": " Extrinsics data for the current block (maps an extrinsic's index to its data).", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Number", - "modifier": "Default", - "type": { - "plain": "T::BlockNumber" - }, - "fallback": "0x00000000", - "docs": " The current block number being processed. Set by `execute_block`.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ParentHash", - "modifier": "Default", - "type": { - "plain": "T::Hash" - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Hash of the previous block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Digest", - "modifier": "Default", - "type": { - "plain": "DigestOf" - }, - "fallback": "0x00", - "docs": " Digest of the current block, also part of the block header.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Events", - "modifier": "Default", - "type": { - "plain": "Vec>" - }, - "fallback": "0x00", - "docs": " Events deposited for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventCount", - "modifier": "Default", - "type": { - "plain": "EventIndex" - }, - "fallback": "0x00000000", - "docs": " The number of events in the `Events` list.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventTopics", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "T::Hash", - "value": "Vec<(T::BlockNumber, EventIndex)>" - } - }, - "fallback": "0x00", - "docs": " Mapping between a topic (represented by T::Hash) and a vector of indexes\n of events in the `>` list.\n\n All topic vectors have deterministic storage locations depending on the topic. This\n allows light-clients to leverage the changes trie storage tracking mechanism and\n in case of changes fetch the list of events of interest.\n\n The value has the type `(T::BlockNumber, EventIndex)` because if we used only just\n the `EventIndex` then in case if the topic has the same contents on the next block\n no notification will be triggered thus the event might be lost.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "LastRuntimeUpgrade", - "modifier": "Optional", - "type": { - "plain": "LastRuntimeUpgradeInfo" - }, - "fallback": "0x00", - "docs": " Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToU32RefCount", - "modifier": "Default", - "type": { - "plain": "bool" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that `type RefCount` is `u32`. False (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToTripleRefCount", - "modifier": "Default", - "type": { - "plain": "bool" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that AccountInfo contains three types of `RefCount`. False\n (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExecutionPhase", - "modifier": "Optional", - "type": { - "plain": "Phase" - }, - "fallback": "0x00", - "docs": " The execution phase of the block.", - "deprecationInfo": { - "notDeprecated": null - } - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_system_storage_7500000_v14.json b/crates/integration_tests/tests/fixtures/polkadot/pallets_system_storage_7500000_v14.json deleted file mode 100644 index 78a889ccd..000000000 --- a/crates/integration_tests/tests/fixtures/polkadot/pallets_system_storage_7500000_v14.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "at": { - "hash": "0x7a233affefea10b90b3b5b2b37a6e9d8ef0029ef7add14ac4a56a3520b602927", - "height": "7500000" - }, - "pallet": "system", - "palletIndex": "0", - "items": [ - { - "name": "Account", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "0", - "value": "3" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "docs": " The full account information for a particular account ID.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicCount", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total extrinsics count for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockWeight", - "modifier": "Default", - "type": { - "plain": "7" - }, - "fallback": "0x000000000000000000000000000000000000000000000000", - "docs": " The current weight for the block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "AllExtrinsicsLen", - "modifier": "Optional", - "type": { - "plain": "4" - }, - "fallback": "0x00", - "docs": " Total length (in bytes) for all extrinsics put together, for the current block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "BlockHash", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "9" - } - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Map of block numbers to block hashes.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExtrinsicData", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Twox64Concat" - ], - "key": "4", - "value": "10" - } - }, - "fallback": "0x00", - "docs": " Extrinsics data for the current block (maps an extrinsic's index to its data).", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Number", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The current block number being processed. Set by `execute_block`.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ParentHash", - "modifier": "Default", - "type": { - "plain": "9" - }, - "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000", - "docs": " Hash of the previous block.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Digest", - "modifier": "Default", - "type": { - "plain": "11" - }, - "fallback": "0x00", - "docs": " Digest of the current block, also part of the block header.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "Events", - "modifier": "Default", - "type": { - "plain": "18" - }, - "fallback": "0x00", - "docs": " Events deposited for the current block.\n\n NOTE: This storage item is explicitly unbounded since it is never intended to be read\n from within the runtime.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventCount", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The number of events in the `Events` list.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "EventTopics", - "modifier": "Default", - "type": { - "map": { - "hashers": [ - "Blake2_128Concat" - ], - "key": "9", - "value": "105" - } - }, - "fallback": "0x00", - "docs": " Mapping between a topic (represented by T::Hash) and a vector of indexes\n of events in the `>` list.\n\n All topic vectors have deterministic storage locations depending on the topic. This\n allows light-clients to leverage the changes trie storage tracking mechanism and\n in case of changes fetch the list of events of interest.\n\n The value has the type `(T::BlockNumber, EventIndex)` because if we used only just\n the `EventIndex` then in case if the topic has the same contents on the next block\n no notification will be triggered thus the event might be lost.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "LastRuntimeUpgrade", - "modifier": "Optional", - "type": { - "plain": "106" - }, - "fallback": "0x00", - "docs": " Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToU32RefCount", - "modifier": "Default", - "type": { - "plain": "58" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that `type RefCount` is `u32`. False (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "UpgradedToTripleRefCount", - "modifier": "Default", - "type": { - "plain": "58" - }, - "fallback": "0x00", - "docs": " True if we have upgraded so that AccountInfo contains three types of `RefCount`. False\n (default) if not.", - "deprecationInfo": { - "notDeprecated": null - } - }, - { - "name": "ExecutionPhase", - "modifier": "Optional", - "type": { - "plain": "103" - }, - "fallback": "0x00", - "docs": " The execution phase of the block.", - "deprecationInfo": { - "notDeprecated": null - } - } - ] -} diff --git a/crates/integration_tests/tests/fixtures/polkadot/pallets_system_storage_number_20000000_metadata.json b/crates/integration_tests/tests/fixtures/polkadot/pallets_system_storage_number_20000000_metadata.json deleted file mode 100644 index 9369cbb0d..000000000 --- a/crates/integration_tests/tests/fixtures/polkadot/pallets_system_storage_number_20000000_metadata.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "at": { - "hash": "0xde2f6847c0cfed45b7a088fe0a726941a848a1337f185978483ef32a4efddfb4", - "height": "20000000" - }, - "pallet": "system", - "palletIndex": "0", - "storageItem": "number", - "keys": [], - "value": "20000000", - "metadata": { - "name": "Number", - "modifier": "Default", - "type": { - "plain": "4" - }, - "fallback": "0x00000000", - "docs": " The current block number being processed. Set by `execute_block`.", - "deprecationInfo": { - "notDeprecated": null - } - } -} diff --git a/crates/integration_tests/tests/fixtures/polkadot/blocks_10293194_para_inclusions.json b/crates/integration_tests/tests/fixtures/polkadot/paras/10293194_inclusions.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/blocks_10293194_para_inclusions.json rename to crates/integration_tests/tests/fixtures/polkadot/paras/10293194_inclusions.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/blocks_10293194_para_inclusions_para_id_1000.json b/crates/integration_tests/tests/fixtures/polkadot/paras/10293194_inclusions_para_id_1000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/blocks_10293194_para_inclusions_para_id_1000.json rename to crates/integration_tests/tests/fixtures/polkadot/paras/10293194_inclusions_para_id_1000.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/runtime_code_21000000.json b/crates/integration_tests/tests/fixtures/polkadot/runtime/code_21000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/runtime_code_21000000.json rename to crates/integration_tests/tests/fixtures/polkadot/runtime/code_21000000.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/runtime_metadata_21000000.json b/crates/integration_tests/tests/fixtures/polkadot/runtime/metadata_21000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/runtime_metadata_21000000.json rename to crates/integration_tests/tests/fixtures/polkadot/runtime/metadata_21000000.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/runtime_metadata_v14_21000000.json b/crates/integration_tests/tests/fixtures/polkadot/runtime/metadata_v14_21000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/runtime_metadata_v14_21000000.json rename to crates/integration_tests/tests/fixtures/polkadot/runtime/metadata_v14_21000000.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/runtime_metadata_v15_21000000.json b/crates/integration_tests/tests/fixtures/polkadot/runtime/metadata_v15_21000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/runtime_metadata_v15_21000000.json rename to crates/integration_tests/tests/fixtures/polkadot/runtime/metadata_v15_21000000.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/runtime_metadata_versions_21000000.json b/crates/integration_tests/tests/fixtures/polkadot/runtime/metadata_versions_21000000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/runtime_metadata_versions_21000000.json rename to crates/integration_tests/tests/fixtures/polkadot/runtime/metadata_versions_21000000.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/runtime_spec_28500000.json b/crates/integration_tests/tests/fixtures/polkadot/runtime/spec_28500000.json similarity index 100% rename from crates/integration_tests/tests/fixtures/polkadot/runtime_spec_28500000.json rename to crates/integration_tests/tests/fixtures/polkadot/runtime/spec_28500000.json diff --git a/crates/integration_tests/tests/fixtures/polkadot/staking_progress_block_12000.json b/crates/integration_tests/tests/fixtures/polkadot/staking_progress_block_12000.json deleted file mode 100644 index a66ddcc95..000000000 --- a/crates/integration_tests/tests/fixtures/polkadot/staking_progress_block_12000.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "at": { - "hash": "0xccd33c54a8d372c6859a4b01b557b78a5e3dac16f3e3ec770ea31fe4dbfdd76a", - "height": "120000" - }, - "activeEra": "0", - "forceEra": "ForceNone", - "nextSessionEstimate": "122391", - "unappliedSlashes": [], - "validatorSet": [ - "12H7nsDUrJUSCQQJrTKAFfyCWSactiSdjoVUixqcd9CZHTGt", - "15zF7zvdUiy2eYCgN6KWbv2SJPdbSP6vdHs1YTZDGjRcSMHN", - "12zSBXtK9evQRCG9Gsdr72RbqNzbNn2Suox2cTfugCLmWjqG", - "146YJHyD5cjFN77HrfKhxUFbU8WjApwk9ncGD6NbxE66vhMS", - "13wY4rD88C3Xzd4brFMPkAMEMC3dSuAR2NC6PZ5BEsZ5t6rJ", - "167f5SpFqXtEKEShxjKVWG2YbmrzLuLAL1DFNZcMGDxRgFhM" - ] -} \ No newline at end of file diff --git a/crates/integration_tests/tests/fixtures/polkadot/staking_validators_block_12000.json b/crates/integration_tests/tests/fixtures/polkadot/staking_validators_block_12000.json deleted file mode 100644 index 0dd5e1901..000000000 --- a/crates/integration_tests/tests/fixtures/polkadot/staking_validators_block_12000.json +++ /dev/null @@ -1,568 +0,0 @@ -{ - "at": { - "hash": "0xccd33c54a8d372c6859a4b01b557b78a5e3dac16f3e3ec770ea31fe4dbfdd76a", - "height": "120000" - }, - "validators": [ - { - "address": "13grpeYWbgfuYvpmFKgpaBnMgsMdffFfCsdr6oUKk21u5fa2", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "12j2Cii99aT1K3kJQmz2JvPHURecq7BevCmtNx2g61kDqsBb", - "status": "waiting", - "commission": "40000000", - "blocked": false - }, - { - "address": "1hJdgnAPSjfuHZFHzcorPnFvekSHihK9jdNPWHXgeuL7zaJ", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "1Y6WgLRtW6JxmZjSNYsJ9b6JzuF8Kdd7t9kUNiYk9SJXraW", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14xKzzU1ZYDnzFj7FgdtDAYSMJNARjDc2gNw4XAFDgr4uXgp", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "1WG3jyNqniQMRZGQUc7QD2kVLT8hkRPGMSqAb5XYQM1UDxN", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "13YVNYuGekTuLtggpjP6EjY9FY7QvrrwGZLnuC8qDh8K54Zu", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "12E8p2ybFsYnsFH2XupPGng6N4egW71SX971Ez7Xsnj1uDwz", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "1w7UoHMRC6zg99knXxCAANXuJDQcQTYiPqaR6xENcWjmboH", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14dv1F9is1AFxwWVNg4biriUMn8MGeAkNUyeNiyYLJ1sfD3a", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15tcHBgQ28uX2kDBHVRnpYgtugQA5vnhHAG6US85XadAr92X", - "status": "waiting", - "commission": "200000000", - "blocked": false - }, - { - "address": "12jjUEmaKuwC1SxQHe8eXpcv6AzdWiXdvf55VvP1y8bf548b", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "15kkg1mK1tCGgqqo3c1CghtKCQsBEAPPjYNNmmRT3r29FeRX", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "16WU9RRW2XjnfzrdMJa2JHmXfeCyWGRayWHNQCT8r16KnrQd", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "148YtoGH1R5N1TrXucBw1Pic3TkZgimENXtbjRPFofTH8dBR", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1LDcQr7LaqTHwfiZMk6iiR4yGTc1fsRsrrLKMuuT8joHMZZ", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16DKyH4fggEXeGwCytqM19e9NFGkgR2neZPDJ5ta8BKpPbPK", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "1HZMocNpdw6VYS1aKyrdu1V7kHpbdCvhL8VKayvzVzqTf6H", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "14yx4vPAACZRhoDQm1dyvXD3QdRQyCRRCe5tj1zPomhhS29a", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "13asdY4e7sWdJ4hbGW9n2rkNro1mx5YKB6WBCC9gvqKmLvNH", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "15cxZZjXGTW9Pubd11yeUjuHoqnVrY9hr5guGmDBEJzAcQUD", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "143xeV45MsSeUGFpCns1ACgaUvCeouSJ4WDoppio9qNUNr5S", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "15DbiUZitSkAcCqGW6Loz9HRbyUHnPcVvmMVikkuftcVxcRH", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13wDksmrR71VFGeCHH7xWYvi5dzqtTpneypW3TNxkzqno1ur", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "13igydKtmacUBx2MxXUGNy9kCuiQvtHDLqneFxrdDgGLWjns", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "1qUc2fyfXvmTHWH63Z4vFutLgym1XKURX6wP77iz4bWScmX", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "128jkDqxgQ9HMFYQjZvSgGr5hNcZZZbfMSAa7twBp9xEMsMu", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "13v7ATPf5egXyFcZucWyVcqsmAFy66JT41ebJmww56TknppU", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "12ZEQAz7TK1vKwm4fESoNAxh7XnaqC2LacsMQw1B4YcT8u23", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "15TAQtkYsif1uB3G8n47Qyw2wpeLK5pcybjdczMSa8qV1FLD", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "14TFQiKmAXBqozphG4Njjhbic5Ggqt3eekFN7CAojyCALKEx", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14tcxHSTAiZf7M4vcLfFdGkGJFjfx6zDqds5QVyz2H24hKgG", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "1vEVWfqoLErB6MhhtDijrnmnHqjhrrFA5GzXGNL2HwESQ5r", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "13T9UGfntid52aHuaxX1j6uh3zTYzMPMG1Des9Cmvf7K4xfq", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "13MtAm12J6x96XZ8jEu1uN9YfTYnGtwh3RPssQRv749Dw5ac", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "14rehb2FsW58iuG2rfZpr8pFUZ3FNyVnfxD1wRMsdvjUukZs", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "12NdCS1BNxgiedktuiA9LDWT4aUha1BL86io1bJTS6FXM8nb", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "1sEcDfGZsbJCSinFBPN2hkqYU8QwLxipDjuz3BN7UFPJnrk", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "1dGsgLgFez7gt5WjX2FYzNCJtaCjGG6W9dA42d9cHngDYGg", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "15XQrm3X1UtiBF1qBpwb5y9kMMyfK7PxgWhotAJPqv2r6YCD", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "12bDHgG8swcakJhz4ADa4uJZThbQKx3rC4cQ6fH7h7EntCVA", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "15qomv8YFTpHrbiJKicP4oXfxRDyG4XEHZH7jdfJScnw2xnV", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "12713bbq45c66CN9AD7yusSXWE1kY91DcMpjVcB2rXqZKy2w", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "14ShUZUYUR35RBZW6uVVt1zXDxmSQddkeDdXf1JkMA6P721N", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "15yUJNzsqyR6JxuEw4eVSEbSH5DegTUGyRPzGwfgWUwio2TB", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "15QfKYagJ6ke3wmYY7KB7DXMQhwo2cRKcmbaBp8UAMdtRgtM", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "15MAaCLrV4d54UooFCVwjJjJo6eM1r2562ftNvzTCb6BZk2E", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "16VW8qAsdpQkGj3VeennjAYfRfL9kSQed2bLyiFWT7JHwkMh", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14q4f6CVXWbn2x6si2VayXoZ85augv3nAuHZc1Kc2jeFNnPe", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "15MUBwP6dyVw5CXF9PjSSv7SdXQuDSwjX86v1kBodCSWVR7c", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "12SoLsr2nQ7c5BgVnD9ikVnJeHMDVDr8QdnJebwY44VNaXLV", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "16GDRhRYxk42paoK6TfHAqWej8PdDDUwdDazjv4bAn4KGNeb", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "1REAJ1k691g5Eqqg9gL7vvZCBG7FCCZ8zgQkZWd4va5ESih", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "16SpacegeUTft9v3ts27CEC3tJaxgvE4uZeCctThFH3Vb24p", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "15KDFYfFjdqhp3MDFEtHuyu9kLpXbT7k1zjx78MphViFdCaU", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "1sAkfdTH3cHAdJRYqMPNdeV7GhTKrddvMfkQrm3pQBABWrN", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "15fGx4vnkv8QM1YoGeCTNGrtR1iDe37m9o2mshNy6C5Qzj8o", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "14Q74NU7dG4uxiHTSCSZii5T1Y368cm7BNVNeRWmEuoDUGXQ", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "1xzevJLdUej45SF2qBBbBx4QutxCixiCdHWgrBARUwNHrk5", - "status": "waiting", - "commission": "80000000", - "blocked": false - }, - { - "address": "16D5Wq792vQS8xwqycMTBKh3sXPrz8K8dj4CBqvWFybiqwJn", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "133oKX5ZFB89mfwd7T6qUsoLGYfoh63UBced6p6byBp64Kke", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "16NCSbjNt8PnpccX3UDAzJTAEuDLScZTLvJFZ5U68hrowQx6", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "14ugpr5Ji5QjwbkMZZaEfZEpiDkBDWifqQYuRkBfPZwbwjw5", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "12zeiSCjwXpQ3N9gJjfAedUMZ8saKa4cRTvfJk14iuE64rkZ", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "12pLvxCmnjRHhGEqdmQw8bbpt7U7TxyHB3t5VKH6nVYgTKxt", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "13gJhYAWEuZomHsp7nBushCwqizG5ZPXoNZ2Z9hP5dynmcnJ", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "13nGsr6QBzqDCi7WLfY9KUrgUG1dScQpSDSzi4XYtMhKn772", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "121gZtuuG6sq3BZp1UKg8oRLRZvp89SAYSxXypwDJjaSRJR5", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "16aXLhFh9mZoyW5emqZM6fJWTqbWENGrJkAoGwtR1S8XoFwY", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "14QBQABMSFBsT3pDTaEQdshq7ZLmhzKiae2weZH45pw5ErYu", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "11uMPbeaEDJhUxzU4ZfWW9VQEsryP9XqFcNRfPdYda6aFWJ", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "15oKi7HoBQbwwdQc47k71q4sJJWnu5opn1pqoGx4NAEYZSHs", - "status": "waiting", - "commission": "30000000", - "blocked": false - }, - { - "address": "1FCu68ZwBHNzZLcGa92eHwvR61hk3MpjrhiqN96xF9vWS1Q", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1BjwMkGfudp4eVAMpqv6CHZJxGsLFkqQv5oaZT9gWc5o7hn", - "status": "waiting", - "commission": "200000000", - "blocked": false - }, - { - "address": "14Pk3akU1smoPeqLG6cjxXDj4rYRT5iRdAPX2cXhErhEWYVr", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "121kyZuzZxpZf5nFkNKwBVtxz7hEiDtofesZuE3EsRheKpXu", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "12wrtpTVSRqNjC1iyyNjQCEarLH3Lx38S8nKVodRGiHK9CEP", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "13Qa5VGb2M6QvqVtsHZrRBLbQYsLvSFQJ8jrynx8CssfLtQ4", - "status": "waiting", - "commission": "50000000", - "blocked": false - }, - { - "address": "15BQUqtqhmqJPyvvEH5GYyWffXWKuAgoSUHuG1UeNdb8oDNT", - "status": "waiting", - "commission": "100000000", - "blocked": false - }, - { - "address": "15wSu1tQWduKBUmJRzBLsnSCSWxeZ7LPhmvfRC88TjvS3Rv2", - "status": "waiting", - "commission": "1", - "blocked": false - }, - { - "address": "14fRw8Drj3Ke326hQibVF2wpeCcKrALVPTWTgfQixrZcKHfq", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "15nyjU7BusKUE9Z4sJyTannAj8DY1NyHCjsyjsRZuHQ8QjVp", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "12eiHNkmLaaDMGx6z3P4tbiojWK6g1hKku1N6pxmrxbhGuau", - "status": "waiting", - "commission": "1000000000", - "blocked": false - }, - { - "address": "1EmFhcsr7xt4HiMc8KZz6W6QcjYSFukKGKeDZeBjSmjjpNM", - "status": "waiting", - "commission": "10000000", - "blocked": false - }, - { - "address": "13JyYJsUmeUUEPcNMa1SJu1yAcymBqWCJuDvuct4BBtbQbJi", - "status": "waiting", - "commission": "20000000", - "blocked": false - }, - { - "address": "12H7nsDUrJUSCQQJrTKAFfyCWSactiSdjoVUixqcd9CZHTGt", - "status": "active" - }, - { - "address": "15zF7zvdUiy2eYCgN6KWbv2SJPdbSP6vdHs1YTZDGjRcSMHN", - "status": "active" - }, - { - "address": "12zSBXtK9evQRCG9Gsdr72RbqNzbNn2Suox2cTfugCLmWjqG", - "status": "active" - }, - { - "address": "146YJHyD5cjFN77HrfKhxUFbU8WjApwk9ncGD6NbxE66vhMS", - "status": "active" - }, - { - "address": "13wY4rD88C3Xzd4brFMPkAMEMC3dSuAR2NC6PZ5BEsZ5t6rJ", - "status": "active" - }, - { - "address": "167f5SpFqXtEKEShxjKVWG2YbmrzLuLAL1DFNZcMGDxRgFhM", - "status": "active" - } - ], - "validatorsToBeChilled": [ - { - "address": "12H7nsDUrJUSCQQJrTKAFfyCWSactiSdjoVUixqcd9CZHTGt", - "status": "active" - }, - { - "address": "15zF7zvdUiy2eYCgN6KWbv2SJPdbSP6vdHs1YTZDGjRcSMHN", - "status": "active" - }, - { - "address": "12zSBXtK9evQRCG9Gsdr72RbqNzbNn2Suox2cTfugCLmWjqG", - "status": "active" - }, - { - "address": "146YJHyD5cjFN77HrfKhxUFbU8WjApwk9ncGD6NbxE66vhMS", - "status": "active" - }, - { - "address": "13wY4rD88C3Xzd4brFMPkAMEMC3dSuAR2NC6PZ5BEsZ5t6rJ", - "status": "active" - }, - { - "address": "167f5SpFqXtEKEShxjKVWG2YbmrzLuLAL1DFNZcMGDxRgFhM", - "status": "active" - } - ] -} \ No newline at end of file diff --git a/crates/integration_tests/tests/fixtures/use_rc_block_head_header_structure.json b/crates/integration_tests/tests/fixtures/use_rc_block_head_header_structure.json deleted file mode 100644 index 2e46d5a9a..000000000 --- a/crates/integration_tests/tests/fixtures/use_rc_block_head_header_structure.json +++ /dev/null @@ -1,35 +0,0 @@ -[ - { - "parentHash": "0x76cd327b92f56f31e9dd07318a9793dc5943e60fd6b2cdc096f31a84ae562289", - "number": "10554981", - "hash": "0xe2fbe60df2940dd2ae8585b166d7c55def532849b193e93e5a9a4a0def827782", - "stateRoot": "0x4ada77d75a8e7380685115b3edbd53228da52d696a3f99e9c4cbef869e597433", - "extrinsicsRoot": "0x0ebf421f78b267b7ec29b126e4d4d4f64b0d5cf9f695be9b76be7e6cca6955cc", - "digest": { - "logs": [ - { - "preRuntime": [ - "0x61757261", - "0x2a3ec30800000000" - ] - }, - { - "consensus": [ - "0x52505352", - "0x937f7c16bcfef829319a1d87c3377d98700a63687ed7fe13db67eb3a12325ae06a4dde06" - ] - }, - { - "seal": [ - "0x61757261", - "0x86d62a57f1ad0c2dd407b4c286a7ea7ee0564300be9f98927e67b597a19ca1e89216c022e5c8045b3775efefb587640b868e24429184b99b1f3e02b498d04e05" - ] - } - ] - }, - "rcBlockHash": "0xa6d3879b58cde32121e3e86de1484797a44687e597400d1b6ba39f2af5d8d49f", - "rcBlockNumber": "28808029", - "ahTimestamp": "1764157944000" - } -] -