@hinkal/common 0.2.22 → 0.2.23
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/API/proxyAccountsCalls.cjs +1 -1
- package/API/proxyAccountsCalls.mjs +13 -13
- package/README.md +63 -267
- package/constants/activity.constants.cjs +1 -1
- package/constants/activity.constants.mjs +0 -1
- package/constants/addresses.constants.cjs +1 -1
- package/constants/addresses.constants.mjs +9 -10
- package/constants/contracts.constants.cjs +1 -1
- package/constants/contracts.constants.d.ts +3 -3
- package/constants/contracts.constants.mjs +29 -29
- package/constants/server.constants.cjs +1 -1
- package/constants/server.constants.mjs +28 -29
- package/constants/tasks.constants.cjs +1 -1
- package/constants/tasks.constants.mjs +4 -5
- package/crypto/poseidon.cjs +1 -1
- package/crypto/poseidon.mjs +10 -10
- package/data-structures/ApprovalDBs/EventsPublicApprovalsDB.cjs +1 -1
- package/data-structures/ApprovalDBs/EventsPublicApprovalsDB.mjs +24 -24
- package/data-structures/Hinkal/Hinkal.cjs +1 -1
- package/data-structures/Hinkal/Hinkal.mjs +4 -5
- package/data-structures/Hinkal/IHinkal.d.ts +2 -2
- package/data-structures/Hinkal/hinkalApprove.cjs +1 -1
- package/data-structures/Hinkal/hinkalApprove.mjs +40 -40
- package/data-structures/Hinkal/hinkalCheckTokenRegistry.cjs +1 -1
- package/data-structures/Hinkal/hinkalCheckTokenRegistry.mjs +7 -8
- package/data-structures/Hinkal/hinkalDeposit.cjs +1 -1
- package/data-structures/Hinkal/hinkalDeposit.mjs +4 -5
- package/data-structures/Hinkal/hinkalDepositAndWithdraw.cjs +1 -1
- package/data-structures/Hinkal/hinkalDepositAndWithdraw.mjs +2 -3
- package/data-structures/Hinkal/hinkalDepositOnChainUtxos.cjs +1 -1
- package/data-structures/Hinkal/hinkalDepositOnChainUtxos.mjs +18 -19
- package/data-structures/Hinkal/hinkalDepostAndBridge.cjs +1 -1
- package/data-structures/Hinkal/hinkalDepostAndBridge.mjs +3 -4
- package/data-structures/Hinkal/hinkalInsideTransact.cjs +1 -1
- package/data-structures/Hinkal/hinkalInsideTransact.mjs +14 -13
- package/data-structures/Hinkal/hinkalPrivateWallet.cjs +1 -1
- package/data-structures/Hinkal/hinkalPrivateWallet.mjs +2 -3
- package/data-structures/Hinkal/hinkalProoflessDeposit.cjs +1 -1
- package/data-structures/Hinkal/hinkalProoflessDeposit.mjs +27 -26
- package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaDepositAndWithdraw.mjs +38 -39
- package/data-structures/Hinkal/hinkalSolanaSwap.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaSwap.mjs +16 -17
- package/data-structures/Hinkal/hinkalSolanaTransfer.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaTransfer.mjs +24 -25
- package/data-structures/Hinkal/hinkalSolanaWithdraw.cjs +1 -1
- package/data-structures/Hinkal/hinkalSolanaWithdraw.mjs +15 -16
- package/data-structures/Hinkal/hinkalSwap.cjs +1 -1
- package/data-structures/Hinkal/hinkalSwap.mjs +2 -3
- package/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
- package/data-structures/Hinkal/hinkalTransfer.mjs +2 -3
- package/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
- package/data-structures/Hinkal/hinkalWithdraw.mjs +9 -10
- package/data-structures/Hinkal/hinkalWithdrawStuckUtxos.cjs +1 -1
- package/data-structures/Hinkal/hinkalWithdrawStuckUtxos.mjs +8 -9
- package/data-structures/Hinkal/resetMerkleTrees.cjs +1 -1
- package/data-structures/Hinkal/resetMerkleTrees.mjs +10 -10
- package/data-structures/IndexedDB/activity-db.cjs +1 -1
- package/data-structures/IndexedDB/activity-db.mjs +39 -41
- package/data-structures/IndexedDB/balances-db.cjs +1 -1
- package/data-structures/IndexedDB/balances-db.mjs +8 -9
- package/data-structures/IndexedDB/contact-db.cjs +1 -1
- package/data-structures/IndexedDB/contact-db.mjs +21 -23
- package/data-structures/IndexedDB/signatures-db.cjs +1 -1
- package/data-structures/IndexedDB/signatures-db.mjs +2 -3
- package/data-structures/TokenDBs/EventsPublicTokensDB.cjs +1 -1
- package/data-structures/TokenDBs/EventsPublicTokensDB.mjs +34 -36
- package/data-structures/crypto-keys/decodeUTXO.cjs +1 -1
- package/data-structures/crypto-keys/decodeUTXO.mjs +45 -45
- package/data-structures/crypto-keys/encryptDecryptUtxo.cjs +1 -1
- package/data-structures/crypto-keys/encryptDecryptUtxo.mjs +28 -27
- package/data-structures/crypto-keys/keys.cjs +1 -1
- package/data-structures/crypto-keys/keys.d.ts +2 -3
- package/data-structures/crypto-keys/keys.mjs +56 -57
- package/data-structures/event-service/evm/AbstractEventService.cjs +1 -1
- package/data-structures/event-service/evm/AbstractEventService.mjs +14 -14
- package/data-structures/event-service/evm/AbstractNullifierSnapshotService.cjs +1 -1
- package/data-structures/event-service/evm/AbstractNullifierSnapshotService.d.ts +2 -3
- package/data-structures/event-service/evm/AbstractNullifierSnapshotService.mjs +5 -4
- package/data-structures/event-service/evm/AbstractSnapshotService.cjs +1 -1
- package/data-structures/event-service/evm/AbstractSnapshotService.mjs +6 -3
- package/data-structures/event-service/evm/BlockchainEventEmitter.cjs +1 -1
- package/data-structures/event-service/evm/BlockchainEventEmitter.d.ts +1 -1
- package/data-structures/event-service/evm/BlockchainEventEmitter.mjs +22 -18
- package/data-structures/event-service/solana/AbstractSolanaNullifierSnapshotService.cjs +1 -1
- package/data-structures/event-service/solana/AbstractSolanaNullifierSnapshotService.mjs +2 -2
- package/data-structures/presale/PresaleContractWrapper.cjs +1 -1
- package/data-structures/presale/PresaleContractWrapper.d.ts +3 -3
- package/data-structures/presale/PresaleContractWrapper.mjs +10 -10
- package/data-structures/provider-adapter/IProviderAdapter.d.ts +7 -7
- package/data-structures/snapshot/evm-snapshots/ClientAccessTokenSnapshotService.cjs +1 -1
- package/data-structures/snapshot/evm-snapshots/ClientAccessTokenSnapshotService.mjs +16 -14
- package/data-structures/snapshot/evm-snapshots/ClientApprovalsSnapshotService.cjs +1 -1
- package/data-structures/snapshot/evm-snapshots/ClientApprovalsSnapshotService.mjs +7 -5
- package/error-handling/get-error.message.cjs +1 -1
- package/error-handling/get-error.message.mjs +2 -3
- package/functions/kyc/zkMeHelper.cjs +1 -1
- package/functions/kyc/zkMeHelper.mjs +3 -3
- package/functions/pre-transaction/getFlatFees.cjs +1 -1
- package/functions/pre-transaction/getFlatFees.mjs +2 -3
- package/functions/pre-transaction/getSolanaCalldataHash.cjs +1 -1
- package/functions/pre-transaction/getSolanaCalldataHash.mjs +21 -21
- package/functions/pre-transaction/getVolatileTransferAmount.cjs +1 -1
- package/functions/pre-transaction/getVolatileTransferAmount.mjs +2 -3
- package/functions/pre-transaction/interaction-to-action.cjs +1 -1
- package/functions/pre-transaction/interaction-to-action.mjs +2 -3
- package/functions/private-wallet/emporium.helpers.cjs +1 -1
- package/functions/private-wallet/emporium.helpers.d.ts +6 -7
- package/functions/private-wallet/emporium.helpers.mjs +104 -105
- package/functions/private-wallet/emporium.swap.helpers.cjs +1 -1
- package/functions/private-wallet/emporium.swap.helpers.mjs +44 -43
- package/functions/private-wallet/opProducer.cjs +1 -1
- package/functions/private-wallet/opProducer.mjs +1 -1
- package/functions/snarkjs/common.snarkjs.cjs +1 -1
- package/functions/snarkjs/common.snarkjs.mjs +21 -18
- package/functions/snarkjs/constructSolanaZkProof.cjs +1 -1
- package/functions/snarkjs/constructSolanaZkProof.mjs +11 -12
- package/functions/utils/addresses.cjs +1 -1
- package/functions/utils/addresses.mjs +6 -6
- package/functions/utils/cacheFunctions.cjs +1 -1
- package/functions/utils/cacheFunctions.d.ts +1 -1
- package/functions/utils/cacheFunctions.mjs +55 -54
- package/functions/utils/convertEmporiumOpToCallInfo.cjs +1 -1
- package/functions/utils/convertEmporiumOpToCallInfo.mjs +5 -5
- package/functions/utils/create-provider.cjs +1 -1
- package/functions/utils/create-provider.d.ts +2 -2
- package/functions/utils/create-provider.mjs +5 -5
- package/functions/utils/encryptInputForEnclave.cjs +1 -1
- package/functions/utils/encryptInputForEnclave.mjs +9 -9
- package/functions/utils/ethers-formatter.utils.d.ts +1 -1
- package/functions/utils/external-action.utils.cjs +1 -1
- package/functions/utils/external-action.utils.mjs +2 -2
- package/functions/utils/getContractAddress.cjs +1 -0
- package/functions/utils/getContractAddress.d.ts +2 -0
- package/functions/utils/getContractAddress.mjs +9 -0
- package/functions/utils/getDataFromTransaction.cjs +1 -1
- package/functions/utils/getDataFromTransaction.d.ts +0 -11
- package/functions/utils/getDataFromTransaction.mjs +26 -50
- package/functions/utils/getRecipientInfoFromUserKeys.cjs +1 -1
- package/functions/utils/getRecipientInfoFromUserKeys.mjs +1 -1
- package/functions/utils/getSignerFromContract.cjs +1 -0
- package/functions/utils/getSignerFromContract.d.ts +3 -0
- package/functions/utils/getSignerFromContract.mjs +16 -0
- package/functions/utils/getUtxosFromReceipt.utils.cjs +1 -1
- package/functions/utils/getUtxosFromReceipt.utils.d.ts +1 -1
- package/functions/utils/getUtxosFromReceipt.utils.mjs +15 -16
- package/functions/utils/inLogicMetadata.cjs +1 -1
- package/functions/utils/inLogicMetadata.mjs +2 -2
- package/functions/utils/nftTokenFunctions.cjs +1 -1
- package/functions/utils/nftTokenFunctions.mjs +2 -3
- package/functions/utils/publicBalance.utils.cjs +1 -1
- package/functions/utils/publicBalance.utils.d.ts +1 -1
- package/functions/utils/publicBalance.utils.mjs +42 -42
- package/functions/utils/rpc-int-encode.cjs +1 -1
- package/functions/utils/rpc-int-encode.d.ts +1 -2
- package/functions/utils/rpc-int-encode.mjs +3 -6
- package/functions/utils/solanaMint.utils.cjs +1 -1
- package/functions/utils/solanaMint.utils.mjs +6 -6
- package/functions/web3/EIP-712.cjs +1 -1
- package/functions/web3/EIP-712.d.ts +4 -4
- package/functions/web3/EIP-712.mjs +1 -1
- package/functions/web3/etherFunctions.cjs +1 -1
- package/functions/web3/etherFunctions.mjs +32 -29
- package/functions/web3/events/balanceChangedCustomHandler.cjs +1 -1
- package/functions/web3/events/balanceChangedCustomHandler.mjs +4 -5
- package/functions/web3/events/balanceChangedHandler.cjs +1 -1
- package/functions/web3/events/balanceChangedHandler.mjs +2 -3
- package/functions/web3/events/getApprovedBalance.cjs +1 -1
- package/functions/web3/events/getApprovedBalance.mjs +1 -1
- package/functions/web3/events/getInputUtxosEnclave.cjs +1 -1
- package/functions/web3/events/getInputUtxosEnclave.mjs +20 -20
- package/functions/web3/events/getTransactionLogEvents.cjs +1 -1
- package/functions/web3/events/getTransactionLogEvents.d.ts +3 -3
- package/functions/web3/events/getTransactionLogEvents.mjs +6 -5
- package/functions/web3/events/index.d.ts +0 -1
- package/functions/web3/fetchSolanaMerkleTreeRootHash.cjs +1 -1
- package/functions/web3/fetchSolanaMerkleTreeRootHash.d.ts +1 -2
- package/functions/web3/fetchSolanaMerkleTreeRootHash.mjs +4 -5
- package/functions/web3/functionCalls/accessTokenCalls.cjs +1 -1
- package/functions/web3/functionCalls/accessTokenCalls.mjs +10 -11
- package/functions/web3/functionCalls/approveToken.cjs +1 -1
- package/functions/web3/functionCalls/approveToken.mjs +61 -58
- package/functions/web3/functionCalls/constructBatchCall.cjs +1 -1
- package/functions/web3/functionCalls/constructBatchCall.d.ts +2 -2
- package/functions/web3/functionCalls/constructBatchCall.mjs +10 -9
- package/functions/web3/functionCalls/estimateGasRelayer.cjs +1 -1
- package/functions/web3/functionCalls/estimateGasRelayer.mjs +1 -1
- package/functions/web3/functionCalls/inHinkalApprovalCalls.cjs +1 -1
- package/functions/web3/functionCalls/inHinkalApprovalCalls.mjs +18 -21
- package/functions/web3/functionCalls/recoverTransactionFromError.d.ts +1 -1
- package/functions/web3/functionCalls/transactCallDirect.cjs +1 -1
- package/functions/web3/functionCalls/transactCallDirect.mjs +38 -34
- package/functions/web3/functionCalls/transactCallRelayer.cjs +1 -1
- package/functions/web3/functionCalls/transactCallRelayer.mjs +8 -10
- package/functions/web3/getContractMetadata.cjs +1 -1
- package/functions/web3/getContractMetadata.d.ts +1 -1
- package/functions/web3/getContractMetadata.mjs +25 -25
- package/functions/web3/getPublicAddressBalance.cjs +1 -1
- package/functions/web3/getPublicAddressBalance.mjs +7 -6
- package/functions/web3/getTokenHolder.cjs +1 -1
- package/functions/web3/getTokenHolder.mjs +16 -15
- package/functions/web3/odosAPI.cjs +1 -1
- package/functions/web3/odosAPI.mjs +6 -7
- package/functions/web3/oneInchAPI.cjs +1 -1
- package/functions/web3/oneInchAPI.mjs +2 -3
- package/functions/web3/runContractFunction.cjs +1 -1
- package/functions/web3/runContractFunction.d.ts +6 -5
- package/functions/web3/runContractFunction.mjs +41 -45
- package/functions/web3/uniswapAPI.cjs +1 -1
- package/functions/web3/uniswapAPI.d.ts +2 -2
- package/functions/web3/uniswapAPI.mjs +23 -24
- package/index.cjs +1 -1
- package/index.mjs +336 -340
- package/package.json +3 -4
- package/providers/CustomEthersProvider.d.ts +1 -1
- package/providers/EthersProviderAdapter.cjs +1 -1
- package/providers/EthersProviderAdapter.d.ts +7 -7
- package/providers/EthersProviderAdapter.mjs +46 -44
- package/providers/SolanaProviderAdapter.d.ts +1 -1
- package/providers/WagmiProviderAdapter.cjs +1 -1
- package/providers/WagmiProviderAdapter.d.ts +5 -5
- package/providers/WagmiProviderAdapter.mjs +37 -33
- package/providers/prepareEthersHinkal.cjs +1 -1
- package/providers/prepareEthersHinkal.d.ts +2 -2
- package/providers/prepareEthersHinkal.mjs +3 -5
- package/providers/prepareWagmiHinkal.cjs +1 -1
- package/providers/prepareWagmiHinkal.mjs +3 -5
- package/types/activities.types.d.ts +2 -3
- package/types/big-intable.types.d.ts +3 -2
- package/types/ethereum-network.types.d.ts +10 -10
- package/types/transactions.types.cjs +1 -1
- package/types/transactions.types.d.ts +2 -3
- package/types/transactions.types.mjs +6 -7
- package/webworker/utxoWorker/utxoWorkerLauncher.cjs +1 -1
- package/webworker/utxoWorker/utxoWorkerLauncher.mjs +1 -1
- package/webworker/utxoWorker/utxoWorkerLogic.cjs +1 -1
- package/webworker/utxoWorker/utxoWorkerLogic.mjs +1 -1
- package/webworker/zkProofWorker/zkProofWorkerLauncher.cjs +1 -1
- package/webworker/zkProofWorker/zkProofWorkerLauncher.mjs +1 -1
- package/functions/web3/events/web3RetrieveEvents.cjs +0 -1
- package/functions/web3/events/web3RetrieveEvents.d.ts +0 -14
- package/functions/web3/events/web3RetrieveEvents.mjs +0 -9
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import { CIRCOM_P as
|
|
4
|
-
import { babyJubInstance as
|
|
1
|
+
import { ethers as n } from "ethers";
|
|
2
|
+
import P from "libsodium-wrappers";
|
|
3
|
+
import { CIRCOM_P as S } from "../../constants/protocol.constants.mjs";
|
|
4
|
+
import { babyJubInstance as v } from "../../crypto/babyJub.mjs";
|
|
5
5
|
import { poseidonHash as c } from "../../crypto/poseidon.mjs";
|
|
6
|
-
import { getCircomSign as
|
|
7
|
-
import { AttachableMemoryCacheDevice as
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
|
|
14
|
-
const E = new v(), R = new v(), L = {
|
|
6
|
+
import { getCircomSign as u } from "./keyUtils.mjs";
|
|
7
|
+
import { AttachableMemoryCacheDevice as K } from "../cacheDevices/AttachableMemoryCacheDevice.mjs";
|
|
8
|
+
import { isSolanaLike as d, networkRegistry as p } from "../../constants/chains.constants.mjs";
|
|
9
|
+
import { Keypair as g, VersionedTransaction as m } from "@solana/web3.js";
|
|
10
|
+
import w from "tweetnacl";
|
|
11
|
+
import f from "bs58";
|
|
12
|
+
import { createCustomSolanaConnection as b } from "../../functions/utils/create-provider.mjs";
|
|
13
|
+
const F = new K(), B = new K(), W = {
|
|
15
14
|
privateKey: "",
|
|
16
15
|
publicKey: ""
|
|
17
16
|
};
|
|
@@ -31,14 +30,14 @@ class l {
|
|
|
31
30
|
throw Error("No signature provided");
|
|
32
31
|
}
|
|
33
32
|
verifyMessage(e) {
|
|
34
|
-
return this.requireSignature(),
|
|
33
|
+
return this.requireSignature(), n.verifyMessage(e, this.signature);
|
|
35
34
|
}
|
|
36
35
|
/**
|
|
37
36
|
* get shielded private key from message signature used to login to the application,
|
|
38
37
|
* this private key is used to generate encryption keypairs as well as public key
|
|
39
38
|
* @retuns 0x-prefixed shielded private key
|
|
40
39
|
*/
|
|
41
|
-
getShieldedPrivateKey = () => (this.requireSignature(),
|
|
40
|
+
getShieldedPrivateKey = () => (this.requireSignature(), n.keccak256(this.signature));
|
|
42
41
|
/**
|
|
43
42
|
* generate shielded public key from private key
|
|
44
43
|
* @param privateKey the key used to generate the shielded public key, this should be the signature
|
|
@@ -49,11 +48,11 @@ class l {
|
|
|
49
48
|
/**
|
|
50
49
|
* deterministically derive an EVM address from the shielded private key
|
|
51
50
|
*/
|
|
52
|
-
getDerivedEthereumAddress = () => (this.requireSignature(), new
|
|
51
|
+
getDerivedEthereumAddress = () => (this.requireSignature(), new n.Wallet(this.getShieldedPrivateKey()).address);
|
|
53
52
|
/**
|
|
54
53
|
* deterministically derive a Solana public key from the shielded private key
|
|
55
54
|
*/
|
|
56
|
-
getDerivedSolanaPublicKey = () => (this.requireSignature(), g.fromSeed(
|
|
55
|
+
getDerivedSolanaPublicKey = () => (this.requireSignature(), g.fromSeed(n.getBytes(this.getShieldedPrivateKey())).publicKey.toBase58());
|
|
57
56
|
/**
|
|
58
57
|
* generate access token, this accessKey is what should be sent to the server for signing
|
|
59
58
|
* @returns accessKey in hexstring with 0x prefixed
|
|
@@ -62,22 +61,22 @@ class l {
|
|
|
62
61
|
getSignerPrivateKeyFromNonce = (e) => {
|
|
63
62
|
this.requireSignature();
|
|
64
63
|
const r = c(e, this.getShieldedPrivateKey(), this.getShieldedPublicKey());
|
|
65
|
-
return
|
|
64
|
+
return n.keccak256(n.toUtf8Bytes(r));
|
|
66
65
|
};
|
|
67
66
|
getSignerSolanaPrivateKeyFromNonce = (e) => {
|
|
68
|
-
const r = this.getSignerPrivateKeyFromNonce(e), t =
|
|
69
|
-
return
|
|
67
|
+
const r = this.getSignerPrivateKeyFromNonce(e), t = n.getBytes(r), i = g.fromSeed(t);
|
|
68
|
+
return f.encode(i.secretKey);
|
|
70
69
|
};
|
|
71
70
|
getEvmPrivateKeyFromSolanaPrivateKey = (e) => {
|
|
72
|
-
const t =
|
|
73
|
-
return
|
|
71
|
+
const t = f.decode(e).slice(0, 32);
|
|
72
|
+
return n.hexlify(t);
|
|
74
73
|
};
|
|
75
74
|
static getSignerFromPrivateKey = (e, r) => {
|
|
76
|
-
if (
|
|
77
|
-
const i =
|
|
75
|
+
if (d(e)) {
|
|
76
|
+
const i = n.getBytes(r);
|
|
78
77
|
return g.fromSeed(i);
|
|
79
78
|
}
|
|
80
|
-
return new
|
|
79
|
+
return new n.Wallet(r);
|
|
81
80
|
};
|
|
82
81
|
static getSignerAddressFromPrivateKey(e, r) {
|
|
83
82
|
const t = l.getSignerFromPrivateKey(e, r);
|
|
@@ -86,14 +85,14 @@ class l {
|
|
|
86
85
|
static signMessageFromPrivateKey = async (e, r, t) => {
|
|
87
86
|
const i = l.getSignerFromPrivateKey(e, r);
|
|
88
87
|
if (i instanceof g) {
|
|
89
|
-
const a =
|
|
90
|
-
return `0x${Buffer.from(
|
|
88
|
+
const a = n.isHexString(t) ? n.getBytes(t) : new TextEncoder().encode(t), o = w.sign.detached(a, i.secretKey);
|
|
89
|
+
return `0x${Buffer.from(o).toString("hex")}`;
|
|
91
90
|
}
|
|
92
|
-
const
|
|
93
|
-
return i.signMessage(
|
|
91
|
+
const s = n.isHexString(t) ? n.getBytes(t) : t;
|
|
92
|
+
return i.signMessage(s);
|
|
94
93
|
};
|
|
95
94
|
static signSolanaTransactionFromPrivateKey = (e, r, t) => {
|
|
96
|
-
if (!
|
|
95
|
+
if (!d(e))
|
|
97
96
|
throw new Error("Solana transaction signing is only available for Solana chains");
|
|
98
97
|
const i = l.getSignerFromPrivateKey(e, r);
|
|
99
98
|
if (!(i instanceof g))
|
|
@@ -101,29 +100,29 @@ class l {
|
|
|
101
100
|
t.sign([i]);
|
|
102
101
|
};
|
|
103
102
|
static sendAndSignTransactionFromPrivateKey = async (e, r, t) => {
|
|
104
|
-
const i = l.getSignerFromPrivateKey(e, r), { fetchRpcUrl:
|
|
105
|
-
if (!
|
|
103
|
+
const i = l.getSignerFromPrivateKey(e, r), { fetchRpcUrl: s } = p[e];
|
|
104
|
+
if (!s)
|
|
106
105
|
throw new Error("No RPC URL found for chainId");
|
|
107
106
|
if (i instanceof g) {
|
|
108
|
-
if (!(t instanceof
|
|
107
|
+
if (!(t instanceof m))
|
|
109
108
|
throw new Error("Invalid transaction type for Solana");
|
|
110
|
-
return t.sign([i]), await
|
|
109
|
+
return t.sign([i]), await b(s).sendRawTransaction(t.serialize());
|
|
111
110
|
}
|
|
112
|
-
if (t instanceof
|
|
111
|
+
if (t instanceof m)
|
|
113
112
|
throw new Error("Invalid transaction type for EVM");
|
|
114
|
-
const a = new
|
|
113
|
+
const a = new n.JsonRpcProvider(s);
|
|
115
114
|
return (await i.connect(a).sendTransaction(t)).hash;
|
|
116
115
|
};
|
|
117
|
-
static signTypedDataFromPrivateKey = async (e, r, t, i,
|
|
118
|
-
if (
|
|
116
|
+
static signTypedDataFromPrivateKey = async (e, r, t, i, s) => {
|
|
117
|
+
if (d(e))
|
|
119
118
|
throw new Error("Solana does not support typed data");
|
|
120
|
-
return await l.getSignerFromPrivateKey(e, r).signTypedData(t, i,
|
|
119
|
+
return await l.getSignerFromPrivateKey(e, r).signTypedData(t, i, s);
|
|
121
120
|
};
|
|
122
121
|
static authorizeDelegation = async (e, r, t, i) => {
|
|
123
|
-
if (
|
|
122
|
+
if (d(e))
|
|
124
123
|
throw new Error("Solana does not support delegation");
|
|
125
|
-
const
|
|
126
|
-
return await l.getSignerFromPrivateKey(e, r).connect(
|
|
124
|
+
const s = new n.JsonRpcProvider(p[e].fetchRpcUrl);
|
|
125
|
+
return await l.getSignerFromPrivateKey(e, r).connect(s).authorize({ address: t, ...i !== void 0 && { nonce: i } });
|
|
127
126
|
};
|
|
128
127
|
getWalletSalt = (e) => (this.requireSignature(), c(this.getShieldedPublicKey(), this.getShieldedPrivateKey(), e));
|
|
129
128
|
/**
|
|
@@ -140,24 +139,24 @@ class l {
|
|
|
140
139
|
* @returns accessKey in hexstring with 0x prefixed
|
|
141
140
|
*/
|
|
142
141
|
getBackendToken = () => (this.requireSignature(), c(this.getAccessKey(), this.getShieldedPublicKey()));
|
|
143
|
-
static getRandomizedStealthPair =
|
|
142
|
+
static getRandomizedStealthPair = F.attach(
|
|
144
143
|
(e, r) => {
|
|
145
|
-
const t =
|
|
146
|
-
return { H0:
|
|
144
|
+
const t = v(), i = BigInt(r) % S, s = e * i % S, a = t.mulPointEscalar(t.Base8, e), o = t.mulPointEscalar(t.Base8, s), h = [BigInt(t.F.toString(a[0])), BigInt(t.F.toString(a[1]))], y = [BigInt(t.F.toString(o[0])), BigInt(t.F.toString(o[1]))];
|
|
145
|
+
return { H0: h, H1: y };
|
|
147
146
|
}
|
|
148
147
|
);
|
|
149
148
|
static getStealthAddressCompressedPoints = (e, r) => {
|
|
150
|
-
const { H0: t, H1: i } = this.getRandomizedStealthPair(e, r), [
|
|
151
|
-
return { h0:
|
|
149
|
+
const { H0: t, H1: i } = this.getRandomizedStealthPair(e, r), [s, a] = [t, i].map((o) => BigInt(o[1]) + 2n ** 255n * u(o[0]));
|
|
150
|
+
return { h0: s, h1: a };
|
|
152
151
|
};
|
|
153
|
-
static getStealthAddress =
|
|
154
|
-
const { H0: t, H1: i } = this.getRandomizedStealthPair(e, r), a = [2n *
|
|
152
|
+
static getStealthAddress = B.attach((e, r) => {
|
|
153
|
+
const { H0: t, H1: i } = this.getRandomizedStealthPair(e, r), a = [2n * u(t[0]) + u(i[0]), t[1], i[1]];
|
|
155
154
|
return c(...a);
|
|
156
155
|
});
|
|
157
156
|
static getStealthAddressWithEKey = (e, r) => ({ stealthAddress: this.getStealthAddress(e, r), encryptionKey: this.getEncryptionKeyPair(r).publicKey });
|
|
158
157
|
static checkSignature = (e, r, t, i) => {
|
|
159
|
-
const { h0:
|
|
160
|
-
return r ===
|
|
158
|
+
const { h0: s, h1: a } = this.getStealthAddressCompressedPoints(e, i);
|
|
159
|
+
return r === s && t === a;
|
|
161
160
|
};
|
|
162
161
|
/**
|
|
163
162
|
* generate private and public keypair
|
|
@@ -165,16 +164,16 @@ class l {
|
|
|
165
164
|
* and must correspond to 32 bytes
|
|
166
165
|
*/
|
|
167
166
|
static getEncryptionKeyPair = (e) => {
|
|
168
|
-
const r =
|
|
167
|
+
const r = P.crypto_box_seed_keypair(n.getBytes(e));
|
|
169
168
|
return {
|
|
170
|
-
privateKey:
|
|
171
|
-
publicKey:
|
|
169
|
+
privateKey: n.hexlify(r.privateKey),
|
|
170
|
+
publicKey: n.hexlify(r.publicKey)
|
|
172
171
|
};
|
|
173
172
|
};
|
|
174
173
|
}
|
|
175
174
|
export {
|
|
176
|
-
|
|
175
|
+
W as EncryptionKeyPairDefaultValue,
|
|
177
176
|
l as UserKeys,
|
|
178
|
-
|
|
179
|
-
|
|
177
|
+
B as stealthAddressCacheDevice,
|
|
178
|
+
F as stealthPairCacheDevice
|
|
180
179
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("../../../functions/utils/resolve-sync.utils.cjs");class h{blockchainEventEmitter;eventName;constructor(e,
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("../../../functions/utils/resolve-sync.utils.cjs");class h{blockchainEventEmitter;eventName;constructor(e,s){this.blockchainEventEmitter=e,this.eventName=s,e.addEventProcessorFunction(this.processEventsPage.bind(this))}get latestBlockNumber(){return this.blockchainEventEmitter.latestBlockNumber}intervalClear(){this.blockchainEventEmitter.intervalClear()}async processEventsPage(e){const s=new Set;e.forEach(t=>{t.eventName==="BlockedUtxosCreated"&&s.add(t.transactionHash)});const n=[];await v.resolveSync(e.map(t=>async()=>{if(t.eventName!==this.eventName)return;const{args:c,blockNumber:i,transactionHash:a}=t;if(!c)throw new Error("Wrong event structure");const r=this.mapEvent(c),l=s.has(a);await this.acceptEvent(r,i,a,l)&&n.push(r)}));const o=n.length;return await this.afterEventsAccepted(o),n.length}}exports.AbstractEventService=h;
|
|
@@ -2,8 +2,8 @@ import { resolveSync as v } from "../../../functions/utils/resolve-sync.utils.mj
|
|
|
2
2
|
class u {
|
|
3
3
|
blockchainEventEmitter;
|
|
4
4
|
eventName;
|
|
5
|
-
constructor(t,
|
|
6
|
-
this.blockchainEventEmitter = t, this.eventName =
|
|
5
|
+
constructor(t, s) {
|
|
6
|
+
this.blockchainEventEmitter = t, this.eventName = s, t.addEventProcessorFunction(this.processEventsPage.bind(this));
|
|
7
7
|
}
|
|
8
8
|
get latestBlockNumber() {
|
|
9
9
|
return this.blockchainEventEmitter.latestBlockNumber;
|
|
@@ -12,24 +12,24 @@ class u {
|
|
|
12
12
|
this.blockchainEventEmitter.intervalClear();
|
|
13
13
|
}
|
|
14
14
|
async processEventsPage(t) {
|
|
15
|
-
const
|
|
16
|
-
t.forEach((
|
|
17
|
-
|
|
15
|
+
const s = /* @__PURE__ */ new Set();
|
|
16
|
+
t.forEach((e) => {
|
|
17
|
+
e.eventName === "BlockedUtxosCreated" && s.add(e.transactionHash);
|
|
18
18
|
});
|
|
19
|
-
const
|
|
19
|
+
const n = [];
|
|
20
20
|
await v(
|
|
21
|
-
t.map((
|
|
22
|
-
if (
|
|
21
|
+
t.map((e) => async () => {
|
|
22
|
+
if (e.eventName !== this.eventName)
|
|
23
23
|
return;
|
|
24
|
-
const { args:
|
|
25
|
-
if (!
|
|
24
|
+
const { args: a, blockNumber: i, transactionHash: c } = e;
|
|
25
|
+
if (!a)
|
|
26
26
|
throw new Error("Wrong event structure");
|
|
27
|
-
const r = this.mapEvent(
|
|
28
|
-
await this.acceptEvent(r, i,
|
|
27
|
+
const r = this.mapEvent(a), h = s.has(c);
|
|
28
|
+
await this.acceptEvent(r, i, c, h) && n.push(r);
|
|
29
29
|
})
|
|
30
30
|
);
|
|
31
|
-
const o =
|
|
32
|
-
return await this.afterEventsAccepted(o),
|
|
31
|
+
const o = n.length;
|
|
32
|
+
return await this.afterEventsAccepted(o), n.length;
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("ethers"),i=require("./AbstractSnapshotService.cjs");class s extends i.AbstractSnapshotService{constructor(e){super(e,"Nullified")}_nullifiers;get nullifiers(){return this._nullifiers}serializeSnapshot(e){return{nullifiers:Array.from(e.payload.nullifiers).map(r=>r.toString()),latestBlockNumber:e.latestBlockNumber}}deserializeSnapshot(e){return{latestBlockNumber:e.latestBlockNumber??0,payload:{nullifiers:new Set(e.nullifiers??[])}}}acceptEvent(e,r){try{return this._nullifiers.has(e.nullifier)?!1:(this._nullifiers.add(e.nullifier),!0)}catch(t){return console.error(t),!1}}mapEvent(e){const{nullifier:r}=e;return{nullifier:l.ethers.toBeHex(r)}}getSnapshotPayload(){return{nullifiers:this._nullifiers}}populateSnapshot({payload:{nullifiers:e}}){this._nullifiers=e}}exports.AbstractNullifierSnapshotService=s;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { BigNumber } from 'ethers';
|
|
2
1
|
import { NullifierEvent } from '../../../types/commitments.types';
|
|
3
2
|
import { AbstractSnapshotService, Snapshot } from './AbstractSnapshotService';
|
|
4
3
|
import { BlockchainEventEmitter } from './BlockchainEventEmitter';
|
|
@@ -9,14 +8,14 @@ export type NullifierSerializedSnapshot = {
|
|
|
9
8
|
latestBlockNumber?: number;
|
|
10
9
|
nullifiers?: string[];
|
|
11
10
|
};
|
|
12
|
-
export declare abstract class AbstractNullifierSnapshotService extends AbstractSnapshotService<NullifierEvent<string>, NullifierEvent<
|
|
11
|
+
export declare abstract class AbstractNullifierSnapshotService extends AbstractSnapshotService<NullifierEvent<string>, NullifierEvent<bigint>, NullifierSnapshotPayload, NullifierSerializedSnapshot> {
|
|
13
12
|
constructor(hinkalEventEmitter: BlockchainEventEmitter);
|
|
14
13
|
private _nullifiers;
|
|
15
14
|
get nullifiers(): Set<string>;
|
|
16
15
|
protected serializeSnapshot(snapshot: Snapshot<NullifierSnapshotPayload>): NullifierSerializedSnapshot;
|
|
17
16
|
protected deserializeSnapshot(serializedSnapshot: NullifierSerializedSnapshot): Snapshot<NullifierSnapshotPayload>;
|
|
18
17
|
protected acceptEvent(event: NullifierEvent<string>, _blockNumber: number): boolean;
|
|
19
|
-
protected mapEvent(event: NullifierEvent<
|
|
18
|
+
protected mapEvent(event: NullifierEvent<bigint>): NullifierEvent<string>;
|
|
20
19
|
protected getSnapshotPayload(): NullifierSnapshotPayload;
|
|
21
20
|
protected populateSnapshot({ payload: { nullifiers } }: Snapshot<NullifierSnapshotPayload>): void;
|
|
22
21
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { ethers as i } from "ethers";
|
|
2
|
+
import { AbstractSnapshotService as t } from "./AbstractSnapshotService.mjs";
|
|
3
|
+
class a extends t {
|
|
3
4
|
constructor(r) {
|
|
4
5
|
super(r, "Nullified");
|
|
5
6
|
}
|
|
@@ -31,7 +32,7 @@ class n extends i {
|
|
|
31
32
|
mapEvent(r) {
|
|
32
33
|
const { nullifier: e } = r;
|
|
33
34
|
return {
|
|
34
|
-
nullifier:
|
|
35
|
+
nullifier: i.toBeHex(e)
|
|
35
36
|
};
|
|
36
37
|
}
|
|
37
38
|
getSnapshotPayload() {
|
|
@@ -44,5 +45,5 @@ class n extends i {
|
|
|
44
45
|
}
|
|
45
46
|
}
|
|
46
47
|
export {
|
|
47
|
-
|
|
48
|
+
a as AbstractNullifierSnapshotService
|
|
48
49
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../../constants/save-depths.cjs"),a=require("./AbstractEventService.cjs");class i extends a.AbstractEventService{savedLatestBlockNumber=0;chainId=0;constructor(t,e){super(t,e)}async init(){await this.loadSnapshot()
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../../constants/save-depths.cjs"),a=require("./AbstractEventService.cjs"),r=require("../../../functions/utils/getSignerFromContract.cjs");class i extends a.AbstractEventService{savedLatestBlockNumber=0;chainId=0;constructor(t,e){super(t,e)}async init(){await this.loadSnapshot();const t=r.getProviderFromContract(this.blockchainEventEmitter.contract);this.chainId=Number((await t.getNetwork()).chainId)}async retrieveEventsFromLatestBlock(){await this.blockchainEventEmitter.retrieveEvents(this.latestBlockNumber)}async loadSnapshot(){const t=await this.fetchSnapshot(),e=this.deserializeSnapshot(t);this.populateSnapshot(e),this.blockchainEventEmitter.syncFromAtMost(e.latestBlockNumber),this.savedLatestBlockNumber=e.latestBlockNumber}saveSnapshot(){return this.savedLatestBlockNumber=this.latestBlockNumber,this.persistSnapshot(this.serializeSnapshot({latestBlockNumber:this.latestBlockNumber,payload:this.getSnapshotPayload()}))}async afterEventsAccepted(t){(t>0||this.savedLatestBlockNumber+s.saveDepths[this.chainId]<this.latestBlockNumber)&&await this.saveSnapshot()}}exports.AbstractSnapshotService=i;
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { saveDepths as e } from "../../../constants/save-depths.mjs";
|
|
2
2
|
import { AbstractEventService as a } from "./AbstractEventService.mjs";
|
|
3
|
-
|
|
3
|
+
import { getProviderFromContract as o } from "../../../functions/utils/getSignerFromContract.mjs";
|
|
4
|
+
class n extends a {
|
|
4
5
|
savedLatestBlockNumber = 0;
|
|
5
6
|
chainId = 0;
|
|
6
7
|
constructor(t, s) {
|
|
7
8
|
super(t, s);
|
|
8
9
|
}
|
|
9
10
|
async init() {
|
|
10
|
-
await this.loadSnapshot()
|
|
11
|
+
await this.loadSnapshot();
|
|
12
|
+
const t = o(this.blockchainEventEmitter.contract);
|
|
13
|
+
this.chainId = Number((await t.getNetwork()).chainId);
|
|
11
14
|
}
|
|
12
15
|
async retrieveEventsFromLatestBlock() {
|
|
13
16
|
await this.blockchainEventEmitter.retrieveEvents(this.latestBlockNumber);
|
|
@@ -29,5 +32,5 @@ class c extends a {
|
|
|
29
32
|
}
|
|
30
33
|
}
|
|
31
34
|
export {
|
|
32
|
-
|
|
35
|
+
n as AbstractSnapshotService
|
|
33
36
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("ethers"),y=require("../../../constants/reorg-depths.constants.cjs"),h=require("../../../functions/utils/resolve-sync.utils.cjs"),f=require("../../../functions/utils/mutexes.utils.cjs"),d=require("../../../functions/utils/getSignerFromContract.cjs");class E{contract;depositOnChainUtxosContract;_latestBlockNumber;_initialBlockNumber;onEventsProcessed;eventProcessors=new Set;maxPageSize;isReady=!1;isServer;intervalId;inProgress;eventsFetchingMutex;constructor(e,r,u,s,i,a=f.balanceFetchingMutex){this.contract=e,this.depositOnChainUtxosContract=i,this._initialBlockNumber=r,this.maxPageSize=s,this.isServer=u,this.inProgress=!1,this.eventsFetchingMutex=a}get latestBlockNumber(){return this._latestBlockNumber??this._initialBlockNumber}syncFromAtMost(e){(this._latestBlockNumber===void 0||e<this._latestBlockNumber)&&(this._latestBlockNumber=e)}intervalClear(){this.isReady=!1,this.eventProcessors=new Set,clearInterval(this.intervalId)}async init(){if(this.isReady)throw new Error("Already initialized");this.isReady=!0,await this.retrieveEvents(this.latestBlockNumber+1),this.intervalId=setInterval(async()=>{await this.retrieveEvents(this.latestBlockNumber)},3500)}requireReady(){if(!this.isReady)throw new Error("Not ready")}addEventProcessorFunction(e){if(this.isReady)throw new Error("Can't add event processor after event emitter initialized");this.eventProcessors.add(e)}async getLastBlockNumberForEventRequest(){const e=await d.getProviderFromContract(this.contract).getBlockNumber();if(!this.isServer)return e;const{chainId:r}=await d.getProviderFromContract(this.contract).getNetwork();return Math.max(this.latestBlockNumber,e-y.blockReorgDepth[Number(r)]+1)}async retrieveEvents(e,r=!1){return this.requireReady(),await this.eventsFetchingMutex.runExclusive(async()=>{try{if(this.inProgress&&!r)return!1;this.inProgress=!0;let s=0;const i=await this.getLastBlockNumberForEventRequest();if(i<e)return this.inProgress=!1,!1;const a=h.getSequence(e,i,this.maxPageSize),o=[];if(await h.resolveSync(a.map(({from:t,to:n})=>async()=>{const c=(await this.contract.queryFilter("*",t,n)).filter(l=>l instanceof v.ethers.EventLog);o.push(...c)})),this.depositOnChainUtxosContract){const{depositOnChainUtxosContract:t}=this;await h.resolveSync(a.map(({from:n,to:c})=>async()=>{const l=(await t.queryFilter("*",n,c)).filter(g=>g instanceof v.ethers.EventLog);o.push(...l)}))}const m=await Promise.all([...this.eventProcessors].map(t=>t(o)));return this._latestBlockNumber=i,s+=m.reduce((t,n)=>t+n,0),this.onEventsProcessed?.(s),this.inProgress=!1,!0}catch(s){return console.log("retrieveEvents error:",{err:s}),this.inProgress=!1,!1}})}}exports.BlockchainEventEmitter=E;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ethers } from 'ethers';
|
|
2
2
|
import { Mutex } from 'async-mutex';
|
|
3
|
-
export type EventProcessorFunction = (events: ethers.
|
|
3
|
+
export type EventProcessorFunction = (events: ethers.EventLog[]) => Promise<number> | number;
|
|
4
4
|
export declare class BlockchainEventEmitter {
|
|
5
5
|
readonly contract: ethers.Contract;
|
|
6
6
|
readonly depositOnChainUtxosContract?: ethers.Contract;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
1
|
+
import { ethers as u } from "ethers";
|
|
2
|
+
import { blockReorgDepth as g } from "../../../constants/reorg-depths.constants.mjs";
|
|
3
|
+
import { getSequence as y, resolveSync as v } from "../../../functions/utils/resolve-sync.utils.mjs";
|
|
4
|
+
import { balanceFetchingMutex as E } from "../../../functions/utils/mutexes.utils.mjs";
|
|
5
|
+
import { getProviderFromContract as m } from "../../../functions/utils/getSignerFromContract.mjs";
|
|
6
|
+
class b {
|
|
5
7
|
contract;
|
|
6
8
|
depositOnChainUtxosContract;
|
|
7
9
|
_latestBlockNumber;
|
|
@@ -15,8 +17,8 @@ class w {
|
|
|
15
17
|
inProgress;
|
|
16
18
|
// to remove race conditions
|
|
17
19
|
eventsFetchingMutex;
|
|
18
|
-
constructor(t, r,
|
|
19
|
-
this.contract = t, this.depositOnChainUtxosContract = i, this._initialBlockNumber = r, this.maxPageSize = s, this.isServer =
|
|
20
|
+
constructor(t, r, h, s, i, n = E) {
|
|
21
|
+
this.contract = t, this.depositOnChainUtxosContract = i, this._initialBlockNumber = r, this.maxPageSize = s, this.isServer = h, this.inProgress = !1, this.eventsFetchingMutex = n;
|
|
20
22
|
}
|
|
21
23
|
get latestBlockNumber() {
|
|
22
24
|
return this._latestBlockNumber ?? this._initialBlockNumber;
|
|
@@ -44,11 +46,11 @@ class w {
|
|
|
44
46
|
this.eventProcessors.add(t);
|
|
45
47
|
}
|
|
46
48
|
async getLastBlockNumberForEventRequest() {
|
|
47
|
-
const t = await this.contract.
|
|
49
|
+
const t = await m(this.contract).getBlockNumber();
|
|
48
50
|
if (!this.isServer)
|
|
49
51
|
return t;
|
|
50
|
-
const { chainId: r } = await this.contract.
|
|
51
|
-
return Math.max(this.latestBlockNumber, t -
|
|
52
|
+
const { chainId: r } = await m(this.contract).getNetwork();
|
|
53
|
+
return Math.max(this.latestBlockNumber, t - g[Number(r)] + 1);
|
|
52
54
|
}
|
|
53
55
|
async retrieveEvents(t, r = !1) {
|
|
54
56
|
return this.requireReady(), await this.eventsFetchingMutex.runExclusive(async () => {
|
|
@@ -60,25 +62,27 @@ class w {
|
|
|
60
62
|
const i = await this.getLastBlockNumberForEventRequest();
|
|
61
63
|
if (i < t)
|
|
62
64
|
return this.inProgress = !1, !1;
|
|
63
|
-
const n =
|
|
64
|
-
if (await
|
|
65
|
+
const n = y(t, i, this.maxPageSize), o = [];
|
|
66
|
+
if (await v(
|
|
65
67
|
n.map(({ from: e, to: a }) => async () => {
|
|
66
|
-
const c = await this.contract.queryFilter("*", e, a)
|
|
68
|
+
const c = (await this.contract.queryFilter("*", e, a)).filter(
|
|
69
|
+
(l) => l instanceof u.EventLog
|
|
70
|
+
);
|
|
67
71
|
o.push(...c);
|
|
68
72
|
})
|
|
69
73
|
), this.depositOnChainUtxosContract) {
|
|
70
74
|
const { depositOnChainUtxosContract: e } = this;
|
|
71
|
-
await
|
|
75
|
+
await v(
|
|
72
76
|
n.map(({ from: a, to: c }) => async () => {
|
|
73
|
-
const
|
|
74
|
-
o.push(...
|
|
77
|
+
const l = (await e.queryFilter("*", a, c)).filter((f) => f instanceof u.EventLog);
|
|
78
|
+
o.push(...l);
|
|
75
79
|
})
|
|
76
80
|
);
|
|
77
81
|
}
|
|
78
|
-
const
|
|
82
|
+
const d = await Promise.all(
|
|
79
83
|
[...this.eventProcessors].map((e) => e(o))
|
|
80
84
|
);
|
|
81
|
-
return this._latestBlockNumber = i, s +=
|
|
85
|
+
return this._latestBlockNumber = i, s += d.reduce((e, a) => e + a, 0), this.onEventsProcessed?.(s), this.inProgress = !1, !0;
|
|
82
86
|
} catch (s) {
|
|
83
87
|
return console.log("retrieveEvents error:", { err: s }), this.inProgress = !1, !1;
|
|
84
88
|
}
|
|
@@ -86,5 +90,5 @@ class w {
|
|
|
86
90
|
}
|
|
87
91
|
}
|
|
88
92
|
export {
|
|
89
|
-
|
|
93
|
+
b as BlockchainEventEmitter
|
|
90
94
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("ethers"),i=require("../../../functions/utils/amounts.utils.cjs"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("ethers"),i=require("../../../functions/utils/amounts.utils.cjs"),s=require("./AbstractSolanaSnapshotService.cjs");class n extends s.AbstractSolanaSnapshotService{constructor(e){super(e,"Nullified")}_nullifiers;get nullifiers(){return this._nullifiers}serializeSnapshot(e){return{nullifiers:Array.from(e.payload.nullifiers).map(r=>r.toString()),latestBlockNumber:e.latestBlockNumber}}deserializeSnapshot(e){return{latestBlockNumber:e.latestBlockNumber??0,payload:{nullifiers:new Set(e.nullifiers??[])}}}acceptEvent(e,r){try{return this._nullifiers.has(e.nullifier)?!1:(this._nullifiers.add(e.nullifier),!0)}catch(l){return console.error(l),!1}}mapEvent(e){return{nullifier:t.ethers.toBeHex(i.advancedToBigInt(e.nullifier))}}getSnapshotPayload(){return{nullifiers:this._nullifiers}}populateSnapshot({payload:{nullifiers:e}}){this._nullifiers=e}}exports.AbstractSolanaNullifierSnapshotService=n;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ethers as i } from "ethers";
|
|
2
2
|
import { advancedToBigInt as t } from "../../../functions/utils/amounts.utils.mjs";
|
|
3
3
|
import { AbstractSolanaSnapshotService as n } from "./AbstractSolanaSnapshotService.mjs";
|
|
4
4
|
class f extends n {
|
|
@@ -32,7 +32,7 @@ class f extends n {
|
|
|
32
32
|
}
|
|
33
33
|
mapEvent(r) {
|
|
34
34
|
return {
|
|
35
|
-
nullifier: i.
|
|
35
|
+
nullifier: i.toBeHex(t(r.nullifier))
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
38
|
getSnapshotPayload() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../constants/presale.constants.cjs"),n=require("ethers");class o{contract;eventsFrom;constructor(t,e){const{address:r,eventsFrom:a}=s.presaleContractInfoByChain[e];this.contract=new n.ethers.Contract(r,s.presaleABI,t),this.eventsFrom=a}deposit(t,e,r){return this.contract.deposit(t.erc20TokenAddress,e,r)}withdraw(t,e){return this.contract.withdraw(t,e)}moveToNextStage(t){return this.contract.moveToNextStage(t||{})}async estimateMoveToNextStageGas(){return this.contract.moveToNextStage.estimateGas()}async getTotalDeposit(){return await this.contract.totalDeposit()}async getDeposits(t,e){return await this.contract.deposits(t,e.erc20TokenAddress)}async getTotalHINK(t){return await this.contract.totalHINK(t)}async getCurrentPresaleStageIndex(){const t=await this.contract.currentPresaleStageIndex();return Number(t)}async getCurrentMaxDepositAmount(){return await this.contract.currentMaxDepositAmount()}async currentPresaleStage(){const[t,e]=await this.contract.currentPresaleStage(),[r,a]=[t,e].map(BigInt);return{amountToRaise:r,priceMultiplier:a}}async calculateHINK(t){return await this.contract.calculateHINK(t)}async queryDeposits(){return this.contract.queryFilter(this.contract.filters.Deposit(),this.eventsFrom)}onEvent(t,e){this.contract.on(t,e)}}exports.PresaleContractWrapper=o;
|
|
@@ -3,7 +3,7 @@ import { ethers } from 'ethers';
|
|
|
3
3
|
export declare class PresaleContractWrapper {
|
|
4
4
|
contract: ethers.Contract;
|
|
5
5
|
eventsFrom: number;
|
|
6
|
-
constructor(signerOrProvider: ethers.Signer | ethers.
|
|
6
|
+
constructor(signerOrProvider: ethers.Signer | ethers.Provider, chainId: number);
|
|
7
7
|
deposit(token: ERC20Token, amount: bigint, minHINK: bigint): Promise<ethers.ContractTransaction>;
|
|
8
8
|
withdraw(token: string, amount: bigint): Promise<ethers.ContractTransaction>;
|
|
9
9
|
moveToNextStage(overrides?: ethers.Overrides): Promise<ethers.ContractTransaction>;
|
|
@@ -18,6 +18,6 @@ export declare class PresaleContractWrapper {
|
|
|
18
18
|
priceMultiplier: bigint;
|
|
19
19
|
}>;
|
|
20
20
|
calculateHINK(amount: bigint): Promise<bigint>;
|
|
21
|
-
queryDeposits(): Promise<ethers.
|
|
22
|
-
onEvent(eventName: string, handleEvent: ethers.
|
|
21
|
+
queryDeposits(): Promise<(ethers.Log | ethers.EventLog)[]>;
|
|
22
|
+
onEvent(eventName: string, handleEvent: ethers.Listener): void;
|
|
23
23
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { presaleContractInfoByChain as
|
|
2
|
-
import { ethers as
|
|
1
|
+
import { presaleContractInfoByChain as s, presaleABI as n } from "../../constants/presale.constants.mjs";
|
|
2
|
+
import { ethers as o } from "ethers";
|
|
3
3
|
class l {
|
|
4
4
|
contract;
|
|
5
5
|
eventsFrom;
|
|
6
6
|
constructor(t, e) {
|
|
7
|
-
const { address: r, eventsFrom: a } =
|
|
8
|
-
this.contract = new
|
|
7
|
+
const { address: r, eventsFrom: a } = s[e];
|
|
8
|
+
this.contract = new o.Contract(r, n, t), this.eventsFrom = a;
|
|
9
9
|
}
|
|
10
10
|
deposit(t, e, r) {
|
|
11
11
|
return this.contract.deposit(t.erc20TokenAddress, e, r);
|
|
@@ -17,30 +17,30 @@ class l {
|
|
|
17
17
|
return this.contract.moveToNextStage(t || {});
|
|
18
18
|
}
|
|
19
19
|
async estimateMoveToNextStageGas() {
|
|
20
|
-
return
|
|
20
|
+
return this.contract.moveToNextStage.estimateGas();
|
|
21
21
|
}
|
|
22
22
|
async getTotalDeposit() {
|
|
23
|
-
return
|
|
23
|
+
return await this.contract.totalDeposit();
|
|
24
24
|
}
|
|
25
25
|
async getDeposits(t, e) {
|
|
26
|
-
return
|
|
26
|
+
return await this.contract.deposits(t, e.erc20TokenAddress);
|
|
27
27
|
}
|
|
28
28
|
async getTotalHINK(t) {
|
|
29
|
-
return
|
|
29
|
+
return await this.contract.totalHINK(t);
|
|
30
30
|
}
|
|
31
31
|
async getCurrentPresaleStageIndex() {
|
|
32
32
|
const t = await this.contract.currentPresaleStageIndex();
|
|
33
33
|
return Number(t);
|
|
34
34
|
}
|
|
35
35
|
async getCurrentMaxDepositAmount() {
|
|
36
|
-
return
|
|
36
|
+
return await this.contract.currentMaxDepositAmount();
|
|
37
37
|
}
|
|
38
38
|
async currentPresaleStage() {
|
|
39
39
|
const [t, e] = await this.contract.currentPresaleStage(), [r, a] = [t, e].map(BigInt);
|
|
40
40
|
return { amountToRaise: r, priceMultiplier: a };
|
|
41
41
|
}
|
|
42
42
|
async calculateHINK(t) {
|
|
43
|
-
return
|
|
43
|
+
return await this.contract.calculateHINK(t);
|
|
44
44
|
}
|
|
45
45
|
async queryDeposits() {
|
|
46
46
|
return this.contract.queryFilter(this.contract.filters.Deposit(), this.eventsFrom);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ContractMetadata, ContractType, EthereumNetwork } from '../../types/ethereum-network.types';
|
|
2
|
-
import {
|
|
2
|
+
import { ethers } from 'ethers';
|
|
3
3
|
import { Call } from '../../types/eip5792.types';
|
|
4
4
|
export interface ChainEventListener {
|
|
5
5
|
onAccountChanged(): void;
|
|
@@ -8,7 +8,7 @@ export interface ChainEventListener {
|
|
|
8
8
|
export interface IProviderAdapter<ConnectorType = unknown> {
|
|
9
9
|
chainId: number | undefined;
|
|
10
10
|
initConnector(connector: ConnectorType): void;
|
|
11
|
-
initSigner?(signer: Signer): void;
|
|
11
|
+
initSigner?(signer: ethers.Signer): void;
|
|
12
12
|
init(chainId?: number): Promise<void>;
|
|
13
13
|
initConfig?(config?: any): Promise<void> | void;
|
|
14
14
|
connectToConnector(connector: ConnectorType): Promise<number>;
|
|
@@ -22,10 +22,10 @@ export interface IProviderAdapter<ConnectorType = unknown> {
|
|
|
22
22
|
release(): void;
|
|
23
23
|
getContractMetadata(contractType: ContractType, chainId?: number): ContractMetadata;
|
|
24
24
|
getContract(contractType: ContractType, contractAddress?: string, chainId?: number): ethers.Contract;
|
|
25
|
-
getContractWithSigner(contract: ContractType, contractAddress?: string): Contract;
|
|
26
|
-
getContractWithFetcher(contract: ContractType, contractAddress?: string): Contract;
|
|
27
|
-
getContractWithFetcherForEthereum(contract: ContractType, contractAddress?: string): Contract;
|
|
28
|
-
sendTransaction(tx: ethers.
|
|
25
|
+
getContractWithSigner(contract: ContractType, contractAddress?: string): ethers.Contract;
|
|
26
|
+
getContractWithFetcher(contract: ContractType, contractAddress?: string): ethers.Contract;
|
|
27
|
+
getContractWithFetcherForEthereum(contract: ContractType, contractAddress?: string): ethers.Contract;
|
|
28
|
+
sendTransaction(tx: ethers.TransactionRequest): Promise<ethers.TransactionResponse>;
|
|
29
29
|
switchNetwork(network: EthereumNetwork): Promise<unknown>;
|
|
30
30
|
switchAccount(signer: ethers.Signer): Promise<void>;
|
|
31
31
|
onAccountChanged(): Promise<unknown>;
|
|
@@ -33,6 +33,6 @@ export interface IProviderAdapter<ConnectorType = unknown> {
|
|
|
33
33
|
isPermitterAvailable(): boolean;
|
|
34
34
|
getGasPrice(): Promise<bigint>;
|
|
35
35
|
signTypedData(domain: ethers.TypedDataDomain, types: Record<string, ethers.TypedDataField[]>, value: Record<string, unknown>): Promise<string>;
|
|
36
|
-
sendBatchCallsTransaction?(calls: Call[]): Promise<ethers.
|
|
36
|
+
sendBatchCallsTransaction?(calls: Call[]): Promise<ethers.TransactionResponse>;
|
|
37
37
|
supportsBatchCall?(): Promise<boolean>;
|
|
38
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../../event-service/evm/AbstractAccessTokenSnapshotService.cjs");require("ethers");require("circomlibjs-hinkal-fork");require("libsodium-wrappers");require("process");require("buffer");require("../../../constants/vite.constants.cjs");require("../../../error-handling/error-codes.constants.cjs");require("../../../constants/save-depths.cjs");const i=require("../../../functions/utils/getSignerFromContract.cjs");require("../../../constants/reorg-depths.constants.cjs");require("../../../functions/utils/mutexes.utils.cjs");require("@coral-xyz/anchor");require("../../../constants/chains.constants.cjs");require("@solana/web3.js");require("../../crypto-keys/keys.cjs");const o=require("../SnapshotFetcherService.cjs"),n=require("../../../functions/utils/getContractAddress.cjs");class a extends c.AbstractAccessTokenSnapshotService{snapshotsService;constructor(e,s){super(e),this.snapshotsService=s}async fetchSnapshot(){const{contract:e}=this.blockchainEventEmitter,{chainId:s}=await i.getProviderFromContract(e).getNetwork(),t=Number(s);this.snapshotsService||(this.snapshotsService=new o.SnapshotFetcherService(t,n.getContractAddress(e)));const r=await this.snapshotsService.getAccessTokens();if(r.accessTokenContractAddress!==n.getContractAddress(e)||r.chainId!==t)throw Error("Commitment Snapshot: incorrect contract or chain id");return{latestBlockNumber:r.latestBlockNumber,merkleTree:r.merkleTree,senderAddresses:r.senderAddresses,senderAddressIndexMap:r.senderAddressIndexMap}}persistSnapshot(e){return Promise.resolve()}}exports.ClientAccessTokenSnapshotService=a;
|