From 63240bb0ef81495fed50a9c6ff55fcc946b48ebc Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Fri, 22 May 2026 23:00:14 -0700 Subject: [PATCH] Use typed array for blake validate results. --- src/lib/validate/index.ts | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/lib/validate/index.ts b/src/lib/validate/index.ts index 5b31053..198ca6e 100644 --- a/src/lib/validate/index.ts +++ b/src/lib/validate/index.ts @@ -35,10 +35,10 @@ const blake2b_sigma: readonly (readonly number[])[] = Object.freeze([ const blake2b_param = 0x01010008n // Initialize CPU -const v: BigUint64Array = new BigUint64Array(16) -const m: BigUint64Array = new BigUint64Array(16) +const v: BigUint64Array = new BigUint64Array(16) +const m: BigUint64Array = new BigUint64Array(16) const mView: DataView = new DataView(m.buffer) -let result: bigint = 0n +const result: BigUint64Array = new BigUint64Array(1) function G (a: number, b: number, c: number, d: number, x: number, y: number): void { v[a] += v[b] + m[x] @@ -69,7 +69,7 @@ function ROUND (i: number): void { function init (seed: BigUint64Array, hash: BigUint64Array): void { // Reset buffers before each calculation - result = 0n + result[0] = 0n for (let i = 0; i < 8; i++) { v[i] = blake2b_IV[i] v[i + 8] = blake2b_IV[i] @@ -90,7 +90,7 @@ function blake2b (work: Uint8Array, hash: Uint8Array): void { for (let i = 0; i < 12; i++) { ROUND(i) } - result = (blake2b_IV[0] ^ 0x01010008n ^ v[0] ^ v[8]) + result[0] = (blake2b_IV[0] ^ 0x01010008n ^ v[0] ^ v[8]) } function log (work: Uint8Array, hash: Uint8Array, difficulty: bigint): void { @@ -98,7 +98,7 @@ function log (work: Uint8Array, hash: Uint8Array, diff LOG: logger.log('NanoPow CPU work_validate', 'work', BytesToHex(work.buffer)) LOG: logger.log('NanoPow CPU work_validate', 'hash', BytesToHex(hash.buffer)) LOG: logger.log('NanoPow CPU work_validate', 'difficulty', difficulty.toString(16).padStart(16, '0')) - LOG: logger.log('NanoPow CPU work_validate', 'result', result.toString(16).padStart(16, '0')) + LOG: logger.log('NanoPow CPU work_validate', 'result', BytesToHex(result.buffer, 16)) LOG: logger.groupEnd('NanoPow CPU work_validate') } @@ -109,10 +109,10 @@ function validate (work: Uint8Array, hash: Uint8Array, return { hash: BytesToHex(hash.buffer, 64), work: BytesToHex(work.buffer, 16), - difficulty: result.toString(16).padStart(16, '0'), - valid: (result >= difficulty) ? '1' : '0', - valid_all: (result >= SEND) ? '1' : '0', - valid_receive: (result >= RECEIVE) ? '1' : '0' + difficulty: BytesToHex(result.buffer, 16), + valid: (result[0] >= difficulty) ? '1' : '0', + valid_all: (result[0] >= SEND) ? '1' : '0', + valid_receive: (result[0] >= RECEIVE) ? '1' : '0' } } -- 2.52.0