diff --git a/configs/karura.yml b/configs/karura.yml index ca15a44..5ca5b50 100644 --- a/configs/karura.yml +++ b/configs/karura.yml @@ -42,4 +42,3 @@ parachains: nodes: - flags: - --alice - diff --git a/configs/kusama.yml b/configs/kusama.yml index fd7fdd4..1eaabb9 100644 --- a/configs/kusama.yml +++ b/configs/kusama.yml @@ -6,6 +6,17 @@ relaychain: config: validation_upgrade_frequency: 1 validation_upgrade_delay: 1 + # enable hrmp channels after: https://github.com/paritytech/polkadot/pull/4324 + # hrmp: + # preopenHrmpChannels: + # - sender: 2000 + # recipient: 2001 + # maxCapacity: 8 + # maxMessageSize: 102400 + # - sender: 2001 + # recipient: 2000 + # maxCapacity: 8 + # maxMessageSize: 102400 env: RUST_LOG: parachain::candidate-backing=trace,parachain::candidate-selection=trace,parachain::pvf=trace,parachain::collator-protocol=trace,parachain::provisioner=trace flags: diff --git a/src/index.ts b/src/index.ts index c86104a..7d2b938 100644 --- a/src/index.ts +++ b/src/index.ts @@ -177,6 +177,16 @@ const generateRelaychainGenesisFile = (config: Config, path: string, output: str // additional patches if (config.relaychain.runtimeGenesisConfig) { + const hrmp = config.relaychain.runtimeGenesisConfig.hrmp; + if (hrmp) { + hrmp.preopenHrmpChannels = hrmp.preopenHrmpChannels.map((channel) => { + if (!Array.isArray(channel)) { + return [channel.sender, channel.recipient, channel.maxCapacity, channel.maxMessageSize]; + } else { + return channel; + } + }); + } _.merge(runtime, config.relaychain.runtimeGenesisConfig); } diff --git a/src/types.ts b/src/types.ts index 951f1d1..cb1a3e8 100644 --- a/src/types.ts +++ b/src/types.ts @@ -11,6 +11,9 @@ export interface RelayChain { nodes: Node[]; runtimeGenesisConfig: { configuration: { config: { [index: string]: string | number } }; + hrmp?: { + preopenHrmpChannels: HrmpChannelsConfig[]; + }; }; } @@ -68,3 +71,12 @@ export interface DockerNode { }; }; } + +export type HrmpChannelsConfig = + | { + sender: number; + recipient: number; + maxCapacity: number; + maxMessageSize: number; + } + | [number, number, number, number];