@gurge/sdk 0.3.26 → 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/hinkalClaimUtxo.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalClaimUtxo.mjs +1 -1
- 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/hinkalPrivateWallet.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalPrivateWallet.mjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaSwap.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaSwap.mjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.mjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.mjs +1 -1
- 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 +1 -1
- 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 +32 -43
- package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.mjs +2 -2
- 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/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 +1 -0
- 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/snarkjs/constructGeneralZkProof.cjs +1 -1
- package/common/src/functions/snarkjs/constructGeneralZkProof.mjs +43 -49
- 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/index.cjs +1 -1
- package/common/src/functions/utils/index.mjs +1 -1
- package/common/src/functions/web3/events/getInputUtxoAndBalance.cjs +1 -1
- package/common/src/functions/web3/events/getInputUtxoAndBalance.mjs +44 -94
- package/common/src/functions/web3/events/getShieldedBalance.cjs +1 -1
- package/common/src/functions/web3/events/getShieldedBalance.mjs +64 -64
- 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 -14
- package/common/src/crypto/rnUtxoCrypto.mjs +0 -40
- 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 -49
- 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-DFS-H2t0.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
|
@@ -3,28 +3,27 @@ import { isSolanaLike as t } from "../../../constants/chains.constants.mjs";
|
|
|
3
3
|
import { caseInsensitiveEqual as n } from "../../utils/caseInsensitive.utils.mjs";
|
|
4
4
|
import { DIRECTLY_SHOW_MESSAGE_ERROR_CODES as r } from "../../../error-handling/error-codes.constants.mjs";
|
|
5
5
|
import { getAmountWithPrecision as i } from "../etherFunctions.mjs";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { ErrorWithAmount as s } from "../../../error-handling/customErrors/ErrorWithAmount.mjs";
|
|
6
|
+
import { Utxo as a } from "../../../data-structures/utxo/Utxo.mjs";
|
|
7
|
+
import { ErrorWithAmount as o } from "../../../error-handling/customErrors/ErrorWithAmount.mjs";
|
|
9
8
|
import "../../../error-handling/customErrors/index.mjs";
|
|
10
|
-
import { encodeTokenWithId as
|
|
11
|
-
import { formatMintAddress as
|
|
12
|
-
import { getInputUtxoAndBalance as
|
|
13
|
-
import { privateTokensDB as
|
|
14
|
-
import { getOrCreateMapValue as
|
|
15
|
-
import { getChainBalanceFetchingMutex as
|
|
16
|
-
import { getErc20TokenFromAPI as
|
|
17
|
-
import { Mutex as
|
|
9
|
+
import { encodeTokenWithId as s } from "../../utils/encodeTokenWithId.mjs";
|
|
10
|
+
import { formatMintAddress as c } from "../../utils/solanaMint.utils.mjs";
|
|
11
|
+
import { getInputUtxoAndBalance as l, getInputUtxoAndBalanceOfStuckUtxos as u, getInputUtxoAndBalancePerToken as d } from "./getInputUtxoAndBalance.mjs";
|
|
12
|
+
import { privateTokensDB as f } from "../../../data-structures/TokenDBs/PrivateTokensDB.mjs";
|
|
13
|
+
import { getOrCreateMapValue as p } from "../../utils/map.utils.mjs";
|
|
14
|
+
import { getChainBalanceFetchingMutex as m } from "../../utils/mutexes.utils.mjs";
|
|
15
|
+
import { getErc20TokenFromAPI as h, getErc20TokensForChainAPI as g } from "../../utils/erc20tokenFunctions.mjs";
|
|
16
|
+
import { Mutex as _ } from "async-mutex";
|
|
18
17
|
//#region libs/shared/common/src/functions/web3/events/getShieldedBalance.ts
|
|
19
|
-
var
|
|
20
|
-
let { inputUtxos:
|
|
18
|
+
var v = async (t, r, i, a, o, s = !1, c, d = !1, h = !1) => p(t.balanceFetchingMutexByChain, r, () => new _()).runExclusive(async () => m(r).runShared(async () => {
|
|
19
|
+
let { inputUtxos: p } = h ? await u({
|
|
21
20
|
hinkal: t,
|
|
22
21
|
chainId: r,
|
|
23
22
|
ethAddress: o,
|
|
24
23
|
passedShieldedPrivateKey: i,
|
|
25
24
|
resetCacheBefore: s,
|
|
26
25
|
allowRemoteDecryption: c
|
|
27
|
-
}) : await
|
|
26
|
+
}) : await l({
|
|
28
27
|
hinkal: t,
|
|
29
28
|
sliceIfMore6: !1,
|
|
30
29
|
chainId: r,
|
|
@@ -34,81 +33,82 @@ var y = async (t, r, i, a, o, s = !1, c, l = !1, f = !1) => m(t.balanceFetchingM
|
|
|
34
33
|
resetCacheBefore: s,
|
|
35
34
|
allowRemoteDecryption: c
|
|
36
35
|
});
|
|
37
|
-
|
|
38
|
-
let
|
|
36
|
+
d && e && await f.fetchAndUpdatePrivateTokens(p.map((e) => e.getTokenAddress(r)).filter((e) => e !== void 0), r, o);
|
|
37
|
+
let m = (e ? await f.getPrivateTokens(r, o) : await g(r)).map((e) => ({
|
|
39
38
|
token: e,
|
|
40
|
-
balance:
|
|
39
|
+
balance: p.reduce((t, i) => {
|
|
41
40
|
let a = e.erc20TokenAddress;
|
|
42
41
|
return n(a, i.getTokenAddress(r)) ? t + i.amount : t;
|
|
43
42
|
}, 0n),
|
|
44
|
-
timestamp:
|
|
43
|
+
timestamp: p.filter((t) => n(t.getTokenAddress(r), e.erc20TokenAddress))[0]?.timeStamp,
|
|
45
44
|
nfts: []
|
|
46
|
-
})),
|
|
47
|
-
return
|
|
48
|
-
|
|
49
|
-
}),
|
|
50
|
-
})),
|
|
51
|
-
let { userKeys:
|
|
52
|
-
if (
|
|
53
|
-
if (
|
|
54
|
-
for (let e = 0; e <
|
|
55
|
-
let r = t(n), i = r ?
|
|
56
|
-
|
|
45
|
+
})), _ = /* @__PURE__ */ new Map();
|
|
46
|
+
return m.forEach((e) => {
|
|
47
|
+
_.set(e.token.erc20TokenAddress.toLowerCase(), e);
|
|
48
|
+
}), _;
|
|
49
|
+
})), y = async (e, n, l, u, f = 6, p = l.map(() => 0), m = !1, g = !1) => {
|
|
50
|
+
let { userKeys: _ } = e, v = _.getSpendingKeyPair().pubSpendingBJJPoint, y = [], b = [];
|
|
51
|
+
if (l.length === 0) return [];
|
|
52
|
+
if (m) {
|
|
53
|
+
for (let e = 0; e < l.length; e += 1) {
|
|
54
|
+
let r = t(n), i = r ? l[e] : void 0, o = r ? c(l[e]).compressedAddress : l[e];
|
|
55
|
+
y.push(Array.from({ length: f }, () => new a({
|
|
57
56
|
amount: 0n,
|
|
58
|
-
erc20TokenAddress:
|
|
57
|
+
erc20TokenAddress: o,
|
|
59
58
|
mintAddress: i,
|
|
60
|
-
nullifyingKey:
|
|
61
|
-
spendingPublicKey:
|
|
59
|
+
nullifyingKey: _.getShieldedPrivateKey(),
|
|
60
|
+
spendingPublicKey: v,
|
|
62
61
|
isNewStyle: !0
|
|
63
|
-
}));
|
|
62
|
+
})));
|
|
64
63
|
}
|
|
65
|
-
return
|
|
64
|
+
return y;
|
|
66
65
|
}
|
|
67
|
-
let
|
|
66
|
+
let x = await d({
|
|
68
67
|
hinkal: e,
|
|
69
68
|
sliceIfMore6: !1,
|
|
70
|
-
ensuredTokensWithId:
|
|
71
|
-
erc20TokenAddress:
|
|
72
|
-
tokenId:
|
|
69
|
+
ensuredTokensWithId: l.map((e, t) => ({
|
|
70
|
+
erc20TokenAddress: l[t],
|
|
71
|
+
tokenId: p[t]
|
|
73
72
|
})),
|
|
74
73
|
allowRemoteDecryption: e.generateProofRemotely,
|
|
75
|
-
useBlockedUtxos:
|
|
74
|
+
useBlockedUtxos: g,
|
|
76
75
|
chainId: n
|
|
77
|
-
}),
|
|
78
|
-
for (let e = 0; e <
|
|
79
|
-
let t =
|
|
80
|
-
erc20TokenAddress:
|
|
81
|
-
tokenId:
|
|
76
|
+
}), S = 0;
|
|
77
|
+
for (let e = 0; e < l.length; e += 1) {
|
|
78
|
+
let t = x.get(s(n, {
|
|
79
|
+
erc20TokenAddress: l[e],
|
|
80
|
+
tokenId: p[e]
|
|
82
81
|
})) ?? [];
|
|
83
82
|
if (!t) throw Error("Missing utxos for token");
|
|
84
|
-
|
|
83
|
+
S = Math.max(t.length, S), b.push(t);
|
|
85
84
|
}
|
|
86
|
-
if (
|
|
87
|
-
for (let [e,
|
|
88
|
-
let t =
|
|
89
|
-
if (
|
|
90
|
-
let t = await
|
|
85
|
+
if (S === 2) return b;
|
|
86
|
+
for (let [e, s] of b.entries()) if (s.length > f) {
|
|
87
|
+
let t = s.slice(0, f), a = t.reduce((e, t) => e + t.amount, 0n);
|
|
88
|
+
if (u[e] < 0n && a < -u[e]) {
|
|
89
|
+
let t = await h(n, l[e]);
|
|
91
90
|
if (!t) throw Error("Token not found");
|
|
92
|
-
let
|
|
93
|
-
throw new
|
|
91
|
+
let s = t.decimals === 18 ? 6 : 2, c = Number(i(a, t, s));
|
|
92
|
+
throw new o(c, `${r.UTXO_LIMITATIONS}. Please try again with ${c} ${t.symbol}, including gas fees.`);
|
|
94
93
|
}
|
|
95
|
-
|
|
96
|
-
} else if (
|
|
97
|
-
let r = [...
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
94
|
+
y.push(t);
|
|
95
|
+
} else if (s.length <= f) {
|
|
96
|
+
let r = [...s], i = f - s.length;
|
|
97
|
+
for (; i > 0;) {
|
|
98
|
+
--i;
|
|
99
|
+
let o = t(n), s = o ? l[e] : void 0, u = o ? c(l[e]).compressedAddress : l[e];
|
|
100
|
+
r.push(new a({
|
|
101
101
|
amount: 0n,
|
|
102
|
-
erc20TokenAddress:
|
|
102
|
+
erc20TokenAddress: u,
|
|
103
103
|
mintAddress: s,
|
|
104
|
-
nullifyingKey:
|
|
105
|
-
spendingPublicKey:
|
|
104
|
+
nullifyingKey: _.getShieldedPrivateKey(),
|
|
105
|
+
spendingPublicKey: v,
|
|
106
106
|
isNewStyle: !0
|
|
107
107
|
}));
|
|
108
108
|
}
|
|
109
|
-
|
|
109
|
+
y.push(r);
|
|
110
110
|
}
|
|
111
|
-
return
|
|
111
|
+
return y;
|
|
112
112
|
};
|
|
113
113
|
//#endregion
|
|
114
|
-
export {
|
|
114
|
+
export { y as addPaddingToUtxos, v as getShieldedBalance };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./workerProxy-DPeuP2Mg.js`);let t=require(`buffer`),n=require(`process`);n=e.u(n);let r=require(`circomlibjs-hinkal-fork`),i=require(`@noble/hashes/blake1.js`),a=require(`ethers`),o=require(`poseidon-lite`);o=e.u(o);let s=require(`libsodium-wrappers`);s=e.u(s);let c=require(`@solana/web3.js`),l=require(`bs58`);l=e.u(l);let u=require(`tweetnacl`);u=e.u(u);let d=require(`tronweb`);`${`00`.repeat(20)}`;var f=21888242871839275222246405745257275088548364400416034343698204186575808495617n,p=f/2n,m=200n;`${`00`.repeat(32)}`;var h=(e,t=f)=>{let n=e%t;return n>=0n?n:n+t},g=(e,t=f)=>{let n=1n,r=0n,i=h(e,t),a=t;if(i===0n)throw Error(`Division by zero`);for(;i>1n;){let e=a%i,t=a/i;a=i,i=e;let o=r-n*t;r=n,n=o}return n<0n?n+t:n},_={p:f,zero:0n,one:1n,e:e=>h(BigInt(e)),add:(e,t)=>h(e+t),sub:(e,t)=>h(e-t),mul:(e,t)=>h(e*t),div:(e,t)=>{if(t===0n)throw Error(`Division by zero in BabyJub field`);return h(e*g(t))},toString:e=>h(e).toString()},v={X:_.zero,Y:_.one,Z:_.one,T:_.zero},y=e=>{let t=_.e(e[0]),n=_.e(e[1]);return{X:t,Y:n,Z:_.one,T:_.mul(t,n)}},b=e=>{let t=g(e.Z);return[_.mul(e.X,t),_.mul(e.Y,t)]},x=_.e(`168700`),S=_.e(`168696`),C=(e,t)=>{let n=_.mul(e.X,t.X),r=_.mul(e.Y,t.Y),i=_.mul(_.mul(e.T,t.T),S),a=_.mul(e.Z,t.Z),o=_.sub(_.mul(_.add(e.X,e.Y),_.add(t.X,t.Y)),_.add(n,r)),s=_.sub(a,i),c=_.add(a,i),l=_.sub(r,_.mul(x,n));return{X:_.mul(o,s),Y:_.mul(c,l),T:_.mul(o,l),Z:_.mul(s,c)}},ee=e=>{let t=_.mul(e.X,e.X),n=_.mul(e.Y,e.Y),r=_.mul(_.mul(e.Z,e.Z),2n),i=_.mul(x,t),a=_.sub(_.mul(_.add(e.X,e.Y),_.add(e.X,e.Y)),_.add(t,n)),o=_.add(i,n),s=_.sub(o,r),c=_.sub(i,n);return{X:_.mul(a,s),Y:_.mul(o,c),T:_.mul(a,c),Z:_.mul(s,o)}},w=class{static A=x;static D=S;F=_;A=x;D=S;Base8=[_.e(`5299619240641551281634865583518297030282874472190772894086521144482721001553`),_.e(`16950150798460657717958625567821834550301663161624707787222815936182638968203`)];addPoint(e,t){return b(C(y(e),y(t)))}mulPointEscalar(e,t){let n=v,r=y(e),i=BigInt(t);for(;i!==0n;)i%2n==1n&&(n=C(n,r)),r=ee(r),i/=2n;return b(n)}},T=new class{babyjub=void 0;async init(){this.babyjub||=e.o?new w:await(0,r.buildBabyjub)()}getJub(){return this.babyjub}},E=()=>T.getJub();function D(e){return typeof e==`object`&&`toBigInt`in e?e.toBigInt():BigInt(e)}var O=()=>{let e=e=>{let t=o[`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},k=new class{poseidon=void 0;async init(){this.poseidon||=e.o?O():await(0,r.buildPoseidon)()}getPoseidon(){return this.poseidon}};function A(...e){let t=k.getPoseidon();return D(t.F.toString(t(e)))}var j=(...e)=>{let t=k.getPoseidon();return a.ethers.toBeHex(t.F.toString(t([...e])))},M=21888242871839275222246405745257275088614511777268538073601725287587578984328n/8n,N=(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},P=(e,t,n,r)=>{let i=h(n);for(let n=0;n<r;n+=1)e[t+n]=Number(i&255n),i>>=8n},F=e=>h(e,M),I=e=>{let t=new Uint8Array(e);return t[0]&=248,t[31]&=127,t[31]|=64,t},te=class{constructor(e,t){this.babyJub=e,this.poseidon=t}prv2pub(e){let t=N(I((0,i.blake512)(e).slice(0,32)),0,32);return this.babyJub.mulPointEscalar(this.babyJub.Base8,t/8n)}signPoseidon(e,t){let n=I((0,i.blake512)(e)),r=N(n,0,32),a=this.babyJub.mulPointEscalar(this.babyJub.Base8,r/8n),o=new Uint8Array(64);o.set(n.slice(32),0),P(o,32,t,32);let s=F(N((0,i.blake512)(o),0,64)),c=this.babyJub.mulPointEscalar(this.babyJub.Base8,s),l=this.poseidon([c[0],c[1],a[0],a[1],t]);return{R8:c,S:F(s+F(h(BigInt(this.poseidon.F.toString(l)))*r))}}},ne=async()=>(await k.init(),await T.init(),new te(T.getJub(),k.getPoseidon())),L=new class{eddsa=void 0;async init(){this.eddsa||=e.o?await ne():await(0,r.buildEddsa)()}getEddsa(){return this.eddsa}},R=()=>L.getEddsa(),z=async(e=!1)=>{(typeof window<`u`||typeof self<`u`)&&(typeof window<`u`&&(window.global=window),globalThis.Buffer=t.Buffer,globalThis.process=n.default),await Promise.all([s.default.ready,k.init(),T.init(),...e?[]:[L.init()]])},B=class{inMemoryCache=new Map;constructor(e){e&&this.mergeWithSerialized(e)}getInMemory(e){return this.inMemoryCache.get(e)??void 0}setInMemory(e,t){this.inMemoryCache.set(e,t)}mergeWithSerialized(t){Object.entries(t).forEach(([t,n])=>{this.set(t,e.c(n))})}},V=class extends B{isAttached=!1;get(e){return this.getInMemory(e)}set(e,t){this.setInMemory(e,t)}serialize(){return Object.fromEntries([...this.inMemoryCache].map(([t,n])=>[t,e.l(n)]))}attach(t){if(this.isAttached)throw Error(`can't reattach cache device`);return this.isAttached=!0,(...n)=>{let r=e.l(n),i=this.get(r);if(i!==void 0)return i;let a=t(...n);return this.set(r,a),a}}},H=e=>{if(e<0n||e>=21888242871839275222246405745257275088548364400416034343698204186575808495617n)throw RangeError();return e>p},U=e=>H(e)?1n:0n,W=new V,G=new V,K=new V,q=class{signature;nullifyingKey;PREFIX_FOR_SPENDING_PAIR=`1`;PREFIX_FOR_NULLIFYING_PAIR=`2`;constructor(e,t){this.signature=e,this.nullifyingKey=t}getSignature(){return this.requireSignature(),this.signature}setSignature(e){this.signature=e}requireSignature(){if(!this.signature)throw Error(`No signature provided`)}requireKeyMaterial(){if(!this.signature&&!this.nullifyingKey)throw Error(`No signature or private key provided`)}verifyTronMessage(e,t){return this.requireSignature(),t===d.Trx.verifyMessageV2(e,this.signature)}getShieldedPrivateKey=()=>(this.requireKeyMaterial(),this.nullifyingKey||=a.ethers.keccak256(this.signature),this.nullifyingKey);getShieldedPublicKey=()=>(this.requireKeyMaterial(),j(this.getShieldedPrivateKey()));getSpendingKeyPair=()=>{this.requireSignature();let e=R(),t=E(),n=j(this.PREFIX_FOR_SPENDING_PAIR,this.getSignature()),r=Buffer.from(a.ethers.getBytes(n)),i=e.prv2pub(r);return{privSpendingKey:n,pubSpendingBJJPoint:[BigInt(t.F.toString(i[0])),BigInt(t.F.toString(i[1]))]}};signEddsa=e=>{this.requireSignature();let t=E(),n=R(),r=Buffer.from(a.ethers.getBytes(this.getSpendingKeyPair().privSpendingKey)),i=t.F.e(e),o=n.signPoseidon(r,i);return{R8:[BigInt(t.F.toString(o.R8[0])),BigInt(t.F.toString(o.R8[1]))],S:BigInt(o.S)}};getShieldedPrivateKeyFromNonce=e=>{this.requireKeyMaterial();let t=j(e,this.getShieldedPrivateKey(),this.getShieldedPublicKey());return a.ethers.keccak256(a.ethers.toUtf8Bytes(`hinkal-offchain-shielded-key:${t}`))};getClaimableSignatureFromNonce=e=>{this.requireKeyMaterial();let t=j(e,this.getShieldedPrivateKey(),this.getShieldedPublicKey());return a.ethers.keccak256(a.ethers.toUtf8Bytes(`hinkal-claimable-utxo-signature:${t}`))};getDerivedEthereumAddress=()=>(this.requireKeyMaterial(),new a.ethers.Wallet(this.getShieldedPrivateKey()).address);getDerivedSolanaPublicKey=()=>(this.requireKeyMaterial(),c.Keypair.fromSeed(a.ethers.getBytes(this.getShieldedPrivateKey())).publicKey.toBase58());getNearIntentsAccountId=()=>{this.requireKeyMaterial();let e=c.Keypair.fromSeed(a.ethers.getBytes(this.getShieldedPrivateKey()));return a.ethers.hexlify(e.publicKey.toBytes()).slice(2)};getNearIntentsKeyPairString=()=>{this.requireKeyMaterial();let e=c.Keypair.fromSeed(a.ethers.getBytes(this.getShieldedPrivateKey()));return`ed25519:${l.default.encode(e.secretKey)}`};getSignerPrivateKeyFromNonce=e=>{this.requireKeyMaterial();let t=j(e,this.getShieldedPrivateKey(),this.getShieldedPublicKey());return a.ethers.keccak256(a.ethers.toUtf8Bytes(t))};getSignerSolanaPrivateKeyFromNonce=e=>{let t=this.getSignerPrivateKeyFromNonce(e),n=a.ethers.getBytes(t),r=c.Keypair.fromSeed(n);return l.default.encode(r.secretKey)};verifyMessage(e){return this.requireSignature(),a.ethers.verifyMessage(e,this.signature)}verifySolanaMessage(e,t){this.requireSignature();let n=new TextEncoder().encode(e),r=a.ethers.getBytes(this.signature),i=new c.PublicKey(t).toBytes();return u.default.sign.detached.verify(n,r,i)}static getRandomizedStealthPairOld=G.attach((e,t)=>{let n=E(),r=e*(BigInt(t)%f)%f,i=n.mulPointEscalar(n.Base8,e),a=n.mulPointEscalar(n.Base8,r);return{H0:[BigInt(n.F.toString(i[0])),BigInt(n.F.toString(i[1]))],H1:[BigInt(n.F.toString(a[0])),BigInt(n.F.toString(a[1]))]}});static getRandomizedStealthPair=W.attach((e,t)=>{let n=E(),r=BigInt(t)%f,i=n.mulPointEscalar(n.Base8,e),a=n.mulPointEscalar(i,r);return{H0:[BigInt(n.F.toString(i[0])),BigInt(n.F.toString(i[1]))],H1:[BigInt(n.F.toString(a[0])),BigInt(n.F.toString(a[1]))]}});static getStealthAddressCompressedPoints=(e,t)=>{let{H0:n,H1:r}=this.getRandomizedStealthPairOld(e,t),[i,a]=[n,r].map(e=>BigInt(e[1])+2n**255n*U(e[0]));return{h0:i,h1:a}};static checkSignature=(e,t,n,r)=>{let{h0:i,h1:a}=this.getStealthAddressCompressedPoints(e,r);return t===i&&n===a};static getStealthAddress=K.attach((e,t)=>{let{H0:n,H1:r}=this.getRandomizedStealthPairOld(e,t);return j(2n*U(n[0])+U(r[0]),n[1],r[1])});static getH1FromH0=(e,t)=>{let n=E(),r=BigInt(t)%f,i=[n.F.e(e[0]),n.F.e(e[1])],a=n.mulPointEscalar(i,r);return[BigInt(n.F.toString(a[0])),BigInt(n.F.toString(a[1]))]};static verifyStealthPair=(e,t,n,r=!0)=>{let i=this.getH1FromH0(e,n);return r?i[1]===t[1]:i===t};static getStealthAddressNewStyle=(e,t,n)=>{if(n?.length!==2)throw Error(`Spending public key must be an array of 2 elements`);let r=this.getH1FromH0(e,t);return j(2n*U(e[0])+U(r[0]),e[1],r[1],n[0],n[1],t)};static findCorrectRandomization(e,t){if(!t)throw Error(`No Private Shielded Key Provided`);let n=BigInt(t)%f,r,i,a=0n;do r=e*10n**a%f,i=r*n%f,a+=1n;while(i>=2n**253n||r>=2n**253n);return r}static getH0FromRandomization=e=>{let t=E(),n=t.mulPointEscalar(t.Base8,e);return[BigInt(t.F.toString(n[0])),BigInt(t.F.toString(n[1]))]};static findH0(e,t){if(!t)return;let{H0:n}=this.getRandomizedStealthPair(e,t);return n}static getEncryptionKeyPair=e=>{let t=s.default.crypto_box_seed_keypair(a.ethers.getBytes(e));return{privateKey:a.ethers.hexlify(t.privateKey),publicKey:a.ethers.hexlify(t.publicKey)}};getAccessKey=()=>(this.requireKeyMaterial(),j(this.getShieldedPrivateKey(),this.getShieldedPublicKey()));getBackendToken=()=>(this.requireKeyMaterial(),j(this.getAccessKey(),this.getShieldedPublicKey()))},J={CANNOT_CERTIFY_FOR_PAST_WEEK:`Certification for the past week is not available`,CYCLICAL_REFERRALS_FORBIDDEN:`Cyclical referrals are forbidden`,USER_IS_UNRANKED:`Please certify transactions to see rank`},Y={WC_NO_MATCHING_KEY:`creating the transaction failed
|
|
2
|
+
version`,CONNECTION_PROBLEM:`Failed to connect wallet. Please try again.`,REQUEST_PENDING:`request of type 'wallet_requestpermissions' already pending for origin`},X={INSUFFICIENT_FUNDS:`Insufficient funds`,INSUFFICIENT_FUNDS_WITHDRAW:`Not enough funds to withdraw`,INSUFFICIENT_FUNDS_TRANSFER:`Not enough funds to transfer`,INSUFFICIENT_FUNDS_TO_TRANSACT:`Not enough funds to transact`,INSUFFICIENT_FUNDS_GAS:`Insufficient funds for gas * price`,INSUFFICIENT_TRON_BALANCE_FOR_FEE:`Insufficient TRX balance to cover transfer amount and transaction fee reserve`,INSUFFICIENT_SOL_BALANCE:`Insufficient SOL balance`},re={GAS_PRICE_EXCEEDS_AUTOSHIELD_LIMIT:`Skipped shielding due to gas fee exceeding your limit.`,AUTO_SHIELD_INSUFFICIENT_GAS:`Auto-Shield skipped due to insufficient gas.`};({...J,...Y,...X,...re});var ie=e=>BigInt(a.ethers.hexlify(a.ethers.randomBytes(e))),ae=()=>Math.floor(Date.now()/1e3),Z=class t{amount;erc20TokenAddress;mintAddress;timeStamp;nullifyingKey;spendingPublicKey;randomization;H0;stealthAddress;encryptionKey;commitment;nullifier;isBlocked;isNewStyle;constructor({amount:e,erc20TokenAddress:t,mintAddress:n,timeStamp:r,nullifyingKey:i,spendingPublicKey:a,randomization:o,H0:s,stealthAddress:c,encryptionKey:l,commitment:u=void 0,nullifier:d=void 0,isBlocked:f=!1,isNewStyle:p=!1}){this.amount=e,this.erc20TokenAddress=t,this.mintAddress=n,this.timeStamp=r??ae().toString(),this.nullifyingKey=i,this.spendingPublicKey=a,this.randomization=o??(i?q.findCorrectRandomization(ie(31),i):void 0),this.H0=s??(p&&this.randomization?q.findH0(this.randomization,i):void 0),this.stealthAddress=c,this.encryptionKey=l,this.commitment=u,this.nullifier=d,this.isBlocked=f,this.isNewStyle=p}static createFrom(e,n){return new t({...e.getConstructableParams(),nullifier:void 0,commitment:void 0,...n})}getConstructableParams(){return{amount:this.amount,erc20TokenAddress:this.erc20TokenAddress,mintAddress:this.mintAddress,timeStamp:this.timeStamp,nullifyingKey:this.nullifyingKey,spendingPublicKey:this.spendingPublicKey,randomization:this.randomization,H0:this.H0,stealthAddress:this.stealthAddress,encryptionKey:this.encryptionKey,commitment:this.commitment,nullifier:this.nullifier,isBlocked:this.isBlocked,isNewStyle:this.isNewStyle}}getBasicUtxoParams(){return{amount:this.amount,erc20TokenAddress:this.erc20TokenAddress,mintAddress:this.mintAddress,timeStamp:this.timeStamp,randomization:this.randomization,H0:this.H0,stealthAddress:this.stealthAddress,commitment:this.commitment,nullifier:this.nullifier,isBlocked:this.isBlocked,isNewStyle:this.isNewStyle}}getCommitment(){if(!this.commitment){let e=[this.amount,this.erc20TokenAddress,BigInt(this.getStealthAddress()),this.timeStamp];this.commitment=j(...e)}return this.commitment}getNullifier(){if(!this.nullifier){if(!this.nullifyingKey)throw Error(`No Nullifiers if private key is not provided`);let e=this.getCommitment(),t=j(this.nullifyingKey,e);this.nullifier=j(e,t)}return this.nullifier}getStealthAddress(){if(!this.stealthAddress){if(!this.nullifyingKey)throw Error(`No stealth address in UTXO if private key is not provided`);if(this.isNewStyle){if(!this.H0)throw Error(`No H0 point provided`);this.stealthAddress=q.getStealthAddressNewStyle(this.H0,this.nullifyingKey,this.spendingPublicKey)}else{if(!this.randomization)throw Error(`No randomization provided`);this.stealthAddress=q.getStealthAddress(this.randomization,this.nullifyingKey)}}return this.stealthAddress}getTokenAddress(t){let n=e.r(t)?this.mintAddress:this.erc20TokenAddress;if(!n)throw Error(`No token address provided`);return n}getEncryptionKey(){if(!this.nullifyingKey){if(!this.encryptionKey)throw Error(`No encryption key provided in UTXO`);return this.encryptionKey}return q.getEncryptionKeyPair(this.nullifyingKey).publicKey}},oe=()=>s.default.crypto_box_SEALBYTES+s.default.crypto_secretbox_KEYBYTES,Q=e=>{let t=s.default.crypto_secretbox_NONCEBYTES,n=oe(),r=0,i=e[r];r+=1;let a=e.slice(r,r+t);r+=t;let o=[];for(let t=0;t<i;t+=1)o.push(e.slice(r,r+n)),r+=n;return{nonce:a,sealedKeys:o,ciphertext:e.slice(r)}},se=(e,t,n,r)=>{let{nonce:i,sealedKeys:o,ciphertext:c}=Q(e),l=s.default.crypto_box_seal_open(o[r],a.ethers.getBytes(n),a.ethers.getBytes(t)),u=s.default.crypto_secretbox_open_easy(c,i,l);return Buffer.from(u)},ce=(e,t,n)=>{let r=s.default.crypto_box_seal_open(e,a.ethers.getBytes(n),a.ethers.getBytes(t));return Buffer.from(r)},le=54912,ue=2,de=e=>e[0]*256+e[1],$=(e,t)=>{let{privateKey:n,publicKey:r}=q.getEncryptionKeyPair(t.getShieldedPrivateKey()),i=de(e)===le?se(e.slice(ue),n,r,0):ce(e,n,r),a=Buffer.from(i).toString(`utf-8`).split(`0x`).filter(e=>e.length!==0),o=e=>BigInt(`0x${e}`),s=e=>`0x${e}`,l=a.length>=8,u=l&&o(a[5])===1n,d=l?8:6,f=a[d]?s(a[d]):void 0,p=f?new c.PublicKey(Buffer.from(f.slice(2),`hex`)).toString():void 0;return{amount:o(a[0]),erc20TokenAddress:s(a[1]),randomization:o(a[2]),stealthAddress:s(a[3]),nullifyingKey:t.getShieldedPrivateKey(),timeStamp:o(a[4]).toString(),isNewStyle:u,...u?{H0:[o(a[6]),o(a[7])]}:{},mintAddress:p}},fe=(e,t)=>new Z($(e,t)),pe=e=>e&2n**255n-1n,me=e=>e>>255n&1n,he=(...t)=>{e.a&&console.log(...t)};Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return me}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return pe}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return he}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return z}});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../constants/vite.constants.cjs`),t=require(`../constants/chains.constants.cjs`),n=require(
|
|
1
|
+
const e=require(`../constants/vite.constants.cjs`),t=require(`../constants/chains.constants.cjs`),n=require(`./workerFactory.cjs`);var r=async r=>{let i=await n.WorkerFactory.getWebWorker(r.type);return new Promise((n,a)=>{let o={};if(typeof window<`u`&&window.location){let{origin:e,protocol:t,host:n,port:r,hostname:i,href:a}=window.location;o={origin:e,protocol:t,host:n,port:r,hostname:i,href:a}}i.onMessage(e=>{n(e),i.terminate()}),i.onError(e=>{a(e),i.terminate()});let s={payload:r.payload,metadata:{hostLocation:o,constants:{chains:{chainIds:t.chainIds},isDevelopment:e.isDevelopment}}};i.postMessage(s)})};exports.performTaskWithWorker=r;
|
|
@@ -1,40 +1,39 @@
|
|
|
1
1
|
import { isDevelopment as e } from "../constants/vite.constants.mjs";
|
|
2
2
|
import { chainIds as t } from "../constants/chains.constants.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import { WorkerFactory as r } from "./workerFactory.mjs";
|
|
3
|
+
import { WorkerFactory as n } from "./workerFactory.mjs";
|
|
5
4
|
//#region libs/shared/common/src/webworker/performTaskWithWorker.ts
|
|
6
|
-
var
|
|
7
|
-
let
|
|
8
|
-
return
|
|
9
|
-
let
|
|
5
|
+
var r = async (r) => {
|
|
6
|
+
let i = await n.getWebWorker(r.type);
|
|
7
|
+
return new Promise((n, a) => {
|
|
8
|
+
let o = {};
|
|
10
9
|
if (typeof window < "u" && window.location) {
|
|
11
|
-
let { origin: e, protocol: t, host: n, port: r, hostname: i, href:
|
|
12
|
-
|
|
10
|
+
let { origin: e, protocol: t, host: n, port: r, hostname: i, href: a } = window.location;
|
|
11
|
+
o = {
|
|
13
12
|
origin: e,
|
|
14
13
|
protocol: t,
|
|
15
14
|
host: n,
|
|
16
15
|
port: r,
|
|
17
16
|
hostname: i,
|
|
18
|
-
href:
|
|
17
|
+
href: a
|
|
19
18
|
};
|
|
20
19
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}),
|
|
24
|
-
|
|
20
|
+
i.onMessage((e) => {
|
|
21
|
+
n(e), i.terminate();
|
|
22
|
+
}), i.onError((e) => {
|
|
23
|
+
a(e), i.terminate();
|
|
25
24
|
});
|
|
26
|
-
let
|
|
27
|
-
payload:
|
|
25
|
+
let s = {
|
|
26
|
+
payload: r.payload,
|
|
28
27
|
metadata: {
|
|
29
|
-
hostLocation:
|
|
28
|
+
hostLocation: o,
|
|
30
29
|
constants: {
|
|
31
30
|
chains: { chainIds: t },
|
|
32
31
|
isDevelopment: e
|
|
33
32
|
}
|
|
34
33
|
}
|
|
35
34
|
};
|
|
36
|
-
|
|
35
|
+
i.postMessage(s);
|
|
37
36
|
});
|
|
38
37
|
};
|
|
39
38
|
//#endregion
|
|
40
|
-
export {
|
|
39
|
+
export { r as performTaskWithWorker };
|
|
@@ -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-kZ10ZLfi.js`).href:new URL(`../../../../assets/utxoWorkerLauncher-kZ10ZLfi.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-kZ10ZLfi.js", import.meta.url).href;
|
|
3
3
|
//#endregion
|
|
4
4
|
export { e as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`./workerProxy-DPeuP2Mg.js`),t=require(`./logError-
|
|
1
|
+
const e=require(`./workerProxy-DPeuP2Mg.js`),t=require(`./logError-D8yBaP96.js`);let n=require(`buffer`),r=require(`process`);r=e.u(r);let i=require(`worker_threads`),a=require(`ethers`),o=require(`@solana/web3.js`);var s=`solana-on-chain-utxo:`,c=8,l=e=>e.startsWith(s),u=e=>{if(!l(e))throw Error(`Invalid encoded Solana UTXO payload`);let[n]=a.ethers.AbiCoder.defaultAbiCoder().decode([`bytes32[8]`],e.slice(21)),r=n;if(!Array.isArray(r)||r.length!==c)throw Error(`Malformed encoded Solana UTXO payload`);let[i,s,u,d,f,p,m,h]=r,g=BigInt(i),_=BigInt(d),v=t.n(_)===1n,y=t.r(_),b=a.ethers.toBeHex(BigInt(f)),x=BigInt(p),S=BigInt(m),C=BigInt(h).toString(),w=Array.from(a.ethers.getBytes(s)),T=Array.from(a.ethers.getBytes(u)),E=new o.PublicKey(Uint8Array.from([...w.slice(16),...T.slice(16)])).toBase58();return{amount:g,erc20TokenAddress:t.f(BigInt(s),BigInt(u)),mintAddress:E,randomization:y,stealthAddress:b,H0:x,H1:S,timeStamp:C,isNewStyle:v}},d=e=>{let n=a.ethers.AbiCoder.defaultAbiCoder().decode([`uint256`,`address`,`tuple(uint256, uint256, uint256, uint256)`,`uint256`,`uint256`],e),r=BigInt(n[0]),i=n[1],o=BigInt(n[2][0]),s=t.n(o),c=t.r(o),l=a.ethers.toBeHex(BigInt(n[2][1])),u=BigInt(n[2][2]),d=BigInt(n[2][3]),f=BigInt(n[3]).toString(),p=Number(n[4]);return{amount:r,erc20TokenAddress:i,randomization:c,isNewStyle:s===1n,stealthAddress:l,H0:u,H1:d,timeStamp:f,tokenId:p}},f=(n,r,i)=>{let{randomization:a,H0:o,H1:s,isNewStyle:c}=e.r(i)?u(n):d(n),l=c?t.s.verifyStealthPair([a,o],[0n,s],r):t.s.checkSignature(a,o,s,r);if(!l)throw Error(`UTXO doesn't belong to user`);return l},p=(t,n,r)=>{if(e.r(r)){let{amount:e,erc20TokenAddress:r,mintAddress:i,randomization:a,stealthAddress:o,timeStamp:s,isNewStyle:c,H0:l}=u(t);return{amount:e,erc20TokenAddress:r,mintAddress:i,timeStamp:s,nullifyingKey:n,stealthAddress:o,isNewStyle:c,...c?{H0:[a,l]}:{randomization:a}}}let{amount:i,erc20TokenAddress:a,timeStamp:o,randomization:s,isNewStyle:c,stealthAddress:l,H0:f}=d(t);return{amount:i,erc20TokenAddress:a,timeStamp:o,nullifyingKey:n,stealthAddress:l,isNewStyle:c,...c?{H0:[s,f]}:{randomization:s}}},m=class{static log(...t){e.a&&console.log(...t)}static logObject(t){e.a&&console.dir(t,{depth:null,colors:!0})}static error(...e){t.t(e)}},h=function(e){return e[e.BATCH_FILTER_UTXOS_WITH_NULLIFIER=0]=`BATCH_FILTER_UTXOS_WITH_NULLIFIER`,e[e.BUILD_UTXOS=1]=`BUILD_UTXOS`,e[e.DECIPHER_OUTPUTS=2]=`DECIPHER_OUTPUTS`,e}({}),g=new e.t,_=async({data:e})=>{let{utxos:n,nullifiers:r}=e,i=n.filter(e=>{let n=new t.o(e);return!r.has(n.getNullifier())});g.postMessageToMainThread({utxoConstructors:i,stealthPairCache:t.l.serialize(),stealthAddressCache:t.c.serialize()})},v=async({data:e})=>{let n=new t.s(e.signature),r=n.getShieldedPrivateKey(),i=e.encryptedOutputs.map(i=>{try{let a=i.isPositive?t.a(Buffer.from(i.value.slice(2),`hex`),n):p(i.value,r,e.chainId);return a.isBlocked=i.isBlocked,a}catch{return}}).filter(e=>e!==void 0&&e.amount!==0n);g.postMessageToMainThread(i)},y=async({data:e})=>{let n=new t.s(e.signature),r=[],{encryptedOutputs:i}=e,{lastOutput:a}=e,o=n.getShieldedPrivateKey();for(let s=0;s<i.length;s+=1){let c=i[s];if(a=c.value,c.isPositive)try{let e=t.i(Buffer.from(a.slice(2),`hex`),n);if(e.isBlocked=c.isBlocked,!e.erc20TokenAddress||!e.amount||!e.stealthAddress)throw Error(`bruh`);r.push(c)}catch{}else try{f(a,o,e.chainId)&&r.push(c)}catch{}}g.postMessageToMainThread({additionalEncryptedOutputs:r,lastOutput:a})},b=async e=>{try{await t.u(!0);let{type:n}=e.payload;switch(n){case h.BATCH_FILTER_UTXOS_WITH_NULLIFIER:await _(e.payload);return;case h.BUILD_UTXOS:await v(e.payload);return;case h.DECIPHER_OUTPUTS:await y(e.payload);return;default:throw Error(`Unknown worker message type ${n}`)}}catch(e){m.error(`utxo worker message failed`,e),g.postErrorToMainThread(e)}};globalThis.process=r.default,globalThis.Buffer=n.Buffer,i.parentPort.on(`message`,async e=>{await b(e)});
|
|
@@ -14,9 +14,8 @@
|
|
|
14
14
|
var e = /* @__PURE__ */ ((r) => (r.ZKProof = "ZKProof", r.SnarkJS = "SnarkJS", r.UTXO = "UTXO", r))(e || {});
|
|
15
15
|
|
|
16
16
|
const n = async () => ({
|
|
17
|
-
[e.ZKProof]: await getWorkerURL(domain + '/0.3.
|
|
18
|
-
[e.SnarkJS]: await getWorkerURL(domain + '/0.3.
|
|
19
|
-
[e.UTXO]: await getWorkerURL(domain + '/0.3.
|
|
20
|
-
cryptoEngine: await getWorkerURL(domain + '/0.3.26/' + 'cryptoWorkerLauncher.js'),
|
|
17
|
+
[e.ZKProof]: await getWorkerURL(domain + '/0.3.28/' + 'zkProofWorkerLauncher.js'),
|
|
18
|
+
[e.SnarkJS]: await getWorkerURL(domain + '/0.3.28/' + 'snarkjsWorkerLauncher.js'),
|
|
19
|
+
[e.UTXO]: await getWorkerURL(domain + '/0.3.28/' + 'utxoWorkerLauncher.js'),
|
|
21
20
|
});
|
|
22
21
|
exports.getWorkerViteURL = n;
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* These imports tell vite to generate and bundle worker file.
|
|
3
3
|
* These are import conditionally because we do not have vite when running on node.
|
|
4
4
|
*/
|
|
5
|
-
export declare const getCryptoWorkerBuildURL: () => Promise<any>;
|
|
6
5
|
export declare const getWorkerViteURL: () => Promise<{
|
|
7
6
|
ZKProof: any;
|
|
8
7
|
SnarkJS: any;
|
|
@@ -14,9 +14,8 @@
|
|
|
14
14
|
var e = /* @__PURE__ */ ((r) => (r.ZKProof = "ZKProof", r.SnarkJS = "SnarkJS", r.UTXO = "UTXO", r))(e || {});
|
|
15
15
|
|
|
16
16
|
const n = async () => ({
|
|
17
|
-
[e.ZKProof]: await getWorkerURL(domain + '/0.3.
|
|
18
|
-
[e.SnarkJS]: await getWorkerURL(domain + '/0.3.
|
|
19
|
-
[e.UTXO]: await getWorkerURL(domain + '/0.3.
|
|
20
|
-
cryptoEngine: await getWorkerURL(domain + '/0.3.26/' + 'cryptoWorkerLauncher.js'),
|
|
17
|
+
[e.ZKProof]: await getWorkerURL(domain + '/0.3.28/' + 'zkProofWorkerLauncher.js'),
|
|
18
|
+
[e.SnarkJS]: await getWorkerURL(domain + '/0.3.28/' + 'snarkjsWorkerLauncher.js'),
|
|
19
|
+
[e.UTXO]: await getWorkerURL(domain + '/0.3.28/' + 'utxoWorkerLauncher.js'),
|
|
21
20
|
});
|
|
22
21
|
export { n as getWorkerViteURL };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=``+(typeof document>`u`?require(`url`).pathToFileURL(__dirname+`/../../../../assets/zkProofWorkerLauncher-
|
|
1
|
+
var e=``+(typeof document>`u`?require(`url`).pathToFileURL(__dirname+`/../../../../assets/zkProofWorkerLauncher-DxuIa0r1.js`).href:new URL(`../../../../assets/zkProofWorkerLauncher-DxuIa0r1.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/zkProofWorker/zkProofWorkerLauncher.ts?worker&url
|
|
2
|
-
var e = "" + new URL("../../../../assets/zkProofWorkerLauncher-
|
|
2
|
+
var e = "" + new URL("../../../../assets/zkProofWorkerLauncher-DxuIa0r1.js", import.meta.url).href;
|
|
3
3
|
//#endregion
|
|
4
4
|
export { e as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`./workerProxy-DPeuP2Mg.js`),t=require(`./logError-
|
|
1
|
+
const e=require(`./workerProxy-DPeuP2Mg.js`),t=require(`./logError-D8yBaP96.js`);let n=require(`buffer`),r=require(`process`);r=e.u(r);let i=require(`worker_threads`);require(`ethers`),Object.values({preHookContract:`0x0000000000000000000000000000000000000000`,hookContract:`0x0000000000000000000000000000000000000000`,preHookMetadata:`0x00`,postHookMetadata:`0x00`}),Array.from({length:25},()=>`0`);var a=(e,t)=>{let n=[];for(let r=0;r<e.length;r+=1){n.push([]);for(let i=0;i<e[r].length;i+=1)n[r][i]=t.getSiblingHashesForVerification(BigInt(e[r][i].getCommitment())).map(e=>e.toString())}let r=[];for(let n=0;n<e.length;n+=1){r.push([]);for(let i=0;i<e[n].length;i+=1)r[n][i]=t.getSiblingSides(BigInt(e[n][i].getCommitment())).map(e=>e.toString())}return{inCommitmentSiblings:n,inCommitmentSiblingSides:r}},o=function(e){return e[e.CALC_COMMITMENTS_SIBLING_AND_SIDES=0]=`CALC_COMMITMENTS_SIBLING_AND_SIDES`,e[e.BUILD_IN_NULLIFIERS=1]=`BUILD_IN_NULLIFIERS`,e}({}),s=class extends Error{constructor(){super(`Merkle tree is incomplete`),this.name=`MerkleTreeIncompleteError`}},c=class e{tree;count;index;reverseTree;static createWithData(t,n,r,i,a,o,s){return new e(a,o,s,t,n,r,i)}static create(n,r,i=t.p){return new e(n,i,r)}createReverseTree(){let e=new Map;for(let t=this.getStartIndex();t<this.getStartIndex()+this.count;t+=1n){let n=this.tree.get(t);n!==void 0&&e.set(n,t)}return e}constructor(e,t,n,r,i,a,o){this.hashFunction=e,this.levels=t,this.defaultNodeValue=n,this.tree=r??new Map,this.count=o??0n,this.index=a??2n**(t-1n),i?this.reverseTree=i:this.reverseTree=this.createReverseTree()}getStartIndex(){return 2n**(this.levels-1n)}logarithm2(e){let t=0n;for(;2n**t<e;)t+=1n;return t}bigIntMax(e,t){return e>t?e:t}forceInsert(e,t){if(t<this.getStartIndex())throw RangeError();this.tree.set(t,e),this.reverseTree.set(e,t);let n=this.index-this.getStartIndex(),r=this.logarithm2(n),i=t;for(let e=1n;e<=r;e+=1n){i/=2n;let e=this.hashFunction(this.tree.get(i*2n)||this.defaultNodeValue,this.tree.get(i*2n+1n)||this.defaultNodeValue);this.tree.set(i,e)}}insert(e,n){let r=!1;this.tree.has(n)&&(r=!0,t.t(`Editing commitment index: ${n} `)),r||(this.count+=1n),this.index=this.bigIntMax(this.index,n+1n),this.forceInsert(e,n)}remove(e){this.forceInsert(this.defaultNodeValue,e)}completenessCheck(){if(this.count!==this.index-this.getStartIndex())throw new s}getRootHash(){this.completenessCheck();for(let e=1n;e<2n**this.levels;e*=2n)if(this.tree.get(e))return this.tree.get(e);return this.defaultNodeValue}getMerkleData(){return this.completenessCheck(),new Map(this.tree)}getValue(e){return this.tree.get(e)}getSiblingIndex(e){return e===1n?1n:e%2n==1n?e-1n:e+1n}getSiblingHashesForVerification(e){this.completenessCheck();let t=this.reverseTree.get(e);if(t===void 0)return Array(25).fill(0n);let n=[];for(;t!==0n;)n.push(this.tree.get(this.getSiblingIndex(t))||this.defaultNodeValue),t/=2n;return n.slice(0,25)}getSiblingSides(e){this.completenessCheck();let t=this.reverseTree.get(e);if(t===void 0)return Array(25).fill(0n);let n=[];for(;t!==0n;){let e=t%2n==0n?0n:1n;n.push(e),t/=2n}return n.slice(0,25)}toJSON(){let{tree:e,reverseTree:t,count:n,index:r}=this;return{tree:Object.fromEntries(e),reverseTree:Object.fromEntries(t),count:n.toString(),index:r.toString()}}toJSONLite(){let{tree:e,count:t,index:n}=this;return{tree:Object.fromEntries(e),count:t.toString(),index:n.toString()}}clone(){return e.createWithData(new Map(this.tree),new Map(this.reverseTree),this.index,this.count,this.hashFunction,this.levels,this.defaultNodeValue)}getIndex(){return this.index}},l=e=>new Map(Object.entries(e).map(([e,t])=>[BigInt(e),BigInt(t)])),u=e=>{let n=l(e.tree),r=e.reverseTree?l(e.reverseTree):void 0;return c.createWithData(n,r,BigInt(e.index),BigInt(e.count),t.d,t.p,0n)},d=new e.t,f=e=>{let{inputUtxosSerialized:n,merkleTreeSerialized:r}=e.data,i=u(r),{inCommitmentSiblings:o,inCommitmentSiblingSides:s}=a(n.map(e=>e.map(e=>new t.o(e))),i);d.postMessageToMainThread({inCommitmentSiblings:o,inCommitmentSiblingSides:s})},p=e=>{let{inputUtxosSerialized:n}=e.data,r=n.map(e=>e.map(e=>new t.o(e))).map(e=>e.map(e=>e.amount===0n?`0`:e.getNullifier()));d.postMessageToMainThread(r)},m=async e=>{try{await t.u(!0);let{type:n}=e.payload;switch(n){case o.CALC_COMMITMENTS_SIBLING_AND_SIDES:f(e.payload);return;case o.BUILD_IN_NULLIFIERS:p(e.payload);return;default:throw Error(`Unknown worker message type ${n}`)}}catch(e){console.error(`zk proof worker message failed`,e),d.postErrorToMainThread(e)}};globalThis.process=r.default,globalThis.Buffer=n.Buffer,i.parentPort.on(`message`,async e=>{await m(e)});
|
package/package.json
CHANGED
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../common/src/
|
|
1
|
+
require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../common/src/webworker/workerFactory.cjs`),t=require(`./workerCDNUrls.cjs`),n=require(`./bridge/serialization.utils.cjs`),r=require(`./bridge/HinkalRNWorker.cjs`);let i=require(`react`),a=require(`react-native`),o=require(`react-native-webview`),s=require(`react/jsx-runtime`);var c=`${new URL(Object.values(t.WORKER_CDN_URLS)[0]).origin}/`;e.WorkerFactory.rnWorkerFactory=e=>new r.HinkalRNWorker(e);var l=`
|
|
2
2
|
if (!window.__hinkalPageBoot) (function(){
|
|
3
3
|
window.__hinkalPageBoot = true;
|
|
4
|
-
var URLS = ${JSON.stringify(
|
|
5
|
-
var CRYPTO_URL = ${JSON.stringify(r.CRYPTO_ENGINE_CDN_URL)};
|
|
4
|
+
var URLS = ${JSON.stringify(t.WORKER_CDN_URLS)};
|
|
6
5
|
var BLOBS = {};
|
|
7
|
-
var cryptoWorker = null;
|
|
8
|
-
var cryptoReady = false;
|
|
9
|
-
var cryptoInitPromise = null;
|
|
10
|
-
var cryptoPending = {};
|
|
11
6
|
|
|
12
7
|
function replacer(_key, value){
|
|
13
8
|
if (typeof value === 'bigint') return { __bigint: value.toString() };
|
|
@@ -27,9 +22,6 @@ if (!window.__hinkalPageBoot) (function(){
|
|
|
27
22
|
var out = {}; for (var i = 0; i < keys.length; i++) out[keys[i]] = revive(value[keys[i]]); return out;
|
|
28
23
|
}
|
|
29
24
|
function post(payload){ try { window.ReactNativeWebView.postMessage(JSON.stringify(payload, replacer)); } catch(_){} }
|
|
30
|
-
function postPhase(requestId, variant, phase, t0){
|
|
31
|
-
post({ type: 'TIMING', requestId: requestId, variant: variant, phase: phase, ms: Date.now() - t0 });
|
|
32
|
-
}
|
|
33
25
|
function describe(error){
|
|
34
26
|
if (!error) return 'worker error';
|
|
35
27
|
if (error.message) return error.message;
|
|
@@ -63,77 +55,15 @@ if (!window.__hinkalPageBoot) (function(){
|
|
|
63
55
|
try { return new Worker(url, { type: 'module' }); } catch(_){ return new Worker(url); }
|
|
64
56
|
}
|
|
65
57
|
|
|
66
|
-
function postCrypto(payload){ post(Object.assign({ channel: 'crypto' }, payload)); }
|
|
67
|
-
|
|
68
|
-
async function ensureCryptoWorker(){
|
|
69
|
-
if (cryptoReady) return cryptoWorker;
|
|
70
|
-
if (cryptoInitPromise) return cryptoInitPromise;
|
|
71
|
-
cryptoInitPromise = new Promise(function(resolve, reject){
|
|
72
|
-
blobUrl(CRYPTO_URL).then(function(url){
|
|
73
|
-
cryptoWorker = spawn(url);
|
|
74
|
-
cryptoWorker.onmessage = function(event){
|
|
75
|
-
var data = event && event.data;
|
|
76
|
-
if (!data || typeof data !== 'object') return;
|
|
77
|
-
if (data.type === 'ready') {
|
|
78
|
-
cryptoReady = true;
|
|
79
|
-
resolve(cryptoWorker);
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
if (data.requestId && cryptoPending[data.requestId]) {
|
|
83
|
-
cryptoPending[data.requestId](data);
|
|
84
|
-
delete cryptoPending[data.requestId];
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
cryptoWorker.onerror = function(event){ reject(new Error(describe(event))); };
|
|
88
|
-
cryptoWorker.postMessage({ op: 'init' });
|
|
89
|
-
}).catch(reject);
|
|
90
|
-
});
|
|
91
|
-
return cryptoInitPromise;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
function cryptoCall(requestId, op, payload){
|
|
95
|
-
ensureCryptoWorker().then(function(worker){
|
|
96
|
-
cryptoPending[requestId] = function(response){
|
|
97
|
-
if (response.type === 'result') postCrypto({ requestId: requestId, type: 'RESULT', data: response.data });
|
|
98
|
-
else postCrypto({ requestId: requestId, type: 'ERROR', error: response.error || 'crypto worker error' });
|
|
99
|
-
};
|
|
100
|
-
worker.postMessage({ requestId: requestId, op: op, payload: payload });
|
|
101
|
-
}).catch(function(error){
|
|
102
|
-
postCrypto({ requestId: requestId, type: 'ERROR', error: describe(error) });
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
window.handleCryptoMessage = function(envelope){
|
|
107
|
-
if (!envelope || typeof envelope !== 'object') return;
|
|
108
|
-
if (envelope.type === 'INIT') {
|
|
109
|
-
ensureCryptoWorker().then(function(){
|
|
110
|
-
postCrypto({ type: 'CRYPTO_READY', requestId: envelope.requestId });
|
|
111
|
-
}).catch(function(error){
|
|
112
|
-
postCrypto({ type: 'ERROR', requestId: envelope.requestId, error: describe(error) });
|
|
113
|
-
});
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
if (envelope.type === 'CALL') {
|
|
117
|
-
cryptoCall(envelope.requestId, envelope.op, revive(envelope.payload));
|
|
118
|
-
}
|
|
119
|
-
};
|
|
120
|
-
|
|
121
58
|
window.handleMessage = async function(envelope){
|
|
122
59
|
var requestId = envelope && envelope.requestId;
|
|
123
60
|
var variant = envelope && envelope.variant;
|
|
124
61
|
var message = revive(envelope && envelope.message);
|
|
125
62
|
var url = URLS[variant];
|
|
126
|
-
var t0 = Date.now();
|
|
127
|
-
postPhase(requestId, variant, 'handleMessage-start', t0);
|
|
128
63
|
if (!url) return post({ requestId: requestId, type: 'ERROR', error: 'Unknown variant: ' + variant });
|
|
129
64
|
|
|
130
65
|
var worker;
|
|
131
|
-
try {
|
|
132
|
-
var blob = await blobUrl(url);
|
|
133
|
-
postPhase(requestId, variant, 'cdn-blob-ready', t0);
|
|
134
|
-
worker = spawn(blob);
|
|
135
|
-
postPhase(requestId, variant, 'inner-worker-spawned', t0);
|
|
136
|
-
}
|
|
66
|
+
try { worker = spawn(await blobUrl(url)); }
|
|
137
67
|
catch (error) { return post({ requestId: requestId, type: 'ERROR', error: 'spawn failed: ' + describe(error) }); }
|
|
138
68
|
|
|
139
69
|
var done = false, ready = false, pending = message;
|
|
@@ -144,7 +74,6 @@ if (!window.__hinkalPageBoot) (function(){
|
|
|
144
74
|
if (data && typeof data === 'object') {
|
|
145
75
|
if (data.__hinkalWorkerReady) {
|
|
146
76
|
ready = true;
|
|
147
|
-
postPhase(requestId, variant, 'inner-worker-ready', t0);
|
|
148
77
|
try { worker.postMessage(pending); pending = null; }
|
|
149
78
|
catch (error) { post({ requestId: requestId, type: 'ERROR', error: 'postMessage failed: ' + describe(error) }); finish(); }
|
|
150
79
|
return;
|
|
@@ -156,7 +85,6 @@ if (!window.__hinkalPageBoot) (function(){
|
|
|
156
85
|
}
|
|
157
86
|
}
|
|
158
87
|
post({ requestId: requestId, type: 'RESULT', data: data });
|
|
159
|
-
postPhase(requestId, variant, 'inner-worker-done', t0);
|
|
160
88
|
finish();
|
|
161
89
|
};
|
|
162
90
|
worker.onerror = function(event){
|
|
@@ -167,4 +95,4 @@ if (!window.__hinkalPageBoot) (function(){
|
|
|
167
95
|
|
|
168
96
|
post({ type: 'READY' });
|
|
169
97
|
})();
|
|
170
|
-
true;`,
|
|
98
|
+
true;`,u=`<!DOCTYPE html><html><head><meta charset="utf-8"/></head><body><script>${l}<\/script></body></html>`,d=a.StyleSheet.create({hiddenHost:{position:`absolute`,height:1,width:1,left:-9999,top:-9999,opacity:0}}),f=()=>{let e=(0,i.useRef)(null),t=(0,i.useRef)({ready:!1,queue:[]}),r=(0,i.useCallback)((t,r,i)=>{let o;try{o=JSON.stringify({requestId:t,variant:r,message:i},n.bigIntReplacer)}catch(e){a.DeviceEventEmitter.emit(`FROM_WEBVIEW_WORKER`,{requestId:t,type:`ERROR`,error:`serialize failed: ${e?.message??e}`});return}e.current?.injectJavaScript(`window.handleMessage && window.handleMessage(${o}); true;`)},[]);(0,i.useEffect)(()=>{let e=a.DeviceEventEmitter.addListener(`TO_WEBVIEW_WORKER`,e=>{let n={requestId:e?.__requestId??``,variant:e?.variant??``,message:e?.message};t.current.ready?r(n.requestId,n.variant,n.message):t.current.queue.push(n)});return()=>e.remove()},[r]);let f=(0,i.useCallback)(e=>{let i;try{i=n.reviveBigInts(JSON.parse(e.nativeEvent.data))}catch(e){a.DeviceEventEmitter.emit(`FROM_WEBVIEW_WORKER`,{type:`ERROR`,error:e?.message??`parse error`});return}if(i?.type===`READY`){t.current.ready=!0;let e=t.current.queue;t.current.queue=[],e.forEach(({requestId:e,variant:t,message:n})=>r(e,t,n));return}a.DeviceEventEmitter.emit(`FROM_WEBVIEW_WORKER`,i)},[r]);return(0,s.jsx)(a.View,{pointerEvents:`none`,style:d.hiddenHost,children:(0,s.jsx)(o.WebView,{ref:e,source:{html:u,baseUrl:c},originWhitelist:[`*`],javaScriptEnabled:!0,domStorageEnabled:!0,androidLayerType:`hardware`,onMessage:f,onLoad:()=>e.current?.injectJavaScript(l)})})};module.exports=f;
|