From 84cf05bc7529e59203649c89259882865a38cdc4 Mon Sep 17 00:00:00 2001 From: nahuseyoum Date: Fri, 2 Aug 2024 12:41:49 +0100 Subject: [PATCH 1/4] Configure Aventus keystore settings --- .../src/chain-decorators/aventus.ts | 28 +++++++++++++++++++ .../src/chain-decorators/index.ts | 9 ++++++ .../packages/orchestrator/src/chainSpec.ts | 1 + javascript/packages/orchestrator/src/keys.ts | 1 + package-lock.json | 6 ++++ 5 files changed, 45 insertions(+) create mode 100644 javascript/packages/orchestrator/src/chain-decorators/aventus.ts create mode 100644 package-lock.json diff --git a/javascript/packages/orchestrator/src/chain-decorators/aventus.ts b/javascript/packages/orchestrator/src/chain-decorators/aventus.ts new file mode 100644 index 000000000..7f579ab4e --- /dev/null +++ b/javascript/packages/orchestrator/src/chain-decorators/aventus.ts @@ -0,0 +1,28 @@ +import { Node } from "../sharedTypes"; + +// Aventus genesis node key type +export type GenesisNodeKey = [string, string, { [key: string]: string }]; + +export function getNodeKey(node: Node, useStash = true): GenesisNodeKey { + const { sr_stash, sr_account, ed_account } = node.accounts; + + const address = useStash ? sr_stash.address : sr_account.address; + + const key: GenesisNodeKey = [ + address, + address, + { + aura: sr_account.address, + grandpa: ed_account.address, + authority_discovery: sr_account.address, + im_online: sr_account.address, + avn: sr_account.address, + }, + ]; + + return key; +} + +export default { + getNodeKey, +}; diff --git a/javascript/packages/orchestrator/src/chain-decorators/index.ts b/javascript/packages/orchestrator/src/chain-decorators/index.ts index 2ad981204..660c10f7d 100644 --- a/javascript/packages/orchestrator/src/chain-decorators/index.ts +++ b/javascript/packages/orchestrator/src/chain-decorators/index.ts @@ -12,6 +12,7 @@ enum CHAIN { GenericEvm = "generic_evm", LocalV = "local_v", MainnetLocalV = "mainnet_local_v", + Aventus = "aventus", } interface Decorator { @@ -31,6 +32,7 @@ import mangata from "./mangata"; import moonbeam from "./moonbeam"; import oak from "./oak"; import generic_evm from "./generic-evm"; +import aventus from "./aventus"; function whichChain(chain_name: string, force_decorator?: string): CHAIN { const chain = force_decorator ? force_decorator : chain_name; @@ -47,9 +49,15 @@ function whichChain(chain_name: string, force_decorator?: string): CHAIN { if (/local-v/.test(chain)) return CHAIN.LocalV; if (/mainnet-local-v/.test(chain)) return CHAIN.MainnetLocalV; if (/generic-evm/.test(chain)) return CHAIN.GenericEvm; + if (/vow|avn|/.test(chain)) return CHAIN.Aventus; return CHAIN.Generic; } +const aventusDecorators: Decorator = Object.keys(aventus).reduce( + (memo, fn) => { + memo[fn] = (aventus as Decorator)[fn]; + return memo; +}, Object.create({})); const moonbeamDecorators: Decorator = Object.keys(moonbeam).reduce( (memo, fn) => { @@ -136,6 +144,7 @@ const decorators: { [para in CHAIN]: { [fn: string]: Function } } = { mainnet_local_v: MainnetLocalVDecorators, generic: {}, generic_evm: GenericEvmDecorators, + aventus: aventusDecorators, }; function decorate(chain: CHAIN, fns: Function[]) { diff --git a/javascript/packages/orchestrator/src/chainSpec.ts b/javascript/packages/orchestrator/src/chainSpec.ts index 755b32622..a97b5a858 100644 --- a/javascript/packages/orchestrator/src/chainSpec.ts +++ b/javascript/packages/orchestrator/src/chainSpec.ts @@ -180,6 +180,7 @@ export function getNodeKey(node: Node, useStash = true): GenesisNodeKey { mixnet: sr_account.address, bcsv: sr_account.address, ftsv: ed_account.address, + avn: sr_account.address, }, ]; diff --git a/javascript/packages/orchestrator/src/keys.ts b/javascript/packages/orchestrator/src/keys.ts index 0bfd80063..31174ae35 100644 --- a/javascript/packages/orchestrator/src/keys.ts +++ b/javascript/packages/orchestrator/src/keys.ts @@ -92,6 +92,7 @@ export async function generateKeystoreFiles( mixn: node.accounts.sr_account.publicKey, // Mixnet bcsv: node.accounts.sr_account.publicKey, // BlockchainSrvc (StorageHub) ftsv: node.accounts.ed_account.publicKey, // FileTransferSrvc (StorageHub) + avnk: node.accounts.sr_account.publicKey, // Aventus }; // 2 ways keys can be defined: diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..78f8bcc38 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "zombienet", + "lockfileVersion": 3, + "requires": true, + "packages": {} +} From bcc8495b84756dd9fec238800c585a32b2b0b18b Mon Sep 17 00:00:00 2001 From: nahuseyoum Date: Fri, 2 Aug 2024 15:24:29 +0100 Subject: [PATCH 2/4] Add ability to force decorate relay chainspec --- .../packages/orchestrator/src/chain-decorators/index.ts | 2 +- javascript/packages/orchestrator/src/chainSpec.ts | 5 ++--- javascript/packages/orchestrator/src/configGenerator.ts | 1 + javascript/packages/orchestrator/src/configTypes.ts | 2 ++ javascript/packages/orchestrator/src/keys.ts | 1 - 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/javascript/packages/orchestrator/src/chain-decorators/index.ts b/javascript/packages/orchestrator/src/chain-decorators/index.ts index 660c10f7d..46ddc6718 100644 --- a/javascript/packages/orchestrator/src/chain-decorators/index.ts +++ b/javascript/packages/orchestrator/src/chain-decorators/index.ts @@ -49,7 +49,7 @@ function whichChain(chain_name: string, force_decorator?: string): CHAIN { if (/local-v/.test(chain)) return CHAIN.LocalV; if (/mainnet-local-v/.test(chain)) return CHAIN.MainnetLocalV; if (/generic-evm/.test(chain)) return CHAIN.GenericEvm; - if (/vow|avn|/.test(chain)) return CHAIN.Aventus; + if (/vow-net|avn-chain/.test(chain)) return CHAIN.Aventus; return CHAIN.Generic; } diff --git a/javascript/packages/orchestrator/src/chainSpec.ts b/javascript/packages/orchestrator/src/chainSpec.ts index a97b5a858..bb567646f 100644 --- a/javascript/packages/orchestrator/src/chainSpec.ts +++ b/javascript/packages/orchestrator/src/chainSpec.ts @@ -179,8 +179,7 @@ export function getNodeKey(node: Node, useStash = true): GenesisNodeKey { vrf: sr_account.address, mixnet: sr_account.address, bcsv: sr_account.address, - ftsv: ed_account.address, - avn: sr_account.address, + ftsv: ed_account.address }, ]; @@ -757,7 +756,7 @@ export async function customizePlainRelayChain( validatorKeys.push(node.accounts.sr_stash.address); if (keyType === "session") { - const chain = whichChain(networkSpec.relaychain.chain); + const chain = whichChain(networkSpec.relaychain.chain, networkSpec.relaychain.force_decorator); const [decoratedGetNodeKey] = decorate(chain, [getNodeKey]); const key = decoratedGetNodeKey(node); await addAuthority(specPath, node, key); diff --git a/javascript/packages/orchestrator/src/configGenerator.ts b/javascript/packages/orchestrator/src/configGenerator.ts index 067ac6a0f..2b289f027 100644 --- a/javascript/packages/orchestrator/src/configGenerator.ts +++ b/javascript/packages/orchestrator/src/configGenerator.ts @@ -126,6 +126,7 @@ export async function generateNetworkSpec( config.relaychain?.max_nominations || DEFAULT_MAX_NOMINATIONS, nodes: [], chain: config.relaychain.chain || DEFAULT_CHAIN, + force_decorator: config.relaychain.force_decorator, overrides: globalOverrides, defaultResources: config.relaychain.default_resources, defaultPrometheusPrefix: diff --git a/javascript/packages/orchestrator/src/configTypes.ts b/javascript/packages/orchestrator/src/configTypes.ts index b7b590729..728dbae30 100644 --- a/javascript/packages/orchestrator/src/configTypes.ts +++ b/javascript/packages/orchestrator/src/configTypes.ts @@ -35,6 +35,7 @@ export interface RelayChainConfig { default_substrate_cli_args_version?: SubstrateCliArgsVersion; default_keystore_key_types?: string[]; chain: string; + force_decorator?: string; chain_spec_path?: string; chain_spec_command?: string; default_args?: string[]; @@ -66,6 +67,7 @@ export interface ComputedNetwork { genesis?: JSON | ObjectJSON; defaultResources?: Resources; delayNetworkSettings?: DelayNetworkSettings; + force_decorator?: string; }; parachains: Parachain[]; types: any; diff --git a/javascript/packages/orchestrator/src/keys.ts b/javascript/packages/orchestrator/src/keys.ts index 31174ae35..0bfd80063 100644 --- a/javascript/packages/orchestrator/src/keys.ts +++ b/javascript/packages/orchestrator/src/keys.ts @@ -92,7 +92,6 @@ export async function generateKeystoreFiles( mixn: node.accounts.sr_account.publicKey, // Mixnet bcsv: node.accounts.sr_account.publicKey, // BlockchainSrvc (StorageHub) ftsv: node.accounts.ed_account.publicKey, // FileTransferSrvc (StorageHub) - avnk: node.accounts.sr_account.publicKey, // Aventus }; // 2 ways keys can be defined: From bb3859973e5ea2870051aa19018b9b46de105f11 Mon Sep 17 00:00:00 2001 From: nahuseyoum Date: Fri, 2 Aug 2024 15:25:41 +0100 Subject: [PATCH 3/4] formatting --- javascript/packages/orchestrator/src/chainSpec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascript/packages/orchestrator/src/chainSpec.ts b/javascript/packages/orchestrator/src/chainSpec.ts index bb567646f..20cd9b67c 100644 --- a/javascript/packages/orchestrator/src/chainSpec.ts +++ b/javascript/packages/orchestrator/src/chainSpec.ts @@ -179,7 +179,7 @@ export function getNodeKey(node: Node, useStash = true): GenesisNodeKey { vrf: sr_account.address, mixnet: sr_account.address, bcsv: sr_account.address, - ftsv: ed_account.address + ftsv: ed_account.address, }, ]; From 2fe3d32c03d312acd675e0ca73561c825cf92463 Mon Sep 17 00:00:00 2001 From: nahuseyoum Date: Fri, 2 Aug 2024 16:29:36 +0100 Subject: [PATCH 4/4] linting --- .../packages/orchestrator/src/chain-decorators/index.ts | 5 ++--- javascript/packages/orchestrator/src/chainSpec.ts | 5 ++++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/javascript/packages/orchestrator/src/chain-decorators/index.ts b/javascript/packages/orchestrator/src/chain-decorators/index.ts index 46ddc6718..987641248 100644 --- a/javascript/packages/orchestrator/src/chain-decorators/index.ts +++ b/javascript/packages/orchestrator/src/chain-decorators/index.ts @@ -53,9 +53,8 @@ function whichChain(chain_name: string, force_decorator?: string): CHAIN { return CHAIN.Generic; } -const aventusDecorators: Decorator = Object.keys(aventus).reduce( - (memo, fn) => { - memo[fn] = (aventus as Decorator)[fn]; +const aventusDecorators: Decorator = Object.keys(aventus).reduce((memo, fn) => { + memo[fn] = (aventus as Decorator)[fn]; return memo; }, Object.create({})); diff --git a/javascript/packages/orchestrator/src/chainSpec.ts b/javascript/packages/orchestrator/src/chainSpec.ts index 20cd9b67c..a85a6b9ad 100644 --- a/javascript/packages/orchestrator/src/chainSpec.ts +++ b/javascript/packages/orchestrator/src/chainSpec.ts @@ -756,7 +756,10 @@ export async function customizePlainRelayChain( validatorKeys.push(node.accounts.sr_stash.address); if (keyType === "session") { - const chain = whichChain(networkSpec.relaychain.chain, networkSpec.relaychain.force_decorator); + const chain = whichChain( + networkSpec.relaychain.chain, + networkSpec.relaychain.force_decorator, + ); const [decoratedGetNodeKey] = decorate(chain, [getNodeKey]); const key = decoratedGetNodeKey(node); await addAuthority(specPath, node, key);