@aztec/validator-client 2.1.0-rc.29 → 2.1.0-rc.30

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":"web3signer_key_store.d.ts","sourceRoot":"","sources":["../../src/key_store/web3signer_key_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAE5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAEhD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,iBAAiB;IAExD,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,OAAO;gBADP,SAAS,EAAE,UAAU,EAAE,EACvB,OAAO,EAAE,MAAM;IAGzB;;;;;OAKG;IACI,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAO5C;;;;OAIG;IACI,YAAY,IAAI,UAAU,EAAE;IAInC;;;;OAIG;IACU,aAAa,CAAC,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAOhF;;;;;;OAMG;IACU,wBAAwB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC;IAQ9G;;;;;OAKG;IACU,WAAW,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAKjE;;;;;;OAMG;IACU,sBAAsB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;IAO/F;;;;;OAKG;YACW,sBAAsB;YAiDtB,+BAA+B;CA6C9C"}
1
+ {"version":3,"file":"web3signer_key_store.d.ts","sourceRoot":"","sources":["../../src/key_store/web3signer_key_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAE5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAEhD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,iBAAiB;IAExD,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,OAAO;gBADP,SAAS,EAAE,UAAU,EAAE,EACvB,OAAO,EAAE,MAAM;IAGzB;;;;;OAKG;IACI,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAO5C;;;;OAIG;IACI,YAAY,IAAI,UAAU,EAAE;IAInC;;;;OAIG;IACI,aAAa,CAAC,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAI1E;;;;;;OAMG;IACU,wBAAwB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC;IAQ9G;;;;;OAKG;IACI,WAAW,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAI3D;;;;;;OAMG;IACU,sBAAsB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;IAO/F;;;;;OAKG;YACW,sBAAsB;YAiDtB,+BAA+B;CA6C9C"}
@@ -1,3 +1,4 @@
1
+ import { normalizeSignature } from '@aztec/foundation/crypto';
1
2
  import { Signature } from '@aztec/foundation/eth-signature';
2
3
  /**
3
4
  * Web3Signer Key Store
@@ -33,9 +34,8 @@ import { Signature } from '@aztec/foundation/eth-signature';
33
34
  * Sign EIP-712 typed data with all keystore addresses
34
35
  * @param typedData - The complete EIP-712 typed data structure (domain, types, primaryType, message)
35
36
  * @return signatures
36
- */ async signTypedData(typedData) {
37
- const signatures = await Promise.all(this.addresses.map((address)=>this.makeJsonRpcSignTypedDataRequest(address, typedData)));
38
- return signatures;
37
+ */ signTypedData(typedData) {
38
+ return Promise.all(this.addresses.map((address)=>this.makeJsonRpcSignTypedDataRequest(address, typedData)));
39
39
  }
40
40
  /**
41
41
  * Sign EIP-712 typed data with a specific address
@@ -54,9 +54,8 @@ import { Signature } from '@aztec/foundation/eth-signature';
54
54
  *
55
55
  * @param message - The message to sign
56
56
  * @return signatures
57
- */ async signMessage(message) {
58
- const signatures = await Promise.all(this.addresses.map((address)=>this.makeJsonRpcSignRequest(address, message)));
59
- return signatures;
57
+ */ signMessage(message) {
58
+ return Promise.all(this.addresses.map((address)=>this.makeJsonRpcSignRequest(address, message)));
60
59
  }
61
60
  /**
62
61
  * Sign a message with a specific address using EIP-191 prefix
@@ -112,7 +111,7 @@ import { Signature } from '@aztec/foundation/eth-signature';
112
111
  signatureHex = '0x' + signatureHex;
113
112
  }
114
113
  // Parse the signature from the hex string
115
- return Signature.fromString(signatureHex);
114
+ return normalizeSignature(Signature.fromString(signatureHex));
116
115
  }
117
116
  async makeJsonRpcSignTypedDataRequest(address, typedData) {
118
117
  const url = this.baseUrl;
@@ -148,6 +147,6 @@ import { Signature } from '@aztec/foundation/eth-signature';
148
147
  if (!signatureHex.startsWith('0x')) {
149
148
  signatureHex = '0x' + signatureHex;
150
149
  }
151
- return Signature.fromString(signatureHex);
150
+ return normalizeSignature(Signature.fromString(signatureHex));
152
151
  }
153
152
  }
package/dest/metrics.d.ts CHANGED
@@ -12,7 +12,7 @@ export declare class ValidatorMetrics {
12
12
  recordReex(time: number, txs: number, mManaTotal: number): void;
13
13
  recordFailedReexecution(proposal: BlockProposal): void;
14
14
  incSuccessfulAttestations(num: number): void;
15
- incFailedAttestationsBadProposal(num: number, reason: string): void;
16
- incFailedAttestationsNodeIssue(num: number, reason: string): void;
15
+ incFailedAttestationsBadProposal(num: number, reason: string, inCommittee: boolean): void;
16
+ incFailedAttestationsNodeIssue(num: number, reason: string, inCommittee: boolean): void;
17
17
  }
18
18
  //# sourceMappingURL=metrics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAIL,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,wBAAwB,CAAgB;IAChD,OAAO,CAAC,2BAA2B,CAAgB;IACnD,OAAO,CAAC,kCAAkC,CAAgB;IAC1D,OAAO,CAAC,gCAAgC,CAAgB;IAExD,OAAO,CAAC,QAAQ,CAAY;IAC5B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,YAAY,CAAY;gBAEpB,eAAe,EAAE,eAAe;IAiDrC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAMxD,uBAAuB,CAAC,QAAQ,EAAE,aAAa;IAQ/C,yBAAyB,CAAC,GAAG,EAAE,MAAM;IAIrC,gCAAgC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAM5D,8BAA8B,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAKlE"}
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAIL,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,wBAAwB,CAAgB;IAChD,OAAO,CAAC,2BAA2B,CAAgB;IACnD,OAAO,CAAC,kCAAkC,CAAgB;IAC1D,OAAO,CAAC,gCAAgC,CAAgB;IAExD,OAAO,CAAC,QAAQ,CAAY;IAC5B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,YAAY,CAAY;gBAEpB,eAAe,EAAE,eAAe;IAiDrC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAMxD,uBAAuB,CAAC,QAAQ,EAAE,aAAa;IAQ/C,yBAAyB,CAAC,GAAG,EAAE,MAAM;IAIrC,gCAAgC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO;IAOlF,8BAA8B,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO;CAMxF"}
package/dest/metrics.js CHANGED
@@ -57,14 +57,16 @@ export class ValidatorMetrics {
57
57
  incSuccessfulAttestations(num) {
58
58
  this.successfulAttestationsCount.add(num);
59
59
  }
60
- incFailedAttestationsBadProposal(num, reason) {
60
+ incFailedAttestationsBadProposal(num, reason, inCommittee) {
61
61
  this.failedAttestationsBadProposalCount.add(num, {
62
- [Attributes.ERROR_TYPE]: reason
62
+ [Attributes.ERROR_TYPE]: reason,
63
+ [Attributes.IS_COMMITTEE_MEMBER]: inCommittee
63
64
  });
64
65
  }
65
- incFailedAttestationsNodeIssue(num, reason) {
66
+ incFailedAttestationsNodeIssue(num, reason, inCommittee) {
66
67
  this.failedAttestationsNodeIssueCount.add(num, {
67
- [Attributes.ERROR_TYPE]: reason
68
+ [Attributes.ERROR_TYPE]: reason,
69
+ [Attributes.IS_COMMITTEE_MEMBER]: inCommittee
68
70
  });
69
71
  }
70
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAI9C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE1D,OAAO,EAAoC,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,+BAA+B,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AACnH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEhF,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAsB,MAAM,yBAAyB,CAAC;AAGhG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAEhD,OAAO,EAAE,oBAAoB,EAA6C,MAAM,6BAA6B,CAAC;AAE9G,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;oCAgBrB,UAAU,cAAc;AAH9E;;GAEG;AACH,qBAAa,eAAgB,SAAQ,oBAA2C,YAAW,SAAS,EAAE,OAAO;IAiBzG,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IAEpB,OAAO,CAAC,GAAG;IAvBb,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,OAAO,CAAmB;IAGlC,OAAO,CAAC,qBAAqB,CAAS;IAGtC,OAAO,CAAC,gBAAgB,CAAC,CAAgB;IAEzC,OAAO,CAAC,+BAA+B,CAAqB;IAC5D,OAAO,CAAC,oBAAoB,CAAiB;IAE7C,OAAO,CAAC,wBAAwB,CAA0B;IAE1D,SAAS,aACC,QAAQ,EAAE,mBAAmB,EAC7B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,GAAG,EACd,oBAAoB,EAAE,oBAAoB,EAC1C,MAAM,EAAE,yBAAyB,EACjC,YAAY,GAAE,YAAiC,EACvD,SAAS,GAAE,eAAsC,EACzC,GAAG,yCAA4B;WAe3B,6BAA6B,CAAC,eAAe,EAAE,eAAe;YAoB9D,0BAA0B;IA2BxC,MAAM,CAAC,GAAG,CACR,MAAM,EAAE,yBAAyB,EACjC,YAAY,EAAE,qBAAqB,EACnC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,GAAG,EACd,WAAW,EAAE,aAAa,EAC1B,mBAAmB,EAAE,mBAAmB,EACxC,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,eAAe,EAChC,YAAY,GAAE,YAAiC,EAC/C,SAAS,GAAE,eAAsC;IA+B5C,qBAAqB;IAMrB,uBAAuB;IAKvB,qBAAqB,CAC1B,QAAQ,EAAE,aAAa,EACvB,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,GAAG,EAAE,EACV,cAAc,EAAE,EAAE,EAAE,GACnB,OAAO,CAAC,GAAG,CAAC;IAIR,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,mBAAmB;IAI1D,sBAAsB,CAAC,QAAQ,EAAE,UAAU,GAAG,UAAU;IAIxD,0BAA0B,CAAC,QAAQ,EAAE,UAAU,GAAG,YAAY;IAI9D,SAAS,IAAI,yBAAyB;IAItC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,yBAAyB,CAAC;IAIjD,KAAK;IAwBL,IAAI;IAIjB,0CAA0C;IAC7B,gBAAgB;IAgBvB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,GAAG,SAAS,CAAC;IAgFhH,OAAO,CAAC,iBAAiB;IA2BnB,mBAAmB,CACvB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,EAAE,EACX,cAAc,EAAE,cAAc,EAC9B,GAAG,EAAE,EAAE,EAAE,EACT,eAAe,EAAE,UAAU,GAAG,SAAS,EACvC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAkB/B,sBAAsB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D,0BAA0B,CAC9B,sBAAsB,EAAE,+BAA+B,EACvD,QAAQ,EAAE,UAAU,GAAG,SAAS,GAC/B,OAAO,CAAC,SAAS,CAAC;IAIf,sBAAsB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAO5E,mBAAmB,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAmEnG,mCAAmC;YASnC,iBAAiB;CAsBhC"}
package/dest/validator.js CHANGED
@@ -182,22 +182,20 @@ const SLASHABLE_BLOCK_PROPOSAL_VALIDATION_RESULT = [
182
182
  const validationResult = await this.blockProposalHandler.handleBlockProposal(proposal, proposalSender, !!shouldReexecute);
183
183
  if (!validationResult.isValid) {
184
184
  this.log.warn(`Proposal validation failed: ${validationResult.reason}`, proposalInfo);
185
- // Only track attestation failure metrics if we're actually in the committee
186
- if (partOfCommittee) {
187
- const reason = validationResult.reason || 'unknown';
188
- // Classify failure reason: bad proposal vs node issue
189
- const badProposalReasons = [
190
- 'invalid_proposal',
191
- 'state_mismatch',
192
- 'failed_txs',
193
- 'in_hash_mismatch',
194
- 'parent_block_wrong_slot'
195
- ];
196
- if (badProposalReasons.includes(reason)) {
197
- this.metrics.incFailedAttestationsBadProposal(1, reason);
198
- } else {
199
- this.metrics.incFailedAttestationsNodeIssue(1, reason);
200
- }
185
+ const reason = validationResult.reason || 'unknown';
186
+ // Classify failure reason: bad proposal vs node issue
187
+ const badProposalReasons = [
188
+ 'invalid_proposal',
189
+ 'state_mismatch',
190
+ 'failed_txs',
191
+ 'in_hash_mismatch',
192
+ 'parent_block_wrong_slot'
193
+ ];
194
+ if (badProposalReasons.includes(reason)) {
195
+ this.metrics.incFailedAttestationsBadProposal(1, reason, partOfCommittee);
196
+ } else {
197
+ // Node issues so we can't attest
198
+ this.metrics.incFailedAttestationsNodeIssue(1, reason, partOfCommittee);
201
199
  }
202
200
  // Slash invalid block proposals (can happen even when not in committee)
203
201
  if (validationResult.reason && SLASHABLE_BLOCK_PROPOSAL_VALIDATION_RESULT.includes(validationResult.reason) && slashBroadcastedInvalidBlockPenalty > 0n) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/validator-client",
3
- "version": "2.1.0-rc.29",
3
+ "version": "2.1.0-rc.30",
4
4
  "main": "dest/index.js",
5
5
  "type": "module",
6
6
  "exports": {
@@ -64,16 +64,16 @@
64
64
  ]
65
65
  },
66
66
  "dependencies": {
67
- "@aztec/constants": "2.1.0-rc.29",
68
- "@aztec/epoch-cache": "2.1.0-rc.29",
69
- "@aztec/ethereum": "2.1.0-rc.29",
70
- "@aztec/foundation": "2.1.0-rc.29",
71
- "@aztec/node-keystore": "2.1.0-rc.29",
72
- "@aztec/p2p": "2.1.0-rc.29",
73
- "@aztec/prover-client": "2.1.0-rc.29",
74
- "@aztec/slasher": "2.1.0-rc.29",
75
- "@aztec/stdlib": "2.1.0-rc.29",
76
- "@aztec/telemetry-client": "2.1.0-rc.29",
67
+ "@aztec/constants": "2.1.0-rc.30",
68
+ "@aztec/epoch-cache": "2.1.0-rc.30",
69
+ "@aztec/ethereum": "2.1.0-rc.30",
70
+ "@aztec/foundation": "2.1.0-rc.30",
71
+ "@aztec/node-keystore": "2.1.0-rc.30",
72
+ "@aztec/p2p": "2.1.0-rc.30",
73
+ "@aztec/prover-client": "2.1.0-rc.30",
74
+ "@aztec/slasher": "2.1.0-rc.30",
75
+ "@aztec/stdlib": "2.1.0-rc.30",
76
+ "@aztec/telemetry-client": "2.1.0-rc.30",
77
77
  "koa": "^2.16.1",
78
78
  "koa-router": "^13.1.1",
79
79
  "tslib": "^2.4.0",
@@ -1,4 +1,5 @@
1
1
  import type { Buffer32 } from '@aztec/foundation/buffer';
2
+ import { normalizeSignature } from '@aztec/foundation/crypto';
2
3
  import { EthAddress } from '@aztec/foundation/eth-address';
3
4
  import { Signature } from '@aztec/foundation/eth-signature';
4
5
 
@@ -45,11 +46,8 @@ export class Web3SignerKeyStore implements ValidatorKeyStore {
45
46
  * @param typedData - The complete EIP-712 typed data structure (domain, types, primaryType, message)
46
47
  * @return signatures
47
48
  */
48
- public async signTypedData(typedData: TypedDataDefinition): Promise<Signature[]> {
49
- const signatures = await Promise.all(
50
- this.addresses.map(address => this.makeJsonRpcSignTypedDataRequest(address, typedData)),
51
- );
52
- return signatures;
49
+ public signTypedData(typedData: TypedDataDefinition): Promise<Signature[]> {
50
+ return Promise.all(this.addresses.map(address => this.makeJsonRpcSignTypedDataRequest(address, typedData)));
53
51
  }
54
52
 
55
53
  /**
@@ -73,9 +71,8 @@ export class Web3SignerKeyStore implements ValidatorKeyStore {
73
71
  * @param message - The message to sign
74
72
  * @return signatures
75
73
  */
76
- public async signMessage(message: Buffer32): Promise<Signature[]> {
77
- const signatures = await Promise.all(this.addresses.map(address => this.makeJsonRpcSignRequest(address, message)));
78
- return signatures;
74
+ public signMessage(message: Buffer32): Promise<Signature[]> {
75
+ return Promise.all(this.addresses.map(address => this.makeJsonRpcSignRequest(address, message)));
79
76
  }
80
77
 
81
78
  /**
@@ -144,7 +141,7 @@ export class Web3SignerKeyStore implements ValidatorKeyStore {
144
141
  }
145
142
 
146
143
  // Parse the signature from the hex string
147
- return Signature.fromString(signatureHex as `0x${string}`);
144
+ return normalizeSignature(Signature.fromString(signatureHex as `0x${string}`));
148
145
  }
149
146
 
150
147
  private async makeJsonRpcSignTypedDataRequest(
@@ -190,6 +187,6 @@ export class Web3SignerKeyStore implements ValidatorKeyStore {
190
187
  signatureHex = '0x' + signatureHex;
191
188
  }
192
189
 
193
- return Signature.fromString(signatureHex as `0x${string}`);
190
+ return normalizeSignature(Signature.fromString(signatureHex as `0x${string}`));
194
191
  }
195
192
  }
package/src/metrics.ts CHANGED
@@ -85,15 +85,17 @@ export class ValidatorMetrics {
85
85
  this.successfulAttestationsCount.add(num);
86
86
  }
87
87
 
88
- public incFailedAttestationsBadProposal(num: number, reason: string) {
88
+ public incFailedAttestationsBadProposal(num: number, reason: string, inCommittee: boolean) {
89
89
  this.failedAttestationsBadProposalCount.add(num, {
90
90
  [Attributes.ERROR_TYPE]: reason,
91
+ [Attributes.IS_COMMITTEE_MEMBER]: inCommittee,
91
92
  });
92
93
  }
93
94
 
94
- public incFailedAttestationsNodeIssue(num: number, reason: string) {
95
+ public incFailedAttestationsNodeIssue(num: number, reason: string, inCommittee: boolean) {
95
96
  this.failedAttestationsNodeIssueCount.add(num, {
96
97
  [Attributes.ERROR_TYPE]: reason,
98
+ [Attributes.IS_COMMITTEE_MEMBER]: inCommittee,
97
99
  });
98
100
  }
99
101
  }
package/src/validator.ts CHANGED
@@ -289,23 +289,21 @@ export class ValidatorClient extends (EventEmitter as new () => WatcherEmitter)
289
289
  if (!validationResult.isValid) {
290
290
  this.log.warn(`Proposal validation failed: ${validationResult.reason}`, proposalInfo);
291
291
 
292
- // Only track attestation failure metrics if we're actually in the committee
293
- if (partOfCommittee) {
294
- const reason = validationResult.reason || 'unknown';
295
- // Classify failure reason: bad proposal vs node issue
296
- const badProposalReasons: BlockProposalValidationFailureReason[] = [
297
- 'invalid_proposal',
298
- 'state_mismatch',
299
- 'failed_txs',
300
- 'in_hash_mismatch',
301
- 'parent_block_wrong_slot',
302
- ];
303
-
304
- if (badProposalReasons.includes(reason as BlockProposalValidationFailureReason)) {
305
- this.metrics.incFailedAttestationsBadProposal(1, reason);
306
- } else {
307
- this.metrics.incFailedAttestationsNodeIssue(1, reason);
308
- }
292
+ const reason = validationResult.reason || 'unknown';
293
+ // Classify failure reason: bad proposal vs node issue
294
+ const badProposalReasons: BlockProposalValidationFailureReason[] = [
295
+ 'invalid_proposal',
296
+ 'state_mismatch',
297
+ 'failed_txs',
298
+ 'in_hash_mismatch',
299
+ 'parent_block_wrong_slot',
300
+ ];
301
+
302
+ if (badProposalReasons.includes(reason as BlockProposalValidationFailureReason)) {
303
+ this.metrics.incFailedAttestationsBadProposal(1, reason, partOfCommittee);
304
+ } else {
305
+ // Node issues so we can't attest
306
+ this.metrics.incFailedAttestationsNodeIssue(1, reason, partOfCommittee);
309
307
  }
310
308
 
311
309
  // Slash invalid block proposals (can happen even when not in committee)