@chainsafe/lodestar 1.38.0 → 1.39.0-dev.0321dbcf04

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/.git-data.json +2 -2
  2. package/lib/cmds/beacon/handler.d.ts.map +1 -1
  3. package/lib/cmds/beacon/handler.js +16 -9
  4. package/lib/cmds/beacon/handler.js.map +1 -1
  5. package/lib/cmds/beacon/initBeaconState.d.ts +2 -3
  6. package/lib/cmds/beacon/initBeaconState.d.ts.map +1 -1
  7. package/lib/cmds/beacon/initBeaconState.js +3 -6
  8. package/lib/cmds/beacon/initBeaconState.js.map +1 -1
  9. package/lib/cmds/beacon/options.js +1 -1
  10. package/lib/cmds/beacon/options.js.map +1 -1
  11. package/lib/cmds/dev/files.js +1 -1
  12. package/lib/cmds/dev/files.js.map +1 -1
  13. package/lib/cmds/dev/handler.js +1 -1
  14. package/lib/cmds/dev/handler.js.map +1 -1
  15. package/lib/cmds/dev/options.d.ts +10 -11
  16. package/lib/cmds/dev/options.d.ts.map +1 -1
  17. package/lib/cmds/dev/options.js +12 -7
  18. package/lib/cmds/dev/options.js.map +1 -1
  19. package/lib/cmds/validator/options.d.ts +2 -2
  20. package/lib/cmds/validator/options.d.ts.map +1 -1
  21. package/lib/cmds/validator/options.js +15 -5
  22. package/lib/cmds/validator/options.js.map +1 -1
  23. package/lib/cmds/validator/signers/index.js +3 -3
  24. package/lib/cmds/validator/signers/index.js.map +1 -1
  25. package/lib/config/beaconParams.d.ts.map +1 -1
  26. package/lib/config/beaconParams.js +1 -2
  27. package/lib/config/beaconParams.js.map +1 -1
  28. package/lib/networks/chiado.d.ts +0 -1
  29. package/lib/networks/chiado.d.ts.map +1 -1
  30. package/lib/networks/chiado.js +0 -2
  31. package/lib/networks/chiado.js.map +1 -1
  32. package/lib/networks/dev.d.ts +0 -1
  33. package/lib/networks/dev.d.ts.map +1 -1
  34. package/lib/networks/dev.js +12 -4
  35. package/lib/networks/dev.js.map +1 -1
  36. package/lib/networks/ephemery.d.ts +0 -1
  37. package/lib/networks/ephemery.d.ts.map +1 -1
  38. package/lib/networks/ephemery.js +0 -1
  39. package/lib/networks/ephemery.js.map +1 -1
  40. package/lib/networks/gnosis.d.ts +0 -1
  41. package/lib/networks/gnosis.d.ts.map +1 -1
  42. package/lib/networks/gnosis.js +0 -2
  43. package/lib/networks/gnosis.js.map +1 -1
  44. package/lib/networks/hoodi.d.ts +0 -1
  45. package/lib/networks/hoodi.d.ts.map +1 -1
  46. package/lib/networks/hoodi.js +1 -1
  47. package/lib/networks/hoodi.js.map +1 -1
  48. package/lib/networks/index.d.ts +0 -1
  49. package/lib/networks/index.d.ts.map +1 -1
  50. package/lib/networks/index.js.map +1 -1
  51. package/lib/networks/mainnet.d.ts +0 -1
  52. package/lib/networks/mainnet.d.ts.map +1 -1
  53. package/lib/networks/mainnet.js +1 -2
  54. package/lib/networks/mainnet.js.map +1 -1
  55. package/lib/networks/sepolia.d.ts +0 -1
  56. package/lib/networks/sepolia.d.ts.map +1 -1
  57. package/lib/networks/sepolia.js +0 -1
  58. package/lib/networks/sepolia.js.map +1 -1
  59. package/lib/options/beaconNodeOptions/chain.d.ts +0 -1
  60. package/lib/options/beaconNodeOptions/chain.d.ts.map +1 -1
  61. package/lib/options/beaconNodeOptions/chain.js +0 -8
  62. package/lib/options/beaconNodeOptions/chain.js.map +1 -1
  63. package/lib/options/beaconNodeOptions/eth1.d.ts +12 -3
  64. package/lib/options/beaconNodeOptions/eth1.d.ts.map +1 -1
  65. package/lib/options/beaconNodeOptions/eth1.js +11 -32
  66. package/lib/options/beaconNodeOptions/eth1.js.map +1 -1
  67. package/lib/options/beaconNodeOptions/execution.js +1 -1
  68. package/lib/options/beaconNodeOptions/execution.js.map +1 -1
  69. package/lib/options/beaconNodeOptions/index.d.ts +0 -3
  70. package/lib/options/beaconNodeOptions/index.d.ts.map +1 -1
  71. package/lib/options/beaconNodeOptions/index.js +0 -1
  72. package/lib/options/beaconNodeOptions/index.js.map +1 -1
  73. package/lib/options/globalOptions.d.ts +0 -3
  74. package/lib/options/globalOptions.d.ts.map +1 -1
  75. package/lib/options/paramsOptions.d.ts +1 -7
  76. package/lib/options/paramsOptions.d.ts.map +1 -1
  77. package/lib/options/paramsOptions.js +1 -31
  78. package/lib/options/paramsOptions.js.map +1 -1
  79. package/package.json +29 -21
  80. package/src/cmds/beacon/handler.ts +21 -12
  81. package/src/cmds/beacon/initBeaconState.ts +2 -9
  82. package/src/cmds/beacon/options.ts +1 -1
  83. package/src/cmds/dev/files.ts +1 -1
  84. package/src/cmds/dev/handler.ts +1 -1
  85. package/src/cmds/dev/options.ts +13 -8
  86. package/src/cmds/validator/options.ts +17 -7
  87. package/src/cmds/validator/signers/index.ts +3 -3
  88. package/src/config/beaconParams.ts +1 -8
  89. package/src/networks/chiado.ts +0 -2
  90. package/src/networks/dev.ts +13 -4
  91. package/src/networks/ephemery.ts +0 -1
  92. package/src/networks/gnosis.ts +0 -2
  93. package/src/networks/hoodi.ts +1 -1
  94. package/src/networks/index.ts +0 -1
  95. package/src/networks/mainnet.ts +1 -2
  96. package/src/networks/sepolia.ts +0 -1
  97. package/src/options/beaconNodeOptions/chain.ts +0 -11
  98. package/src/options/beaconNodeOptions/eth1.ts +20 -37
  99. package/src/options/beaconNodeOptions/execution.ts +1 -1
  100. package/src/options/beaconNodeOptions/index.ts +0 -1
  101. package/src/options/paramsOptions.ts +3 -43
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/options/beaconNodeOptions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAC,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,GACtC,KAAK,CAAC,SAAS,GACf,IAAI,CAAC,QAAQ,GACb,SAAS,CAAC,mBAAmB,GAC7B,OAAO,CAAC,oBAAoB,GAC5B,OAAO,CAAC,WAAW,GACnB,UAAU,CAAC,cAAc,GACzB,OAAO,CAAC,WAAW,GACnB,IAAI,CAAC,QAAQ,CAAC;AAEhB,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAc9F;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAU7B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/options/beaconNodeOptions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAC,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,GACtC,KAAK,CAAC,SAAS,GACf,IAAI,CAAC,QAAQ,GACb,SAAS,CAAC,mBAAmB,GAC7B,OAAO,CAAC,oBAAoB,GAC5B,OAAO,CAAC,WAAW,GACnB,UAAU,CAAC,cAAc,GACzB,OAAO,CAAC,WAAW,GACnB,IAAI,CAAC,QAAQ,CAAC;AAEhB,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAa9F;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAU7B,CAAC"}
@@ -14,7 +14,6 @@ export function parseBeaconNodeArgs(args) {
14
14
  api: api.parseArgs(args),
15
15
  chain: chain.parseArgs(args),
16
16
  // db: {},
17
- eth1: eth1.parseArgs(args),
18
17
  executionEngine: execution.parseArgs(args),
19
18
  executionBuilder: builder.parseArgs(args),
20
19
  metrics: metrics.parseArgs(args),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/options/beaconNodeOptions/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,wBAAwB,EAAC,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAYlC,MAAM,UAAU,mBAAmB,CAAC,IAAoB;IACtD,iFAAiF;IACjF,OAAO,wBAAwB,CAAC;QAC9B,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;QACxB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;QAC5B,UAAU;QACV,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAC1B,eAAe,EAAE,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC;QAC1C,gBAAgB,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;QACzC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;QAChC,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;QACtC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;QAChC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,GAAG,GAAG,CAAC,OAAO;IACd,GAAG,KAAK,CAAC,OAAO;IAChB,GAAG,IAAI,CAAC,OAAO;IACf,GAAG,SAAS,CAAC,OAAO;IACpB,GAAG,OAAO,CAAC,OAAO;IAClB,GAAG,OAAO,CAAC,OAAO;IAClB,GAAG,UAAU,CAAC,OAAO;IACrB,GAAG,OAAO,CAAC,OAAO;IAClB,GAAG,IAAI,CAAC,OAAO;CAChB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/options/beaconNodeOptions/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,wBAAwB,EAAC,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAYlC,MAAM,UAAU,mBAAmB,CAAC,IAAoB;IACtD,iFAAiF;IACjF,OAAO,wBAAwB,CAAC;QAC9B,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;QACxB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;QAC5B,UAAU;QACV,eAAe,EAAE,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC;QAC1C,gBAAgB,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;QACzC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;QAChC,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;QACtC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;QAChC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,GAAG,GAAG,CAAC,OAAO;IACd,GAAG,KAAK,CAAC,OAAO;IAChB,GAAG,IAAI,CAAC,OAAO;IACf,GAAG,SAAS,CAAC,OAAO;IACpB,GAAG,OAAO,CAAC,OAAO;IAClB,GAAG,OAAO,CAAC,OAAO;IAClB,GAAG,UAAU,CAAC,OAAO;IACrB,GAAG,OAAO,CAAC,OAAO;IAClB,GAAG,IAAI,CAAC,OAAO;CAChB,CAAC"}
@@ -14,9 +14,6 @@ export declare const defaultNetwork: NetworkName;
14
14
  export declare const rcConfigOption: [string, string, (configPath: string) => Record<string, unknown>];
15
15
  export type GlobalArgs = GlobalSingleArgs & IParamsArgs;
16
16
  export declare const globalOptions: {
17
- "terminal-total-difficulty-override": import("@lodestar/utils").CliOptionDefinition<string | undefined>;
18
- "terminal-block-hash-override": import("@lodestar/utils").CliOptionDefinition<string | undefined>;
19
- "terminal-block-hash-epoch-override": import("@lodestar/utils").CliOptionDefinition<string | undefined>;
20
17
  dataDir: import("@lodestar/utils").CliOptionDefinition<string | undefined>;
21
18
  network: import("@lodestar/utils").CliOptionDefinition<NetworkName | undefined>;
22
19
  paramsFile: import("@lodestar/utils").CliOptionDefinition<string | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"globalOptions.d.ts","sourceRoot":"","sources":["../../src/options/globalOptions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAe,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAC,WAAW,EAAgB,MAAM,oBAAoB,CAAC;AAE9D,KAAK,gBAAgB,GAAG;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,WAAuB,CAAC;AAoDrD,eAAO,MAAM,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAI5F,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG,WAAW,CAAC;AAExD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;CAGzB,CAAC"}
1
+ {"version":3,"file":"globalOptions.d.ts","sourceRoot":"","sources":["../../src/options/globalOptions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAe,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAC,WAAW,EAAgB,MAAM,oBAAoB,CAAC;AAE9D,KAAK,gBAAgB,GAAG;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,WAAuB,CAAC;AAoDrD,eAAO,MAAM,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAI5F,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG,WAAW,CAAC;AAExD,eAAO,MAAM,aAAa;;;;;;;;;;;CAGzB,CAAC"}
@@ -1,12 +1,6 @@
1
1
  import { CliCommandOptions } from "@lodestar/utils";
2
2
  import { IBeaconParamsUnparsed } from "../config/types.js";
3
- export type ITerminalPowArgs = {
4
- "terminal-total-difficulty-override"?: string;
5
- "terminal-block-hash-override"?: string;
6
- "terminal-block-hash-epoch-override"?: string;
7
- };
8
- export type IParamsArgs = Record<never, never> & ITerminalPowArgs;
3
+ export type IParamsArgs = Record<never, never>;
9
4
  export declare function parseBeaconParamsArgs(args: Record<string, string | number>): IBeaconParamsUnparsed;
10
- export declare function parseTerminalPowArgs(args: ITerminalPowArgs): IBeaconParamsUnparsed;
11
5
  export declare const paramsOptions: CliCommandOptions<IParamsArgs>;
12
6
  //# sourceMappingURL=paramsOptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"paramsOptions.d.ts","sourceRoot":"","sources":["../../src/options/paramsOptions.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAsB,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAC,qBAAqB,EAAC,MAAM,oBAAoB,CAAC;AAOzD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,oCAAoC,CAAC,EAAE,MAAM,CAAC;IAC9C,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,oCAAoC,CAAC,EAAE,MAAM,CAAC;CAC/C,CAAC;AACF,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,gBAAgB,CAAC;AAIlE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,qBAAqB,CAMlG;AAoBD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,GAAG,qBAAqB,CAQlF;AAED,eAAO,MAAM,aAAa,EAAE,iBAAiB,CAAC,WAAW,CAiBxD,CAAC"}
1
+ {"version":3,"file":"paramsOptions.d.ts","sourceRoot":"","sources":["../../src/options/paramsOptions.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAsB,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAC,qBAAqB,EAAC,MAAM,oBAAoB,CAAC;AAOzD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAI/C,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,qBAAqB,CAMlG;AAED,eAAO,MAAM,aAAa,EAAE,iBAAiB,CAAC,WAAW,CAUxD,CAAC"}
@@ -9,7 +9,7 @@ export function parseBeaconParamsArgs(args) {
9
9
  return beaconParams;
10
10
  }, {});
11
11
  }
12
- const paramsOptionsByName = ObjectKeys(chainConfigTypes).reduce((options, key) => {
12
+ export const paramsOptions = ObjectKeys(chainConfigTypes).reduce((options, key) => {
13
13
  options[getArgKey(key)] = {
14
14
  hidden: true,
15
15
  type: "string",
@@ -17,34 +17,4 @@ const paramsOptionsByName = ObjectKeys(chainConfigTypes).reduce((options, key) =
17
17
  };
18
18
  return options;
19
19
  }, {});
20
- const terminalArgsToParamsMap = {
21
- "terminal-total-difficulty-override": "TERMINAL_TOTAL_DIFFICULTY",
22
- "terminal-block-hash-override": "TERMINAL_BLOCK_HASH",
23
- "terminal-block-hash-epoch-override": "TERMINAL_BLOCK_HASH_ACTIVATION_EPOCH",
24
- };
25
- export function parseTerminalPowArgs(args) {
26
- const parsedArgs = ObjectKeys(terminalArgsToParamsMap).reduce((beaconParams, key) => {
27
- const paramOption = terminalArgsToParamsMap[key];
28
- const value = args[key];
29
- if (paramOption != null && value != null)
30
- beaconParams[paramOption] = value;
31
- return beaconParams;
32
- }, {});
33
- return parsedArgs;
34
- }
35
- export const paramsOptions = {
36
- ...paramsOptionsByName,
37
- "terminal-total-difficulty-override": {
38
- description: "Terminal PoW block TTD override",
39
- type: "string",
40
- },
41
- "terminal-block-hash-override": {
42
- description: "Terminal PoW block hash override",
43
- type: "string",
44
- },
45
- "terminal-block-hash-epoch-override": {
46
- description: "Terminal PoW block hash override activation epoch",
47
- type: "string",
48
- },
49
- };
50
20
  //# sourceMappingURL=paramsOptions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"paramsOptions.js","sourceRoot":"","sources":["../../src/options/paramsOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAG/D,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAa5C,MAAM,SAAS,GAAG,CAAC,GAAgC,EAAU,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC;AAEhF,MAAM,UAAU,qBAAqB,CAAC,IAAqC;IACzE,OAAO,UAAU,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,YAA4C,EAAE,GAAG,EAAE,EAAE;QAC/F,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC,IAAI,KAAK,IAAI,IAAI;YAAE,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC7C,OAAO,YAAY,CAAC;IACtB,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAED,MAAM,mBAAmB,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAC7D,CAAC,OAA4C,EAAE,GAAG,EAAuC,EAAE;IACzF,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG;QACxB,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,QAAQ;KAChB,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC,EACD,EAAE,CACH,CAAC;AAEF,MAAM,uBAAuB,GAAuD;IAClF,oCAAoC,EAAE,2BAA2B;IACjE,8BAA8B,EAAE,qBAAqB;IACrD,oCAAoC,EAAE,sCAAsC;CAC7E,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,IAAsB;IACzD,MAAM,UAAU,GAAG,UAAU,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC,YAA4C,EAAE,GAAG,EAAE,EAAE;QAClH,MAAM,WAAW,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,WAAW,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI;YAAE,YAAY,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;QAC5E,OAAO,YAAY,CAAC;IACtB,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAmC;IAC3D,GAAG,mBAAmB;IAEtB,oCAAoC,EAAE;QACpC,WAAW,EAAE,iCAAiC;QAC9C,IAAI,EAAE,QAAQ;KACf;IAED,8BAA8B,EAAE;QAC9B,WAAW,EAAE,kCAAkC;QAC/C,IAAI,EAAE,QAAQ;KACf;IAED,oCAAoC,EAAE;QACpC,WAAW,EAAE,mDAAmD;QAChE,IAAI,EAAE,QAAQ;KACf;CACF,CAAC"}
1
+ {"version":3,"file":"paramsOptions.js","sourceRoot":"","sources":["../../src/options/paramsOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAQ5C,MAAM,SAAS,GAAG,CAAC,GAAgC,EAAU,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC;AAEhF,MAAM,UAAU,qBAAqB,CAAC,IAAqC;IACzE,OAAO,UAAU,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,YAA4C,EAAE,GAAG,EAAE,EAAE;QAC/F,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC,IAAI,KAAK,IAAI,IAAI;YAAE,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC7C,OAAO,YAAY,CAAC;IACtB,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAmC,UAAU,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAC9F,CAAC,OAA4C,EAAE,GAAG,EAAuC,EAAE;IACzF,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG;QACxB,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,QAAQ;KAChB,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC,EACD,EAAE,CACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chainsafe/lodestar",
3
- "version": "1.38.0",
3
+ "version": "1.39.0-dev.0321dbcf04",
4
4
  "description": "Command line interface for lodestar",
5
5
  "author": "ChainSafe Systems",
6
6
  "license": "Apache-2.0",
@@ -28,24 +28,23 @@
28
28
  },
29
29
  "scripts": {
30
30
  "clean": "rm -rf lib && rm -f *.tsbuildinfo",
31
- "build": "tsc -p tsconfig.build.json && yarn write-git-data",
32
- "build:release": "yarn clean && yarn run build",
31
+ "build": "tsc -p tsconfig.build.json && pnpm write-git-data",
32
+ "build:release": "pnpm clean && pnpm run build",
33
33
  "build:watch": "tsc -p tsconfig.build.json --watch",
34
34
  "write-git-data": "node lib/util/gitData/writeGitData.js",
35
35
  "check-build": "node -e \"(async function() { await import('./lib/index.js') })()\" lodestar --help",
36
36
  "check-types": "tsc",
37
37
  "docs:build": "node --loader ts-node/esm ./docsgen/index.ts",
38
38
  "lint": "biome check src/ test/",
39
- "lint:fix": "yarn run lint --write",
39
+ "lint:fix": "pnpm run lint --write",
40
40
  "test:unit": "vitest run --project unit --project unit-minimal",
41
41
  "test:e2e": "vitest run --project e2e --project e2e-mainnet",
42
42
  "test:sim:multifork": "LODESTAR_PRESET=minimal DOTENV_CONFIG_PATH=../../.env.test node -r dotenv/config --loader ts-node/esm test/sim/multiFork.test.ts",
43
43
  "test:sim:mixedclient": "LODESTAR_PRESET=minimal DOTENV_CONFIG_PATH=../../.env.test node -r dotenv/config --loader ts-node/esm test/sim/mixedClient.test.ts",
44
44
  "test:sim:endpoints": "LODESTAR_PRESET=minimal DOTENV_CONFIG_PATH=../../.env.test node -r dotenv/config --loader ts-node/esm test/sim/endpoints.test.ts",
45
- "test:sim:deneb": "LODESTAR_PRESET=minimal DOTENV_CONFIG_PATH=../../.env.test node -r dotenv/config --loader ts-node/esm test/sim/deneb.test.ts",
46
45
  "test:sim:backup_eth_provider": "LODESTAR_PRESET=minimal DOTENV_CONFIG_PATH=../../.env.test node -r dotenv/config --loader ts-node/esm test/sim/backupEthProvider.test.ts",
47
- "test": "yarn test:unit && yarn test:e2e",
48
- "check-readme": "typescript-docs-verifier"
46
+ "test": "pnpm test:unit && pnpm test:e2e",
47
+ "check-readme": "pnpm exec ts-node ../../scripts/check_readme.ts"
49
48
  },
50
49
  "repository": {
51
50
  "type": "git",
@@ -64,22 +63,23 @@
64
63
  "@chainsafe/discv5": "^11.0.4",
65
64
  "@chainsafe/enr": "^5.0.1",
66
65
  "@chainsafe/persistent-merkle-tree": "^1.2.1",
66
+ "@chainsafe/pubkey-index-map": "^3.0.0",
67
67
  "@chainsafe/ssz": "^1.2.2",
68
68
  "@chainsafe/threads": "^1.11.3",
69
69
  "@libp2p/crypto": "^5.0.15",
70
70
  "@libp2p/interface": "^2.7.0",
71
71
  "@libp2p/peer-id": "^5.1.0",
72
- "@lodestar/api": "^1.38.0",
73
- "@lodestar/beacon-node": "^1.38.0",
74
- "@lodestar/config": "^1.38.0",
75
- "@lodestar/db": "^1.38.0",
76
- "@lodestar/light-client": "^1.38.0",
77
- "@lodestar/logger": "^1.38.0",
78
- "@lodestar/params": "^1.38.0",
79
- "@lodestar/state-transition": "^1.38.0",
80
- "@lodestar/types": "^1.38.0",
81
- "@lodestar/utils": "^1.38.0",
82
- "@lodestar/validator": "^1.38.0",
72
+ "@lodestar/api": "^1.39.0-dev.0321dbcf04",
73
+ "@lodestar/beacon-node": "^1.39.0-dev.0321dbcf04",
74
+ "@lodestar/config": "^1.39.0-dev.0321dbcf04",
75
+ "@lodestar/db": "^1.39.0-dev.0321dbcf04",
76
+ "@lodestar/light-client": "^1.39.0-dev.0321dbcf04",
77
+ "@lodestar/logger": "^1.39.0-dev.0321dbcf04",
78
+ "@lodestar/params": "^1.39.0-dev.0321dbcf04",
79
+ "@lodestar/state-transition": "^1.39.0-dev.0321dbcf04",
80
+ "@lodestar/types": "^1.39.0-dev.0321dbcf04",
81
+ "@lodestar/utils": "^1.39.0-dev.0321dbcf04",
82
+ "@lodestar/validator": "^1.39.0-dev.0321dbcf04",
83
83
  "@multiformats/multiaddr": "^12.1.3",
84
84
  "deepmerge": "^4.3.1",
85
85
  "ethers": "^6.7.0",
@@ -94,12 +94,20 @@
94
94
  "yargs": "^17.7.1"
95
95
  },
96
96
  "devDependencies": {
97
- "@lodestar/test-utils": "^1.38.0",
97
+ "@chainsafe/as-sha256": "^1.2.0",
98
+ "@ethereumjs/rlp": "^4.0.1",
99
+ "@lodestar/test-utils": "^1.39.0-dev.0321dbcf04",
98
100
  "@types/debug": "^4.1.7",
99
101
  "@types/inquirer": "^9.0.3",
102
+ "@types/js-yaml": "^4.0.5",
100
103
  "@types/proper-lockfile": "^4.1.4",
104
+ "@types/tmp": "^0.2.3",
101
105
  "@types/yargs": "^17.0.24",
102
- "fastify": "^5.2.1"
106
+ "ethereum-cryptography": "^2.2.1",
107
+ "fastify": "^5.2.1",
108
+ "tmp": "^0.2.4",
109
+ "web3": "^4.0.3",
110
+ "web3-eth-accounts": "^4.0.3"
103
111
  },
104
- "gitHead": "dbd947813d9c6513b4d56e6ae0376b34f28a1b75"
112
+ "gitHead": "ad062d807edb3a6d39ca07122d51a3db06f2302f"
105
113
  }
@@ -2,15 +2,17 @@ import path from "node:path";
2
2
  import {getHeapStatistics} from "node:v8";
3
3
  import {SignableENR} from "@chainsafe/enr";
4
4
  import {hasher} from "@chainsafe/persistent-merkle-tree";
5
+ import {PubkeyIndexMap} from "@chainsafe/pubkey-index-map";
5
6
  import {BeaconDb, BeaconNode} from "@lodestar/beacon-node";
6
7
  import {ChainForkConfig, createBeaconConfig} from "@lodestar/config";
7
8
  import {LevelDbController} from "@lodestar/db/controller/level";
8
9
  import {LoggerNode, getNodeLogger} from "@lodestar/logger/node";
9
10
  import {ACTIVE_PRESET, PresetName} from "@lodestar/params";
11
+ import {Index2PubkeyCache, createCachedBeaconState, syncPubkeys} from "@lodestar/state-transition";
10
12
  import {ErrorAborted, bytesToInt, formatBytes} from "@lodestar/utils";
11
13
  import {ProcessShutdownCallback} from "@lodestar/validator";
12
14
  import {BeaconNodeOptions, getBeaconConfigFromArgs} from "../../config/index.js";
13
- import {getNetworkBootnodes, getNetworkData, isKnownNetworkName, readBootnodes} from "../../networks/index.js";
15
+ import {getNetworkBootnodes, isKnownNetworkName, readBootnodes} from "../../networks/index.js";
14
16
  import {GlobalArgs, parseBeaconNodeArgs} from "../../options/index.js";
15
17
  import {LogArgs} from "../../options/logOptions.js";
16
18
  import {
@@ -71,25 +73,38 @@ export async function beaconHandler(args: BeaconArgs & GlobalArgs): Promise<void
71
73
  // BeaconNode setup
72
74
  try {
73
75
  const {anchorState, isFinalized, wsCheckpoint} = await initBeaconState(
74
- options,
75
76
  args,
76
77
  beaconPaths.dataDir,
77
78
  config,
78
79
  db,
79
- logger,
80
- abortController.signal
80
+ logger
81
81
  );
82
82
  const beaconConfig = createBeaconConfig(config, anchorState.genesisValidatorsRoot);
83
+ const pubkey2index = new PubkeyIndexMap();
84
+ const index2pubkey: Index2PubkeyCache = [];
85
+ syncPubkeys(anchorState.validators.getAllReadonlyValues(), pubkey2index, index2pubkey);
86
+ const cachedState = createCachedBeaconState(
87
+ anchorState,
88
+ {
89
+ config: beaconConfig,
90
+ pubkey2index,
91
+ index2pubkey,
92
+ },
93
+ {skipSyncPubkeys: true}
94
+ );
95
+
83
96
  const node = await BeaconNode.init({
84
97
  opts: options,
85
98
  config: beaconConfig,
99
+ pubkey2index,
100
+ index2pubkey,
86
101
  db,
87
102
  logger,
88
103
  processShutdownCallback,
89
104
  privateKey,
90
105
  dataDir: beaconPaths.dataDir,
91
106
  peerStoreDir: beaconPaths.peerStoreDir,
92
- anchorState,
107
+ anchorState: cachedState,
93
108
  isAnchorStateFinalized: isFinalized,
94
109
  wsCheckpoint,
95
110
  });
@@ -189,12 +204,6 @@ export async function beaconHandlerInit(args: BeaconArgs & GlobalArgs) {
189
204
  // Add detailed version string for API node/version endpoint
190
205
  beaconNodeOptions.set({api: {commit, version}});
191
206
 
192
- // Set known depositContractDeployBlock
193
- if (isKnownNetworkName(network)) {
194
- const {depositContractDeployBlock} = getNetworkData(network);
195
- beaconNodeOptions.set({eth1: {depositContractDeployBlock}});
196
- }
197
-
198
207
  const logger = initLogger(args, beaconPaths.dataDir, config);
199
208
  const {privateKey, enr} = await initPrivateKeyAndEnr(args, beaconPaths.beaconDir, logger);
200
209
 
@@ -226,7 +235,7 @@ export async function beaconHandlerInit(args: BeaconArgs & GlobalArgs) {
226
235
  // Add User-Agent header to all builder requests
227
236
  beaconNodeOptions.set({executionBuilder: {userAgent: versionStr}});
228
237
  // Set jwt version with version string
229
- beaconNodeOptions.set({executionEngine: {jwtVersion: versionStr}, eth1: {jwtVersion: versionStr}});
238
+ beaconNodeOptions.set({executionEngine: {jwtVersion: versionStr}});
230
239
  // Set commit and version for ClientVersion
231
240
  beaconNodeOptions.set({executionEngine: {commit, version}});
232
241
  }
@@ -2,10 +2,8 @@ import {
2
2
  DbCPStateDatastore,
3
3
  FileCPStateDatastore,
4
4
  IBeaconDb,
5
- IBeaconNodeOptions,
6
5
  checkAndPersistAnchorState,
7
6
  getStateTypeFromBytes,
8
- initStateFromEth1,
9
7
  } from "@lodestar/beacon-node";
10
8
  import {BeaconConfig, ChainForkConfig, createBeaconConfig} from "@lodestar/config";
11
9
  import {
@@ -94,20 +92,17 @@ async function initAndVerifyWeakSubjectivityState(
94
92
  * 1. restore from weak subjectivity state (possibly downloaded from a remote beacon node)
95
93
  * 2. restore from db
96
94
  * 3. restore from genesis state (possibly downloaded via URL)
97
- * 4. create genesis state from eth1
98
95
  *
99
96
  * The returned anchorState could be finalized or not.
100
97
  * - if we load from checkpointState, checkpointSyncUrl, genesisStateFile or archived db, it is finalized
101
98
  * - it's not finalized if we load from unsafeCheckpointState or lastPersistedCheckpointState
102
99
  */
103
100
  export async function initBeaconState(
104
- options: IBeaconNodeOptions,
105
101
  args: BeaconArgs & GlobalArgs,
106
102
  dataDir: string,
107
103
  chainForkConfig: ChainForkConfig,
108
104
  db: IBeaconDb,
109
- logger: Logger,
110
- signal: AbortSignal
105
+ logger: Logger
111
106
  ): Promise<{anchorState: BeaconStateAllForks; isFinalized: boolean; wsCheckpoint?: Checkpoint}> {
112
107
  if (args.forceCheckpointSync && !(args.checkpointState || args.checkpointSyncUrl || args.unsafeCheckpointState)) {
113
108
  throw new Error("Forced checkpoint sync without specifying a checkpointState or checkpointSyncUrl");
@@ -333,9 +328,7 @@ export async function initBeaconState(
333
328
  return {anchorState, isFinalized};
334
329
  }
335
330
 
336
- // Only place we will not bother checking isWithinWeakSubjectivityPeriod as forceGenesis passed by user
337
- const anchorState = await initStateFromEth1({config: chainForkConfig, db, logger, opts: options.eth1, signal});
338
- return {anchorState, isFinalized: true};
331
+ throw Error("Failed to initialize beacon state, please provide a genesis state file or use checkpoint sync");
339
332
  }
340
333
 
341
334
  async function readWSState(
@@ -150,7 +150,7 @@ export const beaconExtraOptions: CliCommandOptions<BeaconExtraArgs> = {
150
150
 
151
151
  private: {
152
152
  description:
153
- "Do not send implementation details over p2p identify protocol and in builder, execution engine and eth1 requests",
153
+ "Do not send implementation details over p2p identify protocol, and in builder and execution engine requests",
154
154
  type: "boolean",
155
155
  },
156
156
 
@@ -15,7 +15,7 @@ export async function writeTestnetFiles(
15
15
  const genesisTime = Math.floor(Date.now() / 1000);
16
16
  const eth1BlockHash = Buffer.alloc(32, 0);
17
17
 
18
- const {state} = nodeUtils.initDevState(config, genesisValidators, {genesisTime, eth1BlockHash});
18
+ const state = nodeUtils.initDevState(config, genesisValidators, {genesisTime, eth1BlockHash});
19
19
 
20
20
  // Write testnet data
21
21
  fs.mkdirSync(targetDir, {recursive: true});
@@ -60,7 +60,7 @@ export async function devHandler(args: IDevArgs & GlobalArgs): Promise<void> {
60
60
  const genesisTime = args.genesisTime ?? Math.floor(Date.now() / 1000) + 5;
61
61
  const eth1BlockHash = fromHex(args.genesisEth1Hash ?? toHex(Buffer.alloc(32, 0x0b)));
62
62
 
63
- const {state} = nodeUtils.initDevState(config, validatorCount, {genesisTime, eth1BlockHash});
63
+ const state = nodeUtils.initDevState(config, validatorCount, {genesisTime, eth1BlockHash});
64
64
 
65
65
  args.genesisStateFile = "genesis.ssz";
66
66
  fs.writeFileSync(args.genesisStateFile, state.serialize());
@@ -1,13 +1,14 @@
1
1
  import {CliCommandOptions, CliOptionDefinition} from "@lodestar/utils";
2
2
  import {NetworkName} from "../../networks/index.js";
3
3
  import {beaconNodeOptions, globalOptions} from "../../options/index.js";
4
+ import {parseRange} from "../../util/format.ts";
4
5
  import {BeaconArgs, beaconOptions} from "../beacon/options.js";
5
6
  import {IValidatorCliArgs, validatorOptions} from "../validator/options.js";
6
7
 
7
8
  type IDevOwnArgs = {
8
9
  genesisEth1Hash?: string;
9
10
  genesisValidators: number;
10
- startValidators?: string;
11
+ startValidators?: number[];
11
12
  genesisTime?: number;
12
13
  reset?: boolean;
13
14
  dumpTestnetFiles?: string;
@@ -29,8 +30,13 @@ const devOwnOptions: CliCommandOptions<IDevOwnArgs> = {
29
30
  },
30
31
 
31
32
  startValidators: {
32
- description: "Start interop validators in inclusive range with notation '0..7'",
33
- type: "string",
33
+ description: "Start interop validators in inclusive range(s) with notation '0..7'",
34
+ type: "array",
35
+ coerce: (indexes: string[]): number[] =>
36
+ // Parse ["11..13,15..17"] to ["11..13", "15..17"]
37
+ indexes
38
+ .flatMap((item) => item.split(","))
39
+ .flatMap(parseRange),
34
40
  group: "dev",
35
41
  },
36
42
 
@@ -80,11 +86,6 @@ const externalOptionsOverrides: Partial<Record<"network" | keyof typeof beaconNo
80
86
  defaultDescription: undefined,
81
87
  default: true,
82
88
  },
83
- eth1: {
84
- ...beaconNodeOptions.eth1,
85
- defaultDescription: undefined,
86
- default: false,
87
- },
88
89
  rest: {
89
90
  ...beaconNodeOptions.rest,
90
91
  defaultDescription: undefined,
@@ -98,6 +99,10 @@ const externalOptionsOverrides: Partial<Record<"network" | keyof typeof beaconNo
98
99
  ...beaconNodeOptions["rest.swaggerUI"],
99
100
  default: true,
100
101
  },
102
+ "execution.engineMock": {
103
+ ...beaconNodeOptions["execution.engineMock"],
104
+ default: true,
105
+ },
101
106
  };
102
107
 
103
108
  export const devOptions = {
@@ -3,7 +3,7 @@ import {CliCommandOptions} from "@lodestar/utils";
3
3
  import {defaultOptions} from "@lodestar/validator";
4
4
  import {coerceCors, enabledAllBashFriendly} from "../../options/beaconNodeOptions/api.js";
5
5
  import {LogArgs, logOptions} from "../../options/logOptions.js";
6
- import {ensure0xPrefix} from "../../util/index.js";
6
+ import {ensure0xPrefix, parseRange} from "../../util/index.js";
7
7
  import {keymanagerRestApiServerOptsDefault} from "./keymanager/server.js";
8
8
  import {defaultAccountPaths, defaultValidatorPaths} from "./paths.js";
9
9
 
@@ -70,9 +70,9 @@ export type IValidatorCliArgs = AccountValidatorArgs &
70
70
 
71
71
  distributed?: boolean;
72
72
 
73
- interopIndexes?: string;
73
+ interopIndexes?: number[];
74
74
  fromMnemonic?: string;
75
- mnemonicIndexes?: string;
75
+ mnemonicIndexes?: number[];
76
76
 
77
77
  metrics?: boolean;
78
78
  "metrics.port"?: number;
@@ -453,8 +453,13 @@ export const validatorOptions: CliCommandOptions<IValidatorCliArgs> = {
453
453
 
454
454
  interopIndexes: {
455
455
  hidden: true,
456
- description: "Range (inclusive) of interop key indexes to validate with: 0..16",
457
- type: "string",
456
+ description: "Range(s) (inclusive) of interop key indexes to validate with: 0..16",
457
+ type: "array",
458
+ coerce: (indexes: string[]): number[] =>
459
+ // Parse ["11..13,15..17"] to ["11..13", "15..17"]
460
+ indexes
461
+ .flatMap((item) => item.split(","))
462
+ .flatMap(parseRange),
458
463
  },
459
464
 
460
465
  fromMnemonic: {
@@ -465,7 +470,12 @@ export const validatorOptions: CliCommandOptions<IValidatorCliArgs> = {
465
470
 
466
471
  mnemonicIndexes: {
467
472
  hidden: true,
468
- description: "UNSAFE. Range (inclusive) of mnemonic key indexes to validate with: 0..16",
469
- type: "string",
473
+ description: "UNSAFE. Range(s) (inclusive) of mnemonic key indexes to validate with: 0..16",
474
+ type: "array",
475
+ coerce: (indexes: string[]): number[] =>
476
+ // Parse ["11..13,15..17"] to ["11..13", "15..17"]
477
+ indexes
478
+ .flatMap((item) => item.split(","))
479
+ .flatMap(parseRange),
470
480
  },
471
481
  };
@@ -5,7 +5,7 @@ import {interopSecretKey} from "@lodestar/state-transition";
5
5
  import {LogLevel, Logger, isValidHttpUrl} from "@lodestar/utils";
6
6
  import {Signer, SignerType, externalSignerGetKeys} from "@lodestar/validator";
7
7
  import {GlobalArgs, defaultNetwork} from "../../../options/index.js";
8
- import {YargsError, assertValidPubkeysHex, parseRange} from "../../../util/index.js";
8
+ import {YargsError, assertValidPubkeysHex} from "../../../util/index.js";
9
9
  import {showProgress} from "../../../util/progress.js";
10
10
  import {decryptKeystoreDefinitions} from "../keymanager/decryptKeystoreDefinitions.js";
11
11
  import {PersistedKeysBackend} from "../keymanager/persistedKeys.js";
@@ -49,7 +49,7 @@ export async function getSignersFromArgs(
49
49
 
50
50
  // ONLY USE FOR TESTNETS - Derive interop keys
51
51
  if (args.interopIndexes) {
52
- const indexes = parseRange(args.interopIndexes);
52
+ const indexes = args.interopIndexes;
53
53
  // Using a remote signer with TESTNETS
54
54
  if (args["externalSigner.pubkeys"] || args["externalSigner.fetch"]) {
55
55
  return getRemoteSigners(args);
@@ -67,7 +67,7 @@ export async function getSignersFromArgs(
67
67
  }
68
68
 
69
69
  const masterSK = deriveKeyFromMnemonic(args.fromMnemonic);
70
- const indexes = parseRange(args.mnemonicIndexes);
70
+ const indexes = Array.from(new Set(args.mnemonicIndexes));
71
71
  return indexes.map((index) => ({
72
72
  type: SignerType.Local,
73
73
  secretKey: SecretKey.fromBytes(deriveEth2ValidatorKeys(masterSK, index).signing),
@@ -6,13 +6,7 @@ import {
6
6
  createChainForkConfig,
7
7
  } from "@lodestar/config";
8
8
  import {NetworkName, getNetworkBeaconParams} from "../networks/index.js";
9
- import {
10
- GlobalArgs,
11
- ITerminalPowArgs,
12
- defaultNetwork,
13
- parseBeaconParamsArgs,
14
- parseTerminalPowArgs,
15
- } from "../options/index.js";
9
+ import {GlobalArgs, defaultNetwork, parseBeaconParamsArgs} from "../options/index.js";
16
10
  import {readFile} from "../util/index.js";
17
11
  import {IBeaconParamsUnparsed} from "./types.js";
18
12
 
@@ -44,7 +38,6 @@ export function getBeaconParamsFromArgs(args: GlobalArgs): ChainConfig {
44
38
  paramsFile: args.paramsFile,
45
39
  additionalParamsCli: {
46
40
  ...parseBeaconParamsArgs(args as IBeaconParamsUnparsed),
47
- ...parseTerminalPowArgs(args as ITerminalPowArgs),
48
41
  },
49
42
  });
50
43
  }
@@ -1,7 +1,5 @@
1
1
  export {chiadoChainConfig as chainConfig} from "@lodestar/config/networks";
2
2
 
3
- // eth1.providerUrls suggestion: https://rpc.chiado.gnosis.gateway.fm
4
- export const depositContractDeployBlock = 155435;
5
3
  export const genesisFileUrl = "https://raw.githubusercontent.com/gnosischain/configs/main/chiado/genesis.ssz";
6
4
  export const genesisStateRoot = "0xa48419160f8f146ecaa53d12a5d6e1e6af414a328afdc56b60d5002bb472a077";
7
5
  export const bootnodesFileUrl = "https://raw.githubusercontent.com/gnosischain/configs/main/chiado/bootnodes.yaml";
@@ -3,16 +3,26 @@ import {mainnetChainConfig, minimalChainConfig} from "@lodestar/config/configs";
3
3
  import {gnosisChainConfig} from "@lodestar/config/networks";
4
4
  import {ACTIVE_PRESET, PresetName} from "@lodestar/params";
5
5
 
6
+ // Dev network will run from electra through fulu immediately
7
+ const devConfig: Partial<ChainConfig> = {
8
+ ALTAIR_FORK_EPOCH: 0,
9
+ BELLATRIX_FORK_EPOCH: 0,
10
+ CAPELLA_FORK_EPOCH: 0,
11
+ DENEB_FORK_EPOCH: 0,
12
+ ELECTRA_FORK_EPOCH: 0,
13
+ FULU_FORK_EPOCH: 1,
14
+ };
15
+
6
16
  let chainConfig: ChainConfig;
7
17
  switch (ACTIVE_PRESET) {
8
18
  case PresetName.mainnet:
9
- chainConfig = mainnetChainConfig;
19
+ chainConfig = {...mainnetChainConfig, ...devConfig};
10
20
  break;
11
21
  case PresetName.minimal:
12
- chainConfig = minimalChainConfig;
22
+ chainConfig = {...minimalChainConfig, ...devConfig};
13
23
  break;
14
24
  case PresetName.gnosis:
15
- chainConfig = gnosisChainConfig;
25
+ chainConfig = {...gnosisChainConfig, ...devConfig};
16
26
  break;
17
27
  default:
18
28
  throw Error(`Preset ${ACTIVE_PRESET} not supported with dev command`);
@@ -20,7 +30,6 @@ switch (ACTIVE_PRESET) {
20
30
 
21
31
  export {chainConfig};
22
32
 
23
- export const depositContractDeployBlock = 0;
24
33
  export const genesisFileUrl = null;
25
34
  export const genesisStateRoot = null;
26
35
  export const bootnodesFileUrl = null;
@@ -1,6 +1,5 @@
1
1
  export {ephemeryChainConfig as chainConfig} from "@lodestar/config/networks";
2
2
 
3
- export const depositContractDeployBlock = 0;
4
3
  export const genesisFileUrl = "https://ephemery.dev/latest/genesis.ssz";
5
4
  export const genesisStateRoot = null;
6
5
  export const bootnodesFileUrl = "https://ephemery.dev/latest/bootstrap_nodes.txt";
@@ -1,7 +1,5 @@
1
1
  export {gnosisChainConfig as chainConfig} from "@lodestar/config/networks";
2
2
 
3
- // eth1.providerUrls suggestion: https://rpc.gnosischain.com
4
- export const depositContractDeployBlock = 19469077;
5
3
  export const genesisFileUrl = "https://raw.githubusercontent.com/gnosischain/configs/main/mainnet/genesis.ssz";
6
4
  export const genesisStateRoot = "0x1511578d6de70428bf3529ab92102f21070694cb205443437fae359a7f220537";
7
5
  export const bootnodesFileUrl = "https://raw.githubusercontent.com/gnosischain/configs/main/mainnet/bootnodes.yaml";
@@ -1,6 +1,5 @@
1
1
  export {hoodiChainConfig as chainConfig} from "@lodestar/config/networks";
2
2
 
3
- export const depositContractDeployBlock = 0;
4
3
  export const genesisFileUrl = "https://media.githubusercontent.com/media/eth-clients/hoodi/main/metadata/genesis.ssz";
5
4
  export const genesisStateRoot = "0x2683ebc120f91f740c7bed4c866672d01e1ba51b4cc360297138465ee5df40f0";
6
5
  export const bootnodesFileUrl =
@@ -13,4 +12,5 @@ export const bootEnrs = [
13
12
  "enr:-Ku4QIC89sMC0o-irosD4_23lJJ4qCGOvdUz7SmoShWx0k6AaxCFTKviEHa-sa7-EzsiXpDp0qP0xzX6nKdXJX3X-IQBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpBd9cEGEAAJEP__________gmlkgnY0gmlwhIbRilSJc2VjcDI1NmsxoQK_m0f1DzDc9Cjrspm36zuRa7072HSiMGYWLsKiVSbP34N1ZHCCIyk",
14
13
  "enr:-Ku4QNkWjw5tNzo8DtWqKm7CnDdIq_y7xppD6c1EZSwjB8rMOkSFA1wJPLoKrq5UvA7wcxIotH6Usx3PAugEN2JMncIBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpBd9cEGEAAJEP__________gmlkgnY0gmlwhIbHuBeJc2VjcDI1NmsxoQP3FwrhFYB60djwRjAoOjttq6du94DtkQuaN99wvgqaIYN1ZHCCIyk",
15
14
  "enr:-OS4QMJGE13xEROqvKN1xnnt7U-noc51VXyM6wFMuL9LMhQDfo1p1dF_zFdS4OsnXz_vIYk-nQWnqJMWRDKvkSK6_CwDh2F0dG5ldHOIAAAAADAAAACGY2xpZW502IpMaWdodGhvdXNljDcuMC4wLWJldGEuM4RldGgykNLxmX9gAAkQAAgAAAAAAACCaWSCdjSCaXCEhse4F4RxdWljgiMqiXNlY3AyNTZrMaECef77P8k5l3PC_raLw42OAzdXfxeQ-58BJriNaqiRGJSIc3luY25ldHMAg3RjcIIjKIN1ZHCCIyg",
15
+ "enr:-KG4QKRSUi4IOAIK_xt5ERrwW_J47wmNCLWFh7Jo0hFE69drZsiZ5Pb5CEcM_njFTTLlIR6SCf67HTcSV1g6hCXdhWkCgmlkgnY0gmlwhLkvrBODaXA2kCoGxcAWAAAYAAAAAAAAABCJc2VjcDI1NmsxoQPU7g2jQGTz8BYbB2vLTb39S_PrcZAehwMM0b3bWsM5rIN1ZHCCIyiEdWRwNoIjKA",
16
16
  ];
@@ -49,7 +49,6 @@ const GET_STATE_LOG_INTERVAL = 30 * 1000;
49
49
 
50
50
  export function getNetworkData(network: NetworkName): {
51
51
  chainConfig: ChainConfig;
52
- depositContractDeployBlock: number;
53
52
  genesisFileUrl: string | null;
54
53
  genesisStateRoot: string | null;
55
54
  bootnodesFileUrl: string | null;
@@ -1,6 +1,5 @@
1
1
  export {mainnetChainConfig as chainConfig} from "@lodestar/config/networks";
2
2
 
3
- export const depositContractDeployBlock = 11052984;
4
3
  export const genesisFileUrl =
5
4
  "https://raw.githubusercontent.com/eth-clients/mainnet/refs/heads/main/metadata/genesis.ssz";
6
5
  export const genesisStateRoot = "0x7e76880eb67bbdc86250aa578958e9d0675e64e714337855204fb5abaaf82c2b";
@@ -30,5 +29,5 @@ export const bootEnrs = [
30
29
  "enr:-LK4QKWrXTpV9T78hNG6s8AM6IO4XH9kFT91uZtFg1GcsJ6dKovDOr1jtAAFPnS2lvNltkOGA9k29BUN7lFh_sjuc9QBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhANAdd-Jc2VjcDI1NmsxoQLQa6ai7y9PMN5hpLe5HmiJSlYzMuzP7ZhwRiwHvqNXdoN0Y3CCI4yDdWRwgiOM",
31
30
  // Lodestar team's bootnodes
32
31
  "enr:-IS4QPi-onjNsT5xAIAenhCGTDl4z-4UOR25Uq-3TmG4V3kwB9ljLTb_Kp1wdjHNj-H8VVLRBSSWVZo3GUe3z6k0E-IBgmlkgnY0gmlwhKB3_qGJc2VjcDI1NmsxoQMvAfgB4cJXvvXeM6WbCG86CstbSxbQBSGx31FAwVtOTYN1ZHCCIyg",
33
- "enr:-KG4QCb8NC3gEM3I0okStV5BPX7Bg6ZXTYCzzbYyEXUPGcZtHmvQtiJH4C4F2jG7azTcb9pN3JlgpfxAnRVFzJ3-LykBgmlkgnY0gmlwhFPlR9KDaXA2kP6AAAAAAAAAAlBW__4my5iJc2VjcDI1NmsxoQLdUv9Eo9sxCt0tc_CheLOWnX59yHJtkBSOL7kpxdJ6GYN1ZHCCIyiEdWRwNoIjKA",
32
+ "enr:-KG4QPUf8-g_jU-KrwzG42AGt0wWM1BTnQxgZXlvCEIfTQ5hSmptkmgmMbRkpOqv6kzb33SlhPHJp7x4rLWWiVq5lSECgmlkgnY0gmlwhFPlR9KDaXA2kCoGxcAJAAAVAAAAAAAAABCJc2VjcDI1NmsxoQLdUv9Eo9sxCt0tc_CheLOWnX59yHJtkBSOL7kpxdJ6GYN1ZHCCIyiEdWRwNoIjKA",
34
33
  ];