@waku/rln 0.1.1 → 0.1.2-3dc5908
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/README.md +26 -2
- package/bundle/assets/rln_wasm_bg-a503e304.wasm +0 -0
- package/bundle/index.js +56177 -8760
- package/dist/codec.d.ts +7 -4
- package/dist/codec.js +15 -5
- package/dist/codec.js.map +1 -1
- package/dist/{constants.d.ts → contract/constants.d.ts} +2 -2
- package/dist/contract/constants.js +67 -0
- package/dist/contract/constants.js.map +1 -0
- package/dist/contract/index.d.ts +2 -0
- package/dist/contract/index.js +3 -0
- package/dist/contract/index.js.map +1 -0
- package/dist/contract/rln_contract.d.ts +46 -0
- package/dist/contract/rln_contract.js +211 -0
- package/dist/contract/rln_contract.js.map +1 -0
- package/dist/create.d.ts +2 -0
- package/dist/create.js +8 -0
- package/dist/create.js.map +1 -0
- package/dist/identity.d.ts +9 -0
- package/dist/identity.js +24 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +9 -5
- package/dist/index.js +9 -12
- package/dist/index.js.map +1 -1
- package/dist/keystore/cipher.d.ts +4 -0
- package/dist/keystore/cipher.js +28 -0
- package/dist/keystore/cipher.js.map +1 -0
- package/dist/keystore/credential_validation_generated.d.ts +8 -0
- package/dist/keystore/credential_validation_generated.js +121 -0
- package/dist/keystore/credential_validation_generated.js.map +1 -0
- package/dist/keystore/index.d.ts +4 -0
- package/dist/keystore/index.js +3 -0
- package/dist/keystore/index.js.map +1 -0
- package/dist/keystore/keystore.d.ts +50 -0
- package/dist/keystore/keystore.js +205 -0
- package/dist/keystore/keystore.js.map +1 -0
- package/dist/keystore/keystore_validation_generated.d.ts +8 -0
- package/dist/keystore/keystore_validation_generated.js +75 -0
- package/dist/keystore/keystore_validation_generated.js.map +1 -0
- package/dist/keystore/schema_validator.d.ts +2 -0
- package/dist/keystore/schema_validator.js +18 -0
- package/dist/keystore/schema_validator.js.map +1 -0
- package/dist/keystore/types.d.ts +29 -0
- package/dist/keystore/types.js +2 -0
- package/dist/keystore/types.js.map +1 -0
- package/dist/message.d.ts +2 -1
- package/dist/message.js +10 -4
- package/dist/message.js.map +1 -1
- package/dist/proof.d.ts +21 -0
- package/dist/proof.js +49 -0
- package/dist/proof.js.map +1 -0
- package/dist/resources/verification_key.d.ts +9 -9
- package/dist/resources/witness_calculator.js.map +1 -0
- package/dist/rln.d.ts +55 -46
- package/dist/rln.js +136 -183
- package/dist/rln.js.map +1 -1
- package/dist/root_tracker.js +5 -2
- package/dist/root_tracker.js.map +1 -1
- package/dist/utils/bytes.d.ts +20 -0
- package/dist/utils/bytes.js +64 -0
- package/dist/utils/bytes.js.map +1 -0
- package/dist/utils/epoch.js.map +1 -0
- package/dist/utils/hash.d.ts +2 -0
- package/dist/utils/hash.js +13 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/metamask.d.ts +2 -0
- package/dist/utils/metamask.js +12 -0
- package/dist/utils/metamask.js.map +1 -0
- package/dist/zerokit.d.ts +19 -0
- package/dist/zerokit.js +105 -0
- package/dist/zerokit.js.map +1 -0
- package/package.json +38 -28
- package/src/codec.ts +18 -9
- package/src/create.ts +9 -0
- package/src/identity.ts +27 -0
- package/src/index.ts +16 -18
- package/src/message.ts +9 -5
- package/src/proof.ts +67 -0
- package/src/rln.ts +220 -270
- package/src/root_tracker.ts +4 -1
- package/src/zerokit.ts +181 -0
- package/bundle/assets/rln_wasm_bg-6f96f821.wasm +0 -0
- package/dist/.tsbuildinfo +0 -1
- package/dist/byte_utils.d.ts +0 -1
- package/dist/byte_utils.js +0 -24
- package/dist/byte_utils.js.map +0 -1
- package/dist/constants.js +0 -14
- package/dist/constants.js.map +0 -1
- package/dist/epoch.js.map +0 -1
- package/dist/rln_contract.d.ts +0 -34
- package/dist/rln_contract.js +0 -159
- package/dist/rln_contract.js.map +0 -1
- package/dist/witness_calculator.js.map +0 -1
- package/src/byte_utils.ts +0 -39
- package/src/constants.ts +0 -14
- package/src/epoch.ts +0 -30
- package/src/rln_contract.ts +0 -268
- package/src/witness_calculator.d.ts +0 -8
- package/src/witness_calculator.js +0 -335
- /package/dist/{witness_calculator.d.ts → resources/witness_calculator.d.ts} +0 -0
- /package/dist/{witness_calculator.js → resources/witness_calculator.js} +0 -0
- /package/dist/{epoch.d.ts → utils/epoch.d.ts} +0 -0
- /package/dist/{epoch.js → utils/epoch.js} +0 -0
package/dist/message.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"message.js","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,UAAU,WAAW,CAAC,YAAoB,EAAE,GAAa;IAC7D,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAChE,OAAO,IAAI,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,iBAAiB,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,OAAO,UAAU;IAIZ;IACA;IACA;IALF,WAAW,GAAG,EAAE,CAAC;IAExB,YACS,WAAwB,EACxB,GAAM,EACN,cAA2C;QAF3C,gBAAW,GAAX,WAAW,CAAa;QACxB,QAAG,GAAH,GAAG,CAAG;QACN,mBAAc,GAAd,cAAc,CAA6B;IACjD,CAAC;IAEG,MAAM,CAAC,KAAmB;QAC/B,OAAO,IAAI,CAAC,cAAc;YACxB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,CACtC,IAAI,CAAC,cAAc,EACnB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,EAC5C,GAAG,KAAK,CACT,CAAC,2EAA2E;YAC/E,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,cAAc;YACxB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CACvC,IAAI,CAAC,cAAc,EACnB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAC7C,CAAC,2EAA2E;YAC/E,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;IAC/B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;IAC5B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;IAC5B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,IAAI,KAAK;QACP,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC;QAC7C,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CACF"}
|
package/dist/proof.d.ts
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
import type { IRateLimitProof } from "@waku/interfaces";
|
2
|
+
declare class ProofMetadata {
|
3
|
+
readonly nullifier: Uint8Array;
|
4
|
+
readonly shareX: Uint8Array;
|
5
|
+
readonly shareY: Uint8Array;
|
6
|
+
readonly externalNullifier: Uint8Array;
|
7
|
+
constructor(nullifier: Uint8Array, shareX: Uint8Array, shareY: Uint8Array, externalNullifier: Uint8Array);
|
8
|
+
}
|
9
|
+
export declare class Proof implements IRateLimitProof {
|
10
|
+
readonly proof: Uint8Array;
|
11
|
+
readonly merkleRoot: Uint8Array;
|
12
|
+
readonly epoch: Uint8Array;
|
13
|
+
readonly shareX: Uint8Array;
|
14
|
+
readonly shareY: Uint8Array;
|
15
|
+
readonly nullifier: Uint8Array;
|
16
|
+
readonly rlnIdentifier: Uint8Array;
|
17
|
+
constructor(proofBytes: Uint8Array);
|
18
|
+
extractMetadata(): ProofMetadata;
|
19
|
+
}
|
20
|
+
export declare function proofToBytes(p: IRateLimitProof): Uint8Array;
|
21
|
+
export {};
|
package/dist/proof.js
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
import { concatenate, poseidonHash } from "./utils/index.js";
|
2
|
+
const proofOffset = 128;
|
3
|
+
const rootOffset = proofOffset + 32;
|
4
|
+
const epochOffset = rootOffset + 32;
|
5
|
+
const shareXOffset = epochOffset + 32;
|
6
|
+
const shareYOffset = shareXOffset + 32;
|
7
|
+
const nullifierOffset = shareYOffset + 32;
|
8
|
+
const rlnIdentifierOffset = nullifierOffset + 32;
|
9
|
+
class ProofMetadata {
|
10
|
+
nullifier;
|
11
|
+
shareX;
|
12
|
+
shareY;
|
13
|
+
externalNullifier;
|
14
|
+
constructor(nullifier, shareX, shareY, externalNullifier) {
|
15
|
+
this.nullifier = nullifier;
|
16
|
+
this.shareX = shareX;
|
17
|
+
this.shareY = shareY;
|
18
|
+
this.externalNullifier = externalNullifier;
|
19
|
+
}
|
20
|
+
}
|
21
|
+
export class Proof {
|
22
|
+
proof;
|
23
|
+
merkleRoot;
|
24
|
+
epoch;
|
25
|
+
shareX;
|
26
|
+
shareY;
|
27
|
+
nullifier;
|
28
|
+
rlnIdentifier;
|
29
|
+
constructor(proofBytes) {
|
30
|
+
if (proofBytes.length < rlnIdentifierOffset)
|
31
|
+
throw "invalid proof";
|
32
|
+
// parse the proof as proof<128> | share_y<32> | nullifier<32> | root<32> | epoch<32> | share_x<32> | rln_identifier<32>
|
33
|
+
this.proof = proofBytes.subarray(0, proofOffset);
|
34
|
+
this.merkleRoot = proofBytes.subarray(proofOffset, rootOffset);
|
35
|
+
this.epoch = proofBytes.subarray(rootOffset, epochOffset);
|
36
|
+
this.shareX = proofBytes.subarray(epochOffset, shareXOffset);
|
37
|
+
this.shareY = proofBytes.subarray(shareXOffset, shareYOffset);
|
38
|
+
this.nullifier = proofBytes.subarray(shareYOffset, nullifierOffset);
|
39
|
+
this.rlnIdentifier = proofBytes.subarray(nullifierOffset, rlnIdentifierOffset);
|
40
|
+
}
|
41
|
+
extractMetadata() {
|
42
|
+
const externalNullifier = poseidonHash(this.epoch, this.rlnIdentifier);
|
43
|
+
return new ProofMetadata(this.nullifier, this.shareX, this.shareY, externalNullifier);
|
44
|
+
}
|
45
|
+
}
|
46
|
+
export function proofToBytes(p) {
|
47
|
+
return concatenate(p.proof, p.merkleRoot, p.epoch, p.shareX, p.shareY, p.nullifier, p.rlnIdentifier);
|
48
|
+
}
|
49
|
+
//# sourceMappingURL=proof.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"proof.js","sourceRoot":"","sources":["../src/proof.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE7D,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,UAAU,GAAG,WAAW,GAAG,EAAE,CAAC;AACpC,MAAM,WAAW,GAAG,UAAU,GAAG,EAAE,CAAC;AACpC,MAAM,YAAY,GAAG,WAAW,GAAG,EAAE,CAAC;AACtC,MAAM,YAAY,GAAG,YAAY,GAAG,EAAE,CAAC;AACvC,MAAM,eAAe,GAAG,YAAY,GAAG,EAAE,CAAC;AAC1C,MAAM,mBAAmB,GAAG,eAAe,GAAG,EAAE,CAAC;AAEjD,MAAM,aAAa;IAEC;IACA;IACA;IACA;IAJlB,YACkB,SAAqB,EACrB,MAAkB,EAClB,MAAkB,EAClB,iBAA6B;QAH7B,cAAS,GAAT,SAAS,CAAY;QACrB,WAAM,GAAN,MAAM,CAAY;QAClB,WAAM,GAAN,MAAM,CAAY;QAClB,sBAAiB,GAAjB,iBAAiB,CAAY;IAC5C,CAAC;CACL;AAED,MAAM,OAAO,KAAK;IACP,KAAK,CAAa;IAClB,UAAU,CAAa;IACvB,KAAK,CAAa;IAClB,MAAM,CAAa;IACnB,MAAM,CAAa;IACnB,SAAS,CAAa;IACtB,aAAa,CAAa;IAEnC,YAAY,UAAsB;QAChC,IAAI,UAAU,CAAC,MAAM,GAAG,mBAAmB;YAAE,MAAM,eAAe,CAAC;QACnE,wHAAwH;QACxH,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAC9D,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QACpE,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,QAAQ,CACtC,eAAe,EACf,mBAAmB,CACpB,CAAC;IACJ,CAAC;IAED,eAAe;QACb,MAAM,iBAAiB,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACvE,OAAO,IAAI,aAAa,CACtB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,EACX,iBAAiB,CAClB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAAC,CAAkB;IAC7C,OAAO,WAAW,CAChB,CAAC,CAAC,KAAK,EACP,CAAC,CAAC,UAAU,EACZ,CAAC,CAAC,KAAK,EACP,CAAC,CAAC,MAAM,EACR,CAAC,CAAC,MAAM,EACR,CAAC,CAAC,SAAS,EACX,CAAC,CAAC,aAAa,CAChB,CAAC;AACJ,CAAC"}
|
@@ -1,12 +1,12 @@
|
|
1
1
|
export default verificationKey;
|
2
2
|
declare namespace verificationKey {
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
3
|
+
let protocol: string;
|
4
|
+
let curve: string;
|
5
|
+
let nPublic: number;
|
6
|
+
let vk_alpha_1: string[];
|
7
|
+
let vk_beta_2: string[][];
|
8
|
+
let vk_gamma_2: string[][];
|
9
|
+
let vk_delta_2: string[][];
|
10
|
+
let vk_alphabeta_12: string[][][];
|
11
|
+
let IC: string[][];
|
12
12
|
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"witness_calculator.js","sourceRoot":"","sources":["../../src/resources/witness_calculator.js"],"names":[],"mappings":"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"}
|
package/dist/rln.d.ts
CHANGED
@@ -1,53 +1,62 @@
|
|
1
|
-
import type {
|
2
|
-
import {
|
1
|
+
import type { ContentTopic, IDecodedMessage, EncoderOptions as WakuEncoderOptions } from "@waku/interfaces";
|
2
|
+
import { ethers } from "ethers";
|
3
|
+
import { type RLNDecoder, type RLNEncoder } from "./codec.js";
|
4
|
+
import { RLNContract } from "./contract/index.js";
|
5
|
+
import { IdentityCredential } from "./identity.js";
|
6
|
+
import type { DecryptedCredentials, EncryptedCredentials } from "./keystore/index.js";
|
7
|
+
import { Password } from "./keystore/types.js";
|
8
|
+
import { Zerokit } from "./zerokit.js";
|
3
9
|
/**
|
4
10
|
* Create an instance of RLN
|
5
11
|
* @returns RLNInstance
|
6
12
|
*/
|
7
13
|
export declare function create(): Promise<RLNInstance>;
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
readonly rlnIdentifier: Uint8Array;
|
32
|
-
constructor(proofBytes: Uint8Array);
|
33
|
-
extractMetadata(): ProofMetadata;
|
34
|
-
}
|
35
|
-
export declare function proofToBytes(p: IRateLimitProof): Uint8Array;
|
36
|
-
export declare function poseidonHash(...input: Array<Uint8Array>): Uint8Array;
|
37
|
-
export declare function sha256(input: Uint8Array): Uint8Array;
|
14
|
+
type StartRLNOptions = {
|
15
|
+
/**
|
16
|
+
* If not set - will extract MetaMask account and get signer from it.
|
17
|
+
*/
|
18
|
+
signer?: ethers.Signer;
|
19
|
+
/**
|
20
|
+
* If not set - will use default SEPOLIA_CONTRACT address.
|
21
|
+
*/
|
22
|
+
registryAddress?: string;
|
23
|
+
/**
|
24
|
+
* Credentials to use for generating proofs and connecting to the contract and network.
|
25
|
+
* If provided used for validating the network chainId and connecting to registry contract.
|
26
|
+
*/
|
27
|
+
credentials?: EncryptedCredentials | DecryptedCredentials;
|
28
|
+
};
|
29
|
+
type RegisterMembershipOptions = {
|
30
|
+
signature: string;
|
31
|
+
} | {
|
32
|
+
identity: IdentityCredential;
|
33
|
+
};
|
34
|
+
type WakuRLNEncoderOptions = WakuEncoderOptions & {
|
35
|
+
credentials: EncryptedCredentials | DecryptedCredentials;
|
36
|
+
};
|
38
37
|
export declare class RLNInstance {
|
39
|
-
|
40
|
-
private
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
38
|
+
zerokit: Zerokit;
|
39
|
+
private started;
|
40
|
+
private starting;
|
41
|
+
private _contract;
|
42
|
+
private _signer;
|
43
|
+
private keystore;
|
44
|
+
private _credentials;
|
45
|
+
constructor(zerokit: Zerokit);
|
46
|
+
get contract(): undefined | RLNContract;
|
47
|
+
get signer(): undefined | ethers.Signer;
|
48
|
+
start(options?: StartRLNOptions): Promise<void>;
|
49
|
+
private determineStartOptions;
|
50
|
+
private static decryptCredentialsIfNeeded;
|
51
|
+
registerMembership(options: RegisterMembershipOptions): Promise<undefined | DecryptedCredentials>;
|
52
|
+
/**
|
53
|
+
* Changes credentials in use by relying on provided Keystore earlier in rln.start
|
54
|
+
* @param id: string, hash of credentials to select from Keystore
|
55
|
+
* @param password: string or bytes to use to decrypt credentials from Keystore
|
56
|
+
*/
|
57
|
+
useCredentials(id: string, password: Password): Promise<void>;
|
58
|
+
createEncoder(options: WakuRLNEncoderOptions): Promise<RLNEncoder>;
|
59
|
+
private verifyCredentialsAgainstContract;
|
60
|
+
createDecoder(contentTopic: ContentTopic): RLNDecoder<IDecodedMessage>;
|
53
61
|
}
|
62
|
+
export {};
|
package/dist/rln.js
CHANGED
@@ -1,37 +1,13 @@
|
|
1
|
-
import
|
2
|
-
import
|
3
|
-
import
|
1
|
+
import { createDecoder, createEncoder } from "@waku/core";
|
2
|
+
import init from "@waku/zerokit-rln-wasm";
|
3
|
+
import * as zerokitRLN from "@waku/zerokit-rln-wasm";
|
4
|
+
import { createRLNDecoder, createRLNEncoder } from "./codec.js";
|
5
|
+
import { RLNContract, SEPOLIA_CONTRACT } from "./contract/index.js";
|
6
|
+
import { Keystore } from "./keystore/index.js";
|
4
7
|
import verificationKey from "./resources/verification_key.js";
|
5
|
-
import * as wc from "./witness_calculator.js";
|
6
|
-
|
7
|
-
|
8
|
-
* @param input
|
9
|
-
* @returns concatenation of all Uint8Array received as input
|
10
|
-
*/
|
11
|
-
function concatenate(...input) {
|
12
|
-
let totalLength = 0;
|
13
|
-
for (const arr of input) {
|
14
|
-
totalLength += arr.length;
|
15
|
-
}
|
16
|
-
const result = new Uint8Array(totalLength);
|
17
|
-
let offset = 0;
|
18
|
-
for (const arr of input) {
|
19
|
-
result.set(arr, offset);
|
20
|
-
offset += arr.length;
|
21
|
-
}
|
22
|
-
return result;
|
23
|
-
}
|
24
|
-
/**
|
25
|
-
* Transforms Uint8Array into BigInt
|
26
|
-
* @param array: Uint8Array
|
27
|
-
* @returns BigInt
|
28
|
-
*/
|
29
|
-
function buildBigIntFromUint8Array(array) {
|
30
|
-
const dataView = new DataView(array.buffer);
|
31
|
-
return dataView.getBigUint64(0, true);
|
32
|
-
}
|
33
|
-
const stringEncoder = new TextEncoder();
|
34
|
-
const DEPTH = 20;
|
8
|
+
import * as wc from "./resources/witness_calculator.js";
|
9
|
+
import { extractMetaMaskSigner } from "./utils/index.js";
|
10
|
+
import { Zerokit } from "./zerokit.js";
|
35
11
|
async function loadWitnessCalculator() {
|
36
12
|
const url = new URL("./resources/rln.wasm", import.meta.url);
|
37
13
|
const response = await fetch(url);
|
@@ -47,172 +23,149 @@ async function loadZkey() {
|
|
47
23
|
* @returns RLNInstance
|
48
24
|
*/
|
49
25
|
export async function create() {
|
50
|
-
|
26
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
27
|
+
await init?.();
|
51
28
|
zerokitRLN.init_panic_hook();
|
52
29
|
const witnessCalculator = await loadWitnessCalculator();
|
53
30
|
const zkey = await loadZkey();
|
31
|
+
const stringEncoder = new TextEncoder();
|
54
32
|
const vkey = stringEncoder.encode(JSON.stringify(verificationKey));
|
33
|
+
const DEPTH = 20;
|
55
34
|
const zkRLN = zerokitRLN.newRLN(DEPTH, zkey, vkey);
|
56
|
-
|
57
|
-
|
58
|
-
export class IdentityCredential {
|
59
|
-
constructor(IDTrapdoor, IDNullifier, IDSecretHash, IDCommitment, IDCommitmentBigInt) {
|
60
|
-
this.IDTrapdoor = IDTrapdoor;
|
61
|
-
this.IDNullifier = IDNullifier;
|
62
|
-
this.IDSecretHash = IDSecretHash;
|
63
|
-
this.IDCommitment = IDCommitment;
|
64
|
-
this.IDCommitmentBigInt = IDCommitmentBigInt;
|
65
|
-
}
|
66
|
-
static fromBytes(memKeys) {
|
67
|
-
const idTrapdoor = memKeys.subarray(0, 32);
|
68
|
-
const idNullifier = memKeys.subarray(32, 64);
|
69
|
-
const idSecretHash = memKeys.subarray(64, 96);
|
70
|
-
const idCommitment = memKeys.subarray(96);
|
71
|
-
const idCommitmentBigInt = buildBigIntFromUint8Array(idCommitment);
|
72
|
-
return new IdentityCredential(idTrapdoor, idNullifier, idSecretHash, idCommitment, idCommitmentBigInt);
|
73
|
-
}
|
74
|
-
}
|
75
|
-
const proofOffset = 128;
|
76
|
-
const rootOffset = proofOffset + 32;
|
77
|
-
const epochOffset = rootOffset + 32;
|
78
|
-
const shareXOffset = epochOffset + 32;
|
79
|
-
const shareYOffset = shareXOffset + 32;
|
80
|
-
const nullifierOffset = shareYOffset + 32;
|
81
|
-
const rlnIdentifierOffset = nullifierOffset + 32;
|
82
|
-
export class ProofMetadata {
|
83
|
-
constructor(nullifier, shareX, shareY, externalNullifier) {
|
84
|
-
this.nullifier = nullifier;
|
85
|
-
this.shareX = shareX;
|
86
|
-
this.shareY = shareY;
|
87
|
-
this.externalNullifier = externalNullifier;
|
88
|
-
}
|
89
|
-
}
|
90
|
-
export class Proof {
|
91
|
-
constructor(proofBytes) {
|
92
|
-
if (proofBytes.length < rlnIdentifierOffset)
|
93
|
-
throw "invalid proof";
|
94
|
-
// parse the proof as proof<128> | share_y<32> | nullifier<32> | root<32> | epoch<32> | share_x<32> | rln_identifier<32>
|
95
|
-
this.proof = proofBytes.subarray(0, proofOffset);
|
96
|
-
this.merkleRoot = proofBytes.subarray(proofOffset, rootOffset);
|
97
|
-
this.epoch = proofBytes.subarray(rootOffset, epochOffset);
|
98
|
-
this.shareX = proofBytes.subarray(epochOffset, shareXOffset);
|
99
|
-
this.shareY = proofBytes.subarray(shareXOffset, shareYOffset);
|
100
|
-
this.nullifier = proofBytes.subarray(shareYOffset, nullifierOffset);
|
101
|
-
this.rlnIdentifier = proofBytes.subarray(nullifierOffset, rlnIdentifierOffset);
|
102
|
-
}
|
103
|
-
extractMetadata() {
|
104
|
-
const externalNullifier = poseidonHash(this.epoch, this.rlnIdentifier);
|
105
|
-
return new ProofMetadata(this.nullifier, this.shareX, this.shareY, externalNullifier);
|
106
|
-
}
|
107
|
-
}
|
108
|
-
export function proofToBytes(p) {
|
109
|
-
return concatenate(p.proof, p.merkleRoot, p.epoch, p.shareX, p.shareY, p.nullifier, p.rlnIdentifier);
|
110
|
-
}
|
111
|
-
export function poseidonHash(...input) {
|
112
|
-
const inputLen = writeUIntLE(new Uint8Array(8), input.length, 0, 8);
|
113
|
-
const lenPrefixedData = concatenate(inputLen, ...input);
|
114
|
-
return zerokitRLN.poseidonHash(lenPrefixedData);
|
115
|
-
}
|
116
|
-
export function sha256(input) {
|
117
|
-
const inputLen = writeUIntLE(new Uint8Array(8), input.length, 0, 8);
|
118
|
-
const lenPrefixedData = concatenate(inputLen, input);
|
119
|
-
return zerokitRLN.hash(lenPrefixedData);
|
35
|
+
const zerokit = new Zerokit(zkRLN, witnessCalculator);
|
36
|
+
return new RLNInstance(zerokit);
|
120
37
|
}
|
121
38
|
export class RLNInstance {
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
}
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
const memIndexBytes = writeUIntLE(new Uint8Array(8), memIndex, 0, 8);
|
157
|
-
// [ id_key<32> | id_index<8> | epoch<32> | signal_len<8> | signal<var> ]
|
158
|
-
return concatenate(idKey, memIndexBytes, epoch, msgLen, uint8Msg);
|
159
|
-
}
|
160
|
-
async generateRLNProof(msg, index, epoch, idSecretHash) {
|
161
|
-
if (epoch == undefined) {
|
162
|
-
epoch = epochIntToBytes(dateToEpoch(new Date()));
|
39
|
+
zerokit;
|
40
|
+
started = false;
|
41
|
+
starting = false;
|
42
|
+
_contract;
|
43
|
+
_signer;
|
44
|
+
keystore = Keystore.create();
|
45
|
+
_credentials;
|
46
|
+
constructor(zerokit) {
|
47
|
+
this.zerokit = zerokit;
|
48
|
+
}
|
49
|
+
get contract() {
|
50
|
+
return this._contract;
|
51
|
+
}
|
52
|
+
get signer() {
|
53
|
+
return this._signer;
|
54
|
+
}
|
55
|
+
async start(options = {}) {
|
56
|
+
if (this.started || this.starting) {
|
57
|
+
return;
|
58
|
+
}
|
59
|
+
this.starting = true;
|
60
|
+
try {
|
61
|
+
const { credentials, keystore } = await RLNInstance.decryptCredentialsIfNeeded(options.credentials);
|
62
|
+
const { signer, registryAddress } = await this.determineStartOptions(options, credentials);
|
63
|
+
if (keystore) {
|
64
|
+
this.keystore = keystore;
|
65
|
+
}
|
66
|
+
this._credentials = credentials;
|
67
|
+
this._signer = signer;
|
68
|
+
this._contract = await RLNContract.init(this, {
|
69
|
+
registryAddress: registryAddress,
|
70
|
+
signer: signer
|
71
|
+
});
|
72
|
+
this.started = true;
|
163
73
|
}
|
164
|
-
|
165
|
-
|
74
|
+
finally {
|
75
|
+
this.starting = false;
|
166
76
|
}
|
167
|
-
if (epoch.length != 32)
|
168
|
-
throw "invalid epoch";
|
169
|
-
if (idSecretHash.length != 32)
|
170
|
-
throw "invalid id secret hash";
|
171
|
-
if (index < 0)
|
172
|
-
throw "index must be >= 0";
|
173
|
-
const serialized_msg = this.serializeMessage(msg, index, epoch, idSecretHash);
|
174
|
-
const rlnWitness = zerokitRLN.getSerializedRLNWitness(this.zkRLN, serialized_msg);
|
175
|
-
const inputs = zerokitRLN.RLNWitnessToJson(this.zkRLN, rlnWitness);
|
176
|
-
const calculatedWitness = await this.witnessCalculator.calculateWitness(inputs, false); // no sanity check being used in zerokit
|
177
|
-
const proofBytes = zerokitRLN.generate_rln_proof_with_witness(this.zkRLN, calculatedWitness, rlnWitness);
|
178
|
-
return new Proof(proofBytes);
|
179
77
|
}
|
180
|
-
|
181
|
-
let
|
182
|
-
|
183
|
-
|
78
|
+
async determineStartOptions(options, credentials) {
|
79
|
+
let chainId = credentials?.membership.chainId;
|
80
|
+
const registryAddress = credentials?.membership.address ||
|
81
|
+
options.registryAddress ||
|
82
|
+
SEPOLIA_CONTRACT.address;
|
83
|
+
if (registryAddress === SEPOLIA_CONTRACT.address) {
|
84
|
+
chainId = SEPOLIA_CONTRACT.chainId;
|
184
85
|
}
|
185
|
-
|
186
|
-
|
86
|
+
const signer = options.signer || (await extractMetaMaskSigner());
|
87
|
+
const currentChainId = await signer.getChainId();
|
88
|
+
if (chainId && chainId !== currentChainId) {
|
89
|
+
throw Error(`Failed to start RLN contract, chain ID of contract is different from current one: contract-${chainId}, current network-${currentChainId}`);
|
187
90
|
}
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
if (
|
195
|
-
|
91
|
+
return {
|
92
|
+
signer,
|
93
|
+
registryAddress
|
94
|
+
};
|
95
|
+
}
|
96
|
+
static async decryptCredentialsIfNeeded(credentials) {
|
97
|
+
if (!credentials) {
|
98
|
+
return {};
|
196
99
|
}
|
197
|
-
|
198
|
-
|
100
|
+
if ("identity" in credentials) {
|
101
|
+
return { credentials };
|
199
102
|
}
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
103
|
+
const keystore = Keystore.fromString(credentials.keystore);
|
104
|
+
if (!keystore) {
|
105
|
+
return {};
|
106
|
+
}
|
107
|
+
const decryptedCredentials = await keystore.readCredential(credentials.id, credentials.password);
|
108
|
+
return {
|
109
|
+
keystore,
|
110
|
+
credentials: decryptedCredentials
|
111
|
+
};
|
112
|
+
}
|
113
|
+
async registerMembership(options) {
|
114
|
+
if (!this.contract) {
|
115
|
+
throw Error("RLN Contract is not initialized.");
|
116
|
+
}
|
117
|
+
let identity = "identity" in options && options.identity;
|
118
|
+
if ("signature" in options) {
|
119
|
+
identity = this.zerokit.generateSeededIdentityCredential(options.signature);
|
120
|
+
}
|
121
|
+
if (!identity) {
|
122
|
+
throw Error("Missing signature or identity to register membership.");
|
209
123
|
}
|
210
|
-
|
211
|
-
|
124
|
+
return this.contract.registerWithIdentity(identity);
|
125
|
+
}
|
126
|
+
/**
|
127
|
+
* Changes credentials in use by relying on provided Keystore earlier in rln.start
|
128
|
+
* @param id: string, hash of credentials to select from Keystore
|
129
|
+
* @param password: string or bytes to use to decrypt credentials from Keystore
|
130
|
+
*/
|
131
|
+
async useCredentials(id, password) {
|
132
|
+
this._credentials = await this.keystore?.readCredential(id, password);
|
133
|
+
}
|
134
|
+
async createEncoder(options) {
|
135
|
+
const { credentials: decryptedCredentials } = await RLNInstance.decryptCredentialsIfNeeded(options.credentials);
|
136
|
+
const credentials = decryptedCredentials || this._credentials;
|
137
|
+
if (!credentials) {
|
138
|
+
throw Error("Failed to create Encoder: missing RLN credentials. Use createRLNEncoder directly.");
|
212
139
|
}
|
213
|
-
|
214
|
-
|
215
|
-
|
140
|
+
await this.verifyCredentialsAgainstContract(credentials);
|
141
|
+
return createRLNEncoder({
|
142
|
+
encoder: createEncoder(options),
|
143
|
+
rlnInstance: this,
|
144
|
+
index: credentials.membership.treeIndex,
|
145
|
+
credential: credentials.identity
|
146
|
+
});
|
147
|
+
}
|
148
|
+
async verifyCredentialsAgainstContract(credentials) {
|
149
|
+
if (!this._contract) {
|
150
|
+
throw Error("Failed to verify chain coordinates: no contract initialized.");
|
151
|
+
}
|
152
|
+
const registryAddress = credentials.membership.address;
|
153
|
+
const currentRegistryAddress = this._contract.registry.address;
|
154
|
+
if (registryAddress !== currentRegistryAddress) {
|
155
|
+
throw Error(`Failed to verify chain coordinates: credentials contract address=${registryAddress} is not equal to registryContract address=${currentRegistryAddress}`);
|
156
|
+
}
|
157
|
+
const chainId = credentials.membership.chainId;
|
158
|
+
const network = await this._contract.registry.provider.getNetwork();
|
159
|
+
const currentChainId = network.chainId;
|
160
|
+
if (chainId !== currentChainId) {
|
161
|
+
throw Error(`Failed to verify chain coordinates: credentials chainID=${chainId} is not equal to registryContract chainID=${currentChainId}`);
|
162
|
+
}
|
163
|
+
}
|
164
|
+
createDecoder(contentTopic) {
|
165
|
+
return createRLNDecoder({
|
166
|
+
rlnInstance: this,
|
167
|
+
decoder: createDecoder(contentTopic)
|
168
|
+
});
|
216
169
|
}
|
217
170
|
}
|
218
171
|
//# sourceMappingURL=rln.js.map
|