@gurge/sdk 0.3.26 → 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/rnUtxoCrypto.cjs +1 -1
- package/common/src/crypto/rnUtxoCrypto.d.ts +11 -0
- package/common/src/crypto/rnUtxoCrypto.mjs +46 -12
- 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/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/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/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/functions/index.cjs +1 -1
- package/common/src/functions/index.mjs +3 -3
- package/common/src/functions/pre-transaction/buildCommitmentValidationData.cjs +1 -1
- package/common/src/functions/pre-transaction/buildCommitmentValidationData.mjs +13 -13
- 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/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 +2 -2
- package/common/src/functions/web3/events/getInputUtxoAndBalance.cjs +1 -1
- package/common/src/functions/web3/events/getInputUtxoAndBalance.mjs +81 -80
- 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 -1
- package/common/src/webworker/cryptoWorker/cryptoWorker.types.d.ts +3 -1
- package/common/src/webworker/cryptoWorker/cryptoWorker.types.mjs +1 -1
- 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 -4
- package/common/src/webworker/viteWorkerURL.constant.mjs +4 -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/sdk/package.json.cjs +1 -1
- package/sdk/package.json.mjs +1 -1
- package/common/src/webworker/logError-DFS-H2t0.js +0 -2
|
@@ -1 +1 @@
|
|
|
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(
|
|
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;
|
|
@@ -3,20 +3,20 @@ import { isSolanaLike as t } from "../../constants/chains.constants.mjs";
|
|
|
3
3
|
import { getRnCryptoBridge as n } from "../../crypto/rnCryptoBridge.mjs";
|
|
4
4
|
import { UserKeys as r } from "../../data-structures/crypto-keys/keys.mjs";
|
|
5
5
|
import { CryptoWorkerOp as i } from "../../webworker/cryptoWorker/cryptoWorker.types.mjs";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
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
10
|
import { WorkerVariant as d } from "../../webworker/worker.registry.mjs";
|
|
11
11
|
import { performTaskWithWorker as f } from "../../webworker/performTaskWithWorker.mjs";
|
|
12
12
|
import { ZKProofWorkerActionType as p } from "../../webworker/zkProofWorker/zkProofWorker.types.mjs";
|
|
13
13
|
//#region libs/shared/common/src/functions/pre-transaction/buildCommitmentValidationData.ts
|
|
14
14
|
var m = async (m, h, g, _) => {
|
|
15
|
-
let v =
|
|
16
|
-
if (
|
|
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) =>
|
|
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
18
|
v.log("serializeInputs");
|
|
19
|
-
let w =
|
|
19
|
+
let w = u("mainThread.getCommitment"), T = _.map((e) => e.map((e) => e.amount === 0n ? "0" : BigInt(e.getCommitment()).toString()));
|
|
20
20
|
w.log("all-utxos", { count: _.reduce((e, t) => e + t.length, 0) });
|
|
21
21
|
let E = await f({
|
|
22
22
|
type: d.ZKProof,
|
|
@@ -26,10 +26,10 @@ var m = async (m, h, g, _) => {
|
|
|
26
26
|
}
|
|
27
27
|
});
|
|
28
28
|
v.log("buildInNullifiers-worker-done");
|
|
29
|
-
let D = h.getShieldedPrivateKey(), O = await
|
|
30
|
-
let { compressedAddress: t } =
|
|
29
|
+
let D = h.getShieldedPrivateKey(), O = await c(h), k = y ? g.map((e) => {
|
|
30
|
+
let { compressedAddress: t } = l(e);
|
|
31
31
|
return BigInt(t).toString();
|
|
32
|
-
}) : g.map((e) => BigInt(e).toString()), A =
|
|
32
|
+
}) : g.map((e) => BigInt(e).toString()), A = u("mainThread.stealthValidation"), j = 0;
|
|
33
33
|
if (e) {
|
|
34
34
|
let e = [];
|
|
35
35
|
_.forEach((t, n) => {
|
|
@@ -71,8 +71,8 @@ var m = async (m, h, g, _) => {
|
|
|
71
71
|
erc20TokenAddresses: k,
|
|
72
72
|
inAmounts: b,
|
|
73
73
|
inRandomizations: S,
|
|
74
|
-
inH0Ax: _.map((e) => e.map((e) =>
|
|
75
|
-
inH0Ay: _.map((e) => e.map((e) =>
|
|
74
|
+
inH0Ax: _.map((e) => e.map((e) => a(e)[0].toString())),
|
|
75
|
+
inH0Ay: _.map((e) => e.map((e) => a(e)[1].toString())),
|
|
76
76
|
isNewStyle: _.map((e) => e.map((e) => !!e.isNewStyle)),
|
|
77
77
|
inTimeStamps: x,
|
|
78
78
|
inCommitments: T,
|
|
@@ -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/external-action.types.cjs`),r=require(`../../types/ethereum-network.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,n,i,a,o,c,u,f)=>{if(i!==e.zeroAddress){let f=s.SWAP_FEE_TAKER_ADDRESSES[n],p=t.getContractWithFetcher(n,r.ContractType.ERC20Contract,i),m=await p.balanceOf(a);await h(n,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===n.ExternalActionId.OneInch||a===n.ExternalActionId.Lifi){if(u!==e.zeroAddress){let e=t.getContractWithFetcher(i,r.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===n.ExternalActionId.OneInch||y&&a===n.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,r.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,r.ContractType.ERC20Contract,T).balanceOf(b)),u!==e.zeroAddress){let e=t.getContractWithFetcher(i,r.ContractType.ERC20Contract,u);await h(i,w,e,b,o,S),w.push(l.createApproveEmporiumOp(e,o,C,S))}if(D=a===n.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],n=t.getContractWithFetcher(i,r.ContractType.ERC20Contract,T);w.push(l.createApproveEmporiumOp(n,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 { ExternalActionId as r } from "../../types/external-action.types.mjs";
|
|
4
|
+
import { ContractType as i } from "../../types/ethereum-network.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, r, a, o, s, c, u, d) => {
|
|
45
45
|
if (a !== t) {
|
|
46
|
-
let t = l[
|
|
47
|
-
await y(
|
|
46
|
+
let t = l[r], d = n.getContractWithFetcher(r, i.ERC20Contract, a), m = await d.balanceOf(o);
|
|
47
|
+
await y(r, 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 === r.OneInch || a === r.Lifi) {
|
|
71
71
|
if (l !== t) {
|
|
72
|
-
let t = e.getContractWithFetcher(n,
|
|
72
|
+
let t = e.getContractWithFetcher(n, i.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 === r.OneInch || x && a === r.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, i.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, i.ERC20Contract, D).balanceOf(S)), l !== t) {
|
|
90
|
+
let t = e.getContractWithFetcher(n, i.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 === r.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], r = e.getContractWithFetcher(n, i.ERC20Contract, D);
|
|
95
|
+
E.push(f(r, 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(`../../data-structures/crypto-keys/encryptDecryptUtxo.cjs`),r=require(`../../types/circom-data.types.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 r=0;r<e.length;r+=1)r>0&&t.push([``]),e[r].forEach((e,i)=>{t[r][i]=`0x${Buffer.from(n.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,n,o,c,l,u,d,f,p,m,h,g)=>{let _=Object.values(d||r.defaultHookData),v=g??a.getOriginalSender(o??e.zeroAddress,n),y=s.ethers.AbiCoder.defaultAbiCoder().encode([`uint16`,`address`,`address`,`uint256`,`bytes`],[t,n,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 { encryptUtxo as r } from "../../data-structures/crypto-keys/encryptDecryptUtxo.mjs";
|
|
4
|
+
import { defaultHookData as i } from "../../types/circom-data.types.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, i) => {
|
|
35
|
+
t[n][i] = `0x${Buffer.from(r(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, r, s, l, u, d, f, p, m, h, g, _) => {
|
|
46
|
+
let v = Object.values(f || i), y = _ ?? o(s ?? t, r), 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
|
+
r,
|
|
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`),n=require(`../../crypto/poseidon.cjs`),r=require(`../web3/etherFunctions.cjs`),i=require(`../../data-structures/crypto-keys/keys.cjs`),a=require(`../utils/
|
|
1
|
+
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../crypto/poseidon.cjs`),r=require(`../web3/etherFunctions.cjs`),i=require(`../../data-structures/crypto-keys/keys.cjs`),ee=require(`../../types/external-action.types.cjs`),a=require(`../utils/bit.operations.cjs`),o=require(`./common.snarkjs.cjs`),s=require(`../../crypto/rnUtxoCrypto.cjs`),c=require(`../utils/time.utils.cjs`),l=require(`../../error-handling/logger.cjs`),te=require(`../utils/hinkalTiming.utils.cjs`),u=require(`./signedMessageHash.cjs`),d=require(`./generateCircomData.cjs`),ne=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,re,S,C=t.zeroAddress,w=e.chainIds.localhost,T=g.map(()=>!1),E=void 0,D,O)=>{let k=te.createRnDeltaTiming(`webView.getDataFromWorkers`),A=o.getZkProofVerifierName(g,_),j=o.calcAmountChanges(g,_),M=g.map(e=>e[0].erc20TokenAddress),N=o.calcEncryptedOutputs(_),P=t.defaultSignatureData,F=v.getShieldedPrivateKey(),{pubSpendingBJJPoint:I}=await s.getSpendingKeyPairForRn(v),L=await s.calcStealthAddressStructureForRn(i.UserKeys.findCorrectRandomization(r.randomBigInt(31),F),F,I),{inCommitmentSiblings:ie,inCommitmentSiblingSides:ae,rootHashHinkal:R,inNullifiers:z}=await p.getDataFromWorkers(w,h,g.map(e=>e.map(e=>e.getConstructableParams())));k.log(`done`,{verifierName:A,chainId:w});let B=o.buildOutCommitments(_),V=r.randomBigInt(31),H=n.poseidonFunction(V),U=BigInt(_.length>0?_[0][0].timeStamp:c.getCurrentTimeInSeconds()),W={rootHashHinkal:R,spendingPublicKey:I,nullifyingPrivateKey:F,erc20TokenAddresses:M,amountChanges:j,inAmounts:g.map(e=>e.map(e=>e.amount.toString())),inRandomizations:g.map(e=>e.map(e=>o.getUtxoCircuitInRandomization(e))),inH0Ax:g.map(e=>e.map(e=>o.getUtxoCircuitH0Coords(e)[0].toString())),inH0Ay:g.map(e=>e.map(e=>o.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:ie,inCommitmentSiblingSides:ae,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:a.takeOffHighestBit(L.extraRandomization),H0Ay:L.H0},G=o.calcPublicSignalCount(A,W.erc20TokenAddresses,W.amountChanges,W.inNullifiers,W.outCommitments),K=o.calcAmountChanges(g,_,!0),q=o.getSlippageValues(K);l.Logger.log({publicSignalCount:G});let J=Array.isArray(x)?x:[x],oe=e.getOnchainChainId(w),Y=O?ne.AccountActions.getSignerAddressFromPrivateKey(oe,O):void 0,X=y===ee.ExternalActionId.Emporium?await m.encodeEmporiumMetadata(w,b??t.zeroAddress,O,J,H,Y):await m.encodeEmporiumMetadata(w,t.zeroAddress,void 0,y===0n?[]:J,H,t.zeroAddress);W.calldataHash=o.createCallDataHash(G,C,b,y,X,N,E,q,T,S,P,D);let Z=u.computeSignedMessageHashEvm({rootHashHinkal:R,erc20TokenAddresses:M,amountChanges:j,outTimeStamp:U,inNullifiers:z,outCommitments:B,calldataHash:W.calldataHash,message:H,outH1Ay:L.H1,H0Ax:W.H0Ax,H0Ay:L.H0}),{R8:Q,S:se}=await s.signEddsaForRn(v,Z);W.eddsaSignature=[Q[0],Q[1],se],W.signedMessageHash=Z;let $=A.startsWith(`mainEVMCircuitMin0`),ce={outTimeStamp:U,calldataHash:W.calldataHash,messageSeed:V},{zkCallData:le,commitmentValidationData:ue}=await f.generateMainAndCommitmentZkProof(w,v,M,g,A,$?ce:W,re);return{zkCallData:le,circomData:d.generateCircomData(B,z,R,K,M,_,N,G,y,b,X,C,W.calldataHash,L,T,E,$?Number(U):void 0,q,S,P,D),dimData:{tokenNumber:g.length,nullifierAmount:g.length>0?g[0].length:0,outputAmount:_.length>0?_[0].length:0},encryptedOutputs:N,commitmentValidationData:ue}};exports.constructZkProof=h;
|
|
@@ -1,88 +1,89 @@
|
|
|
1
|
-
import { chainIds as e, getOnchainChainId as
|
|
2
|
-
import { defaultSignatureData as
|
|
3
|
-
import { poseidonFunction as
|
|
4
|
-
import { randomBigInt as
|
|
5
|
-
import { UserKeys as
|
|
6
|
-
import { getCurrentTimeInSeconds as r } from "../utils/time.utils.mjs";
|
|
1
|
+
import { chainIds as e, getOnchainChainId as t } from "../../constants/chains.constants.mjs";
|
|
2
|
+
import { defaultSignatureData as ee, zeroAddress as n } from "../../constants/protocol.constants.mjs";
|
|
3
|
+
import { poseidonFunction as te } from "../../crypto/poseidon.mjs";
|
|
4
|
+
import { randomBigInt as r } from "../web3/etherFunctions.mjs";
|
|
5
|
+
import { UserKeys as ne } from "../../data-structures/crypto-keys/keys.mjs";
|
|
7
6
|
import { ExternalActionId as i } from "../../types/external-action.types.mjs";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
7
|
+
import { takeOffHighestBit as a } from "../utils/bit.operations.mjs";
|
|
8
|
+
import { buildOutCommitments as re, calcAmountChanges as o, calcEncryptedOutputs as s, calcPublicSignalCount as c, createCallDataHash as l, getSlippageValues as u, getUtxoCircuitH0Coords as d, getUtxoCircuitInRandomization as ie, getZkProofVerifierName as ae } from "./common.snarkjs.mjs";
|
|
9
|
+
import { calcStealthAddressStructureForRn as oe, getSpendingKeyPairForRn as se, signEddsaForRn as ce } from "../../crypto/rnUtxoCrypto.mjs";
|
|
10
|
+
import { getCurrentTimeInSeconds as le } from "../utils/time.utils.mjs";
|
|
11
|
+
import { Logger as ue } from "../../error-handling/logger.mjs";
|
|
12
|
+
import { createRnDeltaTiming as de } from "../utils/hinkalTiming.utils.mjs";
|
|
13
|
+
import { computeSignedMessageHashEvm as fe } from "./signedMessageHash.mjs";
|
|
14
|
+
import { generateCircomData as pe } from "./generateCircomData.mjs";
|
|
15
|
+
import { AccountActions as f } from "../../data-structures/AccountActions/AccountActions.mjs";
|
|
16
|
+
import { generateMainAndCommitmentZkProof as me } from "./generateMainAndCommitmentZkProof.mjs";
|
|
17
|
+
import { getDataFromWorkers as he } from "./getMerkleTreeSiblingsAndRootHashes.mjs";
|
|
18
|
+
import { encodeEmporiumMetadata as p } from "../private-wallet/emporium.helpers.mjs";
|
|
18
19
|
//#region libs/shared/common/src/functions/snarkjs/constructGeneralZkProof.ts
|
|
19
|
-
var
|
|
20
|
-
let
|
|
21
|
-
|
|
22
|
-
verifierName:
|
|
23
|
-
chainId:
|
|
20
|
+
var m = async (m, h, g, _, v, y, b, x, S, C = n, w = e.localhost, T = h.map(() => !1), E = void 0, D, O) => {
|
|
21
|
+
let k = de("webView.getDataFromWorkers"), A = ae(h, g), j = o(h, g), M = h.map((e) => e[0].erc20TokenAddress), N = s(g), P = ee, F = _.getShieldedPrivateKey(), { pubSpendingBJJPoint: I } = await se(_), L = await oe(ne.findCorrectRandomization(r(31), F), F, I), { inCommitmentSiblings: R, inCommitmentSiblingSides: ge, rootHashHinkal: z, inNullifiers: B } = await he(w, m, h.map((e) => e.map((e) => e.getConstructableParams())));
|
|
22
|
+
k.log("done", {
|
|
23
|
+
verifierName: A,
|
|
24
|
+
chainId: w
|
|
24
25
|
});
|
|
25
|
-
let
|
|
26
|
-
rootHashHinkal:
|
|
27
|
-
spendingPublicKey:
|
|
28
|
-
nullifyingPrivateKey:
|
|
29
|
-
erc20TokenAddresses:
|
|
30
|
-
amountChanges:
|
|
31
|
-
inAmounts:
|
|
32
|
-
inRandomizations:
|
|
33
|
-
inH0Ax:
|
|
34
|
-
inH0Ay:
|
|
35
|
-
isNewStyle:
|
|
36
|
-
inTimeStamps:
|
|
37
|
-
inNullifiers:
|
|
38
|
-
inCommitmentSiblings:
|
|
39
|
-
inCommitmentSiblingSides:
|
|
40
|
-
outAmounts:
|
|
41
|
-
outTimeStamp:
|
|
42
|
-
outPublicKeys:
|
|
43
|
-
outCommitments:
|
|
26
|
+
let V = re(g), H = r(31), U = te(H), W = BigInt(g.length > 0 ? g[0][0].timeStamp : le()), G = {
|
|
27
|
+
rootHashHinkal: z,
|
|
28
|
+
spendingPublicKey: I,
|
|
29
|
+
nullifyingPrivateKey: F,
|
|
30
|
+
erc20TokenAddresses: M,
|
|
31
|
+
amountChanges: j,
|
|
32
|
+
inAmounts: h.map((e) => e.map((e) => e.amount.toString())),
|
|
33
|
+
inRandomizations: h.map((e) => e.map((e) => ie(e))),
|
|
34
|
+
inH0Ax: h.map((e) => e.map((e) => d(e)[0].toString())),
|
|
35
|
+
inH0Ay: h.map((e) => e.map((e) => d(e)[1].toString())),
|
|
36
|
+
isNewStyle: h.map((e) => e.map((e) => !!e.isNewStyle)),
|
|
37
|
+
inTimeStamps: h.map((e) => e.map((e) => e.timeStamp)),
|
|
38
|
+
inNullifiers: B,
|
|
39
|
+
inCommitmentSiblings: R,
|
|
40
|
+
inCommitmentSiblingSides: ge,
|
|
41
|
+
outAmounts: g.map((e) => e.map((e) => e.amount.toString())),
|
|
42
|
+
outTimeStamp: W,
|
|
43
|
+
outPublicKeys: g.map((e) => e.map((e) => e.getStealthAddress())),
|
|
44
|
+
outCommitments: V,
|
|
44
45
|
calldataHash: 0n,
|
|
45
|
-
messageSeed:
|
|
46
|
-
H0Ax:
|
|
47
|
-
H0Ay:
|
|
48
|
-
},
|
|
49
|
-
|
|
50
|
-
let
|
|
51
|
-
|
|
52
|
-
let Z =
|
|
53
|
-
rootHashHinkal:
|
|
54
|
-
erc20TokenAddresses:
|
|
55
|
-
amountChanges:
|
|
56
|
-
outTimeStamp:
|
|
57
|
-
inNullifiers:
|
|
58
|
-
outCommitments:
|
|
59
|
-
calldataHash:
|
|
60
|
-
message:
|
|
61
|
-
outH1Ay:
|
|
62
|
-
H0Ax:
|
|
63
|
-
H0Ay:
|
|
64
|
-
}), { R8: Q, S:
|
|
65
|
-
|
|
46
|
+
messageSeed: H,
|
|
47
|
+
H0Ax: a(L.extraRandomization),
|
|
48
|
+
H0Ay: L.H0
|
|
49
|
+
}, K = c(A, G.erc20TokenAddresses, G.amountChanges, G.inNullifiers, G.outCommitments), q = o(h, g, !0), J = u(q);
|
|
50
|
+
ue.log({ publicSignalCount: K });
|
|
51
|
+
let Y = Array.isArray(b) ? b : [b], _e = t(w), ve = O ? f.getSignerAddressFromPrivateKey(_e, O) : void 0, X = v === i.Emporium ? await p(w, y ?? n, O, Y, U, ve) : await p(w, n, void 0, v === 0n ? [] : Y, U, n);
|
|
52
|
+
G.calldataHash = l(K, C, y, v, X, N, E, J, T, S, P, D);
|
|
53
|
+
let Z = fe({
|
|
54
|
+
rootHashHinkal: z,
|
|
55
|
+
erc20TokenAddresses: M,
|
|
56
|
+
amountChanges: j,
|
|
57
|
+
outTimeStamp: W,
|
|
58
|
+
inNullifiers: B,
|
|
59
|
+
outCommitments: V,
|
|
60
|
+
calldataHash: G.calldataHash,
|
|
61
|
+
message: U,
|
|
62
|
+
outH1Ay: L.H1,
|
|
63
|
+
H0Ax: G.H0Ax,
|
|
64
|
+
H0Ay: L.H0
|
|
65
|
+
}), { R8: Q, S: ye } = await ce(_, Z);
|
|
66
|
+
G.eddsaSignature = [
|
|
66
67
|
Q[0],
|
|
67
68
|
Q[1],
|
|
68
|
-
|
|
69
|
-
],
|
|
70
|
-
let $ =
|
|
71
|
-
outTimeStamp:
|
|
72
|
-
calldataHash:
|
|
73
|
-
messageSeed:
|
|
74
|
-
}, { zkCallData:
|
|
69
|
+
ye
|
|
70
|
+
], G.signedMessageHash = Z;
|
|
71
|
+
let $ = A.startsWith("mainEVMCircuitMin0"), be = {
|
|
72
|
+
outTimeStamp: W,
|
|
73
|
+
calldataHash: G.calldataHash,
|
|
74
|
+
messageSeed: H
|
|
75
|
+
}, { zkCallData: xe, commitmentValidationData: Se } = await me(w, _, M, h, A, $ ? be : G, x);
|
|
75
76
|
return {
|
|
76
|
-
zkCallData:
|
|
77
|
-
circomData:
|
|
77
|
+
zkCallData: xe,
|
|
78
|
+
circomData: pe(V, B, z, q, M, g, N, K, v, y, X, C, G.calldataHash, L, T, E, $ ? Number(W) : void 0, J, S, P, D),
|
|
78
79
|
dimData: {
|
|
79
|
-
tokenNumber:
|
|
80
|
-
nullifierAmount:
|
|
81
|
-
outputAmount:
|
|
80
|
+
tokenNumber: h.length,
|
|
81
|
+
nullifierAmount: h.length > 0 ? h[0].length : 0,
|
|
82
|
+
outputAmount: g.length > 0 ? g[0].length : 0
|
|
82
83
|
},
|
|
83
|
-
encryptedOutputs:
|
|
84
|
-
commitmentValidationData:
|
|
84
|
+
encryptedOutputs: N,
|
|
85
|
+
commitmentValidationData: Se
|
|
85
86
|
};
|
|
86
87
|
};
|
|
87
88
|
//#endregion
|
|
88
|
-
export {
|
|
89
|
+
export { m 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/bit.operations.cjs`),i=require(`./common.snarkjs.cjs`),a=require(`../utils/solanaMint.utils.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=i.calcStealthAddressStructure(v,j,m.getSpendingKeyPair().pubSpendingBJJPoint),P=n.randomBigInt(31),F=t.poseidonFunction(P),I=t.poseidonFunction(O),L=h.map(e=>a.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=i.calcAmountChanges(g,_),{inCommitmentSiblings:U,inCommitmentSiblingSides:W,rootHashHinkal:G,inNullifiers:K}=await l.getDataFromWorkers(T,p,g.map(e=>e.map(e=>e.getConstructableParams()))),q=i.buildOutCommitments(_),J=r.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=>i.getUtxoCircuitInRandomization(e))),inH0Ax:g.map(e=>e.map(e=>i.getUtxoCircuitH0Coords(e)[0].toString())),inH0Ay:g.map(e=>e.map(e=>i.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;
|
|
@@ -1,73 +1,73 @@
|
|
|
1
1
|
import { chainIds as e } from "../../constants/chains.constants.mjs";
|
|
2
2
|
import { poseidonFunction as t } from "../../crypto/poseidon.mjs";
|
|
3
3
|
import { randomBigInt as n } from "../web3/etherFunctions.mjs";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { encodeToByte32Array as
|
|
8
|
-
import { computeSignedMessageHashSolana as
|
|
4
|
+
import { takeOffHighestBit as ee } from "../utils/bit.operations.mjs";
|
|
5
|
+
import { buildOutCommitments as r, calcAmountChanges as i, calcStealthAddressStructure as a, getUtxoCircuitH0Coords as o, getUtxoCircuitInRandomization as s } from "./common.snarkjs.mjs";
|
|
6
|
+
import { formatMintAddress as c } from "../utils/solanaMint.utils.mjs";
|
|
7
|
+
import { encodeToByte32Array as l } from "../pre-transaction/solana.mjs";
|
|
8
|
+
import { computeSignedMessageHashSolana as u } from "./signedMessageHash.mjs";
|
|
9
9
|
import "../pre-transaction/index.mjs";
|
|
10
|
-
import { generateMainAndCommitmentZkProof as
|
|
10
|
+
import { generateMainAndCommitmentZkProof as d } from "./generateMainAndCommitmentZkProof.mjs";
|
|
11
11
|
import "../utils/index.mjs";
|
|
12
|
-
import { getDataFromWorkers as
|
|
13
|
-
import { getSolanaCalldataHash as
|
|
12
|
+
import { getDataFromWorkers as f } from "./getMerkleTreeSiblingsAndRootHashes.mjs";
|
|
13
|
+
import { getSolanaCalldataHash as p } from "../pre-transaction/getSolanaCalldataHash.mjs";
|
|
14
14
|
import "../web3/index.mjs";
|
|
15
|
-
import { PublicKey as
|
|
15
|
+
import { PublicKey as m } from "@solana/web3.js";
|
|
16
16
|
//#region libs/shared/common/src/functions/snarkjs/constructSolanaZkProof.ts
|
|
17
|
-
var
|
|
18
|
-
let
|
|
19
|
-
rootHashHinkal:
|
|
20
|
-
mintAccountPart1:
|
|
21
|
-
mintAccountPart2:
|
|
22
|
-
amountChanges:
|
|
23
|
-
outTimeStamp: BigInt(
|
|
24
|
-
inNullifiers:
|
|
25
|
-
outCommitments:
|
|
26
|
-
calldataHash:
|
|
27
|
-
message:
|
|
28
|
-
swapperAccountAdditionalSeed:
|
|
29
|
-
outH1Ay:
|
|
30
|
-
H0Ax:
|
|
31
|
-
H0Ay:
|
|
32
|
-
}), { R8:
|
|
33
|
-
rootHashHinkal:
|
|
34
|
-
spendingPublicKey:
|
|
17
|
+
var h = async (h, g, _, v, y, b, x, S, C, w, T, E, te, D = e.solanaLocalnet, O = [], k = [], A = 0n) => {
|
|
18
|
+
let j = new m(w), M = new m(T), N = _.getShieldedPrivateKey(), { pubSpendingBJJPoint: P } = _.getSpendingKeyPair(), F = a(x, N, _.getSpendingKeyPair().pubSpendingBJJPoint), I = n(31), L = t(I), R = t(A), z = v.map((e) => c(e)), B = z.map((e) => e.mintAccountPart1), V = z.map((e) => e.mintAccountPart2), H = p(E, j, M, te, S, C, O, k), ne = `${E.tokenNumber}x${E.nullifierAmount}x${E.outputAmount}`, U = i(y, b), { inCommitmentSiblings: W, inCommitmentSiblingSides: G, rootHashHinkal: K, inNullifiers: q } = await f(D, g, y.map((e) => e.map((e) => e.getConstructableParams()))), J = r(b), Y = ee(F.extraRandomization), X = F.H0, Z = u({
|
|
19
|
+
rootHashHinkal: K,
|
|
20
|
+
mintAccountPart1: B,
|
|
21
|
+
mintAccountPart2: V,
|
|
22
|
+
amountChanges: U,
|
|
23
|
+
outTimeStamp: BigInt(b[0][0].timeStamp),
|
|
24
|
+
inNullifiers: q,
|
|
25
|
+
outCommitments: J,
|
|
26
|
+
calldataHash: H,
|
|
27
|
+
message: L,
|
|
28
|
+
swapperAccountAdditionalSeed: R,
|
|
29
|
+
outH1Ay: F.H1,
|
|
30
|
+
H0Ax: Y,
|
|
31
|
+
H0Ay: X
|
|
32
|
+
}), { R8: Q, S: re } = _.signEddsa(Z), ie = {
|
|
33
|
+
rootHashHinkal: K,
|
|
34
|
+
spendingPublicKey: P,
|
|
35
35
|
eddsaSignature: [
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
Q[0],
|
|
37
|
+
Q[1],
|
|
38
|
+
re
|
|
39
39
|
],
|
|
40
|
-
signedMessageHash:
|
|
41
|
-
nullifyingPrivateKey:
|
|
42
|
-
mintAccountPart1:
|
|
43
|
-
mintAccountPart2:
|
|
44
|
-
amountChanges:
|
|
45
|
-
inAmounts:
|
|
46
|
-
inRandomizations:
|
|
47
|
-
inH0Ax:
|
|
48
|
-
inH0Ay:
|
|
49
|
-
isNewStyle:
|
|
50
|
-
inTimeStamps:
|
|
51
|
-
inNullifiers:
|
|
52
|
-
inCommitmentSiblings:
|
|
53
|
-
inCommitmentSiblingSides:
|
|
54
|
-
outAmounts:
|
|
55
|
-
outTimeStamp: BigInt(
|
|
56
|
-
outPublicKeys:
|
|
57
|
-
outCommitments:
|
|
58
|
-
calldataHash:
|
|
59
|
-
messageSeed:
|
|
60
|
-
swapperAccountSalt:
|
|
61
|
-
H0Ax:
|
|
62
|
-
H0Ay:
|
|
63
|
-
}, { zkCallData:
|
|
40
|
+
signedMessageHash: Z,
|
|
41
|
+
nullifyingPrivateKey: N,
|
|
42
|
+
mintAccountPart1: B,
|
|
43
|
+
mintAccountPart2: V,
|
|
44
|
+
amountChanges: U,
|
|
45
|
+
inAmounts: y.map((e) => e.map((e) => e.amount.toString())),
|
|
46
|
+
inRandomizations: y.map((e) => e.map((e) => s(e))),
|
|
47
|
+
inH0Ax: y.map((e) => e.map((e) => o(e)[0].toString())),
|
|
48
|
+
inH0Ay: y.map((e) => e.map((e) => o(e)[1].toString())),
|
|
49
|
+
isNewStyle: y.map((e) => e.map((e) => !!e.isNewStyle)),
|
|
50
|
+
inTimeStamps: y.map((e) => e.map((e) => e.timeStamp)),
|
|
51
|
+
inNullifiers: q,
|
|
52
|
+
inCommitmentSiblings: W,
|
|
53
|
+
inCommitmentSiblingSides: G,
|
|
54
|
+
outAmounts: b.map((e) => e.map((e) => e.amount.toString())),
|
|
55
|
+
outTimeStamp: BigInt(b[0][0].timeStamp),
|
|
56
|
+
outPublicKeys: b.map((e) => e.map((e) => e.getStealthAddress())),
|
|
57
|
+
outCommitments: J,
|
|
58
|
+
calldataHash: H,
|
|
59
|
+
messageSeed: I,
|
|
60
|
+
swapperAccountSalt: A,
|
|
61
|
+
H0Ax: Y,
|
|
62
|
+
H0Ay: X
|
|
63
|
+
}, { zkCallData: ae, publicSignals: oe, commitmentValidationData: $ } = await d(D, _, v, y, `mainSolanaCircuit${ne}`, ie, h), [se, ce, le] = ae;
|
|
64
64
|
return {
|
|
65
|
-
proofAArr: se.map(BigInt).map(
|
|
66
|
-
proofBArr: ce.flat().map(BigInt).map(
|
|
67
|
-
proofCArr: le.map(BigInt).map(
|
|
68
|
-
publicInputsArr:
|
|
69
|
-
commitmentValidationData:
|
|
65
|
+
proofAArr: se.map(BigInt).map(l).flat(),
|
|
66
|
+
proofBArr: ce.flat().map(BigInt).map(l).flat(),
|
|
67
|
+
proofCArr: le.map(BigInt).map(l).flat(),
|
|
68
|
+
publicInputsArr: oe.map(BigInt).map(l),
|
|
69
|
+
commitmentValidationData: $
|
|
70
70
|
};
|
|
71
71
|
};
|
|
72
72
|
//#endregion
|
|
73
|
-
export {
|
|
73
|
+
export { h as constructSolanaZkProof };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../_virtual/_rolldown/runtime.cjs`),require(`../../data-structures/http/HttpClient.cjs`),require(
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`),require(`./common.snarkjs.cjs`),require(`../../data-structures/http/HttpClient.cjs`),require(`../utils/bytes32.utils.cjs`),require(`./getZKFiles.cjs`),require(`ethers`),require(`snarkjs`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../web3/etherFunctions.cjs`),require(`../../data-structures/crypto-keys/keys.cjs`),require(`../../data-structures/utxo/Utxo.cjs`),require(`./addresses.cjs`)
|
|
1
|
+
require(`../web3/etherFunctions.cjs`),require(`../../data-structures/crypto-keys/keys.cjs`),require(`../snarkjs/common.snarkjs.cjs`),require(`../../data-structures/utxo/Utxo.cjs`),require(`./addresses.cjs`);
|