@gurge/sdk 0.3.27 → 0.3.28
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 +35 -46
- 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 +43 -86
- 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 +22 -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 +60 -67
- 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/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/hinkalTiming.utils.cjs +0 -1
- package/common/src/functions/utils/hinkalTiming.utils.d.ts +0 -11
- package/common/src/functions/utils/hinkalTiming.utils.mjs +0 -21
- 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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`../constants/protocol.constants.cjs`),t=require(`../functions/utils/bigint-math.utils.cjs`);var n={p:e.CIRCOM_P,zero:0n,one:1n,e:e=>t.mod(BigInt(e)),add:(e,n)=>t.mod(e+n),sub:(e,n)=>t.mod(e-n),mul:(e,n)=>t.mod(e*n),div:(e,n)=>{if(n===0n)throw Error(`Division by zero in BabyJub field`);return t.mod(e*t.modInverse(n))},toString:e=>t.mod(e).toString()},r={X:n.zero,Y:n.one,Z:n.one,T:n.zero},i=e=>{let t=n.e(e[0]),r=n.e(e[1]);return{X:t,Y:r,Z:n.one,T:n.mul(t,r)}},a=e=>{let r=t.modInverse(e.Z);return[n.mul(e.X,r),n.mul(e.Y,r)]},o=n.e(`168700`),s=n.e(`168696`),c=(e,t)=>{let r=n.mul(e.X,t.X),i=n.mul(e.Y,t.Y),a=n.mul(n.mul(e.T,t.T),s),c=n.mul(e.Z,t.Z),l=n.sub(n.mul(n.add(e.X,e.Y),n.add(t.X,t.Y)),n.add(r,i)),u=n.sub(c,a),d=n.add(c,a),f=n.sub(i,n.mul(o,r));return{X:n.mul(l,u),Y:n.mul(d,f),T:n.mul(l,f),Z:n.mul(u,d)}},l=e=>{let t=n.mul(e.X,e.X),r=n.mul(e.Y,e.Y),i=n.mul(n.mul(e.Z,e.Z),2n),a=n.mul(o,t),s=n.sub(n.mul(n.add(e.X,e.Y),n.add(e.X,e.Y)),n.add(t,r)),c=n.add(a,r),l=n.sub(c,i),u=n.sub(a,r);return{X:n.mul(s,l),Y:n.mul(c,u),T:n.mul(s,u),Z:n.mul(l,c)}},u=class{static A=o;static D=s;F=n;A=o;D=s;Base8=[n.e(`5299619240641551281634865583518297030282874472190772894086521144482721001553`),n.e(`16950150798460657717958625567821834550301663161624707787222815936182638968203`)];addPoint(e,t){return a(c(i(e),i(t)))}mulPointEscalar(e,t){let n=r,o=i(e),s=BigInt(t);for(;s!==0n;)s%2n==1n&&(n=c(n,o)),o=l(o),s/=2n;return a(n)}};exports.BabyJubRN=u;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { CIRCOM_P as e } from "../constants/protocol.constants.mjs";
|
|
2
|
+
import { mod as t, modInverse as n } from "../functions/utils/bigint-math.utils.mjs";
|
|
3
|
+
//#region libs/shared/common/src/crypto/BabyJubRN.ts
|
|
4
|
+
var r = {
|
|
5
|
+
p: e,
|
|
6
|
+
zero: 0n,
|
|
7
|
+
one: 1n,
|
|
8
|
+
e: (e) => t(BigInt(e)),
|
|
9
|
+
add: (e, n) => t(e + n),
|
|
10
|
+
sub: (e, n) => t(e - n),
|
|
11
|
+
mul: (e, n) => t(e * n),
|
|
12
|
+
div: (e, r) => {
|
|
13
|
+
if (r === 0n) throw Error("Division by zero in BabyJub field");
|
|
14
|
+
return t(e * n(r));
|
|
15
|
+
},
|
|
16
|
+
toString: (e) => t(e).toString()
|
|
17
|
+
}, i = {
|
|
18
|
+
X: r.zero,
|
|
19
|
+
Y: r.one,
|
|
20
|
+
Z: r.one,
|
|
21
|
+
T: r.zero
|
|
22
|
+
}, a = (e) => {
|
|
23
|
+
let t = r.e(e[0]), n = r.e(e[1]);
|
|
24
|
+
return {
|
|
25
|
+
X: t,
|
|
26
|
+
Y: n,
|
|
27
|
+
Z: r.one,
|
|
28
|
+
T: r.mul(t, n)
|
|
29
|
+
};
|
|
30
|
+
}, o = (e) => {
|
|
31
|
+
let t = n(e.Z);
|
|
32
|
+
return [r.mul(e.X, t), r.mul(e.Y, t)];
|
|
33
|
+
}, s = r.e("168700"), c = r.e("168696"), l = (e, t) => {
|
|
34
|
+
let n = r.mul(e.X, t.X), i = r.mul(e.Y, t.Y), a = r.mul(r.mul(e.T, t.T), c), o = r.mul(e.Z, t.Z), l = r.sub(r.mul(r.add(e.X, e.Y), r.add(t.X, t.Y)), r.add(n, i)), u = r.sub(o, a), d = r.add(o, a), f = r.sub(i, r.mul(s, n));
|
|
35
|
+
return {
|
|
36
|
+
X: r.mul(l, u),
|
|
37
|
+
Y: r.mul(d, f),
|
|
38
|
+
T: r.mul(l, f),
|
|
39
|
+
Z: r.mul(u, d)
|
|
40
|
+
};
|
|
41
|
+
}, u = (e) => {
|
|
42
|
+
let t = r.mul(e.X, e.X), n = r.mul(e.Y, e.Y), i = r.mul(r.mul(e.Z, e.Z), 2n), a = r.mul(s, t), o = r.sub(r.mul(r.add(e.X, e.Y), r.add(e.X, e.Y)), r.add(t, n)), c = r.add(a, n), l = r.sub(c, i), u = r.sub(a, n);
|
|
43
|
+
return {
|
|
44
|
+
X: r.mul(o, l),
|
|
45
|
+
Y: r.mul(c, u),
|
|
46
|
+
T: r.mul(o, u),
|
|
47
|
+
Z: r.mul(l, c)
|
|
48
|
+
};
|
|
49
|
+
}, d = class {
|
|
50
|
+
static A = s;
|
|
51
|
+
static D = c;
|
|
52
|
+
F = r;
|
|
53
|
+
A = s;
|
|
54
|
+
D = c;
|
|
55
|
+
Base8 = [r.e("5299619240641551281634865583518297030282874472190772894086521144482721001553"), r.e("16950150798460657717958625567821834550301663161624707787222815936182638968203")];
|
|
56
|
+
addPoint(e, t) {
|
|
57
|
+
return o(l(a(e), a(t)));
|
|
58
|
+
}
|
|
59
|
+
mulPointEscalar(e, t) {
|
|
60
|
+
let n = i, r = a(e), s = BigInt(t);
|
|
61
|
+
for (; s !== 0n;) s % 2n == 1n && (n = l(n, r)), r = u(r), s /= 2n;
|
|
62
|
+
return o(n);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
//#endregion
|
|
66
|
+
export { d as BabyJubRN };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./poseidon.cjs`),t=require(`../functions/utils/bigint-math.utils.cjs`),n=require(`./babyJub.cjs`);let r=require(`@noble/hashes/blake1.js`);var i=21888242871839275222246405745257275088614511777268538073601725287587578984328n/8n,a=(e,t=0,n=e.length-t)=>{let r=0n;for(let i=n-1;i>=0;--i)r=(r<<8n)+BigInt(e[t+i]);return r},o=(e,n,r,i)=>{let a=t.mod(r);for(let t=0;t<i;t+=1)e[n+t]=Number(a&255n),a>>=8n},s=e=>t.mod(e,i),c=e=>{let t=new Uint8Array(e);return t[0]&=248,t[31]&=127,t[31]|=64,t},l=class{constructor(e,t){this.babyJub=e,this.poseidon=t}prv2pub(e){let t=a(c((0,r.blake512)(e).slice(0,32)),0,32);return this.babyJub.mulPointEscalar(this.babyJub.Base8,t/8n)}signPoseidon(e,n){let i=c((0,r.blake512)(e)),l=a(i,0,32),u=this.babyJub.mulPointEscalar(this.babyJub.Base8,l/8n),d=new Uint8Array(64);d.set(i.slice(32),0),o(d,32,n,32);let f=s(a((0,r.blake512)(d),0,64)),p=this.babyJub.mulPointEscalar(this.babyJub.Base8,f),m=this.poseidon([p[0],p[1],u[0],u[1],n]);return{R8:p,S:s(f+s(t.mod(BigInt(this.poseidon.F.toString(m)))*l))}}},u=async()=>(await e.poseidonHolder.init(),await n.jubHolder.init(),new l(n.jubHolder.getJub(),e.poseidonHolder.getPoseidon()));exports.buildEddsaRN=u;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { poseidonHolder as e } from "./poseidon.mjs";
|
|
2
|
+
import { mod as t } from "../functions/utils/bigint-math.utils.mjs";
|
|
3
|
+
import { jubHolder as n } from "./babyJub.mjs";
|
|
4
|
+
import { blake512 as r } from "@noble/hashes/blake1.js";
|
|
5
|
+
//#region libs/shared/common/src/crypto/EddsaRN.ts
|
|
6
|
+
var i = 21888242871839275222246405745257275088614511777268538073601725287587578984328n / 8n, a = (e, t = 0, n = e.length - t) => {
|
|
7
|
+
let r = 0n;
|
|
8
|
+
for (let i = n - 1; i >= 0; --i) r = (r << 8n) + BigInt(e[t + i]);
|
|
9
|
+
return r;
|
|
10
|
+
}, o = (e, n, r, i) => {
|
|
11
|
+
let a = t(r);
|
|
12
|
+
for (let t = 0; t < i; t += 1) e[n + t] = Number(a & 255n), a >>= 8n;
|
|
13
|
+
}, s = (e) => t(e, i), c = (e) => {
|
|
14
|
+
let t = new Uint8Array(e);
|
|
15
|
+
return t[0] &= 248, t[31] &= 127, t[31] |= 64, t;
|
|
16
|
+
}, l = class {
|
|
17
|
+
constructor(e, t) {
|
|
18
|
+
this.babyJub = e, this.poseidon = t;
|
|
19
|
+
}
|
|
20
|
+
prv2pub(e) {
|
|
21
|
+
let t = a(c(r(e).slice(0, 32)), 0, 32);
|
|
22
|
+
return this.babyJub.mulPointEscalar(this.babyJub.Base8, t / 8n);
|
|
23
|
+
}
|
|
24
|
+
signPoseidon(e, n) {
|
|
25
|
+
let i = c(r(e)), l = a(i, 0, 32), u = this.babyJub.mulPointEscalar(this.babyJub.Base8, l / 8n), d = new Uint8Array(64);
|
|
26
|
+
d.set(i.slice(32), 0), o(d, 32, n, 32);
|
|
27
|
+
let f = s(a(r(d), 0, 64)), p = this.babyJub.mulPointEscalar(this.babyJub.Base8, f), m = this.poseidon([
|
|
28
|
+
p[0],
|
|
29
|
+
p[1],
|
|
30
|
+
u[0],
|
|
31
|
+
u[1],
|
|
32
|
+
n
|
|
33
|
+
]);
|
|
34
|
+
return {
|
|
35
|
+
R8: p,
|
|
36
|
+
S: s(f + s(t(BigInt(this.poseidon.F.toString(m))) * l))
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}, u = async () => (await e.init(), await n.init(), new l(n.getJub(), e.getPoseidon()));
|
|
40
|
+
//#endregion
|
|
41
|
+
export { u as buildEddsaRN };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../constants/vite.constants.cjs`),t=require(`./
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants/vite.constants.cjs`),t=require(`./BabyJubRN.cjs`);let n=require(`circomlibjs-hinkal-fork`);var r=new class{babyjub=void 0;async init(){this.babyjub||=e.isReactNative?new t.BabyJubRN:await(0,n.buildBabyjub)()}getJub(){return this.babyjub}},i=()=>r.getJub();exports.babyJubInstance=i,exports.jubHolder=r;
|
|
@@ -1,20 +1,14 @@
|
|
|
1
1
|
import { isReactNative as e } from "../constants/vite.constants.mjs";
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import { BabyJubRN as t } from "./BabyJubRN.mjs";
|
|
3
|
+
import { buildBabyjub as n } from "circomlibjs-hinkal-fork";
|
|
4
|
+
var r = new class {
|
|
4
5
|
babyjub = void 0;
|
|
5
6
|
async init() {
|
|
6
|
-
|
|
7
|
-
if (e) {
|
|
8
|
-
await t().init();
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
let { buildBabyjub: n } = await import("circomlibjs-hinkal-fork");
|
|
12
|
-
this.babyjub = await n();
|
|
7
|
+
this.babyjub ||= e ? new t() : await n();
|
|
13
8
|
}
|
|
14
9
|
getJub() {
|
|
15
|
-
if (e) throw Error("babyJubInstance is unavailable on React Native main thread. Use WebView crypto bridge.");
|
|
16
10
|
return this.babyjub;
|
|
17
11
|
}
|
|
18
|
-
}(),
|
|
12
|
+
}(), i = () => r.getJub();
|
|
19
13
|
//#endregion
|
|
20
|
-
export {
|
|
14
|
+
export { i as babyJubInstance, r as jubHolder };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../constants/vite.constants.cjs`),t=require(`./
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants/vite.constants.cjs`),t=require(`./EddsaRN.cjs`);let n=require(`circomlibjs-hinkal-fork`);var r=new class{eddsa=void 0;async init(){this.eddsa||=e.isReactNative?await t.buildEddsaRN():await(0,n.buildEddsa)()}getEddsa(){return this.eddsa}},i=()=>r.getEddsa();exports.eddsaHolder=r,exports.eddsaInstance=i;
|
|
@@ -1,20 +1,14 @@
|
|
|
1
1
|
import { isReactNative as e } from "../constants/vite.constants.mjs";
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import { buildEddsaRN as t } from "./EddsaRN.mjs";
|
|
3
|
+
import { buildEddsa as n } from "circomlibjs-hinkal-fork";
|
|
4
|
+
var r = new class {
|
|
4
5
|
eddsa = void 0;
|
|
5
6
|
async init() {
|
|
6
|
-
|
|
7
|
-
if (e) {
|
|
8
|
-
await t().init();
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
let { buildEddsa: n } = await import("circomlibjs-hinkal-fork");
|
|
12
|
-
this.eddsa = await n();
|
|
7
|
+
this.eddsa ||= e ? await t() : await n();
|
|
13
8
|
}
|
|
14
9
|
getEddsa() {
|
|
15
|
-
if (e) throw Error("eddsaInstance is unavailable on React Native main thread. Use WebView crypto bridge.");
|
|
16
10
|
return this.eddsa;
|
|
17
11
|
}
|
|
18
|
-
}(),
|
|
12
|
+
}(), i = () => r.getEddsa();
|
|
19
13
|
//#endregion
|
|
20
|
-
export {
|
|
14
|
+
export { r as eddsaHolder, i as eddsaInstance };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../../_virtual/_rolldown/runtime.cjs`),t=require(`../constants/vite.constants.cjs`),n=require(`../functions/utils/amounts.utils.cjs`)
|
|
1
|
+
const e=require(`../../../_virtual/_rolldown/runtime.cjs`),t=require(`../constants/vite.constants.cjs`),n=require(`../functions/utils/amounts.utils.cjs`);let r=require(`ethers`),i=require(`poseidon-lite`);i=e.__toESM(i);let a=require(`circomlibjs-hinkal-fork`);var o=()=>{let e=e=>{let t=i[`poseidon${e.length}`];if(!t)throw Error(`Poseidon: arity ${e.length} not supported (1..16)`);return t(e.map(e=>BigInt(e)))};return e.F={toString:e=>BigInt(e).toString()},e},s=new class{poseidon=void 0;async init(){this.poseidon||=t.isReactNative?o():await(0,a.buildPoseidon)()}getPoseidon(){return this.poseidon}};function c(...e){let t=s.getPoseidon();return n.toBigInt(t.F.toString(t(e)))}var l=(...e)=>{let t=s.getPoseidon();return r.ethers.toBeHex(t.F.toString(t([...e])))};exports.poseidonFunction=c,exports.poseidonHash=l,exports.poseidonHolder=s;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { isReactNative as e } from "../constants/vite.constants.mjs";
|
|
2
2
|
import { toBigInt as t } from "../functions/utils/amounts.utils.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import
|
|
3
|
+
import { ethers as n } from "ethers";
|
|
4
|
+
import * as r from "poseidon-lite";
|
|
5
|
+
import { buildPoseidon as i } from "circomlibjs-hinkal-fork";
|
|
6
6
|
//#region libs/shared/common/src/crypto/poseidon.ts
|
|
7
7
|
var a = () => {
|
|
8
8
|
let e = (e) => {
|
|
9
|
-
let t =
|
|
9
|
+
let t = r[`poseidon${e.length}`];
|
|
10
10
|
if (!t) throw Error(`Poseidon: arity ${e.length} not supported (1..16)`);
|
|
11
11
|
return t(e.map((e) => BigInt(e)));
|
|
12
12
|
};
|
|
@@ -14,13 +14,7 @@ var a = () => {
|
|
|
14
14
|
}, o = new class {
|
|
15
15
|
poseidon = void 0;
|
|
16
16
|
async init() {
|
|
17
|
-
|
|
18
|
-
if (e) {
|
|
19
|
-
await n().init(), this.poseidon = a();
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
let { buildPoseidon: t } = await import("circomlibjs-hinkal-fork");
|
|
23
|
-
this.poseidon = await t();
|
|
17
|
+
this.poseidon ||= e ? a() : await i();
|
|
24
18
|
}
|
|
25
19
|
getPoseidon() {
|
|
26
20
|
return this.poseidon;
|
|
@@ -32,7 +26,7 @@ function s(...e) {
|
|
|
32
26
|
}
|
|
33
27
|
var c = (...e) => {
|
|
34
28
|
let t = o.getPoseidon();
|
|
35
|
-
return
|
|
29
|
+
return n.toBeHex(t.F.toString(t([...e])));
|
|
36
30
|
};
|
|
37
31
|
//#endregion
|
|
38
32
|
export { s as poseidonFunction, c as poseidonHash, o as poseidonHolder };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../../_virtual/_rolldown/runtime.cjs`),t=require(
|
|
1
|
+
const e=require(`../../../_virtual/_rolldown/runtime.cjs`),t=require(`./poseidon.cjs`),n=require(`./babyJub.cjs`),r=require(`./eddsa.cjs`);let i=require(`libsodium-wrappers`);i=e.__toESM(i);let a=require(`buffer`),o=require(`process`);o=e.__toESM(o);var s=async(e=!1)=>{(typeof window<`u`||typeof self<`u`)&&(typeof window<`u`&&(window.global=window),globalThis.Buffer=a.Buffer,globalThis.process=o.default),await Promise.all([i.default.ready,t.poseidonHolder.init(),n.jubHolder.init(),...e?[]:[r.eddsaHolder.init()]])};exports.preProcessing=s;
|
|
@@ -1,27 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import a from "
|
|
7
|
-
import { Buffer as o } from "buffer";
|
|
8
|
-
import s from "process";
|
|
1
|
+
import { poseidonHolder as e } from "./poseidon.mjs";
|
|
2
|
+
import { jubHolder as t } from "./babyJub.mjs";
|
|
3
|
+
import { eddsaHolder as n } from "./eddsa.mjs";
|
|
4
|
+
import r from "libsodium-wrappers";
|
|
5
|
+
import { Buffer as i } from "buffer";
|
|
6
|
+
import a from "process";
|
|
9
7
|
//#region libs/shared/common/src/crypto/preProcessing.ts
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
]);
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
await Promise.all([
|
|
20
|
-
a.ready,
|
|
21
|
-
n.init(),
|
|
22
|
-
r.init(),
|
|
23
|
-
...c ? [] : [i.init()]
|
|
8
|
+
var o = async (o = !1) => {
|
|
9
|
+
(typeof window < "u" || typeof self < "u") && (typeof window < "u" && (window.global = window), globalThis.Buffer = i, globalThis.process = a), await Promise.all([
|
|
10
|
+
r.ready,
|
|
11
|
+
e.init(),
|
|
12
|
+
t.init(),
|
|
13
|
+
...o ? [] : [n.init()]
|
|
24
14
|
]);
|
|
25
15
|
};
|
|
26
16
|
//#endregion
|
|
27
|
-
export {
|
|
17
|
+
export { o as preProcessing };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../../
|
|
1
|
+
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../../error-handling/customErrors/ErrorWithTx.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../types/transactions.types.cjs`),c=require(`../../types/admin.types.cjs`),l=require(`../../types/activities.types.cjs`),u=require(`../../types/transaction.types.cjs`),d=require(`../../types/offscreen.types.cjs`);require(`../../types/index.cjs`);const f=require(`../../error-handling/logger.cjs`),p=require(`../../API/API.cjs`),m=require(`../../functions/utils/erc20tokenFunctions.cjs`),h=require(`../../error-handling/get-error.message.cjs`);require(`../../error-handling/index.cjs`);const g=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),_=require(`../../functions/utils/create-provider.cjs`),v=require(`../../functions/pre-transaction/getFeeStructure.cjs`),y=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),b=require(`../../functions/utils/postToOffscreen.cjs`),x=require(`../../functions/utils/fees.utils.cjs`),S=require(`../../functions/private-wallet/emporium.helpers.cjs`),C=require(`../../functions/auto-deposit-back-helpers/get-tokens-to-deposit-back.cjs`),w=require(`../../functions/auto-deposit-back-helpers/get-gas-token-records.cjs`),T=require(`../../functions/auto-deposit-back-helpers/select-gas-token.cjs`),E=require(`../../functions/auto-deposit-back-helpers/update-hinkal.cjs`);require(`../../functions/index.cjs`);const D=require(`../IndexedDB/activity-db.cjs`);require(`../IndexedDB/index.cjs`);var O=3*1e3,k=13*1e3,A=async(A,j,M,ee,N,P,F,I)=>{if(!M||F.length===0)return;let L;try{let a=_.createJsonRpcProvider(j);await i.waitLittle(j===e.chainIds.ethMainnet?k:O);let u=await C.getTokensToDepositBack(F,N,M,a);if(!u.length){b.postToOffscreen(d.MessagesFromOffscreen.AutoShieldTxStatus,{message:n.transactionErrorCodes.AUTO_SHIELD_SKIPPED});return}let f=(await m.getErc20TokensBySymbolsFromAPI(await x.getGasTokenSymbols(j),j)).filter(e=>e!==void 0),{prices:h}=await p.API.getTokenPrices(j,f.map(e=>e.erc20TokenAddress)),R=new Map(h.map((e,t)=>[f[t].erc20TokenAddress.toLowerCase(),e])),z=u.map(({token:e})=>e),B=u.map(({balance:e})=>e),V=z.map(({erc20TokenAddress:e})=>e),H=S.createTransaferEmporiumOpsBatch(A,j,V,await g.modifyVolatileTokenAmountChanges(j,z,B,M)),U=await v.getFeeStructure(j,N,V,o.ExternalActionId.Emporium,H.map(e=>y.convertEmporiumOpToCallInfo(e,M,j))),{flatFee:W}=U??{},G=await m.getErc20TokenFromAPI(j,U.feeToken);if(!G)return;let K=r.getAmountInToken(G,W),q=(R.get(G.erc20TokenAddress.toLowerCase())??0)*Number(K),J=await T.selectGasToken(N,q,j,z,H,await w.getGasTokenRecords(f,j,A,M,a,R),U,V,M);if(!J)return;let{feeToken:Y,feeStructure:X}=J??{};if(P&&Number(P)<q){b.postToOffscreen(d.MessagesFromOffscreen.AutoShieldTxStatus,{message:n.gasErrorCodes.GAS_PRICE_EXCEEDS_AUTOSHIELD_LIMIT});return}let Z=z.findIndex(e=>t.caseInsensitiveEqual(e.erc20TokenAddress,Y));Z!==-1&&(B[Z]-=X?.flatFee??0n);let{hinkalAddress:Q}=e.networkRegistry[j].contractData,$={activityType:l.ActivityTypes.AUTO_SHIELD,chainId:j,from:M,to:Q,gasInDollar:q.toString(),tokensReceive:z.map((e,t)=>({amount:r.getAmountInToken(e,B[t]),token:e}))};L=await D.activityStorage.saveTxRequest($),b.postToOffscreen(d.MessagesFromOffscreen.AutoShieldTxStatus,{status:s.TransactionStatus.Loading}),E.updateHinkal(I,j,A);let te={id:0,success:!0,txHash:await A.actionReceive(z,B,Y,X,ee,c.AdminTransactionType.AutoShield)};await D.activityStorage.updatePendingTransactions(te,L),b.postToOffscreen(d.MessagesFromOffscreen.AutoShieldTxStatus,{status:s.TransactionStatus.Confirmed,activityRequest:$})}catch(e){let t;e instanceof a.ErrorWithRelayerTransaction&&(t=e.txHash);let n={error:e,id:0,success:!1,...t?{erroredTx:t}:{}};L&&await D.activityStorage.updatePendingTransactions(n,L),b.postToOffscreen(d.MessagesFromOffscreen.AutoShieldTxStatus,{status:s.TransactionStatus.Failed,error:h.getErrorMessageFromTransactionRequest(e,u.TransactionRequestType.ReceiveFromShieldedAccount)}),f.Logger.error(`Error in auto deposit back:`,e)}};exports.handleAutoDepositBack=A;
|
|
@@ -2,9 +2,9 @@ import { chainIds as e, networkRegistry as t } from "../../constants/chains.cons
|
|
|
2
2
|
import { caseInsensitiveEqual as n } from "../../functions/utils/caseInsensitive.utils.mjs";
|
|
3
3
|
import { gasErrorCodes as ee, transactionErrorCodes as r } from "../../error-handling/error-codes.constants.mjs";
|
|
4
4
|
import { getAmountInToken as i } from "../../functions/web3/etherFunctions.mjs";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
5
|
+
import { waitLittle as a } from "../../functions/utils/time.utils.mjs";
|
|
6
|
+
import { ErrorWithRelayerTransaction as o } from "../../error-handling/customErrors/ErrorWithTx.mjs";
|
|
7
|
+
import { ExternalActionId as s } from "../../types/external-action.types.mjs";
|
|
8
8
|
import { TransactionStatus as c } from "../../types/transactions.types.mjs";
|
|
9
9
|
import { AdminTransactionType as l } from "../../types/admin.types.mjs";
|
|
10
10
|
import { ActivityTypes as u } from "../../types/activities.types.mjs";
|
|
@@ -35,16 +35,16 @@ var te = 3 * 1e3, ne = 13 * 1e3, A = async (A, j, M, N, P, F, I, L) => {
|
|
|
35
35
|
if (!M || I.length === 0) return;
|
|
36
36
|
let R;
|
|
37
37
|
try {
|
|
38
|
-
let
|
|
39
|
-
await
|
|
40
|
-
let d = await T(I, P, M,
|
|
38
|
+
let o = y(j);
|
|
39
|
+
await a(j === e.ethMainnet ? ne : te);
|
|
40
|
+
let d = await T(I, P, M, o);
|
|
41
41
|
if (!d.length) {
|
|
42
42
|
S(f.AutoShieldTxStatus, { message: r.AUTO_SHIELD_SKIPPED });
|
|
43
43
|
return;
|
|
44
44
|
}
|
|
45
|
-
let p = (await g(await C(j), j)).filter((e) => e !== void 0), { prices: _ } = await m.getTokenPrices(j, p.map((e) => e.erc20TokenAddress)), z = new Map(_.map((e, t) => [p[t].erc20TokenAddress.toLowerCase(), e])), B = d.map(({ token: e }) => e), V = d.map(({ balance: e }) => e), H = B.map(({ erc20TokenAddress: e }) => e), U = w(A, j, H, await v(j, B, V, M)), W = await b(j, P, H,
|
|
45
|
+
let p = (await g(await C(j), j)).filter((e) => e !== void 0), { prices: _ } = await m.getTokenPrices(j, p.map((e) => e.erc20TokenAddress)), z = new Map(_.map((e, t) => [p[t].erc20TokenAddress.toLowerCase(), e])), B = d.map(({ token: e }) => e), V = d.map(({ balance: e }) => e), H = B.map(({ erc20TokenAddress: e }) => e), U = w(A, j, H, await v(j, B, V, M)), W = await b(j, P, H, s.Emporium, U.map((e) => x(e, M, j))), { flatFee: G } = W ?? {}, K = await h(j, W.feeToken);
|
|
46
46
|
if (!K) return;
|
|
47
|
-
let q = i(K, G), J = (z.get(K.erc20TokenAddress.toLowerCase()) ?? 0) * Number(q), Y = await D(P, J, j, B, U, await E(p, j, A, M,
|
|
47
|
+
let q = i(K, G), J = (z.get(K.erc20TokenAddress.toLowerCase()) ?? 0) * Number(q), Y = await D(P, J, j, B, U, await E(p, j, A, M, o, z), W, H, M);
|
|
48
48
|
if (!Y) return;
|
|
49
49
|
let { feeToken: X, feeStructure: Z } = Y ?? {};
|
|
50
50
|
if (F && Number(F) < J) {
|
|
@@ -76,7 +76,7 @@ var te = 3 * 1e3, ne = 13 * 1e3, A = async (A, j, M, N, P, F, I, L) => {
|
|
|
76
76
|
});
|
|
77
77
|
} catch (e) {
|
|
78
78
|
let t;
|
|
79
|
-
e instanceof
|
|
79
|
+
e instanceof o && (t = e.txHash);
|
|
80
80
|
let n = {
|
|
81
81
|
error: e,
|
|
82
82
|
id: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../crypto-keys/keys.cjs`),a=require(`../../
|
|
1
|
+
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../crypto-keys/keys.cjs`),a=require(`../../functions/utils/time.utils.cjs`),o=require(`../utxo/Utxo.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../functions/utils/tron.utils.cjs`),l=require(`../../functions/utils/token-check.utils.cjs`),u=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),d=require(`../../functions/pre-transaction/getFeeStructure.cjs`),f=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),p=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`);var m=async(m,h,g,_,v)=>{let y=l.validateAndGetChainId([h]),b=e.isTronLike(y),x=h.erc20TokenAddress,S=c.addressToHexFormat(await m.getEthereumAddressByChain(y));if(!n.caseInsensitiveEqual(x,g.erc20TokenAddress))throw Error(`Off-chain UTXO token mismatch`);let C=v?new i.UserKeys(v):new i.UserKeys(g.nullifyingKey,g.nullifyingKey);if(!g.nullifyingKey&&!v)throw Error(`Claimable UTXO nullifyingKey is missing`);let w=C.getShieldedPrivateKey();if(g.nullifyingKey&&g.nullifyingKey!==w)throw Error(`Claimable UTXO key mismatch`);let T=m.getRecipientInfo(),E=o.Utxo.createFrom(g,{nullifyingKey:w}),D=new o.Utxo({amount:0n,erc20TokenAddress:E.erc20TokenAddress,mintAddress:E.mintAddress,nullifyingKey:w,...E.isNewStyle?{spendingPublicKey:C.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),O=_??await d.getFeeStructure(y,x,[x],s.ExternalActionId.Transact);if(!n.caseInsensitiveEqual(O.feeToken,x))throw Error(`Claim fee token mismatch: fee must be paid from claimed UTXO token`);let k=O.variableRate>0n?O.variableRate:t.HINKAL_PRIVATE_SEND_VARIABLE_RATE;if(E.amount<=O.flatFee)throw Error(r.transactionErrorCodes.INSUFFICIENT_FUNDS_TO_TRANSACT);let A=E.amount-O.flatFee,j=A*k/10000n,M=A-j;if(M<=0n)throw Error(r.transactionErrorCodes.RECIPIENT_AMOUNT_INVALID);let N={feeToken:O.feeToken,flatFee:O.flatFee+j,variableRate:0n},P=[-E.amount],F=await m.getRandomRelay(y,!0);if(!F)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let I={externalActionId:0n,externalAddress:F??S,externalActionMetadata:`0x00`},L=[[E,D]],R=[],z=a.getCurrentTimeInSeconds().toString(),{outputUtxos:B}=u.outputUtxoProcessing(C,L[0],P[0],z,!0,T,M);R.push(B);let{zkCallData:V,circomData:H,dimData:U,commitmentValidationData:W}=await f.constructZkProof(m.merkleTreeHinkalByChain[y],L,R,C,I.externalActionId,I.externalAddress,I.externalActionMetadata,m.generateProofRemotely,N,F,y);return p.transactCallRelayer(y,V,U,H,W,void 0,void 0,void 0,await c.reorderZkCallData(b,V,U,H))};exports.hinkalClaimUtxo=m;
|
|
@@ -3,9 +3,9 @@ import { HINKAL_PRIVATE_SEND_VARIABLE_RATE as t } from "../../constants/protocol
|
|
|
3
3
|
import { caseInsensitiveEqual as n } from "../../functions/utils/caseInsensitive.utils.mjs";
|
|
4
4
|
import { transactionErrorCodes as r } from "../../error-handling/error-codes.constants.mjs";
|
|
5
5
|
import { UserKeys as i } from "../crypto-keys/keys.mjs";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
6
|
+
import { getCurrentTimeInSeconds as a } from "../../functions/utils/time.utils.mjs";
|
|
7
|
+
import { Utxo as o } from "../utxo/Utxo.mjs";
|
|
8
|
+
import { ExternalActionId as s } from "../../types/external-action.types.mjs";
|
|
9
9
|
import { addressToHexFormat as c, reorderZkCallData as l } from "../../functions/utils/tron.utils.mjs";
|
|
10
10
|
import { validateAndGetChainId as u } from "../../functions/utils/token-check.utils.mjs";
|
|
11
11
|
import { outputUtxoProcessing as d } from "../../functions/pre-transaction/outputUtxoProcessing.mjs";
|
|
@@ -20,7 +20,7 @@ var h = async (h, g, _, v, y) => {
|
|
|
20
20
|
if (!_.nullifyingKey && !y) throw Error("Claimable UTXO nullifyingKey is missing");
|
|
21
21
|
let T = w.getShieldedPrivateKey();
|
|
22
22
|
if (_.nullifyingKey && _.nullifyingKey !== T) throw Error("Claimable UTXO key mismatch");
|
|
23
|
-
let E = h.getRecipientInfo(), D =
|
|
23
|
+
let E = h.getRecipientInfo(), D = o.createFrom(_, { nullifyingKey: T }), O = new o({
|
|
24
24
|
amount: 0n,
|
|
25
25
|
erc20TokenAddress: D.erc20TokenAddress,
|
|
26
26
|
mintAddress: D.mintAddress,
|
|
@@ -29,7 +29,7 @@ var h = async (h, g, _, v, y) => {
|
|
|
29
29
|
spendingPublicKey: w.getSpendingKeyPair().pubSpendingBJJPoint,
|
|
30
30
|
isNewStyle: !0
|
|
31
31
|
} : { isNewStyle: !1 }
|
|
32
|
-
}), k = v ?? await f(b, S, [S],
|
|
32
|
+
}), k = v ?? await f(b, S, [S], s.Transact);
|
|
33
33
|
if (!n(k.feeToken, S)) throw Error("Claim fee token mismatch: fee must be paid from claimed UTXO token");
|
|
34
34
|
let A = k.variableRate > 0n ? k.variableRate : t;
|
|
35
35
|
if (D.amount <= k.flatFee) throw Error(r.INSUFFICIENT_FUNDS_TO_TRANSACT);
|
|
@@ -45,7 +45,7 @@ var h = async (h, g, _, v, y) => {
|
|
|
45
45
|
externalActionId: 0n,
|
|
46
46
|
externalAddress: I ?? C,
|
|
47
47
|
externalActionMetadata: "0x00"
|
|
48
|
-
}, R = [[D, O]], z = [], B =
|
|
48
|
+
}, R = [[D, O]], z = [], B = a().toString(), { outputUtxos: V } = d(w, R[0], F[0], B, !0, E, N);
|
|
49
49
|
z.push(V);
|
|
50
50
|
let { zkCallData: H, circomData: U, dimData: W, commitmentValidationData: G } = await p(h.merkleTreeHinkalByChain[b], R, z, w, L.externalActionId, L.externalAddress, L.externalActionMetadata, h.generateProofRemotely, P, I, b);
|
|
51
51
|
return m(b, H, W, U, G, void 0, void 0, void 0, await l(x, H, W, U));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../utxo/Utxo.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../functions/utils/tron.utils.cjs`),c=require(`../../functions/utils/token-check.utils.cjs`),l=require(`../../functions/web3/events/getShieldedBalance.cjs`),u=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/utils/tronSimulation.utils.cjs`),p=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),m=require(`../../functions/web3/functionCalls/waitForErc20Approvals.cjs`),h=require(`../../functions/web3/functionCalls/transactCallDirect.cjs`),g=require(`../../API/admin-calls.cjs`);var _=async(e,t)=>({externalActionData:{externalActionId:0n,externalAddress:s.addressToHexFormat(await e.getEthereumAddressByChain(t)),externalActionMetadata:`0x00`},contractTransaction:void 0,contractToApprove:void 0}),v=async(e,t,n,r)=>{let a=[...await l.addPaddingToUtxos(e,t,n,r)],o=[],s=i.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=
|
|
1
|
+
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../utxo/Utxo.cjs`),o=require(`../../functions/utils/addresses.cjs`),s=require(`../../functions/utils/tron.utils.cjs`),c=require(`../../functions/utils/token-check.utils.cjs`),l=require(`../../functions/web3/events/getShieldedBalance.cjs`),u=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/utils/tronSimulation.utils.cjs`),p=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),m=require(`../../functions/web3/functionCalls/waitForErc20Approvals.cjs`),h=require(`../../functions/web3/functionCalls/transactCallDirect.cjs`),g=require(`../../API/admin-calls.cjs`);var _=async(e,t)=>({externalActionData:{externalActionId:0n,externalAddress:s.addressToHexFormat(await e.getEthereumAddressByChain(t)),externalActionMetadata:`0x00`},contractTransaction:void 0,contractToApprove:void 0}),v=async(e,t,n,r)=>{let a=[...await l.addPaddingToUtxos(e,t,n,r)],o=[],s=i.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=u.outputUtxoProcessing(e.userKeys,a[t],r[t],s);o.push(n)}return{inputUtxosArray:a,outputUtxosArray:o}},y=async(n,r,i,a,o,c,l,u=!0,d=!1)=>{let p=n.getTronWeb(),{hinkalAddress:h,hinkalABI:g}=e.networkRegistry[r].contractData;if(!g)throw Error(`Hinkal ABI not found`);let _=s.evmHexToTronBase58Address(h),v=await n.getEthereumAddressByChain(r),{totalTrxValue:y,tokensNeedingApproval:b}=s.splitTronTokensByNative(i,a),{a:x,b:S,c:C}=s.parseZkCalldata(o),w=await s.reorderZkCallData(!0,o,l,c,!1);if(!w)throw Error(`Tron proof signature not found`);let T=[w.v,w.r,w.s],E=[l.tokenNumber,l.nullifierAmount,l.outputAmount],D=s.circomDataToArray(c),O=y>0n?Number(y):0;if(d){let e=s.createTronCallData(g,`transact`,[T,x,S,C,E,D]),{transaction:n}=await p.transactionBuilder.triggerSmartContract(_,``,{feeLimit:t.TRON_DEFAULT_FEE_LIMIT_SUN,callValue:O,input:e},[],v);return n}await s.approveTronTokens(p,v,_,b),b.size>0&&await m.waitForTronErc20Approvals(p,v,_,Array.from(b.entries()).map(([e,t])=>({tokenAddress:e,requiredAmount:t}))),u&&(await f.simulateTronTransaction(r,_,`transact`,g,[T,x,S,C,E,D],v,y>0n?y:void 0),await s.assertTronSufficientBalance(p,r,_,v,s.createTronCallData(g,`transact`,[T,x,S,C,E,D]),y));let k=await p.contract(g,_).transact(T,x,S,C,E,D).send({feeLimit:t.TRON_DEFAULT_FEE_LIMIT_SUN,callValue:O}),A=typeof k==`string`?k:k?.txid??k?.transaction?.txID;if(!A)throw Error(`Tron deposit failed (missing txid)`);return A},b=async(r,i,a,o=!0,s=!1)=>{let l=c.validateAndGetChainId(i),u=e.isTronLike(l),d=i.map(e=>e.erc20TokenAddress),[{externalActionData:f,contractTransaction:m,contractToApprove:g},{inputUtxosArray:b,outputUtxosArray:x}]=await Promise.all([_(r,l),v(r,l,d,a)]),{zkCallData:S,circomData:C,dimData:w}=await p.constructZkProof(r.merkleTreeHinkalByChain[l],b,x,r.userKeys,f.externalActionId,f.externalAddress,f.externalActionMetadata,r.generateProofRemotely,n.zeroFeeStructure,t.zeroAddress,l);return u?await y(r,l,i,a,S,C,w,o,s):await h.transactCallDirect(r,l,a,i,S,C,w,g,m,o,s)},x=async(i,s,l,u,f=!0,m=!1,v)=>{let b=c.validateAndGetChainId(s),x=e.isTronLike(b),S=s.map(e=>e.erc20TokenAddress),[C,w,T,,E]=u.split(`,`);if(!o.isValidPrivateAddress(u))throw Error(r.transactionErrorCodes.RECIPIENT_FORMAT_INCORRECT);let D=S.map(e=>[new a.Utxo({amount:0n,erc20TokenAddress:e,nullifyingKey:i.userKeys.getShieldedPrivateKey(),spendingPublicKey:i.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}),new a.Utxo({amount:0n,erc20TokenAddress:e,nullifyingKey:i.userKeys.getShieldedPrivateKey(),spendingPublicKey:i.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0})]),O=S.map((e,t)=>[new a.Utxo({amount:l[t],erc20TokenAddress:e,H0:[BigInt(w),BigInt(T)],stealthAddress:C,encryptionKey:E,isNewStyle:!0})]),{externalActionData:k,contractTransaction:A,contractToApprove:j}=await _(i,b),{zkCallData:M,circomData:N,dimData:P}=await p.constructZkProof(i.merkleTreeHinkalByChain[b],D,O,i.userKeys,k.externalActionId,k.externalAddress,k.externalActionMetadata,i.generateProofRemotely,n.zeroFeeStructure,t.zeroAddress,b);if(x)return await y(i,b,s,l,M,N,P,f,m);let F=await h.transactCallDirect(i,b,l,s,M,N,P,j,A,f,m);return g.emitTxPublicData(d.constructAdminData(v,b,S,l,await i.getEthereumAddress())),F};exports.hinkalDeposit=b,exports.hinkalDepositForOther=x;
|
|
@@ -27,7 +27,7 @@ var D = async (e, t) => ({
|
|
|
27
27
|
}), O = async (e, t, n, r) => {
|
|
28
28
|
let i = [...await y(e, t, n, r)], a = [], s = o().toString();
|
|
29
29
|
for (let t = 0; t < n.length; t += 1) {
|
|
30
|
-
let { outputUtxos: n } =
|
|
30
|
+
let { outputUtxos: n } = b(e.userKeys, i[t], r[t], s);
|
|
31
31
|
a.push(n);
|
|
32
32
|
}
|
|
33
33
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../
|
|
1
|
+
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../utxo/Utxo.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../types/scheduled-transactions.types.cjs`);require(`../../types/index.cjs`);const c=require(`../../functions/utils/addresses.cjs`),l=require(`../../API/API.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/utils/erc20tokenFunctions.cjs`),f=require(`../../functions/pre-transaction/constructAdminData.cjs`),p=require(`../../functions/pre-transaction/getFeeStructure.cjs`),m=require(`../../functions/pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),h=require(`../../constants/addresses.constants.cjs`),g=require(`../../functions/utils/convertEmporiumOpToCallInfo.cjs`),_=require(`../../functions/utils/fees.utils.cjs`);require(`../../functions/utils/index.cjs`);const v=require(`../../functions/private-wallet/emporium.helpers.cjs`),y=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),b=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),x=require(`../../API/deposit-and-withdraw-status-calls.cjs`),S=require(`./hinkalDepositOnChainUtxos.cjs`);require(`../../functions/index.cjs`);var C=async(c,u,d,p,m,g,S,C,w,T,E)=>{if(p.length===0)throw Error(`No recipients to bridge`);let D=d.erc20TokenAddress,{contractData:O}=e.networkRegistry[u],{emporiumAddress:k}=O;if(!k)throw Error(`No Emporium Address`);let A=h.SWAP_ROUTER_ADDRESSES[o.ExternalActionId.Lifi][u];if(!A)throw Error(`LIFI not configured for chain ${u}`);let j=await c.getRandomRelay(u);if(!j)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let M=await c.getEthereumAddressByChain(u),N=i.getCurrentTimeInSeconds().toString(),P=c.generateProofRemotely?5:1,F=[];for(let e=0;e<p.length;e+=P){let r=p.slice(e,e+P),i=await Promise.all(r.map(async({utxo:e,nativeUtxo:r,bridgeAmount:i,quote:s,temporarySubAccount:p,recipientAddress:h})=>{await l.API.addTemporaryWalletNonce(u,g,p.index);let b=s.nativeFee>0n&&!n.caseInsensitiveEqual(D,t.zeroAddress),x=[D],S=[-e.amount],C=[!1],w=new a.Utxo({amount:0n,erc20TokenAddress:D,nullifyingKey:c.userKeys.getShieldedPrivateKey(),timeStamp:N,...e.isNewStyle?{spendingPublicKey:c.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),E=[[e,w]],O=[[w]];if(b&&r){let e=new a.Utxo({amount:0n,erc20TokenAddress:t.zeroAddress,nullifyingKey:c.userKeys.getShieldedPrivateKey(),timeStamp:N,...r.isNewStyle?{spendingPublicKey:c.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}});x.push(t.zeroAddress),S.push(-r.amount),C.push(!1),E.push([r,e]),O.push([e])}let P=v.createLifiBridgeOps(c,u,p.ethAddress,A,D,e.amount,i,s),F=await _.calculateModifiedFeeStructure(u,d,i,m),I=f.constructAdminData(T,u,x,[-e.amount],M),[{zkCallData:L,circomData:R,dimData:z,commitmentValidationData:B},V]=await Promise.all([y.constructZkProof(c.merkleTreeHinkalByChain[u],E,O,c.userKeys,o.ExternalActionId.Emporium,k,P,c.generateProofRemotely,F,j??t.zeroAddress,u,C,void 0,void 0,p.privateKey),v.getAuthorizationDataIfNeeded(u,p.privateKey)]);return{zkCallData:L,dimData:z,circomData:R,commitmentValidationData:B,authorizationData:V,recipientAddress:h,adminData:I}}));F.push(...i)}await x.safeUpdateDepositAndWithdrawStatus({id:S,chainId:u,hashedEthereumAddress:g,phase:s.DepositAndWithdrawPhase.BEFORE_SCHEDULE_WITHDRAW});let I=await b.transactCallRelayerBatch(u,F,g,C,w,E);return await x.safeUpdateDepositAndWithdrawStatus({id:S,chainId:u,hashedEthereumAddress:g,phase:s.DepositAndWithdrawPhase.AFTER_SCHEDULE_WITHDRAW,scheduleId:I}),I},w=async(e,r,i,a,s,l,f,_,y=!0)=>{let b=r.erc20TokenAddress,x=u.validateAndGetChainId([r]),w=_?c.hashString(_):void 0,T=c.hashEthereumAddress(await e.getEthereumAddressByChain(x)),E=h.SWAP_ROUTER_ADDRESSES[o.ExternalActionId.Lifi][x];if(!E)throw Error(`LIFI router not configured`);let D;if(s)D=s;else{let n=i[0],r=v.createLifiBridgeOps(e,x,n.temporarySubAccount.ethAddress,E,b,n.bridgeAmount,n.bridgeAmount,n.quote).map(e=>g.convertEmporiumOpToCallInfo(e,n.temporarySubAccount.ethAddress,x));D=await p.getFeeStructure(x,b,[b],o.ExternalActionId.Emporium,r,t.PAY_SEND_VARIABLE_RATE)}let O={feeToken:D.feeToken,flatFee:0n,variableRate:0n},k=i.reduce((e,t)=>e+t.quote.nativeFee,0n)>0n&&!n.caseInsensitiveEqual(b,t.zeroAddress),A=i.map(e=>e.bridgeAmount),j=i.map(e=>e.recipientAddress),{userDepositedUtxos:M,statusId:N,depositTxHash:P}=await S.hinkalDepositOnChainUtxos(e,x,r,A,j,D,T,y),F=[];if(k){let n=await d.getErc20TokenFromAPI(x,t.zeroAddress);if(!n)throw Error(`No native token`);let{userDepositedUtxos:r}=await S.hinkalDepositOnChainUtxos(e,x,n,i.map(e=>e.quote.nativeFee),j,O,T,y);F=r}return await m.waitForDepositedUtxosInMerkleTree(e,x,[...M,...F]),{depositTxHash:P,scheduleId:await C(e,x,r,i.map((e,t)=>({...e,utxo:M[t].utxo,nativeUtxo:k?F[t]?.utxo:void 0})),D,T,N,a,l,f,w)}};exports.hinkalDepositAndBridge=w;
|
|
@@ -2,9 +2,9 @@ import { networkRegistry as e } from "../../constants/chains.constants.mjs";
|
|
|
2
2
|
import { PAY_SEND_VARIABLE_RATE as t, zeroAddress as n } from "../../constants/protocol.constants.mjs";
|
|
3
3
|
import { caseInsensitiveEqual as r } from "../../functions/utils/caseInsensitive.utils.mjs";
|
|
4
4
|
import { transactionErrorCodes as i } from "../../error-handling/error-codes.constants.mjs";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
5
|
+
import { getCurrentTimeInSeconds as a } from "../../functions/utils/time.utils.mjs";
|
|
6
|
+
import { Utxo as o } from "../utxo/Utxo.mjs";
|
|
7
|
+
import { ExternalActionId as s } from "../../types/external-action.types.mjs";
|
|
8
8
|
import { DepositAndWithdrawPhase as c } from "../../types/scheduled-transactions.types.mjs";
|
|
9
9
|
import "../../types/index.mjs";
|
|
10
10
|
import { hashEthereumAddress as l, hashString as u } from "../../functions/utils/addresses.mjs";
|
|
@@ -29,15 +29,15 @@ var E = async (t, l, u, f, p, h, g, v, T, E, D) => {
|
|
|
29
29
|
if (f.length === 0) throw Error("No recipients to bridge");
|
|
30
30
|
let O = u.erc20TokenAddress, { contractData: k } = e[l], { emporiumAddress: A } = k;
|
|
31
31
|
if (!A) throw Error("No Emporium Address");
|
|
32
|
-
let j = _[
|
|
32
|
+
let j = _[s.Lifi][l];
|
|
33
33
|
if (!j) throw Error(`LIFI not configured for chain ${l}`);
|
|
34
34
|
let M = await t.getRandomRelay(l);
|
|
35
35
|
if (!M) throw Error(i.RELAYER_NOT_AVAILABLE);
|
|
36
|
-
let N = await t.getEthereumAddressByChain(l), P =
|
|
36
|
+
let N = await t.getEthereumAddressByChain(l), P = a().toString(), F = t.generateProofRemotely ? 5 : 1, I = [];
|
|
37
37
|
for (let e = 0; e < f.length; e += F) {
|
|
38
|
-
let i = f.slice(e, e + F),
|
|
38
|
+
let i = f.slice(e, e + F), a = await Promise.all(i.map(async ({ utxo: e, nativeUtxo: i, bridgeAmount: a, quote: c, temporarySubAccount: f, recipientAddress: g }) => {
|
|
39
39
|
await d.addTemporaryWalletNonce(l, h, f.index);
|
|
40
|
-
let _ = c.nativeFee > 0n && !r(O, n), v = [O], C = [-e.amount], w = [!1], T = new
|
|
40
|
+
let _ = c.nativeFee > 0n && !r(O, n), v = [O], C = [-e.amount], w = [!1], T = new o({
|
|
41
41
|
amount: 0n,
|
|
42
42
|
erc20TokenAddress: O,
|
|
43
43
|
nullifyingKey: t.userKeys.getShieldedPrivateKey(),
|
|
@@ -48,7 +48,7 @@ var E = async (t, l, u, f, p, h, g, v, T, E, D) => {
|
|
|
48
48
|
} : { isNewStyle: !1 }
|
|
49
49
|
}), D = [[e, T]], k = [[T]];
|
|
50
50
|
if (_ && i) {
|
|
51
|
-
let e = new
|
|
51
|
+
let e = new o({
|
|
52
52
|
amount: 0n,
|
|
53
53
|
erc20TokenAddress: n,
|
|
54
54
|
nullifyingKey: t.userKeys.getShieldedPrivateKey(),
|
|
@@ -60,7 +60,7 @@ var E = async (t, l, u, f, p, h, g, v, T, E, D) => {
|
|
|
60
60
|
});
|
|
61
61
|
v.push(n), C.push(-i.amount), w.push(!1), D.push([i, e]), k.push([e]);
|
|
62
62
|
}
|
|
63
|
-
let F = b(t, l, f.ethAddress, j, O, e.amount,
|
|
63
|
+
let F = b(t, l, f.ethAddress, j, O, e.amount, a, c), I = await y(l, u, a, p), L = m(E, l, v, [-e.amount], N), [{ zkCallData: R, circomData: z, dimData: B, commitmentValidationData: V }, H] = await Promise.all([S(t.merkleTreeHinkalByChain[l], D, k, t.userKeys, s.Emporium, A, F, t.generateProofRemotely, I, M ?? n, l, w, void 0, void 0, f.privateKey), x(l, f.privateKey)]);
|
|
64
64
|
return {
|
|
65
65
|
zkCallData: R,
|
|
66
66
|
dimData: B,
|
|
@@ -71,7 +71,7 @@ var E = async (t, l, u, f, p, h, g, v, T, E, D) => {
|
|
|
71
71
|
adminData: L
|
|
72
72
|
};
|
|
73
73
|
}));
|
|
74
|
-
I.push(...
|
|
74
|
+
I.push(...a);
|
|
75
75
|
}
|
|
76
76
|
await w({
|
|
77
77
|
id: g,
|
|
@@ -87,33 +87,33 @@ var E = async (t, l, u, f, p, h, g, v, T, E, D) => {
|
|
|
87
87
|
phase: c.AFTER_SCHEDULE_WITHDRAW,
|
|
88
88
|
scheduleId: L
|
|
89
89
|
}), L;
|
|
90
|
-
}, D = async (e, i,
|
|
91
|
-
let S = i.erc20TokenAddress, C = f([i]), w = y ? u(y) : void 0, D = l(await e.getEthereumAddressByChain(C)), O = _[
|
|
90
|
+
}, D = async (e, i, a, o, c, d, m, y, x = !0) => {
|
|
91
|
+
let S = i.erc20TokenAddress, C = f([i]), w = y ? u(y) : void 0, D = l(await e.getEthereumAddressByChain(C)), O = _[s.Lifi][C];
|
|
92
92
|
if (!O) throw Error("LIFI router not configured");
|
|
93
93
|
let k;
|
|
94
94
|
if (c) k = c;
|
|
95
95
|
else {
|
|
96
|
-
let n =
|
|
97
|
-
k = await h(C, S, [S],
|
|
96
|
+
let n = a[0], r = b(e, C, n.temporarySubAccount.ethAddress, O, S, n.bridgeAmount, n.bridgeAmount, n.quote).map((e) => v(e, n.temporarySubAccount.ethAddress, C));
|
|
97
|
+
k = await h(C, S, [S], s.Emporium, r, t);
|
|
98
98
|
}
|
|
99
99
|
let A = {
|
|
100
100
|
feeToken: k.feeToken,
|
|
101
101
|
flatFee: 0n,
|
|
102
102
|
variableRate: 0n
|
|
103
|
-
}, j =
|
|
103
|
+
}, j = a.reduce((e, t) => e + t.quote.nativeFee, 0n) > 0n && !r(S, n), M = a.map((e) => e.bridgeAmount), N = a.map((e) => e.recipientAddress), { userDepositedUtxos: P, statusId: F, depositTxHash: I } = await T(e, C, i, M, N, k, D, x), L = [];
|
|
104
104
|
if (j) {
|
|
105
105
|
let t = await p(C, n);
|
|
106
106
|
if (!t) throw Error("No native token");
|
|
107
|
-
let { userDepositedUtxos: r } = await T(e, C, t,
|
|
107
|
+
let { userDepositedUtxos: r } = await T(e, C, t, a.map((e) => e.quote.nativeFee), N, A, D, x);
|
|
108
108
|
L = r;
|
|
109
109
|
}
|
|
110
110
|
return await g(e, C, [...P, ...L]), {
|
|
111
111
|
depositTxHash: I,
|
|
112
|
-
scheduleId: await E(e, C, i,
|
|
112
|
+
scheduleId: await E(e, C, i, a.map((e, t) => ({
|
|
113
113
|
...e,
|
|
114
114
|
utxo: P[t].utxo,
|
|
115
115
|
nativeUtxo: j ? L[t]?.utxo : void 0
|
|
116
|
-
})), k, D, F,
|
|
116
|
+
})), k, D, F, o, d, m, w)
|
|
117
117
|
};
|
|
118
118
|
};
|
|
119
119
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../
|
|
1
|
+
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../functions/utils/caseInsensitive.utils.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../utxo/Utxo.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../types/scheduled-transactions.types.cjs`);require(`../../types/index.cjs`);const c=require(`../../functions/utils/addresses.cjs`),l=require(`../../functions/utils/tron.utils.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`),p=require(`../../functions/pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),m=require(`../../functions/utils/fees.utils.cjs`),h=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),g=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),_=require(`../../API/deposit-and-withdraw-status-calls.cjs`),v=require(`./hinkalDepositOnChainUtxos.cjs`);require(`../../functions/index.cjs`);var y=async(o,c,u,f,p,v,y,b,x,S,C,w)=>{let T=e.isTronLike(c);if(f.length===0)throw Error(`userDepositedUtxos must not be empty`);let E=u.erc20TokenAddress,[D,O]=await Promise.all([o.getRandomRelay(c),o.getEthereumAddressByChain(c)]);if(!D)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let k=i.getCurrentTimeInSeconds().toString(),A=o.generateProofRemotely&&!T?5:1,j=[],M=l.addressToHexFormat(O);for(let e=0;e<f.length;e+=A){let r=f.slice(e,e+A),i=await Promise.all(r.map(async({recipientAddress:r,utxo:i},s)=>{let f=e+s,g=l.addressToHexFormat(r),_=new a.Utxo({amount:0n,erc20TokenAddress:E,nullifyingKey:o.userKeys.getShieldedPrivateKey(),timeStamp:k,...i.isNewStyle?{spendingPublicKey:o.userKeys.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0}:{isNewStyle:!1}}),y=[[n.caseInsensitiveEqual(i.erc20TokenAddress,E)?i:a.Utxo.createFrom(i,{erc20TokenAddress:E}),_]],b=[[_]],x={externalActionId:0n,externalAddress:g,externalActionMetadata:`0x00`},S=d.constructAdminData(C,c,[E],[-i.amount],M),w=await m.calculateModifiedFeeStructure(c,u,p[f],v),{zkCallData:O,circomData:A,dimData:j,commitmentValidationData:N}=await h.constructZkProof(o.merkleTreeHinkalByChain[c],y,b,o.userKeys,x.externalActionId,x.externalAddress,x.externalActionMetadata,o.generateProofRemotely,w,D??t.zeroAddress,c);return{zkCallData:O,dimData:j,circomData:A,commitmentValidationData:N,adminData:S,recipientAddress:r,tronProofSignature:await l.reorderZkCallData(T,O,j,A)}}));j.push(...i)}await _.safeUpdateDepositAndWithdrawStatus({id:b,chainId:c,hashedEthereumAddress:y,phase:s.DepositAndWithdrawPhase.BEFORE_SCHEDULE_WITHDRAW});let N=await g.transactCallRelayerBatch(c,j,y,x,S,w);return await _.safeUpdateDepositAndWithdrawStatus({id:b,chainId:c,hashedEthereumAddress:y,phase:s.DepositAndWithdrawPhase.AFTER_SCHEDULE_WITHDRAW,scheduleId:N}),N},b=async(e,t,n,r,i,a,s,d,m,h=!0)=>{let g=u.validateAndGetChainId([t]),_=m?c.hashString(m):void 0,b=t.erc20TokenAddress,x=c.hashEthereumAddress(l.addressToHexFormat(await e.getEthereumAddressByChain(g))),S=a??await f.getFeeStructure(g,b,[b],o.ExternalActionId.Transact,[],10n),{userDepositedUtxos:C,statusId:w,depositTxHash:T}=await v.hinkalDepositOnChainUtxos(e,g,t,n,r,S,x,h);return await p.waitForDepositedUtxosInMerkleTree(e,g,C),{depositTxHash:T,scheduleId:await y(e,g,t,C,n,S,x,w,i,s,d,_)}};exports.hinkalDepositAndWithdraw=b;
|