From 3d947abe938ca0648fb1f88ee3dff5b90737deaa Mon Sep 17 00:00:00 2001 From: POPPIN-FUMI Date: Sat, 6 Jun 2026 14:42:11 +0900 Subject: [PATCH 1/3] fix(validator): widen default dynamic_port_range to >=27 ports for Agave 4.1+ Agave/Jito 4.1.0+ rejects a dynamic-port-range smaller than 27 ports: "Invalid value for '--dynamic-port-range': Port range is too small." The recipe defaults (8000-8025 / 8900-8925 = 26 ports, pythnet 8000-8020 = 21) caused new validators to crash-loop instantly on start (ExecStart status=1). Bump every `--dynamic-port-range` default and the init/inventory defaults to a 31-port range (8000-8030 / 8900-8930) across validator, RPC, and pythnet start templates. Firedancer TOML configs are left as-is (separate parser). Co-Authored-By: Claude Opus 4.8 (1M context) --- cli/lib/addMainnetInventory.ts | 2 +- cli/src/ai/console/tools.ts | 14 +++++--------- cli/src/rpc/init/devnetInitRpc.ts | 2 +- cli/src/rpc/init/mainnetInitRpc.ts | 2 +- cli/src/rpc/init/testnetInitRpc.ts | 2 +- cli/src/validator/init/initMainnetConfig.ts | 2 +- cli/src/validator/init/initTestnetConfig.ts | 2 +- .../jinja/devnet-rpc/start-validator.sh.j2 | 2 +- .../jinja/mainnet-pythnet/start-pythnet.sh.j2 | 2 +- .../jinja/mainnet-rpc/start-validator.sh.j2 | 2 +- .../jinja/mainnet-validator/start-validator.sh.j2 | 2 +- .../jinja/testnet-rpc/start-validator.sh.j2 | 2 +- .../testnet-validator/start-validator-agave.sh.j2 | 2 +- .../testnet-validator/start-validator-jito.sh.j2 | 2 +- .../jinja/testnet-validator/start-validator.sh.j2 | 2 +- 15 files changed, 19 insertions(+), 23 deletions(-) diff --git a/cli/lib/addMainnetInventory.ts b/cli/lib/addMainnetInventory.ts index 426c5d9d..eb0a42cb 100644 --- a/cli/lib/addMainnetInventory.ts +++ b/cli/lib/addMainnetInventory.ts @@ -36,7 +36,7 @@ const addMainnetInventory = async ( validator_type: 'firedancer-jito', region: '', port_rpc: 8899, - dynamic_port_range: '8000-8025', + dynamic_port_range: '8000-8030', relayer_url: 'http://localhost:11226', block_engine_url: 'http://ny.mainnet.relayer.jito.wtf:8100', shred_receiver_address: '', diff --git a/cli/src/ai/console/tools.ts b/cli/src/ai/console/tools.ts index 7b81ac0a..356d047d 100644 --- a/cli/src/ai/console/tools.ts +++ b/cli/src/ai/console/tools.ts @@ -12,10 +12,7 @@ import { } from '@/ai/console/systemPrompt.ts' import { DISCORD_LINK } from '@cmn/constants/url.ts' import { loadAgentContext } from '@/ai/agentConfig/loader.ts' -import { - isKnownAgentId, - ALL_AGENT_IDS, -} from '@/ai/agentConfig/registry.ts' +import { ALL_AGENT_IDS, isKnownAgentId } from '@/ai/agentConfig/registry.ts' import { resolveAgentMdPath, resolveSkillMdPath, @@ -160,7 +157,6 @@ export type ToolDefinition = { parameters: Record } - // Core tools — safe orchestration helpers available after bootstrap export const CORE_TOOLS: ToolDefinition[] = [ { @@ -522,7 +518,8 @@ function checkWalletGuard(command: string): string | null { }, { re: />\s*wallet\.json\b/, - reason: 'refusing to truncate or overwrite wallet.json via shell redirect', + reason: + 'refusing to truncate or overwrite wallet.json via shell redirect', }, { re: new RegExp(`\\brm${rmFlags}\\s+[^\\n]*${home}/\\.slv(/|\\s|$|['"])`), @@ -546,8 +543,7 @@ function checkWalletGuard(command: string): string | null { async function executeRunCommand(command: string): Promise { const guardReason = checkWalletGuard(command) if (guardReason !== null) { - const msg = - `Command blocked by wallet safety guard: ${guardReason}\n\n` + + const msg = `Command blocked by wallet safety guard: ${guardReason}\n\n` + `Command: ${command}\n\n` + `This is a hard guard that runs before confirmation to protect wallet.json and ~/.slv from accidental deletion. Do not retry with a rephrased command — either delegate to the Setzer sub-agent (agent='Setzer') for bot/app work, or ask the user to run the command manually if they truly intend it.` if (!tuiInstance) { @@ -1199,7 +1195,7 @@ Use write_file to create \`${home}/.slv/inventory..validators.yml\`: region: snapshot_url: "" # Auto-detected from nearest region commission_bps: 0 - dynamic_port_range: "8900-8925" + dynamic_port_range: "8900-8930" port_rpc: 7211 \`\`\` diff --git a/cli/src/rpc/init/devnetInitRpc.ts b/cli/src/rpc/init/devnetInitRpc.ts index d91b0a3e..c5959f1a 100644 --- a/cli/src/rpc/init/devnetInitRpc.ts +++ b/cli/src/rpc/init/devnetInitRpc.ts @@ -58,7 +58,7 @@ export const devnetInitRpc = async ( rpc_type: rpc_type as RpcType, port_rpc: 7211, richat_version: VERSION_RICHAT, - dynamic_port_range: '8000-8025', + dynamic_port_range: '8000-8030', validator_type: rpcTypes.validatorType as SolanaNodeType, region: 'ny', limit_ledger_size: 200000000, diff --git a/cli/src/rpc/init/mainnetInitRpc.ts b/cli/src/rpc/init/mainnetInitRpc.ts index 4599df2c..e265980a 100644 --- a/cli/src/rpc/init/mainnetInitRpc.ts +++ b/cli/src/rpc/init/mainnetInitRpc.ts @@ -110,7 +110,7 @@ export const mainnetInitRpc = async ( name: identity_account, rpc_type: rpc_type as RpcType, port_rpc: 7211, - dynamic_port_range: '8000-8025', + dynamic_port_range: '8000-8030', validator_type: rpcTypes.validatorType as SolanaNodeType, region: getNearRegion.region, limit_ledger_size: 200000000, diff --git a/cli/src/rpc/init/testnetInitRpc.ts b/cli/src/rpc/init/testnetInitRpc.ts index c426c940..eeb5e23e 100644 --- a/cli/src/rpc/init/testnetInitRpc.ts +++ b/cli/src/rpc/init/testnetInitRpc.ts @@ -102,7 +102,7 @@ export const testnetInitRpc = async ( name: identity_account, rpc_type: rpc_type as RpcType, port_rpc: 7211, - dynamic_port_range: '8000-8025', + dynamic_port_range: '8000-8030', validator_type: rpcTypes.validatorType as SolanaNodeType, region: getNearRegion.region, limit_ledger_size: 200000000, diff --git a/cli/src/validator/init/initMainnetConfig.ts b/cli/src/validator/init/initMainnetConfig.ts index 7bd9e4c3..91e0509e 100644 --- a/cli/src/validator/init/initMainnetConfig.ts +++ b/cli/src/validator/init/initMainnetConfig.ts @@ -149,7 +149,7 @@ const initMainnetConfig = async ( region: getNearRegion.region, commission_bps: Number(commissionBps), port_rpc: 7211, - dynamic_port_range: '8900-8925', + dynamic_port_range: '8900-8930', relayer_url, block_engine_url: blockEngineRegion, shred_receiver_address: String(shredstream_address), diff --git a/cli/src/validator/init/initTestnetConfig.ts b/cli/src/validator/init/initTestnetConfig.ts index 973fdf18..876c9c84 100644 --- a/cli/src/validator/init/initTestnetConfig.ts +++ b/cli/src/validator/init/initTestnetConfig.ts @@ -126,7 +126,7 @@ const initTestnetConfig = async ( shred_receiver_address: String(getNearRegion.info.shredReceiver), snapshot_url: '', port_rpc: 7211, - dynamic_port_range: '8900-8925', + dynamic_port_range: '8900-8930', ...xdpConfig, } await updateInventory(name, configTestnet) diff --git a/template/2026.5.21.1448/jinja/devnet-rpc/start-validator.sh.j2 b/template/2026.5.21.1448/jinja/devnet-rpc/start-validator.sh.j2 index dcaafd5b..2275abc4 100644 --- a/template/2026.5.21.1448/jinja/devnet-rpc/start-validator.sh.j2 +++ b/template/2026.5.21.1448/jinja/devnet-rpc/start-validator.sh.j2 @@ -16,7 +16,7 @@ exec agave-validator \ --known-validator dv3qDFk1DTF36Z62bNvrCXe9sKATA6xvVy6A798xxAS \ --only-known-rpc \ --expected-genesis-hash EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG \ ---dynamic-port-range {{ dynamic_port_range | default("8900-8925") }} \ +--dynamic-port-range {{ dynamic_port_range | default("8900-8930") }} \ --full-rpc-api \ --no-voting \ --rpc-port {{ port_rpc | default(8899, true) }} \ diff --git a/template/2026.5.21.1448/jinja/mainnet-pythnet/start-pythnet.sh.j2 b/template/2026.5.21.1448/jinja/mainnet-pythnet/start-pythnet.sh.j2 index b8088dd1..a8383ae6 100644 --- a/template/2026.5.21.1448/jinja/mainnet-pythnet/start-pythnet.sh.j2 +++ b/template/2026.5.21.1448/jinja/mainnet-pythnet/start-pythnet.sh.j2 @@ -22,7 +22,7 @@ exec /usr/local/bin/solana-validator \ --rpc-bind-address {{ pythnet_rpc_bind | default('0.0.0.0') }} \ --full-rpc-api \ --enable-rpc-transaction-history \ - --dynamic-port-range {{ pythnet_dynamic_port_range | default('8000-8020') }} \ + --dynamic-port-range {{ pythnet_dynamic_port_range | default('8000-8030') }} \ --gossip-port {{ pythnet_gossip_port | default(8001) }} \ --account-index program-id \ --ledger {{ pythnet_ledger_mount | default('/mnt/ledger') }}/pythnet/ledger \ diff --git a/template/2026.5.21.1448/jinja/mainnet-rpc/start-validator.sh.j2 b/template/2026.5.21.1448/jinja/mainnet-rpc/start-validator.sh.j2 index 7d223cae..c3361df3 100644 --- a/template/2026.5.21.1448/jinja/mainnet-rpc/start-validator.sh.j2 +++ b/template/2026.5.21.1448/jinja/mainnet-rpc/start-validator.sh.j2 @@ -17,7 +17,7 @@ exec agave-validator \ --only-known-rpc \ --expected-genesis-hash 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d \ --expected-shred-version 50093 \ ---dynamic-port-range {{ dynamic_port_range | default("8900-8925") }} \ +--dynamic-port-range {{ dynamic_port_range | default("8900-8930") }} \ --no-voting \ --rpc-port {{ port_rpc | default(8899, true) }} \ --rpc-bind-address 0.0.0.0 \ diff --git a/template/2026.5.21.1448/jinja/mainnet-validator/start-validator.sh.j2 b/template/2026.5.21.1448/jinja/mainnet-validator/start-validator.sh.j2 index 4ee32d84..3c04e007 100644 --- a/template/2026.5.21.1448/jinja/mainnet-validator/start-validator.sh.j2 +++ b/template/2026.5.21.1448/jinja/mainnet-validator/start-validator.sh.j2 @@ -18,7 +18,7 @@ exec agave-validator \ --only-known-rpc \ --expected-genesis-hash 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d \ --expected-shred-version 50093 \ ---dynamic-port-range {{ dynamic_port_range | default("8000-8025") }} \ +--dynamic-port-range {{ dynamic_port_range | default("8000-8030") }} \ --rpc-port {{ port_rpc | default(8899, true) }} \ --wal-recovery-mode skip_any_corrupted_record \ --use-snapshot-archives-at-startup when-newest \ diff --git a/template/2026.5.21.1448/jinja/testnet-rpc/start-validator.sh.j2 b/template/2026.5.21.1448/jinja/testnet-rpc/start-validator.sh.j2 index 37219fdb..b8eb7273 100644 --- a/template/2026.5.21.1448/jinja/testnet-rpc/start-validator.sh.j2 +++ b/template/2026.5.21.1448/jinja/testnet-rpc/start-validator.sh.j2 @@ -15,7 +15,7 @@ exec agave-validator \ --known-validator 9QxCLckBiJc783jnMvXZubK4wH86Eqqvashtrwvcsgkv \ --only-known-rpc \ --expected-genesis-hash 4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY \ ---dynamic-port-range {{ dynamic_port_range | default("8900-8925") }} \ +--dynamic-port-range {{ dynamic_port_range | default("8900-8930") }} \ --no-voting \ --full-rpc-api \ --rpc-port {{ port_rpc | default(8899, true) }} \ diff --git a/template/2026.5.21.1448/jinja/testnet-validator/start-validator-agave.sh.j2 b/template/2026.5.21.1448/jinja/testnet-validator/start-validator-agave.sh.j2 index 376412b0..4430df58 100644 --- a/template/2026.5.21.1448/jinja/testnet-validator/start-validator-agave.sh.j2 +++ b/template/2026.5.21.1448/jinja/testnet-validator/start-validator-agave.sh.j2 @@ -11,7 +11,7 @@ exec agave-validator \ --known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \ --only-known-rpc \ --expected-genesis-hash 4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY \ ---dynamic-port-range {{ dynamic_port_range | default("8000-8025") }} \ +--dynamic-port-range {{ dynamic_port_range | default("8000-8030") }} \ --rpc-port {{ port_rpc | default(8899, true) }} \ --wal-recovery-mode skip_any_corrupted_record \ --wait-for-supermajority {{ wait_for_supermajority | default("383520372") }} \ diff --git a/template/2026.5.21.1448/jinja/testnet-validator/start-validator-jito.sh.j2 b/template/2026.5.21.1448/jinja/testnet-validator/start-validator-jito.sh.j2 index 15aa1256..cdb4963c 100644 --- a/template/2026.5.21.1448/jinja/testnet-validator/start-validator-jito.sh.j2 +++ b/template/2026.5.21.1448/jinja/testnet-validator/start-validator-jito.sh.j2 @@ -11,7 +11,7 @@ exec agave-validator \ --known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \ --only-known-rpc \ --expected-genesis-hash 4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY \ ---dynamic-port-range {{ dynamic_port_range | default("8000-8025") }} \ +--dynamic-port-range {{ dynamic_port_range | default("8000-8030") }} \ --rpc-port {{ port_rpc | default(8899, true) }} \ --wal-recovery-mode skip_any_corrupted_record \ --wait-for-supermajority {{ wait_for_supermajority | default("383520372") }} \ diff --git a/template/2026.5.21.1448/jinja/testnet-validator/start-validator.sh.j2 b/template/2026.5.21.1448/jinja/testnet-validator/start-validator.sh.j2 index 47e1b9b8..3a900c91 100644 --- a/template/2026.5.21.1448/jinja/testnet-validator/start-validator.sh.j2 +++ b/template/2026.5.21.1448/jinja/testnet-validator/start-validator.sh.j2 @@ -9,7 +9,7 @@ exec agave-validator \ --entrypoint entrypoint2.testnet.solana.com:8001 \ --entrypoint entrypoint3.testnet.solana.com:8001 \ --known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \ ---dynamic-port-range {{ dynamic_port_range | default("8000-8025") }} \ +--dynamic-port-range {{ dynamic_port_range | default("8000-8030") }} \ --rpc-port {{ port_rpc | default(8899, true) }} \ --wal-recovery-mode skip_any_corrupted_record \ {% if wait_for_supermajority is defined %} From de07993df00a870c11608fc26da985d53cb09234 Mon Sep 17 00:00:00 2001 From: POPPIN-FUMI Date: Sat, 6 Jun 2026 14:48:29 +0900 Subject: [PATCH 2/3] fix(rpc): widen hardcoded 8000-8020 dynamic-port-range in mainnet-rpc start scripts Review follow-up: the mainnet-rpc agave start scripts (index/grpc/tx/main) hardcode `--dynamic-port-range 8000-8020` (21 ports) instead of using the templated default, so they were missed by the first pass and would also crash-loop on Agave 4.1+. Bump to 8000-8030. Firedancer TOML configs (separate parser) remain unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../jinja/mainnet-rpc/start-mainnet-rpc-grpc.sh.j2 | 2 +- .../jinja/mainnet-rpc/start-mainnet-rpc-index.sh.j2 | 2 +- .../2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-tx.sh.j2 | 2 +- .../2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc.sh.j2 | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-grpc.sh.j2 b/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-grpc.sh.j2 index d6e83a91..35a21c07 100644 --- a/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-grpc.sh.j2 +++ b/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-grpc.sh.j2 @@ -20,7 +20,7 @@ exec agave-validator \ --no-voting \ --private-rpc \ --no-skip-initial-accounts-db-clean \ ---dynamic-port-range 8000-8020 \ +--dynamic-port-range 8000-8030 \ --rpc-bind-address 0.0.0.0 \ --rpc-port {{ port_rpc }} \ --no-port-check \ diff --git a/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-index.sh.j2 b/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-index.sh.j2 index a1561251..90357725 100644 --- a/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-index.sh.j2 +++ b/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-index.sh.j2 @@ -21,7 +21,7 @@ exec agave-validator \ --no-voting \ --private-rpc \ --no-skip-initial-accounts-db-clean \ ---dynamic-port-range 8000-8020 \ +--dynamic-port-range 8000-8030 \ --rpc-bind-address 0.0.0.0 \ --rpc-port {{ port_rpc }} \ --no-port-check \ diff --git a/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-tx.sh.j2 b/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-tx.sh.j2 index db287ae2..54a53fb2 100644 --- a/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-tx.sh.j2 +++ b/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc-tx.sh.j2 @@ -21,7 +21,7 @@ exec agave-validator \ --no-voting \ --private-rpc \ --no-skip-initial-accounts-db-clean \ ---dynamic-port-range 8000-8020 \ +--dynamic-port-range 8000-8030 \ --rpc-bind-address 0.0.0.0 \ --rpc-port {{ port_rpc }} \ --no-port-check \ diff --git a/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc.sh.j2 b/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc.sh.j2 index 7617ed7f..63f4c8f1 100644 --- a/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc.sh.j2 +++ b/template/2026.5.21.1448/jinja/mainnet-rpc/start-mainnet-rpc.sh.j2 @@ -22,7 +22,7 @@ exec agave-validator \ --private-rpc \ --enable-cpi-and-log-storage \ --no-skip-initial-accounts-db-clean \ ---dynamic-port-range 8000-8020 \ +--dynamic-port-range 8000-8030 \ --rpc-bind-address 0.0.0.0 \ --rpc-port {{ port_rpc }} \ --no-port-check \ From b5a796be1020d6d9320462d2d5762e7bfd2671ce Mon Sep 17 00:00:00 2001 From: POPPIN-FUMI Date: Sat, 6 Jun 2026 14:51:28 +0900 Subject: [PATCH 3/3] fix(validator): gate cluster-restart-only flags in testnet start templates The testnet agave/jito start templates emitted --wait-for-supermajority and --expected-bank-hash unconditionally with hardcoded defaults. These are only valid for a coordinated cluster restart; on a normal restart a stale slot/hash makes the validator hang or panic with a bank-hash mismatch. Gate both behind `is defined` (matching the generic start-validator.sh.j2) so they appear only when an operator sets them. --expected-shred-version stays (default 57087). Co-Authored-By: Claude Opus 4.8 (1M context) --- .../jinja/testnet-validator/start-validator-agave.sh.j2 | 8 ++++++-- .../jinja/testnet-validator/start-validator-jito.sh.j2 | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/template/2026.5.21.1448/jinja/testnet-validator/start-validator-agave.sh.j2 b/template/2026.5.21.1448/jinja/testnet-validator/start-validator-agave.sh.j2 index 4430df58..f4cae196 100644 --- a/template/2026.5.21.1448/jinja/testnet-validator/start-validator-agave.sh.j2 +++ b/template/2026.5.21.1448/jinja/testnet-validator/start-validator-agave.sh.j2 @@ -14,9 +14,13 @@ exec agave-validator \ --dynamic-port-range {{ dynamic_port_range | default("8000-8030") }} \ --rpc-port {{ port_rpc | default(8899, true) }} \ --wal-recovery-mode skip_any_corrupted_record \ ---wait-for-supermajority {{ wait_for_supermajority | default("383520372") }} \ +{% if wait_for_supermajority is defined %} +--wait-for-supermajority {{ wait_for_supermajority }} \ +{% endif %} --expected-shred-version {{ expected_shred_version | default("57087") }} \ ---expected-bank-hash {{ expected_bank_hash | default("YFxSkDcvSPiA7EQpSTbCsWbJvNYMAsWXGvwGc3bXHEA") }} \ +{% if expected_bank_hash is defined %} +--expected-bank-hash {{ expected_bank_hash }} \ +{% endif %} --limit-ledger-size {{ limit_ledger_size | default(200000000) }} \ --no-port-check \ {% if xdp_enabled | default(false) and xdp_interface | default('') %} diff --git a/template/2026.5.21.1448/jinja/testnet-validator/start-validator-jito.sh.j2 b/template/2026.5.21.1448/jinja/testnet-validator/start-validator-jito.sh.j2 index cdb4963c..0ff3aa21 100644 --- a/template/2026.5.21.1448/jinja/testnet-validator/start-validator-jito.sh.j2 +++ b/template/2026.5.21.1448/jinja/testnet-validator/start-validator-jito.sh.j2 @@ -14,9 +14,13 @@ exec agave-validator \ --dynamic-port-range {{ dynamic_port_range | default("8000-8030") }} \ --rpc-port {{ port_rpc | default(8899, true) }} \ --wal-recovery-mode skip_any_corrupted_record \ ---wait-for-supermajority {{ wait_for_supermajority | default("383520372") }} \ +{% if wait_for_supermajority is defined %} +--wait-for-supermajority {{ wait_for_supermajority }} \ +{% endif %} --expected-shred-version {{ expected_shred_version | default("57087") }} \ ---expected-bank-hash {{ expected_bank_hash | default("YFxSkDcvSPiA7EQpSTbCsWbJvNYMAsWXGvwGc3bXHEA") }} \ +{% if expected_bank_hash is defined %} +--expected-bank-hash {{ expected_bank_hash }} \ +{% endif %} --limit-ledger-size {{ limit_ledger_size | default(200000000) }} \ --no-port-check \ {% if xdp_enabled | default(false) and xdp_interface | default('') %}