@aztec/slasher 1.0.0 → 1.1.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,oBAAY,OAAO;IACjB,OAAO,IAAI;IACX,gBAAgB,IAAI;IACpB,kBAAkB,IAAI;IACtB,UAAU,IAAI;IACd,aAAa,IAAI;CAClB;AAED,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAMnD,CAAC;AAEF,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAexD;AAED,eAAO,MAAM,mBAAmB,EAAG,aAAsB,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,UAAU,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAGD,MAAM,WAAW,eAAe;IAC9B,CAAC,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;CAC1D;AAED,MAAM,MAAM,cAAc,GAAG,iBAAiB,CAAC,eAAe,CAAC,CAAC;AAEhE,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAEvE,MAAM,MAAM,OAAO,GAAG,cAAc,GAAG;IACrC,WAAW,EAAE,YAAY,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,CAAC;AAEF,MAAM,WAAW,aAAa;IAE5B,oBAAoB,CAAC,EAAE,UAAU,CAAC;IAClC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,wBAAwB,EAAE,OAAO,CAAC;IAClC,wBAAwB,EAAE,MAAM,CAAC;IACjC,2BAA2B,EAAE,MAAM,CAAC;IACpC,sBAAsB,EAAE,OAAO,CAAC;IAChC,qCAAqC,EAAE,MAAM,CAAC;IAC9C,qCAAqC,EAAE,MAAM,CAAC;IAC9C,4BAA4B,EAAE,MAAM,CAAC;IACrC,yBAAyB,EAAE,MAAM,CAAC;IAClC,wCAAwC,EAAE,MAAM,CAAC;CAElD;AAED,eAAO,MAAM,oBAAoB,EAAE,aAelC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,kBAAkB,CAAC,aAAa,CAuEnE,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAOnE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,oBAAY,OAAO;IACjB,OAAO,IAAI;IACX,gBAAgB,IAAI;IACpB,kBAAkB,IAAI;IACtB,UAAU,IAAI;IACd,aAAa,IAAI;CAClB;AAED,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAMnD,CAAC;AAEF,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAexD;AAED,eAAO,MAAM,mBAAmB,EAAG,aAAsB,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,UAAU,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAGD,MAAM,WAAW,eAAe;IAC9B,CAAC,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;CAC1D;AAED,MAAM,MAAM,cAAc,GAAG,iBAAiB,CAAC,eAAe,CAAC,CAAC;AAEhE,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAEvE,MAAM,MAAM,OAAO,GAAG,cAAc,GAAG;IACrC,WAAW,EAAE,YAAY,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,CAAC;AAEF,MAAM,WAAW,aAAa;IAE5B,oBAAoB,CAAC,EAAE,UAAU,CAAC;IAClC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,wBAAwB,EAAE,OAAO,CAAC;IAClC,wBAAwB,EAAE,MAAM,CAAC;IACjC,2BAA2B,EAAE,MAAM,CAAC;IACpC,sBAAsB,EAAE,OAAO,CAAC;IAChC,qCAAqC,EAAE,MAAM,CAAC;IAC9C,qCAAqC,EAAE,MAAM,CAAC;IAC9C,4BAA4B,EAAE,MAAM,CAAC;IACrC,yBAAyB,EAAE,MAAM,CAAC;IAClC,wCAAwC,EAAE,MAAM,CAAC;CAElD;AAED,eAAO,MAAM,oBAAoB,EAAE,aAelC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,kBAAkB,CAAC,aAAa,CAiFnE,CAAC"}
package/dest/config.js CHANGED
@@ -1,4 +1,4 @@
1
- import { bigintConfigHelper, booleanConfigHelper, numberConfigHelper } from '@aztec/foundation/config';
1
+ import { bigintConfigHelper, booleanConfigHelper, floatConfigHelper, numberConfigHelper } from '@aztec/foundation/config';
2
2
  import { EthAddress } from '@aztec/foundation/eth-address';
3
3
  export var Offense = /*#__PURE__*/ function(Offense) {
4
4
  Offense[Offense["UNKNOWN"] = 0] = "UNKNOWN";
@@ -97,13 +97,21 @@ export const slasherConfigMappings = {
97
97
  },
98
98
  slashInactivityCreateTargetPercentage: {
99
99
  env: 'SLASH_INACTIVITY_CREATE_TARGET_PERCENTAGE',
100
- description: 'Missed attestation percentage to trigger creation of inactivity slash payload (0-100).',
101
- ...numberConfigHelper(DefaultSlasherConfig.slashInactivityCreateTargetPercentage)
100
+ description: 'Missed attestation percentage to trigger creation of inactivity slash payload (0, 1]. Must be greater than 0',
101
+ ...floatConfigHelper(DefaultSlasherConfig.slashInactivityCreateTargetPercentage, (v)=>{
102
+ if (v <= 0 || v > 1) {
103
+ throw new RangeError(`SLASH_INACTIVITY_CREATE_TARGET_PERCENTAGE out of range. Expected (0, 1] got ${v}`);
104
+ }
105
+ })
102
106
  },
103
107
  slashInactivitySignalTargetPercentage: {
104
108
  env: 'SLASH_INACTIVITY_SIGNAL_TARGET_PERCENTAGE',
105
- description: 'Missed attestation percentage to trigger voting for an inactivity slash payload (0-100).',
106
- ...numberConfigHelper(DefaultSlasherConfig.slashInactivitySignalTargetPercentage)
109
+ description: 'Missed attestation percentage to trigger voting for an inactivity slash payload (0, 1]. Must be greater than 0',
110
+ ...floatConfigHelper(DefaultSlasherConfig.slashInactivitySignalTargetPercentage, (v)=>{
111
+ if (v <= 0 || v > 1) {
112
+ throw new RangeError(`SLASH_INACTIVITY_SIGNAL_TARGET_PERCENTAGE out of range. Expected (0, 1] got ${v}`);
113
+ }
114
+ })
107
115
  },
108
116
  slashInactivityCreatePenalty: {
109
117
  env: 'SLASH_INACTIVITY_CREATE_PENALTY',
@@ -1 +1 @@
1
- {"version":3,"file":"slasher_client.d.ts","sourceRoot":"","sources":["../src/slasher_client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,SAAS,EAGT,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAEL,KAAK,qBAAqB,EAK3B,MAAM,MAAM,CAAC;AAEd,OAAO,EACL,OAAO,EACP,KAAK,aAAa,EAGlB,KAAK,OAAO,EAEb,MAAM,aAAa,CAAC;AAErB,KAAK,qBAAqB,GAAG;IAC3B,cAAc,EAAE,UAAU,CAAC;IAC3B,UAAU,EAAE,SAAS,UAAU,EAAE,CAAC;IAClC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,aAAa;IA+Bf,MAAM,EAAE,aAAa;IAC5B,SAAS,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,OAAO,eAAe,EAAE,wBAAwB,CAAC;IACvG,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,GAAG;IApCb,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,gBAAgB,CAAsB;IAC9C,OAAO,CAAC,qBAAqB,CAAS;WAEzB,GAAG,CACd,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,eAAe,GAAG,qBAAqB,CAAC,EACzF,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,YAAY;gBAqBnB,MAAM,EAAE,aAAa,EAClB,oBAAoB,EAAE,qBAAqB,CAAC,OAAO,eAAe,EAAE,wBAAwB,CAAC,EAC/F,gBAAgB,EAAE,wBAAwB,EAC1C,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,YAAY,EAC1B,GAAG,yCAA0B;IAOhC,KAAK;IAoBZ;;;OAGG;IACU,IAAI;IAeV,sBAAsB;IAK7B;;;;;;;OAOG;IACI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC;IAYlD;;;;;OAKG;IACI,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAoB5E;;;;;;OAMG;IACI,oBAAoB,IAAI,qBAAqB,EAAE;IAMtD;;;;;;;;OAQG;IACH,SAAS,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE;IAiB1F;;;;OAIG;IACH,OAAO,CAAC,WAAW;IA4DnB;;;;;;;;OAQG;IACH,OAAO,CAAC,uBAAuB;IAc/B;;;;;OAKG;IACH,OAAO,CAAE,gCAAgC;IAezC,OAAO,CAAC,8BAA8B;IAgBtC;;;;OAIG;YACW,mBAAmB;IAgBjC;;;;;;;OAOG;YACW,mBAAmB;IAqBjC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAO7B;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAM7B;;;;;;OAMG;YACW,mBAAmB;YA4BnB,uBAAuB;CAUtC"}
1
+ {"version":3,"file":"slasher_client.d.ts","sourceRoot":"","sources":["../src/slasher_client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,SAAS,EAGT,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAEL,KAAK,qBAAqB,EAK3B,MAAM,MAAM,CAAC;AAEd,OAAO,EACL,OAAO,EACP,KAAK,aAAa,EAGlB,KAAK,OAAO,EAEb,MAAM,aAAa,CAAC;AAErB,KAAK,qBAAqB,GAAG;IAC3B,cAAc,EAAE,UAAU,CAAC;IAC3B,UAAU,EAAE,SAAS,UAAU,EAAE,CAAC;IAClC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,aAAa;IA+Bf,MAAM,EAAE,aAAa;IAC5B,SAAS,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,OAAO,eAAe,EAAE,wBAAwB,CAAC;IACvG,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,GAAG;IApCb,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,gBAAgB,CAAsB;IAC9C,OAAO,CAAC,qBAAqB,CAAS;WAEzB,GAAG,CACd,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,eAAe,GAAG,qBAAqB,CAAC,EACzF,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,YAAY;gBAqBnB,MAAM,EAAE,aAAa,EAClB,oBAAoB,EAAE,qBAAqB,CAAC,OAAO,eAAe,EAAE,wBAAwB,CAAC,EAC/F,gBAAgB,EAAE,wBAAwB,EAC1C,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,YAAY,EAC1B,GAAG,yCAA0B;IAOhC,KAAK;IAoBZ;;;OAGG;IACU,IAAI;IAeV,sBAAsB;IAK7B;;;;;;;OAOG;IACI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC;IAYlD;;;;;OAKG;IACI,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAoB5E;;;;;;OAMG;IACI,oBAAoB,IAAI,qBAAqB,EAAE;IAMtD;;;;;;;;OAQG;IACH,SAAS,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE;IAiB1F;;;;OAIG;IACH,OAAO,CAAC,WAAW;IA4DnB;;;;;;;;OAQG;IACH,OAAO,CAAC,uBAAuB;IAc/B;;;;;OAKG;IACH,OAAO,CAAE,gCAAgC;IAezC,OAAO,CAAC,8BAA8B;IAgBtC;;;;OAIG;YACW,mBAAmB;IAgBjC;;;;;;;OAOG;YACW,mBAAmB;IAqBjC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAO7B;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAM7B;;;;;;OAMG;YACW,mBAAmB;YAkCnB,uBAAuB;CAUtC"}
@@ -369,7 +369,14 @@ import { WANT_TO_SLASH_EVENT, bigIntToOffense } from './config.js';
369
369
  }
370
370
  const nextRound = round + 1n;
371
371
  this.log.info(`Waiting for round ${nextRound} to be reached`);
372
- await this.slashingProposer.waitForRound(nextRound, this.config.slashProposerRoundPollingIntervalSeconds);
372
+ const reached = await this.slashingProposer.waitForRound(nextRound, this.config.slashProposerRoundPollingIntervalSeconds);
373
+ if (!reached) {
374
+ this.log.warn('Round not reached', {
375
+ proposal,
376
+ round
377
+ });
378
+ return;
379
+ }
373
380
  this.log.info('Executing round', {
374
381
  proposal,
375
382
  round
@@ -386,8 +393,7 @@ import { WANT_TO_SLASH_EVENT, bigIntToOffense } from './config.js';
386
393
  });
387
394
  return;
388
395
  } else {
389
- this.log.error('Error executing round', err);
390
- throw err;
396
+ this.log.warn('Error executing round', err);
391
397
  }
392
398
  });
393
399
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/slasher",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -54,19 +54,19 @@
54
54
  ]
55
55
  },
56
56
  "dependencies": {
57
- "@aztec/epoch-cache": "1.0.0",
58
- "@aztec/ethereum": "1.0.0",
59
- "@aztec/foundation": "1.0.0",
60
- "@aztec/l1-artifacts": "1.0.0",
61
- "@aztec/stdlib": "1.0.0",
62
- "@aztec/telemetry-client": "1.0.0",
57
+ "@aztec/epoch-cache": "1.1.0",
58
+ "@aztec/ethereum": "1.1.0",
59
+ "@aztec/foundation": "1.1.0",
60
+ "@aztec/l1-artifacts": "1.1.0",
61
+ "@aztec/stdlib": "1.1.0",
62
+ "@aztec/telemetry-client": "1.1.0",
63
63
  "source-map-support": "^0.5.21",
64
64
  "tslib": "^2.4.0",
65
65
  "viem": "2.23.7",
66
66
  "zod": "^3.23.8"
67
67
  },
68
68
  "devDependencies": {
69
- "@aztec/aztec.js": "1.0.0",
69
+ "@aztec/aztec.js": "1.1.0",
70
70
  "@jest/globals": "^30.0.0",
71
71
  "@types/jest": "^30.0.0",
72
72
  "@types/node": "^22.15.17",
package/src/config.ts CHANGED
@@ -1,5 +1,10 @@
1
1
  import type { ConfigMappingsType } from '@aztec/foundation/config';
2
- import { bigintConfigHelper, booleanConfigHelper, numberConfigHelper } from '@aztec/foundation/config';
2
+ import {
3
+ bigintConfigHelper,
4
+ booleanConfigHelper,
5
+ floatConfigHelper,
6
+ numberConfigHelper,
7
+ } from '@aztec/foundation/config';
3
8
  import { EthAddress } from '@aztec/foundation/eth-address';
4
9
  import type { TypedEventEmitter } from '@aztec/foundation/types';
5
10
 
@@ -70,8 +75,8 @@ export interface SlasherConfig {
70
75
  slashInvalidBlockPenalty: bigint;
71
76
  slashInvalidBlockMaxPenalty: bigint;
72
77
  slashInactivityEnabled: boolean;
73
- slashInactivityCreateTargetPercentage: number; // 0-1, 0.9 means 90%
74
- slashInactivitySignalTargetPercentage: number; // 0-1, 0.6 means 60%
78
+ slashInactivityCreateTargetPercentage: number; // 0-1, 0.9 means 90%. Must be greater than 0
79
+ slashInactivitySignalTargetPercentage: number; // 0-1, 0.6 means 60%. Must be greater than 0
75
80
  slashInactivityCreatePenalty: bigint;
76
81
  slashInactivityMaxPenalty: bigint;
77
82
  slashProposerRoundPollingIntervalSeconds: number;
@@ -144,13 +149,23 @@ export const slasherConfigMappings: ConfigMappingsType<SlasherConfig> = {
144
149
  },
145
150
  slashInactivityCreateTargetPercentage: {
146
151
  env: 'SLASH_INACTIVITY_CREATE_TARGET_PERCENTAGE',
147
- description: 'Missed attestation percentage to trigger creation of inactivity slash payload (0-100).',
148
- ...numberConfigHelper(DefaultSlasherConfig.slashInactivityCreateTargetPercentage),
152
+ description:
153
+ 'Missed attestation percentage to trigger creation of inactivity slash payload (0, 1]. Must be greater than 0',
154
+ ...floatConfigHelper(DefaultSlasherConfig.slashInactivityCreateTargetPercentage, v => {
155
+ if (v <= 0 || v > 1) {
156
+ throw new RangeError(`SLASH_INACTIVITY_CREATE_TARGET_PERCENTAGE out of range. Expected (0, 1] got ${v}`);
157
+ }
158
+ }),
149
159
  },
150
160
  slashInactivitySignalTargetPercentage: {
151
161
  env: 'SLASH_INACTIVITY_SIGNAL_TARGET_PERCENTAGE',
152
- description: 'Missed attestation percentage to trigger voting for an inactivity slash payload (0-100).',
153
- ...numberConfigHelper(DefaultSlasherConfig.slashInactivitySignalTargetPercentage),
162
+ description:
163
+ 'Missed attestation percentage to trigger voting for an inactivity slash payload (0, 1]. Must be greater than 0',
164
+ ...floatConfigHelper(DefaultSlasherConfig.slashInactivitySignalTargetPercentage, v => {
165
+ if (v <= 0 || v > 1) {
166
+ throw new RangeError(`SLASH_INACTIVITY_SIGNAL_TARGET_PERCENTAGE out of range. Expected (0, 1] got ${v}`);
167
+ }
168
+ }),
154
169
  },
155
170
  slashInactivityCreatePenalty: {
156
171
  env: 'SLASH_INACTIVITY_CREATE_PENALTY',
@@ -449,7 +449,14 @@ export class SlasherClient {
449
449
 
450
450
  const nextRound = round + 1n;
451
451
  this.log.info(`Waiting for round ${nextRound} to be reached`);
452
- await this.slashingProposer.waitForRound(nextRound, this.config.slashProposerRoundPollingIntervalSeconds);
452
+ const reached = await this.slashingProposer.waitForRound(
453
+ nextRound,
454
+ this.config.slashProposerRoundPollingIntervalSeconds,
455
+ );
456
+ if (!reached) {
457
+ this.log.warn('Round not reached', { proposal, round });
458
+ return;
459
+ }
453
460
  this.log.info('Executing round', { proposal, round });
454
461
 
455
462
  await this.slashingProposer
@@ -462,8 +469,7 @@ export class SlasherClient {
462
469
  this.log.debug('Round already executed', { round });
463
470
  return;
464
471
  } else {
465
- this.log.error('Error executing round', err);
466
- throw err;
472
+ this.log.warn('Error executing round', err);
467
473
  }
468
474
  });
469
475
  }