@zill-protocol/client 4.1.2
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/CHANGELOG.md +17 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/package.json +58 -0
- package/dist/src/NocturneClient.d.ts +68 -0
- package/dist/src/NocturneClient.d.ts.map +1 -0
- package/dist/src/NocturneClient.js +264 -0
- package/dist/src/NocturneClient.js.map +1 -0
- package/dist/src/NocturneDB.d.ts +100 -0
- package/dist/src/NocturneDB.d.ts.map +1 -0
- package/dist/src/NocturneDB.js +525 -0
- package/dist/src/NocturneDB.js.map +1 -0
- package/dist/src/OpTracker.d.ts +13 -0
- package/dist/src/OpTracker.d.ts.map +1 -0
- package/dist/src/OpTracker.js +34 -0
- package/dist/src/OpTracker.js.map +1 -0
- package/dist/src/conversion/converter.d.ts +5 -0
- package/dist/src/conversion/converter.d.ts.map +1 -0
- package/dist/src/conversion/converter.js +15 -0
- package/dist/src/conversion/converter.js.map +1 -0
- package/dist/src/conversion/index.d.ts +3 -0
- package/dist/src/conversion/index.d.ts.map +1 -0
- package/dist/src/conversion/index.js +21 -0
- package/dist/src/conversion/index.js.map +1 -0
- package/dist/src/conversion/mock.d.ts +6 -0
- package/dist/src/conversion/mock.d.ts.map +1 -0
- package/dist/src/conversion/mock.js +14 -0
- package/dist/src/conversion/mock.js.map +1 -0
- package/dist/src/index.d.ts +14 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +39 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/opRequestGas.d.ts +20 -0
- package/dist/src/opRequestGas.d.ts.map +1 -0
- package/dist/src/opRequestGas.js +321 -0
- package/dist/src/opRequestGas.js.map +1 -0
- package/dist/src/operationRequest/builder.d.ts +40 -0
- package/dist/src/operationRequest/builder.d.ts.map +1 -0
- package/dist/src/operationRequest/builder.js +192 -0
- package/dist/src/operationRequest/builder.js.map +1 -0
- package/dist/src/operationRequest/index.d.ts +3 -0
- package/dist/src/operationRequest/index.d.ts.map +1 -0
- package/dist/src/operationRequest/index.js +6 -0
- package/dist/src/operationRequest/index.js.map +1 -0
- package/dist/src/operationRequest/operationRequest.d.ts +50 -0
- package/dist/src/operationRequest/operationRequest.d.ts.map +1 -0
- package/dist/src/operationRequest/operationRequest.js +16 -0
- package/dist/src/operationRequest/operationRequest.js.map +1 -0
- package/dist/src/prepareOperation.d.ts +21 -0
- package/dist/src/prepareOperation.d.ts.map +1 -0
- package/dist/src/prepareOperation.js +256 -0
- package/dist/src/prepareOperation.js.map +1 -0
- package/dist/src/proveOperation.d.ts +7 -0
- package/dist/src/proveOperation.d.ts.map +1 -0
- package/dist/src/proveOperation.js +79 -0
- package/dist/src/proveOperation.js.map +1 -0
- package/dist/src/signOperation.d.ts +3 -0
- package/dist/src/signOperation.d.ts.map +1 -0
- package/dist/src/signOperation.js +61 -0
- package/dist/src/signOperation.js.map +1 -0
- package/dist/src/snapJsonRpc.d.ts +55 -0
- package/dist/src/snapJsonRpc.d.ts.map +1 -0
- package/dist/src/snapJsonRpc.js +63 -0
- package/dist/src/snapJsonRpc.js.map +1 -0
- package/dist/src/syncSDK.d.ts +17 -0
- package/dist/src/syncSDK.d.ts.map +1 -0
- package/dist/src/syncSDK.js +188 -0
- package/dist/src/syncSDK.js.map +1 -0
- package/dist/src/types.d.ts +60 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +3 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/utils/constants.d.ts +3 -0
- package/dist/src/utils/constants.d.ts.map +1 -0
- package/dist/src/utils/constants.js +20 -0
- package/dist/src/utils/constants.js.map +1 -0
- package/dist/src/utils/index.d.ts +3 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +19 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/misc.d.ts +13 -0
- package/dist/src/utils/misc.d.ts.map +1 -0
- package/dist/src/utils/misc.js +77 -0
- package/dist/src/utils/misc.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +58 -0
- package/src/NocturneClient.ts +415 -0
- package/src/NocturneDB.ts +761 -0
- package/src/OpTracker.ts +44 -0
- package/src/conversion/converter.ts +22 -0
- package/src/conversion/index.ts +2 -0
- package/src/conversion/mock.ts +11 -0
- package/src/index.ts +14 -0
- package/src/opRequestGas.ts +487 -0
- package/src/operationRequest/builder.ts +359 -0
- package/src/operationRequest/index.ts +16 -0
- package/src/operationRequest/operationRequest.ts +87 -0
- package/src/prepareOperation.ts +420 -0
- package/src/proveOperation.ts +124 -0
- package/src/signOperation.ts +116 -0
- package/src/snapJsonRpc.ts +109 -0
- package/src/syncSDK.ts +285 -0
- package/src/types.ts +83 -0
- package/src/utils/constants.ts +16 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/misc.ts +107 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.proveOperation = proveOperation;
|
|
4
|
+
const crypto_1 = require("@zill-protocol/crypto");
|
|
5
|
+
const core_1 = require("@zill-protocol/core");
|
|
6
|
+
// SDK will fire off at most this many provers in parallel
|
|
7
|
+
const DEFAULT_MAX_PARALLEL_PROVERS = 4;
|
|
8
|
+
async function proveOperation(prover, op, opts) {
|
|
9
|
+
const joinSplits = [];
|
|
10
|
+
const maxParallel = opts?.maxParallel ?? DEFAULT_MAX_PARALLEL_PROVERS;
|
|
11
|
+
for (const batch of (0, core_1.iterChunks)(op.joinSplits, maxParallel)) {
|
|
12
|
+
const provenBatch = await Promise.all(batch.map((joinSplit) => proveJoinSplit(prover, joinSplit, opts)));
|
|
13
|
+
joinSplits.push(...provenBatch);
|
|
14
|
+
}
|
|
15
|
+
const operation = {
|
|
16
|
+
...op,
|
|
17
|
+
joinSplits,
|
|
18
|
+
};
|
|
19
|
+
return core_1.OperationTrait.toSubmittable(operation);
|
|
20
|
+
}
|
|
21
|
+
async function proveJoinSplit(prover, signedJoinSplit, opts) {
|
|
22
|
+
const { opDigest, proofInputs, refundAddr, senderCommitment, joinSplitInfoCommitment, ...baseJoinSplit } = signedJoinSplit;
|
|
23
|
+
if (opts?.debug) {
|
|
24
|
+
console.log("proving joinSplit", {
|
|
25
|
+
proofInputs,
|
|
26
|
+
merkleProofA: proofInputs.merkleProofA,
|
|
27
|
+
merkleProofB: proofInputs.merkleProofB,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
const proof = await prover.proveJoinSplit(proofInputs);
|
|
31
|
+
const [, refundAddrH1CompressedY] = (0, crypto_1.decomposeCompressedPoint)(refundAddr.h1);
|
|
32
|
+
const [, refundAddrH2CompressedY] = (0, crypto_1.decomposeCompressedPoint)(refundAddr.h2);
|
|
33
|
+
// Check that snarkjs output is consistent with our precomputed joinsplit values
|
|
34
|
+
const publicSignals = (0, core_1.joinSplitPublicSignalsFromArray)(proof.publicSignals);
|
|
35
|
+
if (baseJoinSplit.newNoteACommitment !== publicSignals.newNoteACommitment ||
|
|
36
|
+
baseJoinSplit.newNoteBCommitment !== publicSignals.newNoteBCommitment ||
|
|
37
|
+
baseJoinSplit.commitmentTreeRoot !== publicSignals.commitmentTreeRoot ||
|
|
38
|
+
baseJoinSplit.publicSpend !== publicSignals.publicSpend ||
|
|
39
|
+
baseJoinSplit.nullifierA !== publicSignals.nullifierA ||
|
|
40
|
+
baseJoinSplit.nullifierB !== publicSignals.nullifierB ||
|
|
41
|
+
opDigest !== publicSignals.opDigest ||
|
|
42
|
+
refundAddrH1CompressedY !== publicSignals.refundAddrH1CompressedY ||
|
|
43
|
+
refundAddrH2CompressedY !== publicSignals.refundAddrH2CompressedY ||
|
|
44
|
+
senderCommitment !== publicSignals.senderCommitment ||
|
|
45
|
+
joinSplitInfoCommitment !== publicSignals.joinSplitInfoCommitment) {
|
|
46
|
+
console.error("successfully generated proof, but PIs don't match", {
|
|
47
|
+
publicSignalsFromProof: publicSignals,
|
|
48
|
+
publicSignalsExpected: {
|
|
49
|
+
newNoteACommitment: baseJoinSplit.newNoteACommitment,
|
|
50
|
+
newNoteBCommitment: baseJoinSplit.newNoteBCommitment,
|
|
51
|
+
commitmentTreeRoot: baseJoinSplit.commitmentTreeRoot,
|
|
52
|
+
publicSpend: baseJoinSplit.publicSpend,
|
|
53
|
+
nullifierA: baseJoinSplit.nullifierA,
|
|
54
|
+
nullifierB: baseJoinSplit.nullifierB,
|
|
55
|
+
senderCommitment,
|
|
56
|
+
joinSplitInfoCommitment,
|
|
57
|
+
opDigest,
|
|
58
|
+
pubEncododedAssetAddrWithSignBits: proofInputs.pubEncodedAssetAddrWithSignBits,
|
|
59
|
+
pubEncodedAssetID: proofInputs.pubEncodedAssetId,
|
|
60
|
+
refundAddrH1CompressedY: refundAddrH1CompressedY,
|
|
61
|
+
refundAddrH2CompressedY: refundAddrH2CompressedY,
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
throw new Error(`snarkjs generated public input differs from precomputed ones`);
|
|
65
|
+
}
|
|
66
|
+
if (opts?.debug) {
|
|
67
|
+
console.log("successfully generated proofs", {
|
|
68
|
+
proofWithPublicSignals: proof,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
const solidityProof = (0, core_1.packToSolidityProof)(proof.proof);
|
|
72
|
+
return {
|
|
73
|
+
proof: solidityProof,
|
|
74
|
+
senderCommitment,
|
|
75
|
+
joinSplitInfoCommitment,
|
|
76
|
+
...baseJoinSplit,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=proveOperation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proveOperation.js","sourceRoot":"","sources":["../../src/proveOperation.ts"],"names":[],"mappings":";;AAsBA,wCAoBC;AA1CD,kDAAiE;AACjE,8CAW6B;AAE7B,0DAA0D;AAC1D,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAOhC,KAAK,UAAU,cAAc,CAClC,MAAuB,EACvB,EAAmB,EACnB,IAA4B;IAE5B,MAAM,UAAU,GAAsB,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,IAAI,EAAE,WAAW,IAAI,4BAA4B,CAAC;IACtE,KAAK,MAAM,KAAK,IAAI,IAAA,iBAAU,EAAC,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC;QAC3D,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAClE,CAAC;QACF,UAAU,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,SAAS,GAAoB;QACjC,GAAG,EAAE;QACL,UAAU;KACX,CAAC;IAEF,OAAO,qBAAc,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,MAAuB,EACvB,eAAkC,EAClC,IAA4B;IAE5B,MAAM,EACJ,QAAQ,EACR,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,uBAAuB,EACvB,GAAG,aAAa,EACjB,GAAG,eAAe,CAAC;IACpB,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE;YAC/B,WAAW;YACX,YAAY,EAAE,WAAW,CAAC,YAAY;YACtC,YAAY,EAAE,WAAW,CAAC,YAAY;SACvC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAEvD,MAAM,CAAC,EAAE,uBAAuB,CAAC,GAAG,IAAA,iCAAwB,EAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC5E,MAAM,CAAC,EAAE,uBAAuB,CAAC,GAAG,IAAA,iCAAwB,EAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAE5E,gFAAgF;IAChF,MAAM,aAAa,GAAG,IAAA,sCAA+B,EAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC3E,IACE,aAAa,CAAC,kBAAkB,KAAK,aAAa,CAAC,kBAAkB;QACrE,aAAa,CAAC,kBAAkB,KAAK,aAAa,CAAC,kBAAkB;QACrE,aAAa,CAAC,kBAAkB,KAAK,aAAa,CAAC,kBAAkB;QACrE,aAAa,CAAC,WAAW,KAAK,aAAa,CAAC,WAAW;QACvD,aAAa,CAAC,UAAU,KAAK,aAAa,CAAC,UAAU;QACrD,aAAa,CAAC,UAAU,KAAK,aAAa,CAAC,UAAU;QACrD,QAAQ,KAAK,aAAa,CAAC,QAAQ;QACnC,uBAAuB,KAAK,aAAa,CAAC,uBAAuB;QACjE,uBAAuB,KAAK,aAAa,CAAC,uBAAuB;QACjE,gBAAgB,KAAK,aAAa,CAAC,gBAAgB;QACnD,uBAAuB,KAAK,aAAa,CAAC,uBAAuB,EACjE,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,mDAAmD,EAAE;YACjE,sBAAsB,EAAE,aAAa;YACrC,qBAAqB,EAAE;gBACrB,kBAAkB,EAAE,aAAa,CAAC,kBAAkB;gBACpD,kBAAkB,EAAE,aAAa,CAAC,kBAAkB;gBACpD,kBAAkB,EAAE,aAAa,CAAC,kBAAkB;gBACpD,WAAW,EAAE,aAAa,CAAC,WAAW;gBACtC,UAAU,EAAE,aAAa,CAAC,UAAU;gBACpC,UAAU,EAAE,aAAa,CAAC,UAAU;gBACpC,gBAAgB;gBAChB,uBAAuB;gBACvB,QAAQ;gBACR,iCAAiC,EAC/B,WAAW,CAAC,+BAA+B;gBAC7C,iBAAiB,EAAE,WAAW,CAAC,iBAAiB;gBAChD,uBAAuB,EAAE,uBAAuB;gBAChD,uBAAuB,EAAE,uBAAuB;aACjD;SACF,CAAC,CAAC;QAEH,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE;YAC3C,sBAAsB,EAAE,KAAK;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,aAAa,GAAG,IAAA,0BAAmB,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvD,OAAO;QACL,KAAK,EAAE,aAAa;QACpB,gBAAgB;QAChB,uBAAuB;QACvB,GAAG,aAAa;KACjB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signOperation.d.ts","sourceRoot":"","sources":["../../src/signOperation.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,gBAAgB,EAEhB,eAAe,EAEf,cAAc,EAIf,MAAM,qBAAqB,CAAC;AAE7B,wBAAgB,aAAa,CAC3B,MAAM,EAAE,cAAc,EACtB,EAAE,EAAE,gBAAgB,GACnB,eAAe,CAkCjB"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.signOperation = signOperation;
|
|
4
|
+
const core_1 = require("@zill-protocol/core");
|
|
5
|
+
function signOperation(signer, op) {
|
|
6
|
+
const opDigest = core_1.OperationTrait.computeDigest(core_1.OperationTrait.toSignable(op));
|
|
7
|
+
const opSig = signer.sign(opDigest);
|
|
8
|
+
const joinSplits = op.joinSplits.map((joinSplit) => makePreProofJoinSplit(signer, joinSplit, opDigest, opSig));
|
|
9
|
+
const { networkInfo, actions, refundAddr, refunds, encodedGasAsset, gasAssetRefundThreshold, executionGasLimit, gasPrice, deadline, atomicActions, } = op;
|
|
10
|
+
return {
|
|
11
|
+
networkInfo,
|
|
12
|
+
joinSplits,
|
|
13
|
+
refundAddr,
|
|
14
|
+
refunds,
|
|
15
|
+
actions,
|
|
16
|
+
encodedGasAsset,
|
|
17
|
+
gasAssetRefundThreshold,
|
|
18
|
+
executionGasLimit,
|
|
19
|
+
gasPrice,
|
|
20
|
+
deadline,
|
|
21
|
+
atomicActions,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function makePreProofJoinSplit(signer, preProofJoinSplit, opDigest, opSig) {
|
|
25
|
+
const { merkleProofA, merkleProofB, oldNoteA, oldNoteB, newNoteA, newNoteB, receiver, refundAddr, senderCommitment, publicSpend, ...baseJoinSplit } = preProofJoinSplit;
|
|
26
|
+
const { c, z } = opSig;
|
|
27
|
+
const { x, y } = signer.spendPk;
|
|
28
|
+
const encodedOldNoteA = core_1.NoteTrait.encode(oldNoteA);
|
|
29
|
+
const encodedOldNoteB = core_1.NoteTrait.encode(oldNoteB);
|
|
30
|
+
const encodedNewNoteA = core_1.NoteTrait.encode(newNoteA);
|
|
31
|
+
const encodedNewNoteB = core_1.NoteTrait.encode(newNoteB);
|
|
32
|
+
// if publicSpend is 0, hide the asset info by masking it to 0
|
|
33
|
+
const pubEncodedAssetAddrWithSignBits = (0, core_1.encodeEncodedAssetAddrWithSignBitsPI)(publicSpend === 0n ? 0n : encodedNewNoteA.encodedAssetAddr, refundAddr);
|
|
34
|
+
const pubEncodedAssetId = publicSpend === 0n ? 0n : encodedNewNoteA.encodedAssetId;
|
|
35
|
+
const proofInputs = {
|
|
36
|
+
vk: signer.vk,
|
|
37
|
+
vkNonce: signer.vkNonce,
|
|
38
|
+
spendPk: [x, y],
|
|
39
|
+
c,
|
|
40
|
+
z,
|
|
41
|
+
merkleProofA,
|
|
42
|
+
merkleProofB,
|
|
43
|
+
operationDigest: opDigest,
|
|
44
|
+
oldNoteA: encodedOldNoteA,
|
|
45
|
+
oldNoteB: encodedOldNoteB,
|
|
46
|
+
newNoteA: encodedNewNoteA,
|
|
47
|
+
newNoteB: encodedNewNoteB,
|
|
48
|
+
refundAddr,
|
|
49
|
+
pubEncodedAssetAddrWithSignBits,
|
|
50
|
+
pubEncodedAssetId,
|
|
51
|
+
};
|
|
52
|
+
return {
|
|
53
|
+
opDigest,
|
|
54
|
+
proofInputs,
|
|
55
|
+
refundAddr,
|
|
56
|
+
senderCommitment,
|
|
57
|
+
publicSpend,
|
|
58
|
+
...baseJoinSplit,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=signOperation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signOperation.js","sourceRoot":"","sources":["../../src/signOperation.ts"],"names":[],"mappings":";;AAaA,sCAqCC;AAlDD,8CAW6B;AAE7B,SAAgB,aAAa,CAC3B,MAAsB,EACtB,EAAoB;IAEpB,MAAM,QAAQ,GAAG,qBAAc,CAAC,aAAa,CAAC,qBAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEpC,MAAM,UAAU,GAAwB,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CACtE,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAC1D,CAAC;IAEF,MAAM,EACJ,WAAW,EACX,OAAO,EACP,UAAU,EACV,OAAO,EACP,eAAe,EACf,uBAAuB,EACvB,iBAAiB,EACjB,QAAQ,EACR,QAAQ,EACR,aAAa,GACd,GAAG,EAAE,CAAC;IAEP,OAAO;QACL,WAAW;QACX,UAAU;QACV,UAAU;QACV,OAAO;QACP,OAAO;QACP,eAAe;QACf,uBAAuB;QACvB,iBAAiB;QACjB,QAAQ;QACR,QAAQ;QACR,aAAa;KACd,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAAsB,EACtB,iBAAmC,EACnC,QAAgB,EAChB,KAAwB;IAExB,MAAM,EACJ,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,GAAG,aAAa,EACjB,GAAG,iBAAiB,CAAC;IAEtB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC;IAEvB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;IAEhC,MAAM,eAAe,GAAG,gBAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,eAAe,GAAG,gBAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,eAAe,GAAG,gBAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,eAAe,GAAG,gBAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAEnD,8DAA8D;IAC9D,MAAM,+BAA+B,GAAG,IAAA,2CAAoC,EAC1E,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,gBAAgB,EAC1D,UAAU,CACX,CAAC;IACF,MAAM,iBAAiB,GACrB,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC;IAE3D,MAAM,WAAW,GAAoB;QACnC,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,CAAC;QACD,CAAC;QACD,YAAY;QACZ,YAAY;QACZ,eAAe,EAAE,QAAQ;QACzB,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE,eAAe;QACzB,UAAU;QACV,+BAA+B;QAC/B,iBAAiB;KAClB,CAAC;IAEF,OAAO;QACL,QAAQ;QACR,WAAW;QACX,UAAU;QACV,gBAAgB;QAChB,WAAW;QACX,GAAG,aAAa;KACjB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Address, CanonAddrRegistryEntry, PreSignOperation, SignedOperation } from "@zill-protocol/core";
|
|
2
|
+
import { CanonAddress, NocturneSignature, SpendPk, ViewingKey } from "@zill-protocol/crypto";
|
|
3
|
+
import { OperationWithMetadata } from "./types";
|
|
4
|
+
export interface SetSpendKeyMethod {
|
|
5
|
+
method: "nocturne_setSpendKey";
|
|
6
|
+
params: {
|
|
7
|
+
spendKey: string;
|
|
8
|
+
eoaAddress: Address;
|
|
9
|
+
};
|
|
10
|
+
return: string | null;
|
|
11
|
+
}
|
|
12
|
+
export interface SignCanonAddrRegistryEntryMethod {
|
|
13
|
+
method: "nocturne_signCanonAddrRegistryEntry";
|
|
14
|
+
params: {
|
|
15
|
+
entry: CanonAddrRegistryEntry;
|
|
16
|
+
chainId: bigint;
|
|
17
|
+
registryAddress: string;
|
|
18
|
+
};
|
|
19
|
+
return: {
|
|
20
|
+
canonAddr: CanonAddress;
|
|
21
|
+
digest: bigint;
|
|
22
|
+
sig: NocturneSignature;
|
|
23
|
+
spendPubkey: SpendPk;
|
|
24
|
+
vkNonce: bigint;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export interface SignOperationMethod {
|
|
28
|
+
method: "nocturne_signOperation";
|
|
29
|
+
params: OperationWithMetadata<PreSignOperation>;
|
|
30
|
+
return: SignedOperation;
|
|
31
|
+
}
|
|
32
|
+
export interface RequestSpendKeyEoaMethod {
|
|
33
|
+
method: "nocturne_requestSpendKeyEoa";
|
|
34
|
+
params: null;
|
|
35
|
+
return: Address | null;
|
|
36
|
+
}
|
|
37
|
+
export interface RequestViewingKeyMethodResponse {
|
|
38
|
+
vk: ViewingKey;
|
|
39
|
+
vkNonce: bigint;
|
|
40
|
+
}
|
|
41
|
+
export interface RequestViewingKeyMethod {
|
|
42
|
+
method: "nocturne_requestViewingKey";
|
|
43
|
+
params: null;
|
|
44
|
+
return: RequestViewingKeyMethodResponse;
|
|
45
|
+
}
|
|
46
|
+
export type RpcRequestMethod = SetSpendKeyMethod | SignCanonAddrRegistryEntryMethod | SignOperationMethod | RequestViewingKeyMethod | RequestSpendKeyEoaMethod;
|
|
47
|
+
export type SnapRpcRequestHandlerArgs = {
|
|
48
|
+
origin: string;
|
|
49
|
+
request: RpcRequestMethod;
|
|
50
|
+
};
|
|
51
|
+
export type SnapRpcRequestHandler = (args: SnapRpcRequestHandlerArgs) => Promise<RpcRequestMethod["return"]>;
|
|
52
|
+
export declare function assertAllRpcMethodsHandled(request: never): never;
|
|
53
|
+
export declare function parseObjectValues(params: object): object;
|
|
54
|
+
export declare function stringifyObjectValues(params: object): object;
|
|
55
|
+
//# sourceMappingURL=snapJsonRpc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapJsonRpc.d.ts","sourceRoot":"","sources":["../../src/snapJsonRpc.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,OAAO,EACP,UAAU,EACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAEhD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,gCAAgC;IAC/C,MAAM,EAAE,qCAAqC,CAAC;IAC9C,MAAM,EAAE;QACN,KAAK,EAAE,sBAAsB,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC;QAChB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,MAAM,EAAE;QACN,SAAS,EAAE,YAAY,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,iBAAiB,CAAC;QACvB,WAAW,EAAE,OAAO,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,wBAAwB,CAAC;IACjC,MAAM,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IAChD,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,6BAA6B,CAAC;IACtC,MAAM,EAAE,IAAI,CAAC;IACb,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,+BAA+B;IAC9C,EAAE,EAAE,UAAU,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,4BAA4B,CAAC;IACrC,MAAM,EAAE,IAAI,CAAC;IACb,MAAM,EAAE,+BAA+B,CAAC;CACzC;AAED,MAAM,MAAM,gBAAgB,GACxB,iBAAiB,GACjB,gCAAgC,GAChC,mBAAmB,GACnB,uBAAuB,GACvB,wBAAwB,CAAC;AAE7B,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,CAClC,IAAI,EAAE,yBAAyB,KAC5B,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEzC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,KAAK,GAAG,KAAK,CAGhE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAWxD;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAW5D"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.assertAllRpcMethodsHandled = assertAllRpcMethodsHandled;
|
|
37
|
+
exports.parseObjectValues = parseObjectValues;
|
|
38
|
+
exports.stringifyObjectValues = stringifyObjectValues;
|
|
39
|
+
const JSON = __importStar(require("bigint-json-serialization"));
|
|
40
|
+
function assertAllRpcMethodsHandled(request) {
|
|
41
|
+
// @ts-expect-error on request.method—if this fires at runtime, we want to see the method name
|
|
42
|
+
throw new Error("Snap JSON RPC method not handled: " + request.method);
|
|
43
|
+
}
|
|
44
|
+
function parseObjectValues(params) {
|
|
45
|
+
return Object.fromEntries(Object.entries(params).map(([key, value]) => {
|
|
46
|
+
const parsedValue = JSON.parse(value);
|
|
47
|
+
if (parsedValue && parsedValue.__primitive) {
|
|
48
|
+
return [key, parsedValue.value ?? undefined];
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
return [key, parsedValue];
|
|
52
|
+
}
|
|
53
|
+
}));
|
|
54
|
+
}
|
|
55
|
+
function stringifyObjectValues(params) {
|
|
56
|
+
return Object.fromEntries(Object.entries(params).map(([key, value]) => [
|
|
57
|
+
key,
|
|
58
|
+
JSON.stringify(typeof value === "object"
|
|
59
|
+
? value
|
|
60
|
+
: { __primitive: true, value: value ?? null }),
|
|
61
|
+
]));
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=snapJsonRpc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapJsonRpc.js","sourceRoot":"","sources":["../../src/snapJsonRpc.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+EA,gEAGC;AAED,8CAWC;AAED,sDAWC;AAhGD,gEAAkD;AAmElD,SAAgB,0BAA0B,CAAC,OAAc;IACvD,8FAA8F;IAC9F,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AACzE,CAAC;AAED,SAAgB,iBAAiB,CAAC,MAAc;IAC9C,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,WAAW,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,SAAgB,qBAAqB,CAAC,MAAc;IAClD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QAC3C,GAAG;QACH,IAAI,CAAC,SAAS,CACZ,OAAO,KAAK,KAAK,QAAQ;YACvB,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,CAChD;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { NocturneViewer } from "@zill-protocol/crypto";
|
|
2
|
+
import { NocturneDB } from "./NocturneDB";
|
|
3
|
+
import { PendingOutputRecord } from "./types";
|
|
4
|
+
import { SDKSyncAdapter, SparseMerkleProver } from "@zill-protocol/core";
|
|
5
|
+
export interface SyncOpts {
|
|
6
|
+
endBlock?: number;
|
|
7
|
+
timeoutSeconds?: number;
|
|
8
|
+
timing?: boolean;
|
|
9
|
+
finalityBlocks?: number;
|
|
10
|
+
debug?: boolean;
|
|
11
|
+
onPendingOutputsConfirmed?: (outputs: PendingOutputRecord[]) => void;
|
|
12
|
+
}
|
|
13
|
+
export interface SyncDeps {
|
|
14
|
+
viewer: NocturneViewer;
|
|
15
|
+
}
|
|
16
|
+
export declare function syncSDK({ viewer }: SyncDeps, adapter: SDKSyncAdapter, db: NocturneDB, merkle: SparseMerkleProver, opts?: SyncOpts): Promise<number | undefined>;
|
|
17
|
+
//# sourceMappingURL=syncSDK.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syncSDK.d.ts","sourceRoot":"","sources":["../../src/syncSDK.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAOL,cAAc,EAGd,kBAAkB,EAKnB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yBAAyB,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,EAAE,KAAK,IAAI,CAAC;CACtE;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,cAAc,CAAC;CACxB;AAGD,wBAAsB,OAAO,CAC3B,EAAE,MAAM,EAAE,EAAE,QAAQ,EACpB,OAAO,EAAE,cAAc,EACvB,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,kBAAkB,EAC1B,IAAI,CAAC,EAAE,QAAQ,GACd,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA8F7B"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.syncSDK = syncSDK;
|
|
4
|
+
const core_1 = require("@zill-protocol/core");
|
|
5
|
+
// Sync SDK, returning last synced merkle index of last state diff
|
|
6
|
+
async function syncSDK({ viewer }, adapter, db, merkle, opts) {
|
|
7
|
+
const currTotalEntityIndex = await db.currentTotalEntityIndex();
|
|
8
|
+
const startTotalEntityIndex = currTotalEntityIndex
|
|
9
|
+
? currTotalEntityIndex + 1n
|
|
10
|
+
: 0n;
|
|
11
|
+
const currentBlock = await adapter.getLatestIndexedBlock();
|
|
12
|
+
const endTotalEntityIndex = core_1.TotalEntityIndexTrait.fromBlockNumber(opts?.endBlock ?? currentBlock);
|
|
13
|
+
const range = {
|
|
14
|
+
startTotalEntityIndex,
|
|
15
|
+
endTotalEntityIndex,
|
|
16
|
+
startBlock: core_1.TotalEntityIndexTrait.toComponents(startTotalEntityIndex)
|
|
17
|
+
.blockNumber,
|
|
18
|
+
endBlock: currentBlock,
|
|
19
|
+
};
|
|
20
|
+
if (opts?.debug) {
|
|
21
|
+
console.log(`[syncSDK] syncing SDK from totalEntityIndex ${startTotalEntityIndex} (block ${range.startBlock}) to ${endTotalEntityIndex} (block ${currentBlock})...`, { range });
|
|
22
|
+
}
|
|
23
|
+
const newDiffs = adapter.iterStateDiffs(startTotalEntityIndex, {
|
|
24
|
+
endTotalEntityIndex,
|
|
25
|
+
timing: opts?.timing,
|
|
26
|
+
finalityBlocks: opts?.finalityBlocks,
|
|
27
|
+
});
|
|
28
|
+
// decrypt notes and compute nullifiers
|
|
29
|
+
const diffHistogram = opts?.timing
|
|
30
|
+
? new core_1.Histogram("decryptStateDiff time (ms) per note")
|
|
31
|
+
: undefined;
|
|
32
|
+
const diffs = newDiffs.map((diff) => {
|
|
33
|
+
const [decrypted, time] = (0, core_1.timed)(() => decryptStateDiff(viewer, diff));
|
|
34
|
+
diffHistogram?.sample(time / diff.notes.length);
|
|
35
|
+
return decrypted;
|
|
36
|
+
});
|
|
37
|
+
let latestSyncedMerkleIndex = await db.latestSyncedMerkleIndex();
|
|
38
|
+
if (opts?.timeoutSeconds) {
|
|
39
|
+
setTimeout(() => diffs.close(), opts.timeoutSeconds * 1000);
|
|
40
|
+
}
|
|
41
|
+
// apply diffs
|
|
42
|
+
const applyStateDiffHistogram = opts?.timing
|
|
43
|
+
? new core_1.Histogram("applyStateDiff time (ms) per note or commitment")
|
|
44
|
+
: undefined;
|
|
45
|
+
const updateMerkleHistogram = opts?.timing
|
|
46
|
+
? new core_1.Histogram("updateMerkle time (ms) per note or commitment")
|
|
47
|
+
: undefined;
|
|
48
|
+
for await (const diff of diffs.iter) {
|
|
49
|
+
if (opts?.debug) {
|
|
50
|
+
console.log("[syncSDK] diff latestNewlySyncedMerkleIndex", diff.latestNewlySyncedMerkleIndex);
|
|
51
|
+
}
|
|
52
|
+
// update notes in DB
|
|
53
|
+
const [nfIndices, nfTime] = await (0, core_1.timedAsync)(() => db.applyStateDiff(diff, opts?.onPendingOutputsConfirmed
|
|
54
|
+
? { onPendingOutputsConfirmed: opts.onPendingOutputsConfirmed }
|
|
55
|
+
: undefined));
|
|
56
|
+
applyStateDiffHistogram?.sample(nfTime / diff.notesAndCommitments.length);
|
|
57
|
+
latestSyncedMerkleIndex = await db.latestSyncedMerkleIndex();
|
|
58
|
+
// TODO: deal with case where we have failure between applying state diff to DB and merkle being persisted
|
|
59
|
+
if (diff.latestCommittedMerkleIndex) {
|
|
60
|
+
const [_, time] = await (0, core_1.timedAsync)(() => updateMerkle(merkle, diff.latestCommittedMerkleIndex, diff.notesAndCommitments.map((n) => n.inner), nfIndices, opts?.debug ?? false));
|
|
61
|
+
updateMerkleHistogram?.sample(time / diff.notesAndCommitments.length);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
diffHistogram?.print();
|
|
65
|
+
applyStateDiffHistogram?.print();
|
|
66
|
+
updateMerkleHistogram?.print();
|
|
67
|
+
return latestSyncedMerkleIndex;
|
|
68
|
+
}
|
|
69
|
+
async function updateMerkle(merkle, latestCommittedMerkleIndex, notesAndCommitments, nfIndices, logWarnings) {
|
|
70
|
+
const ordered = [...notesAndCommitments].sort((a, b) => a.merkleIndex - b.merkleIndex);
|
|
71
|
+
const currentCount = merkle.count();
|
|
72
|
+
const filtered = ordered.filter((noteOrCommitment) => noteOrCommitment.merkleIndex >= currentCount);
|
|
73
|
+
if (logWarnings && filtered.length !== ordered.length) {
|
|
74
|
+
console.warn("[syncSDK] skipping stale leaves", {
|
|
75
|
+
currentCount,
|
|
76
|
+
skipped: ordered.length - filtered.length,
|
|
77
|
+
first: ordered[0]?.merkleIndex,
|
|
78
|
+
last: ordered[ordered.length - 1]?.merkleIndex,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
// add all new leaves as uncommitted leaves
|
|
82
|
+
const batches = (0, core_1.consecutiveChunks)(filtered, (noteOrCommitment) => noteOrCommitment.merkleIndex);
|
|
83
|
+
for (const batch of batches) {
|
|
84
|
+
const startIndex = batch[0].merkleIndex;
|
|
85
|
+
const leaves = [];
|
|
86
|
+
const includes = [];
|
|
87
|
+
for (const noteOrCommitment of batch) {
|
|
88
|
+
if (core_1.NoteTrait.isCommitment(noteOrCommitment)) {
|
|
89
|
+
leaves.push(noteOrCommitment.noteCommitment);
|
|
90
|
+
includes.push(false);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
leaves.push(core_1.NoteTrait.toCommitment(noteOrCommitment));
|
|
94
|
+
includes.push(true);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
merkle.insertBatchUncommitted(startIndex, leaves, includes);
|
|
98
|
+
}
|
|
99
|
+
// commit up to latest subtree commit
|
|
100
|
+
merkle.commitUpToIndex(latestCommittedMerkleIndex);
|
|
101
|
+
// mark nullified ones for pruning
|
|
102
|
+
for (const index of nfIndices) {
|
|
103
|
+
try {
|
|
104
|
+
merkle.markForPruning(index);
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
if (logWarnings) {
|
|
108
|
+
console.warn("[syncSDK] skip pruning missing leaf", {
|
|
109
|
+
index,
|
|
110
|
+
error: err instanceof Error ? err.message : String(err),
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// persist merkle to underlying KV store
|
|
116
|
+
await merkle.persist();
|
|
117
|
+
}
|
|
118
|
+
function decryptStateDiff(viewer, { notes, nullifiers, latestCommittedMerkleIndex, latestCommitTei, latestNewlySyncedMerkleIndex, totalEntityIndex, }) {
|
|
119
|
+
const notesAndCommitments = notes.map(({ inner, totalEntityIndex }) => {
|
|
120
|
+
const note = inner;
|
|
121
|
+
const isEncrypted = core_1.NoteTrait.isEncryptedNote(note);
|
|
122
|
+
if (isEncrypted) {
|
|
123
|
+
// if it's encrypted, attempt to decrypt.
|
|
124
|
+
// if it succeeds, then return the decrypted note
|
|
125
|
+
// if it fails, assume it's not ours and just the commitment and merkle index
|
|
126
|
+
try {
|
|
127
|
+
const { merkleIndex, commitment, ...encryptedNote } = note;
|
|
128
|
+
// TODO: come up with a way to handle sender mismatches when we implement history proofs
|
|
129
|
+
const includedNote = {
|
|
130
|
+
...(0, core_1.decryptNote)(viewer, encryptedNote),
|
|
131
|
+
merkleIndex,
|
|
132
|
+
};
|
|
133
|
+
const nullifier = core_1.NoteTrait.createNullifier(viewer, includedNote);
|
|
134
|
+
const res = { ...includedNote, nullifier };
|
|
135
|
+
return {
|
|
136
|
+
inner: res,
|
|
137
|
+
totalEntityIndex,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
catch (err) {
|
|
141
|
+
const encryptedNote = note;
|
|
142
|
+
const { commitment, merkleIndex } = encryptedNote;
|
|
143
|
+
const nc = {
|
|
144
|
+
noteCommitment: commitment,
|
|
145
|
+
merkleIndex,
|
|
146
|
+
};
|
|
147
|
+
return {
|
|
148
|
+
inner: nc,
|
|
149
|
+
totalEntityIndex,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
// if it's not encrypted, check if it's ours.
|
|
155
|
+
// if it is, then return it
|
|
156
|
+
// if it's not, return only the commitment
|
|
157
|
+
const includedNote = note;
|
|
158
|
+
const isOwn = viewer.isOwnAddress(includedNote.owner);
|
|
159
|
+
if (isOwn) {
|
|
160
|
+
const nullifier = core_1.NoteTrait.createNullifier(viewer, includedNote);
|
|
161
|
+
const res = { ...includedNote, nullifier };
|
|
162
|
+
return {
|
|
163
|
+
inner: res,
|
|
164
|
+
totalEntityIndex,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
const nc = {
|
|
169
|
+
noteCommitment: core_1.NoteTrait.toCommitment(includedNote),
|
|
170
|
+
merkleIndex: includedNote.merkleIndex,
|
|
171
|
+
};
|
|
172
|
+
return {
|
|
173
|
+
inner: nc,
|
|
174
|
+
totalEntityIndex,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
return {
|
|
180
|
+
notesAndCommitments,
|
|
181
|
+
nullifiers,
|
|
182
|
+
latestCommittedMerkleIndex,
|
|
183
|
+
latestCommitTei,
|
|
184
|
+
latestNewlySyncedMerkleIndex,
|
|
185
|
+
totalEntityIndex,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=syncSDK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syncSDK.js","sourceRoot":"","sources":["../../src/syncSDK.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Address, Asset, CanonAddress, Operation, OperationStatus } from "@zill-protocol/core";
|
|
2
|
+
export type OpWithMetadata<O> = {
|
|
3
|
+
op: O;
|
|
4
|
+
metadata: OperationMetadata;
|
|
5
|
+
};
|
|
6
|
+
export interface OptimisticNFRecord {
|
|
7
|
+
nullifier: bigint;
|
|
8
|
+
expirationDate: number;
|
|
9
|
+
}
|
|
10
|
+
export type OpHistoryRecord = {
|
|
11
|
+
digest: bigint;
|
|
12
|
+
metadata: OperationMetadata;
|
|
13
|
+
spentNoteMerkleIndices: number[];
|
|
14
|
+
status?: OperationStatus;
|
|
15
|
+
createdAt: number;
|
|
16
|
+
lastModified: number;
|
|
17
|
+
};
|
|
18
|
+
export interface OperationMetadata {
|
|
19
|
+
items: OperationMetadataItem[];
|
|
20
|
+
}
|
|
21
|
+
export type PendingOutputRecord = {
|
|
22
|
+
commitment: bigint;
|
|
23
|
+
asset: Asset;
|
|
24
|
+
value: bigint;
|
|
25
|
+
createdAt: number;
|
|
26
|
+
opDigest?: bigint;
|
|
27
|
+
expectedInsertionIndex?: number;
|
|
28
|
+
};
|
|
29
|
+
export type OperationMetadataItem = ConfidentialPaymentMetadata | ActionMetadata;
|
|
30
|
+
export type ActionMetadata = {
|
|
31
|
+
type: "Action";
|
|
32
|
+
actionType: "Transfer";
|
|
33
|
+
recipientAddress: Address;
|
|
34
|
+
erc20Address: Address;
|
|
35
|
+
amount: bigint;
|
|
36
|
+
} | {
|
|
37
|
+
type: "Action";
|
|
38
|
+
actionType: "Weth To Wsteth";
|
|
39
|
+
amount: bigint;
|
|
40
|
+
} | {
|
|
41
|
+
type: "Action";
|
|
42
|
+
actionType: "Transfer ETH";
|
|
43
|
+
recipientAddress: Address;
|
|
44
|
+
amount: bigint;
|
|
45
|
+
};
|
|
46
|
+
export interface ConfidentialPaymentMetadata {
|
|
47
|
+
type: "ConfidentialPayment";
|
|
48
|
+
recipient: CanonAddress;
|
|
49
|
+
asset: Asset;
|
|
50
|
+
amount: bigint;
|
|
51
|
+
}
|
|
52
|
+
export interface OpDigestWithMetadata {
|
|
53
|
+
opDigest: bigint;
|
|
54
|
+
metadata?: OperationMetadata;
|
|
55
|
+
}
|
|
56
|
+
export interface OperationWithMetadata<T extends Operation> {
|
|
57
|
+
op: T;
|
|
58
|
+
metadata?: OperationMetadata;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,KAAK,EACL,YAAY,EACZ,SAAS,EACT,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC9B,EAAE,EAAE,CAAC,CAAC;IACN,QAAQ,EAAE,iBAAiB,CAAC;CAC7B,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,iBAAiB,CAAC;IAE5B,sBAAsB,EAAE,MAAM,EAAE,CAAC;IAEjC,MAAM,CAAC,EAAE,eAAe,CAAC;IAEzB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,qBAAqB,EAAE,CAAC;CAChC;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAC7B,2BAA2B,GAC3B,cAAc,CAAC;AAEnB,MAAM,MAAM,cAAc,GACtB;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB,GACD;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,gBAAgB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB,GACD;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,cAAc,CAAC;IAC3B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEN,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,qBAAqB,CAAC;IAC5B,SAAS,EAAE,YAAY,CAAC;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,SAAS;IACxD,EAAE,EAAE,CAAC,CAAC;IACN,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAa5D;AAED,eAAO,MAAM,qBAAqB,EAAE,MAAuB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OPTIMISTIC_RECORD_TTL = void 0;
|
|
4
|
+
exports.chainIdToNetworkName = chainIdToNetworkName;
|
|
5
|
+
function chainIdToNetworkName(chainId) {
|
|
6
|
+
switch (chainId) {
|
|
7
|
+
case 1n:
|
|
8
|
+
return "mainnet";
|
|
9
|
+
case 5n:
|
|
10
|
+
return "goerli";
|
|
11
|
+
case 11155111n:
|
|
12
|
+
return "sepolia";
|
|
13
|
+
case 31337n:
|
|
14
|
+
return "localhost";
|
|
15
|
+
default:
|
|
16
|
+
throw new Error(`unsupported chainId: ${chainId}`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.OPTIMISTIC_RECORD_TTL = 30 * 60 * 1000; // 30 minutes
|
|
20
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":";;;AAAA,oDAaC;AAbD,SAAgB,oBAAoB,CAAC,OAAe;IAClD,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,EAAE;YACL,OAAO,SAAS,CAAC;QACnB,KAAK,EAAE;YACL,OAAO,QAAQ,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,WAAW,CAAC;QACrB;YACE,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAEY,QAAA,qBAAqB,GAAW,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC"}
|