@aztec/stdlib 2.0.0-nightly.20250827 → 2.0.0-nightly.20250829

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.
@@ -115,7 +115,6 @@ export declare const AztecNodeAdminConfigSchema: z.ZodObject<z.objectUtil.extend
115
115
  slashInactivitySignalTargetPercentage: z.ZodNumber;
116
116
  slashInactivityCreatePenalty: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodBigInt>;
117
117
  slashInactivityMaxPenalty: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodBigInt>;
118
- slashProposerRoundPollingIntervalSeconds: z.ZodNumber;
119
118
  slashProposeInvalidAttestationsPenalty: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodBigInt>;
120
119
  slashProposeInvalidAttestationsMaxPenalty: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodBigInt>;
121
120
  slashAttestDescendantOfInvalidPenalty: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodBigInt>;
@@ -147,7 +146,6 @@ export declare const AztecNodeAdminConfigSchema: z.ZodObject<z.objectUtil.extend
147
146
  slashInactivitySignalTargetPercentage: number;
148
147
  slashInactivityCreatePenalty: bigint;
149
148
  slashInactivityMaxPenalty: bigint;
150
- slashProposerRoundPollingIntervalSeconds: number;
151
149
  slashProposeInvalidAttestationsPenalty: bigint;
152
150
  slashProposeInvalidAttestationsMaxPenalty: bigint;
153
151
  slashAttestDescendantOfInvalidPenalty: bigint;
@@ -209,7 +207,6 @@ export declare const AztecNodeAdminConfigSchema: z.ZodObject<z.objectUtil.extend
209
207
  slashInactivitySignalTargetPercentage: number;
210
208
  slashInactivityCreatePenalty: string | number | bigint;
211
209
  slashInactivityMaxPenalty: string | number | bigint;
212
- slashProposerRoundPollingIntervalSeconds: number;
213
210
  slashProposeInvalidAttestationsPenalty: string | number | bigint;
214
211
  slashProposeInvalidAttestationsMaxPenalty: string | number | bigint;
215
212
  slashAttestDescendantOfInvalidPenalty: string | number | bigint;
@@ -1 +1 @@
1
- {"version":3,"file":"aztec-node-admin.d.ts","sourceRoot":"","sources":["../../src/interfaces/aztec-node-admin.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAE1F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,KAAK,OAAO,EAAiB,KAAK,iBAAiB,EAA2B,MAAM,sBAAsB,CAAC;AACpH,OAAO,EAAE,KAAK,kBAAkB,EAAgC,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,KAAK,eAAe,EAAyB,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,KAAK,aAAa,EAAuB,MAAM,cAAc,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAE3C;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;OAGG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD;;;;OAIG;IACH,UAAU,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtE,+CAA+C;IAC/C,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3B,gDAAgD;IAChD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B,2EAA2E;IAC3E,gBAAgB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAEjD,2DAA2D;IAC3D,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CACzE;AAED,MAAM,MAAM,oBAAoB,GAAG,eAAe,GAAG,YAAY,GAAG,aAAa,GAAG;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9G,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEU,CAAC;AAElD,eAAO,MAAM,uBAAuB,EAAE,YAAY,CAAC,cAAc,CAYhE,CAAC;AAEF,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,OAAO,CAAC,kBAAkB,CAAM,EAC1C,KAAK,sBAAe,GACnB,cAAc,CAMhB"}
1
+ {"version":3,"file":"aztec-node-admin.d.ts","sourceRoot":"","sources":["../../src/interfaces/aztec-node-admin.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAE1F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,KAAK,OAAO,EAAiB,KAAK,iBAAiB,EAA2B,MAAM,sBAAsB,CAAC;AACpH,OAAO,EAAE,KAAK,kBAAkB,EAAgC,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,KAAK,eAAe,EAAyB,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,KAAK,aAAa,EAAuB,MAAM,cAAc,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAE3C;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;OAGG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD;;;;OAIG;IACH,UAAU,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtE,+CAA+C;IAC/C,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3B,gDAAgD;IAChD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B,2EAA2E;IAC3E,gBAAgB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAEjD,2DAA2D;IAC3D,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CACzE;AAED,MAAM,MAAM,oBAAoB,GAAG,eAAe,GAAG,YAAY,GAAG,aAAa,GAAG;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9G,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEU,CAAC;AAElD,eAAO,MAAM,uBAAuB,EAAE,YAAY,CAAC,cAAc,CAYhE,CAAC;AAEF,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,OAAO,CAAC,kBAAkB,CAAM,EAC1C,KAAK,sBAAe,GACnB,cAAc,CAMhB"}
@@ -15,7 +15,6 @@ export interface SlasherConfig {
15
15
  slashInactivitySignalTargetPercentage: number;
16
16
  slashInactivityCreatePenalty: bigint;
17
17
  slashInactivityMaxPenalty: bigint;
18
- slashProposerRoundPollingIntervalSeconds: number;
19
18
  slashProposeInvalidAttestationsPenalty: bigint;
20
19
  slashProposeInvalidAttestationsMaxPenalty: bigint;
21
20
  slashAttestDescendantOfInvalidPenalty: bigint;
@@ -40,7 +39,6 @@ export declare const SlasherConfigSchema: z.ZodObject<{
40
39
  slashInactivitySignalTargetPercentage: z.ZodNumber;
41
40
  slashInactivityCreatePenalty: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodBigInt>;
42
41
  slashInactivityMaxPenalty: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodBigInt>;
43
- slashProposerRoundPollingIntervalSeconds: z.ZodNumber;
44
42
  slashProposeInvalidAttestationsPenalty: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodBigInt>;
45
43
  slashProposeInvalidAttestationsMaxPenalty: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodBigInt>;
46
44
  slashAttestDescendantOfInvalidPenalty: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodBigInt>;
@@ -63,7 +61,6 @@ export declare const SlasherConfigSchema: z.ZodObject<{
63
61
  slashInactivitySignalTargetPercentage: number;
64
62
  slashInactivityCreatePenalty: bigint;
65
63
  slashInactivityMaxPenalty: bigint;
66
- slashProposerRoundPollingIntervalSeconds: number;
67
64
  slashProposeInvalidAttestationsPenalty: bigint;
68
65
  slashProposeInvalidAttestationsMaxPenalty: bigint;
69
66
  slashAttestDescendantOfInvalidPenalty: bigint;
@@ -87,7 +84,6 @@ export declare const SlasherConfigSchema: z.ZodObject<{
87
84
  slashInactivitySignalTargetPercentage: number;
88
85
  slashInactivityCreatePenalty: string | number | bigint;
89
86
  slashInactivityMaxPenalty: string | number | bigint;
90
- slashProposerRoundPollingIntervalSeconds: number;
91
87
  slashProposeInvalidAttestationsPenalty: string | number | bigint;
92
88
  slashProposeInvalidAttestationsMaxPenalty: string | number | bigint;
93
89
  slashAttestDescendantOfInvalidPenalty: string | number | bigint;
@@ -1 +1 @@
1
- {"version":3,"file":"slasher.d.ts","sourceRoot":"","sources":["../../src/interfaces/slasher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,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,mCAAmC,EAAE,OAAO,CAAC;IAC7C,mCAAmC,EAAE,MAAM,CAAC;IAC5C,sCAAsC,EAAE,MAAM,CAAC;IAC/C,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;IACjD,sCAAsC,EAAE,MAAM,CAAC;IAC/C,yCAAyC,EAAE,MAAM,CAAC;IAClD,qCAAqC,EAAE,MAAM,CAAC;IAC9C,wCAAwC,EAAE,MAAM,CAAC;IACjD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,4BAA4B,EAAE,MAAM,CAAC;IACrC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwBE,CAAC"}
1
+ {"version":3,"file":"slasher.d.ts","sourceRoot":"","sources":["../../src/interfaces/slasher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,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,mCAAmC,EAAE,OAAO,CAAC;IAC7C,mCAAmC,EAAE,MAAM,CAAC;IAC5C,sCAAsC,EAAE,MAAM,CAAC;IAC/C,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,sCAAsC,EAAE,MAAM,CAAC;IAC/C,yCAAyC,EAAE,MAAM,CAAC;IAClD,qCAAqC,EAAE,MAAM,CAAC;IAC9C,wCAAwC,EAAE,MAAM,CAAC;IACjD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,4BAA4B,EAAE,MAAM,CAAC;IACrC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuBE,CAAC"}
@@ -14,7 +14,6 @@ export const SlasherConfigSchema = z.object({
14
14
  slashInactivitySignalTargetPercentage: z.number(),
15
15
  slashInactivityCreatePenalty: schemas.BigInt,
16
16
  slashInactivityMaxPenalty: schemas.BigInt,
17
- slashProposerRoundPollingIntervalSeconds: z.number(),
18
17
  slashProposeInvalidAttestationsPenalty: schemas.BigInt,
19
18
  slashProposeInvalidAttestationsMaxPenalty: schemas.BigInt,
20
19
  slashAttestDescendantOfInvalidPenalty: schemas.BigInt,
@@ -1 +1 @@
1
- {"version":3,"file":"tally.d.ts","sourceRoot":"","sources":["../../src/slashing/tally.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAK9D;;;GAGG;AACH,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,OAAO,EAAE,EACnB,UAAU,EAAE,UAAU,EAAE,EAAE,EAC1B,QAAQ,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GACjC,kBAAkB,EAAE,CAgBtB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAU7E"}
1
+ {"version":3,"file":"tally.d.ts","sourceRoot":"","sources":["../../src/slashing/tally.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAK9D;;;GAGG;AACH,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,OAAO,EAAE,EACnB,UAAU,EAAE,UAAU,EAAE,EAAE,EAC1B,QAAQ,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GACjC,kBAAkB,EAAE,CAgBtB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAe7E"}
@@ -29,7 +29,12 @@ import { minBigint, sumBigint } from '@aztec/foundation/bigint';
29
29
  }
30
30
  const buffer = Buffer.alloc(votes.length / 4);
31
31
  for(let i = 0; i < votes.length; i += 4){
32
- const voteByte = votes[i] << 6 | votes[i + 1] << 4 | votes[i + 2] << 2 | votes[i + 3]; // Combine four votes into one byte
32
+ // Encode votes to match Solidity's bit order (LSB to MSB)
33
+ // Bits 0-1: validator at index i
34
+ // Bits 2-3: validator at index i+1
35
+ // Bits 4-5: validator at index i+2
36
+ // Bits 6-7: validator at index i+3
37
+ const voteByte = votes[i] | votes[i + 1] << 2 | votes[i + 2] << 4 | votes[i + 3] << 6;
33
38
  buffer.writeUInt8(voteByte, i / 4);
34
39
  }
35
40
  return buffer;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/stdlib",
3
- "version": "2.0.0-nightly.20250827",
3
+ "version": "2.0.0-nightly.20250829",
4
4
  "type": "module",
5
5
  "inherits": [
6
6
  "../package.common.json",
@@ -69,13 +69,13 @@
69
69
  "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}"
70
70
  },
71
71
  "dependencies": {
72
- "@aztec/bb.js": "2.0.0-nightly.20250827",
73
- "@aztec/blob-lib": "2.0.0-nightly.20250827",
74
- "@aztec/constants": "2.0.0-nightly.20250827",
75
- "@aztec/ethereum": "2.0.0-nightly.20250827",
76
- "@aztec/foundation": "2.0.0-nightly.20250827",
77
- "@aztec/l1-artifacts": "2.0.0-nightly.20250827",
78
- "@aztec/noir-noirc_abi": "2.0.0-nightly.20250827",
72
+ "@aztec/bb.js": "2.0.0-nightly.20250829",
73
+ "@aztec/blob-lib": "2.0.0-nightly.20250829",
74
+ "@aztec/constants": "2.0.0-nightly.20250829",
75
+ "@aztec/ethereum": "2.0.0-nightly.20250829",
76
+ "@aztec/foundation": "2.0.0-nightly.20250829",
77
+ "@aztec/l1-artifacts": "2.0.0-nightly.20250829",
78
+ "@aztec/noir-noirc_abi": "2.0.0-nightly.20250829",
79
79
  "@google-cloud/storage": "^7.15.0",
80
80
  "axios": "^1.9.0",
81
81
  "json-stringify-deterministic": "1.0.12",
@@ -19,7 +19,6 @@ export interface SlasherConfig {
19
19
  slashInactivitySignalTargetPercentage: number; // 0-1, 0.6 means 60%. Must be greater than 0
20
20
  slashInactivityCreatePenalty: bigint;
21
21
  slashInactivityMaxPenalty: bigint;
22
- slashProposerRoundPollingIntervalSeconds: number;
23
22
  slashProposeInvalidAttestationsPenalty: bigint;
24
23
  slashProposeInvalidAttestationsMaxPenalty: bigint;
25
24
  slashAttestDescendantOfInvalidPenalty: bigint;
@@ -45,7 +44,6 @@ export const SlasherConfigSchema = z.object({
45
44
  slashInactivitySignalTargetPercentage: z.number(),
46
45
  slashInactivityCreatePenalty: schemas.BigInt,
47
46
  slashInactivityMaxPenalty: schemas.BigInt,
48
- slashProposerRoundPollingIntervalSeconds: z.number(),
49
47
  slashProposeInvalidAttestationsPenalty: schemas.BigInt,
50
48
  slashProposeInvalidAttestationsMaxPenalty: schemas.BigInt,
51
49
  slashAttestDescendantOfInvalidPenalty: schemas.BigInt,
@@ -44,7 +44,12 @@ export function encodeSlashConsensusVotes(votes: ValidatorSlashVote[]): Buffer {
44
44
  }
45
45
  const buffer = Buffer.alloc(votes.length / 4);
46
46
  for (let i = 0; i < votes.length; i += 4) {
47
- const voteByte = (votes[i] << 6) | (votes[i + 1] << 4) | (votes[i + 2] << 2) | votes[i + 3]; // Combine four votes into one byte
47
+ // Encode votes to match Solidity's bit order (LSB to MSB)
48
+ // Bits 0-1: validator at index i
49
+ // Bits 2-3: validator at index i+1
50
+ // Bits 4-5: validator at index i+2
51
+ // Bits 6-7: validator at index i+3
52
+ const voteByte = votes[i] | (votes[i + 1] << 2) | (votes[i + 2] << 4) | (votes[i + 3] << 6);
48
53
  buffer.writeUInt8(voteByte, i / 4);
49
54
  }
50
55
  return buffer;