Skip to content

Commit

Permalink
Add mangata decorator (#611)
Browse files Browse the repository at this point in the history
  • Loading branch information
nvengal committed Nov 18, 2022
1 parent 52898c1 commit 4065e11
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 0 deletions.
12 changes: 12 additions & 0 deletions javascript/packages/orchestrator/src/paras-decorators/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ enum PARA {
Bifrost = "bifrost",
Equilibrium = "equilibrium",
Oak = "oak",
Mangata = "mangata",
Generic = "generic",
}

Expand All @@ -18,6 +19,7 @@ import acala from "./acala";
import bifrost from "./bifrost";
import efinity from "./efinity";
import equilibrium from "./equilibrium";
import mangata from "./mangata";
import moonbeam from "./moonbeam";
import oak from "./oak";
import statemint from "./statemint";
Expand All @@ -30,6 +32,7 @@ function whichPara(chain: string): PARA {
if (/bifrost/.test(chain)) return PARA.Bifrost;
if (/equilibrium|genshiro/.test(chain)) return PARA.Equilibrium;
if (/oak|turing|neumann/.test(chain)) return PARA.Oak;
if (/mangata/.test(chain)) return PARA.Mangata;

return PARA.Generic;
}
Expand Down Expand Up @@ -84,6 +87,14 @@ const oakDecorators: ParaDecorator = Object.keys(oak).reduce((memo, fn) => {
return memo;
}, Object.create({}));

const mangataDecorators: ParaDecorator = Object.keys(mangata).reduce(
(memo, fn) => {
memo[fn] = (mangata as ParaDecorator)[fn];
return memo;
},
Object.create({}),
);

const decorators: { [para in PARA]: { [fn: string]: Function } } = {
moonbeam: moonbeamDecorators,
statemint: statemintDecorators,
Expand All @@ -92,6 +103,7 @@ const decorators: { [para in PARA]: { [fn: string]: Function } } = {
bifrost: bifrostDecorators,
equilibrium: eqDecorators,
oak: oakDecorators,
mangata: mangataDecorators,
generic: {},
};

Expand Down
77 changes: 77 additions & 0 deletions javascript/packages/orchestrator/src/paras-decorators/mangata.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
import {
clearAuthorities as _clearAuthorities,
getRuntimeConfig,
readAndParseChainSpec,
writeChainSpec,
} from "../chain-spec";
import { Node } from "../types";

// Track 1st staking bond as default
let paraStakingBond: number | undefined;

export type GenesisNodeKey = [string, string, { [key: string]: string }];

export function getNodeKey(
node: Node,
useStash: boolean = true,
): GenesisNodeKey {
const { sr_account } = node.accounts;

const address = sr_account.address;

const key: GenesisNodeKey = [
address,
address,
{
aura: address,
},
];

return key;
}

async function clearAuthorities(specPath: string) {
await _clearAuthorities(specPath);

const chainSpec = readAndParseChainSpec(specPath);
const runtimeConfig = getRuntimeConfig(chainSpec);

// Clear parachainStaking candidates
if (runtimeConfig?.parachainStaking) {
paraStakingBond = runtimeConfig.parachainStaking.candidates[0][1];
runtimeConfig.parachainStaking.candidates.length = 0;
runtimeConfig.parachainStaking.delegations.length = 0;
}

writeChainSpec(specPath, chainSpec);
}

async function addParaCustom(specPath: string, node: Node) {
const chainSpec = readAndParseChainSpec(specPath);
const runtimeConfig = getRuntimeConfig(chainSpec);

if (!runtimeConfig?.parachainStaking) return;

const { sr_account } = node.accounts;
const stakingBond = paraStakingBond || 1000000000000;

// Ensure collator account has enough balance to bond and add candidate
runtimeConfig.tokens.tokensEndowment.push([
sr_account.address,
0,
stakingBond,
]);
runtimeConfig.parachainStaking.candidates.push([
sr_account.address,
stakingBond,
0,
]);

writeChainSpec(specPath, chainSpec);
}

export default {
getNodeKey,
clearAuthorities,
addParaCustom,
};

0 comments on commit 4065e11

Please sign in to comment.