feat: use verifyWithRoots for verifying proofs

This commit is contained in:
Richard Ramos 2022-10-07 14:49:32 -04:00
parent b40b4d68fe
commit 78f9e9b38f
No known key found for this signature in database
GPG Key ID: BD36D48BC9FFC88C
6 changed files with 18212 additions and 1570 deletions

View File

@ -2,7 +2,16 @@
"version": "0.1",
"$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/master/cspell.schema.json",
"language": "en",
"words": ["Waku", "keypair", "merkle", "vkey", "zkey", "circom", "zerokit"],
"words": [
"Waku",
"keypair",
"merkle",
"vkey",
"zkey",
"circom",
"zerokit",
"nwaku"
],
"flagWords": [],
"ignorePaths": [
"package.json",

19698
example/package-lock.json generated

File diff suppressed because it is too large Load Diff

39
package-lock.json generated
View File

@ -1,15 +1,15 @@
{
"name": "@waku/rln",
"version": "0.0.10",
"version": "0.0.11",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@waku/rln",
"version": "0.0.10",
"version": "0.0.11",
"license": "MIT OR Apache-2.0",
"dependencies": {
"@waku/zerokit-rln-wasm": "^0.0.3"
"@waku/zerokit-rln-wasm": "^0.0.4"
},
"devDependencies": {
"@rollup/plugin-commonjs": "^22.0.2",
@ -2549,9 +2549,9 @@
"dev": true
},
"node_modules/@waku/zerokit-rln-wasm": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/@waku/zerokit-rln-wasm/-/zerokit-rln-wasm-0.0.3.tgz",
"integrity": "sha512-vN2lfCbFChB1ZiyNpE34NBELJ7IabBgdWtzOnvOwuwmuQgAsWCdvt7UGtjRfogMxr2clSTrI1pVYSD9ayf/d4w=="
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/@waku/zerokit-rln-wasm/-/zerokit-rln-wasm-0.0.4.tgz",
"integrity": "sha512-J5Dh3CQAvSk1cn6Pv61wbTwuB0Sc1gR53ljVFqAovvTQSmMxY3I8vjE2vml5dLlhVCIlSAfBfnOr/OaBD3b0Mg=="
},
"node_modules/@web/rollup-plugin-import-meta-assets": {
"version": "1.0.7",
@ -5374,20 +5374,6 @@
"dev": true,
"license": "ISC"
},
"node_modules/fsevents": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"dev": true,
"hasInstallScript": true,
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/function-bind": {
"version": "1.1.1",
"dev": true,
@ -12995,9 +12981,9 @@
"dev": true
},
"@waku/zerokit-rln-wasm": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/@waku/zerokit-rln-wasm/-/zerokit-rln-wasm-0.0.3.tgz",
"integrity": "sha512-vN2lfCbFChB1ZiyNpE34NBELJ7IabBgdWtzOnvOwuwmuQgAsWCdvt7UGtjRfogMxr2clSTrI1pVYSD9ayf/d4w=="
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/@waku/zerokit-rln-wasm/-/zerokit-rln-wasm-0.0.4.tgz",
"integrity": "sha512-J5Dh3CQAvSk1cn6Pv61wbTwuB0Sc1gR53ljVFqAovvTQSmMxY3I8vjE2vml5dLlhVCIlSAfBfnOr/OaBD3b0Mg=="
},
"@web/rollup-plugin-import-meta-assets": {
"version": "1.0.7",
@ -14933,13 +14919,6 @@
"version": "1.0.0",
"dev": true
},
"fsevents": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"dev": true,
"optional": true
},
"function-bind": {
"version": "1.1.1",
"dev": true

View File

@ -1,6 +1,6 @@
{
"name": "@waku/rln",
"version": "0.0.10",
"version": "0.0.11",
"description": "Rate Limit Nullifier for js-waku",
"types": "./dist/index.d.ts",
"module": "./dist/index.js",
@ -125,6 +125,6 @@
]
},
"dependencies": {
"@waku/zerokit-rln-wasm": "^0.0.3"
"@waku/zerokit-rln-wasm": "^0.0.4"
}
}

View File

@ -18,7 +18,7 @@ export class RlnMessage<T extends Message> implements Message {
public verify(): boolean | undefined {
return this.rateLimitProof
? this.rlnInstance.verifyRLNProof(this.rateLimitProof, toRLNSignal(this))
? this.rlnInstance.verifyWithRoots(this.rateLimitProof, toRLNSignal(this)) // this.rlnInstance.verifyRLNProof once issue status-im/nwaku#1248 is fixed
: undefined;
}

View File

@ -129,6 +129,10 @@ export class RLNInstance {
zerokitRLN.insertMember(this.zkRLN, idCommitment);
}
getMerkleRoot(): Uint8Array {
return zerokitRLN.getRoot(this.zkRLN);
}
serializeMessage(
uint8Msg: Uint8Array,
memIndex: number,
@ -197,4 +201,28 @@ export class RLNInstance {
concatenate(pBytes, msgLen, msg)
);
}
verifyWithRoots(
proof: RateLimitProof | Uint8Array,
msg: Uint8Array
): boolean {
let pBytes: Uint8Array;
if (proof instanceof Uint8Array) {
pBytes = proof;
} else {
pBytes = proofToBytes(proof);
}
// calculate message length
const msgLen = writeUIntLE(new Uint8Array(8), msg.length, 0, 8);
// obtain root
const root = zerokitRLN.getRoot(this.zkRLN);
return zerokitRLN.verifyWithRoots(
this.zkRLN,
concatenate(pBytes, msgLen, msg),
root
);
}
}