@auditable/privacy-pool-zk-sdk 0.0.2-rc.6
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/assets/main.wasm +0 -0
- package/assets/main_final.zkey +0 -0
- package/assets/witness_calculator.js +381 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +701 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.mjs +571 -0
- package/dist/index.mjs.map +1 -0
- package/dist/prover.d.ts +5 -0
- package/dist/sdk.d.ts +47 -0
- package/dist/types.d.ts +34 -0
- package/dist/wasm.d.ts +1 -0
- package/dist/witness.d.ts +2 -0
- package/package.json +49 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/wasm.ts","../../circuits/build/main_js/witness_calculator.js","../src/witness.ts","../src/prover.ts","../src/sdk.ts"],"sourcesContent":[null,"module.exports = async function builder(code, options) {\n\n options = options || {};\n\n let wasmModule;\n try {\n\twasmModule = await WebAssembly.compile(code);\n } catch (err) {\n\tconsole.log(err);\n\tconsole.log(\"\\nTry to run circom --c in order to generate c++ code instead\\n\");\n\tthrow new Error(err);\n }\n\n let wc;\n\n let errStr = \"\";\n let msgStr = \"\";\n \n const instance = await WebAssembly.instantiate(wasmModule, {\n runtime: {\n exceptionHandler : function(code) {\n\t\tlet err;\n if (code == 1) {\n err = \"Signal not found.\\n\";\n } else if (code == 2) {\n err = \"Too many signals set.\\n\";\n } else if (code == 3) {\n err = \"Signal already set.\\n\";\n\t\t} else if (code == 4) {\n err = \"Assert Failed.\\n\";\n\t\t} else if (code == 5) {\n err = \"Not enough memory.\\n\";\n\t\t} else if (code == 6) {\n err = \"Input signal array access exceeds the size.\\n\";\n\t\t} else {\n\t\t err = \"Unknown error.\\n\";\n }\n throw new Error(err + errStr);\n },\n\t printErrorMessage : function() {\n\t\terrStr += getMessage() + \"\\n\";\n // console.error(getMessage());\n\t },\n\t writeBufferMessage : function() {\n\t\t\tconst msg = getMessage();\n\t\t\t// Any calls to `log()` will always end with a `\\n`, so that's when we print and reset\n\t\t\tif (msg === \"\\n\") {\n\t\t\t\tconsole.log(msgStr);\n\t\t\t\tmsgStr = \"\";\n\t\t\t} else {\n\t\t\t\t// If we've buffered other content, put a space in between the items\n\t\t\t\tif (msgStr !== \"\") {\n\t\t\t\t\tmsgStr += \" \"\n\t\t\t\t}\n\t\t\t\t// Then append the message to the message we are creating\n\t\t\t\tmsgStr += msg;\n\t\t\t}\n\t },\n\t showSharedRWMemory : function() {\n\t\tprintSharedRWMemory ();\n }\n\n }\n });\n\n const sanityCheck =\n options\n// options &&\n// (\n// options.sanityCheck ||\n// options.logGetSignal ||\n// options.logSetSignal ||\n// options.logStartComponent ||\n// options.logFinishComponent\n// );\n\n \n wc = new WitnessCalculator(instance, sanityCheck);\n return wc;\n\n function getMessage() {\n var message = \"\";\n\tvar c = instance.exports.getMessageChar();\n while ( c != 0 ) {\n\t message += String.fromCharCode(c);\n\t c = instance.exports.getMessageChar();\n\t}\n return message;\n }\n\t\n function printSharedRWMemory () {\n\tconst shared_rw_memory_size = instance.exports.getFieldNumLen32();\n\tconst arr = new Uint32Array(shared_rw_memory_size);\n\tfor (let j=0; j<shared_rw_memory_size; j++) {\n\t arr[shared_rw_memory_size-1-j] = instance.exports.readSharedRWMemory(j);\n\t}\n\n\t// If we've buffered other content, put a space in between the items\n\tif (msgStr !== \"\") {\n\t\tmsgStr += \" \"\n\t}\n\t// Then append the value to the message we are creating\n\tmsgStr += (fromArray32(arr).toString());\n\t}\n\n};\n\nclass WitnessCalculator {\n constructor(instance, sanityCheck) {\n this.instance = instance;\n\n\tthis.version = this.instance.exports.getVersion();\n this.n32 = this.instance.exports.getFieldNumLen32();\n\n this.instance.exports.getRawPrime();\n const arr = new Uint32Array(this.n32);\n for (let i=0; i<this.n32; i++) {\n arr[this.n32-1-i] = this.instance.exports.readSharedRWMemory(i);\n }\n this.prime = fromArray32(arr);\n\n this.witnessSize = this.instance.exports.getWitnessSize();\n\n this.sanityCheck = sanityCheck;\n }\n \n circom_version() {\n\treturn this.instance.exports.getVersion();\n }\n\n async _doCalculateWitness(input_orig, sanityCheck) {\n\t//input is assumed to be a map from signals to arrays of bigints\n this.instance.exports.init((this.sanityCheck || sanityCheck) ? 1 : 0);\n\tlet prefix = \"\";\n\tvar input = new Object();\n\t//console.log(\"Input: \", input_orig);\n\tqualify_input(prefix,input_orig,input);\n\t//console.log(\"Input after: \",input);\t\n const keys = Object.keys(input);\n\tvar input_counter = 0;\n keys.forEach( (k) => {\n const h = fnvHash(k);\n const hMSB = parseInt(h.slice(0,8), 16);\n const hLSB = parseInt(h.slice(8,16), 16);\n const fArr = flatArray(input[k]);\n\t let signalSize = this.instance.exports.getInputSignalSize(hMSB, hLSB);\n\t if (signalSize < 0){\n\t\tthrow new Error(`Signal ${k} not found\\n`);\n\t }\n\t if (fArr.length < signalSize) {\n\t\tthrow new Error(`Not enough values for input signal ${k}\\n`);\n\t }\n\t if (fArr.length > signalSize) {\n\t\tthrow new Error(`Too many values for input signal ${k}\\n`);\n\t }\n for (let i=0; i<fArr.length; i++) {\n const arrFr = toArray32(normalize(fArr[i],this.prime),this.n32)\n for (let j=0; j<this.n32; j++) {\n\t\t this.instance.exports.writeSharedRWMemory(j,arrFr[this.n32-1-j]);\n\t\t}\n\t\ttry {\n this.instance.exports.setInputSignal(hMSB, hLSB,i);\n\t\t input_counter++;\n\t\t} catch (err) {\n\t\t // console.log(`After adding signal ${i} of ${k}`)\n throw new Error(err);\n\t\t}\n }\n\n });\n\tif (input_counter < this.instance.exports.getInputSize()) {\n\t throw new Error(`Not all inputs have been set. Only ${input_counter} out of ${this.instance.exports.getInputSize()}`);\n\t}\n }\n\n async calculateWitness(input, sanityCheck) {\n\n const w = [];\n await this._doCalculateWitness(input, sanityCheck);\n\n for (let i=0; i<this.witnessSize; i++) {\n this.instance.exports.getWitness(i);\n\t const arr = new Uint32Array(this.n32);\n for (let j=0; j<this.n32; j++) {\n arr[this.n32-1-j] = this.instance.exports.readSharedRWMemory(j);\n }\n w.push(fromArray32(arr));\n }\n\n return w;\n }\n \n\n async calculateBinWitness(input, sanityCheck) {\n\n const buff32 = new Uint32Array(this.witnessSize*this.n32);\n\tconst buff = new Uint8Array( buff32.buffer);\n await this._doCalculateWitness(input, sanityCheck);\n\n for (let i=0; i<this.witnessSize; i++) {\n this.instance.exports.getWitness(i);\n\t const pos = i*this.n32;\n for (let j=0; j<this.n32; j++) {\n\t\tbuff32[pos+j] = this.instance.exports.readSharedRWMemory(j);\n }\n }\n\n\treturn buff;\n }\n \n\n async calculateWTNSBin(input, sanityCheck) {\n\n const buff32 = new Uint32Array(this.witnessSize*this.n32+this.n32+11);\n\tconst buff = new Uint8Array( buff32.buffer);\n await this._doCalculateWitness(input, sanityCheck);\n \n\t//\"wtns\"\n\tbuff[0] = \"w\".charCodeAt(0)\n\tbuff[1] = \"t\".charCodeAt(0)\n\tbuff[2] = \"n\".charCodeAt(0)\n\tbuff[3] = \"s\".charCodeAt(0)\n\n\t//version 2\n\tbuff32[1] = 2;\n\n\t//number of sections: 2\n\tbuff32[2] = 2;\n\n\t//id section 1\n\tbuff32[3] = 1;\n\n\tconst n8 = this.n32*4;\n\t//id section 1 length in 64bytes\n\tconst idSection1length = 8 + n8;\n\tconst idSection1lengthHex = idSection1length.toString(16);\n buff32[4] = parseInt(idSection1lengthHex.slice(0,8), 16);\n buff32[5] = parseInt(idSection1lengthHex.slice(8,16), 16);\n\n\t//this.n32\n\tbuff32[6] = n8;\n\n\t//prime number\n\tthis.instance.exports.getRawPrime();\n\n\tvar pos = 7;\n for (let j=0; j<this.n32; j++) {\n\t buff32[pos+j] = this.instance.exports.readSharedRWMemory(j);\n }\n\tpos += this.n32;\n\n\t// witness size\n\tbuff32[pos] = this.witnessSize;\n\tpos++;\n\n\t//id section 2\n\tbuff32[pos] = 2;\n\tpos++;\n\n\t// section 2 length\n\tconst idSection2length = n8*this.witnessSize;\n\tconst idSection2lengthHex = idSection2length.toString(16);\n buff32[pos] = parseInt(idSection2lengthHex.slice(0,8), 16);\n buff32[pos+1] = parseInt(idSection2lengthHex.slice(8,16), 16);\n\n\tpos += 2;\n for (let i=0; i<this.witnessSize; i++) {\n this.instance.exports.getWitness(i);\n for (let j=0; j<this.n32; j++) {\n\t\tbuff32[pos+j] = this.instance.exports.readSharedRWMemory(j);\n }\n\t pos += this.n32;\n }\n\n\treturn buff;\n }\n\n}\n\n\nfunction qualify_input_list(prefix,input,input1){\n if (Array.isArray(input)) {\n\tfor (let i = 0; i<input.length; i++) {\n\t let new_prefix = prefix + \"[\" + i + \"]\";\n\t qualify_input_list(new_prefix,input[i],input1);\n\t}\n } else {\n\tqualify_input(prefix,input,input1);\n }\n}\n\nfunction qualify_input(prefix,input,input1) {\n if (Array.isArray(input)) {\n\ta = flatArray(input);\n\tif (a.length > 0) {\n\t let t = typeof a[0];\n\t for (let i = 1; i<a.length; i++) {\n\t\tif (typeof a[i] != t){\n\t\t throw new Error(`Types are not the same in the key ${prefix}`);\n\t\t}\n\t }\n\t if (t == \"object\") {\n\t\tqualify_input_list(prefix,input,input1);\n\t } else {\n\t\tinput1[prefix] = input;\n\t }\n\t} else {\t \n\t input1[prefix] = input;\n\t}\n } else if (typeof input == \"object\") {\n const keys = Object.keys(input);\n\tkeys.forEach( (k) => {\n\t let new_prefix = prefix == \"\"? k : prefix + \".\" + k;\n\t qualify_input(new_prefix,input[k],input1);\n\t});\n } else {\n\tinput1[prefix] = input;\n }\n}\n\nfunction toArray32(rem,size) {\n const res = []; //new Uint32Array(size); //has no unshift\n const radix = BigInt(0x100000000);\n while (rem) {\n res.unshift( Number(rem % radix));\n rem = rem / radix;\n }\n if (size) {\n\tvar i = size - res.length;\n\twhile (i>0) {\n\t res.unshift(0);\n\t i--;\n\t}\n }\n return res;\n}\n\nfunction fromArray32(arr) { //returns a BigInt\n var res = BigInt(0);\n const radix = BigInt(0x100000000);\n for (let i = 0; i<arr.length; i++) {\n res = res*radix + BigInt(arr[i]);\n }\n return res;\n}\n\nfunction flatArray(a) {\n var res = [];\n fillArray(res, a);\n return res;\n\n function fillArray(res, a) {\n if (Array.isArray(a)) {\n for (let i=0; i<a.length; i++) {\n fillArray(res, a[i]);\n }\n } else {\n res.push(a);\n }\n }\n}\n\nfunction normalize(n, prime) {\n let res = BigInt(n) % prime\n if (res < 0) res += prime\n return res\n}\n\nfunction fnvHash(str) {\n const uint64_max = BigInt(2) ** BigInt(64);\n let hash = BigInt(\"0xCBF29CE484222325\");\n for (var i = 0; i < str.length; i++) {\n\thash ^= BigInt(str[i].charCodeAt());\n\thash *= BigInt(0x100000001B3);\n\thash %= uint64_max;\n }\n let shash = hash.toString(16);\n let n = 16 - shash.length;\n shash = '0'.repeat(n).concat(shash);\n return shash;\n}\n",null,null,null],"names":["isNode"],"mappings":"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"}
|
package/dist/prover.d.ts
ADDED
package/dist/sdk.d.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { CoinData, GeneratedCoin, SDKOptions, SnarkInput, StateFile, WithdrawResult } from './types';
|
|
2
|
+
export declare class PrivacyPoolSDK {
|
|
3
|
+
private wasm;
|
|
4
|
+
private options;
|
|
5
|
+
private constructor();
|
|
6
|
+
/**
|
|
7
|
+
* Initialize the SDK by loading WASM modules.
|
|
8
|
+
*
|
|
9
|
+
* In Node.js, assets are loaded from the filesystem automatically.
|
|
10
|
+
* In browser, pass pre-loaded buffers via options:
|
|
11
|
+
* ```ts
|
|
12
|
+
* const sdk = await PrivacyPoolSDK.init({
|
|
13
|
+
* wasmBinary: await fetch('/pkg/client_sdk_wasm_bg.wasm').then(r => r.arrayBuffer()),
|
|
14
|
+
* circuitWasm: await fetch('/assets/main.wasm').then(r => r.arrayBuffer()),
|
|
15
|
+
* zkey: await fetch('/assets/main_final.zkey').then(r => r.arrayBuffer()),
|
|
16
|
+
* });
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
static init(options?: SDKOptions): Promise<PrivacyPoolSDK>;
|
|
20
|
+
/**
|
|
21
|
+
* Generate a new coin with random nullifier and secret.
|
|
22
|
+
*/
|
|
23
|
+
generateCoin(): GeneratedCoin;
|
|
24
|
+
/**
|
|
25
|
+
* Generate withdrawal SNARK input from coin data and state.
|
|
26
|
+
*/
|
|
27
|
+
generateWithdrawalInput(coin: CoinData, state: StateFile): SnarkInput;
|
|
28
|
+
/**
|
|
29
|
+
* Convert a snarkjs proof JSON to hex bytes for Soroban.
|
|
30
|
+
*/
|
|
31
|
+
proofToHex(proof: object): string;
|
|
32
|
+
/**
|
|
33
|
+
* Convert snarkjs public signals to hex bytes for Soroban.
|
|
34
|
+
*/
|
|
35
|
+
publicToHex(publicSignals: string[]): string;
|
|
36
|
+
/**
|
|
37
|
+
* Full withdrawal flow: generate input -> witness -> proof -> serialize.
|
|
38
|
+
* Returns proof_hex and public_hex ready for Soroban contract call.
|
|
39
|
+
*/
|
|
40
|
+
prepareWithdrawal(coin: CoinData, state: StateFile): Promise<WithdrawResult>;
|
|
41
|
+
/**
|
|
42
|
+
* Calculate nullifier hash: Poseidon(nullifier)
|
|
43
|
+
* @param nullifier Nullifier decimal string from coin data
|
|
44
|
+
* @returns Hex string (0x...) of the hash bytes
|
|
45
|
+
*/
|
|
46
|
+
calculateNullifierHash(nullifier: string): string;
|
|
47
|
+
}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export interface CoinData {
|
|
2
|
+
value: string;
|
|
3
|
+
nullifier: string;
|
|
4
|
+
secret: string;
|
|
5
|
+
commitment: string;
|
|
6
|
+
}
|
|
7
|
+
export interface GeneratedCoin {
|
|
8
|
+
coin: CoinData;
|
|
9
|
+
commitment_hex: string;
|
|
10
|
+
}
|
|
11
|
+
export interface SnarkInput {
|
|
12
|
+
withdrawnValue: string;
|
|
13
|
+
value: string;
|
|
14
|
+
nullifier: string;
|
|
15
|
+
secret: string;
|
|
16
|
+
stateRoot: string;
|
|
17
|
+
stateIndex: string;
|
|
18
|
+
stateSiblings: string[];
|
|
19
|
+
}
|
|
20
|
+
export interface StateFile {
|
|
21
|
+
commitments: string[];
|
|
22
|
+
}
|
|
23
|
+
export interface WithdrawResult {
|
|
24
|
+
proof_hex: string;
|
|
25
|
+
public_hex: string;
|
|
26
|
+
}
|
|
27
|
+
export interface SDKOptions {
|
|
28
|
+
/** Pre-loaded Rust WASM binary (ArrayBuffer). Required in browser. */
|
|
29
|
+
wasmBinary?: BufferSource;
|
|
30
|
+
/** Pre-loaded circuit WASM binary for witness generation. Required in browser. */
|
|
31
|
+
circuitWasm?: BufferSource;
|
|
32
|
+
/** Pre-loaded zkey binary for proof generation. Required in browser. */
|
|
33
|
+
zkey?: BufferSource;
|
|
34
|
+
}
|
package/dist/wasm.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function loadWasm(wasmBinary?: BufferSource): Promise<any>;
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@auditable/privacy-pool-zk-sdk",
|
|
3
|
+
"version": "0.0.2-rc.6",
|
|
4
|
+
"description": "Client SDK for Soroban Privacy Pools - coin generation, withdrawal proofs, and proof serialization",
|
|
5
|
+
"main": "dist/index.mjs",
|
|
6
|
+
"module": "dist/index.mjs",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.mjs",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
},
|
|
13
|
+
"./assets/witness_calculator.js": "./assets/witness_calculator.js",
|
|
14
|
+
"./pkg/client_sdk_wasm.js": "./pkg/client_sdk_wasm.js"
|
|
15
|
+
},
|
|
16
|
+
"bin": {
|
|
17
|
+
"client-sdk-cli": "./dist/cli.js"
|
|
18
|
+
},
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "https://github.com/Polynom-Labs/stellar-privacy-layer-contracts"
|
|
22
|
+
},
|
|
23
|
+
"files": [
|
|
24
|
+
"dist/",
|
|
25
|
+
"pkg/",
|
|
26
|
+
"assets/"
|
|
27
|
+
],
|
|
28
|
+
"scripts": {
|
|
29
|
+
"build:wasm": "cd crate && wasm-pack build --target web --out-dir ../pkg",
|
|
30
|
+
"build:ts": "rollup -c",
|
|
31
|
+
"build": "rollup -c",
|
|
32
|
+
"cli": "node dist/cli.js"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"snarkjs": "^0.7.0"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"rollup": "^4.0.0",
|
|
39
|
+
"@rollup/plugin-alias": "^5.0.0",
|
|
40
|
+
"@rollup/plugin-typescript": "^11.0.0",
|
|
41
|
+
"@rollup/plugin-node-resolve": "^15.0.0",
|
|
42
|
+
"@rollup/plugin-commonjs": "^25.0.0",
|
|
43
|
+
"@rollup/plugin-json": "^6.0.0",
|
|
44
|
+
"rollup-plugin-copy": "^3.5.0",
|
|
45
|
+
"typescript": "^5.0.0",
|
|
46
|
+
"tslib": "^2.6.0",
|
|
47
|
+
"@types/node": "^20.0.0"
|
|
48
|
+
}
|
|
49
|
+
}
|