131 lines
3.6 KiB
Plaintext
Raw Normal View History

2025-10-07 11:20:26 +01:00
# Info: KCL Polkadot Solochain task schemas for provisioning (Provisioning)
# Author: Provisioning System
# Release: 0.0.1
# Date: 2025-07-24
import regex
schema User:
"""
User settings for Polkadot solochain
"""
name: str
group: str = name
home?: str = "/home/${name}"
schema NetworkConfig:
"""
Network configuration for Polkadot solochain
"""
name: str = "local"
chain_id: str = "local_testnet"
node_key?: str
listen_addr: str = "/ip4/0.0.0.0/tcp/30333"
public_addr?: str
bootnodes: [str] = []
reserved_nodes: [str] = []
reserved_only: bool = False
max_peers: int = 50
schema Consensus:
"""
Consensus configuration
"""
algorithm: "aura" | "babe" = "aura"
finality: "grandpa" = "grandpa"
block_time: int = 6000 # milliseconds
epoch_duration: int = 600 # blocks for BABE
schema RPC:
"""
RPC configuration
"""
enabled: bool = True
bind_addr: str = "127.0.0.1"
port: int = 9944
ws_port: int = 9944
http_port: int = 9933
max_connections: int = 100
cors: [str] = ["all"]
methods: [str] = ["safe"]
schema Telemetry:
"""
Telemetry configuration
"""
enabled: bool = False
url?: str
verbosity: int = 0
schema Runtime:
"""
Runtime configuration including PVM support
"""
name: str = "solochain-template"
version: str = "1.0.0"
pvm_enabled: bool = True
wasm_execution: "compiled" | "interpreted" = "compiled"
heap_pages: int = 64
max_block_weight: int = 2000000000000 # Weight units
max_block_length: int = 5242880 # 5MB
pallets: [str] = [
"system",
"timestamp",
"aura",
"grandpa",
"balances",
"transaction_payment",
"sudo"
]
schema Validator:
"""
Validator configuration
"""
enabled: bool = False
key_type: "sr25519" | "ed25519" = "sr25519"
session_keys?: str
validator_id?: str
schema PolkadotSolochain:
"""
Polkadot solochain node configuration
"""
name: str = "polkadot-solochain"
version: str = "stable2024"
run_user: User = {
name = "polkadot"
}
work_path: str = "/var/lib/polkadot"
config_path: str = "/etc/polkadot"
bin_path: str = "/usr/local/bin"
node_binary: str = "solochain-template-node"
base_path: str = "/var/lib/polkadot/data"
keystore_path: str = "/var/lib/polkadot/keystore"
network: NetworkConfig = {}
consensus: Consensus = {}
rpc: RPC = {}
telemetry: Telemetry = {}
runtime: Runtime = {}
validator: Validator = {}
execution_strategy: "native" | "wasm" | "both" = "wasm"
wasm_runtime_overrides?: str
pruning: "archive" | int = 256
state_cache_size: int = 67108864 # 64MB
log_level: "error" | "warn" | "info" | "debug" | "trace" = "info"
log_targets: [str] = []
dev_mode: bool = False
alice_validator: bool = False if not dev_mode else True
check:
1 <= rpc.port <= 65535, "RPC port must be between 1 and 65535"
1 <= rpc.ws_port <= 65535, "WebSocket port must be between 1 and 65535"
1 <= rpc.http_port <= 65535, "HTTP port must be between 1 and 65535"
len(run_user.name) > 0, "Check run_user name"
len(work_path) > 0, "Check work_path"
len(config_path) > 0, "Check config_path"
len(base_path) > 0, "Check base_path"
network.max_peers > 0, "max_peers must be positive"
consensus.block_time > 0, "block_time must be positive"
runtime.heap_pages > 0, "heap_pages must be positive"
state_cache_size > 0, "state_cache_size must be positive"