From a54c54917d51ee254ad04ec700864d71d3dbb4f5 Mon Sep 17 00:00:00 2001 From: Frederik Bolding Date: Fri, 14 Mar 2025 14:34:32 +0100 Subject: [PATCH 1/2] perf: Tweak precompute window size for secp256k1 --- src/curves/secp256k1.ts | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/curves/secp256k1.ts b/src/curves/secp256k1.ts index d4a59947..63053f8b 100644 --- a/src/curves/secp256k1.ts +++ b/src/curves/secp256k1.ts @@ -19,10 +19,28 @@ export const isValidPrivateKey = (privateKey: Uint8Array): boolean => { return secp256k1.utils.isValidPrivateKey(privateKey); }; -export const getPublicKey = ( +const getGetPublicKey = (): (( privateKey: Uint8Array, - compressed = false, -): Uint8Array => secp256k1.getPublicKey(privateKey, compressed); + compressed?: boolean, +) => Uint8Array) => { + let hasSetWindowSize = false; + + const getPublicKey = ( + privateKey: Uint8Array, + compressed = false, + ): Uint8Array => { + if (!hasSetWindowSize) { + secp256k1.ProjectivePoint.BASE._setWindowSize(4); + hasSetWindowSize = true; + } + return secp256k1.getPublicKey(privateKey, compressed); + }; + + return getPublicKey; +}; + + +export const getPublicKey = getGetPublicKey(); export const publicAdd = ( publicKey: Uint8Array, From 89374f30def7acb40955ca86acdb3cf0d0e017c1 Mon Sep 17 00:00:00 2001 From: Frederik Bolding Date: Fri, 14 Mar 2025 14:38:59 +0100 Subject: [PATCH 2/2] Fix lint --- src/curves/secp256k1.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/curves/secp256k1.ts b/src/curves/secp256k1.ts index 63053f8b..bb16f2a6 100644 --- a/src/curves/secp256k1.ts +++ b/src/curves/secp256k1.ts @@ -39,7 +39,6 @@ const getGetPublicKey = (): (( return getPublicKey; }; - export const getPublicKey = getGetPublicKey(); export const publicAdd = (