@kapa123456789/sdk 0.0.65 → 0.0.67
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/data-structures/Hinkal/hinkalDeposit.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalDeposit.mjs +35 -2
- package/common/src/data-structures/Hinkal/hinkalSwap.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSwap.mjs +49 -9
- package/common/src/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalTransfer.mjs +59 -12
- package/common/src/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalWithdraw.mjs +58 -13
- package/common/src/error-handling/logger.cjs +1 -1
- package/common/src/error-handling/logger.mjs +7 -15
- package/common/src/functions/snarkjs/constructGeneralZkProof.cjs +1 -1
- package/common/src/functions/snarkjs/constructGeneralZkProof.mjs +161 -48
- package/common/src/functions/snarkjs/generateZkProof.cjs +1 -1
- package/common/src/functions/snarkjs/generateZkProof.mjs +6 -1
- package/common/src/functions/web3/functionCalls/transactCallDirect.cjs +1 -1
- package/common/src/functions/web3/functionCalls/transactCallDirect.mjs +159 -38
- 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 +3 -3
- package/common/src/webworker/viteWorkerURL.constant.mjs +3 -3
- package/package.json +1 -1
- package/react-native/HinkalWebViewWorker.cjs +3 -3
- package/react-native/HinkalWebViewWorker.mjs +53 -55
- package/react-native/metro-config.js +3 -2
- package/react-native/shims/constants.js +7 -0
- package/sdk/package.json.cjs +1 -1
- package/sdk/package.json.mjs +1 -1
|
@@ -1,54 +1,167 @@
|
|
|
1
1
|
import { chainIds as e, isTronLike as t } from "../../constants/chains.constants.mjs";
|
|
2
|
-
import { defaultSignatureData as
|
|
3
|
-
import { defaultHinkalLogicArgs as
|
|
4
|
-
import { randomBigInt as
|
|
5
|
-
import { Utxo as
|
|
6
|
-
import { Logger as
|
|
7
|
-
import { buildOutCommitments as
|
|
8
|
-
import { generateCircomData as
|
|
9
|
-
import { generateZkProof as
|
|
10
|
-
import { generateFeeStructure as
|
|
11
|
-
import { createHinkalHelperFromData as
|
|
12
|
-
import { getDataFromWorkers as
|
|
2
|
+
import { defaultSignatureData as ee, zeroAddress as te } from "../../constants/protocol.constants.mjs";
|
|
3
|
+
import { defaultHinkalLogicArgs as ne } from "../../types/hinkal.types.mjs";
|
|
4
|
+
import { randomBigInt as re } from "../web3/etherFunctions.mjs";
|
|
5
|
+
import { Utxo as ie } from "../../data-structures/utxo/Utxo.mjs";
|
|
6
|
+
import { Logger as ae } from "../../error-handling/logger.mjs";
|
|
7
|
+
import { buildOutCommitments as oe, calcAmountChanges as n, calcEncryptedOutputs as se, calcPublicSignalCount as ce, calcStealthAddressStructure as le, createCallDataHash as ue, getSlippageValues as de } from "./common.snarkjs.mjs";
|
|
8
|
+
import { generateCircomData as fe } from "./generateCircomData.mjs";
|
|
9
|
+
import { generateZkProof as r } from "./generateZkProof.mjs";
|
|
10
|
+
import { generateFeeStructure as pe } from "../utils/fees.utils.mjs";
|
|
11
|
+
import { createHinkalHelperFromData as me, hinkalCheckTokenRegistry as he, hinkalCheckTronTokenRegistry as ge } from "../../data-structures/Hinkal/hinkalCheckTokenRegistry.mjs";
|
|
12
|
+
import { getDataFromWorkers as _e } from "./getMerkleTreeSiblingsAndRootHashes.mjs";
|
|
13
13
|
//#region libs/shared/common/src/functions/snarkjs/constructGeneralZkProof.ts
|
|
14
|
-
var
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
14
|
+
var i = "[constructZkProof]", a = (e) => typeof e == "bigint" ? e.toString() : e, o = (e) => ({
|
|
15
|
+
tokenGroupCount: e.length,
|
|
16
|
+
groupSizes: e.map((e) => e.length),
|
|
17
|
+
tokenAddresses: e.map((e) => e[0]?.erc20TokenAddress),
|
|
18
|
+
amounts: e.map((e) => e.map((e) => e.amount.toString()))
|
|
19
|
+
}), ve = (e) => e ? {
|
|
20
|
+
feeToken: e.feeToken,
|
|
21
|
+
flatFee: e.flatFee.toString(),
|
|
22
|
+
variableRate: e.variableRate.toString()
|
|
23
|
+
} : void 0, s = async (s, ye, c, l, u, d, f, p, m, h, g = te, _ = e.localhost, v = c.map(() => !1), y = c.map(() => 0n), b = void 0, x = !1, S, C = void 0, w, T = ee, E) => {
|
|
24
|
+
console.log(`${i} start`, {
|
|
25
|
+
chainId: _,
|
|
26
|
+
verifierName: d,
|
|
27
|
+
externalActionId: a(f),
|
|
28
|
+
externalAddress: p,
|
|
29
|
+
externalActionMetadataLength: m?.length,
|
|
30
|
+
generateProofRemotely: h,
|
|
31
|
+
relay: g,
|
|
32
|
+
patchAccessTokenMerkleTree: x,
|
|
33
|
+
onChainCreation: v,
|
|
34
|
+
flatFees: y.map((e) => e.toString()),
|
|
35
|
+
hasHookData: !!b,
|
|
36
|
+
hasHinkalHelper: !!w,
|
|
37
|
+
hasOriginalSender: !!E,
|
|
38
|
+
inputUtxos: o(c),
|
|
39
|
+
outputUtxos: o(l)
|
|
40
|
+
});
|
|
41
|
+
let D = n(c, l), O = c.map((e) => e[0].erc20TokenAddress), k = se(l);
|
|
42
|
+
console.log(`${i} derived base values`, {
|
|
43
|
+
amountChanges: D.map((e) => e.toString()),
|
|
44
|
+
erc20TokenAddresses: O,
|
|
45
|
+
encryptedOutputGroupCount: k.length,
|
|
46
|
+
encryptedOutputSizes: k.map((e) => e.length)
|
|
47
|
+
});
|
|
48
|
+
let A = u.getShieldedPrivateKey();
|
|
49
|
+
console.log(`${i} shielded key ready`, { shieldedPrivateKeyLength: A?.toString()?.length });
|
|
50
|
+
let j = ie.findCorrectRandomization(re(31), A);
|
|
51
|
+
console.log(`${i} extra randomization ready`, { extraRandomization: j.toString() });
|
|
52
|
+
let M = n(c, l, !0);
|
|
53
|
+
console.log(`${i} token registry check start`, {
|
|
54
|
+
isTronLike: t(_),
|
|
55
|
+
erc20TokenAddresses: O,
|
|
56
|
+
signedAmountChanges: M.map((e) => e.toString())
|
|
57
|
+
});
|
|
58
|
+
let N = t(_) ? await ge(O, M, _) : await he(w ?? me(_), O, M);
|
|
59
|
+
console.log(`${i} token registry check complete`, { kycRequired: N });
|
|
60
|
+
let P = t(_) ? x || N : x;
|
|
61
|
+
console.log(`${i} effective access token patch flag`, { effectivePatchAccessTokenMerkleTree: P });
|
|
62
|
+
let F = c.map((e) => e.map((e) => e.getConstructableParams()));
|
|
63
|
+
console.log(`${i} input utxos serialized`, {
|
|
64
|
+
serializedGroupCount: F.length,
|
|
65
|
+
serializedGroupSizes: F.map((e) => e.length)
|
|
66
|
+
}), console.log(`${i} worker data fetch start`);
|
|
67
|
+
let { inCommitmentSiblings: I, inCommitmentSiblingSides: L, accessTokenSiblings: R, accessTokenSiblingSides: z, rootHashHinkal: B, rootHashAccessToken: V, inNullifiers: H } = await _e(_, s, ye, u, F, P, N);
|
|
68
|
+
console.log(`${i} worker data fetch complete`, {
|
|
69
|
+
inNullifierGroupCount: H.length,
|
|
70
|
+
inNullifierSizes: H.map((e) => e.length),
|
|
71
|
+
inCommitmentSiblingGroupCount: I.length,
|
|
72
|
+
inCommitmentSiblingSizes: I.map((e) => e.length),
|
|
73
|
+
accessTokenSiblingGroupCount: R.length,
|
|
74
|
+
accessTokenSiblingSizes: R.map((e) => e.length),
|
|
75
|
+
rootHashHinkal: a(B),
|
|
76
|
+
rootHashAccessToken: a(V),
|
|
77
|
+
inCommitmentSiblingSidesGroupCount: L.length,
|
|
78
|
+
accessTokenSiblingSidesGroupCount: z.length
|
|
79
|
+
});
|
|
80
|
+
let U = oe(l);
|
|
81
|
+
console.log(`${i} out commitments built`, {
|
|
82
|
+
outCommitmentGroupCount: U.length,
|
|
83
|
+
outCommitmentSizes: U.map((e) => e.length)
|
|
84
|
+
});
|
|
85
|
+
let W = {
|
|
86
|
+
rootHashHinkal: B,
|
|
87
|
+
shieldedPrivateKey: A,
|
|
88
|
+
erc20TokenAddresses: O,
|
|
89
|
+
inAmounts: c.map((e) => e.map((e) => e.amount.toString())),
|
|
90
|
+
inTimeStamps: c.map((e) => e.map((e) => e.timeStamp)),
|
|
91
|
+
inRandomizations: c.map((e) => e.map((e) => e.randomization)),
|
|
92
|
+
inNullifiers: H,
|
|
93
|
+
inCommitmentSiblings: I,
|
|
94
|
+
inCommitmentSiblingSides: L,
|
|
95
|
+
outAmounts: l.map((e) => e.map((e) => e.amount.toString())),
|
|
96
|
+
outTimeStamp: BigInt(l[0][0].timeStamp),
|
|
97
|
+
outPublicKeys: l.map((e) => e.map((e) => e.getStealthAddress())),
|
|
98
|
+
extraRandomization: j,
|
|
99
|
+
amountChanges: D,
|
|
100
|
+
outCommitments: U,
|
|
101
|
+
rootHashAccessToken: V,
|
|
102
|
+
accessTokenSiblings: R,
|
|
103
|
+
accessTokenSiblingSides: z,
|
|
34
104
|
calldataHash: 0n
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
105
|
+
};
|
|
106
|
+
console.log(`${i} proof input prepared`, {
|
|
107
|
+
inAmountGroupCount: W.inAmounts.length,
|
|
108
|
+
outAmountGroupCount: W.outAmounts.length,
|
|
109
|
+
outTimeStamp: W.outTimeStamp.toString(),
|
|
110
|
+
extraRandomization: W.extraRandomization.toString(),
|
|
111
|
+
amountChanges: W.amountChanges.map((e) => e.toString())
|
|
112
|
+
});
|
|
113
|
+
let G = c.map((e) => e[0].tokenId ?? 0), K = G.reduce((e, t) => e + t, 0) > 0 ? G.length : 0;
|
|
114
|
+
K > 0 && (W.tokenIds = G), console.log(`${i} token ids analyzed`, {
|
|
115
|
+
tokenIds: G,
|
|
116
|
+
tokenIdsPositive: K
|
|
117
|
+
});
|
|
118
|
+
let q = ce(d, W.erc20TokenAddresses, W.amountChanges, W.inNullifiers, W.outCommitments, K);
|
|
119
|
+
console.log(`${i} public signal count ready`, { publicSignalCount: q });
|
|
120
|
+
let J = ne(D.length, u);
|
|
121
|
+
W.interactionAddress = J.interactionAddress, W.externalApprovalAddresses = J.useApprovalUtxoData?.map(({ externalApprovalAddresses: e }) => e), console.log(`${i} hinkal logic args ready`, {
|
|
122
|
+
interactionAddress: J.interactionAddress,
|
|
123
|
+
externalApprovalAddressesCount: W.externalApprovalAddresses?.length
|
|
124
|
+
}), C ||= (console.log(`${i} generating fee structure`), pe(y, c.map((e) => e[0].erc20TokenAddress))), console.log(`${i} fee structure ready`, ve(C));
|
|
125
|
+
let Y = M;
|
|
126
|
+
console.log(`${i} signed amount changes ready`, { amountChangesBased: Y.map((e) => e.toString()) }), S ||= (console.log(`${i} generating slippage values`), de(Y)), console.log(`${i} slippage values ready`, { slippageValues: S.map((e) => e.toString()) }), ae.log({ publicSignalCount: q }), console.log(`${i} calldata hash start`), W.calldataHash = ue(q, g, p, f, m, k, y, b, S, v, J, C, T, E), console.log(`${i} calldata hash complete`, { calldataHash: W.calldataHash.toString() }), console.log(`${i} generateZkProof start`);
|
|
127
|
+
let { zkCallData: X } = await r(_, d, W, h);
|
|
128
|
+
console.log(`${i} generateZkProof complete`, {
|
|
129
|
+
aLength: X?.[0]?.length,
|
|
130
|
+
bOuterLength: X?.[1]?.length,
|
|
131
|
+
bInnerLengths: X?.[1]?.map((e) => e.length),
|
|
132
|
+
cLength: X?.[2]?.length,
|
|
133
|
+
inputLength: X?.[3]?.length
|
|
134
|
+
});
|
|
135
|
+
let Z = le(j, A);
|
|
136
|
+
console.log(`${i} stealth address structure ready`, {
|
|
137
|
+
extraRandomization: a(Z.extraRandomization),
|
|
138
|
+
stealthAddress: a(Z.stealthAddress)
|
|
139
|
+
});
|
|
140
|
+
let Q = fe(U, H, B, V, Y, O, l, k, q, f, p, m, g, W.calldataHash, G, Z, v, b, void 0, J, S, C, T, E);
|
|
141
|
+
console.log(`${i} circom data ready`, {
|
|
142
|
+
tokenCount: Q.erc20TokenAddresses.length,
|
|
143
|
+
amountChanges: Q.amountChanges.map((e) => e.toString()),
|
|
144
|
+
inputNullifierGroupCount: Q.inputNullifiers.length,
|
|
145
|
+
outCommitmentGroupCount: Q.outCommitments.length,
|
|
146
|
+
encryptedOutputGroupCount: Q.encryptedOutputs.length,
|
|
147
|
+
rootHashHinkal: a(Q.rootHashHinkal),
|
|
148
|
+
rootHashAccessToken: a(Q.rootHashAccessToken),
|
|
149
|
+
relay: Q.relay,
|
|
150
|
+
externalAddress: Q.externalAddress,
|
|
151
|
+
externalActionId: a(Q.externalActionId),
|
|
152
|
+
calldataHash: a(Q.calldataHash)
|
|
153
|
+
});
|
|
154
|
+
let $ = {
|
|
155
|
+
tokenNumber: c.length,
|
|
156
|
+
nullifierAmount: c[0].length,
|
|
157
|
+
outputAmount: l[0].length
|
|
158
|
+
};
|
|
159
|
+
return console.log(`${i} dim data ready`, $), console.log(`${i} complete`), {
|
|
160
|
+
zkCallData: X,
|
|
161
|
+
circomData: Q,
|
|
162
|
+
dimData: $,
|
|
163
|
+
encryptedOutputs: k
|
|
51
164
|
};
|
|
52
165
|
};
|
|
53
166
|
//#endregion
|
|
54
|
-
export {
|
|
167
|
+
export { s as constructZkProof };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../error-handling/logger.cjs`),t=require(`./generateZkProofEnclave.cjs`),n=require(`./generateZkProofSelf.cjs`);var r=async(r,i,a,o)=>{if(o)try{return await t.generateZkProofEnclave(r,i,a)}catch(t){e.Logger.error(`enclave proof error`,t)}return n.generateZkProofSelf(r,i,a)};exports.generateZkProof=r;
|
|
1
|
+
const e=require(`../../error-handling/logger.cjs`),t=require(`./generateZkProofEnclave.cjs`),n=require(`./generateZkProofSelf.cjs`);var r=async(r,i,a,o)=>{if(console.log(`generateZkProof`,{chainId:r,verifierName:i,input:a,remotely:o}),o)try{return await t.generateZkProofEnclave(r,i,a)}catch(t){e.Logger.error(`enclave proof error`,t)}return n.generateZkProofSelf(r,i,a)};exports.generateZkProof=r;
|
|
@@ -3,7 +3,12 @@ import { generateZkProofEnclave as t } from "./generateZkProofEnclave.mjs";
|
|
|
3
3
|
import { generateZkProofSelf as n } from "./generateZkProofSelf.mjs";
|
|
4
4
|
//#region libs/shared/common/src/functions/snarkjs/generateZkProof.ts
|
|
5
5
|
var r = async (r, i, a, o) => {
|
|
6
|
-
if (
|
|
6
|
+
if (console.log("generateZkProof", {
|
|
7
|
+
chainId: r,
|
|
8
|
+
verifierName: i,
|
|
9
|
+
input: a,
|
|
10
|
+
remotely: o
|
|
11
|
+
}), o) try {
|
|
7
12
|
return await t(r, i, a);
|
|
8
13
|
} catch (t) {
|
|
9
14
|
e.error("enclave proof error", t);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../../constants/protocol.constants.cjs`),t=require(`../../../types/ethereum-network.types.cjs`),n=require(`../../utils/time.utils.cjs`),r=require(`../../utils/getContractAddress.cjs`),i=require(`./recoverTransactionFromError.cjs`),a=require(`./approveTokensToHinkal.cjs`),o=require(`./constructBatchCall.cjs`),s=require(`./waitForErc20Approvals.cjs`);let c=require(`ethers`);var l=
|
|
1
|
+
require(`../../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../../constants/protocol.constants.cjs`),t=require(`../../../types/ethereum-network.types.cjs`),n=require(`../../utils/time.utils.cjs`),r=require(`../../utils/getContractAddress.cjs`),i=require(`./recoverTransactionFromError.cjs`),a=require(`./approveTokensToHinkal.cjs`),o=require(`./constructBatchCall.cjs`),s=require(`./waitForErc20Approvals.cjs`);let c=require(`ethers`);var l=`[transactCallDirect]`,u=e=>typeof e==`bigint`?e.toString():void 0,d=e=>({aLength:e?.[0]?.length,bOuterLength:e?.[1]?.length,bInnerLengths:e?.[1]?.map(e=>e.length),cLength:e?.[2]?.length,inputLength:e?.[3]?.length}),f=e=>({tokenCount:e.erc20TokenAddresses?.length,tokenAddresses:e.erc20TokenAddresses,amountChanges:e.amountChanges?.map(e=>e.toString()),inputNullifierGroupCount:e.inputNullifiers?.length,inputNullifierSizes:e.inputNullifiers?.map(e=>e.length),outCommitmentGroupCount:e.outCommitments?.length,outCommitmentSizes:e.outCommitments?.map(e=>e.length),encryptedOutputGroupCount:e.encryptedOutputs?.length,encryptedOutputSizes:e.encryptedOutputs?.map(e=>e.length),rootHashHinkal:u(e.rootHashHinkal),rootHashAccessToken:u(e.rootHashAccessToken),relay:e.relay,externalAddress:e.externalAddress,externalActionId:u(e.externalActionId),calldataHash:u(e.calldataHash),publicSignalCount:e.publicSignalCount,originalSender:e.originalSender}),p=e=>({hash:`hash`in e?e.hash:void 0,to:e.to,from:e.from,nonce:e.nonce,value:typeof e.value==`bigint`?e.value.toString():e.value,gasLimit:typeof e.gasLimit==`bigint`?e.gasLimit.toString():e.gasLimit,dataLength:typeof e.data==`string`?e.data.length:void 0}),m=async(u,m,h,g,_,v,y,b,x,S=!0,C=!1)=>{console.log(`${l} start`,{chainId:m,preEstimateGas:S,returnTxData:C,amountIsArray:Array.isArray(h),tokenIsArray:Array.isArray(g),zkCallData:d(_),dimData:y,circomData:f(v)});let w=Array.isArray(h)?h:[h],T=Array.isArray(g)?g:[g];if(console.log(`${l} normalized inputs`,{amounts:w.map(e=>e.toString()),tokenAddresses:T.map(({erc20TokenAddress:e})=>e),tokenSymbols:T.map(({symbol:e})=>e)}),w.length!==T.length)throw Error(`token and amount length mismatch`);console.log(`${l} fetching signer contract`);let E=u.getContractWithSigner(m,t.ContractType.HinkalContract);console.log(`${l} signer contract ready`,{hinkalContractAddress:r.getContractAddress(E)}),console.log(`${l} fetching ethereum address`);let D=await u.getEthereumAddressByChain(m);console.log(`${l} ethereum address ready`,{ethereumAddress:D});let O=b??E,k=x??E;console.log(`${l} contracts resolved`,{approvalContractAddress:r.getContractAddress(O),transactionContractAddress:r.getContractAddress(k),usedCustomApprovalContract:!!b,usedCustomTransactionContract:!!x});let A=`transact`,j=T.findIndex(({erc20TokenAddress:t})=>t===e.zeroAddress),M=T.some(({erc20TokenAddress:t})=>t!==e.zeroAddress),N=j===-1?0n:w[j];console.log(`${l} token analysis`,{ethIndex:j,needsApproval:M,ethAmount:N.toString()}),console.log(`${l} fetching provider adapter`);let P=u.getProviderAdapter(m);console.log(`${l} provider adapter ready`,{providerAdapterType:P?.constructor?.name}),console.log(`${l} checking batch support`);let F=await P.supportsBatchCall?.(m);if(console.log(`${l} batch support resolved`,{supportsBatchCall:F,hasSendBatchCallsTransaction:!!P.sendBatchCallsTransaction}),!C&&M&&F&&P.sendBatchCallsTransaction){console.log(`${l} entering batch call path`);let e=T.map(e=>e.erc20TokenAddress),t=o.buildApproveAndTransactCalls(e,w,r.getContractAddress(O),k,_,y,v,N);console.log(`${l} batch calls built`,{batchCallCount:t.length,tokenAddresses:e,approvalContractAddress:r.getContractAddress(O),transactionContractAddress:r.getContractAddress(k)}),console.log(`${l} sending batch calls transaction`);let n=await P.sendBatchCallsTransaction(m,t);return console.log(`${l} batch calls transaction sent`,p(n)),n}if(!C&&(console.log(`${l} approving tokens start`),await a.approveTokensToHinkal(u,m,O,T,w),console.log(`${l} approving tokens complete`),M)){let e=T.map(({erc20TokenAddress:e},t)=>({tokenAddress:e,requiredAmount:w[t]}));console.log(`${l} waiting for approvals start`,{ownerAddress:D,spenderAddress:r.getContractAddress(O),requirements:e.map(({tokenAddress:e,requiredAmount:t})=>({tokenAddress:e,requiredAmount:t.toString()}))}),await s.waitForErc20Approvals(u,m,D,r.getContractAddress(O),e),console.log(`${l} waiting for approvals complete`)}let I={value:N>0n?BigInt(N).toString():void 0,gasLimit:void 0};console.log(`${l} overrides prepared`,I);let L,R=[_[0],_[1],_[2],y,v,{...I,from:D}];console.log(`${l} call data prepared`,{method:A,dimData:y,transactionContractAddress:r.getContractAddress(k),from:D,value:I.value,zkCallData:d(_)});let{runner:z}=k;if(console.log(`${l} runner resolved`,{runnerType:z?.constructor?.name,hasProvider:!!z?.provider}),!(z instanceof c.ethers.AbstractSigner))throw console.log(`${l} runner is not a signer`,{runnerType:z?.constructor?.name}),Error(`expected signer`);if(S){console.log(`${l} estimateGas start`);try{L=Number(await k[A].estimateGas(...R)),console.log(`${l} estimateGas success`,{gasCosts:L})}catch(e){console.log(`${l} estimateGas error`,{message:e?.message,code:e?.code,shortMessage:e?.shortMessage,reason:e?.reason,data:e?.data,error:e})}}else console.log(`${l} estimateGas skipped`);let B=L&&L>=0?Math.ceil(L*12/10):void 0;B&&(R[5].gasLimit=B),console.log(`${l} gas configuration final`,{gasCosts:L,extendedGasCosts:B,finalOverrides:R[5]}),console.log(`${l} waitLittle start`),await n.waitLittle(),console.log(`${l} waitLittle complete`);let V;try{C?(console.log(`${l} populateTransaction start`),V=await k[A].populateTransaction(...R),console.log(`${l} populateTransaction success`,p(V))):(console.log(`${l} contract call start`),V=await k[A](...R),console.log(`${l} contract call success`,p(V)))}catch(e){if(console.log(`${l} contract call error`,{message:e?.message,code:e?.code,shortMessage:e?.shortMessage,reason:e?.reason,transactionHash:e?.transactionHash,data:e?.data,error:e}),!e?.transactionHash)throw e;console.log(`${l} recoverTransactionFromError start`,{transactionHash:e.transactionHash});let t=await i.recoverTransactionFromError(z.provider,e.transactionHash);if(!t)throw console.log(`${l} recoverTransactionFromError failed`),e;console.log(`${l} recoverTransactionFromError success`,p(t)),V=t}return console.log(`${l} complete`,p(V)),V};exports.transactCallDirect=m;
|
|
@@ -8,53 +8,174 @@ import { buildApproveAndTransactCalls as o } from "./constructBatchCall.mjs";
|
|
|
8
8
|
import { waitForErc20Approvals as s } from "./waitForErc20Approvals.mjs";
|
|
9
9
|
import { ethers as c } from "ethers";
|
|
10
10
|
//#region libs/shared/common/src/functions/web3/functionCalls/transactCallDirect.ts
|
|
11
|
-
var l =
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
var l = "[transactCallDirect]", u = (e) => typeof e == "bigint" ? e.toString() : void 0, d = (e) => ({
|
|
12
|
+
aLength: e?.[0]?.length,
|
|
13
|
+
bOuterLength: e?.[1]?.length,
|
|
14
|
+
bInnerLengths: e?.[1]?.map((e) => e.length),
|
|
15
|
+
cLength: e?.[2]?.length,
|
|
16
|
+
inputLength: e?.[3]?.length
|
|
17
|
+
}), f = (e) => ({
|
|
18
|
+
tokenCount: e.erc20TokenAddresses?.length,
|
|
19
|
+
tokenAddresses: e.erc20TokenAddresses,
|
|
20
|
+
amountChanges: e.amountChanges?.map((e) => e.toString()),
|
|
21
|
+
inputNullifierGroupCount: e.inputNullifiers?.length,
|
|
22
|
+
inputNullifierSizes: e.inputNullifiers?.map((e) => e.length),
|
|
23
|
+
outCommitmentGroupCount: e.outCommitments?.length,
|
|
24
|
+
outCommitmentSizes: e.outCommitments?.map((e) => e.length),
|
|
25
|
+
encryptedOutputGroupCount: e.encryptedOutputs?.length,
|
|
26
|
+
encryptedOutputSizes: e.encryptedOutputs?.map((e) => e.length),
|
|
27
|
+
rootHashHinkal: u(e.rootHashHinkal),
|
|
28
|
+
rootHashAccessToken: u(e.rootHashAccessToken),
|
|
29
|
+
relay: e.relay,
|
|
30
|
+
externalAddress: e.externalAddress,
|
|
31
|
+
externalActionId: u(e.externalActionId),
|
|
32
|
+
calldataHash: u(e.calldataHash),
|
|
33
|
+
publicSignalCount: e.publicSignalCount,
|
|
34
|
+
originalSender: e.originalSender
|
|
35
|
+
}), p = (e) => ({
|
|
36
|
+
hash: "hash" in e ? e.hash : void 0,
|
|
37
|
+
to: e.to,
|
|
38
|
+
from: e.from,
|
|
39
|
+
nonce: e.nonce,
|
|
40
|
+
value: typeof e.value == "bigint" ? e.value.toString() : e.value,
|
|
41
|
+
gasLimit: typeof e.gasLimit == "bigint" ? e.gasLimit.toString() : e.gasLimit,
|
|
42
|
+
dataLength: typeof e.data == "string" ? e.data.length : void 0
|
|
43
|
+
}), m = async (u, m, h, g, _, v, y, b, x, S = !0, C = !1) => {
|
|
44
|
+
console.log(`${l} start`, {
|
|
45
|
+
chainId: m,
|
|
46
|
+
preEstimateGas: S,
|
|
47
|
+
returnTxData: C,
|
|
48
|
+
amountIsArray: Array.isArray(h),
|
|
49
|
+
tokenIsArray: Array.isArray(g),
|
|
50
|
+
zkCallData: d(_),
|
|
51
|
+
dimData: y,
|
|
52
|
+
circomData: f(v)
|
|
53
|
+
});
|
|
54
|
+
let w = Array.isArray(h) ? h : [h], T = Array.isArray(g) ? g : [g];
|
|
55
|
+
if (console.log(`${l} normalized inputs`, {
|
|
56
|
+
amounts: w.map((e) => e.toString()),
|
|
57
|
+
tokenAddresses: T.map(({ erc20TokenAddress: e }) => e),
|
|
58
|
+
tokenSymbols: T.map(({ symbol: e }) => e)
|
|
59
|
+
}), w.length !== T.length) throw Error("token and amount length mismatch");
|
|
60
|
+
console.log(`${l} fetching signer contract`);
|
|
61
|
+
let E = u.getContractWithSigner(m, t.HinkalContract);
|
|
62
|
+
console.log(`${l} signer contract ready`, { hinkalContractAddress: r(E) }), console.log(`${l} fetching ethereum address`);
|
|
63
|
+
let D = await u.getEthereumAddressByChain(m);
|
|
64
|
+
console.log(`${l} ethereum address ready`, { ethereumAddress: D });
|
|
65
|
+
let O = b ?? E, k = x ?? E;
|
|
66
|
+
console.log(`${l} contracts resolved`, {
|
|
67
|
+
approvalContractAddress: r(O),
|
|
68
|
+
transactionContractAddress: r(k),
|
|
69
|
+
usedCustomApprovalContract: !!b,
|
|
70
|
+
usedCustomTransactionContract: !!x
|
|
71
|
+
});
|
|
72
|
+
let A = "transact", j = T.findIndex(({ erc20TokenAddress: t }) => t === e), M = T.some(({ erc20TokenAddress: t }) => t !== e), N = j === -1 ? 0n : w[j];
|
|
73
|
+
console.log(`${l} token analysis`, {
|
|
74
|
+
ethIndex: j,
|
|
75
|
+
needsApproval: M,
|
|
76
|
+
ethAmount: N.toString()
|
|
77
|
+
}), console.log(`${l} fetching provider adapter`);
|
|
78
|
+
let P = u.getProviderAdapter(m);
|
|
79
|
+
console.log(`${l} provider adapter ready`, { providerAdapterType: P?.constructor?.name }), console.log(`${l} checking batch support`);
|
|
80
|
+
let F = await P.supportsBatchCall?.(m);
|
|
81
|
+
if (console.log(`${l} batch support resolved`, {
|
|
82
|
+
supportsBatchCall: F,
|
|
83
|
+
hasSendBatchCallsTransaction: !!P.sendBatchCallsTransaction
|
|
84
|
+
}), !C && M && F && P.sendBatchCallsTransaction) {
|
|
85
|
+
console.log(`${l} entering batch call path`);
|
|
86
|
+
let e = T.map((e) => e.erc20TokenAddress), t = o(e, w, r(O), k, _, y, v, N);
|
|
87
|
+
console.log(`${l} batch calls built`, {
|
|
88
|
+
batchCallCount: t.length,
|
|
89
|
+
tokenAddresses: e,
|
|
90
|
+
approvalContractAddress: r(O),
|
|
91
|
+
transactionContractAddress: r(k)
|
|
92
|
+
}), console.log(`${l} sending batch calls transaction`);
|
|
93
|
+
let n = await P.sendBatchCallsTransaction(m, t);
|
|
94
|
+
return console.log(`${l} batch calls transaction sent`, p(n)), n;
|
|
18
95
|
}
|
|
19
|
-
if (!
|
|
20
|
-
let e =
|
|
96
|
+
if (!C && (console.log(`${l} approving tokens start`), await a(u, m, O, T, w), console.log(`${l} approving tokens complete`), M)) {
|
|
97
|
+
let e = T.map(({ erc20TokenAddress: e }, t) => ({
|
|
21
98
|
tokenAddress: e,
|
|
22
|
-
requiredAmount:
|
|
99
|
+
requiredAmount: w[t]
|
|
23
100
|
}));
|
|
24
|
-
|
|
101
|
+
console.log(`${l} waiting for approvals start`, {
|
|
102
|
+
ownerAddress: D,
|
|
103
|
+
spenderAddress: r(O),
|
|
104
|
+
requirements: e.map(({ tokenAddress: e, requiredAmount: t }) => ({
|
|
105
|
+
tokenAddress: e,
|
|
106
|
+
requiredAmount: t.toString()
|
|
107
|
+
}))
|
|
108
|
+
}), await s(u, m, D, r(O), e), console.log(`${l} waiting for approvals complete`);
|
|
25
109
|
}
|
|
26
|
-
let
|
|
27
|
-
value:
|
|
110
|
+
let I = {
|
|
111
|
+
value: N > 0n ? BigInt(N).toString() : void 0,
|
|
28
112
|
gasLimit: void 0
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
113
|
+
};
|
|
114
|
+
console.log(`${l} overrides prepared`, I);
|
|
115
|
+
let L, R = [
|
|
116
|
+
_[0],
|
|
117
|
+
_[1],
|
|
118
|
+
_[2],
|
|
119
|
+
y,
|
|
120
|
+
v,
|
|
35
121
|
{
|
|
36
|
-
...
|
|
37
|
-
from:
|
|
122
|
+
...I,
|
|
123
|
+
from: D
|
|
38
124
|
}
|
|
39
|
-
]
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
let
|
|
125
|
+
];
|
|
126
|
+
console.log(`${l} call data prepared`, {
|
|
127
|
+
method: A,
|
|
128
|
+
dimData: y,
|
|
129
|
+
transactionContractAddress: r(k),
|
|
130
|
+
from: D,
|
|
131
|
+
value: I.value,
|
|
132
|
+
zkCallData: d(_)
|
|
133
|
+
});
|
|
134
|
+
let { runner: z } = k;
|
|
135
|
+
if (console.log(`${l} runner resolved`, {
|
|
136
|
+
runnerType: z?.constructor?.name,
|
|
137
|
+
hasProvider: !!z?.provider
|
|
138
|
+
}), !(z instanceof c.AbstractSigner)) throw console.log(`${l} runner is not a signer`, { runnerType: z?.constructor?.name }), Error("expected signer");
|
|
139
|
+
if (S) {
|
|
140
|
+
console.log(`${l} estimateGas start`);
|
|
141
|
+
try {
|
|
142
|
+
L = Number(await k[A].estimateGas(...R)), console.log(`${l} estimateGas success`, { gasCosts: L });
|
|
143
|
+
} catch (e) {
|
|
144
|
+
console.log(`${l} estimateGas error`, {
|
|
145
|
+
message: e?.message,
|
|
146
|
+
code: e?.code,
|
|
147
|
+
shortMessage: e?.shortMessage,
|
|
148
|
+
reason: e?.reason,
|
|
149
|
+
data: e?.data,
|
|
150
|
+
error: e
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
} else console.log(`${l} estimateGas skipped`);
|
|
154
|
+
let B = L && L >= 0 ? Math.ceil(L * 12 / 10) : void 0;
|
|
155
|
+
B && (R[5].gasLimit = B), console.log(`${l} gas configuration final`, {
|
|
156
|
+
gasCosts: L,
|
|
157
|
+
extendedGasCosts: B,
|
|
158
|
+
finalOverrides: R[5]
|
|
159
|
+
}), console.log(`${l} waitLittle start`), await n(), console.log(`${l} waitLittle complete`);
|
|
160
|
+
let V;
|
|
49
161
|
try {
|
|
50
|
-
|
|
162
|
+
C ? (console.log(`${l} populateTransaction start`), V = await k[A].populateTransaction(...R), console.log(`${l} populateTransaction success`, p(V))) : (console.log(`${l} contract call start`), V = await k[A](...R), console.log(`${l} contract call success`, p(V)));
|
|
51
163
|
} catch (e) {
|
|
52
|
-
if (
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
164
|
+
if (console.log(`${l} contract call error`, {
|
|
165
|
+
message: e?.message,
|
|
166
|
+
code: e?.code,
|
|
167
|
+
shortMessage: e?.shortMessage,
|
|
168
|
+
reason: e?.reason,
|
|
169
|
+
transactionHash: e?.transactionHash,
|
|
170
|
+
data: e?.data,
|
|
171
|
+
error: e
|
|
172
|
+
}), !e?.transactionHash) throw e;
|
|
173
|
+
console.log(`${l} recoverTransactionFromError start`, { transactionHash: e.transactionHash });
|
|
174
|
+
let t = await i(z.provider, e.transactionHash);
|
|
175
|
+
if (!t) throw console.log(`${l} recoverTransactionFromError failed`), e;
|
|
176
|
+
console.log(`${l} recoverTransactionFromError success`, p(t)), V = t;
|
|
56
177
|
}
|
|
57
|
-
return
|
|
178
|
+
return console.log(`${l} complete`, p(V)), V;
|
|
58
179
|
};
|
|
59
180
|
//#endregion
|
|
60
|
-
export {
|
|
181
|
+
export { m as transactCallDirect };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=``+(typeof document>`u`?require(`url`).pathToFileURL(__dirname+`/../../../../assets/utxoWorkerLauncher-
|
|
1
|
+
var e=``+(typeof document>`u`?require(`url`).pathToFileURL(__dirname+`/../../../../assets/utxoWorkerLauncher-CDD8QoFQ.js`).href:new URL(`../../../../assets/utxoWorkerLauncher-CDD8QoFQ.js`,document.currentScript&&document.currentScript.tagName.toUpperCase()===`SCRIPT`&&document.currentScript.src||document.baseURI).href);exports.default=e;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region libs/shared/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url
|
|
2
|
-
var e = "" + new URL("../../../../assets/utxoWorkerLauncher-
|
|
2
|
+
var e = "" + new URL("../../../../assets/utxoWorkerLauncher-CDD8QoFQ.js", import.meta.url).href;
|
|
3
3
|
//#endregion
|
|
4
4
|
export { e as default };
|