Skip to content

Commit 2861028

Browse files
committed
feat: toml config file
1 parent bc2eac9 commit 2861028

7 files changed

Lines changed: 84 additions & 75 deletions

File tree

β€Žpackages/services/package.jsonβ€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
"@devnet/utils": "workspace:*",
2020
"@fastify/swagger": "^9.4.2",
2121
"@fastify/swagger-ui": "^5.2.1",
22+
"@iarna/toml": "^2.2.5",
2223
"@oclif/core": "^4.0.37",
2324
"@oclif/plugin-help": "^6.2.19",
2425
"@types/node": "^22.10.5",

β€Žpackages/services/src/devnet-service.tsβ€Ž

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import {
2222
} from "node:fs/promises";
2323
import path from "node:path";
2424
import * as YAML from "yaml";
25+
import * as toml from "@iarna/toml";
2526

2627
import { DevnetServiceArtifact } from "./devnet-service-artifact.js";
2728
import { serviceConfigs } from "./embedded/index.js";
@@ -192,6 +193,10 @@ export class DevNetService<Name extends keyof DevNetServicesConfigs> {
192193
return JSON.parse(await this.readFile(relativePath));
193194
}
194195

196+
public async readToml(relativePath: string) {
197+
return toml.parse(await this.readFile(relativePath));
198+
}
199+
195200
public async readYaml(relativePath: string) {
196201
return YAML.parse(await this.readFile(relativePath), { intAsBigInt: true });
197202
}
@@ -226,6 +231,10 @@ export class DevNetService<Name extends keyof DevNetServicesConfigs> {
226231
return await this.writeFile(relativePath, json);
227232
}
228233

234+
public async writeToml(relativePath: string, fileContent: toml.JsonMap) {
235+
return await this.writeFile(relativePath, toml.stringify(fileContent));
236+
}
237+
229238
public async writeYaml(relativePath: string, fileContent: unknown) {
230239
return await this.writeFile(relativePath, YAML.stringify(fileContent));
231240
}

β€Žpackages/services/src/embedded/lido-cli.tsβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { DevnetServiceConfig } from "../devnet-service-config.js";
33
export const lidoCLI = new DevnetServiceConfig({
44
repository: {
55
url: "https://github.com/lidofinance/lido-cli.git",
6-
branch: "fix/vroom-306-temp-fix-fusaka-1",
6+
branch: "feature/sr-66-devnet0-1",
77
},
88
name: "lidoCLI" as const,
99
constants: {

β€Žpackages/services/src/embedded/lido-core.tsβ€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export const lidoCore = new DevnetServiceConfig({
1616
"scripts/defaults/local-devnet-defaults.json",
1717
NETWORK_STATE_FILE: `deployed-local-devnet.json`,
1818
SLOTS_PER_EPOCH: "32",
19+
SCRATCH_DEPLOY_CONFIG: "scripts/scratch/deploy-params-testnet.toml",
1920
},
2021
hooks: {
2122
install: "lido-core:install",

β€Žsrc/commands/lido-core/deploy.tsβ€Ž

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { LidoCoreVerify } from "./verify.js";
88
type DeployEnvRequired = {
99
DEPLOYER: string;
1010
DEPOSIT_CONTRACT: string;
11+
GAS_LIMIT?: string;
1112
GAS_MAX_FEE: string;
1213
GAS_PRIORITY_FEE: string;
1314
GENESIS_TIME: string;
@@ -16,8 +17,8 @@ type DeployEnvRequired = {
1617
NETWORK_STATE_DEFAULTS_FILE: string;
1718
NETWORK_STATE_FILE: string;
1819
RPC_URL: string;
20+
SCRATCH_DEPLOY_CONFIG?: string;
1921
SLOTS_PER_EPOCH: string;
20-
GAS_LIMIT?: string;
2122
};
2223

2324
export const DeployLidoContracts = command.cli({
@@ -72,6 +73,7 @@ export const DeployLidoContracts = command.cli({
7273
NETWORK: constants.NETWORK,
7374
NETWORK_STATE_DEFAULTS_FILE: constants.NETWORK_STATE_DEFAULTS_FILE,
7475
NETWORK_STATE_FILE: constants.NETWORK_STATE_FILE,
76+
SCRATCH_DEPLOY_CONFIG: constants.SCRATCH_DEPLOY_CONFIG,
7577
GENESIS_TIME: genesis_time,
7678
RPC_URL: elPublic,
7779
SLOTS_PER_EPOCH: constants.SLOTS_PER_EPOCH,

β€Žsrc/commands/lido-core/prepare-repository.tsβ€Ž

Lines changed: 49 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -29,72 +29,68 @@ export const PrepareLidoCore = command.cli({
2929
const { constants } = lidoCore.config;
3030
const { deployer, secondDeployer } = await state.getNamedWallet();
3131

32-
const filePath = constants.NETWORK_STATE_DEFAULTS_FILE;
33-
const networkStateDefaults = await lidoCore.readJson(filePath);
32+
const filePath = constants.SCRATCH_DEPLOY_CONFIG;
33+
const tomlObj: any = await lidoCore.readToml(filePath);
3434

35-
const {
36-
vestingParams,
37-
daoInitialSettings,
38-
oracleDaemonConfig,
39-
hashConsensusForAccountingOracle,
40-
hashConsensusForValidatorsExitBusOracle,
41-
} = networkStateDefaults;
42-
assert(vestingParams?.holders, "Missing vestingParams.holders");
43-
assert(daoInitialSettings?.voting, "Missing daoInitialSettings.voting");
44-
assert(oracleDaemonConfig, "Missing oracleDaemonConfig");
45-
assert(
46-
hashConsensusForAccountingOracle,
47-
"Missing hashConsensusForAccountingOracle",
48-
);
49-
assert(
50-
hashConsensusForValidatorsExitBusOracle,
51-
"Missing hashConsensusForValidatorsExitBusOracle",
52-
);
35+
const vestingParams = tomlObj.vesting || {};
36+
const daoObj = tomlObj.dao || {};
37+
const initialSettings = daoObj.initialSettings || {};
38+
const daoVoting = initialSettings.voting || {};
39+
const oracleDaemonConfig = tomlObj.oracleDaemonConfig || {};
40+
const hashConsensusAO = tomlObj.hashConsensusForAccountingOracle || {};
41+
const hashConsensusVEBO = tomlObj.hashConsensusForValidatorsExitBusOracle || {};
42+
43+
assert(vestingParams.holders !== undefined, "Missing vestingParams.holders");
44+
assert(initialSettings.voting !== undefined, "Missing initialSettings.voting");
45+
assert(oracleDaemonConfig !== undefined, "Missing oracleDaemonConfig");
46+
assert(oracleDaemonConfig.hashConsensusForAccountingOracle !== undefined, "Missing oracleDaemonConfig.hashConsensusForAccountingOracle");
47+
assert(oracleDaemonConfig.hashConsensusForValidatorsExitBusOracle !== undefined, "Missing oracleDaemonConfig.hashConsensusForValidatorsExitBusOracle");
5348

54-
Object.assign(vestingParams.holders, {
49+
vestingParams.holders = {
50+
...vestingParams.holders,
5551
[deployer.publicKey]: vesting,
5652
[secondDeployer.publicKey]: vesting,
57-
});
53+
};
5854

59-
Object.assign(daoInitialSettings.voting, {
60-
voteDuration,
61-
objectionPhaseDuration,
62-
});
55+
daoVoting.voteDuration = voteDuration;
56+
daoVoting.objectionPhaseDuration = objectionPhaseDuration;
6357

64-
Object.assign(oracleDaemonConfig, {
65-
deployParameters: {
66-
NORMALIZED_CL_REWARD_PER_EPOCH: 64,
67-
NORMALIZED_CL_REWARD_MISTAKE_RATE_BP: 1000,
68-
REBASE_CHECK_NEAREST_EPOCH_DISTANCE: 1,
69-
REBASE_CHECK_DISTANT_EPOCH_DISTANCE: 2,
70-
VALIDATOR_DELAYED_TIMEOUT_IN_SLOTS: 7200,
71-
VALIDATOR_DELINQUENT_TIMEOUT_IN_SLOTS: 28_800,
72-
NODE_OPERATOR_NETWORK_PENETRATION_THRESHOLD_BP: 100,
73-
PREDICTION_DURATION_IN_SLOTS: 50_400,
74-
FINALIZATION_MAX_NEGATIVE_REBASE_EPOCH_SHIFT: 1350,
75-
EXIT_EVENTS_LOOKBACK_WINDOW_IN_SLOTS: 100_800
76-
},
77-
});
58+
oracleDaemonConfig.deployParameters = {
59+
NORMALIZED_CL_REWARD_PER_EPOCH: 64,
60+
NORMALIZED_CL_REWARD_MISTAKE_RATE_BP: 1000,
61+
REBASE_CHECK_NEAREST_EPOCH_DISTANCE: 1,
62+
REBASE_CHECK_DISTANT_EPOCH_DISTANCE: 2,
63+
VALIDATOR_DELAYED_TIMEOUT_IN_SLOTS: 7200,
64+
VALIDATOR_DELINQUENT_TIMEOUT_IN_SLOTS: 28_800,
65+
NODE_OPERATOR_NETWORK_PENETRATION_THRESHOLD_BP: 100,
66+
PREDICTION_DURATION_IN_SLOTS: 50_400,
67+
FINALIZATION_MAX_NEGATIVE_REBASE_EPOCH_SHIFT: 1350,
68+
EXIT_EVENTS_LOOKBACK_WINDOW_IN_SLOTS: 100_800,
69+
};
7870

7971
const {
8072
HASH_CONSENSUS_AO_EPOCHS_PER_FRAME,
8173
HASH_CONSENSUS_VEBO_EPOCHS_PER_FRAME,
8274
} = oracle.config.constants;
8375

84-
Object.assign(hashConsensusForAccountingOracle, {
85-
deployParameters: {
86-
fastLaneLengthSlots: 10,
87-
epochsPerFrame: HASH_CONSENSUS_AO_EPOCHS_PER_FRAME,
88-
},
89-
});
76+
hashConsensusAO.deployParameters = {
77+
fastLaneLengthSlots: 10,
78+
epochsPerFrame: HASH_CONSENSUS_AO_EPOCHS_PER_FRAME,
79+
};
80+
81+
hashConsensusVEBO.deployParameters = {
82+
fastLaneLengthSlots: 10,
83+
epochsPerFrame: HASH_CONSENSUS_VEBO_EPOCHS_PER_FRAME,
84+
};
9085

91-
Object.assign(hashConsensusForValidatorsExitBusOracle, {
92-
deployParameters: {
93-
fastLaneLengthSlots: 10,
94-
epochsPerFrame: HASH_CONSENSUS_VEBO_EPOCHS_PER_FRAME,
95-
},
96-
});
86+
tomlObj.vesting = vestingParams;
87+
tomlObj.dao = daoObj;
88+
tomlObj.dao.initialSettings = initialSettings;
89+
tomlObj.dao.initialSettings.voting = daoVoting;
90+
tomlObj.oracleDaemonConfig = oracleDaemonConfig;
91+
tomlObj.hashConsensusForAccountingOracle = hashConsensusAO;
92+
tomlObj.hashConsensusForValidatorsExitBusOracle = hashConsensusVEBO;
9793

98-
await lidoCore.writeJson(filePath, networkStateDefaults, true);
94+
await lidoCore.writeToml(filePath, tomlObj);
9995
},
10096
});

β€Žsrc/commands/stands/fusaka-srv3-devnet0.tsβ€Ž

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,13 @@ export const FusakaSRV3DevNetUp = command.cli({
7171
await dre.runCommand(ActivateLidoProtocol, {});
7272
logger.log("βœ… Lido Core protocol activated.");
7373

74-
logger.log("πŸš€ Activating CSM protocol...");
75-
await dre.runCommand(ActivateCSM, {
76-
stakeShareLimitBP: 2000,
77-
priorityExitShareThresholdBP: 2500,
78-
maxDepositsPerBlock: 30,
79-
});
80-
logger.log("βœ… CSM protocol activated.");
74+
// logger.log("πŸš€ Activating CSM protocol...");
75+
// await dre.runCommand(ActivateCSM, {
76+
// stakeShareLimitBP: 2000,
77+
// priorityExitShareThresholdBP: 2500,
78+
// maxDepositsPerBlock: 30,
79+
// });
80+
// logger.log("βœ… CSM protocol activated.");
8181

8282
if (!params.dsm) {
8383
logger.log("πŸš€ Replacing DSM with an EOA...");
@@ -86,17 +86,17 @@ export const FusakaSRV3DevNetUp = command.cli({
8686
}
8787

8888
const NOR_DEVNET_OPERATOR = "devnet_nor_1";
89-
const CSM_DEVNET_OPERATOR = "devnet_csm_1";
89+
// const CSM_DEVNET_OPERATOR = "devnet_csm_1";
9090

9191
logger.log("πŸš€ Generating and allocating keys for NOR Module...");
9292
await dre.runCommand(GenerateLidoDevNetKeys, { validators: 30 });
9393
await dre.runCommand(UseLidoDevNetKeys, { name: NOR_DEVNET_OPERATOR });
9494
logger.log("βœ… NOR Module keys generated and allocated.");
9595

96-
logger.log("πŸš€ Generating and allocating keys for CSM Module...");
97-
await dre.runCommand(GenerateLidoDevNetKeys, { validators: 30 });
98-
await dre.runCommand(UseLidoDevNetKeys, { name: CSM_DEVNET_OPERATOR });
99-
logger.log("βœ… CSM Module keys generated and allocated.");
96+
// logger.log("πŸš€ Generating and allocating keys for CSM Module...");
97+
// await dre.runCommand(GenerateLidoDevNetKeys, { validators: 30 });
98+
// await dre.runCommand(UseLidoDevNetKeys, { name: CSM_DEVNET_OPERATOR });
99+
// logger.log("βœ… CSM Module keys generated and allocated.");
100100

101101
logger.log("πŸš€ Adding NOR operator...");
102102
await dre.runCommand(LidoAddOperator, { name: NOR_DEVNET_OPERATOR });
@@ -110,11 +110,11 @@ export const FusakaSRV3DevNetUp = command.cli({
110110
await dre.runCommand(LidoSetStakingLimit, { operatorId: 0, limit: 30 });
111111
logger.log("βœ… Staking limit for NOR increased.");
112112

113-
logger.log("πŸš€ Adding CSM operator with keys...");
114-
await dre.runCommand(LidoAddCSMOperatorWithKeys, {
115-
name: CSM_DEVNET_OPERATOR,
116-
});
117-
logger.log(`βœ… Keys for operator ${CSM_DEVNET_OPERATOR} added.`);
113+
// logger.log("πŸš€ Adding CSM operator with keys...");
114+
// await dre.runCommand(LidoAddCSMOperatorWithKeys, {
115+
// name: CSM_DEVNET_OPERATOR,
116+
// });
117+
// logger.log(`βœ… Keys for operator ${CSM_DEVNET_OPERATOR} added.`);
118118

119119
logger.log("πŸš€ Run KAPI service in K8s.");
120120
await dre.runCommand(KapiK8sUp, {});
@@ -140,9 +140,9 @@ export const FusakaSRV3DevNetUp = command.cli({
140140
await dre.runCommand(LidoDeposit, { id: 1, deposits: 30, ...depositArgs });
141141
logger.log("βœ… Deposit to NOR completed.");
142142

143-
logger.log("πŸš€ Making deposit to CSM...");
144-
await dre.runCommand(LidoDeposit, { id: 3, deposits: 30, ...depositArgs });
145-
logger.log("βœ… Deposit to CSM completed.");
143+
// logger.log("πŸš€ Making deposit to CSM...");
144+
// await dre.runCommand(LidoDeposit, { id: 3, deposits: 30, ...depositArgs });
145+
// logger.log("βœ… Deposit to CSM completed.");
146146

147147
logger.log("πŸš€ Adding keys to the validator...");
148148
await dre.runCommand(ValidatorAdd, {});

0 commit comments

Comments
Β (0)