@zama-fhe/sdk 2.0.0 → 2.0.1-alpha.1
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.
- package/dist/esm/node/relayer-sdk.node-worker.js +2 -0
- package/dist/esm/node/relayer-sdk.node-worker.js.map +1 -0
- package/package.json +1 -1
- package/dist/esm/relayer-sdk.node-worker.js +0 -2
- package/dist/esm/relayer-sdk.node-worker.js.map +0 -1
- /package/dist/esm/{relayer-sdk.node-worker.d.ts → node/relayer-sdk.node-worker.d.ts} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{c as e,u as t}from"../utils-DlyKooNc.js";import{parentPort as n}from"node:worker_threads";if(!n)throw Error(`This script must be run as a worker thread`);const r=n;let i=null;function a(e,t,n,i){let a={id:e,type:t,success:!0,data:n};r.postMessage(a,i)}function o(e,t,n){let i={id:e,type:t,success:!1,error:n};r.postMessage(i)}async function s(e){let{id:t,type:n,payload:r}=e,{fhevmConfig:s}=r;try{let e=await import(`@zama-fhe/relayer-sdk/node`),r={...s,batchRpcCalls:!1};i=await e.createInstance(r),a(t,n,{initialized:!0})}catch(e){let r=e instanceof Error?e.message:String(e);console.error(`[NodeWorker] Init error:`,r),o(t,n,r)}}function c(e){return typeof e==`boolean`?e?1n:0n:e}function l(e){throw Error(`Unsupported FHE type`)}async function u(e){let{id:t,type:n,payload:r}=e,{values:s,contractAddress:u,userAddress:d}=r;try{if(!i)throw Error(`SDK not initialized. Call NODE_INIT first.`);let e=i.createEncryptedInput(u,d);for(let t of s){let{value:n,type:r}=t;switch(r){case`ebool`:e.addBool(typeof n==`boolean`?n:n!==0n);break;case`euint8`:e.add8(c(n));break;case`euint16`:e.add16(c(n));break;case`euint32`:e.add32(c(n));break;case`euint64`:e.add64(c(n));break;case`euint128`:e.add128(c(n));break;case`euint256`:e.add256(c(n));break;case`eaddress`:e.addAddress(String(n));break;default:l(r)}}let r=await e.encrypt();a(t,n,{handles:r.handles,inputProof:r.inputProof},[r.inputProof.buffer,...r.handles.map(e=>e.buffer)])}catch(e){let r=e instanceof Error?e.message:String(e);console.error(`[NodeWorker] Encrypt error:`,r),o(t,n,r)}}async function d(e){let{id:n,type:r,payload:s}=e;try{if(!i)throw Error(`SDK not initialized. Call NODE_INIT first.`);let e=s.handles.map(e=>({handle:e,contractAddress:s.contractAddress}));a(n,r,{clearValues:await i.userDecrypt(e,t(s.privateKey),t(s.publicKey),s.signature,s.signedContractAddresses,s.signerAddress,s.startTimestamp,s.durationDays)})}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`[NodeWorker] UserDecrypt error:`,t),o(n,r,t)}}async function f(e){let{id:t,type:n,payload:r}=e;try{if(!i)throw Error(`SDK not initialized. Call NODE_INIT first.`);a(t,n,{...await i.publicDecrypt(r.handles)})}catch(e){let r=e instanceof Error?e.message:String(e);console.error(`[NodeWorker] PublicDecrypt error:`,r),o(t,n,r)}}function p(t){let{id:n,type:r}=t;try{if(!i)throw Error(`SDK not initialized. Call NODE_INIT first.`);let t=i.generateKeypair();a(n,r,{publicKey:e(t.publicKey),privateKey:e(t.privateKey)})}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`[NodeWorker] GenerateKeypair error:`,t),o(n,r,t)}}function m(n){let{id:r,type:s,payload:c}=n;try{if(!i)throw Error(`SDK not initialized. Call NODE_INIT first.`);let n=i.createEIP712(t(c.publicKey),c.contractAddresses,c.startTimestamp,c.durationDays);a(r,s,{domain:{name:n.domain.name,version:n.domain.version,chainId:Number(n.domain.chainId),verifyingContract:n.domain.verifyingContract},types:{UserDecryptRequestVerification:n.types.UserDecryptRequestVerification.map(e=>({name:e.name,type:e.type}))},message:{publicKey:e(n.message.publicKey),contractAddresses:[...n.message.contractAddresses],startTimestamp:BigInt(n.message.startTimestamp),durationDays:BigInt(n.message.durationDays),extraData:e(n.message.extraData)}})}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`[NodeWorker] CreateEIP712 error:`,t),o(r,s,t)}}function h(e){let{id:n,type:r,payload:s}=e;try{if(!i)throw Error(`SDK not initialized. Call NODE_INIT first.`);a(n,r,i.createDelegatedUserDecryptEIP712(t(s.publicKey),s.contractAddresses,s.delegatorAddress,s.startTimestamp,s.durationDays))}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`[NodeWorker] CreateDelegatedEIP712 error:`,t),o(n,r,t)}}async function g(e){let{id:n,type:r,payload:s}=e;try{if(!i)throw Error(`SDK not initialized. Call NODE_INIT first.`);let e=s.handles.map(e=>({handle:e,contractAddress:s.contractAddress}));a(n,r,{clearValues:await i.delegatedUserDecrypt(e,t(s.privateKey),t(s.publicKey),s.signature,s.signedContractAddresses,s.delegatorAddress,s.delegateAddress,s.startTimestamp,s.durationDays)})}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`[NodeWorker] DelegatedUserDecrypt error:`,t),o(n,r,t)}}async function _(e){let{id:t,type:n,payload:r}=e;try{if(!i)throw Error(`SDK not initialized. Call NODE_INIT first.`);let e=await i.requestZKProofVerification(r.zkProof);a(t,n,e,[e.inputProof.buffer,...e.handles.map(e=>e.buffer)])}catch(e){let r=e instanceof Error?e.message:String(e);console.error(`[NodeWorker] RequestZKProofVerification error:`,r),o(t,n,r)}}function v(e){let{id:t,type:n}=e;try{if(!i)throw Error(`SDK not initialized. Call NODE_INIT first.`);a(t,n,{result:i.getPublicKey()})}catch(e){let r=e instanceof Error?e.message:String(e);console.error(`[NodeWorker] GetPublicKey error:`,r),o(t,n,r)}}function y(e){let{id:t,type:n,payload:r}=e;try{if(!i)throw Error(`SDK not initialized. Call NODE_INIT first.`);a(t,n,{result:i.getPublicParams(r.bits)})}catch(e){let r=e instanceof Error?e.message:String(e);console.error(`[NodeWorker] GetPublicParams error:`,r),o(t,n,r)}}async function b(e){try{switch(e.type){case`NODE_INIT`:await s(e);break;case`ENCRYPT`:await u(e);break;case`USER_DECRYPT`:await d(e);break;case`PUBLIC_DECRYPT`:await f(e);break;case`GENERATE_KEYPAIR`:p(e);break;case`CREATE_EIP712`:m(e);break;case`CREATE_DELEGATED_EIP712`:h(e);break;case`DELEGATED_USER_DECRYPT`:await g(e);break;case`REQUEST_ZK_PROOF_VERIFICATION`:await _(e);break;case`GET_PUBLIC_KEY`:v(e);break;case`GET_PUBLIC_PARAMS`:y(e);break;default:console.error(`[NodeWorker] Unknown request type:`,e.type)}}catch(t){let n=t instanceof Error?t.message:String(t);o(e.id,e.type,n)}}r.on(`message`,e=>{b(e)});
|
|
2
|
+
//# sourceMappingURL=relayer-sdk.node-worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relayer-sdk.node-worker.js","names":[],"sources":["../../../src/worker/relayer-sdk.node-worker.ts"],"sourcesContent":["/**\n * Node.js worker thread for RelayerSDK FHE operations.\n * Handles CPU-intensive WASM operations off the main thread using node:worker_threads.\n */\n\nimport type { FhevmInstance, FhevmInstanceConfig } from \"@zama-fhe/relayer-sdk/node\";\nimport { parentPort, type Transferable } from \"node:worker_threads\";\nimport type {\n CreateDelegatedEIP712Request,\n CreateDelegatedEIP712ResponseData,\n CreateEIP712Request,\n CreateEIP712ResponseData,\n DelegatedUserDecryptRequest,\n DelegatedUserDecryptResponseData,\n EncryptRequest,\n EncryptResponseData,\n ErrorResponse,\n GenerateKeypairRequest,\n GenerateKeypairResponseData,\n GetPublicKeyRequest,\n GetPublicKeyResponseData,\n GetPublicParamsRequest,\n GetPublicParamsResponseData,\n InitResponseData,\n NodeInitRequest,\n PublicDecryptRequest,\n PublicDecryptResponseData,\n RequestZKProofVerificationRequest,\n SuccessResponse,\n UserDecryptRequest,\n UserDecryptResponseData,\n WorkerRequest,\n} from \"./worker.types\";\nimport { prefixHex, unprefixHex } from \"../utils\";\n\nif (!parentPort) {\n throw new Error(\"This script must be run as a worker thread\");\n}\n\nconst port = parentPort;\n\nlet sdkInstance: FhevmInstance | null = null;\n\nfunction sendSuccess<T>(\n id: string,\n type: WorkerRequest[\"type\"],\n data: T,\n transfer?: readonly Transferable[],\n): void {\n const response: SuccessResponse<T> = { id, type, success: true, data };\n port.postMessage(response, transfer);\n}\n\nfunction sendError(id: string, type: WorkerRequest[\"type\"], error: string): void {\n const response: ErrorResponse = { id, type, success: false, error };\n port.postMessage(response);\n}\n\nasync function handleNodeInit(request: NodeInitRequest): Promise<void> {\n const { id, type, payload } = request;\n const { fhevmConfig } = payload;\n\n try {\n const nodeSdk = await import(\"@zama-fhe/relayer-sdk/node\");\n\n const config: FhevmInstanceConfig = {\n ...fhevmConfig,\n batchRpcCalls: false,\n };\n\n sdkInstance = await nodeSdk.createInstance(config);\n\n sendSuccess<InitResponseData>(id, type, { initialized: true });\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(\"[NodeWorker] Init error:\", message);\n sendError(id, type, message);\n }\n}\n\n/** Coerce a boolean to bigint for numeric FHE types. */\nfunction toBigInt(value: bigint | boolean): bigint {\n return typeof value === \"boolean\" ? (value ? 1n : 0n) : value;\n}\n\nfunction unreachableFheType(_: never): never {\n throw new Error(\"Unsupported FHE type\");\n}\n\nasync function handleEncrypt(request: EncryptRequest): Promise<void> {\n const { id, type, payload } = request;\n const { values, contractAddress, userAddress } = payload;\n\n try {\n if (!sdkInstance) {\n throw new Error(\"SDK not initialized. Call NODE_INIT first.\");\n }\n\n const input = sdkInstance.createEncryptedInput(contractAddress, userAddress);\n\n for (const entry of values) {\n const { value, type: fheType } = entry;\n switch (fheType) {\n case \"ebool\":\n input.addBool(typeof value === \"boolean\" ? value : value !== 0n);\n break;\n case \"euint8\":\n input.add8(toBigInt(value));\n break;\n case \"euint16\":\n input.add16(toBigInt(value));\n break;\n case \"euint32\":\n input.add32(toBigInt(value));\n break;\n case \"euint64\":\n input.add64(toBigInt(value));\n break;\n case \"euint128\":\n input.add128(toBigInt(value));\n break;\n case \"euint256\":\n input.add256(toBigInt(value));\n break;\n case \"eaddress\":\n input.addAddress(String(value));\n break;\n default:\n unreachableFheType(fheType);\n }\n }\n\n const encrypted = await input.encrypt();\n\n const response: EncryptResponseData = {\n handles: encrypted.handles,\n inputProof: encrypted.inputProof,\n };\n\n const transferList: Transferable[] = [\n encrypted.inputProof.buffer as ArrayBuffer,\n ...encrypted.handles.map((h) => h.buffer as ArrayBuffer),\n ];\n\n sendSuccess(id, type, response, transferList);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(\"[NodeWorker] Encrypt error:\", message);\n sendError(id, type, message);\n }\n}\n\nasync function handleUserDecrypt(request: UserDecryptRequest): Promise<void> {\n const { id, type, payload } = request;\n\n try {\n if (!sdkInstance) {\n throw new Error(\"SDK not initialized. Call NODE_INIT first.\");\n }\n\n const handleContractPairs = payload.handles.map((handle) => ({\n handle,\n contractAddress: payload.contractAddress,\n }));\n\n const result = await sdkInstance.userDecrypt(\n handleContractPairs,\n unprefixHex(payload.privateKey),\n unprefixHex(payload.publicKey),\n payload.signature,\n payload.signedContractAddresses,\n payload.signerAddress,\n payload.startTimestamp,\n payload.durationDays,\n );\n\n const response: UserDecryptResponseData = { clearValues: result };\n\n sendSuccess(id, type, response);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(\"[NodeWorker] UserDecrypt error:\", message);\n sendError(id, type, message);\n }\n}\n\nasync function handlePublicDecrypt(request: PublicDecryptRequest): Promise<void> {\n const { id, type, payload } = request;\n\n try {\n if (!sdkInstance) {\n throw new Error(\"SDK not initialized. Call NODE_INIT first.\");\n }\n\n const result = await sdkInstance.publicDecrypt(payload.handles);\n\n const response: PublicDecryptResponseData = { ...result };\n\n sendSuccess(id, type, response);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(\"[NodeWorker] PublicDecrypt error:\", message);\n sendError(id, type, message);\n }\n}\n\nfunction handleGenerateKeypair(request: GenerateKeypairRequest): void {\n const { id, type } = request;\n\n try {\n if (!sdkInstance) {\n throw new Error(\"SDK not initialized. Call NODE_INIT first.\");\n }\n\n const keypair = sdkInstance.generateKeypair();\n\n const response: GenerateKeypairResponseData = {\n publicKey: prefixHex(keypair.publicKey),\n privateKey: prefixHex(keypair.privateKey),\n };\n\n sendSuccess(id, type, response);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(\"[NodeWorker] GenerateKeypair error:\", message);\n sendError(id, type, message);\n }\n}\n\nfunction handleCreateEIP712(request: CreateEIP712Request): void {\n const { id, type, payload } = request;\n\n try {\n if (!sdkInstance) {\n throw new Error(\"SDK not initialized. Call NODE_INIT first.\");\n }\n\n const eip712 = sdkInstance.createEIP712(\n unprefixHex(payload.publicKey),\n payload.contractAddresses,\n payload.startTimestamp,\n payload.durationDays,\n );\n\n const response: CreateEIP712ResponseData = {\n domain: {\n name: eip712.domain.name,\n version: eip712.domain.version,\n chainId: Number(eip712.domain.chainId),\n verifyingContract: eip712.domain.verifyingContract,\n },\n types: {\n UserDecryptRequestVerification: eip712.types.UserDecryptRequestVerification.map(\n (field) => ({\n name: field.name,\n type: field.type,\n }),\n ),\n },\n message: {\n publicKey: prefixHex(eip712.message.publicKey),\n contractAddresses: [...eip712.message.contractAddresses],\n startTimestamp: BigInt(eip712.message.startTimestamp),\n durationDays: BigInt(eip712.message.durationDays),\n extraData: prefixHex(eip712.message.extraData),\n },\n };\n\n sendSuccess(id, type, response);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(\"[NodeWorker] CreateEIP712 error:\", message);\n sendError(id, type, message);\n }\n}\n\nfunction handleCreateDelegatedEIP712(request: CreateDelegatedEIP712Request): void {\n const { id, type, payload } = request;\n\n try {\n if (!sdkInstance) {\n throw new Error(\"SDK not initialized. Call NODE_INIT first.\");\n }\n\n const result = sdkInstance.createDelegatedUserDecryptEIP712(\n unprefixHex(payload.publicKey),\n payload.contractAddresses,\n payload.delegatorAddress,\n payload.startTimestamp,\n payload.durationDays,\n );\n\n sendSuccess<CreateDelegatedEIP712ResponseData>(id, type, result);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(\"[NodeWorker] CreateDelegatedEIP712 error:\", message);\n sendError(id, type, message);\n }\n}\n\nasync function handleDelegatedUserDecrypt(request: DelegatedUserDecryptRequest): Promise<void> {\n const { id, type, payload } = request;\n\n try {\n if (!sdkInstance) {\n throw new Error(\"SDK not initialized. Call NODE_INIT first.\");\n }\n\n const handleContractPairs = payload.handles.map((handle) => ({\n handle,\n contractAddress: payload.contractAddress,\n }));\n\n const result = await sdkInstance.delegatedUserDecrypt(\n handleContractPairs,\n unprefixHex(payload.privateKey),\n unprefixHex(payload.publicKey),\n payload.signature,\n payload.signedContractAddresses,\n payload.delegatorAddress,\n payload.delegateAddress,\n payload.startTimestamp,\n payload.durationDays,\n );\n\n const response: DelegatedUserDecryptResponseData = { clearValues: result };\n\n sendSuccess(id, type, response);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(\"[NodeWorker] DelegatedUserDecrypt error:\", message);\n sendError(id, type, message);\n }\n}\n\nasync function handleRequestZKProofVerification(\n request: RequestZKProofVerificationRequest,\n): Promise<void> {\n const { id, type, payload } = request;\n\n try {\n if (!sdkInstance) {\n throw new Error(\"SDK not initialized. Call NODE_INIT first.\");\n }\n\n const result = await sdkInstance.requestZKProofVerification(payload.zkProof);\n\n const transferList: Transferable[] = [\n result.inputProof.buffer as ArrayBuffer,\n ...result.handles.map((h) => h.buffer as ArrayBuffer),\n ];\n\n sendSuccess(id, type, result, transferList);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(\"[NodeWorker] RequestZKProofVerification error:\", message);\n sendError(id, type, message);\n }\n}\n\nfunction handleGetPublicKey(request: GetPublicKeyRequest): void {\n const { id, type } = request;\n\n try {\n if (!sdkInstance) {\n throw new Error(\"SDK not initialized. Call NODE_INIT first.\");\n }\n\n const result = sdkInstance.getPublicKey();\n\n const response: GetPublicKeyResponseData = { result };\n\n sendSuccess(id, type, response);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(\"[NodeWorker] GetPublicKey error:\", message);\n sendError(id, type, message);\n }\n}\n\nfunction handleGetPublicParams(request: GetPublicParamsRequest): void {\n const { id, type, payload } = request;\n\n try {\n if (!sdkInstance) {\n throw new Error(\"SDK not initialized. Call NODE_INIT first.\");\n }\n\n const result = sdkInstance.getPublicParams(\n // oxlint-disable-next-line typescript-eslint/consistent-type-imports -- SDK loaded dynamically\n payload.bits as keyof import(\"@zama-fhe/relayer-sdk/node\").PublicParams<Uint8Array>,\n );\n\n const response: GetPublicParamsResponseData = { result };\n\n sendSuccess(id, type, response);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(\"[NodeWorker] GetPublicParams error:\", message);\n sendError(id, type, message);\n }\n}\n\nasync function handleMessage(request: WorkerRequest): Promise<void> {\n try {\n switch (request.type) {\n case \"NODE_INIT\":\n await handleNodeInit(request);\n break;\n case \"ENCRYPT\":\n await handleEncrypt(request);\n break;\n case \"USER_DECRYPT\":\n await handleUserDecrypt(request);\n break;\n case \"PUBLIC_DECRYPT\":\n await handlePublicDecrypt(request);\n break;\n case \"GENERATE_KEYPAIR\":\n handleGenerateKeypair(request);\n break;\n case \"CREATE_EIP712\":\n handleCreateEIP712(request);\n break;\n case \"CREATE_DELEGATED_EIP712\":\n handleCreateDelegatedEIP712(request);\n break;\n case \"DELEGATED_USER_DECRYPT\":\n await handleDelegatedUserDecrypt(request);\n break;\n case \"REQUEST_ZK_PROOF_VERIFICATION\":\n await handleRequestZKProofVerification(request);\n break;\n case \"GET_PUBLIC_KEY\":\n handleGetPublicKey(request);\n break;\n case \"GET_PUBLIC_PARAMS\":\n handleGetPublicParams(request);\n break;\n default:\n console.error(\"[NodeWorker] Unknown request type:\", request.type);\n }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n sendError(request.id, request.type, message);\n }\n}\n\nport.on(\"message\", (request: WorkerRequest) => {\n void handleMessage(request);\n});\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{c as e,u as t}from"./utils-DlyKooNc.js";import{parentPort as n}from"node:worker_threads";if(!n)throw Error(`This script must be run as a worker thread`);const r=n;let i=null;function a(e,t,n,i){let a={id:e,type:t,success:!0,data:n};r.postMessage(a,i)}function o(e,t,n){let i={id:e,type:t,success:!1,error:n};r.postMessage(i)}async function s(e){let{id:t,type:n,payload:r}=e,{fhevmConfig:s}=r;try{let e=await import(`@zama-fhe/relayer-sdk/node`),r={...s,batchRpcCalls:!1};i=await e.createInstance(r),a(t,n,{initialized:!0})}catch(e){let r=e instanceof Error?e.message:String(e);console.error(`[NodeWorker] Init error:`,r),o(t,n,r)}}function c(e){return typeof e==`boolean`?e?1n:0n:e}function l(e){throw Error(`Unsupported FHE type`)}async function u(e){let{id:t,type:n,payload:r}=e,{values:s,contractAddress:u,userAddress:d}=r;try{if(!i)throw Error(`SDK not initialized. Call NODE_INIT first.`);let e=i.createEncryptedInput(u,d);for(let t of s){let{value:n,type:r}=t;switch(r){case`ebool`:e.addBool(typeof n==`boolean`?n:n!==0n);break;case`euint8`:e.add8(c(n));break;case`euint16`:e.add16(c(n));break;case`euint32`:e.add32(c(n));break;case`euint64`:e.add64(c(n));break;case`euint128`:e.add128(c(n));break;case`euint256`:e.add256(c(n));break;case`eaddress`:e.addAddress(String(n));break;default:l(r)}}let r=await e.encrypt();a(t,n,{handles:r.handles,inputProof:r.inputProof},[r.inputProof.buffer,...r.handles.map(e=>e.buffer)])}catch(e){let r=e instanceof Error?e.message:String(e);console.error(`[NodeWorker] Encrypt error:`,r),o(t,n,r)}}async function d(e){let{id:n,type:r,payload:s}=e;try{if(!i)throw Error(`SDK not initialized. Call NODE_INIT first.`);let e=s.handles.map(e=>({handle:e,contractAddress:s.contractAddress}));a(n,r,{clearValues:await i.userDecrypt(e,t(s.privateKey),t(s.publicKey),s.signature,s.signedContractAddresses,s.signerAddress,s.startTimestamp,s.durationDays)})}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`[NodeWorker] UserDecrypt error:`,t),o(n,r,t)}}async function f(e){let{id:t,type:n,payload:r}=e;try{if(!i)throw Error(`SDK not initialized. Call NODE_INIT first.`);a(t,n,{...await i.publicDecrypt(r.handles)})}catch(e){let r=e instanceof Error?e.message:String(e);console.error(`[NodeWorker] PublicDecrypt error:`,r),o(t,n,r)}}function p(t){let{id:n,type:r}=t;try{if(!i)throw Error(`SDK not initialized. Call NODE_INIT first.`);let t=i.generateKeypair();a(n,r,{publicKey:e(t.publicKey),privateKey:e(t.privateKey)})}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`[NodeWorker] GenerateKeypair error:`,t),o(n,r,t)}}function m(n){let{id:r,type:s,payload:c}=n;try{if(!i)throw Error(`SDK not initialized. Call NODE_INIT first.`);let n=i.createEIP712(t(c.publicKey),c.contractAddresses,c.startTimestamp,c.durationDays);a(r,s,{domain:{name:n.domain.name,version:n.domain.version,chainId:Number(n.domain.chainId),verifyingContract:n.domain.verifyingContract},types:{UserDecryptRequestVerification:n.types.UserDecryptRequestVerification.map(e=>({name:e.name,type:e.type}))},message:{publicKey:e(n.message.publicKey),contractAddresses:[...n.message.contractAddresses],startTimestamp:BigInt(n.message.startTimestamp),durationDays:BigInt(n.message.durationDays),extraData:e(n.message.extraData)}})}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`[NodeWorker] CreateEIP712 error:`,t),o(r,s,t)}}function h(e){let{id:n,type:r,payload:s}=e;try{if(!i)throw Error(`SDK not initialized. Call NODE_INIT first.`);a(n,r,i.createDelegatedUserDecryptEIP712(t(s.publicKey),s.contractAddresses,s.delegatorAddress,s.startTimestamp,s.durationDays))}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`[NodeWorker] CreateDelegatedEIP712 error:`,t),o(n,r,t)}}async function g(e){let{id:n,type:r,payload:s}=e;try{if(!i)throw Error(`SDK not initialized. Call NODE_INIT first.`);let e=s.handles.map(e=>({handle:e,contractAddress:s.contractAddress}));a(n,r,{clearValues:await i.delegatedUserDecrypt(e,t(s.privateKey),t(s.publicKey),s.signature,s.signedContractAddresses,s.delegatorAddress,s.delegateAddress,s.startTimestamp,s.durationDays)})}catch(e){let t=e instanceof Error?e.message:String(e);console.error(`[NodeWorker] DelegatedUserDecrypt error:`,t),o(n,r,t)}}async function _(e){let{id:t,type:n,payload:r}=e;try{if(!i)throw Error(`SDK not initialized. Call NODE_INIT first.`);let e=await i.requestZKProofVerification(r.zkProof);a(t,n,e,[e.inputProof.buffer,...e.handles.map(e=>e.buffer)])}catch(e){let r=e instanceof Error?e.message:String(e);console.error(`[NodeWorker] RequestZKProofVerification error:`,r),o(t,n,r)}}function v(e){let{id:t,type:n}=e;try{if(!i)throw Error(`SDK not initialized. Call NODE_INIT first.`);a(t,n,{result:i.getPublicKey()})}catch(e){let r=e instanceof Error?e.message:String(e);console.error(`[NodeWorker] GetPublicKey error:`,r),o(t,n,r)}}function y(e){let{id:t,type:n,payload:r}=e;try{if(!i)throw Error(`SDK not initialized. Call NODE_INIT first.`);a(t,n,{result:i.getPublicParams(r.bits)})}catch(e){let r=e instanceof Error?e.message:String(e);console.error(`[NodeWorker] GetPublicParams error:`,r),o(t,n,r)}}async function b(e){try{switch(e.type){case`NODE_INIT`:await s(e);break;case`ENCRYPT`:await u(e);break;case`USER_DECRYPT`:await d(e);break;case`PUBLIC_DECRYPT`:await f(e);break;case`GENERATE_KEYPAIR`:p(e);break;case`CREATE_EIP712`:m(e);break;case`CREATE_DELEGATED_EIP712`:h(e);break;case`DELEGATED_USER_DECRYPT`:await g(e);break;case`REQUEST_ZK_PROOF_VERIFICATION`:await _(e);break;case`GET_PUBLIC_KEY`:v(e);break;case`GET_PUBLIC_PARAMS`:y(e);break;default:console.error(`[NodeWorker] Unknown request type:`,e.type)}}catch(t){let n=t instanceof Error?t.message:String(t);o(e.id,e.type,n)}}r.on(`message`,e=>{b(e)});
|
|
2
|
-
//# sourceMappingURL=relayer-sdk.node-worker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"relayer-sdk.node-worker.js","names":[],"sources":["../../src/worker/relayer-sdk.node-worker.ts"],"sourcesContent":["/**\n * Node.js worker thread for RelayerSDK FHE operations.\n * Handles CPU-intensive WASM operations off the main thread using node:worker_threads.\n */\n\nimport type { FhevmInstance, FhevmInstanceConfig } from \"@zama-fhe/relayer-sdk/node\";\nimport { parentPort, type Transferable } from \"node:worker_threads\";\nimport type {\n CreateDelegatedEIP712Request,\n CreateDelegatedEIP712ResponseData,\n CreateEIP712Request,\n CreateEIP712ResponseData,\n DelegatedUserDecryptRequest,\n DelegatedUserDecryptResponseData,\n EncryptRequest,\n EncryptResponseData,\n ErrorResponse,\n GenerateKeypairRequest,\n GenerateKeypairResponseData,\n GetPublicKeyRequest,\n GetPublicKeyResponseData,\n GetPublicParamsRequest,\n GetPublicParamsResponseData,\n InitResponseData,\n NodeInitRequest,\n PublicDecryptRequest,\n PublicDecryptResponseData,\n RequestZKProofVerificationRequest,\n SuccessResponse,\n UserDecryptRequest,\n UserDecryptResponseData,\n WorkerRequest,\n} from \"./worker.types\";\nimport { prefixHex, unprefixHex } from \"../utils\";\n\nif (!parentPort) {\n throw new Error(\"This script must be run as a worker thread\");\n}\n\nconst port = parentPort;\n\nlet sdkInstance: FhevmInstance | null = null;\n\nfunction sendSuccess<T>(\n id: string,\n type: WorkerRequest[\"type\"],\n data: T,\n transfer?: readonly Transferable[],\n): void {\n const response: SuccessResponse<T> = { id, type, success: true, data };\n port.postMessage(response, transfer);\n}\n\nfunction sendError(id: string, type: WorkerRequest[\"type\"], error: string): void {\n const response: ErrorResponse = { id, type, success: false, error };\n port.postMessage(response);\n}\n\nasync function handleNodeInit(request: NodeInitRequest): Promise<void> {\n const { id, type, payload } = request;\n const { fhevmConfig } = payload;\n\n try {\n const nodeSdk = await import(\"@zama-fhe/relayer-sdk/node\");\n\n const config: FhevmInstanceConfig = {\n ...fhevmConfig,\n batchRpcCalls: false,\n };\n\n sdkInstance = await nodeSdk.createInstance(config);\n\n sendSuccess<InitResponseData>(id, type, { initialized: true });\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(\"[NodeWorker] Init error:\", message);\n sendError(id, type, message);\n }\n}\n\n/** Coerce a boolean to bigint for numeric FHE types. */\nfunction toBigInt(value: bigint | boolean): bigint {\n return typeof value === \"boolean\" ? (value ? 1n : 0n) : value;\n}\n\nfunction unreachableFheType(_: never): never {\n throw new Error(\"Unsupported FHE type\");\n}\n\nasync function handleEncrypt(request: EncryptRequest): Promise<void> {\n const { id, type, payload } = request;\n const { values, contractAddress, userAddress } = payload;\n\n try {\n if (!sdkInstance) {\n throw new Error(\"SDK not initialized. Call NODE_INIT first.\");\n }\n\n const input = sdkInstance.createEncryptedInput(contractAddress, userAddress);\n\n for (const entry of values) {\n const { value, type: fheType } = entry;\n switch (fheType) {\n case \"ebool\":\n input.addBool(typeof value === \"boolean\" ? value : value !== 0n);\n break;\n case \"euint8\":\n input.add8(toBigInt(value));\n break;\n case \"euint16\":\n input.add16(toBigInt(value));\n break;\n case \"euint32\":\n input.add32(toBigInt(value));\n break;\n case \"euint64\":\n input.add64(toBigInt(value));\n break;\n case \"euint128\":\n input.add128(toBigInt(value));\n break;\n case \"euint256\":\n input.add256(toBigInt(value));\n break;\n case \"eaddress\":\n input.addAddress(String(value));\n break;\n default:\n unreachableFheType(fheType);\n }\n }\n\n const encrypted = await input.encrypt();\n\n const response: EncryptResponseData = {\n handles: encrypted.handles,\n inputProof: encrypted.inputProof,\n };\n\n const transferList: Transferable[] = [\n encrypted.inputProof.buffer as ArrayBuffer,\n ...encrypted.handles.map((h) => h.buffer as ArrayBuffer),\n ];\n\n sendSuccess(id, type, response, transferList);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(\"[NodeWorker] Encrypt error:\", message);\n sendError(id, type, message);\n }\n}\n\nasync function handleUserDecrypt(request: UserDecryptRequest): Promise<void> {\n const { id, type, payload } = request;\n\n try {\n if (!sdkInstance) {\n throw new Error(\"SDK not initialized. Call NODE_INIT first.\");\n }\n\n const handleContractPairs = payload.handles.map((handle) => ({\n handle,\n contractAddress: payload.contractAddress,\n }));\n\n const result = await sdkInstance.userDecrypt(\n handleContractPairs,\n unprefixHex(payload.privateKey),\n unprefixHex(payload.publicKey),\n payload.signature,\n payload.signedContractAddresses,\n payload.signerAddress,\n payload.startTimestamp,\n payload.durationDays,\n );\n\n const response: UserDecryptResponseData = { clearValues: result };\n\n sendSuccess(id, type, response);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(\"[NodeWorker] UserDecrypt error:\", message);\n sendError(id, type, message);\n }\n}\n\nasync function handlePublicDecrypt(request: PublicDecryptRequest): Promise<void> {\n const { id, type, payload } = request;\n\n try {\n if (!sdkInstance) {\n throw new Error(\"SDK not initialized. Call NODE_INIT first.\");\n }\n\n const result = await sdkInstance.publicDecrypt(payload.handles);\n\n const response: PublicDecryptResponseData = { ...result };\n\n sendSuccess(id, type, response);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(\"[NodeWorker] PublicDecrypt error:\", message);\n sendError(id, type, message);\n }\n}\n\nfunction handleGenerateKeypair(request: GenerateKeypairRequest): void {\n const { id, type } = request;\n\n try {\n if (!sdkInstance) {\n throw new Error(\"SDK not initialized. Call NODE_INIT first.\");\n }\n\n const keypair = sdkInstance.generateKeypair();\n\n const response: GenerateKeypairResponseData = {\n publicKey: prefixHex(keypair.publicKey),\n privateKey: prefixHex(keypair.privateKey),\n };\n\n sendSuccess(id, type, response);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(\"[NodeWorker] GenerateKeypair error:\", message);\n sendError(id, type, message);\n }\n}\n\nfunction handleCreateEIP712(request: CreateEIP712Request): void {\n const { id, type, payload } = request;\n\n try {\n if (!sdkInstance) {\n throw new Error(\"SDK not initialized. Call NODE_INIT first.\");\n }\n\n const eip712 = sdkInstance.createEIP712(\n unprefixHex(payload.publicKey),\n payload.contractAddresses,\n payload.startTimestamp,\n payload.durationDays,\n );\n\n const response: CreateEIP712ResponseData = {\n domain: {\n name: eip712.domain.name,\n version: eip712.domain.version,\n chainId: Number(eip712.domain.chainId),\n verifyingContract: eip712.domain.verifyingContract,\n },\n types: {\n UserDecryptRequestVerification: eip712.types.UserDecryptRequestVerification.map(\n (field) => ({\n name: field.name,\n type: field.type,\n }),\n ),\n },\n message: {\n publicKey: prefixHex(eip712.message.publicKey),\n contractAddresses: [...eip712.message.contractAddresses],\n startTimestamp: BigInt(eip712.message.startTimestamp),\n durationDays: BigInt(eip712.message.durationDays),\n extraData: prefixHex(eip712.message.extraData),\n },\n };\n\n sendSuccess(id, type, response);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(\"[NodeWorker] CreateEIP712 error:\", message);\n sendError(id, type, message);\n }\n}\n\nfunction handleCreateDelegatedEIP712(request: CreateDelegatedEIP712Request): void {\n const { id, type, payload } = request;\n\n try {\n if (!sdkInstance) {\n throw new Error(\"SDK not initialized. Call NODE_INIT first.\");\n }\n\n const result = sdkInstance.createDelegatedUserDecryptEIP712(\n unprefixHex(payload.publicKey),\n payload.contractAddresses,\n payload.delegatorAddress,\n payload.startTimestamp,\n payload.durationDays,\n );\n\n sendSuccess<CreateDelegatedEIP712ResponseData>(id, type, result);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(\"[NodeWorker] CreateDelegatedEIP712 error:\", message);\n sendError(id, type, message);\n }\n}\n\nasync function handleDelegatedUserDecrypt(request: DelegatedUserDecryptRequest): Promise<void> {\n const { id, type, payload } = request;\n\n try {\n if (!sdkInstance) {\n throw new Error(\"SDK not initialized. Call NODE_INIT first.\");\n }\n\n const handleContractPairs = payload.handles.map((handle) => ({\n handle,\n contractAddress: payload.contractAddress,\n }));\n\n const result = await sdkInstance.delegatedUserDecrypt(\n handleContractPairs,\n unprefixHex(payload.privateKey),\n unprefixHex(payload.publicKey),\n payload.signature,\n payload.signedContractAddresses,\n payload.delegatorAddress,\n payload.delegateAddress,\n payload.startTimestamp,\n payload.durationDays,\n );\n\n const response: DelegatedUserDecryptResponseData = { clearValues: result };\n\n sendSuccess(id, type, response);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(\"[NodeWorker] DelegatedUserDecrypt error:\", message);\n sendError(id, type, message);\n }\n}\n\nasync function handleRequestZKProofVerification(\n request: RequestZKProofVerificationRequest,\n): Promise<void> {\n const { id, type, payload } = request;\n\n try {\n if (!sdkInstance) {\n throw new Error(\"SDK not initialized. Call NODE_INIT first.\");\n }\n\n const result = await sdkInstance.requestZKProofVerification(payload.zkProof);\n\n const transferList: Transferable[] = [\n result.inputProof.buffer as ArrayBuffer,\n ...result.handles.map((h) => h.buffer as ArrayBuffer),\n ];\n\n sendSuccess(id, type, result, transferList);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(\"[NodeWorker] RequestZKProofVerification error:\", message);\n sendError(id, type, message);\n }\n}\n\nfunction handleGetPublicKey(request: GetPublicKeyRequest): void {\n const { id, type } = request;\n\n try {\n if (!sdkInstance) {\n throw new Error(\"SDK not initialized. Call NODE_INIT first.\");\n }\n\n const result = sdkInstance.getPublicKey();\n\n const response: GetPublicKeyResponseData = { result };\n\n sendSuccess(id, type, response);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(\"[NodeWorker] GetPublicKey error:\", message);\n sendError(id, type, message);\n }\n}\n\nfunction handleGetPublicParams(request: GetPublicParamsRequest): void {\n const { id, type, payload } = request;\n\n try {\n if (!sdkInstance) {\n throw new Error(\"SDK not initialized. Call NODE_INIT first.\");\n }\n\n const result = sdkInstance.getPublicParams(\n // oxlint-disable-next-line typescript-eslint/consistent-type-imports -- SDK loaded dynamically\n payload.bits as keyof import(\"@zama-fhe/relayer-sdk/node\").PublicParams<Uint8Array>,\n );\n\n const response: GetPublicParamsResponseData = { result };\n\n sendSuccess(id, type, response);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(\"[NodeWorker] GetPublicParams error:\", message);\n sendError(id, type, message);\n }\n}\n\nasync function handleMessage(request: WorkerRequest): Promise<void> {\n try {\n switch (request.type) {\n case \"NODE_INIT\":\n await handleNodeInit(request);\n break;\n case \"ENCRYPT\":\n await handleEncrypt(request);\n break;\n case \"USER_DECRYPT\":\n await handleUserDecrypt(request);\n break;\n case \"PUBLIC_DECRYPT\":\n await handlePublicDecrypt(request);\n break;\n case \"GENERATE_KEYPAIR\":\n handleGenerateKeypair(request);\n break;\n case \"CREATE_EIP712\":\n handleCreateEIP712(request);\n break;\n case \"CREATE_DELEGATED_EIP712\":\n handleCreateDelegatedEIP712(request);\n break;\n case \"DELEGATED_USER_DECRYPT\":\n await handleDelegatedUserDecrypt(request);\n break;\n case \"REQUEST_ZK_PROOF_VERIFICATION\":\n await handleRequestZKProofVerification(request);\n break;\n case \"GET_PUBLIC_KEY\":\n handleGetPublicKey(request);\n break;\n case \"GET_PUBLIC_PARAMS\":\n handleGetPublicParams(request);\n break;\n default:\n console.error(\"[NodeWorker] Unknown request type:\", request.type);\n }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n sendError(request.id, request.type, message);\n }\n}\n\nport.on(\"message\", (request: WorkerRequest) => {\n void handleMessage(request);\n});\n"],"mappings":"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"}
|
|
File without changes
|