@gurge/sdk 0.3.25 → 0.3.27
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/common/src/crypto/babyJub.cjs +1 -1
- package/common/src/crypto/babyJub.mjs +12 -6
- package/common/src/crypto/eddsa.cjs +1 -1
- package/common/src/crypto/eddsa.mjs +12 -6
- package/common/src/crypto/poseidon.cjs +1 -1
- package/common/src/crypto/poseidon.mjs +12 -6
- package/common/src/crypto/preProcessing.cjs +1 -1
- package/common/src/crypto/preProcessing.mjs +23 -13
- package/common/src/crypto/rnCryptoBridge.cjs +1 -0
- package/common/src/crypto/rnCryptoBridge.d.ts +8 -0
- package/common/src/crypto/rnCryptoBridge.mjs +10 -0
- package/common/src/crypto/rnUtxoCrypto.cjs +1 -0
- package/common/src/crypto/rnUtxoCrypto.d.ts +25 -0
- package/common/src/crypto/rnUtxoCrypto.mjs +74 -0
- package/common/src/data-structures/Hinkal/handleAutoDepositBack.cjs +1 -1
- package/common/src/data-structures/Hinkal/handleAutoDepositBack.mjs +9 -9
- package/common/src/data-structures/Hinkal/hinkalClaimUtxo.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalClaimUtxo.mjs +6 -6
- package/common/src/data-structures/Hinkal/hinkalDeposit.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalDeposit.mjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalDepositAndBridge.mjs +18 -18
- package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +17 -17
- package/common/src/data-structures/Hinkal/hinkalPrivateWallet.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalPrivateWallet.mjs +13 -13
- package/common/src/data-structures/Hinkal/hinkalSolanaClaimUtxo.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaClaimUtxo.mjs +11 -11
- package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaDeposit.mjs +14 -14
- package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.mjs +51 -51
- package/common/src/data-structures/Hinkal/hinkalSolanaSwap.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaSwap.mjs +51 -51
- package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.mjs +20 -20
- package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.mjs +19 -19
- package/common/src/data-structures/Hinkal/hinkalSwap.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSwap.mjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalTransfer.mjs +9 -9
- package/common/src/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalWithdraw.mjs +12 -12
- package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.mjs +33 -33
- package/common/src/data-structures/Hinkal/prepareDepositOnChainUtxosZkProof.cjs +1 -1
- package/common/src/data-structures/Hinkal/prepareDepositOnChainUtxosZkProof.mjs +1 -1
- package/common/src/data-structures/crypto-keys/decodeUTXO.cjs +1 -1
- package/common/src/data-structures/crypto-keys/decodeUTXO.mjs +7 -7
- package/common/src/data-structures/crypto-keys/encryptDecryptUtxo.cjs +1 -1
- package/common/src/data-structures/crypto-keys/encryptDecryptUtxo.mjs +1 -1
- package/common/src/data-structures/utxo/Utxo.cjs +1 -1
- package/common/src/data-structures/utxo/Utxo.d.ts +1 -0
- package/common/src/data-structures/utxo/Utxo.mjs +19 -6
- package/common/src/functions/index.cjs +1 -1
- package/common/src/functions/index.mjs +3 -4
- package/common/src/functions/pre-transaction/buildCommitmentValidationData.cjs +1 -1
- package/common/src/functions/pre-transaction/buildCommitmentValidationData.mjs +86 -54
- package/common/src/functions/pre-transaction/outputUtxoProcessing.cjs +1 -1
- package/common/src/functions/pre-transaction/outputUtxoProcessing.d.ts +2 -2
- package/common/src/functions/pre-transaction/outputUtxoProcessing.mjs +28 -27
- package/common/src/functions/private-wallet/emporium.swap.helpers.cjs +1 -1
- package/common/src/functions/private-wallet/emporium.swap.helpers.mjs +14 -14
- package/common/src/functions/snarkjs/common.snarkjs.cjs +1 -1
- package/common/src/functions/snarkjs/common.snarkjs.mjs +7 -7
- package/common/src/functions/snarkjs/constructGeneralZkProof.cjs +1 -1
- package/common/src/functions/snarkjs/constructGeneralZkProof.mjs +77 -76
- package/common/src/functions/snarkjs/constructSolanaZkProof.cjs +1 -1
- package/common/src/functions/snarkjs/constructSolanaZkProof.mjs +60 -60
- package/common/src/functions/snarkjs/verifyCommitmentValidationData.cjs +1 -1
- package/common/src/functions/snarkjs/verifyCommitmentValidationData.mjs +1 -1
- package/common/src/functions/utils/bigint-math.utils.cjs +1 -1
- package/common/src/functions/utils/bigint-math.utils.mjs +1 -12
- package/common/src/functions/utils/buildClaimableDepositPlan.cjs +1 -1
- package/common/src/functions/utils/buildClaimableDepositPlan.mjs +1 -1
- package/common/src/functions/utils/getUtxosFromReceipt.utils.cjs +1 -1
- package/common/src/functions/utils/getUtxosFromReceipt.utils.mjs +1 -1
- package/common/src/functions/utils/getUtxosFromReceiptSolana.cjs +1 -1
- package/common/src/functions/utils/getUtxosFromReceiptSolana.mjs +4 -4
- package/common/src/functions/utils/index.cjs +1 -1
- package/common/src/functions/utils/index.mjs +3 -3
- package/common/src/functions/utils/utxoPadding.utils.cjs +1 -0
- package/common/src/functions/utils/utxoPadding.utils.d.ts +2 -0
- package/common/src/functions/utils/utxoPadding.utils.mjs +14 -0
- package/common/src/functions/web3/events/getInputUtxoAndBalance.cjs +1 -1
- package/common/src/functions/web3/events/getInputUtxoAndBalance.mjs +90 -86
- package/common/src/functions/web3/events/getShieldedBalance.cjs +1 -1
- package/common/src/functions/web3/events/getShieldedBalance.mjs +64 -64
- package/common/src/functions/web3/functionCalls/transactCallRelayer.cjs +1 -1
- package/common/src/functions/web3/functionCalls/transactCallRelayer.mjs +42 -42
- package/common/src/types/index.cjs +1 -1
- package/common/src/types/index.mjs +1 -1
- package/common/src/webworker/cryptoWorker/cryptoWorker.types.cjs +1 -0
- package/common/src/webworker/cryptoWorker/cryptoWorker.types.d.ts +51 -0
- package/common/src/webworker/cryptoWorker/cryptoWorker.types.mjs +6 -0
- package/common/src/webworker/cryptoWorker/cryptoWorkerLauncher.d.ts +1 -0
- package/common/src/webworker/cryptoWorker/cryptoWorkerLogic.d.ts +2 -0
- package/common/src/webworker/logError-Dy_GXEF5.js +2 -0
- package/common/src/webworker/package.json +1 -1
- package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
- package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
- package/common/src/webworker/utxoWorkerNode.cjs +1 -1
- package/common/src/webworker/viteWorkerURL.constant.cjs +4 -3
- package/common/src/webworker/viteWorkerURL.constant.d.ts +1 -0
- package/common/src/webworker/viteWorkerURL.constant.mjs +4 -3
- package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
- package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
- package/common/src/webworker/zkProofWorkerNode.cjs +1 -1
- package/package.json +1 -1
- package/react-native/HinkalWebViewWorker.cjs +63 -3
- package/react-native/HinkalWebViewWorker.mjs +134 -51
- package/react-native/bridge/RnWebViewCryptoBridge.cjs +1 -0
- package/react-native/bridge/RnWebViewCryptoBridge.d.ts +7 -0
- package/react-native/bridge/RnWebViewCryptoBridge.mjs +49 -0
- package/react-native/shims/circomlibjs-hinkal-fork.js +2 -2
- package/react-native/shims/circomlibjs.js +2 -2
- package/react-native/workerCDNUrls.cjs +1 -1
- package/react-native/workerCDNUrls.d.ts +1 -0
- package/react-native/workerCDNUrls.mjs +2 -2
- package/sdk/package.json.cjs +1 -1
- package/sdk/package.json.mjs +1 -1
- package/common/src/crypto/BabyJubRN.cjs +0 -1
- package/common/src/crypto/BabyJubRN.mjs +0 -33
- package/common/src/crypto/EddsaRN.cjs +0 -1
- package/common/src/crypto/EddsaRN.mjs +0 -41
- package/common/src/webworker/logError-DCl9T86l.js +0 -2
|
@@ -4,15 +4,15 @@ import { countTotalAmountInUtxos as r } from "../../functions/utils/amounts.util
|
|
|
4
4
|
import { transactionErrorCodes as i } from "../../error-handling/error-codes.constants.mjs";
|
|
5
5
|
import { randomBigInt as a } from "../../functions/web3/etherFunctions.mjs";
|
|
6
6
|
import { UserKeys as o } from "../crypto-keys/keys.mjs";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
7
|
+
import { ExternalActionId as s } from "../../types/external-action.types.mjs";
|
|
8
|
+
import { calcEncryptedOutputs as c } from "../../functions/snarkjs/common.snarkjs.mjs";
|
|
9
|
+
import { getCurrentTimeInSeconds as l } from "../../functions/utils/time.utils.mjs";
|
|
10
|
+
import { encodeTokenWithId as u } from "../../functions/utils/encodeTokenWithId.mjs";
|
|
11
|
+
import { addressToHexFormat as d, reorderZkCallData as f } from "../../functions/utils/tron.utils.mjs";
|
|
12
|
+
import { getInputUtxoAndBalancePerToken as p } from "../../functions/web3/events/getInputUtxoAndBalance.mjs";
|
|
13
|
+
import { validateAndGetChainId as m } from "../../functions/utils/token-check.utils.mjs";
|
|
14
|
+
import { addPaddingToUtxos as h } from "../../functions/web3/events/getShieldedBalance.mjs";
|
|
15
|
+
import { outputUtxoProcessing as g } from "../../functions/pre-transaction/outputUtxoProcessing.mjs";
|
|
16
16
|
import { getFeeStructure as _ } from "../../functions/pre-transaction/getFeeStructure.mjs";
|
|
17
17
|
import { RELAYER_TX_CONFIRMATION_TIMEOUT as v } from "../../constants/tx-confirmation.constants.mjs";
|
|
18
18
|
import { waitForTransactionConfirmation as y } from "../../functions/utils/tx-confirmation.utils.mjs";
|
|
@@ -23,9 +23,9 @@ import { mergeWithFeeStructure as w } from "../../functions/pre-transaction/merg
|
|
|
23
23
|
import { ethers as T } from "ethers";
|
|
24
24
|
//#region libs/shared/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.ts
|
|
25
25
|
var E = async (e, t, n, r) => {
|
|
26
|
-
let i = [...await
|
|
26
|
+
let i = [...await h(e, t, n, r, void 0, void 0, !1, !0)], a = [], o = l().toString();
|
|
27
27
|
for (let t = 0; t < n.length; t += 1) {
|
|
28
|
-
let { outputUtxos: n } =
|
|
28
|
+
let { outputUtxos: n } = await g(e.userKeys, i[t], r[t], o);
|
|
29
29
|
a.push(n);
|
|
30
30
|
}
|
|
31
31
|
return {
|
|
@@ -33,47 +33,47 @@ var E = async (e, t, n, r) => {
|
|
|
33
33
|
outputUtxosArray: a
|
|
34
34
|
};
|
|
35
35
|
}, D = async (e, t, n, r) => {
|
|
36
|
-
let i = [...await
|
|
36
|
+
let i = [...await h(e, t, n, r, 6, void 0, !1, !0)][0], a = l().toString(), { outputUtxos: o } = await g(e.userKeys, i, r[0], a);
|
|
37
37
|
return {
|
|
38
38
|
inputUtxos: i,
|
|
39
39
|
outputUtxos: o
|
|
40
40
|
};
|
|
41
41
|
}, O = async (e, n, r, a, o) => {
|
|
42
|
-
let
|
|
42
|
+
let c = t(n), l = [r.erc20TokenAddress], u = r.erc20TokenAddress, [p, m] = await Promise.all([_(n, u, l, s.Transact), e.getRandomRelay(n, !0)]);
|
|
43
43
|
if (!m) throw Error(i.RELAYER_NOT_AVAILABLE);
|
|
44
|
-
let h =
|
|
44
|
+
let h = d(o), g = a - p.flatFee;
|
|
45
45
|
if (g <= 0n) throw Error(`Insufficient balance to cover fee. Balance: ${a}, Fee: ${p.flatFee}`);
|
|
46
46
|
let v = [-g];
|
|
47
|
-
await w(n,
|
|
47
|
+
await w(n, l, v, p);
|
|
48
48
|
let y = {
|
|
49
49
|
externalActionId: 0n,
|
|
50
50
|
externalAddress: h,
|
|
51
51
|
externalActionMetadata: "0x00"
|
|
52
|
-
}, { inputUtxosArray: x, outputUtxosArray: S } = await E(e, n,
|
|
52
|
+
}, { inputUtxosArray: x, outputUtxosArray: S } = await E(e, n, l, v), { zkCallData: T, circomData: D, dimData: O, commitmentValidationData: k } = await b(e.merkleTreeHinkalByChain[n], x, S, e.userKeys, y.externalActionId, y.externalAddress, y.externalActionMetadata, e.generateProofRemotely, p, m, n);
|
|
53
53
|
return {
|
|
54
|
-
tx: await C(n, T, O, D, k, void 0, void 0, void 0, await
|
|
54
|
+
tx: await C(n, T, O, D, k, void 0, void 0, void 0, await f(c, T, O, D)),
|
|
55
55
|
amountToRecipient: g
|
|
56
56
|
};
|
|
57
|
-
}, k = async (e, t, r,
|
|
58
|
-
let
|
|
59
|
-
if (!
|
|
60
|
-
let { userKeys:
|
|
61
|
-
mintTo:
|
|
62
|
-
recipient:
|
|
63
|
-
nullifierCount:
|
|
57
|
+
}, k = async (e, t, r, l, u, d) => {
|
|
58
|
+
let f = [r.erc20TokenAddress], { originalDeployer: p } = n[t].contractData;
|
|
59
|
+
if (!p) throw Error("missing data");
|
|
60
|
+
let { userKeys: m, merkleTreeHinkalByChain: h } = e, g = r.erc20TokenAddress, [v, y] = await Promise.all([_(t, g, f, s.Transact, void 0, void 0, {
|
|
61
|
+
mintTo: f[0],
|
|
62
|
+
recipient: u,
|
|
63
|
+
nullifierCount: d
|
|
64
64
|
}), e.getRandomRelay(t, !0)]);
|
|
65
65
|
if (!y) throw Error(i.RELAYER_NOT_AVAILABLE);
|
|
66
|
-
let b =
|
|
67
|
-
if (b <= 0n) throw Error(`Insufficient balance to cover fee. Balance: ${
|
|
66
|
+
let b = l - v.flatFee;
|
|
67
|
+
if (b <= 0n) throw Error(`Insufficient balance to cover fee. Balance: ${l}, Fee: ${v.flatFee}`);
|
|
68
68
|
let C = [-b];
|
|
69
69
|
C[0] -= v.flatFee;
|
|
70
|
-
let { inputUtxos: w, outputUtxos: E } = await D(e, t,
|
|
71
|
-
tokenNumber:
|
|
70
|
+
let { inputUtxos: w, outputUtxos: E } = await D(e, t, f, C), O = o.findCorrectRandomization(a(31), e.userKeys.getShieldedPrivateKey()), k = {
|
|
71
|
+
tokenNumber: f.length,
|
|
72
72
|
nullifierAmount: w.length,
|
|
73
73
|
outputAmount: E.length
|
|
74
|
-
}, A =
|
|
75
|
-
recipient:
|
|
76
|
-
mint:
|
|
74
|
+
}, A = c([E])[0][0], j = Array.from(T.getBytes(A)), { proofAArr: M, proofBArr: N, proofCArr: P, publicInputsArr: F, commitmentValidationData: I } = await x(e.generateProofRemotely, h[t], m, [f[0]], [w], [E], O, v.flatFee, v.variableRate, u, y, k, [j], t), L = {
|
|
75
|
+
recipient: u,
|
|
76
|
+
mint: f[0] === "11111111111111111111111111111111" ? void 0 : f[0]
|
|
77
77
|
};
|
|
78
78
|
return {
|
|
79
79
|
tx: await S({
|
|
@@ -95,13 +95,13 @@ var E = async (e, t, n, r) => {
|
|
|
95
95
|
amountToRecipient: b
|
|
96
96
|
};
|
|
97
97
|
}, A = async (t, n, r, i, a, o) => e(n) ? k(t, n, r, i, a, o) : O(t, n, r, i, a), j = async (e, t, n) => {
|
|
98
|
-
let i = [], a =
|
|
98
|
+
let i = [], a = m([t]), o = u(a, {
|
|
99
99
|
erc20TokenAddress: t.erc20TokenAddress,
|
|
100
100
|
tokenId: 0
|
|
101
101
|
});
|
|
102
102
|
for (;;) {
|
|
103
103
|
await e.resetMerkleTreesIfNecessary([a]);
|
|
104
|
-
let s = ((await
|
|
104
|
+
let s = ((await p({
|
|
105
105
|
hinkal: e,
|
|
106
106
|
sliceIfMore6: !1,
|
|
107
107
|
useBlockedUtxos: !0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../types/external-action.types.cjs`),i=require(`../../functions/web3/events/getShieldedBalance.cjs`),a=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),o=require(`../../functions/utils/fees.utils.cjs`),s=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`);let c=require(`ethers`);var l=async(l,u,d,f,p,m={})=>{let h=d.erc20TokenAddress,g=f.map(e=>e+o.calculateTotalFee(e,p)),_=g.reduce((e,t)=>e+t,0n),v=[h],y=[0n],b=[!0],x=c.ethers.AbiCoder.defaultAbiCoder().encode([`uint256[]`],[g]),{hinkalWrapperAddress:S,hinkalWrapperABI:C,depositOnChainUtxosExternalActionAddress:w,depositOnChainUtxosExternalActionABI:T}=e.networkRegistry[u].contractData;if(!S||!C||!w||!T)throw Error(`contract data not set in networkRegistry`);let E=[...await i.addPaddingToUtxos(l,u,v,y,2,void 0,!0)],D=[];for(let e=0;e<E.length;e+=1){let{outputUtxos:t}=a.outputUtxoProcessing(l.userKeys,E[e],y[e]);D.push(t)}let{zkCallData:O,circomData:k,dimData:A}=await s.constructZkProof(l.merkleTreeHinkalByChain[u],E,D,l.userKeys,r.ExternalActionId.DepositOnChainUtxos,w,x,l.generateProofRemotely,n.zeroFeeStructure,t.zeroAddress,u,b,m.hookData,S);return{zkCallData:O,circomData:k,dimData:A,utxoAmounts:g,totalAmount:_,hinkalWrapperAddress:S,depositOnChainUtxosExternalActionAddress:w,hinkalWrapperABI:C,depositOnChainUtxosExternalActionABI:T,inputUtxosArray:E}};exports.prepareDepositOnChainUtxosZkProof=l;
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../types/external-action.types.cjs`),i=require(`../../functions/web3/events/getShieldedBalance.cjs`),a=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),o=require(`../../functions/utils/fees.utils.cjs`),s=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`);let c=require(`ethers`);var l=async(l,u,d,f,p,m={})=>{let h=d.erc20TokenAddress,g=f.map(e=>e+o.calculateTotalFee(e,p)),_=g.reduce((e,t)=>e+t,0n),v=[h],y=[0n],b=[!0],x=c.ethers.AbiCoder.defaultAbiCoder().encode([`uint256[]`],[g]),{hinkalWrapperAddress:S,hinkalWrapperABI:C,depositOnChainUtxosExternalActionAddress:w,depositOnChainUtxosExternalActionABI:T}=e.networkRegistry[u].contractData;if(!S||!C||!w||!T)throw Error(`contract data not set in networkRegistry`);let E=[...await i.addPaddingToUtxos(l,u,v,y,2,void 0,!0)],D=[];for(let e=0;e<E.length;e+=1){let{outputUtxos:t}=await a.outputUtxoProcessing(l.userKeys,E[e],y[e]);D.push(t)}let{zkCallData:O,circomData:k,dimData:A}=await s.constructZkProof(l.merkleTreeHinkalByChain[u],E,D,l.userKeys,r.ExternalActionId.DepositOnChainUtxos,w,x,l.generateProofRemotely,n.zeroFeeStructure,t.zeroAddress,u,b,m.hookData,S);return{zkCallData:O,circomData:k,dimData:A,utxoAmounts:g,totalAmount:_,hinkalWrapperAddress:S,depositOnChainUtxosExternalActionAddress:w,hinkalWrapperABI:C,depositOnChainUtxosExternalActionABI:T,inputUtxosArray:E}};exports.prepareDepositOnChainUtxosZkProof=l;
|
|
@@ -13,7 +13,7 @@ var l = async (l, u, d, f, p, m = {}) => {
|
|
|
13
13
|
if (!S || !C || !w || !T) throw Error("contract data not set in networkRegistry");
|
|
14
14
|
let E = [...await i(l, u, v, y, 2, void 0, !0)], D = [];
|
|
15
15
|
for (let e = 0; e < E.length; e += 1) {
|
|
16
|
-
let { outputUtxos: t } = a(l.userKeys, E[e], y[e]);
|
|
16
|
+
let { outputUtxos: t } = await a(l.userKeys, E[e], y[e]);
|
|
17
17
|
D.push(t);
|
|
18
18
|
}
|
|
19
19
|
let { zkCallData: O, circomData: k, dimData: A } = await s(l.merkleTreeHinkalByChain[u], E, D, l.userKeys, r.DepositOnChainUtxos, w, x, l.generateProofRemotely, n, t, u, b, m.hookData, S);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../crypto/poseidon.cjs`);require(`./keys.cjs`);const n=require(
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../crypto/poseidon.cjs`);require(`./keys.cjs`);const n=require(`../../functions/utils/bit.operations.cjs`),r=require(`../utxo/Utxo.cjs`);let i=require(`ethers`),a=require(`@solana/web3.js`);var o=`solana-on-chain-utxo:`,s=8,c=e=>{if(e.length!==s)throw Error(`Expected ${s} on-chain fields, received ${e.length}`);let t=e.map((e,t)=>{let n=e instanceof Uint8Array?e:Uint8Array.from(e);if(n.length!==32)throw Error(`Expected bytes32 length 32 at position ${t}, got ${n.length}`);return`0x${Buffer.from(n).toString(`hex`)}`});return`${o}${i.ethers.AbiCoder.defaultAbiCoder().encode([`bytes32[8]`],[t])}`},l=e=>e.startsWith(o),u=e=>{if(!l(e))throw Error(`Invalid encoded Solana UTXO payload`);let[r]=i.ethers.AbiCoder.defaultAbiCoder().decode([`bytes32[8]`],e.slice(21)),o=r;if(!Array.isArray(o)||o.length!==s)throw Error(`Malformed encoded Solana UTXO payload`);let[c,u,d,f,p,m,h,g]=o,_=BigInt(c),v=BigInt(f),y=n.extractHighestBit(v)===1n,b=n.takeOffHighestBit(v),x=i.ethers.toBeHex(BigInt(p)),S=BigInt(m),C=BigInt(h),w=BigInt(g).toString(),T=Array.from(i.ethers.getBytes(u)),E=Array.from(i.ethers.getBytes(d)),D=new a.PublicKey(Uint8Array.from([...T.slice(16),...E.slice(16)])).toBase58();return{amount:_,erc20TokenAddress:t.poseidonHash(BigInt(u),BigInt(d)),mintAddress:D,randomization:b,stealthAddress:x,H0:S,H1:C,timeStamp:w,isNewStyle:y}},d=e=>{let t=i.ethers.AbiCoder.defaultAbiCoder().decode([`uint256`,`address`,`tuple(uint256, uint256, uint256, uint256)`,`uint256`,`uint256`],e),r=BigInt(t[0]),a=t[1],o=BigInt(t[2][0]),s=n.extractHighestBit(o),c=n.takeOffHighestBit(o),l=i.ethers.toBeHex(BigInt(t[2][1])),u=BigInt(t[2][2]),d=BigInt(t[2][3]),f=BigInt(t[3]).toString(),p=Number(t[4]);return{amount:r,erc20TokenAddress:a,randomization:c,isNewStyle:s===1n,stealthAddress:l,H0:u,H1:d,timeStamp:f,tokenId:p}},f=(t,n,r)=>{if(e.isSolanaLike(r)){let{amount:e,erc20TokenAddress:r,mintAddress:i,randomization:a,stealthAddress:o,timeStamp:s,isNewStyle:c,H0:l}=u(t);return{amount:e,erc20TokenAddress:r,mintAddress:i,timeStamp:s,nullifyingKey:n,stealthAddress:o,isNewStyle:c,...c?{H0:[a,l]}:{randomization:a}}}let{amount:i,erc20TokenAddress:a,timeStamp:o,randomization:s,isNewStyle:c,stealthAddress:l,H0:f}=d(t);return{amount:i,erc20TokenAddress:a,timeStamp:o,nullifyingKey:n,stealthAddress:l,isNewStyle:c,...c?{H0:[s,f]}:{randomization:s}}},p=(e,t,n)=>new r.Utxo(f(e,t,n));exports.decodeEvmUtxo=d,exports.decodeSolanaUtxo=u,exports.decodeUtxo=p,exports.decodeUtxoConstructorArgs=f,exports.encodeSolanaOnChainUtxo=c,exports.isSolanaOnChainUtxo=l;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { isSolanaLike as e } from "../../constants/chains.constants.mjs";
|
|
2
2
|
import { poseidonHash as t } from "../../crypto/poseidon.mjs";
|
|
3
3
|
import "./keys.mjs";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { extractHighestBit as n, takeOffHighestBit as r } from "../../functions/utils/bit.operations.mjs";
|
|
5
|
+
import { Utxo as i } from "../utxo/Utxo.mjs";
|
|
6
6
|
import { ethers as a } from "ethers";
|
|
7
7
|
import { PublicKey as o } from "@solana/web3.js";
|
|
8
8
|
//#region libs/shared/common/src/data-structures/crypto-keys/decodeUTXO.ts
|
|
@@ -16,9 +16,9 @@ var s = "solana-on-chain-utxo:", c = 8, l = (e) => {
|
|
|
16
16
|
return `${s}${a.AbiCoder.defaultAbiCoder().encode(["bytes32[8]"], [t])}`;
|
|
17
17
|
}, u = (e) => e.startsWith(s), d = (e) => {
|
|
18
18
|
if (!u(e)) throw Error("Invalid encoded Solana UTXO payload");
|
|
19
|
-
let [
|
|
19
|
+
let [i] = a.AbiCoder.defaultAbiCoder().decode(["bytes32[8]"], e.slice(21)), s = i;
|
|
20
20
|
if (!Array.isArray(s) || s.length !== c) throw Error("Malformed encoded Solana UTXO payload");
|
|
21
|
-
let [l, d, f, p, m, h, g, _] = s, v = BigInt(l), y = BigInt(p), b =
|
|
21
|
+
let [l, d, f, p, m, h, g, _] = s, v = BigInt(l), y = BigInt(p), b = n(y) === 1n, x = r(y), S = a.toBeHex(BigInt(m)), C = BigInt(h), w = BigInt(g), T = BigInt(_).toString(), E = Array.from(a.getBytes(d)), D = Array.from(a.getBytes(f)), O = new o(Uint8Array.from([...E.slice(16), ...D.slice(16)])).toBase58();
|
|
22
22
|
return {
|
|
23
23
|
amount: v,
|
|
24
24
|
erc20TokenAddress: t(BigInt(d), BigInt(f)),
|
|
@@ -37,9 +37,9 @@ var s = "solana-on-chain-utxo:", c = 8, l = (e) => {
|
|
|
37
37
|
"tuple(uint256, uint256, uint256, uint256)",
|
|
38
38
|
"uint256",
|
|
39
39
|
"uint256"
|
|
40
|
-
], e),
|
|
40
|
+
], e), i = BigInt(t[0]), o = t[1], s = BigInt(t[2][0]), c = n(s), l = r(s), u = a.toBeHex(BigInt(t[2][1])), d = BigInt(t[2][2]), f = BigInt(t[2][3]), p = BigInt(t[3]).toString(), m = Number(t[4]);
|
|
41
41
|
return {
|
|
42
|
-
amount:
|
|
42
|
+
amount: i,
|
|
43
43
|
erc20TokenAddress: o,
|
|
44
44
|
randomization: l,
|
|
45
45
|
isNewStyle: c === 1n,
|
|
@@ -73,6 +73,6 @@ var s = "solana-on-chain-utxo:", c = 8, l = (e) => {
|
|
|
73
73
|
isNewStyle: c,
|
|
74
74
|
...c ? { H0: [s, u] } : { randomization: s }
|
|
75
75
|
};
|
|
76
|
-
}, m = (e, t,
|
|
76
|
+
}, m = (e, t, n) => new i(p(e, t, n));
|
|
77
77
|
//#endregion
|
|
78
78
|
export { f as decodeEvmUtxo, d as decodeSolanaUtxo, m as decodeUtxo, p as decodeUtxoConstructorArgs, l as encodeSolanaOnChainUtxo, u as isSolanaOnChainUtxo };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../_virtual/_rolldown/runtime.cjs`),require(`./keys.cjs`)
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`),require(`./keys.cjs`);const e=require(`../../crypto/ecdh-sealed-keys.cjs`);require(`../../crypto/ecdh.cjs`),require(`../utxo/Utxo.cjs`);let t=require(`ethers`),n=require(`@solana/web3.js`);var r=e=>e.startsWith(`0x`)?e:`0x${e}`,i=54912,a=e=>Uint8Array.from([Math.floor(e/256),e%256]),o=o=>{let s=[Buffer.from(t.ethers.toBeHex(o.amount)),Buffer.from(r(o.erc20TokenAddress)),Buffer.from(t.ethers.toBeHex(o.randomization??0n)),Buffer.from(r(o.getStealthAddress())),Buffer.from(t.ethers.toBeHex(BigInt(o.timeStamp))),Buffer.from(t.ethers.toBeHex(o.isNewStyle?1n:0n)),Buffer.from(t.ethers.toBeHex(o.H0?.[0]??0n)),Buffer.from(t.ethers.toBeHex(o.H0?.[1]??0n))];if(o.mintAddress){let e=new n.PublicKey(o.mintAddress),r=t.ethers.hexlify(e.toBytes());s.push(Buffer.from(r))}let c=e.encryptSealedKeys(Buffer.concat(s),[o.getEncryptionKey()]);return Buffer.concat([Buffer.from(a(i)),Buffer.from(c)])};exports.encryptUtxo=o;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "./keys.mjs";
|
|
2
|
-
import "../utxo/Utxo.mjs";
|
|
3
2
|
import { encryptSealedKeys as e } from "../../crypto/ecdh-sealed-keys.mjs";
|
|
4
3
|
import "../../crypto/ecdh.mjs";
|
|
4
|
+
import "../utxo/Utxo.mjs";
|
|
5
5
|
import { ethers as t } from "ethers";
|
|
6
6
|
import { PublicKey as n } from "@solana/web3.js";
|
|
7
7
|
//#region libs/shared/common/src/data-structures/crypto-keys/encryptDecryptUtxo.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../crypto/poseidon.cjs`),n=require(`../../functions/web3/etherFunctions.cjs`),r=require(`../crypto-keys/keys.cjs`),i=require(`../../functions/utils/time.utils.cjs`);var
|
|
1
|
+
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../crypto/poseidon.cjs`),n=require(`../../functions/web3/etherFunctions.cjs`),r=require(`../crypto-keys/keys.cjs`),i=require(`../../crypto/rnUtxoCrypto.cjs`),a=require(`../../functions/utils/time.utils.cjs`);var o=class o{amount;erc20TokenAddress;mintAddress;timeStamp;nullifyingKey;spendingPublicKey;randomization;H0;stealthAddress;encryptionKey;commitment;nullifier;isBlocked;isNewStyle;constructor({amount:e,erc20TokenAddress:t,mintAddress:i,timeStamp:o,nullifyingKey:s,spendingPublicKey:c,randomization:l,H0:u,stealthAddress:d,encryptionKey:f,commitment:p=void 0,nullifier:m=void 0,isBlocked:h=!1,isNewStyle:g=!1}){this.amount=e,this.erc20TokenAddress=t,this.mintAddress=i,this.timeStamp=o??a.getCurrentTimeInSeconds().toString(),this.nullifyingKey=s,this.spendingPublicKey=c,this.randomization=l??(s?r.UserKeys.findCorrectRandomization(n.randomBigInt(31),s):void 0),this.H0=u??(g&&this.randomization?r.UserKeys.findH0(this.randomization,s):void 0),this.stealthAddress=d,this.encryptionKey=f,this.commitment=p,this.nullifier=m,this.isBlocked=h,this.isNewStyle=g}static async createAsync(e){if(i.needsRnNewStyleCrypto(e)){let t=await i.prepareNewStyleUtxoFields(e.nullifyingKey,e.spendingPublicKey);return new o({...e,randomization:t.randomization,H0:t.H0,stealthAddress:t.stealthAddress})}return new o(e)}static createFrom(e,t){return new o({...e.getConstructableParams(),nullifier:void 0,commitment:void 0,...t})}getConstructableParams(){return{amount:this.amount,erc20TokenAddress:this.erc20TokenAddress,mintAddress:this.mintAddress,timeStamp:this.timeStamp,nullifyingKey:this.nullifyingKey,spendingPublicKey:this.spendingPublicKey,randomization:this.randomization,H0:this.H0,stealthAddress:this.stealthAddress,encryptionKey:this.encryptionKey,commitment:this.commitment,nullifier:this.nullifier,isBlocked:this.isBlocked,isNewStyle:this.isNewStyle}}getBasicUtxoParams(){return{amount:this.amount,erc20TokenAddress:this.erc20TokenAddress,mintAddress:this.mintAddress,timeStamp:this.timeStamp,randomization:this.randomization,H0:this.H0,stealthAddress:this.stealthAddress,commitment:this.commitment,nullifier:this.nullifier,isBlocked:this.isBlocked,isNewStyle:this.isNewStyle}}getCommitment(){if(!this.commitment){let e=[this.amount,this.erc20TokenAddress,BigInt(this.getStealthAddress()),this.timeStamp];this.commitment=t.poseidonHash(...e)}return this.commitment}getNullifier(){if(!this.nullifier){if(!this.nullifyingKey)throw Error(`No Nullifiers if private key is not provided`);let e=this.getCommitment(),n=t.poseidonHash(this.nullifyingKey,e);this.nullifier=t.poseidonHash(e,n)}return this.nullifier}getStealthAddress(){if(!this.stealthAddress){if(!this.nullifyingKey)throw Error(`No stealth address in UTXO if private key is not provided`);if(this.isNewStyle){if(!this.H0)throw Error(`No H0 point provided`);this.stealthAddress=r.UserKeys.getStealthAddressNewStyle(this.H0,this.nullifyingKey,this.spendingPublicKey)}else{if(!this.randomization)throw Error(`No randomization provided`);this.stealthAddress=r.UserKeys.getStealthAddress(this.randomization,this.nullifyingKey)}}return this.stealthAddress}getTokenAddress(t){let n=e.isSolanaLike(t)?this.mintAddress:this.erc20TokenAddress;if(!n)throw Error(`No token address provided`);return n}getEncryptionKey(){if(!this.nullifyingKey){if(!this.encryptionKey)throw Error(`No encryption key provided in UTXO`);return this.encryptionKey}return r.UserKeys.getEncryptionKeyPair(this.nullifyingKey).publicKey}};exports.Utxo=o;
|
|
@@ -49,6 +49,7 @@ export declare class Utxo {
|
|
|
49
49
|
* @param isBlocked [optional] whether the UTXO is blocked
|
|
50
50
|
*/
|
|
51
51
|
constructor({ amount, erc20TokenAddress, mintAddress, timeStamp, nullifyingKey, spendingPublicKey, randomization, H0, stealthAddress, encryptionKey, commitment, nullifier, isBlocked, isNewStyle, }: IUtxoConstructor);
|
|
52
|
+
static createAsync(params: IUtxoConstructor): Promise<Utxo>;
|
|
52
53
|
static createFrom(utxoToCreateFrom: Utxo, patch: Partial<IUtxoConstructor>): Utxo;
|
|
53
54
|
getConstructableParams(): IUtxoConstructor;
|
|
54
55
|
getBasicUtxoParams(): IUtxoConstructor;
|
|
@@ -2,9 +2,10 @@ import { isSolanaLike as e } from "../../constants/chains.constants.mjs";
|
|
|
2
2
|
import { poseidonHash as t } from "../../crypto/poseidon.mjs";
|
|
3
3
|
import { randomBigInt as n } from "../../functions/web3/etherFunctions.mjs";
|
|
4
4
|
import { UserKeys as r } from "../crypto-keys/keys.mjs";
|
|
5
|
-
import {
|
|
5
|
+
import { needsRnNewStyleCrypto as i, prepareNewStyleUtxoFields as a } from "../../crypto/rnUtxoCrypto.mjs";
|
|
6
|
+
import { getCurrentTimeInSeconds as o } from "../../functions/utils/time.utils.mjs";
|
|
6
7
|
//#region libs/shared/common/src/data-structures/utxo/Utxo.ts
|
|
7
|
-
var
|
|
8
|
+
var s = class s {
|
|
8
9
|
amount;
|
|
9
10
|
erc20TokenAddress;
|
|
10
11
|
mintAddress;
|
|
@@ -19,11 +20,23 @@ var a = class a {
|
|
|
19
20
|
nullifier;
|
|
20
21
|
isBlocked;
|
|
21
22
|
isNewStyle;
|
|
22
|
-
constructor({ amount: e, erc20TokenAddress: t, mintAddress:
|
|
23
|
-
this.amount = e, this.erc20TokenAddress = t, this.mintAddress =
|
|
23
|
+
constructor({ amount: e, erc20TokenAddress: t, mintAddress: i, timeStamp: a, nullifyingKey: s, spendingPublicKey: c, randomization: l, H0: u, stealthAddress: d, encryptionKey: f, commitment: p = void 0, nullifier: m = void 0, isBlocked: h = !1, isNewStyle: g = !1 }) {
|
|
24
|
+
this.amount = e, this.erc20TokenAddress = t, this.mintAddress = i, this.timeStamp = a ?? o().toString(), this.nullifyingKey = s, this.spendingPublicKey = c, this.randomization = l ?? (s ? r.findCorrectRandomization(n(31), s) : void 0), this.H0 = u ?? (g && this.randomization ? r.findH0(this.randomization, s) : void 0), this.stealthAddress = d, this.encryptionKey = f, this.commitment = p, this.nullifier = m, this.isBlocked = h, this.isNewStyle = g;
|
|
25
|
+
}
|
|
26
|
+
static async createAsync(e) {
|
|
27
|
+
if (i(e)) {
|
|
28
|
+
let t = await a(e.nullifyingKey, e.spendingPublicKey);
|
|
29
|
+
return new s({
|
|
30
|
+
...e,
|
|
31
|
+
randomization: t.randomization,
|
|
32
|
+
H0: t.H0,
|
|
33
|
+
stealthAddress: t.stealthAddress
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
return new s(e);
|
|
24
37
|
}
|
|
25
38
|
static createFrom(e, t) {
|
|
26
|
-
return new
|
|
39
|
+
return new s({
|
|
27
40
|
...e.getConstructableParams(),
|
|
28
41
|
nullifier: void 0,
|
|
29
42
|
commitment: void 0,
|
|
@@ -110,4 +123,4 @@ var a = class a {
|
|
|
110
123
|
}
|
|
111
124
|
};
|
|
112
125
|
//#endregion
|
|
113
|
-
export {
|
|
126
|
+
export { s as Utxo };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./utils/abi.utils.cjs`),require(`./utils/serialize.utils.cjs`),require(`./utils/caseInsensitive.utils.cjs`),require(`./utils/amounts.utils.cjs`),require(`./web3/etherFunctions.cjs`),require(`./utils/
|
|
1
|
+
require(`./utils/abi.utils.cjs`),require(`./utils/serialize.utils.cjs`),require(`./utils/caseInsensitive.utils.cjs`),require(`./utils/amounts.utils.cjs`),require(`./web3/etherFunctions.cjs`),require(`./utils/external-action.utils.cjs`),require(`./utils/bit.operations.cjs`),require(`./snarkjs/common.snarkjs.cjs`),require(`./utils/time.utils.cjs`),require(`./utils/upToDateState.cjs`),require(`./utils/cacheFunctions.cjs`),require(`./utils/enclaveHandshakeService.cjs`),require(`./utils/encryptInputForEnclave.cjs`),require(`./utils/solanaMint.utils.cjs`),require(`./utils/customEnclaveFunctionsRegister.cjs`),require(`./utils/addresses.cjs`),require(`./utils/tron.utils.cjs`),require(`./web3/events/getInputUtxoAndBalance.cjs`),require(`./utils/get-signature-header.cjs`),require(`./utils/auth.utils.cjs`),require(`./utils/string.utils.cjs`),require(`./utils/token-check.utils.cjs`),require(`./utils/map.utils.cjs`),require(`./utils/mutexes.utils.cjs`),require(`./utils/erc20tokenFunctions.cjs`),require(`./web3/events/getShieldedBalance.cjs`),require(`./pre-transaction/outputUtxoProcessing.cjs`),require(`./pre-transaction/solana.cjs`),require(`./snarkjs/signedMessageHash.cjs`),require(`./pre-transaction/process-gas-estimates.cjs`),require(`./pre-transaction/getVolatileTransferAmount.cjs`),require(`./pre-transaction/constructAdminData.cjs`),require(`./utils/create-provider.cjs`),require(`./pre-transaction/convert-okx-instructions.cjs`),require(`./web3/getSolanaPriorityFee.cjs`),require(`./utils/process.utils.cjs`),require(`./pre-transaction/sendV0Transaction.cjs`),require(`./utils/bytes32.utils.cjs`),require(`./pre-transaction/recipientUtxoProcessing.cjs`),require(`./pre-transaction/ensureAmountChanges.cjs`),require(`./pre-transaction/getFeeStructure.cjs`),require(`./pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),require(`./pre-transaction/buildCommitmentValidationData.cjs`),require(`./pre-transaction/index.cjs`),require(`./snarkjs/generateZkProof.cjs`),require(`./snarkjs/generateMainAndCommitmentZkProof.cjs`),require(`./utils/serialize-utxos.utils.cjs`),require(`./utils/resolve-sync.utils.cjs`),require(`./utils/reloadPage.cjs`),require(`./utils/cacheDevice.utils.cjs`),require(`./utils/involves-permit2-op.cjs`),require(`./utils/convertEmporiumOpToCallInfo.cjs`),require(`./utils/getRecipientInfoFromUserKeys.cjs`),require(`./utils/publicBalance.utils.cjs`),require(`./utils/postToOffscreen.cjs`),require(`./utils/getContractAddress.cjs`),require(`./utils/getUtxosFromReceipt.utils.cjs`),require(`./utils/getUtxosFromReceiptSolana.cjs`),require(`./utils/fees.utils.cjs`),require(`./utils/enclave-signature-storage.cjs`),require(`./utils/tx-confirmation.utils.cjs`),require(`./utils/tronSimulation.utils.cjs`),require(`./utils/getSignerFromContract.cjs`),require(`./utils/mnemonics.cjs`),require(`./utils/nearIntents.utils.cjs`),require(`./utils/index.cjs`),require(`./snarkjs/fetchOnChainRootHashes.cjs`),require(`./private-wallet/emporium.helpers.cjs`),require(`./snarkjs/constructGeneralZkProof.cjs`),require(`./web3/uniswapAPI.cjs`),require(`./web3/odosAPI.cjs`),require(`./web3/oneInchAPI.cjs`),require(`./web3/okxAPI.cjs`),require(`./web3/index.cjs`),require(`./snarkjs/constructSolanaZkProof.cjs`),require(`./snarkjs/index.cjs`),require(`./private-wallet/emporium.swap.helpers.cjs`),require(`./private-wallet/index.cjs`),require(`./auto-deposit-back-helpers/get-tokens-to-deposit-back.cjs`),require(`./auto-deposit-back-helpers/get-gas-token-records.cjs`),require(`./auto-deposit-back-helpers/select-gas-token.cjs`),require(`./auto-deposit-back-helpers/update-hinkal.cjs`),require(`./auto-deposit-back-helpers/index.cjs`);
|
|
@@ -3,7 +3,9 @@ import "./utils/serialize.utils.mjs";
|
|
|
3
3
|
import "./utils/caseInsensitive.utils.mjs";
|
|
4
4
|
import "./utils/amounts.utils.mjs";
|
|
5
5
|
import "./web3/etherFunctions.mjs";
|
|
6
|
-
import "./utils/
|
|
6
|
+
import "./utils/external-action.utils.mjs";
|
|
7
|
+
import "./utils/bit.operations.mjs";
|
|
8
|
+
import "./snarkjs/common.snarkjs.mjs";
|
|
7
9
|
import "./utils/time.utils.mjs";
|
|
8
10
|
import "./utils/upToDateState.mjs";
|
|
9
11
|
import "./utils/cacheFunctions.mjs";
|
|
@@ -23,9 +25,6 @@ import "./utils/mutexes.utils.mjs";
|
|
|
23
25
|
import "./utils/erc20tokenFunctions.mjs";
|
|
24
26
|
import "./web3/events/getShieldedBalance.mjs";
|
|
25
27
|
import "./pre-transaction/outputUtxoProcessing.mjs";
|
|
26
|
-
import "./utils/external-action.utils.mjs";
|
|
27
|
-
import "./utils/bit.operations.mjs";
|
|
28
|
-
import "./snarkjs/common.snarkjs.mjs";
|
|
29
28
|
import "./pre-transaction/solana.mjs";
|
|
30
29
|
import "./snarkjs/signedMessageHash.mjs";
|
|
31
30
|
import "./pre-transaction/process-gas-estimates.mjs";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../constants/
|
|
1
|
+
const e=require(`../../constants/vite.constants.cjs`),t=require(`../../constants/chains.constants.cjs`),n=require(`../../crypto/rnCryptoBridge.cjs`),r=require(`../../data-structures/crypto-keys/keys.cjs`),i=require(`../../webworker/cryptoWorker/cryptoWorker.types.cjs`),a=require(`../snarkjs/common.snarkjs.cjs`),o=require(`../../crypto/rnUtxoCrypto.cjs`),s=require(`../utils/solanaMint.utils.cjs`),c=require(`../utils/hinkalTiming.utils.cjs`),l=require(`../../webworker/worker.registry.cjs`),u=require(`../../webworker/performTaskWithWorker.cjs`),d=require(`../../webworker/zkProofWorker/zkProofWorker.types.cjs`);var f=async(f,p,m,h)=>{let g=c.createRnDeltaTiming(`mainThread.commitmentValidation`);if(a.hasOnlyZeroAmounts(h))return;let _=t.isSolanaLike(f),v=h.map(e=>e.map(e=>e.amount.toString())),y=h.map(e=>e.map(e=>e.timeStamp)),b=h.map(e=>e.map(e=>a.getUtxoCircuitInRandomization(e))),x=h.map(e=>e.map(e=>e.getConstructableParams()));g.log(`serializeInputs`);let S=c.createRnDeltaTiming(`mainThread.getCommitment`),C=h.map(e=>e.map(e=>e.amount===0n?`0`:BigInt(e.getCommitment()).toString()));S.log(`all-utxos`,{count:h.reduce((e,t)=>e+t.length,0)});let w=await u.performTaskWithWorker({type:l.WorkerVariant.ZKProof,payload:{type:d.ZKProofWorkerActionType.BUILD_IN_NULLIFIERS,data:{inputUtxosSerialized:x}}});g.log(`buildInNullifiers-worker-done`);let T=p.getShieldedPrivateKey(),E=await o.getSpendingPublicKeyForRn(p),D=_?m.map(e=>{let{compressedAddress:t}=s.formatMintAddress(e);return BigInt(t).toString()}):m.map(e=>BigInt(e).toString()),O=c.createRnDeltaTiming(`mainThread.stealthValidation`),k=0;if(e.isReactNative){let e=[];h.forEach((t,n)=>{t.forEach((t,r)=>{k+=1;let i=t.spendingPublicKey??E;e.push({tokenIdx:n,utxoIdx:r,utxoStealthAddress:t.getStealthAddress(),isNewStyle:!!t.isNewStyle,randomization:t.randomization?.toString(),H0:t.H0?[t.H0[0].toString(),t.H0[1].toString()]:void 0,spendingPublicKey:[i[0].toString(),i[1].toString()]})})});let t=n.getRnCryptoBridge();await t.init(),(await t.call(i.CryptoWorkerOp.BATCH_STEALTH_VALIDATION,{nullifyingPrivateKey:T,defaultSpendingPublicKey:[E[0].toString(),E[1].toString()],checks:e})).forEach((t,n)=>{if(t.matches)return;let{tokenIdx:r,utxoIdx:i}=e[n];throw Error(`Commitment validation stealth mismatch at tokenIdx=${r}, utxoIdx=${i}`)})}else h.forEach((e,t)=>{e.forEach((e,n)=>{k+=1;let i=e.getStealthAddress(),a=e.spendingPublicKey??E,o=e.isNewStyle&&e.H0?r.UserKeys.getStealthAddressNewStyle(e.H0,T,a):r.UserKeys.getStealthAddress(BigInt(e.randomization),T);if(BigInt(i).toString()!==BigInt(o).toString())throw Error(`Commitment validation stealth mismatch at tokenIdx=${t}, utxoIdx=${n}`)})});O.log(`all-utxos`,{stealthChecks:k});let A={nullifyingPrivateKey:T,spendingPublicKey:E,erc20TokenAddresses:D,inAmounts:v,inRandomizations:b,inH0Ax:h.map(e=>e.map(e=>a.getUtxoCircuitH0Coords(e)[0].toString())),inH0Ay:h.map(e=>e.map(e=>a.getUtxoCircuitH0Coords(e)[1].toString())),isNewStyle:h.map(e=>e.map(e=>!!e.isNewStyle)),inTimeStamps:y,inCommitments:C,inNullifiers:w};if(!m.length||!h[0]?.length)return;let j=`commitmentCalculator${m.length}x${h[0].length}`;return g.log(`done`,{verifierName:j}),{tokenAddresses:D,inAmounts:v,inTimeStamps:y,inRandomizations:b,inCommitments:C,inNullifiers:w,verifierName:j,commitmentInput:A}},p=(e,t)=>{if(!(!e||!t))return{tokenAddresses:e.tokenAddresses,inAmounts:e.inAmounts,inTimeStamps:e.inTimeStamps,inRandomizations:e.inRandomizations,inCommitments:e.inCommitments,inNullifiers:e.inNullifiers,proof:{a:t.zkCallData[0],b:t.zkCallData[1],c:t.zkCallData[2]}}};exports.buildCommitmentValidationData=f,exports.buildCommitmentValidationDataFromProof=p;
|
|
@@ -1,64 +1,96 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
1
|
+
import { isReactNative as e } from "../../constants/vite.constants.mjs";
|
|
2
|
+
import { isSolanaLike as t } from "../../constants/chains.constants.mjs";
|
|
3
|
+
import { getRnCryptoBridge as n } from "../../crypto/rnCryptoBridge.mjs";
|
|
4
|
+
import { UserKeys as r } from "../../data-structures/crypto-keys/keys.mjs";
|
|
5
|
+
import { CryptoWorkerOp as i } from "../../webworker/cryptoWorker/cryptoWorker.types.mjs";
|
|
6
|
+
import { getUtxoCircuitH0Coords as a, getUtxoCircuitInRandomization as o, hasOnlyZeroAmounts as s } from "../snarkjs/common.snarkjs.mjs";
|
|
7
|
+
import { getSpendingPublicKeyForRn as c } from "../../crypto/rnUtxoCrypto.mjs";
|
|
8
|
+
import { formatMintAddress as l } from "../utils/solanaMint.utils.mjs";
|
|
9
|
+
import { createRnDeltaTiming as u } from "../utils/hinkalTiming.utils.mjs";
|
|
10
|
+
import { WorkerVariant as d } from "../../webworker/worker.registry.mjs";
|
|
11
|
+
import { performTaskWithWorker as f } from "../../webworker/performTaskWithWorker.mjs";
|
|
12
|
+
import { ZKProofWorkerActionType as p } from "../../webworker/zkProofWorker/zkProofWorker.types.mjs";
|
|
9
13
|
//#region libs/shared/common/src/functions/pre-transaction/buildCommitmentValidationData.ts
|
|
10
|
-
var
|
|
11
|
-
let
|
|
12
|
-
if (
|
|
13
|
-
let
|
|
14
|
-
|
|
15
|
-
let
|
|
16
|
-
|
|
17
|
-
let
|
|
18
|
-
type:
|
|
14
|
+
var m = async (m, h, g, _) => {
|
|
15
|
+
let v = u("mainThread.commitmentValidation");
|
|
16
|
+
if (s(_)) return;
|
|
17
|
+
let y = t(m), b = _.map((e) => e.map((e) => e.amount.toString())), x = _.map((e) => e.map((e) => e.timeStamp)), S = _.map((e) => e.map((e) => o(e))), C = _.map((e) => e.map((e) => e.getConstructableParams()));
|
|
18
|
+
v.log("serializeInputs");
|
|
19
|
+
let w = u("mainThread.getCommitment"), T = _.map((e) => e.map((e) => e.amount === 0n ? "0" : BigInt(e.getCommitment()).toString()));
|
|
20
|
+
w.log("all-utxos", { count: _.reduce((e, t) => e + t.length, 0) });
|
|
21
|
+
let E = await f({
|
|
22
|
+
type: d.ZKProof,
|
|
19
23
|
payload: {
|
|
20
|
-
type:
|
|
21
|
-
data: { inputUtxosSerialized:
|
|
24
|
+
type: p.BUILD_IN_NULLIFIERS,
|
|
25
|
+
data: { inputUtxosSerialized: C }
|
|
22
26
|
}
|
|
23
27
|
});
|
|
24
|
-
|
|
25
|
-
let
|
|
26
|
-
let { compressedAddress: t } =
|
|
28
|
+
v.log("buildInNullifiers-worker-done");
|
|
29
|
+
let D = h.getShieldedPrivateKey(), O = await c(h), k = y ? g.map((e) => {
|
|
30
|
+
let { compressedAddress: t } = l(e);
|
|
27
31
|
return BigInt(t).toString();
|
|
28
|
-
}) :
|
|
29
|
-
|
|
30
|
-
e
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
}) : g.map((e) => BigInt(e).toString()), A = u("mainThread.stealthValidation"), j = 0;
|
|
33
|
+
if (e) {
|
|
34
|
+
let e = [];
|
|
35
|
+
_.forEach((t, n) => {
|
|
36
|
+
t.forEach((t, r) => {
|
|
37
|
+
j += 1;
|
|
38
|
+
let i = t.spendingPublicKey ?? O;
|
|
39
|
+
e.push({
|
|
40
|
+
tokenIdx: n,
|
|
41
|
+
utxoIdx: r,
|
|
42
|
+
utxoStealthAddress: t.getStealthAddress(),
|
|
43
|
+
isNewStyle: !!t.isNewStyle,
|
|
44
|
+
randomization: t.randomization?.toString(),
|
|
45
|
+
H0: t.H0 ? [t.H0[0].toString(), t.H0[1].toString()] : void 0,
|
|
46
|
+
spendingPublicKey: [i[0].toString(), i[1].toString()]
|
|
47
|
+
});
|
|
48
|
+
});
|
|
34
49
|
});
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
50
|
+
let t = n();
|
|
51
|
+
await t.init(), (await t.call(i.BATCH_STEALTH_VALIDATION, {
|
|
52
|
+
nullifyingPrivateKey: D,
|
|
53
|
+
defaultSpendingPublicKey: [O[0].toString(), O[1].toString()],
|
|
54
|
+
checks: e
|
|
55
|
+
})).forEach((t, n) => {
|
|
56
|
+
if (t.matches) return;
|
|
57
|
+
let { tokenIdx: r, utxoIdx: i } = e[n];
|
|
58
|
+
throw Error(`Commitment validation stealth mismatch at tokenIdx=${r}, utxoIdx=${i}`);
|
|
59
|
+
});
|
|
60
|
+
} else _.forEach((e, t) => {
|
|
61
|
+
e.forEach((e, n) => {
|
|
62
|
+
j += 1;
|
|
63
|
+
let i = e.getStealthAddress(), a = e.spendingPublicKey ?? O, o = e.isNewStyle && e.H0 ? r.getStealthAddressNewStyle(e.H0, D, a) : r.getStealthAddress(BigInt(e.randomization), D);
|
|
64
|
+
if (BigInt(i).toString() !== BigInt(o).toString()) throw Error(`Commitment validation stealth mismatch at tokenIdx=${t}, utxoIdx=${n}`);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
A.log("all-utxos", { stealthChecks: j });
|
|
68
|
+
let M = {
|
|
69
|
+
nullifyingPrivateKey: D,
|
|
70
|
+
spendingPublicKey: O,
|
|
71
|
+
erc20TokenAddresses: k,
|
|
72
|
+
inAmounts: b,
|
|
73
|
+
inRandomizations: S,
|
|
74
|
+
inH0Ax: _.map((e) => e.map((e) => a(e)[0].toString())),
|
|
75
|
+
inH0Ay: _.map((e) => e.map((e) => a(e)[1].toString())),
|
|
76
|
+
isNewStyle: _.map((e) => e.map((e) => !!e.isNewStyle)),
|
|
77
|
+
inTimeStamps: x,
|
|
78
|
+
inCommitments: T,
|
|
79
|
+
inNullifiers: E
|
|
48
80
|
};
|
|
49
|
-
if (!
|
|
50
|
-
let
|
|
51
|
-
return
|
|
52
|
-
tokenAddresses:
|
|
53
|
-
inAmounts:
|
|
54
|
-
inTimeStamps:
|
|
55
|
-
inRandomizations:
|
|
56
|
-
inCommitments:
|
|
57
|
-
inNullifiers:
|
|
58
|
-
verifierName:
|
|
59
|
-
commitmentInput:
|
|
81
|
+
if (!g.length || !_[0]?.length) return;
|
|
82
|
+
let N = `commitmentCalculator${g.length}x${_[0].length}`;
|
|
83
|
+
return v.log("done", { verifierName: N }), {
|
|
84
|
+
tokenAddresses: k,
|
|
85
|
+
inAmounts: b,
|
|
86
|
+
inTimeStamps: x,
|
|
87
|
+
inRandomizations: S,
|
|
88
|
+
inCommitments: T,
|
|
89
|
+
inNullifiers: E,
|
|
90
|
+
verifierName: N,
|
|
91
|
+
commitmentInput: M
|
|
60
92
|
};
|
|
61
|
-
},
|
|
93
|
+
}, h = (e, t) => {
|
|
62
94
|
if (!(!e || !t)) return {
|
|
63
95
|
tokenAddresses: e.tokenAddresses,
|
|
64
96
|
inAmounts: e.inAmounts,
|
|
@@ -74,4 +106,4 @@ var u = async (u, d, f, p) => {
|
|
|
74
106
|
};
|
|
75
107
|
};
|
|
76
108
|
//#endregion
|
|
77
|
-
export {
|
|
109
|
+
export { m as buildCommitmentValidationData, h as buildCommitmentValidationDataFromProof };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../utils/amounts.utils.cjs`),t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../data-structures/utxo/Utxo.cjs`),
|
|
1
|
+
const e=require(`../utils/amounts.utils.cjs`),t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../crypto/rnUtxoCrypto.cjs`),r=require(`../../data-structures/utxo/Utxo.cjs`),i=require(`../utils/hinkalTiming.utils.cjs`);var a=async(a,o,s,c,l=!0,u,d)=>{let f=i.createRnDeltaTiming(`mainThread.outputUtxo`),p=e.countTotalAmountInUtxos(o),{erc20TokenAddress:m,mintAddress:h}=o[0];if(l&&s<0n&&p+s<0n)throw Error(t.transactionErrorCodes.INSUFFICIENT_FUNDS_TO_TRANSACT);f.log(`sumInputs`);let g=await n.getSpendingPublicKeyForRn(a),_=[await r.Utxo.createAsync({amount:e.bigintMax(p+s,0n),erc20TokenAddress:m,mintAddress:h,nullifyingKey:a.getShieldedPrivateKey(),timeStamp:c,spendingPublicKey:g,isNewStyle:!0})];if(f.log(`newUtxo-change`,{randomization:!!_[0].randomization,h0:!!_[0].H0}),u!==void 0&&d!==void 0){let[e,t,n,,i]=u.split(`,`);_.push(new r.Utxo({amount:d,erc20TokenAddress:m,mintAddress:h,H0:[BigInt(t),BigInt(n)],stealthAddress:e,encryptionKey:i,timeStamp:c,isNewStyle:!0})),f.log(`newUtxo-recipient`)}return f.log(`done`,{outputCount:_.length}),{outputUtxos:_}};exports.outputUtxoProcessing=a;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { UserKeys } from '../../data-structures/crypto-keys/keys';
|
|
2
2
|
import { Utxo } from '../../data-structures/utxo/Utxo';
|
|
3
|
-
export declare const outputUtxoProcessing: (userKeys: UserKeys, inputUtxos: Utxo[], amountChange: bigint, timeStamp?: string, revertIfNegative?: boolean, recipientAddress?: string, recipientAmountChange?: bigint) => {
|
|
3
|
+
export declare const outputUtxoProcessing: (userKeys: UserKeys, inputUtxos: Utxo[], amountChange: bigint, timeStamp?: string, revertIfNegative?: boolean, recipientAddress?: string, recipientAmountChange?: bigint) => Promise<{
|
|
4
4
|
outputUtxos: Utxo[];
|
|
5
|
-
}
|
|
5
|
+
}>;
|