dop-wallet-v6 1.1.5
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/.eslintrc.js +73 -0
- package/.prettierrc.js +21 -0
- package/LICENSE +21 -0
- package/README.md +2 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/services/artifacts/artifact-downloader.d.ts +13 -0
- package/dist/services/artifacts/artifact-downloader.js +131 -0
- package/dist/services/artifacts/artifact-downloader.js.map +1 -0
- package/dist/services/artifacts/artifact-hash.d.ts +4 -0
- package/dist/services/artifacts/artifact-hash.js +54 -0
- package/dist/services/artifacts/artifact-hash.js.map +1 -0
- package/dist/services/artifacts/artifact-store.d.ts +12 -0
- package/dist/services/artifacts/artifact-store.js +12 -0
- package/dist/services/artifacts/artifact-store.js.map +1 -0
- package/dist/services/artifacts/artifact-util.d.ts +7 -0
- package/dist/services/artifacts/artifact-util.js +83 -0
- package/dist/services/artifacts/artifact-util.js.map +1 -0
- package/dist/services/artifacts/index.d.ts +2 -0
- package/dist/services/artifacts/index.js +19 -0
- package/dist/services/artifacts/index.js.map +1 -0
- package/dist/services/artifacts/json/artifact-v2-hashes.json +337 -0
- package/dist/services/dop/core/artifacts.d.ts +10 -0
- package/dist/services/dop/core/artifacts.js +69 -0
- package/dist/services/dop/core/artifacts.js.map +1 -0
- package/dist/services/dop/core/engine.d.ts +25 -0
- package/dist/services/dop/core/engine.js +103 -0
- package/dist/services/dop/core/engine.js.map +1 -0
- package/dist/services/dop/core/index.d.ts +5 -0
- package/dist/services/dop/core/index.js +22 -0
- package/dist/services/dop/core/index.js.map +1 -0
- package/dist/services/dop/core/prover.d.ts +3 -0
- package/dist/services/dop/core/prover.js +14 -0
- package/dist/services/dop/core/prover.js.map +1 -0
- package/dist/services/dop/core/providers.d.ts +18 -0
- package/dist/services/dop/core/providers.js +162 -0
- package/dist/services/dop/core/providers.js.map +1 -0
- package/dist/services/dop/core/shields.d.ts +7 -0
- package/dist/services/dop/core/shields.js +20 -0
- package/dist/services/dop/core/shields.js.map +1 -0
- package/dist/services/dop/history/transaction-history.d.ts +4 -0
- package/dist/services/dop/history/transaction-history.js +166 -0
- package/dist/services/dop/history/transaction-history.js.map +1 -0
- package/dist/services/dop/index.d.ts +4 -0
- package/dist/services/dop/index.js +21 -0
- package/dist/services/dop/index.js.map +1 -0
- package/dist/services/dop/process/extract-first-note.d.ts +6 -0
- package/dist/services/dop/process/extract-first-note.js +163 -0
- package/dist/services/dop/process/extract-first-note.js.map +1 -0
- package/dist/services/dop/process/index.d.ts +1 -0
- package/dist/services/dop/process/index.js +18 -0
- package/dist/services/dop/process/index.js.map +1 -0
- package/dist/services/dop/quick-sync/empty-events.d.ts +2 -0
- package/dist/services/dop/quick-sync/empty-events.js +9 -0
- package/dist/services/dop/quick-sync/empty-events.js.map +1 -0
- package/dist/services/dop/quick-sync/graph-type-formatters.d.ts +13 -0
- package/dist/services/dop/quick-sync/graph-type-formatters.js +168 -0
- package/dist/services/dop/quick-sync/graph-type-formatters.js.map +1 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/arbitrum-goerli/introspectionSchema.d.ts +2 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/arbitrum-goerli/introspectionSchema.js +24081 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/arbitrum-goerli/introspectionSchema.js.map +1 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/arbitrum-goerli/types.d.ts +1628 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/arbitrum-goerli/types.js +4 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/arbitrum-goerli/types.js.map +1 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/arbitrum-one/introspectionSchema.d.ts +2 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/arbitrum-one/introspectionSchema.js +24081 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/arbitrum-one/introspectionSchema.js.map +1 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/arbitrum-one/types.d.ts +1628 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/arbitrum-one/types.js +4 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/arbitrum-one/types.js.map +1 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/bsc/introspectionSchema.d.ts +2 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/bsc/introspectionSchema.js +24081 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/bsc/introspectionSchema.js.map +1 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/bsc/types.d.ts +1628 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/bsc/types.js +4 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/bsc/types.js.map +1 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/ethereum/introspectionSchema.d.ts +2 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/ethereum/introspectionSchema.js +24081 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/ethereum/introspectionSchema.js.map +1 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/ethereum/types.d.ts +1628 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/ethereum/types.js +4 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/ethereum/types.js.map +1 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/goerli/introspectionSchema.d.ts +2 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/goerli/introspectionSchema.js +24081 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/goerli/introspectionSchema.js.map +1 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/goerli/types.d.ts +1628 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/goerli/types.js +4 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/goerli/types.js.map +1 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/matic/introspectionSchema.d.ts +2 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/matic/introspectionSchema.js +24081 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/matic/introspectionSchema.js.map +1 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/matic/types.d.ts +1628 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/matic/types.js +4 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/matic/types.js.map +1 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/mumbai/introspectionSchema.d.ts +2 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/mumbai/introspectionSchema.js +24081 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/mumbai/introspectionSchema.js.map +1 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/mumbai/types.d.ts +1628 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/mumbai/types.js +4 -0
- package/dist/services/dop/quick-sync/graphql/.graphclient/sources/mumbai/types.js.map +1 -0
- package/dist/services/dop/quick-sync/graphql/index.d.ts +1976 -0
- package/dist/services/dop/quick-sync/graphql/index.js +512 -0
- package/dist/services/dop/quick-sync/graphql/index.js.map +1 -0
- package/dist/services/dop/quick-sync/quick-sync-graph.d.ts +2 -0
- package/dist/services/dop/quick-sync/quick-sync-graph.js +150 -0
- package/dist/services/dop/quick-sync/quick-sync-graph.js.map +1 -0
- package/dist/services/dop/util/bytes.d.ts +5 -0
- package/dist/services/dop/util/bytes.js +21 -0
- package/dist/services/dop/util/bytes.js.map +1 -0
- package/dist/services/dop/util/commitment.d.ts +2 -0
- package/dist/services/dop/util/commitment.js +17 -0
- package/dist/services/dop/util/commitment.js.map +1 -0
- package/dist/services/dop/util/crypto.d.ts +14 -0
- package/dist/services/dop/util/crypto.js +79 -0
- package/dist/services/dop/util/crypto.js.map +1 -0
- package/dist/services/dop/util/db.d.ts +2 -0
- package/dist/services/dop/util/db.js +6 -0
- package/dist/services/dop/util/db.js.map +1 -0
- package/dist/services/dop/util/index.d.ts +4 -0
- package/dist/services/dop/util/index.js +21 -0
- package/dist/services/dop/util/index.js.map +1 -0
- package/dist/services/dop/wallets/balance-update.d.ts +8 -0
- package/dist/services/dop/wallets/balance-update.js +90 -0
- package/dist/services/dop/wallets/balance-update.js.map +1 -0
- package/dist/services/dop/wallets/balances.d.ts +6 -0
- package/dist/services/dop/wallets/balances.js +57 -0
- package/dist/services/dop/wallets/balances.js.map +1 -0
- package/dist/services/dop/wallets/index.d.ts +4 -0
- package/dist/services/dop/wallets/index.js +21 -0
- package/dist/services/dop/wallets/index.js.map +1 -0
- package/dist/services/dop/wallets/wallets.d.ts +19 -0
- package/dist/services/dop/wallets/wallets.js +226 -0
- package/dist/services/dop/wallets/wallets.js.map +1 -0
- package/dist/services/ethers/ethers-util.d.ts +1 -0
- package/dist/services/ethers/ethers-util.js +9 -0
- package/dist/services/ethers/ethers-util.js.map +1 -0
- package/dist/services/ethers/index.d.ts +1 -0
- package/dist/services/ethers/index.js +18 -0
- package/dist/services/ethers/index.js.map +1 -0
- package/dist/services/index.d.ts +4 -0
- package/dist/services/index.js +21 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/transactions/index.d.ts +13 -0
- package/dist/services/transactions/index.js +30 -0
- package/dist/services/transactions/index.js.map +1 -0
- package/dist/services/transactions/proof-cache.d.ts +27 -0
- package/dist/services/transactions/proof-cache.js +128 -0
- package/dist/services/transactions/proof-cache.js.map +1 -0
- package/dist/services/transactions/tx-cross-contract-calls.d.ts +9 -0
- package/dist/services/transactions/tx-cross-contract-calls.js +386 -0
- package/dist/services/transactions/tx-cross-contract-calls.js.map +1 -0
- package/dist/services/transactions/tx-gas-details.d.ts +5 -0
- package/dist/services/transactions/tx-gas-details.js +120 -0
- package/dist/services/transactions/tx-gas-details.js.map +1 -0
- package/dist/services/transactions/tx-gas-relayer-fee-estimator.d.ts +2 -0
- package/dist/services/transactions/tx-gas-relayer-fee-estimator.js +209 -0
- package/dist/services/transactions/tx-gas-relayer-fee-estimator.js.map +1 -0
- package/dist/services/transactions/tx-generator.d.ts +9 -0
- package/dist/services/transactions/tx-generator.js +205 -0
- package/dist/services/transactions/tx-generator.js.map +1 -0
- package/dist/services/transactions/tx-notes.d.ts +10 -0
- package/dist/services/transactions/tx-notes.js +154 -0
- package/dist/services/transactions/tx-notes.js.map +1 -0
- package/dist/services/transactions/tx-nullifiers.d.ts +2 -0
- package/dist/services/transactions/tx-nullifiers.js +17 -0
- package/dist/services/transactions/tx-nullifiers.js.map +1 -0
- package/dist/services/transactions/tx-proof-transfer.d.ts +4 -0
- package/dist/services/transactions/tx-proof-transfer.js +49 -0
- package/dist/services/transactions/tx-proof-transfer.js.map +1 -0
- package/dist/services/transactions/tx-proof-unshield.d.ts +3 -0
- package/dist/services/transactions/tx-proof-unshield.js +183 -0
- package/dist/services/transactions/tx-proof-unshield.js.map +1 -0
- package/dist/services/transactions/tx-shield-base-token.d.ts +3 -0
- package/dist/services/transactions/tx-shield-base-token.js +61 -0
- package/dist/services/transactions/tx-shield-base-token.js.map +1 -0
- package/dist/services/transactions/tx-shield.d.ts +6 -0
- package/dist/services/transactions/tx-shield.js +84 -0
- package/dist/services/transactions/tx-shield.js.map +1 -0
- package/dist/services/transactions/tx-transfer.d.ts +2 -0
- package/dist/services/transactions/tx-transfer.js +78 -0
- package/dist/services/transactions/tx-transfer.js.map +1 -0
- package/dist/services/transactions/tx-unshield.d.ts +3 -0
- package/dist/services/transactions/tx-unshield.js +174 -0
- package/dist/services/transactions/tx-unshield.js.map +1 -0
- package/dist/utils/blocked-address.d.ts +2 -0
- package/dist/utils/blocked-address.js +21 -0
- package/dist/utils/blocked-address.js.map +1 -0
- package/dist/utils/error.d.ts +1 -0
- package/dist/utils/error.js +20 -0
- package/dist/utils/error.js.map +1 -0
- package/dist/utils/gas-price.d.ts +6 -0
- package/dist/utils/gas-price.js +31 -0
- package/dist/utils/gas-price.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.js +20 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +3 -0
- package/dist/utils/logger.js +21 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/utils.d.ts +3 -0
- package/dist/utils/utils.js +47 -0
- package/dist/utils/utils.js.map +1 -0
- package/package.json +85 -0
- package/postinstall.js +52 -0
- package/react-native-shims.js +42 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { DopPopulateTransactionResponse, DopERC20Amount, NetworkName, DopERC20AmountRecipient, DopNFTAmountRecipient, TransactionGasDetails } from 'dop-sharedmodel-v5';
|
|
2
|
+
export declare const populateProvedUnshield: (networkName: NetworkName, dopWalletID: string, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, gasDetails: TransactionGasDetails) => Promise<DopPopulateTransactionResponse>;
|
|
3
|
+
export declare const populateProvedUnshieldBaseToken: (networkName: NetworkName, publicWalletAddress: string, dopWalletID: string, wrappedERC20Amount: DopERC20Amount, relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, gasDetails: TransactionGasDetails) => Promise<DopPopulateTransactionResponse>;
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.populateProvedUnshieldBaseToken = exports.populateProvedUnshield = void 0;
|
|
4
|
+
const dop_sharedmodel_v5_1 = require("dop-sharedmodel-v5");
|
|
5
|
+
const proof_cache_1 = require("./proof-cache");
|
|
6
|
+
const error_1 = require("../../utils/error");
|
|
7
|
+
const populateProvedUnshield = async (networkName, dopWalletID, erc20AmountRecipients, nftAmountRecipients, relayerFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, gasDetails) => {
|
|
8
|
+
try {
|
|
9
|
+
const { transaction, nullifiers } = await (0, proof_cache_1.populateProvedTransaction)(networkName, dop_sharedmodel_v5_1.ProofType.Unshield, dopWalletID, false, // showSenderAddressToRecipient
|
|
10
|
+
undefined, // memoText
|
|
11
|
+
erc20AmountRecipients, nftAmountRecipients, undefined, // relayAdaptUnshieldERC20AmountRecipients
|
|
12
|
+
undefined, // relayAdaptUnshieldNFTAmounts
|
|
13
|
+
undefined, // relayAdaptShieldERC20Recipients
|
|
14
|
+
undefined, // relayAdaptShieldNFTRecipients
|
|
15
|
+
undefined, // crossContractCalls
|
|
16
|
+
relayerFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, gasDetails);
|
|
17
|
+
return {
|
|
18
|
+
nullifiers,
|
|
19
|
+
transaction,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
throw (0, error_1.reportAndSanitizeError)(exports.populateProvedUnshield.name, err);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
exports.populateProvedUnshield = populateProvedUnshield;
|
|
27
|
+
const populateProvedUnshieldBaseToken = async (networkName, publicWalletAddress, dopWalletID, wrappedERC20Amount, relayerFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, gasDetails) => {
|
|
28
|
+
try {
|
|
29
|
+
const erc20AmountRecipients = [
|
|
30
|
+
{
|
|
31
|
+
...wrappedERC20Amount,
|
|
32
|
+
recipientAddress: publicWalletAddress,
|
|
33
|
+
},
|
|
34
|
+
];
|
|
35
|
+
const relayAdaptUnshieldERC20Amounts = [
|
|
36
|
+
wrappedERC20Amount,
|
|
37
|
+
];
|
|
38
|
+
// Empty NFT Recipients.
|
|
39
|
+
const nftAmountRecipients = [];
|
|
40
|
+
const { transaction, nullifiers } = await (0, proof_cache_1.populateProvedTransaction)(networkName, dop_sharedmodel_v5_1.ProofType.UnshieldBaseToken, dopWalletID, false, // showSenderAddressToRecipient
|
|
41
|
+
undefined, // memoText
|
|
42
|
+
erc20AmountRecipients, nftAmountRecipients, relayAdaptUnshieldERC20Amounts, undefined, // relayAdaptUnshieldNFTAmounts
|
|
43
|
+
undefined, // relayAdaptShieldERC20Recipients
|
|
44
|
+
undefined, // relayAdaptShieldNFTRecipients
|
|
45
|
+
undefined, // crossContractCalls
|
|
46
|
+
relayerFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, gasDetails);
|
|
47
|
+
return {
|
|
48
|
+
nullifiers,
|
|
49
|
+
transaction,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
throw (0, error_1.reportAndSanitizeError)(exports.populateProvedUnshieldBaseToken.name, err);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
exports.populateProvedUnshieldBaseToken = populateProvedUnshieldBaseToken;
|
|
57
|
+
/*
|
|
58
|
+
export const gasEstimateForUnprovenUnshield = async (
|
|
59
|
+
networkName: NetworkName,
|
|
60
|
+
dopWalletID: string,
|
|
61
|
+
encryptionKey: string,
|
|
62
|
+
erc20AmountRecipients: DopERC20AmountRecipient[],
|
|
63
|
+
nftAmountRecipients: DopNFTAmountRecipient[],
|
|
64
|
+
originalGasDetails: TransactionGasDetails,
|
|
65
|
+
feeTokenDetails: Optional<FeeTokenDetails>,
|
|
66
|
+
sendWithPublicWallet: boolean,
|
|
67
|
+
valueCheck: bigint,
|
|
68
|
+
): Promise<DopTransactionGasEstimateResponse> => {
|
|
69
|
+
try {
|
|
70
|
+
const overallBatchMinGasPrice = 0n;
|
|
71
|
+
|
|
72
|
+
const response = await gasEstimateResponseDummyProofIterativeRelayerFee(
|
|
73
|
+
(relayerFeeERC20Amount: Optional<DopERC20Amount>) =>
|
|
74
|
+
generateDummyProofTransactions(
|
|
75
|
+
ProofType.Unshield,
|
|
76
|
+
networkName,
|
|
77
|
+
dopWalletID,
|
|
78
|
+
encryptionKey,
|
|
79
|
+
false, // showSenderAddressToRecipient
|
|
80
|
+
undefined, // memoText
|
|
81
|
+
erc20AmountRecipients,
|
|
82
|
+
nftAmountRecipients,
|
|
83
|
+
relayerFeeERC20Amount,
|
|
84
|
+
sendWithPublicWallet,
|
|
85
|
+
overallBatchMinGasPrice,
|
|
86
|
+
valueCheck
|
|
87
|
+
),
|
|
88
|
+
(txs: TransactionStruct[]) =>
|
|
89
|
+
generateTransact(
|
|
90
|
+
txs,
|
|
91
|
+
networkName,
|
|
92
|
+
true, // useDummyProof
|
|
93
|
+
),
|
|
94
|
+
networkName,
|
|
95
|
+
dopWalletID,
|
|
96
|
+
erc20AmountRecipients,
|
|
97
|
+
originalGasDetails,
|
|
98
|
+
feeTokenDetails,
|
|
99
|
+
sendWithPublicWallet,
|
|
100
|
+
false, // isCrossContractCall
|
|
101
|
+
);
|
|
102
|
+
return response;
|
|
103
|
+
} catch (err) {
|
|
104
|
+
throw reportAndSanitizeError(gasEstimateForUnprovenUnshield.name, err);
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
*/
|
|
108
|
+
/*
|
|
109
|
+
export const gasEstimateForUnprovenUnshieldBaseToken = async (
|
|
110
|
+
networkName: NetworkName,
|
|
111
|
+
publicWalletAddress: string,
|
|
112
|
+
dopWalletID: string,
|
|
113
|
+
encryptionKey: string,
|
|
114
|
+
wrappedERC20Amount: DopERC20Amount,
|
|
115
|
+
originalGasDetails: TransactionGasDetails,
|
|
116
|
+
feeTokenDetails: Optional<FeeTokenDetails>,
|
|
117
|
+
sendWithPublicWallet: boolean,
|
|
118
|
+
valueCheck: bigint,
|
|
119
|
+
): Promise<DopTransactionGasEstimateResponse> => {
|
|
120
|
+
try {
|
|
121
|
+
const relayAdaptUnshieldERC20AmountRecipients: DopERC20AmountRecipient[] =
|
|
122
|
+
createRelayAdaptUnshieldERC20AmountRecipients(networkName, [
|
|
123
|
+
wrappedERC20Amount,
|
|
124
|
+
]);
|
|
125
|
+
|
|
126
|
+
// Empty NFT Recipients.
|
|
127
|
+
const nftAmountRecipients: DopNFTAmountRecipient[] = [];
|
|
128
|
+
|
|
129
|
+
const overallBatchMinGasPrice = 0n;
|
|
130
|
+
|
|
131
|
+
const response = await gasEstimateResponseDummyProofIterativeRelayerFee(
|
|
132
|
+
(relayerFeeERC20Amount: Optional<DopERC20Amount>) =>
|
|
133
|
+
generateDummyProofTransactions(
|
|
134
|
+
ProofType.UnshieldBaseToken,
|
|
135
|
+
networkName,
|
|
136
|
+
dopWalletID,
|
|
137
|
+
encryptionKey,
|
|
138
|
+
false, // showSenderAddressToRecipient
|
|
139
|
+
undefined, // memoText
|
|
140
|
+
relayAdaptUnshieldERC20AmountRecipients,
|
|
141
|
+
nftAmountRecipients,
|
|
142
|
+
relayerFeeERC20Amount,
|
|
143
|
+
sendWithPublicWallet,
|
|
144
|
+
overallBatchMinGasPrice,
|
|
145
|
+
valueCheck
|
|
146
|
+
),
|
|
147
|
+
(txs: TransactionStruct[]) => {
|
|
148
|
+
const relayAdaptParamsRandom = randomHex(31);
|
|
149
|
+
return generateUnshieldBaseToken(
|
|
150
|
+
txs,
|
|
151
|
+
networkName,
|
|
152
|
+
publicWalletAddress,
|
|
153
|
+
relayAdaptParamsRandom,
|
|
154
|
+
true, // useDummyProof
|
|
155
|
+
);
|
|
156
|
+
},
|
|
157
|
+
networkName,
|
|
158
|
+
dopWalletID,
|
|
159
|
+
relayAdaptUnshieldERC20AmountRecipients,
|
|
160
|
+
originalGasDetails,
|
|
161
|
+
feeTokenDetails,
|
|
162
|
+
sendWithPublicWallet,
|
|
163
|
+
false, // isCrossContractCall
|
|
164
|
+
);
|
|
165
|
+
return response;
|
|
166
|
+
} catch (err) {
|
|
167
|
+
throw reportAndSanitizeError(
|
|
168
|
+
gasEstimateForUnprovenUnshieldBaseToken.name,
|
|
169
|
+
err,
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
*/
|
|
174
|
+
//# sourceMappingURL=tx-unshield.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tx-unshield.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-unshield.ts"],"names":[],"mappings":";;;AAAA,2DAU4B;AAM5B,+CAA0D;AAI1D,6CAA2D;AAEpD,MAAM,sBAAsB,GAAG,KAAK,EACzC,WAAwB,EACxB,WAAmB,EACnB,qBAAgD,EAChD,mBAA4C,EAC5C,8BAAiE,EACjE,oBAA6B,EAC7B,uBAAyC,EACzC,UAAiC,EACQ,EAAE;IAC3C,IAAI;QACF,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,uCAAyB,EACjE,WAAW,EACX,8BAAS,CAAC,QAAQ,EAClB,WAAW,EACX,KAAK,EAAE,+BAA+B;QACtC,SAAS,EAAE,WAAW;QACtB,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,EAAE,0CAA0C;QACrD,SAAS,EAAE,+BAA+B;QAC1C,SAAS,EAAE,kCAAkC;QAC7C,SAAS,EAAE,gCAAgC;QAC3C,SAAS,EAAE,qBAAqB;QAChC,8BAA8B,EAC9B,oBAAoB,EACpB,uBAAuB,EACvB,UAAU,CACX,CAAC;QACF,OAAO;YACL,UAAU;YACV,WAAW;SACZ,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,8BAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAChE;AACH,CAAC,CAAC;AApCW,QAAA,sBAAsB,0BAoCjC;AAEK,MAAM,+BAA+B,GAAG,KAAK,EAClD,WAAwB,EACxB,mBAA2B,EAC3B,WAAmB,EACnB,kBAAkC,EAClC,8BAAiE,EACjE,oBAA6B,EAC7B,uBAAyC,EACzC,UAAiC,EACQ,EAAE;IAC3C,IAAI;QACF,MAAM,qBAAqB,GAA8B;YACvD;gBACE,GAAG,kBAAkB;gBACrB,gBAAgB,EAAE,mBAAmB;aACtC;SACF,CAAC;QACF,MAAM,8BAA8B,GAAqB;YACvD,kBAAkB;SACnB,CAAC;QAEF,wBAAwB;QACxB,MAAM,mBAAmB,GAA4B,EAAE,CAAC;QAExD,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,uCAAyB,EACjE,WAAW,EACX,8BAAS,CAAC,iBAAiB,EAC3B,WAAW,EACX,KAAK,EAAE,+BAA+B;QACtC,SAAS,EAAE,WAAW;QACtB,qBAAqB,EACrB,mBAAmB,EACnB,8BAA8B,EAC9B,SAAS,EAAE,+BAA+B;QAC1C,SAAS,EAAE,kCAAkC;QAC7C,SAAS,EAAE,gCAAgC;QAC3C,SAAS,EAAE,qBAAqB;QAChC,8BAA8B,EAC9B,oBAAoB,EACpB,uBAAuB,EACvB,UAAU,CACX,CAAC;QACF,OAAO;YACL,UAAU;YACV,WAAW;SACZ,CAAC;KACH;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,uCAA+B,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KACzE;AACH,CAAC,CAAC;AAjDW,QAAA,+BAA+B,mCAiD1C;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkDE;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiEE","sourcesContent":["import {\n DopPopulateTransactionResponse,\n DopTransactionGasEstimateResponse,\n DopERC20Amount,\n NetworkName,\n ProofType,\n FeeTokenDetails,\n DopERC20AmountRecipient,\n DopNFTAmountRecipient,\n TransactionGasDetails,\n} from 'dop-sharedmodel-v5';\nimport {\n generateDummyProofTransactions,\n generateTransact,\n // generateUnshieldBaseToken,\n} from './tx-generator';\nimport { populateProvedTransaction } from './proof-cache';\nimport { randomHex, TransactionStruct } from 'dop-engine-v5';\n// import { gasEstimateResponseDummyProofIterativeRelayerFee } from './tx-gas-relayer-fee-estimator';\nimport { createRelayAdaptUnshieldERC20AmountRecipients } from './tx-cross-contract-calls';\nimport { reportAndSanitizeError } from '../../utils/error';\n\nexport const populateProvedUnshield = async (\n networkName: NetworkName,\n dopWalletID: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n gasDetails: TransactionGasDetails,\n): Promise<DopPopulateTransactionResponse> => {\n try {\n const { transaction, nullifiers } = await populateProvedTransaction(\n networkName,\n ProofType.Unshield,\n dopWalletID,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n erc20AmountRecipients,\n nftAmountRecipients,\n undefined, // relayAdaptUnshieldERC20AmountRecipients\n undefined, // relayAdaptUnshieldNFTAmounts\n undefined, // relayAdaptShieldERC20Recipients\n undefined, // relayAdaptShieldNFTRecipients\n undefined, // crossContractCalls\n relayerFeeERC20AmountRecipient,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n gasDetails,\n );\n return {\n nullifiers,\n transaction,\n };\n } catch (err) {\n throw reportAndSanitizeError(populateProvedUnshield.name, err);\n }\n};\n\nexport const populateProvedUnshieldBaseToken = async (\n networkName: NetworkName,\n publicWalletAddress: string,\n dopWalletID: string,\n wrappedERC20Amount: DopERC20Amount,\n relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n gasDetails: TransactionGasDetails,\n): Promise<DopPopulateTransactionResponse> => {\n try {\n const erc20AmountRecipients: DopERC20AmountRecipient[] = [\n {\n ...wrappedERC20Amount,\n recipientAddress: publicWalletAddress,\n },\n ];\n const relayAdaptUnshieldERC20Amounts: DopERC20Amount[] = [\n wrappedERC20Amount,\n ];\n\n // Empty NFT Recipients.\n const nftAmountRecipients: DopNFTAmountRecipient[] = [];\n\n const { transaction, nullifiers } = await populateProvedTransaction(\n networkName,\n ProofType.UnshieldBaseToken,\n dopWalletID,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n erc20AmountRecipients,\n nftAmountRecipients,\n relayAdaptUnshieldERC20Amounts,\n undefined, // relayAdaptUnshieldNFTAmounts\n undefined, // relayAdaptShieldERC20Recipients\n undefined, // relayAdaptShieldNFTRecipients\n undefined, // crossContractCalls\n relayerFeeERC20AmountRecipient,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n gasDetails,\n );\n return {\n nullifiers,\n transaction,\n };\n } catch (err) {\n throw reportAndSanitizeError(populateProvedUnshieldBaseToken.name, err);\n }\n};\n/*\nexport const gasEstimateForUnprovenUnshield = async (\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n originalGasDetails: TransactionGasDetails,\n feeTokenDetails: Optional<FeeTokenDetails>,\n sendWithPublicWallet: boolean,\n valueCheck: bigint,\n): Promise<DopTransactionGasEstimateResponse> => {\n try {\n const overallBatchMinGasPrice = 0n;\n\n const response = await gasEstimateResponseDummyProofIterativeRelayerFee(\n (relayerFeeERC20Amount: Optional<DopERC20Amount>) =>\n generateDummyProofTransactions(\n ProofType.Unshield,\n networkName,\n dopWalletID,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n erc20AmountRecipients,\n nftAmountRecipients,\n relayerFeeERC20Amount,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n valueCheck\n ),\n (txs: TransactionStruct[]) =>\n generateTransact(\n txs,\n networkName,\n true, // useDummyProof\n ),\n networkName,\n dopWalletID,\n erc20AmountRecipients,\n originalGasDetails,\n feeTokenDetails,\n sendWithPublicWallet,\n false, // isCrossContractCall\n );\n return response;\n } catch (err) {\n throw reportAndSanitizeError(gasEstimateForUnprovenUnshield.name, err);\n }\n};\n*/\n/*\nexport const gasEstimateForUnprovenUnshieldBaseToken = async (\n networkName: NetworkName,\n publicWalletAddress: string,\n dopWalletID: string,\n encryptionKey: string,\n wrappedERC20Amount: DopERC20Amount,\n originalGasDetails: TransactionGasDetails,\n feeTokenDetails: Optional<FeeTokenDetails>,\n sendWithPublicWallet: boolean,\n valueCheck: bigint,\n): Promise<DopTransactionGasEstimateResponse> => {\n try {\n const relayAdaptUnshieldERC20AmountRecipients: DopERC20AmountRecipient[] =\n createRelayAdaptUnshieldERC20AmountRecipients(networkName, [\n wrappedERC20Amount,\n ]);\n\n // Empty NFT Recipients.\n const nftAmountRecipients: DopNFTAmountRecipient[] = [];\n\n const overallBatchMinGasPrice = 0n;\n\n const response = await gasEstimateResponseDummyProofIterativeRelayerFee(\n (relayerFeeERC20Amount: Optional<DopERC20Amount>) =>\n generateDummyProofTransactions(\n ProofType.UnshieldBaseToken,\n networkName,\n dopWalletID,\n encryptionKey,\n false, // showSenderAddressToRecipient\n undefined, // memoText\n relayAdaptUnshieldERC20AmountRecipients,\n nftAmountRecipients,\n relayerFeeERC20Amount,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n valueCheck\n ),\n (txs: TransactionStruct[]) => {\n const relayAdaptParamsRandom = randomHex(31);\n return generateUnshieldBaseToken(\n txs,\n networkName,\n publicWalletAddress,\n relayAdaptParamsRandom,\n true, // useDummyProof\n );\n },\n networkName,\n dopWalletID,\n relayAdaptUnshieldERC20AmountRecipients,\n originalGasDetails,\n feeTokenDetails,\n sendWithPublicWallet,\n false, // isCrossContractCall\n );\n return response;\n } catch (err) {\n throw reportAndSanitizeError(\n gasEstimateForUnprovenUnshieldBaseToken.name,\n err,\n );\n }\n};\n*/"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assertNotBlockedAddress = exports.isBlockedAddress = void 0;
|
|
4
|
+
const dop_sharedmodel_v5_1 = require("dop-sharedmodel-v5");
|
|
5
|
+
const isBlockedAddress = (address) => {
|
|
6
|
+
if (!(0, dop_sharedmodel_v5_1.isDefined)(address)) {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
if (dop_sharedmodel_v5_1.OFAC_SANCTIONS_LIST_ADDRESSES.includes(address.toLowerCase())) {
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
return false;
|
|
13
|
+
};
|
|
14
|
+
exports.isBlockedAddress = isBlockedAddress;
|
|
15
|
+
const assertNotBlockedAddress = (address) => {
|
|
16
|
+
if ((0, exports.isBlockedAddress)(address)) {
|
|
17
|
+
throw new Error('Blocked address');
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
exports.assertNotBlockedAddress = assertNotBlockedAddress;
|
|
21
|
+
//# sourceMappingURL=blocked-address.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blocked-address.js","sourceRoot":"","sources":["../../src/utils/blocked-address.ts"],"names":[],"mappings":";;;AAAA,2DAG4B;AAErB,MAAM,gBAAgB,GAAG,CAAC,OAAgB,EAAW,EAAE;IAC5D,IAAI,CAAC,IAAA,8BAAS,EAAC,OAAO,CAAC,EAAE;QACvB,OAAO,KAAK,CAAC;KACd;IACD,IAAI,kDAA6B,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE;QACjE,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AARW,QAAA,gBAAgB,oBAQ3B;AAEK,MAAM,uBAAuB,GAAG,CAAC,OAAgB,EAAE,EAAE;IAC1D,IAAI,IAAA,wBAAgB,EAAC,OAAO,CAAC,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;KACpC;AACH,CAAC,CAAC;AAJW,QAAA,uBAAuB,2BAIlC","sourcesContent":["import {\n OFAC_SANCTIONS_LIST_ADDRESSES,\n isDefined,\n} from 'dop-sharedmodel-v5';\n\nexport const isBlockedAddress = (address?: string): boolean => {\n if (!isDefined(address)) {\n return false;\n }\n if (OFAC_SANCTIONS_LIST_ADDRESSES.includes(address.toLowerCase())) {\n return true;\n }\n return false;\n};\n\nexport const assertNotBlockedAddress = (address?: string) => {\n if (isBlockedAddress(address)) {\n throw new Error('Blocked address');\n }\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const reportAndSanitizeError: (func: string, err: Error | any) => Error;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.reportAndSanitizeError = void 0;
|
|
4
|
+
const dop_sharedmodel_v5_1 = require("dop-sharedmodel-v5");
|
|
5
|
+
const logger_1 = require("./logger");
|
|
6
|
+
const reportAndSanitizeError = (func,
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
8
|
+
err) => {
|
|
9
|
+
(0, logger_1.sendErrorMessage)(`Caught error in DOP Wallet SDK: ${func}`);
|
|
10
|
+
if (err instanceof Error) {
|
|
11
|
+
const error = (0, dop_sharedmodel_v5_1.sanitizeError)(err);
|
|
12
|
+
(0, logger_1.sendErrorMessage)(error);
|
|
13
|
+
return error;
|
|
14
|
+
}
|
|
15
|
+
const error = new Error('Unknown error.');
|
|
16
|
+
(0, logger_1.sendErrorMessage)(error);
|
|
17
|
+
return error;
|
|
18
|
+
};
|
|
19
|
+
exports.reportAndSanitizeError = reportAndSanitizeError;
|
|
20
|
+
//# sourceMappingURL=error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/utils/error.ts"],"names":[],"mappings":";;;AAAA,2DAAmD;AACnD,qCAA4C;AAErC,MAAM,sBAAsB,GAAG,CACpC,IAAY;AACZ,8DAA8D;AAC9D,GAAgB,EACT,EAAE;IACT,IAAA,yBAAgB,EAAC,mCAAmC,IAAI,EAAE,CAAC,CAAC;IAE5D,IAAI,GAAG,YAAY,KAAK,EAAE;QACxB,MAAM,KAAK,GAAG,IAAA,kCAAa,EAAC,GAAG,CAAC,CAAC;QACjC,IAAA,yBAAgB,EAAC,KAAK,CAAC,CAAC;QACxB,OAAO,KAAK,CAAC;KACd;IAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC1C,IAAA,yBAAgB,EAAC,KAAK,CAAC,CAAC;IACxB,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAhBW,QAAA,sBAAsB,0BAgBjC","sourcesContent":["import { sanitizeError } from 'dop-sharedmodel-v5';\nimport { sendErrorMessage } from './logger';\n\nexport const reportAndSanitizeError = (\n func: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n err: Error | any,\n): Error => {\n sendErrorMessage(`Caught error in DOP Wallet SDK: ${func}`);\n\n if (err instanceof Error) {\n const error = sanitizeError(err);\n sendErrorMessage(error);\n return error;\n }\n\n const error = new Error('Unknown error.');\n sendErrorMessage(error);\n return error;\n};\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { NetworkName } from 'dop-sharedmodel-v5';
|
|
2
|
+
/**
|
|
3
|
+
* L2s don't manage gas prices in the same way. tx.gasprice (contract) is not necessarily the same value as transactionRequest.gasPrice (ethers).
|
|
4
|
+
* Since overallBatchMinGasPrice is an optional parameter, we simply remove it for L2s. This will skip validation on the contract side.
|
|
5
|
+
*/
|
|
6
|
+
export declare const shouldSetOverallBatchMinGasPriceForNetwork: (networkName: NetworkName) => boolean;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.shouldSetOverallBatchMinGasPriceForNetwork = void 0;
|
|
4
|
+
const dop_sharedmodel_v5_1 = require("dop-sharedmodel-v5");
|
|
5
|
+
/**
|
|
6
|
+
* L2s don't manage gas prices in the same way. tx.gasprice (contract) is not necessarily the same value as transactionRequest.gasPrice (ethers).
|
|
7
|
+
* Since overallBatchMinGasPrice is an optional parameter, we simply remove it for L2s. This will skip validation on the contract side.
|
|
8
|
+
*/
|
|
9
|
+
const shouldSetOverallBatchMinGasPriceForNetwork = (networkName) => {
|
|
10
|
+
switch (networkName) {
|
|
11
|
+
case dop_sharedmodel_v5_1.NetworkName.Arbitrum:
|
|
12
|
+
case dop_sharedmodel_v5_1.NetworkName.ArbitrumGoerli:
|
|
13
|
+
// L2s should not set overallBatchMinGasPrice.
|
|
14
|
+
return false;
|
|
15
|
+
case dop_sharedmodel_v5_1.NetworkName.Xlayer:
|
|
16
|
+
case dop_sharedmodel_v5_1.NetworkName.XlayerTestnet:
|
|
17
|
+
return false;
|
|
18
|
+
case dop_sharedmodel_v5_1.NetworkName.Dop:
|
|
19
|
+
throw new Error('Invalid network for transaction');
|
|
20
|
+
case dop_sharedmodel_v5_1.NetworkName.Ethereum:
|
|
21
|
+
case dop_sharedmodel_v5_1.NetworkName.BNBChain:
|
|
22
|
+
case dop_sharedmodel_v5_1.NetworkName.Polygon:
|
|
23
|
+
case dop_sharedmodel_v5_1.NetworkName.EthereumRopsten_DEPRECATED:
|
|
24
|
+
case dop_sharedmodel_v5_1.NetworkName.EthereumGoerli:
|
|
25
|
+
case dop_sharedmodel_v5_1.NetworkName.PolygonMumbai:
|
|
26
|
+
case dop_sharedmodel_v5_1.NetworkName.Hardhat:
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
exports.shouldSetOverallBatchMinGasPriceForNetwork = shouldSetOverallBatchMinGasPriceForNetwork;
|
|
31
|
+
//# sourceMappingURL=gas-price.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gas-price.js","sourceRoot":"","sources":["../../src/utils/gas-price.ts"],"names":[],"mappings":";;;AAAA,2DAAiD;AAEjD;;;GAGG;AACI,MAAM,0CAA0C,GAAG,CACxD,WAAwB,EACxB,EAAE;IACF,QAAQ,WAAW,EAAE;QACnB,KAAK,gCAAW,CAAC,QAAQ,CAAC;QAC1B,KAAK,gCAAW,CAAC,cAAc;YAC7B,8CAA8C;YAC9C,OAAO,KAAK,CAAC;QACf,KAAK,gCAAW,CAAC,MAAM,CAAC;QACxB,KAAK,gCAAW,CAAC,aAAa;YAC5B,OAAO,KAAK,CAAC;QACf,KAAK,gCAAW,CAAC,GAAG;YAClB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,KAAK,gCAAW,CAAC,QAAQ,CAAC;QAC1B,KAAK,gCAAW,CAAC,QAAQ,CAAC;QAC1B,KAAK,gCAAW,CAAC,OAAO,CAAC;QACzB,KAAK,gCAAW,CAAC,0BAA0B,CAAC;QAC5C,KAAK,gCAAW,CAAC,cAAc,CAAC;QAChC,KAAK,gCAAW,CAAC,aAAa,CAAC;QAC/B,KAAK,gCAAW,CAAC,OAAO;YACtB,OAAO,IAAI,CAAC;KACf;AACH,CAAC,CAAC;AAtBW,QAAA,0CAA0C,8CAsBrD","sourcesContent":["import { NetworkName } from 'dop-sharedmodel-v5';\n\n/**\n * L2s don't manage gas prices in the same way. tx.gasprice (contract) is not necessarily the same value as transactionRequest.gasPrice (ethers).\n * Since overallBatchMinGasPrice is an optional parameter, we simply remove it for L2s. This will skip validation on the contract side.\n */\nexport const shouldSetOverallBatchMinGasPriceForNetwork = (\n networkName: NetworkName,\n) => {\n switch (networkName) {\n case NetworkName.Arbitrum:\n case NetworkName.ArbitrumGoerli:\n // L2s should not set overallBatchMinGasPrice.\n return false;\n case NetworkName.Xlayer:\n case NetworkName.XlayerTestnet:\n return false;\n case NetworkName.Dop:\n throw new Error('Invalid network for transaction');\n case NetworkName.Ethereum:\n case NetworkName.BNBChain:\n case NetworkName.Polygon:\n case NetworkName.EthereumRopsten_DEPRECATED:\n case NetworkName.EthereumGoerli:\n case NetworkName.PolygonMumbai:\n case NetworkName.Hardhat:\n return true;\n }\n};\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./blocked-address"), exports);
|
|
18
|
+
__exportStar(require("./logger"), exports);
|
|
19
|
+
__exportStar(require("./utils"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,2CAAyB;AACzB,0CAAwB","sourcesContent":["export * from './blocked-address';\nexport * from './logger';\nexport * from './utils';\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setLoggers = exports.sendErrorMessage = exports.sendMessage = void 0;
|
|
4
|
+
let log;
|
|
5
|
+
let error;
|
|
6
|
+
const sendMessage = (msg) => {
|
|
7
|
+
if (log)
|
|
8
|
+
log(msg);
|
|
9
|
+
};
|
|
10
|
+
exports.sendMessage = sendMessage;
|
|
11
|
+
const sendErrorMessage = (err) => {
|
|
12
|
+
if (error)
|
|
13
|
+
error(err);
|
|
14
|
+
};
|
|
15
|
+
exports.sendErrorMessage = sendErrorMessage;
|
|
16
|
+
const setLoggers = (logFunc, errorFunc) => {
|
|
17
|
+
log = logFunc;
|
|
18
|
+
error = errorFunc;
|
|
19
|
+
};
|
|
20
|
+
exports.setLoggers = setLoggers;
|
|
21
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;AAAA,IAAI,GAAoC,CAAC;AACzC,IAAI,KAA8C,CAAC;AAE5C,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE;IACzC,IAAI,GAAG;QAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACpB,CAAC,CAAC;AAFW,QAAA,WAAW,eAEtB;AAEK,MAAM,gBAAgB,GAAG,CAAC,GAAmB,EAAE,EAAE;IACtD,IAAI,KAAK;QAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B;AAEK,MAAM,UAAU,GAAG,CACxB,OAAwC,EACxC,SAAkD,EAClD,EAAE;IACF,GAAG,GAAG,OAAO,CAAC;IACd,KAAK,GAAG,SAAS,CAAC;AACpB,CAAC,CAAC;AANW,QAAA,UAAU,cAMrB","sourcesContent":["let log: Optional<(msg: string) => void>;\nlet error: Optional<(err: Error | string) => void>;\n\nexport const sendMessage = (msg: string) => {\n if (log) log(msg);\n};\n\nexport const sendErrorMessage = (err: Error | string) => {\n if (error) error(err);\n};\n\nexport const setLoggers = (\n logFunc: Optional<(msg: string) => void>,\n errorFunc: Optional<(err: Error | string) => void>,\n) => {\n log = logFunc;\n error = errorFunc;\n};\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { ContractTransaction } from 'ethers';
|
|
2
|
+
export declare const compareStringArrays: (a: Optional<string[]>, b: Optional<string[]>) => boolean;
|
|
3
|
+
export declare const compareContractTransactionArrays: (a: Optional<ContractTransaction[]>, b: Optional<ContractTransaction[]>) => boolean;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.compareContractTransactionArrays = exports.compareStringArrays = void 0;
|
|
4
|
+
const logger_1 = require("./logger");
|
|
5
|
+
const compareStringArrays = (a, b) => {
|
|
6
|
+
if (!a && !b) {
|
|
7
|
+
return true;
|
|
8
|
+
}
|
|
9
|
+
if (!a || !b || a.length !== b.length) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
for (const el of a) {
|
|
13
|
+
if (!b.includes(el)) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return true;
|
|
18
|
+
};
|
|
19
|
+
exports.compareStringArrays = compareStringArrays;
|
|
20
|
+
const compareContractTransactionArrays = (a, b) => {
|
|
21
|
+
if (!a && !b) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
if (!a || !b || a.length !== b.length) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
for (let i = 0; i < a.length; i += 1) {
|
|
29
|
+
for (const key of Object.keys(a[i])) {
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
31
|
+
if (a[i][key] !== b[i][key]) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
if (!(err instanceof Error)) {
|
|
39
|
+
throw err;
|
|
40
|
+
}
|
|
41
|
+
(0, logger_1.sendErrorMessage)(`Could not compare contract transaction arrays: ${err.message}`);
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
return true;
|
|
45
|
+
};
|
|
46
|
+
exports.compareContractTransactionArrays = compareContractTransactionArrays;
|
|
47
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":";;;AACA,qCAA4C;AAErC,MAAM,mBAAmB,GAAG,CACjC,CAAqB,EACrB,CAAqB,EACZ,EAAE;IACX,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;QACZ,OAAO,IAAI,CAAC;KACb;IACD,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;QACrC,OAAO,KAAK,CAAC;KACd;IACD,KAAK,MAAM,EAAE,IAAI,CAAC,EAAE;QAClB,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;YACnB,OAAO,KAAK,CAAC;SACd;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAhBW,QAAA,mBAAmB,uBAgB9B;AAEK,MAAM,gCAAgC,GAAG,CAC9C,CAAkC,EAClC,CAAkC,EACzB,EAAE;IACX,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;QACZ,OAAO,IAAI,CAAC;KACb;IACD,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;QACrC,OAAO,KAAK,CAAC;KACd;IACD,IAAI;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YACpC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACnC,sEAAsE;gBACtE,IAAK,CAAC,CAAC,CAAC,CAAS,CAAC,GAAG,CAAC,KAAM,CAAC,CAAC,CAAC,CAAS,CAAC,GAAG,CAAC,EAAE;oBAC7C,OAAO,KAAK,CAAC;iBACd;aACF;SACF;KACF;IAAC,OAAO,GAAG,EAAE;QACZ,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,EAAE;YAC3B,MAAM,GAAG,CAAC;SACX;QACD,IAAA,yBAAgB,EACd,kDAAkD,GAAG,CAAC,OAAO,EAAE,CAChE,CAAC;QACF,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AA9BW,QAAA,gCAAgC,oCA8B3C","sourcesContent":["import { ContractTransaction } from 'ethers';\nimport { sendErrorMessage } from './logger';\n\nexport const compareStringArrays = (\n a: Optional<string[]>,\n b: Optional<string[]>,\n): boolean => {\n if (!a && !b) {\n return true;\n }\n if (!a || !b || a.length !== b.length) {\n return false;\n }\n for (const el of a) {\n if (!b.includes(el)) {\n return false;\n }\n }\n return true;\n};\n\nexport const compareContractTransactionArrays = (\n a: Optional<ContractTransaction[]>,\n b: Optional<ContractTransaction[]>,\n): boolean => {\n if (!a && !b) {\n return true;\n }\n if (!a || !b || a.length !== b.length) {\n return false;\n }\n try {\n for (let i = 0; i < a.length; i += 1) {\n for (const key of Object.keys(a[i])) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if ((a[i] as any)[key] !== (b[i] as any)[key]) {\n return false;\n }\n }\n }\n } catch (err) {\n if (!(err instanceof Error)) {\n throw err;\n }\n sendErrorMessage(\n `Could not compare contract transaction arrays: ${err.message}`,\n );\n return false;\n }\n\n return true;\n};\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "dop-wallet-v6",
|
|
3
|
+
"version": "1.1.5",
|
|
4
|
+
"description": "DOP Wallet SDK, compatible with mobile, browser and nodejs environments.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist/**/*",
|
|
9
|
+
"*.js"
|
|
10
|
+
],
|
|
11
|
+
"exports": {
|
|
12
|
+
".": "./dist/index.js",
|
|
13
|
+
"./react-native-shims": "./react-native-shims.js"
|
|
14
|
+
},
|
|
15
|
+
"scripts": {
|
|
16
|
+
"clean": "rm -rf dist",
|
|
17
|
+
"compile": "npm run clean && npm run tsc",
|
|
18
|
+
"tsc-test": "tsc -p tsconfig.test.json && tsc-alias -p tsconfig.test.json",
|
|
19
|
+
"compile-test": "npm run clean && npm run tsc-test",
|
|
20
|
+
"test-coverage": "npm run compile-test && nyc mocha 'src/**/__tests__/*.test.ts'",
|
|
21
|
+
"test": "npm run compile-test && mocha 'src/**/__tests__/*.test.ts'",
|
|
22
|
+
"tsc": "tsc && tsc-alias",
|
|
23
|
+
"check-circular-deps": "madge --circular .",
|
|
24
|
+
"eslint": "eslint src/**/* --ext .ts,.tsx --fix",
|
|
25
|
+
"lint": "npm run check-circular-deps && npm run eslint && npm run tsc && npm run tsc-test",
|
|
26
|
+
"prepare": "npm run compile",
|
|
27
|
+
"postinstall": "node postinstall.js",
|
|
28
|
+
"build-graphql": "graphclient build && rm -rf src/services/dop/quick-sync/graphql/.graphclient && mv .graphclient src/services/dop/quick-sync/graphql"
|
|
29
|
+
},
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"@graphql-mesh/cache-localforage": "^0.7.20",
|
|
32
|
+
"@graphql-mesh/cross-helpers": "^0.3.4",
|
|
33
|
+
"@graphql-mesh/graphql": "^0.34.16",
|
|
34
|
+
"@graphql-mesh/http": "^0.3.28",
|
|
35
|
+
"@graphql-mesh/merger-stitching": "^0.18.24",
|
|
36
|
+
"@graphql-mesh/runtime": "^0.46.23",
|
|
37
|
+
"@graphql-mesh/store": "^0.9.20",
|
|
38
|
+
"@graphql-mesh/types": "^0.91.14",
|
|
39
|
+
"@graphql-mesh/utils": "^0.43.22",
|
|
40
|
+
"@noble/ed25519": "^1.7.1",
|
|
41
|
+
"dop-engine-v5": "1.0.5",
|
|
42
|
+
"dop-sharedmodel-v5": "1.0.5",
|
|
43
|
+
"@whatwg-node/fetch": "^0.8.4",
|
|
44
|
+
"assert": "2.0.0",
|
|
45
|
+
"buffer": "^6.0.3",
|
|
46
|
+
"crypto-browserify": "3.12.0",
|
|
47
|
+
"ethers": "github:web3-devv/ethers.js#v6.7.6",
|
|
48
|
+
"ethereum-cryptography": "^2.0.0",
|
|
49
|
+
"events": "3.3.0",
|
|
50
|
+
"axios": "0.27.2",
|
|
51
|
+
"brotli": "^1.3.3",
|
|
52
|
+
"graphql": "^16.6.0",
|
|
53
|
+
"stream-browserify": "3.0.0"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@graphprotocol/client-cli": "^2.2.20",
|
|
57
|
+
"@types/chai": "^4.3.4",
|
|
58
|
+
"@types/chai-as-promised": "^7.1.5",
|
|
59
|
+
"@types/leveldown": "^4.0.3",
|
|
60
|
+
"@types/mocha": "^10.0.1",
|
|
61
|
+
"@types/node": "^18.11.18",
|
|
62
|
+
"@types/sinon": "^10.0.13",
|
|
63
|
+
"@typescript-eslint/eslint-plugin": "^5.48.2",
|
|
64
|
+
"@typescript-eslint/parser": "^5.48.2",
|
|
65
|
+
"chai": "^4.3.7",
|
|
66
|
+
"chai-as-promised": "^7.1.1",
|
|
67
|
+
"eslint": "^8.32.0",
|
|
68
|
+
"eslint-config-airbnb-base": "^15.0.0",
|
|
69
|
+
"eslint-config-prettier": "^8.6.0",
|
|
70
|
+
"eslint-plugin-import": "^2.27.5",
|
|
71
|
+
"eslint-plugin-no-only-tests": "^3.1.0",
|
|
72
|
+
"leveldown": "^6.1.1",
|
|
73
|
+
"madge": "^5.0.1",
|
|
74
|
+
"mocha": "^10.2.0",
|
|
75
|
+
"nyc": "^15.1.0",
|
|
76
|
+
"sinon": "^15.0.1",
|
|
77
|
+
"ts-node": "^10.9.1",
|
|
78
|
+
"tsc-alias": "^1.8.2",
|
|
79
|
+
"typescript": "^4.9.4"
|
|
80
|
+
},
|
|
81
|
+
"react-native": {
|
|
82
|
+
"crypto": false,
|
|
83
|
+
"util": false
|
|
84
|
+
}
|
|
85
|
+
}
|
package/postinstall.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
const fs = require('node:fs');
|
|
3
|
+
const path = require('node:path');
|
|
4
|
+
|
|
5
|
+
const cwd = process.env.INIT_CWD;
|
|
6
|
+
const reactNativeFiles = ['ios', 'android', 'metro.config.js'];
|
|
7
|
+
const isReactNativeProject = reactNativeFiles.every(file =>
|
|
8
|
+
fs.existsSync(path.join(cwd, file)),
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Patch `cipher-base` so that `stream` is replaced with `stream-browserify`
|
|
13
|
+
*/
|
|
14
|
+
function patchCipherBase() {
|
|
15
|
+
if (!fs.existsSync(path.join(cwd, 'node_modules'))) return;
|
|
16
|
+
if (!fs.existsSync(path.join(cwd, 'node_modules', 'cipher-base'))) return;
|
|
17
|
+
|
|
18
|
+
const cipherBasePackageJson = JSON.parse(
|
|
19
|
+
fs.readFileSync(
|
|
20
|
+
path.join(cwd, 'node_modules', 'cipher-base', 'package.json'),
|
|
21
|
+
'utf8',
|
|
22
|
+
),
|
|
23
|
+
);
|
|
24
|
+
cipherBasePackageJson['react-native'] = {
|
|
25
|
+
stream: 'stream-browserify',
|
|
26
|
+
};
|
|
27
|
+
fs.writeFileSync(
|
|
28
|
+
path.join(cwd, 'node_modules', 'cipher-base', 'package.json'),
|
|
29
|
+
JSON.stringify(cipherBasePackageJson, null, 2),
|
|
30
|
+
'utf8',
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function warnIfNoGetRandomValues() {
|
|
35
|
+
const packageJson = JSON.parse(
|
|
36
|
+
fs.readFileSync(path.join(cwd, 'package.json'), 'utf8'),
|
|
37
|
+
);
|
|
38
|
+
if ('react-native-get-random-values' in packageJson['dependencies']) return;
|
|
39
|
+
throw new Error(
|
|
40
|
+
'react-native-get-random-values is missing. It seems like you are ' +
|
|
41
|
+
'installing dop-wallet in a React Native project. ' +
|
|
42
|
+
'This requires the peer dependency react-native-get-random-values. ' +
|
|
43
|
+
'\n' +
|
|
44
|
+
'Please add it to your package.json dependencies and run npm install ' +
|
|
45
|
+
'(or yarn) again.',
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (isReactNativeProject) {
|
|
50
|
+
patchCipherBase();
|
|
51
|
+
warnIfNoGetRandomValues();
|
|
52
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
|
|
3
|
+
// Wallet (and Engine) uses Buffer,
|
|
4
|
+
// which is not available in React Native.
|
|
5
|
+
global.Buffer ??= require('buffer').Buffer;
|
|
6
|
+
|
|
7
|
+
// Wallet uses ethereum-cryptography,
|
|
8
|
+
// which needs @noble/hashes,
|
|
9
|
+
// which needs crypto.getRandomValues,
|
|
10
|
+
// which is not available in React Native.
|
|
11
|
+
require('react-native-get-random-values');
|
|
12
|
+
|
|
13
|
+
// Engine uses AES encryption,
|
|
14
|
+
// which we shim with browserify-aes,
|
|
15
|
+
// which needs cipher-base,
|
|
16
|
+
// which needs stream-browserify,
|
|
17
|
+
// which needs process.nextTick,
|
|
18
|
+
// which is not available in React Native.
|
|
19
|
+
process.nextTick = setImmediate;
|
|
20
|
+
|
|
21
|
+
// Engine's getPrivateScalarFromPrivateKey uses @noble/ed25519 sha512,
|
|
22
|
+
// which needs (web) crypto.subtle.digest,
|
|
23
|
+
// which is not available in React Native.
|
|
24
|
+
const cryptoBrowserify = require('crypto-browserify');
|
|
25
|
+
global.crypto ??= {};
|
|
26
|
+
global.crypto.subtle ??= {};
|
|
27
|
+
global.crypto.subtle.digest ??= (algorithm, data) => {
|
|
28
|
+
const algo = algorithm.toLowerCase().replace('-', '');
|
|
29
|
+
return cryptoBrowserify.createHash(algo).update(data).digest();
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Other package.json dependencies and why we need them:
|
|
34
|
+
* - assert:
|
|
35
|
+
* - engine uses circomlibjs which uses assert
|
|
36
|
+
* - events:
|
|
37
|
+
* - engine uses EventEmitter;
|
|
38
|
+
* - engine uses levelup which uses EventEmitter
|
|
39
|
+
* - stream-browserify:
|
|
40
|
+
* - engine uses AES encryption, which we shim with browserify-aes, which
|
|
41
|
+
* needs cipher-base, which needs stream
|
|
42
|
+
*/
|