Parachain

TOML

[[parachains]]
id = 1000
chain = "asset-hub-rococo-local"
onboard_as_parachain = true
default_command = "polkadot-parachain"
balance = 2000000000000

# Registration strategy (pick one):
# add_to_genesis = true    # InGenesis (default, fastest)
# register_para = true     # UsingExtrinsic (via extrinsic after spawn)
# (neither = Manual, no automatic registration)

# Genesis configuration
# genesis_wasm_path = "/path/to/para-wasm"
# genesis_state_path = "/path/to/para-genesis-state"

# Or generate genesis artifacts
# genesis_wasm_generator = "polkadot-parachain export-genesis-wasm"
# genesis_state_generator = ["polkadot-parachain", "export-genesis-state"]

# Genesis patch
[parachains.genesis.balances]
balances = [["5GrwvaEF...", 1000000000000]]

[[parachains.collators]]
name = "collator01"
command = "polkadot-parachain"

[[parachains.collators]]
name = "collator02"
args = ["-lparachain=trace"]

Builder

#![allow(unused)]
fn main() {
use zombienet_sdk::{NetworkConfigBuilder, RegistrationStrategy};

let config = NetworkConfigBuilder::new()
    .with_relaychain(|r| {
        r.with_chain("rococo-local")
            .with_default_command("polkadot")
            .with_validator(|v| v.with_name("alice"))
            .with_validator(|v| v.with_name("bob"))
    })
    .with_parachain(|p| {
        p.with_id(1000)
            .with_collator(|c| c.with_name("collator01").with_command("polkadot-parachain"))
    })
    .build()
    .unwrap();
}

Reference

OptionTypeDefaultDescription
idNumberRequired. Unique parachain ID
chainStringChain name for the parachain
cumulus_basedBooleantrueWhether parachain uses Cumulus
evm_basedBooleanfalseWhether parachain is EVM-based (e.g., Frontier)
onboard_as_parachainBooleantrueRegister as parachain (vs parathread)
add_to_genesisBooleanRegister in genesis (InGenesis strategy). Mutually exclusive with register_para
register_paraBooleanRegister via extrinsic (UsingExtrinsic strategy). Mutually exclusive with add_to_genesis
balanceNumber2000000000000Initial balance for parachain account
default_commandStringDefault collator command
default_imageStringDefault container image
default_argsArrayDefault CLI arguments
default_resourcesObjectDefault resource limits (see Resources)
default_db_snapshotStringDefault database snapshot path/URL
genesis_wasm_pathStringPath/URL to genesis WASM blob
genesis_wasm_generatorStringCommand to generate genesis WASM
genesis_state_pathStringPath/URL to genesis state
genesis_state_generatorString/ArrayCommand with args to generate genesis state
genesisObjectGenesis overrides as JSON (alias: runtime_genesis_patch)
chain_spec_pathStringPath/URL to parachain chain spec
chain_spec_commandStringCommand template to generate chain spec
chain_spec_command_is_localBooleanfalseRun chain spec command locally
chain_spec_command_output_pathString/dev/stdoutOutput path for chain spec command
chain_spec_runtimeObjectRuntime WASM for chain spec generation
wasm_overrideStringWASM runtime override path/URL
raw_spec_overrideString/ObjectRaw chain spec override (inline JSON or file path)
bootnodes_addressesArrayBootnode multiaddresses
no_default_bootnodesBooleanfalseDon't auto-assign bootnode role if none specified

Registration Strategies

  • InGenesis - In relay chain genesis (fastest)
  • UsingExtrinsic - Via extrinsic after spawn
  • Manual - No automatic registration

Collator Groups

[[parachains.collator_groups]]
name = "collator"
count = 3
command = "polkadot-parachain"
#![allow(unused)]
fn main() {
.with_parachain(|p| {
    p.with_id(1000)
        .with_collator_group(|g| {
            g.with_count(3)
                .with_base_node(|n| n.with_name("collator").with_command("polkadot-parachain"))
        })
})
}