@gurge/sdk 0.3.27 → 0.3.29
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/BabyJubRN.cjs +1 -0
- package/common/src/crypto/BabyJubRN.d.ts +2 -0
- package/common/src/crypto/BabyJubRN.mjs +66 -0
- package/common/src/crypto/EddsaRN.cjs +1 -0
- package/common/src/crypto/EddsaRN.mjs +41 -0
- package/common/src/crypto/babyJub.cjs +1 -1
- package/common/src/crypto/babyJub.mjs +6 -12
- package/common/src/crypto/eddsa.cjs +1 -1
- package/common/src/crypto/eddsa.mjs +6 -12
- package/common/src/crypto/poseidon.cjs +1 -1
- package/common/src/crypto/poseidon.mjs +6 -12
- package/common/src/crypto/preProcessing.cjs +1 -1
- package/common/src/crypto/preProcessing.mjs +13 -23
- 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.d.ts +3 -1
- package/common/src/data-structures/Hinkal/hinkalWithdraw.mjs +29 -34
- 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/MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.cjs +1 -1
- package/common/src/data-structures/MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.mjs +26 -42
- 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 +0 -1
- package/common/src/data-structures/utxo/Utxo.mjs +6 -19
- package/common/src/functions/index.cjs +1 -1
- package/common/src/functions/index.mjs +4 -3
- package/common/src/functions/pre-transaction/buildCommitmentValidationData.cjs +1 -1
- package/common/src/functions/pre-transaction/buildCommitmentValidationData.mjs +46 -87
- 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 +23 -28
- 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 +57 -61
- 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.d.ts +2 -0
- package/common/src/functions/utils/bigint-math.utils.mjs +18 -1
- 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/hinkalTiming.utils.cjs +1 -1
- package/common/src/functions/utils/hinkalTiming.utils.d.ts +3 -9
- package/common/src/functions/utils/hinkalTiming.utils.mjs +13 -18
- package/common/src/functions/utils/index.cjs +1 -1
- package/common/src/functions/utils/index.mjs +3 -3
- package/common/src/functions/web3/events/getInputUtxoAndBalance.cjs +1 -1
- package/common/src/functions/web3/events/getInputUtxoAndBalance.mjs +71 -122
- 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/logError-D8yBaP96.js +2 -0
- package/common/src/webworker/package.json +1 -1
- package/common/src/webworker/performTaskWithWorker.cjs +1 -1
- package/common/src/webworker/performTaskWithWorker.mjs +17 -18
- 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 +3 -4
- package/common/src/webworker/viteWorkerURL.constant.d.ts +0 -1
- package/common/src/webworker/viteWorkerURL.constant.mjs +3 -4
- 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 +4 -76
- package/react-native/HinkalWebViewWorker.mjs +49 -152
- package/react-native/bridge/HinkalRNWorker.cjs +1 -1
- package/react-native/bridge/HinkalRNWorker.d.ts +0 -1
- package/react-native/bridge/HinkalRNWorker.mjs +11 -16
- 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 +0 -1
- 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/rnCryptoBridge.cjs +0 -1
- package/common/src/crypto/rnCryptoBridge.d.ts +0 -8
- package/common/src/crypto/rnCryptoBridge.mjs +0 -10
- package/common/src/crypto/rnUtxoCrypto.cjs +0 -1
- package/common/src/crypto/rnUtxoCrypto.d.ts +0 -25
- package/common/src/crypto/rnUtxoCrypto.mjs +0 -74
- package/common/src/functions/utils/utxoPadding.utils.cjs +0 -1
- package/common/src/functions/utils/utxoPadding.utils.d.ts +0 -2
- package/common/src/functions/utils/utxoPadding.utils.mjs +0 -14
- package/common/src/webworker/cryptoWorker/cryptoWorker.types.cjs +0 -1
- package/common/src/webworker/cryptoWorker/cryptoWorker.types.d.ts +0 -51
- package/common/src/webworker/cryptoWorker/cryptoWorker.types.mjs +0 -6
- package/common/src/webworker/cryptoWorker/cryptoWorkerLauncher.d.ts +0 -1
- package/common/src/webworker/cryptoWorker/cryptoWorkerLogic.d.ts +0 -2
- package/common/src/webworker/logError-Dy_GXEF5.js +0 -2
- package/react-native/bridge/RnWebViewCryptoBridge.cjs +0 -1
- package/react-native/bridge/RnWebViewCryptoBridge.d.ts +0 -7
- package/react-native/bridge/RnWebViewCryptoBridge.mjs +0 -49
|
@@ -1,96 +1,55 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
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";
|
|
1
|
+
import { isSolanaLike as e } from "../../constants/chains.constants.mjs";
|
|
2
|
+
import { UserKeys as t } from "../../data-structures/crypto-keys/keys.mjs";
|
|
3
|
+
import { formatMintAddress as n } from "../utils/solanaMint.utils.mjs";
|
|
4
|
+
import { createRnDeltaTiming as r } from "../utils/hinkalTiming.utils.mjs";
|
|
5
|
+
import { getUtxoCircuitH0Coords as i, getUtxoCircuitInRandomization as a, hasOnlyZeroAmounts as o } from "../snarkjs/common.snarkjs.mjs";
|
|
6
|
+
import { WorkerVariant as s } from "../../webworker/worker.registry.mjs";
|
|
7
|
+
import { performTaskWithWorker as c } from "../../webworker/performTaskWithWorker.mjs";
|
|
8
|
+
import { ZKProofWorkerActionType as l } from "../../webworker/zkProofWorker/zkProofWorker.types.mjs";
|
|
13
9
|
//#region libs/shared/common/src/functions/pre-transaction/buildCommitmentValidationData.ts
|
|
14
|
-
var
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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,
|
|
10
|
+
var u = async (u, d, f, p) => {
|
|
11
|
+
if (o(p)) return;
|
|
12
|
+
let m = e(u), h = p.map((e) => e.map((e) => e.amount.toString())), g = p.map((e) => e.map((e) => e.timeStamp)), _ = p.map((e) => e.map((e) => a(e))), v = p.map((e) => e.map((e) => e.getConstructableParams())), y = p.map((e) => e.map((e) => e.amount === 0n ? "0" : BigInt(e.getCommitment()).toString())), b = await c({
|
|
13
|
+
type: s.ZKProof,
|
|
23
14
|
payload: {
|
|
24
|
-
type:
|
|
25
|
-
data: { inputUtxosSerialized:
|
|
15
|
+
type: l.BUILD_IN_NULLIFIERS,
|
|
16
|
+
data: { inputUtxosSerialized: v }
|
|
26
17
|
}
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
let D = h.getShieldedPrivateKey(), O = await c(h), k = y ? g.map((e) => {
|
|
30
|
-
let { compressedAddress: t } = l(e);
|
|
18
|
+
}), x = d.getShieldedPrivateKey(), S = d.getSpendingKeyPair().pubSpendingBJJPoint, C = m ? f.map((e) => {
|
|
19
|
+
let { compressedAddress: t } = n(e);
|
|
31
20
|
return BigInt(t).toString();
|
|
32
|
-
}) :
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
t.
|
|
37
|
-
|
|
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
|
-
});
|
|
21
|
+
}) : f.map((e) => BigInt(e).toString()), w = r("withdraw.stealthValidation"), T = 0;
|
|
22
|
+
p.forEach((e, n) => {
|
|
23
|
+
e.forEach((e, r) => {
|
|
24
|
+
T += 1;
|
|
25
|
+
let i = e.getStealthAddress(), a = e.spendingPublicKey ?? S, o = e.isNewStyle && e.H0 ? t.getStealthAddressNewStyle(e.H0, x, a) : t.getStealthAddress(BigInt(e.randomization), x);
|
|
26
|
+
if (BigInt(i).toString() !== BigInt(o).toString()) throw Error(`Commitment validation stealth mismatch at tokenIdx=${n}, utxoIdx=${r}`);
|
|
49
27
|
});
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
|
28
|
+
}), w.log("done", { stealthChecks: T });
|
|
29
|
+
let E = {
|
|
30
|
+
nullifyingPrivateKey: x,
|
|
31
|
+
spendingPublicKey: S,
|
|
32
|
+
erc20TokenAddresses: C,
|
|
33
|
+
inAmounts: h,
|
|
34
|
+
inRandomizations: _,
|
|
35
|
+
inH0Ax: p.map((e) => e.map((e) => i(e)[0].toString())),
|
|
36
|
+
inH0Ay: p.map((e) => e.map((e) => i(e)[1].toString())),
|
|
37
|
+
isNewStyle: p.map((e) => e.map((e) => !!e.isNewStyle)),
|
|
38
|
+
inTimeStamps: g,
|
|
39
|
+
inCommitments: y,
|
|
40
|
+
inNullifiers: b
|
|
80
41
|
};
|
|
81
|
-
if (!
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
verifierName: N,
|
|
91
|
-
commitmentInput: M
|
|
42
|
+
if (!(!f.length || !p[0]?.length)) return {
|
|
43
|
+
tokenAddresses: C,
|
|
44
|
+
inAmounts: h,
|
|
45
|
+
inTimeStamps: g,
|
|
46
|
+
inRandomizations: _,
|
|
47
|
+
inCommitments: y,
|
|
48
|
+
inNullifiers: b,
|
|
49
|
+
verifierName: `commitmentCalculator${f.length}x${p[0].length}`,
|
|
50
|
+
commitmentInput: E
|
|
92
51
|
};
|
|
93
|
-
},
|
|
52
|
+
}, d = (e, t) => {
|
|
94
53
|
if (!(!e || !t)) return {
|
|
95
54
|
tokenAddresses: e.tokenAddresses,
|
|
96
55
|
inAmounts: e.inAmounts,
|
|
@@ -106,4 +65,4 @@ var m = async (m, h, g, _) => {
|
|
|
106
65
|
};
|
|
107
66
|
};
|
|
108
67
|
//#endregion
|
|
109
|
-
export {
|
|
68
|
+
export { u as buildCommitmentValidationData, d as buildCommitmentValidationDataFromProof };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../utils/amounts.utils.cjs`),t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../
|
|
1
|
+
const e=require(`../utils/amounts.utils.cjs`),t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../data-structures/utxo/Utxo.cjs`),r=require(`../utils/hinkalTiming.utils.cjs`);var i=(i,a,o,s,c=!0,l,u)=>{let d=e.countTotalAmountInUtxos(a),{erc20TokenAddress:f,mintAddress:p}=a[0];if(c&&o<0n&&d+o<0n)throw Error(t.transactionErrorCodes.INSUFFICIENT_FUNDS_TO_TRANSACT);let m=r.createRnDeltaTiming(`withdraw.outputUtxo`),h=[new n.Utxo({amount:e.bigintMax(d+o,0n),erc20TokenAddress:f,mintAddress:p,nullifyingKey:i.getShieldedPrivateKey(),timeStamp:s,spendingPublicKey:i.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0})];if(m.log(`newUtxo-change`),l!==void 0&&u!==void 0){let[e,t,r,,i]=l.split(`,`);h.push(new n.Utxo({amount:u,erc20TokenAddress:f,mintAddress:p,H0:[BigInt(t),BigInt(r)],stealthAddress:e,encryptionKey:i,timeStamp:s,isNewStyle:!0}))}return{outputUtxos:h}};exports.outputUtxoProcessing=i;
|
|
@@ -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) => {
|
|
4
4
|
outputUtxos: Utxo[];
|
|
5
|
-
}
|
|
5
|
+
};
|
|
@@ -1,39 +1,34 @@
|
|
|
1
1
|
import { bigintMax as e, countTotalAmountInUtxos as t } from "../utils/amounts.utils.mjs";
|
|
2
2
|
import { transactionErrorCodes as n } from "../../error-handling/error-codes.constants.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { createRnDeltaTiming as a } from "../utils/hinkalTiming.utils.mjs";
|
|
3
|
+
import { Utxo as r } from "../../data-structures/utxo/Utxo.mjs";
|
|
4
|
+
import { createRnDeltaTiming as i } from "../utils/hinkalTiming.utils.mjs";
|
|
6
5
|
//#region libs/shared/common/src/functions/pre-transaction/outputUtxoProcessing.ts
|
|
7
|
-
var
|
|
8
|
-
let
|
|
9
|
-
if (
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
spendingPublicKey: _,
|
|
6
|
+
var a = (a, o, s, c, l = !0, u, d) => {
|
|
7
|
+
let f = t(o), { erc20TokenAddress: p, mintAddress: m } = o[0];
|
|
8
|
+
if (l && s < 0n && f + s < 0n) throw Error(n.INSUFFICIENT_FUNDS_TO_TRANSACT);
|
|
9
|
+
let h = i("withdraw.outputUtxo"), g = [new r({
|
|
10
|
+
amount: e(f + s, 0n),
|
|
11
|
+
erc20TokenAddress: p,
|
|
12
|
+
mintAddress: m,
|
|
13
|
+
nullifyingKey: a.getShieldedPrivateKey(),
|
|
14
|
+
timeStamp: c,
|
|
15
|
+
spendingPublicKey: a.getSpendingKeyPair().pubSpendingBJJPoint,
|
|
18
16
|
isNewStyle: !0
|
|
19
17
|
})];
|
|
20
|
-
if (
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
amount: f,
|
|
27
|
-
erc20TokenAddress: h,
|
|
28
|
-
mintAddress: g,
|
|
18
|
+
if (h.log("newUtxo-change"), u !== void 0 && d !== void 0) {
|
|
19
|
+
let [e, t, n, , i] = u.split(",");
|
|
20
|
+
g.push(new r({
|
|
21
|
+
amount: d,
|
|
22
|
+
erc20TokenAddress: p,
|
|
23
|
+
mintAddress: m,
|
|
29
24
|
H0: [BigInt(t), BigInt(n)],
|
|
30
25
|
stealthAddress: e,
|
|
31
|
-
encryptionKey:
|
|
32
|
-
timeStamp:
|
|
26
|
+
encryptionKey: i,
|
|
27
|
+
timeStamp: c,
|
|
33
28
|
isNewStyle: !0
|
|
34
|
-
}))
|
|
29
|
+
}));
|
|
35
30
|
}
|
|
36
|
-
return
|
|
31
|
+
return { outputUtxos: g };
|
|
37
32
|
};
|
|
38
33
|
//#endregion
|
|
39
|
-
export {
|
|
34
|
+
export { a as outputUtxoProcessing };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/protocol.constants.cjs`),t=require(`../utils/caseInsensitive.utils.cjs`),n=require(`../../types/
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/protocol.constants.cjs`),t=require(`../utils/caseInsensitive.utils.cjs`),n=require(`../../types/ethereum-network.types.cjs`),r=require(`../../types/external-action.types.cjs`),i=require(`../../error-handling/logger.cjs`),a=require(`../utils/string.utils.cjs`),o=require(`../utils/erc20tokenFunctions.cjs`),s=require(`../../constants/addresses.constants.cjs`),c=require(`../utils/getContractAddress.cjs`),l=require(`./emporium.helpers.cjs`),u=require(`../pre-transaction/getExternalSwapAddress.cjs`);let d=require(`ethers`);var f=(e,t,n,r,i,a,o=!1)=>{let s={tokenIn:t,tokenOut:r,fee:BigInt(a),recipient:i,amountIn:n,amountOutMinimum:0,sqrtPriceLimitX96:0};return l.emporiumOp({contract:new d.ethers.Contract(e,[`function exactInputSingle(tuple(address tokenIn,address tokenOut,uint24 fee,address recipient,uint256 amountIn,uint256 amountOutMinimum,uint160 sqrtPriceLimitX96)) external payable returns (uint256 amountOut)`]),func:`exactInputSingle`,args:[s],invokeWallet:o})},p=(e,t,n,r,i,o,s=!1)=>l.emporiumOp({contract:n,callDataString:a.replaceAllInstances(r,u.getExternalSwapAddress(e,t).slice(2),i.slice(2)),value:o,invokeWallet:s}),m=async(e,n)=>{let r=(await o.getErc20TokensForChainAPI(n)).find(e=>e.symbol===`USDT`);return r?t.caseInsensitiveEqual(e,r.erc20TokenAddress):!1},h=async(e,t,n,r,a,o)=>{if(await m(c.getContractAddress(n),e))try{await n.allowance(r,a)>0n&&t.push(l.createApproveEmporiumOp(n,a,0n,o))}catch(e){i.Logger.error(`Error in nullifyUsdtApprovalIfNeeded`,e)}},g=async(t,r,i,a,o,c,u,f)=>{if(i!==e.zeroAddress){let f=s.SWAP_FEE_TAKER_ADDRESSES[r],p=t.getContractWithFetcher(r,n.ContractType.ERC20Contract,i),m=await p.balanceOf(a);await h(r,c,p,a,f,u),c.push(l.createApproveEmporiumOp(p,f,2n**256n-1n,u));let g=new d.ethers.Contract(f,[`function takeSwapFee(address token, uint256 beforeBalance, uint256 variableRate, address relay) external payable`]),_=o;c.push(l.emporiumOp({contract:g,func:`takeSwapFee`,args:[i,m,e.HINKAL_SWAP_VARIABLE_RATE,_],invokeWallet:u}))}else{let t=o;c.push(l.emporiumOp({contract:t,value:f*e.HINKAL_SWAP_VARIABLE_RATE/10000n,invokeWallet:u}))}},_=async(t,i,a,o,c,u,m,_,v,y,b,x,S=!1)=>{let C=m<0n?-1n*m:m,w=[],T=s.NATIVE_TOKEN_WRAPPER_ADDRESSES[i],E=!1,D;if(a===r.ExternalActionId.OneInch||a===r.ExternalActionId.Lifi){if(u!==e.zeroAddress){let e=t.getContractWithFetcher(i,n.ContractType.ERC20Contract,u);w.push(l.createApproveEmporiumOp(e,o,C,S))}let s=0n;return u===e.zeroAddress&&(s+=C),_&&v===e.zeroAddress&&_<0n&&(s+=-1n*_),D=p(i,a,o,c,b,s>0n?s:void 0,S),w.push(D),(a===r.ExternalActionId.OneInch||y&&a===r.ExternalActionId.Lifi)&&v&&_!==void 0&&await g(t,i,v,b,x,w,S,_),w}if(!v||!_)throw Error(`There should be output token for UniSwap and Odos`);if(u===e.zeroAddress){let e=t.getContractWithFetcher(i,n.ContractType.ERC20Contract,T);w.push(l.emporiumOp({contract:e,func:`deposit`,value:C,invokeWallet:S})),u=T}let O=0n;if(v===e.zeroAddress&&(v=T,E=!0,O=await t.getContractWithFetcher(i,n.ContractType.ERC20Contract,T).balanceOf(b)),u!==e.zeroAddress){let e=t.getContractWithFetcher(i,n.ContractType.ERC20Contract,u);await h(i,w,e,b,o,S),w.push(l.createApproveEmporiumOp(e,o,C,S))}if(D=a===r.ExternalActionId.Uniswap?f(o,u,C,v,b,c,S):p(i,a,o,c,b,void 0,S),w.push(D),await g(t,i,v,b,x,w,S,_),E){let e=s.WRAPPER_TOKEN_EXCHANGE_ADDRESSES[i],r=t.getContractWithFetcher(i,n.ContractType.ERC20Contract,T);w.push(l.createApproveEmporiumOp(r,e,2n**256n-1n,S));let a=new d.ethers.Contract(e,[`function withdrawBalanceDifference(uint256 beforeBalance) external`]);w.push(l.emporiumOp({contract:a,func:`withdrawBalanceDifference`,args:[O],invokeWallet:S}))}return w};exports.createSwapToEmporiumOpForUniswap=f,exports.createSwapToEmporiumOps=_;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { HINKAL_SWAP_VARIABLE_RATE as e, zeroAddress as t } from "../../constants/protocol.constants.mjs";
|
|
2
2
|
import { caseInsensitiveEqual as n } from "../utils/caseInsensitive.utils.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { ContractType as r } from "../../types/ethereum-network.types.mjs";
|
|
4
|
+
import { ExternalActionId as i } from "../../types/external-action.types.mjs";
|
|
5
5
|
import { Logger as a } from "../../error-handling/logger.mjs";
|
|
6
6
|
import { replaceAllInstances as o } from "../utils/string.utils.mjs";
|
|
7
7
|
import { getErc20TokensForChainAPI as s } from "../utils/erc20tokenFunctions.mjs";
|
|
@@ -41,10 +41,10 @@ var g = (e, t, n, r, i, a, o = !1) => {
|
|
|
41
41
|
} catch (e) {
|
|
42
42
|
a.error("Error in nullifyUsdtApprovalIfNeeded", e);
|
|
43
43
|
}
|
|
44
|
-
}, b = async (n,
|
|
44
|
+
}, b = async (n, i, a, o, s, c, u, d) => {
|
|
45
45
|
if (a !== t) {
|
|
46
|
-
let t = l[
|
|
47
|
-
await y(
|
|
46
|
+
let t = l[i], d = n.getContractWithFetcher(i, r.ERC20Contract, a), m = await d.balanceOf(o);
|
|
47
|
+
await y(i, c, d, o, t, u), c.push(f(d, t, 2n ** 256n - 1n, u));
|
|
48
48
|
let g = new h.Contract(t, ["function takeSwapFee(address token, uint256 beforeBalance, uint256 variableRate, address relay) external payable"]), _ = s;
|
|
49
49
|
c.push(p({
|
|
50
50
|
contract: g,
|
|
@@ -67,17 +67,17 @@ var g = (e, t, n, r, i, a, o = !1) => {
|
|
|
67
67
|
}
|
|
68
68
|
}, x = async (e, n, a, o, s, l, d, m, v, x, S, C, w = !1) => {
|
|
69
69
|
let T = d < 0n ? -1n * d : d, E = [], D = c[n], O = !1, k;
|
|
70
|
-
if (a ===
|
|
70
|
+
if (a === i.OneInch || a === i.Lifi) {
|
|
71
71
|
if (l !== t) {
|
|
72
|
-
let t = e.getContractWithFetcher(n,
|
|
72
|
+
let t = e.getContractWithFetcher(n, r.ERC20Contract, l);
|
|
73
73
|
E.push(f(t, o, T, w));
|
|
74
74
|
}
|
|
75
75
|
let c = 0n;
|
|
76
|
-
return l === t && (c += T), m && v === t && m < 0n && (c += -1n * m), k = _(n, a, o, s, S, c > 0n ? c : void 0, w), E.push(k), (a ===
|
|
76
|
+
return l === t && (c += T), m && v === t && m < 0n && (c += -1n * m), k = _(n, a, o, s, S, c > 0n ? c : void 0, w), E.push(k), (a === i.OneInch || x && a === i.Lifi) && v && m !== void 0 && await b(e, n, v, S, C, E, w, m), E;
|
|
77
77
|
}
|
|
78
78
|
if (!v || !m) throw Error("There should be output token for UniSwap and Odos");
|
|
79
79
|
if (l === t) {
|
|
80
|
-
let t = e.getContractWithFetcher(n,
|
|
80
|
+
let t = e.getContractWithFetcher(n, r.ERC20Contract, D);
|
|
81
81
|
E.push(p({
|
|
82
82
|
contract: t,
|
|
83
83
|
func: "deposit",
|
|
@@ -86,13 +86,13 @@ var g = (e, t, n, r, i, a, o = !1) => {
|
|
|
86
86
|
})), l = D;
|
|
87
87
|
}
|
|
88
88
|
let A = 0n;
|
|
89
|
-
if (v === t && (v = D, O = !0, A = await e.getContractWithFetcher(n,
|
|
90
|
-
let t = e.getContractWithFetcher(n,
|
|
89
|
+
if (v === t && (v = D, O = !0, A = await e.getContractWithFetcher(n, r.ERC20Contract, D).balanceOf(S)), l !== t) {
|
|
90
|
+
let t = e.getContractWithFetcher(n, r.ERC20Contract, l);
|
|
91
91
|
await y(n, E, t, S, o, w), E.push(f(t, o, T, w));
|
|
92
92
|
}
|
|
93
|
-
if (k = a ===
|
|
94
|
-
let t = u[n],
|
|
95
|
-
E.push(f(
|
|
93
|
+
if (k = a === i.Uniswap ? g(o, l, T, v, S, s, w) : _(n, a, o, s, S, void 0, w), E.push(k), await b(e, n, v, S, C, E, w, m), O) {
|
|
94
|
+
let t = u[n], i = e.getContractWithFetcher(n, r.ERC20Contract, D);
|
|
95
|
+
E.push(f(i, t, 2n ** 256n - 1n, w));
|
|
96
96
|
let a = new h.Contract(t, ["function withdrawBalanceDifference(uint256 beforeBalance) external"]);
|
|
97
97
|
E.push(p({
|
|
98
98
|
contract: a,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../data-structures/crypto-keys/keys.cjs`),n=require(`../../
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../data-structures/crypto-keys/keys.cjs`),n=require(`../../types/circom-data.types.cjs`),r=require(`../../data-structures/crypto-keys/encryptDecryptUtxo.cjs`),i=require(`../utils/external-action.utils.cjs`),a=require(`./getOriginalSender.cjs`),o=require(`../utils/bit.operations.cjs`);let s=require(`ethers`);var c=e=>{if(e.H0?.[0]!==void 0&&e.H0[1]!==void 0)return[e.H0[0],e.H0[1]];if(e.randomization!==void 0)return t.UserKeys.getH0FromRandomization(e.randomization);throw Error(`UTXO missing H0 coordinates for proof input`)},l=e=>{if(e.isNewStyle)return`0`;if(e.randomization!==void 0)return e.randomization.toString();throw Error(`UTXO missing randomization for old-style proof input`)},u=Array.from({length:25},()=>`0`),d=e=>e.length>0&&e.every(e=>e.every(e=>BigInt(e.amount)===0n)),f=e=>({inCommitmentSiblings:e.map(e=>e.map(()=>[...u])),inCommitmentSiblingSides:e.map(e=>e.map(()=>[...u])),inNullifiers:e.map(e=>e.map(()=>`0`))}),p=e=>e.map(e=>e.map(e=>e.amount===0n?`0`:e.getCommitment())),m=(t,n,r=!1)=>{let i=[];for(let a=0;a<t.length;a+=1){let o=0n,s=0n;for(let e=0;e<t[a].length;e+=1)o+=t[a][e].amount;for(let e=0;e<n[a].length;e+=1)s+=n[a][e].amount;s-o<0?r?i.push(s-o):i.push(e.CIRCOM_P+(s-o)):i.push(s-o)}return i},h=e=>e.map(e=>e>=0n?0n:e),g=e=>{if(e.length===0)return[];let t=[[``]];for(let n=0;n<e.length;n+=1)n>0&&t.push([``]),e[n].forEach((e,i)=>{t[n][i]=`0x${Buffer.from(r.encryptUtxo(e)).toString(`hex`)}`});return t},_=e=>{let t={...e};return t.amountChanges=e.amountChanges.map(e=>e.toString()),t.calldataHash=e.calldataHash.toString(),t.rootHashAccessToken=e.rootHashAccessToken?.toString(),t.stealthAddressStructure.extraRandomization=e.stealthAddressStructure.extraRandomization.toString(),t.stealthAddressStructure.stealthAddress=e.stealthAddressStructure.stealthAddress.toString(),t.stealthAddressStructure.H0=e.stealthAddressStructure.H0.toString(),t.stealthAddressStructure.H1=e.stealthAddressStructure.H1.toString(),t.rootHashHinkal=e.rootHashHinkal?.toString(),t.externalActionId=e.externalActionId?.toString(),t.slippageValues=e.slippageValues.map(e=>e.toString()),t.hinkalLogicArgs.inHinkalAddress=e.hinkalLogicArgs.inHinkalAddress.toString(),t.hinkalLogicArgs.executeApprovalChanges=e.hinkalLogicArgs.executeApprovalChanges.map(e=>e.toString()),t.hinkalLogicArgs.useApprovalUtxoData=e.hinkalLogicArgs.useApprovalUtxoData.map(e=>({approvalChanges:e.approvalChanges.map(e=>e.toString()),externalApprovalAddresses:e.externalApprovalAddresses,conversionInHinkalAddress:e.conversionInHinkalAddress.map(e=>e.toString())})),t.feeStructure.flatFee=e.feeStructure.flatFee.toString(),t.feeStructure.variableRate=e.feeStructure.variableRate.toString(),t},v=(t,r,o,c,l,u,d,f,p,m,h,g)=>{let _=Object.values(d||n.defaultHookData),v=g??a.getOriginalSender(o??e.zeroAddress,r),y=s.ethers.AbiCoder.defaultAbiCoder().encode([`uint16`,`address`,`address`,`uint256`,`bytes`],[t,r,o,typeof c==`bigint`?c:i.getExternalActionIdHash(c),l]),b=s.ethers.AbiCoder.defaultAbiCoder().encode([`tuple(address, address, bytes, bytes)`,`bytes[][]`,`tuple(address, uint256, uint256)`,`int256[]`,`bool[]`,`tuple(uint8 v, bytes32 r, bytes32 s, uint256 accessKey, uint256 nonce, address ethereumAddress)`,`address`],[_,u,[m.feeToken,m.flatFee,m.variableRate],f,p,h,v]),x=BigInt(s.ethers.keccak256(y)),S=BigInt(s.ethers.keccak256(b)),C=s.ethers.AbiCoder.defaultAbiCoder().encode([`uint256`,`uint256`],[x,S]);return BigInt(s.ethers.keccak256(C))%e.CIRCOM_P},y=(e,t,n,r,i)=>e.startsWith(`mainEVMCircuitMin0`)?3:2+t.length+n.length+1+r.flat().length+i.flat().length+1+1+1+1+1+1,b=(e,n,r)=>{let{H0:i}=t.UserKeys.getRandomizedStealthPair(e,n),a=t.UserKeys.getH1FromH0(i,n),s=BigInt(t.UserKeys.getStealthAddressNewStyle(i,n,r));return{extraRandomization:o.addHighestBitToNumber(i[0]),H0:i[1],H1:a[1],stealthAddress:s}},x=(e,t)=>t.length===0?`mainEVMCircuitMin0`:`mainEVMCircuit${e.length}x${e[0].length}x${t[0].length}`;exports.buildOutCommitments=p,exports.buildZeroInputMerkleDataFromSerialized=f,exports.calcAmountChanges=m,exports.calcEncryptedOutputs=g,exports.calcPublicSignalCount=y,exports.calcStealthAddressStructure=b,exports.createCallDataHash=v,exports.getSlippageValues=h,exports.getUtxoCircuitH0Coords=c,exports.getUtxoCircuitInRandomization=l,exports.getZkProofVerifierName=x,exports.hasOnlyZeroAmounts=d,exports.serializeCircomData=_;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CIRCOM_P as e, zeroAddress as t } from "../../constants/protocol.constants.mjs";
|
|
2
2
|
import { UserKeys as n } from "../../data-structures/crypto-keys/keys.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { defaultHookData as r } from "../../types/circom-data.types.mjs";
|
|
4
|
+
import { encryptUtxo as i } from "../../data-structures/crypto-keys/encryptDecryptUtxo.mjs";
|
|
5
5
|
import { getExternalActionIdHash as a } from "../utils/external-action.utils.mjs";
|
|
6
6
|
import { getOriginalSender as o } from "./getOriginalSender.mjs";
|
|
7
7
|
import { addHighestBitToNumber as s } from "../utils/bit.operations.mjs";
|
|
@@ -31,8 +31,8 @@ var l = (e) => {
|
|
|
31
31
|
}, g = (e) => e.map((e) => e >= 0n ? 0n : e), _ = (e) => {
|
|
32
32
|
if (e.length === 0) return [];
|
|
33
33
|
let t = [[""]];
|
|
34
|
-
for (let n = 0; n < e.length; n += 1) n > 0 && t.push([""]), e[n].forEach((e,
|
|
35
|
-
t[n][
|
|
34
|
+
for (let n = 0; n < e.length; n += 1) n > 0 && t.push([""]), e[n].forEach((e, r) => {
|
|
35
|
+
t[n][r] = `0x${Buffer.from(i(e)).toString("hex")}`;
|
|
36
36
|
});
|
|
37
37
|
return t;
|
|
38
38
|
}, v = (e) => {
|
|
@@ -42,8 +42,8 @@ var l = (e) => {
|
|
|
42
42
|
externalApprovalAddresses: e.externalApprovalAddresses,
|
|
43
43
|
conversionInHinkalAddress: e.conversionInHinkalAddress.map((e) => e.toString())
|
|
44
44
|
})), t.feeStructure.flatFee = e.feeStructure.flatFee.toString(), t.feeStructure.variableRate = e.feeStructure.variableRate.toString(), t;
|
|
45
|
-
}, y = (n,
|
|
46
|
-
let v = Object.values(f ||
|
|
45
|
+
}, y = (n, i, s, l, u, d, f, p, m, h, g, _) => {
|
|
46
|
+
let v = Object.values(f || r), y = _ ?? o(s ?? t, i), b = c.AbiCoder.defaultAbiCoder().encode([
|
|
47
47
|
"uint16",
|
|
48
48
|
"address",
|
|
49
49
|
"address",
|
|
@@ -51,7 +51,7 @@ var l = (e) => {
|
|
|
51
51
|
"bytes"
|
|
52
52
|
], [
|
|
53
53
|
n,
|
|
54
|
-
|
|
54
|
+
i,
|
|
55
55
|
s,
|
|
56
56
|
typeof l == "bigint" ? l : a(l),
|
|
57
57
|
u
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),
|
|
1
|
+
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),ee=require(`../../crypto/poseidon.cjs`),n=require(`../web3/etherFunctions.cjs`),r=require(`../../data-structures/crypto-keys/keys.cjs`),i=require(`../utils/time.utils.cjs`),a=require(`../../types/external-action.types.cjs`),o=require(`../../error-handling/logger.cjs`),s=require(`../utils/hinkalTiming.utils.cjs`),c=require(`../utils/bit.operations.cjs`),l=require(`./common.snarkjs.cjs`),u=require(`./signedMessageHash.cjs`),te=require(`./generateCircomData.cjs`),d=require(`../../data-structures/AccountActions/AccountActions.cjs`),f=require(`./generateMainAndCommitmentZkProof.cjs`),p=require(`./getMerkleTreeSiblingsAndRootHashes.cjs`),m=require(`../private-wallet/emporium.helpers.cjs`);var h=async(h,g,_,v,y,b,x,S,C,w=t.zeroAddress,T=e.chainIds.localhost,E=g.map(()=>!1),D=void 0,O,k)=>{let A=s.createRnDeltaTiming(`withdraw.zkProof`),j=l.getZkProofVerifierName(g,_),M=l.calcAmountChanges(g,_),N=g.map(e=>e[0].erc20TokenAddress),P=l.calcEncryptedOutputs(_),F=t.defaultSignatureData,I=v.getShieldedPrivateKey(),{pubSpendingBJJPoint:ne}=v.getSpendingKeyPair(),L=l.calcStealthAddressStructure(r.UserKeys.findCorrectRandomization(n.randomBigInt(31),I),I,v.getSpendingKeyPair().pubSpendingBJJPoint),{inCommitmentSiblings:re,inCommitmentSiblingSides:ie,rootHashHinkal:R,inNullifiers:z}=await p.getDataFromWorkers(T,h,g.map(e=>e.map(e=>e.getConstructableParams())));A.log(`getDataFromWorkers`,{verifierName:j});let B=l.buildOutCommitments(_),V=n.randomBigInt(31),H=ee.poseidonFunction(V),U=BigInt(_.length>0?_[0][0].timeStamp:i.getCurrentTimeInSeconds()),W={rootHashHinkal:R,spendingPublicKey:ne,nullifyingPrivateKey:I,erc20TokenAddresses:N,amountChanges:M,inAmounts:g.map(e=>e.map(e=>e.amount.toString())),inRandomizations:g.map(e=>e.map(e=>l.getUtxoCircuitInRandomization(e))),inH0Ax:g.map(e=>e.map(e=>l.getUtxoCircuitH0Coords(e)[0].toString())),inH0Ay:g.map(e=>e.map(e=>l.getUtxoCircuitH0Coords(e)[1].toString())),isNewStyle:g.map(e=>e.map(e=>!!e.isNewStyle)),inTimeStamps:g.map(e=>e.map(e=>e.timeStamp)),inNullifiers:z,inCommitmentSiblings:re,inCommitmentSiblingSides:ie,outAmounts:_.map(e=>e.map(e=>e.amount.toString())),outTimeStamp:U,outPublicKeys:_.map(e=>e.map(e=>e.getStealthAddress())),outCommitments:B,calldataHash:0n,messageSeed:V,H0Ax:c.takeOffHighestBit(L.extraRandomization),H0Ay:L.H0},G=l.calcPublicSignalCount(j,W.erc20TokenAddresses,W.amountChanges,W.inNullifiers,W.outCommitments),K=l.calcAmountChanges(g,_,!0),q=l.getSlippageValues(K);o.Logger.log({publicSignalCount:G});let J=Array.isArray(x)?x:[x],Y=e.getOnchainChainId(T),ae=k?d.AccountActions.getSignerAddressFromPrivateKey(Y,k):void 0,X=y===a.ExternalActionId.Emporium?await m.encodeEmporiumMetadata(T,b??t.zeroAddress,k,J,H,ae):await m.encodeEmporiumMetadata(T,t.zeroAddress,void 0,y===0n?[]:J,H,t.zeroAddress);W.calldataHash=l.createCallDataHash(G,w,b,y,X,P,D,q,E,C,F,O);let Z=u.computeSignedMessageHashEvm({rootHashHinkal:R,erc20TokenAddresses:N,amountChanges:M,outTimeStamp:U,inNullifiers:z,outCommitments:B,calldataHash:W.calldataHash,message:H,outH1Ay:L.H1,H0Ax:W.H0Ax,H0Ay:L.H0}),{R8:Q,S:oe}=v.signEddsa(Z);A.log(`signEddsa`),W.eddsaSignature=[Q[0],Q[1],oe],W.signedMessageHash=Z;let $=j.startsWith(`mainEVMCircuitMin0`),se={outTimeStamp:U,calldataHash:W.calldataHash,messageSeed:V},{zkCallData:ce,commitmentValidationData:le}=await f.generateMainAndCommitmentZkProof(T,v,N,g,j,$?se:W,S);return A.log(`generateZkProof`),{zkCallData:ce,circomData:te.generateCircomData(B,z,R,K,N,_,P,G,y,b,X,w,W.calldataHash,L,E,D,$?Number(U):void 0,q,C,F,O),dimData:{tokenNumber:g.length,nullifierAmount:g.length>0?g[0].length:0,outputAmount:_.length>0?_[0].length:0},encryptedOutputs:P,commitmentValidationData:le}};exports.constructZkProof=h;
|
|
@@ -1,89 +1,85 @@
|
|
|
1
1
|
import { chainIds as e, getOnchainChainId as t } from "../../constants/chains.constants.mjs";
|
|
2
2
|
import { defaultSignatureData as ee, zeroAddress as n } from "../../constants/protocol.constants.mjs";
|
|
3
|
-
import { poseidonFunction as
|
|
4
|
-
import { randomBigInt as
|
|
5
|
-
import { UserKeys as
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import { AccountActions as f } from "../../data-structures/AccountActions/AccountActions.mjs";
|
|
3
|
+
import { poseidonFunction as r } from "../../crypto/poseidon.mjs";
|
|
4
|
+
import { randomBigInt as i } from "../web3/etherFunctions.mjs";
|
|
5
|
+
import { UserKeys as te } from "../../data-structures/crypto-keys/keys.mjs";
|
|
6
|
+
import { getCurrentTimeInSeconds as ne } from "../utils/time.utils.mjs";
|
|
7
|
+
import { ExternalActionId as re } from "../../types/external-action.types.mjs";
|
|
8
|
+
import { Logger as ie } from "../../error-handling/logger.mjs";
|
|
9
|
+
import { createRnDeltaTiming as ae } from "../utils/hinkalTiming.utils.mjs";
|
|
10
|
+
import { takeOffHighestBit as oe } from "../utils/bit.operations.mjs";
|
|
11
|
+
import { buildOutCommitments as se, calcAmountChanges as a, calcEncryptedOutputs as o, calcPublicSignalCount as s, calcStealthAddressStructure as c, createCallDataHash as l, getSlippageValues as ce, getUtxoCircuitH0Coords as u, getUtxoCircuitInRandomization as le, getZkProofVerifierName as ue } from "./common.snarkjs.mjs";
|
|
12
|
+
import { computeSignedMessageHashEvm as de } from "./signedMessageHash.mjs";
|
|
13
|
+
import { generateCircomData as fe } from "./generateCircomData.mjs";
|
|
14
|
+
import { AccountActions as pe } from "../../data-structures/AccountActions/AccountActions.mjs";
|
|
16
15
|
import { generateMainAndCommitmentZkProof as me } from "./generateMainAndCommitmentZkProof.mjs";
|
|
17
|
-
import { getDataFromWorkers as
|
|
18
|
-
import { encodeEmporiumMetadata as
|
|
16
|
+
import { getDataFromWorkers as d } from "./getMerkleTreeSiblingsAndRootHashes.mjs";
|
|
17
|
+
import { encodeEmporiumMetadata as f } from "../private-wallet/emporium.helpers.mjs";
|
|
19
18
|
//#region libs/shared/common/src/functions/snarkjs/constructGeneralZkProof.ts
|
|
20
|
-
var
|
|
21
|
-
let
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
chainId: w
|
|
25
|
-
});
|
|
26
|
-
let V = re(g), H = r(31), U = te(H), W = BigInt(g.length > 0 ? g[0][0].timeStamp : le()), G = {
|
|
19
|
+
var p = async (p, m, h, g, _, v, y, b, x, S = n, C = e.localhost, w = m.map(() => !1), T = void 0, E, D) => {
|
|
20
|
+
let O = ae("withdraw.zkProof"), k = ue(m, h), A = a(m, h), j = m.map((e) => e[0].erc20TokenAddress), M = o(h), N = ee, P = g.getShieldedPrivateKey(), { pubSpendingBJJPoint: F } = g.getSpendingKeyPair(), I = c(te.findCorrectRandomization(i(31), P), P, g.getSpendingKeyPair().pubSpendingBJJPoint), { inCommitmentSiblings: L, inCommitmentSiblingSides: R, rootHashHinkal: z, inNullifiers: B } = await d(C, p, m.map((e) => e.map((e) => e.getConstructableParams())));
|
|
21
|
+
O.log("getDataFromWorkers", { verifierName: k });
|
|
22
|
+
let V = se(h), H = i(31), U = r(H), W = BigInt(h.length > 0 ? h[0][0].timeStamp : ne()), G = {
|
|
27
23
|
rootHashHinkal: z,
|
|
28
|
-
spendingPublicKey:
|
|
29
|
-
nullifyingPrivateKey:
|
|
30
|
-
erc20TokenAddresses:
|
|
31
|
-
amountChanges:
|
|
32
|
-
inAmounts:
|
|
33
|
-
inRandomizations:
|
|
34
|
-
inH0Ax:
|
|
35
|
-
inH0Ay:
|
|
36
|
-
isNewStyle:
|
|
37
|
-
inTimeStamps:
|
|
24
|
+
spendingPublicKey: F,
|
|
25
|
+
nullifyingPrivateKey: P,
|
|
26
|
+
erc20TokenAddresses: j,
|
|
27
|
+
amountChanges: A,
|
|
28
|
+
inAmounts: m.map((e) => e.map((e) => e.amount.toString())),
|
|
29
|
+
inRandomizations: m.map((e) => e.map((e) => le(e))),
|
|
30
|
+
inH0Ax: m.map((e) => e.map((e) => u(e)[0].toString())),
|
|
31
|
+
inH0Ay: m.map((e) => e.map((e) => u(e)[1].toString())),
|
|
32
|
+
isNewStyle: m.map((e) => e.map((e) => !!e.isNewStyle)),
|
|
33
|
+
inTimeStamps: m.map((e) => e.map((e) => e.timeStamp)),
|
|
38
34
|
inNullifiers: B,
|
|
39
|
-
inCommitmentSiblings:
|
|
40
|
-
inCommitmentSiblingSides:
|
|
41
|
-
outAmounts:
|
|
35
|
+
inCommitmentSiblings: L,
|
|
36
|
+
inCommitmentSiblingSides: R,
|
|
37
|
+
outAmounts: h.map((e) => e.map((e) => e.amount.toString())),
|
|
42
38
|
outTimeStamp: W,
|
|
43
|
-
outPublicKeys:
|
|
39
|
+
outPublicKeys: h.map((e) => e.map((e) => e.getStealthAddress())),
|
|
44
40
|
outCommitments: V,
|
|
45
41
|
calldataHash: 0n,
|
|
46
42
|
messageSeed: H,
|
|
47
|
-
H0Ax:
|
|
48
|
-
H0Ay:
|
|
49
|
-
}, K =
|
|
50
|
-
|
|
51
|
-
let Y = Array.isArray(
|
|
52
|
-
G.calldataHash = l(K,
|
|
53
|
-
let Z =
|
|
43
|
+
H0Ax: oe(I.extraRandomization),
|
|
44
|
+
H0Ay: I.H0
|
|
45
|
+
}, K = s(k, G.erc20TokenAddresses, G.amountChanges, G.inNullifiers, G.outCommitments), q = a(m, h, !0), J = ce(q);
|
|
46
|
+
ie.log({ publicSignalCount: K });
|
|
47
|
+
let Y = Array.isArray(y) ? y : [y], he = t(C), ge = D ? pe.getSignerAddressFromPrivateKey(he, D) : void 0, X = _ === re.Emporium ? await f(C, v ?? n, D, Y, U, ge) : await f(C, n, void 0, _ === 0n ? [] : Y, U, n);
|
|
48
|
+
G.calldataHash = l(K, S, v, _, X, M, T, J, w, x, N, E);
|
|
49
|
+
let Z = de({
|
|
54
50
|
rootHashHinkal: z,
|
|
55
|
-
erc20TokenAddresses:
|
|
56
|
-
amountChanges:
|
|
51
|
+
erc20TokenAddresses: j,
|
|
52
|
+
amountChanges: A,
|
|
57
53
|
outTimeStamp: W,
|
|
58
54
|
inNullifiers: B,
|
|
59
55
|
outCommitments: V,
|
|
60
56
|
calldataHash: G.calldataHash,
|
|
61
57
|
message: U,
|
|
62
|
-
outH1Ay:
|
|
58
|
+
outH1Ay: I.H1,
|
|
63
59
|
H0Ax: G.H0Ax,
|
|
64
|
-
H0Ay:
|
|
65
|
-
}), { R8: Q, S:
|
|
66
|
-
G.eddsaSignature = [
|
|
60
|
+
H0Ay: I.H0
|
|
61
|
+
}), { R8: Q, S: _e } = g.signEddsa(Z);
|
|
62
|
+
O.log("signEddsa"), G.eddsaSignature = [
|
|
67
63
|
Q[0],
|
|
68
64
|
Q[1],
|
|
69
|
-
|
|
65
|
+
_e
|
|
70
66
|
], G.signedMessageHash = Z;
|
|
71
|
-
let $ =
|
|
67
|
+
let $ = k.startsWith("mainEVMCircuitMin0"), ve = {
|
|
72
68
|
outTimeStamp: W,
|
|
73
69
|
calldataHash: G.calldataHash,
|
|
74
70
|
messageSeed: H
|
|
75
|
-
}, { zkCallData:
|
|
76
|
-
return {
|
|
77
|
-
zkCallData:
|
|
78
|
-
circomData:
|
|
71
|
+
}, { zkCallData: ye, commitmentValidationData: be } = await me(C, g, j, m, k, $ ? ve : G, b);
|
|
72
|
+
return O.log("generateZkProof"), {
|
|
73
|
+
zkCallData: ye,
|
|
74
|
+
circomData: fe(V, B, z, q, j, h, M, K, _, v, X, S, G.calldataHash, I, w, T, $ ? Number(W) : void 0, J, x, N, E),
|
|
79
75
|
dimData: {
|
|
80
|
-
tokenNumber:
|
|
81
|
-
nullifierAmount:
|
|
82
|
-
outputAmount:
|
|
76
|
+
tokenNumber: m.length,
|
|
77
|
+
nullifierAmount: m.length > 0 ? m[0].length : 0,
|
|
78
|
+
outputAmount: h.length > 0 ? h[0].length : 0
|
|
83
79
|
},
|
|
84
|
-
encryptedOutputs:
|
|
85
|
-
commitmentValidationData:
|
|
80
|
+
encryptedOutputs: M,
|
|
81
|
+
commitmentValidationData: be
|
|
86
82
|
};
|
|
87
83
|
};
|
|
88
84
|
//#endregion
|
|
89
|
-
export {
|
|
85
|
+
export { p as constructZkProof };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../crypto/poseidon.cjs`),n=require(`../web3/etherFunctions.cjs`),r=require(`../utils/
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../crypto/poseidon.cjs`),n=require(`../web3/etherFunctions.cjs`),r=require(`../utils/solanaMint.utils.cjs`),i=require(`../utils/bit.operations.cjs`),a=require(`./common.snarkjs.cjs`),o=require(`../pre-transaction/solana.cjs`),s=require(`./signedMessageHash.cjs`);require(`../pre-transaction/index.cjs`);const c=require(`./generateMainAndCommitmentZkProof.cjs`);require(`../utils/index.cjs`);const l=require(`./getMerkleTreeSiblingsAndRootHashes.cjs`),u=require(`../pre-transaction/getSolanaCalldataHash.cjs`);require(`../web3/index.cjs`);let d=require(`@solana/web3.js`);var f=async(f,p,m,h,g,_,v,y,b,x,S,C,w,T=e.chainIds.solanaLocalnet,E=[],D=[],O=0n)=>{let k=new d.PublicKey(x),A=new d.PublicKey(S),j=m.getShieldedPrivateKey(),{pubSpendingBJJPoint:M}=m.getSpendingKeyPair(),N=a.calcStealthAddressStructure(v,j,m.getSpendingKeyPair().pubSpendingBJJPoint),P=n.randomBigInt(31),F=t.poseidonFunction(P),I=t.poseidonFunction(O),L=h.map(e=>r.formatMintAddress(e)),R=L.map(e=>e.mintAccountPart1),z=L.map(e=>e.mintAccountPart2),B=u.getSolanaCalldataHash(C,k,A,w,y,b,E,D),V=`${C.tokenNumber}x${C.nullifierAmount}x${C.outputAmount}`,H=a.calcAmountChanges(g,_),{inCommitmentSiblings:U,inCommitmentSiblingSides:W,rootHashHinkal:G,inNullifiers:K}=await l.getDataFromWorkers(T,p,g.map(e=>e.map(e=>e.getConstructableParams()))),q=a.buildOutCommitments(_),J=i.takeOffHighestBit(N.extraRandomization),Y=N.H0,X=s.computeSignedMessageHashSolana({rootHashHinkal:G,mintAccountPart1:R,mintAccountPart2:z,amountChanges:H,outTimeStamp:BigInt(_[0][0].timeStamp),inNullifiers:K,outCommitments:q,calldataHash:B,message:F,swapperAccountAdditionalSeed:I,outH1Ay:N.H1,H0Ax:J,H0Ay:Y}),{R8:Z,S:Q}=m.signEddsa(X),$={rootHashHinkal:G,spendingPublicKey:M,eddsaSignature:[Z[0],Z[1],Q],signedMessageHash:X,nullifyingPrivateKey:j,mintAccountPart1:R,mintAccountPart2:z,amountChanges:H,inAmounts:g.map(e=>e.map(e=>e.amount.toString())),inRandomizations:g.map(e=>e.map(e=>a.getUtxoCircuitInRandomization(e))),inH0Ax:g.map(e=>e.map(e=>a.getUtxoCircuitH0Coords(e)[0].toString())),inH0Ay:g.map(e=>e.map(e=>a.getUtxoCircuitH0Coords(e)[1].toString())),isNewStyle:g.map(e=>e.map(e=>!!e.isNewStyle)),inTimeStamps:g.map(e=>e.map(e=>e.timeStamp)),inNullifiers:K,inCommitmentSiblings:U,inCommitmentSiblingSides:W,outAmounts:_.map(e=>e.map(e=>e.amount.toString())),outTimeStamp:BigInt(_[0][0].timeStamp),outPublicKeys:_.map(e=>e.map(e=>e.getStealthAddress())),outCommitments:q,calldataHash:B,messageSeed:P,swapperAccountSalt:O,H0Ax:J,H0Ay:Y},{zkCallData:ee,publicSignals:te,commitmentValidationData:ne}=await c.generateMainAndCommitmentZkProof(T,m,h,g,`mainSolanaCircuit${V}`,$,f),[re,ie,ae]=ee;return{proofAArr:re.map(BigInt).map(o.encodeToByte32Array).flat(),proofBArr:ie.flat().map(BigInt).map(o.encodeToByte32Array).flat(),proofCArr:ae.map(BigInt).map(o.encodeToByte32Array).flat(),publicInputsArr:te.map(BigInt).map(o.encodeToByte32Array),commitmentValidationData:ne}};exports.constructSolanaZkProof=f;
|