dop-wallet-v6 1.1.9 → 1.2.0
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/dist/services/artifacts/artifact-hash.d.ts +1 -0
- package/dist/services/artifacts/artifact-store.d.ts +1 -0
- package/dist/services/artifacts/artifact-util.js +5 -10
- package/dist/services/artifacts/artifact-util.js.map +1 -1
- package/dist/services/artifacts/json/artifact-v2-hashes.json +0 -65
- package/dist/services/dop/core/artifacts.d.ts +2 -2
- package/dist/services/dop/core/artifacts.js +1 -3
- package/dist/services/dop/core/artifacts.js.map +1 -1
- package/dist/services/dop/quick-sync/graphql/index.js +3 -3
- package/dist/services/dop/quick-sync/graphql/index.js.map +1 -1
- package/dist/services/dop/util/commitment.d.ts +2 -1
- package/dist/services/dop/util/commitment.js +2 -3
- package/dist/services/dop/util/commitment.js.map +1 -1
- package/dist/services/dop/wallets/wallets.js +1 -1
- package/dist/services/dop/wallets/wallets.js.map +1 -1
- package/dist/services/transactions/tx-cross-contract-calls.d.ts +4 -2
- package/dist/services/transactions/tx-cross-contract-calls.js +108 -260
- package/dist/services/transactions/tx-cross-contract-calls.js.map +1 -1
- package/dist/services/transactions/tx-gas-details.js +1 -1
- package/dist/services/transactions/tx-gas-details.js.map +1 -1
- package/dist/services/transactions/tx-gas-relayer-fee-estimator.d.ts +4 -1
- package/dist/services/transactions/tx-gas-relayer-fee-estimator.js +86 -185
- package/dist/services/transactions/tx-gas-relayer-fee-estimator.js.map +1 -1
- package/dist/services/transactions/tx-generator.d.ts +3 -2
- package/dist/services/transactions/tx-generator.js +25 -54
- package/dist/services/transactions/tx-generator.js.map +1 -1
- package/dist/services/transactions/tx-proof-transfer.d.ts +1 -2
- package/dist/services/transactions/tx-proof-transfer.js +17 -11
- package/dist/services/transactions/tx-proof-transfer.js.map +1 -1
- package/dist/services/transactions/tx-proof-unshield.d.ts +3 -2
- package/dist/services/transactions/tx-proof-unshield.js +84 -143
- package/dist/services/transactions/tx-proof-unshield.js.map +1 -1
- package/dist/services/transactions/tx-shield.js.map +1 -1
- package/dist/services/transactions/tx-transfer.d.ts +2 -1
- package/dist/services/transactions/tx-transfer.js +14 -53
- package/dist/services/transactions/tx-transfer.js.map +1 -1
- package/dist/services/transactions/tx-unshield.d.ts +3 -1
- package/dist/services/transactions/tx-unshield.js +37 -116
- package/dist/services/transactions/tx-unshield.js.map +1 -1
- package/package.json +7 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateTransact = exports.generateDummyProofTransactions = exports.createDummyRelayerFeeERC20Amount = exports.nullifiersForTransactions = exports.generateProofTransactions = exports.DUMMY_FROM_ADDRESS = void 0;
|
|
3
|
+
exports.generateUnshieldBaseToken = exports.generateTransact = exports.generateDummyProofTransactions = exports.createDummyRelayerFeeERC20Amount = exports.nullifiersForTransactions = exports.generateProofTransactions = exports.DUMMY_FROM_ADDRESS = void 0;
|
|
4
4
|
const dop_engine_v5_1 = require("dop-engine-v5");
|
|
5
5
|
const dop_sharedmodel_v5_1 = require("dop-sharedmodel-v5");
|
|
6
6
|
const engine_1 = require("../dop/core/engine");
|
|
@@ -12,11 +12,9 @@ const blocked_address_1 = require("../../utils/blocked-address");
|
|
|
12
12
|
const gas_price_1 = require("../../utils/gas-price");
|
|
13
13
|
const DUMMY_AMOUNT = 0n;
|
|
14
14
|
exports.DUMMY_FROM_ADDRESS = '0x000000000000000000000000000000000000dEaD';
|
|
15
|
-
const generateProofTransactions = async (proofType, networkName, dopWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, relayerFeeERC20AmountRecipient, sendWithPublicWallet, relayAdaptID, useDummyProof, overallBatchMinGasPrice, progressCallback
|
|
15
|
+
const generateProofTransactions = async (proofType, networkName, dopWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, relayerFeeERC20AmountRecipient, sendWithPublicWallet, relayAdaptID, useDummyProof, overallBatchMinGasPrice, progressCallback) => {
|
|
16
16
|
const dopWallet = (0, engine_1.fullWalletForID)(dopWalletID);
|
|
17
|
-
|
|
18
|
-
const txs = await transactionsFromERC20Amounts(proofType, erc20AmountRecipients, nftAmountRecipients, dopWallet, encryptionKey, showSenderAddressToRecipient, memoText, networkName, relayerFeeERC20AmountRecipient, sendWithPublicWallet, relayAdaptID, useDummyProof, overallBatchMinGasPrice, progressCallback, valueCheck);
|
|
19
|
-
console.log("txs transactionsFromERC20Amounts", txs);
|
|
17
|
+
const txs = await transactionsFromERC20Amounts(proofType, erc20AmountRecipients, nftAmountRecipients, dopWallet, encryptionKey, showSenderAddressToRecipient, memoText, networkName, relayerFeeERC20AmountRecipient, sendWithPublicWallet, relayAdaptID, useDummyProof, overallBatchMinGasPrice, progressCallback);
|
|
20
18
|
return txs;
|
|
21
19
|
};
|
|
22
20
|
exports.generateProofTransactions = generateProofTransactions;
|
|
@@ -24,9 +22,6 @@ const nullifiersForTransactions = (transactions) => {
|
|
|
24
22
|
return transactions
|
|
25
23
|
.map(transaction => transaction.nullifiers)
|
|
26
24
|
.flat();
|
|
27
|
-
// return transactions
|
|
28
|
-
// .map(transaction => transaction.commitments)
|
|
29
|
-
// .flat() as string[];
|
|
30
25
|
};
|
|
31
26
|
exports.nullifiersForTransactions = nullifiersForTransactions;
|
|
32
27
|
const createDummyRelayerFeeERC20Amount = (feeTokenAddress) => {
|
|
@@ -37,7 +32,7 @@ const createDummyRelayerFeeERC20Amount = (feeTokenAddress) => {
|
|
|
37
32
|
return relayerFeeERC20Amount;
|
|
38
33
|
};
|
|
39
34
|
exports.createDummyRelayerFeeERC20Amount = createDummyRelayerFeeERC20Amount;
|
|
40
|
-
const generateDummyProofTransactions = async (proofType, networkName, dopWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, relayerFeeERC20Amount, sendWithPublicWallet, overallBatchMinGasPrice
|
|
35
|
+
const generateDummyProofTransactions = async (proofType, networkName, dopWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, relayerFeeERC20Amount, sendWithPublicWallet, overallBatchMinGasPrice) => {
|
|
41
36
|
if (!relayerFeeERC20Amount && !sendWithPublicWallet) {
|
|
42
37
|
throw new Error('Must send with relayer or public wallet.');
|
|
43
38
|
}
|
|
@@ -52,8 +47,7 @@ const generateDummyProofTransactions = async (proofType, networkName, dopWalletI
|
|
|
52
47
|
: undefined;
|
|
53
48
|
return (0, exports.generateProofTransactions)(proofType, networkName, dopWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, relayerFeeERC20AmountRecipient, sendWithPublicWallet, undefined, // relayAdaptID
|
|
54
49
|
true, // useDummyProof
|
|
55
|
-
overallBatchMinGasPrice, () => { }
|
|
56
|
-
valueCheck);
|
|
50
|
+
overallBatchMinGasPrice, () => { });
|
|
57
51
|
};
|
|
58
52
|
exports.generateDummyProofTransactions = generateDummyProofTransactions;
|
|
59
53
|
const generateTransact = async (txs, networkName, useDummyProof = false) => {
|
|
@@ -68,46 +62,32 @@ const generateTransact = async (txs, networkName, useDummyProof = false) => {
|
|
|
68
62
|
return transaction;
|
|
69
63
|
};
|
|
70
64
|
exports.generateTransact = generateTransact;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
relayAdaptParamsRandom,
|
|
87
|
-
);
|
|
88
|
-
if (useDummyProof) {
|
|
89
|
-
return {
|
|
90
|
-
...transaction,
|
|
91
|
-
from: DUMMY_FROM_ADDRESS,
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
return transaction;
|
|
95
|
-
};*/
|
|
96
|
-
const transactionsFromERC20Amounts = async (proofType, erc20AmountRecipients, nftAmountRecipients, dopWallet, encryptionKey, showSenderAddressToRecipient, memoText, networkName, relayerFeeERC20AmountRecipient, sendWithPublicWallet, relayAdaptID, useDummyProof, overallBatchMinGasPrice, progressCallback, valueCheck) => {
|
|
65
|
+
const generateUnshieldBaseToken = async (txs, networkName, toWalletAddress, relayAdaptParamsRandom, useDummyProof = false) => {
|
|
66
|
+
(0, dop_1.assertValidEthAddress)(toWalletAddress);
|
|
67
|
+
(0, blocked_address_1.assertNotBlockedAddress)(toWalletAddress);
|
|
68
|
+
const relayAdaptContract = (0, providers_1.getRelayAdaptContractForNetwork)(networkName);
|
|
69
|
+
const transaction = await relayAdaptContract.populateUnshieldBaseToken(txs, toWalletAddress, relayAdaptParamsRandom);
|
|
70
|
+
if (useDummyProof) {
|
|
71
|
+
return {
|
|
72
|
+
...transaction,
|
|
73
|
+
from: exports.DUMMY_FROM_ADDRESS,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
return transaction;
|
|
77
|
+
};
|
|
78
|
+
exports.generateUnshieldBaseToken = generateUnshieldBaseToken;
|
|
79
|
+
const transactionsFromERC20Amounts = async (proofType, erc20AmountRecipients, nftAmountRecipients, dopWallet, encryptionKey, showSenderAddressToRecipient, memoText, networkName, relayerFeeERC20AmountRecipient, sendWithPublicWallet, relayAdaptID, useDummyProof, overallBatchMinGasPrice, progressCallback) => {
|
|
97
80
|
const network = dop_sharedmodel_v5_1.NETWORK_CONFIG[networkName];
|
|
98
81
|
const { chain } = network;
|
|
99
|
-
console.log("generateProofTransactions chain000", chain);
|
|
100
82
|
// Removes overallBatchMinGasPrice for L2 networks.
|
|
101
83
|
const validatedOverallBatchMinGasPrice = (0, gas_price_1.shouldSetOverallBatchMinGasPriceForNetwork)(networkName)
|
|
102
84
|
? BigInt(overallBatchMinGasPrice ?? 0)
|
|
103
85
|
: BigInt(0);
|
|
104
|
-
console.log("generateProofTransactions transactionBatch000", validatedOverallBatchMinGasPrice);
|
|
105
86
|
const transactionBatch = new dop_engine_v5_1.TransactionBatch(chain, validatedOverallBatchMinGasPrice);
|
|
106
87
|
// const transactionBatchNew = new TransactionBatch(
|
|
107
88
|
// chain,
|
|
108
89
|
// validatedOverallBatchMinGasPrice,
|
|
109
90
|
// );
|
|
110
|
-
console.log("generateProofTransactions transactionBatch000", transactionBatch);
|
|
111
91
|
if (relayAdaptID) {
|
|
112
92
|
transactionBatch.setAdaptID(relayAdaptID);
|
|
113
93
|
}
|
|
@@ -117,16 +97,13 @@ const transactionsFromERC20Amounts = async (proofType, erc20AmountRecipients, nf
|
|
|
117
97
|
transactionBatch.addOutput((0, tx_notes_1.erc20NoteFromERC20AmountRecipient)(relayerFeeERC20AmountRecipient, dopWallet, dop_engine_v5_1.OutputType.RelayerFee, false, // showSenderAddressToRecipient - never show sender for Relayer fees
|
|
118
98
|
undefined));
|
|
119
99
|
}
|
|
120
|
-
console.log("generateProofTransactions erc20AmountRecipient11", erc20AmountRecipients);
|
|
121
100
|
erc20AmountRecipients.forEach((erc20AmountRecipient) => {
|
|
122
101
|
addTransactionOutputsERC20(proofType, transactionBatch, erc20AmountRecipient, dopWallet, showSenderAddressToRecipient, memoText);
|
|
123
102
|
});
|
|
124
103
|
nftAmountRecipients.forEach((nftAmountRecipient) => {
|
|
125
104
|
addTransactionOutputsNFT(proofType, transactionBatch, nftAmountRecipient, dopWallet, showSenderAddressToRecipient, memoText);
|
|
126
105
|
});
|
|
127
|
-
|
|
128
|
-
const txBatches = await generateAllProofs(transactionBatch, dopWallet, encryptionKey, useDummyProof, progressCallback, valueCheck);
|
|
129
|
-
console.log("txBatches generateAllProofs", txBatches);
|
|
106
|
+
const txBatches = await generateAllProofs(transactionBatch, dopWallet, encryptionKey, useDummyProof, progressCallback);
|
|
130
107
|
return txBatches;
|
|
131
108
|
};
|
|
132
109
|
const addTransactionOutputsERC20 = (proofType, transactionBatch, erc20AmountRecipient, dopWallet, showSenderAddressToRecipient, memoText) => {
|
|
@@ -190,16 +167,10 @@ const addTransactionOutputsUnshieldNFT = (transactionBatch, nftAmountRecipient,
|
|
|
190
167
|
allowOverride,
|
|
191
168
|
});
|
|
192
169
|
};
|
|
193
|
-
const generateAllProofs = (transactionBatch, dopWallet, encryptionKey, useDummyProof, progressCallback
|
|
170
|
+
const generateAllProofs = (transactionBatch, dopWallet, encryptionKey, useDummyProof, progressCallback) => {
|
|
194
171
|
const prover = (0, prover_1.getProver)();
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
// dopWallet,
|
|
199
|
-
// encryptionKey,
|
|
200
|
-
// )
|
|
201
|
-
// :
|
|
202
|
-
console.log("generateProofTransactions generateAllProofs in 0", transactionBatch);
|
|
203
|
-
return transactionBatch.generateTransactions(prover, dopWallet, encryptionKey, progressCallback, valueCheck);
|
|
172
|
+
return useDummyProof
|
|
173
|
+
? transactionBatch.generateDummyTransactions(prover, dopWallet, encryptionKey)
|
|
174
|
+
: transactionBatch.generateTransactions(prover, dopWallet, encryptionKey, progressCallback);
|
|
204
175
|
};
|
|
205
176
|
//# sourceMappingURL=tx-generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx-generator.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-generator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DopWallet,\n TransactionBatch,\n AdaptID,\n OutputType,\n TransactionStruct,\n ProverProgressCallback,\n getTokenDataERC20,\n getTokenDataNFT,\n ERC721_NOTE_VALUE,\n NFTTokenData,\n} from 'dop-engine-v5';\nimport {\n DopERC20Amount,\n DopERC20AmountRecipient,\n NetworkName,\n NETWORK_CONFIG,\n ProofType,\n DopNFTAmountRecipient,\n NFTTokenType,\n} from 'dop-sharedmodel-v5';\nimport { fullWalletForID, walletForID } from '../dop/core/engine';\nimport {\n getDopSmartWalletContractForNetwork,\n getRelayAdaptContractForNetwork,\n} from '../dop/core/providers';\nimport {\n erc20NoteFromERC20AmountRecipient,\n nftNoteFromNFTAmountRecipient,\n} from './tx-notes';\nimport { getProver } from '../dop/core/prover';\nimport { assertValidEthAddress, assertValidDopAddress } from '../dop';\nimport { assertNotBlockedAddress } from '../../utils/blocked-address';\nimport { shouldSetOverallBatchMinGasPriceForNetwork } from '../../utils/gas-price';\nimport { ContractTransaction } from 'ethers';\n\nconst DUMMY_AMOUNT = 0n;\nexport const DUMMY_FROM_ADDRESS = '0x000000000000000000000000000000000000dEaD';\n\nexport const generateProofTransactions = async (\n proofType: ProofType,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n relayAdaptID: Optional<AdaptID>,\n useDummyProof: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: ProverProgressCallback,\n valueCheck: bigint,\n): Promise<TransactionStruct[]> => {\n const dopWallet = fullWalletForID(dopWalletID);\n\n console.log(\"txs transactionsFromERC20Amounts111\", proofType,\n erc20AmountRecipients,\n nftAmountRecipients,\n dopWallet,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n networkName,\n relayerFeeERC20AmountRecipient,\n sendWithPublicWallet,\n relayAdaptID,\n useDummyProof,\n overallBatchMinGasPrice,\n progressCallback,\n valueCheck\n );\n\n const txs: TransactionStruct[] = await transactionsFromERC20Amounts(\n proofType,\n erc20AmountRecipients,\n nftAmountRecipients,\n dopWallet,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n networkName,\n relayerFeeERC20AmountRecipient,\n sendWithPublicWallet,\n relayAdaptID,\n useDummyProof,\n overallBatchMinGasPrice,\n progressCallback,\n valueCheck,\n );\n console.log(\"txs transactionsFromERC20Amounts\", txs);\n return txs;\n};\n\nexport const nullifiersForTransactions = (\n transactions: TransactionStruct[],\n): string[] => {\n return transactions\n .map(transaction => transaction.nullifiers)\n .flat() as string[];\n // return transactions\n // .map(transaction => transaction.commitments)\n // .flat() as string[];\n};\n\nexport const createDummyRelayerFeeERC20Amount = (feeTokenAddress: string) => {\n const relayerFeeERC20Amount: DopERC20Amount = {\n tokenAddress: feeTokenAddress,\n amount: DUMMY_AMOUNT,\n };\n return relayerFeeERC20Amount;\n};\n\nexport const generateDummyProofTransactions = async (\n proofType: ProofType,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n relayerFeeERC20Amount: Optional<DopERC20Amount>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n valueCheck: bigint,\n): Promise<TransactionStruct[]> => {\n if (!relayerFeeERC20Amount && !sendWithPublicWallet) {\n throw new Error('Must send with relayer or public wallet.');\n }\n\n const dopWallet = walletForID(dopWalletID);\n\n // Use self-wallet as dummy relayer address.\n const relayerDopAddress = dopWallet.getAddress(undefined);\n\n const relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient> =\n relayerFeeERC20Amount\n ? {\n ...relayerFeeERC20Amount,\n recipientAddress: relayerDopAddress,\n }\n : undefined;\n\n return generateProofTransactions(\n proofType,\n networkName,\n dopWalletID,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayerFeeERC20AmountRecipient,\n sendWithPublicWallet,\n undefined, // relayAdaptID\n true, // useDummyProof\n overallBatchMinGasPrice,\n () => {}, // progressCallback (not necessary for dummy txs)\n valueCheck,\n );\n};\n\nexport const generateTransact = async (\n txs: TransactionStruct[],\n networkName: NetworkName,\n useDummyProof = false,\n): Promise<ContractTransaction> => {\n const dopSmartWalletContract =\n getDopSmartWalletContractForNetwork(networkName);\n\n const transaction = await dopSmartWalletContract.transact(txs);\n if (useDummyProof) {\n return {\n ...transaction,\n from: DUMMY_FROM_ADDRESS,\n };\n }\n return transaction;\n};\n\n/*export const generateUnshieldBaseToken = async (\n txs: TransactionStruct[],\n networkName: NetworkName,\n toWalletAddress: string,\n relayAdaptParamsRandom: string,\n useDummyProof = false,\n): Promise<ContractTransaction> => {\n assertValidEthAddress(toWalletAddress);\n assertNotBlockedAddress(toWalletAddress);\n\n const relayAdaptContract = getRelayAdaptContractForNetwork(networkName);\n\n const transaction = await relayAdaptContract.populateUnshieldBaseToken(\n txs,\n toWalletAddress,\n relayAdaptParamsRandom,\n );\n if (useDummyProof) {\n return {\n ...transaction,\n from: DUMMY_FROM_ADDRESS,\n };\n }\n return transaction;\n};*/\n\nconst transactionsFromERC20Amounts = async (\n proofType: ProofType,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n dopWallet: DopWallet,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n networkName: NetworkName,\n relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n relayAdaptID: Optional<AdaptID>,\n useDummyProof: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: ProverProgressCallback,\n valueCheck: bigint,\n): Promise<TransactionStruct[]> => {\n const network = NETWORK_CONFIG[networkName];\n const { chain } = network;\n console.log(\"generateProofTransactions chain000\", chain);\n\n // Removes overallBatchMinGasPrice for L2 networks.\n const validatedOverallBatchMinGasPrice =\n shouldSetOverallBatchMinGasPriceForNetwork(networkName)\n ? BigInt(overallBatchMinGasPrice ?? 0)\n : BigInt(0);\n\n console.log(\"generateProofTransactions transactionBatch000\", validatedOverallBatchMinGasPrice);\n\n const transactionBatch = new TransactionBatch(\n chain,\n validatedOverallBatchMinGasPrice,\n );\n // const transactionBatchNew = new TransactionBatch(\n // chain,\n // validatedOverallBatchMinGasPrice,\n // );\n console.log(\"generateProofTransactions transactionBatch000\", transactionBatch);\n\n if (relayAdaptID) {\n transactionBatch.setAdaptID(relayAdaptID);\n }\n\n if (relayerFeeERC20AmountRecipient && !sendWithPublicWallet) {\n assertValidDopAddress(relayerFeeERC20AmountRecipient.recipientAddress);\n\n // Add Relayer Fee - must be first transaction in the batch, and first output for the transaction.\n transactionBatch.addOutput(\n erc20NoteFromERC20AmountRecipient(\n relayerFeeERC20AmountRecipient,\n dopWallet,\n OutputType.RelayerFee,\n false, // showSenderAddressToRecipient - never show sender for Relayer fees\n undefined, // memoText\n ),\n );\n }\n console.log(\"generateProofTransactions erc20AmountRecipient11\", erc20AmountRecipients);\n\n erc20AmountRecipients.forEach(\n (erc20AmountRecipient: DopERC20AmountRecipient) => {\n addTransactionOutputsERC20(\n proofType,\n transactionBatch,\n erc20AmountRecipient,\n dopWallet,\n showSenderAddressToRecipient,\n memoText,\n );\n },\n );\n\n nftAmountRecipients.forEach((nftAmountRecipient: DopNFTAmountRecipient) => {\n addTransactionOutputsNFT(\n proofType,\n transactionBatch,\n nftAmountRecipient,\n dopWallet,\n showSenderAddressToRecipient,\n memoText,\n );\n });\n console.log(\"generateProofTransactions generateAllProofs bef\", transactionBatch);\n \n const txBatches = await generateAllProofs(\n transactionBatch,\n dopWallet,\n encryptionKey,\n useDummyProof,\n progressCallback,\n valueCheck,\n );\n\n console.log(\"txBatches generateAllProofs\", txBatches)\n return txBatches;\n};\n\nconst addTransactionOutputsERC20 = (\n proofType: ProofType,\n transactionBatch: TransactionBatch,\n erc20AmountRecipient: DopERC20AmountRecipient,\n dopWallet: DopWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n) => {\n switch (proofType) {\n case ProofType.Transfer: {\n addTransactionOutputsTransferERC20(\n transactionBatch,\n erc20AmountRecipient,\n dopWallet,\n showSenderAddressToRecipient,\n memoText,\n );\n break;\n }\n case ProofType.CrossContractCalls:\n case ProofType.UnshieldBaseToken:\n case ProofType.Unshield: {\n addTransactionOutputsUnshieldERC20(\n transactionBatch,\n erc20AmountRecipient,\n false, // allowOverride\n );\n break;\n }\n }\n};\n\nconst addTransactionOutputsNFT = (\n proofType: ProofType,\n transactionBatch: TransactionBatch,\n nftAmountRecipient: DopNFTAmountRecipient,\n dopWallet: DopWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n) => {\n switch (proofType) {\n case ProofType.Transfer: {\n addTransactionOutputsTransferNFT(\n transactionBatch,\n nftAmountRecipient,\n dopWallet,\n showSenderAddressToRecipient,\n memoText,\n );\n break;\n }\n case ProofType.CrossContractCalls:\n case ProofType.UnshieldBaseToken:\n case ProofType.Unshield: {\n addTransactionOutputsUnshieldNFT(\n transactionBatch,\n nftAmountRecipient,\n false, // allowOverride\n );\n break;\n }\n }\n};\n\nconst addTransactionOutputsTransferERC20 = (\n transactionBatch: TransactionBatch,\n erc20AmountRecipient: DopERC20AmountRecipient,\n dopWallet: DopWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n) => {\n assertValidDopAddress(erc20AmountRecipient.recipientAddress);\n\n transactionBatch.addOutput(\n erc20NoteFromERC20AmountRecipient(\n erc20AmountRecipient,\n dopWallet,\n OutputType.Transfer,\n showSenderAddressToRecipient,\n memoText,\n ),\n );\n};\n\nconst addTransactionOutputsUnshieldERC20 = (\n transactionBatch: TransactionBatch,\n erc20AmountRecipient: DopERC20AmountRecipient,\n allowOverride?: boolean,\n) => {\n const { recipientAddress, amount } = erc20AmountRecipient;\n\n assertValidEthAddress(recipientAddress);\n assertNotBlockedAddress(recipientAddress);\n\n const tokenData = getTokenDataERC20(erc20AmountRecipient.tokenAddress);\n\n transactionBatch.addUnshieldData({\n toAddress: recipientAddress,\n value: amount,\n tokenData,\n allowOverride,\n });\n};\n\nconst addTransactionOutputsTransferNFT = (\n transactionBatch: TransactionBatch,\n nftAmountRecipient: DopNFTAmountRecipient,\n dopWallet: DopWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n) => {\n assertValidDopAddress(nftAmountRecipient.recipientAddress);\n\n transactionBatch.addOutput(\n nftNoteFromNFTAmountRecipient(\n nftAmountRecipient,\n dopWallet,\n showSenderAddressToRecipient,\n memoText,\n ),\n );\n};\n\nconst addTransactionOutputsUnshieldNFT = (\n transactionBatch: TransactionBatch,\n nftAmountRecipient: DopNFTAmountRecipient,\n allowOverride?: boolean,\n) => {\n const { recipientAddress, nftAddress, tokenSubID, nftTokenType, amount } =\n nftAmountRecipient;\n\n assertValidEthAddress(recipientAddress);\n assertNotBlockedAddress(recipientAddress);\n\n const tokenData: NFTTokenData = getTokenDataNFT(\n nftAddress,\n nftTokenType as 1 | 2,\n tokenSubID,\n );\n\n const value: bigint =\n nftTokenType === NFTTokenType.ERC721 ? ERC721_NOTE_VALUE : amount;\n\n transactionBatch.addUnshieldData({\n toAddress: recipientAddress,\n value,\n tokenData,\n allowOverride,\n });\n};\n\nconst generateAllProofs = (\n transactionBatch: TransactionBatch,\n dopWallet: DopWallet,\n encryptionKey: string,\n useDummyProof: boolean,\n progressCallback: ProverProgressCallback,\n valueCheck: bigint,\n): Promise<TransactionStruct[]> => {\n const prover = getProver();\n // return useDummyProof\n // ? transactionBatch.generateDummyTransactions(\n // prover,\n // dopWallet,\n // encryptionKey,\n // )\n // : \n console.log(\"generateProofTransactions generateAllProofs in 0\", transactionBatch);\n\n return transactionBatch.generateTransactions(\n prover,\n dopWallet,\n encryptionKey,\n progressCallback,\n valueCheck\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"tx-generator.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-generator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DopWallet,\n TransactionBatch,\n AdaptID,\n OutputType,\n TransactionStruct,\n ProverProgressCallback,\n getTokenDataERC20,\n getTokenDataNFT,\n ERC721_NOTE_VALUE,\n NFTTokenData,\n} from 'dop-engine-v5';\nimport {\n DopERC20Amount,\n DopERC20AmountRecipient,\n NetworkName,\n NETWORK_CONFIG,\n ProofType,\n DopNFTAmountRecipient,\n NFTTokenType,\n} from 'dop-sharedmodel-v5';\nimport { fullWalletForID, walletForID } from '../dop/core/engine';\nimport {\n getDopSmartWalletContractForNetwork,\n getRelayAdaptContractForNetwork,\n} from '../dop/core/providers';\nimport {\n erc20NoteFromERC20AmountRecipient,\n nftNoteFromNFTAmountRecipient,\n} from './tx-notes';\nimport { getProver } from '../dop/core/prover';\nimport { assertValidEthAddress, assertValidDopAddress } from '../dop';\nimport { assertNotBlockedAddress } from '../../utils/blocked-address';\nimport { shouldSetOverallBatchMinGasPriceForNetwork } from '../../utils/gas-price';\nimport { ContractTransaction } from 'ethers';\n\nconst DUMMY_AMOUNT = 0n;\nexport const DUMMY_FROM_ADDRESS = '0x000000000000000000000000000000000000dEaD';\n\nexport const generateProofTransactions = async (\n proofType: ProofType,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n relayAdaptID: Optional<AdaptID>,\n useDummyProof: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: ProverProgressCallback,\n): Promise<TransactionStruct[]> => {\n const dopWallet = fullWalletForID(dopWalletID);\n\n const txs: TransactionStruct[] = await transactionsFromERC20Amounts(\n proofType,\n erc20AmountRecipients,\n nftAmountRecipients,\n dopWallet,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n networkName,\n relayerFeeERC20AmountRecipient,\n sendWithPublicWallet,\n relayAdaptID,\n useDummyProof,\n overallBatchMinGasPrice,\n progressCallback,\n );\n return txs;\n};\n\nexport const nullifiersForTransactions = (\n transactions: TransactionStruct[],\n): string[] => {\n return transactions\n .map(transaction => transaction.nullifiers)\n .flat() as string[];\n};\n\nexport const createDummyRelayerFeeERC20Amount = (feeTokenAddress: string) => {\n const relayerFeeERC20Amount: DopERC20Amount = {\n tokenAddress: feeTokenAddress,\n amount: DUMMY_AMOUNT,\n };\n return relayerFeeERC20Amount;\n};\n\nexport const generateDummyProofTransactions = async (\n proofType: ProofType,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n relayerFeeERC20Amount: Optional<DopERC20Amount>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n): Promise<TransactionStruct[]> => {\n if (!relayerFeeERC20Amount && !sendWithPublicWallet) {\n throw new Error('Must send with relayer or public wallet.');\n }\n\n const dopWallet = walletForID(dopWalletID);\n\n // Use self-wallet as dummy relayer address.\n const relayerDopAddress = dopWallet.getAddress(undefined);\n\n const relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient> =\n relayerFeeERC20Amount\n ? {\n ...relayerFeeERC20Amount,\n recipientAddress: relayerDopAddress,\n }\n : undefined;\n\n return generateProofTransactions(\n proofType,\n networkName,\n dopWalletID,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayerFeeERC20AmountRecipient,\n sendWithPublicWallet,\n undefined, // relayAdaptID\n true, // useDummyProof\n overallBatchMinGasPrice,\n () => {}, // progressCallback (not necessary for dummy txs)\n );\n};\n\nexport const generateTransact = async (\n txs: TransactionStruct[],\n networkName: NetworkName,\n useDummyProof = false,\n): Promise<ContractTransaction> => {\n const dopSmartWalletContract =\n getDopSmartWalletContractForNetwork(networkName);\n\n const transaction = await dopSmartWalletContract.transact(txs);\n if (useDummyProof) {\n return {\n ...transaction,\n from: DUMMY_FROM_ADDRESS,\n };\n }\n return transaction;\n};\n\nexport const generateUnshieldBaseToken = async (\n txs: TransactionStruct[],\n networkName: NetworkName,\n toWalletAddress: string,\n relayAdaptParamsRandom: string,\n useDummyProof = false,\n): Promise<ContractTransaction> => {\n assertValidEthAddress(toWalletAddress);\n assertNotBlockedAddress(toWalletAddress);\n\n const relayAdaptContract = getRelayAdaptContractForNetwork(networkName);\n\n const transaction = await relayAdaptContract.populateUnshieldBaseToken(\n txs,\n toWalletAddress,\n relayAdaptParamsRandom,\n );\n if (useDummyProof) {\n return {\n ...transaction,\n from: DUMMY_FROM_ADDRESS,\n };\n }\n return transaction;\n};\n\nconst transactionsFromERC20Amounts = async (\n proofType: ProofType,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n dopWallet: DopWallet,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n networkName: NetworkName,\n relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n relayAdaptID: Optional<AdaptID>,\n useDummyProof: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: ProverProgressCallback,\n): Promise<TransactionStruct[]> => {\n const network = NETWORK_CONFIG[networkName];\n const { chain } = network;\n\n // Removes overallBatchMinGasPrice for L2 networks.\n const validatedOverallBatchMinGasPrice =\n shouldSetOverallBatchMinGasPriceForNetwork(networkName)\n ? BigInt(overallBatchMinGasPrice ?? 0)\n : BigInt(0);\n\n const transactionBatch = new TransactionBatch(\n chain,\n validatedOverallBatchMinGasPrice,\n );\n // const transactionBatchNew = new TransactionBatch(\n // chain,\n // validatedOverallBatchMinGasPrice,\n // );\n if (relayAdaptID) {\n transactionBatch.setAdaptID(relayAdaptID);\n }\n\n if (relayerFeeERC20AmountRecipient && !sendWithPublicWallet) {\n assertValidDopAddress(relayerFeeERC20AmountRecipient.recipientAddress);\n\n // Add Relayer Fee - must be first transaction in the batch, and first output for the transaction.\n transactionBatch.addOutput(\n erc20NoteFromERC20AmountRecipient(\n relayerFeeERC20AmountRecipient,\n dopWallet,\n OutputType.RelayerFee,\n false, // showSenderAddressToRecipient - never show sender for Relayer fees\n undefined, // memoText\n ),\n );\n }\n\n erc20AmountRecipients.forEach(\n (erc20AmountRecipient: DopERC20AmountRecipient) => {\n addTransactionOutputsERC20(\n proofType,\n transactionBatch,\n erc20AmountRecipient,\n dopWallet,\n showSenderAddressToRecipient,\n memoText,\n );\n },\n );\n\n nftAmountRecipients.forEach((nftAmountRecipient: DopNFTAmountRecipient) => {\n addTransactionOutputsNFT(\n proofType,\n transactionBatch,\n nftAmountRecipient,\n dopWallet,\n showSenderAddressToRecipient,\n memoText,\n );\n });\n \n const txBatches = await generateAllProofs(\n transactionBatch,\n dopWallet,\n encryptionKey,\n useDummyProof,\n progressCallback,\n );\n return txBatches;\n};\n\nconst addTransactionOutputsERC20 = (\n proofType: ProofType,\n transactionBatch: TransactionBatch,\n erc20AmountRecipient: DopERC20AmountRecipient,\n dopWallet: DopWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n) => {\n switch (proofType) {\n case ProofType.Transfer: {\n addTransactionOutputsTransferERC20(\n transactionBatch,\n erc20AmountRecipient,\n dopWallet,\n showSenderAddressToRecipient,\n memoText,\n );\n break;\n }\n case ProofType.CrossContractCalls:\n case ProofType.UnshieldBaseToken:\n case ProofType.Unshield: {\n addTransactionOutputsUnshieldERC20(\n transactionBatch,\n erc20AmountRecipient,\n false, // allowOverride\n );\n break;\n }\n }\n};\n\nconst addTransactionOutputsNFT = (\n proofType: ProofType,\n transactionBatch: TransactionBatch,\n nftAmountRecipient: DopNFTAmountRecipient,\n dopWallet: DopWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n) => {\n switch (proofType) {\n case ProofType.Transfer: {\n addTransactionOutputsTransferNFT(\n transactionBatch,\n nftAmountRecipient,\n dopWallet,\n showSenderAddressToRecipient,\n memoText,\n );\n break;\n }\n case ProofType.CrossContractCalls:\n case ProofType.UnshieldBaseToken:\n case ProofType.Unshield: {\n addTransactionOutputsUnshieldNFT(\n transactionBatch,\n nftAmountRecipient,\n false, // allowOverride\n );\n break;\n }\n }\n};\n\nconst addTransactionOutputsTransferERC20 = (\n transactionBatch: TransactionBatch,\n erc20AmountRecipient: DopERC20AmountRecipient,\n dopWallet: DopWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n) => {\n assertValidDopAddress(erc20AmountRecipient.recipientAddress);\n\n transactionBatch.addOutput(\n erc20NoteFromERC20AmountRecipient(\n erc20AmountRecipient,\n dopWallet,\n OutputType.Transfer,\n showSenderAddressToRecipient,\n memoText,\n ),\n );\n};\n\nconst addTransactionOutputsUnshieldERC20 = (\n transactionBatch: TransactionBatch,\n erc20AmountRecipient: DopERC20AmountRecipient,\n allowOverride?: boolean,\n) => {\n const { recipientAddress, amount } = erc20AmountRecipient;\n\n assertValidEthAddress(recipientAddress);\n assertNotBlockedAddress(recipientAddress);\n\n const tokenData = getTokenDataERC20(erc20AmountRecipient.tokenAddress);\n\n transactionBatch.addUnshieldData({\n toAddress: recipientAddress,\n value: amount,\n tokenData,\n allowOverride,\n });\n};\n\nconst addTransactionOutputsTransferNFT = (\n transactionBatch: TransactionBatch,\n nftAmountRecipient: DopNFTAmountRecipient,\n dopWallet: DopWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n) => {\n assertValidDopAddress(nftAmountRecipient.recipientAddress);\n\n transactionBatch.addOutput(\n nftNoteFromNFTAmountRecipient(\n nftAmountRecipient,\n dopWallet,\n showSenderAddressToRecipient,\n memoText,\n ),\n );\n};\n\nconst addTransactionOutputsUnshieldNFT = (\n transactionBatch: TransactionBatch,\n nftAmountRecipient: DopNFTAmountRecipient,\n allowOverride?: boolean,\n) => {\n const { recipientAddress, nftAddress, tokenSubID, nftTokenType, amount } =\n nftAmountRecipient;\n\n assertValidEthAddress(recipientAddress);\n assertNotBlockedAddress(recipientAddress);\n\n const tokenData: NFTTokenData = getTokenDataNFT(\n nftAddress,\n nftTokenType as 1 | 2,\n tokenSubID,\n );\n\n const value: bigint =\n nftTokenType === NFTTokenType.ERC721 ? ERC721_NOTE_VALUE : amount;\n\n transactionBatch.addUnshieldData({\n toAddress: recipientAddress,\n value,\n tokenData,\n allowOverride,\n });\n};\n\nconst generateAllProofs = (\n transactionBatch: TransactionBatch,\n dopWallet: DopWallet,\n encryptionKey: string,\n useDummyProof: boolean,\n progressCallback: ProverProgressCallback,\n): Promise<TransactionStruct[]> => {\n const prover = getProver();\n return useDummyProof\n ? transactionBatch.generateDummyTransactions(\n prover,\n dopWallet,\n encryptionKey,\n )\n : transactionBatch.generateTransactions(\n prover,\n dopWallet,\n encryptionKey,\n progressCallback,\n );\n};\n"]}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import { NetworkName, DopERC20AmountRecipient, DopNFTAmountRecipient } from 'dop-sharedmodel-v5';
|
|
2
|
-
import { TransactionStruct } from 'dop-engine-v5';
|
|
3
2
|
import { ProverProgressCallback } from 'dop-engine-v5';
|
|
4
|
-
export declare const generateTransferProof: (networkName: NetworkName, dopWalletID: string, encryptionKey: string, showSenderAddressToRecipient: boolean, memoText: Optional<string>, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: ProverProgressCallback
|
|
3
|
+
export declare const generateTransferProof: (networkName: NetworkName, dopWalletID: string, encryptionKey: string, showSenderAddressToRecipient: boolean, memoText: Optional<string>, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: ProverProgressCallback) => Promise<void>;
|
|
@@ -5,23 +5,29 @@ const dop_sharedmodel_v5_1 = require("dop-sharedmodel-v5");
|
|
|
5
5
|
const tx_generator_1 = require("./tx-generator");
|
|
6
6
|
const proof_cache_1 = require("./proof-cache");
|
|
7
7
|
const error_1 = require("../../utils/error");
|
|
8
|
-
const generateTransferProof = async (networkName, dopWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, relayerFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, progressCallback
|
|
8
|
+
const generateTransferProof = async (networkName, dopWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, relayerFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, progressCallback) => {
|
|
9
9
|
try {
|
|
10
10
|
(0, proof_cache_1.setCachedProvedTransaction)(undefined);
|
|
11
|
-
console.log("====== 2",
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
// console.log("====== 2",
|
|
12
|
+
// ProofType.Unshield,
|
|
13
|
+
// networkName,
|
|
14
|
+
// dopWalletID,
|
|
15
|
+
// encryptionKey,
|
|
16
|
+
// false, // showSenderAddressToRecipient
|
|
17
|
+
// undefined, // memoText
|
|
18
|
+
// erc20AmountRecipients,
|
|
19
|
+
// nftAmountRecipients,
|
|
20
|
+
// relayerFeeERC20AmountRecipient,
|
|
21
|
+
// sendWithPublicWallet,
|
|
22
|
+
// undefined, // relayAdaptID
|
|
23
|
+
// false, // useDummyProof
|
|
24
|
+
// overallBatchMinGasPrice,
|
|
25
|
+
// progressCallback);
|
|
16
26
|
const transactions = await (0, tx_generator_1.generateProofTransactions)(dop_sharedmodel_v5_1.ProofType.Transfer, networkName, dopWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, relayerFeeERC20AmountRecipient, sendWithPublicWallet, undefined, // relayAdaptID
|
|
17
27
|
false, // useDummyProof
|
|
18
|
-
overallBatchMinGasPrice, progressCallback
|
|
19
|
-
console.log("generateProofTransactions generateTransferProof0", transactions);
|
|
20
|
-
return transactions;
|
|
28
|
+
overallBatchMinGasPrice, progressCallback);
|
|
21
29
|
const transaction = await (0, tx_generator_1.generateTransact)(transactions, networkName);
|
|
22
|
-
console.log("generateProofTransactions transaction1", transactions);
|
|
23
30
|
const nullifiers = (0, tx_generator_1.nullifiersForTransactions)(transactions);
|
|
24
|
-
console.log("generateProofTransactions nullifiers0", nullifiers);
|
|
25
31
|
(0, proof_cache_1.setCachedProvedTransaction)({
|
|
26
32
|
proofType: dop_sharedmodel_v5_1.ProofType.Transfer,
|
|
27
33
|
dopWalletID,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx-proof-transfer.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-proof-transfer.ts"],"names":[],"mappings":";;;AAAA,2DAK4B;
|
|
1
|
+
{"version":3,"file":"tx-proof-transfer.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-proof-transfer.ts"],"names":[],"mappings":";;;AAAA,2DAK4B;AAC5B,iDAIwB;AACxB,+CAA2D;AAE3D,6CAA2D;AAEpD,MAAM,qBAAqB,GAAG,KAAK,EACxC,WAAwB,EACxB,WAAmB,EACnB,aAAqB,EACrB,4BAAqC,EACrC,QAA0B,EAC1B,qBAAgD,EAChD,mBAA4C,EAC5C,8BAAiE,EACjE,oBAA6B,EAC7B,uBAAyC,EACzC,gBAAwC,EACzB,EAAE;IACjB,IAAI;QACF,IAAA,wCAA0B,EAAC,SAAS,CAAC,CAAC;QAGtC,0BAA0B;QAC1B,wBAAwB;QACxB,iBAAiB;QACjB,iBAAiB;QACjB,mBAAmB;QACnB,2CAA2C;QAC3C,2BAA2B;QAC3B,2BAA2B;QAC3B,yBAAyB;QACzB,oCAAoC;QACpC,0BAA0B;QAC1B,+BAA+B;QAC/B,4BAA4B;QAC5B,6BAA6B;QAC7B,uBAAuB;QACvB,MAAM,YAAY,GAAG,MAAM,IAAA,wCAAyB,EAClD,8BAAS,CAAC,QAAQ,EAClB,WAAW,EACX,WAAW,EACX,aAAa,EACb,4BAA4B,EAC5B,QAAQ,EACR,qBAAqB,EACrB,mBAAmB,EACnB,8BAA8B,EAC9B,oBAAoB,EACpB,SAAS,EAAE,eAAe;QAC1B,KAAK,EAAE,gBAAgB;QACvB,uBAAuB,EACvB,gBAAgB,CACjB,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAgB,EAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAEtE,MAAM,UAAU,GAAG,IAAA,wCAAyB,EAAC,YAAY,CAAC,CAAC;QAE3D,IAAA,wCAA0B,EAAC;YACzB,SAAS,EAAE,8BAAS,CAAC,QAAQ;YAC7B,WAAW;YACX,4BAA4B;YAC5B,QAAQ;YACR,qBAAqB;YACrB,mBAAmB;YACnB,8BAA8B,EAAE,SAAS;YACzC,4BAA4B,EAAE,SAAS;YACvC,+BAA+B,EAAE,SAAS;YAC1C,6BAA6B,EAAE,SAAS;YACxC,kBAAkB,EAAE,SAAS;YAC7B,8BAA8B;YAC9B,oBAAoB;YACpB,WAAW;YACX,uBAAuB;YACvB,UAAU;SACX,CAAC,CAAC;KACJ;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,6BAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC/D;AACH,CAAC,CAAC;AAzEW,QAAA,qBAAqB,yBAyEhC","sourcesContent":["import {\n NetworkName,\n ProofType,\n DopERC20AmountRecipient,\n DopNFTAmountRecipient,\n} from 'dop-sharedmodel-v5';\nimport {\n generateProofTransactions,\n generateTransact,\n nullifiersForTransactions,\n} from './tx-generator';\nimport { setCachedProvedTransaction } from './proof-cache';\nimport { ProverProgressCallback } from 'dop-engine-v5';\nimport { reportAndSanitizeError } from '../../utils/error';\n\nexport const generateTransferProof = async (\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: ProverProgressCallback,\n): Promise<void> => {\n try {\n setCachedProvedTransaction(undefined);\n\n\n // console.log(\"====== 2\",\n // ProofType.Unshield,\n // networkName,\n // dopWalletID,\n // encryptionKey,\n // false, // showSenderAddressToRecipient\n // undefined, // memoText\n // erc20AmountRecipients,\n // nftAmountRecipients,\n // relayerFeeERC20AmountRecipient,\n // sendWithPublicWallet,\n // undefined, // relayAdaptID\n // false, // useDummyProof\n // overallBatchMinGasPrice,\n // progressCallback);\n const transactions = await generateProofTransactions(\n ProofType.Transfer,\n networkName,\n dopWalletID,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayerFeeERC20AmountRecipient,\n sendWithPublicWallet,\n undefined, // relayAdaptID\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback,\n );\n const transaction = await generateTransact(transactions, networkName);\n\n const nullifiers = nullifiersForTransactions(transactions);\n\n setCachedProvedTransaction({\n proofType: ProofType.Transfer,\n dopWalletID,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayAdaptUnshieldERC20Amounts: undefined,\n relayAdaptUnshieldNFTAmounts: undefined,\n relayAdaptShieldERC20Recipients: undefined,\n relayAdaptShieldNFTRecipients: undefined,\n crossContractCalls: undefined,\n relayerFeeERC20AmountRecipient,\n sendWithPublicWallet,\n transaction,\n overallBatchMinGasPrice,\n nullifiers,\n });\n } catch (err) {\n throw reportAndSanitizeError(generateTransferProof.name, err);\n }\n};\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import { NetworkName, DopERC20AmountRecipient, DopNFTAmountRecipient } from 'dop-sharedmodel-v5';
|
|
1
|
+
import { DopERC20Amount, NetworkName, DopERC20AmountRecipient, DopNFTAmountRecipient } from 'dop-sharedmodel-v5';
|
|
2
2
|
import { ProverProgressCallback } from 'dop-engine-v5';
|
|
3
|
-
export declare const generateUnshieldProof: (networkName: NetworkName, dopWalletID: string, encryptionKey: string, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: ProverProgressCallback
|
|
3
|
+
export declare const generateUnshieldProof: (networkName: NetworkName, dopWalletID: string, encryptionKey: string, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: ProverProgressCallback) => Promise<void>;
|
|
4
|
+
export declare const generateUnshieldBaseTokenProof: (networkName: NetworkName, publicWalletAddress: string, dopWalletID: string, encryptionKey: string, wrappedERC20Amount: DopERC20Amount, relayerFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: ProverProgressCallback) => Promise<void>;
|
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateUnshieldProof = void 0;
|
|
3
|
+
exports.generateUnshieldBaseTokenProof = exports.generateUnshieldProof = void 0;
|
|
4
4
|
const dop_sharedmodel_v5_1 = require("dop-sharedmodel-v5");
|
|
5
5
|
const tx_generator_1 = require("./tx-generator");
|
|
6
|
+
const wallets_1 = require("../dop/wallets/wallets");
|
|
6
7
|
const proof_cache_1 = require("./proof-cache");
|
|
8
|
+
const providers_1 = require("../dop/core/providers");
|
|
9
|
+
const dop_engine_v5_1 = require("dop-engine-v5");
|
|
10
|
+
const blocked_address_1 = require("../../utils/blocked-address");
|
|
11
|
+
const tx_cross_contract_calls_1 = require("./tx-cross-contract-calls");
|
|
7
12
|
const error_1 = require("../../utils/error");
|
|
8
|
-
const generateUnshieldProof = async (networkName, dopWalletID, encryptionKey, erc20AmountRecipients, nftAmountRecipients, relayerFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, progressCallback
|
|
13
|
+
const generateUnshieldProof = async (networkName, dopWalletID, encryptionKey, erc20AmountRecipients, nftAmountRecipients, relayerFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, progressCallback) => {
|
|
9
14
|
try {
|
|
10
15
|
(0, proof_cache_1.setCachedProvedTransaction)(undefined);
|
|
11
16
|
const transactions = await (0, tx_generator_1.generateProofTransactions)(dop_sharedmodel_v5_1.ProofType.Unshield, networkName, dopWalletID, encryptionKey, false, // showSenderAddressToRecipient
|
|
12
17
|
undefined, // memoText
|
|
13
18
|
erc20AmountRecipients, nftAmountRecipients, relayerFeeERC20AmountRecipient, sendWithPublicWallet, undefined, // relayAdaptID
|
|
14
19
|
false, // useDummyProof
|
|
15
|
-
overallBatchMinGasPrice, progressCallback
|
|
20
|
+
overallBatchMinGasPrice, progressCallback);
|
|
16
21
|
const transaction = await (0, tx_generator_1.generateTransact)(transactions, networkName);
|
|
17
22
|
const nullifiers = (0, tx_generator_1.nullifiersForTransactions)(transactions);
|
|
18
23
|
(0, proof_cache_1.setCachedProvedTransaction)({
|
|
@@ -39,145 +44,81 @@ const generateUnshieldProof = async (networkName, dopWalletID, encryptionKey, er
|
|
|
39
44
|
}
|
|
40
45
|
};
|
|
41
46
|
exports.generateUnshieldProof = generateUnshieldProof;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
// ProofType.Unshield,
|
|
118
|
-
// networkName,
|
|
119
|
-
// dopWalletID,
|
|
120
|
-
// encryptionKey,
|
|
121
|
-
// false, // showSenderAddressToRecipient
|
|
122
|
-
// undefined, // memoText
|
|
123
|
-
// erc20AmountRecipients,
|
|
124
|
-
// nftAmountRecipients,
|
|
125
|
-
// relayerFeeERC20AmountRecipient,
|
|
126
|
-
// sendWithPublicWallet,
|
|
127
|
-
// undefined, // relayAdaptID
|
|
128
|
-
// false, // useDummyProof
|
|
129
|
-
// overallBatchMinGasPrice,
|
|
130
|
-
// progressCallback);
|
|
131
|
-
// Generate final txs with relay adapt ID.
|
|
132
|
-
const transactions = await generateProofTransactions(
|
|
133
|
-
ProofType.UnshieldBaseToken,
|
|
134
|
-
networkName,
|
|
135
|
-
dopWalletID,
|
|
136
|
-
encryptionKey,
|
|
137
|
-
showSenderAddressToRecipient,
|
|
138
|
-
memoText,
|
|
139
|
-
relayAdaptUnshieldERC20AmountRecipients,
|
|
140
|
-
relayAdaptUnshieldNFTAmountRecipients,
|
|
141
|
-
relayerFeeERC20AmountRecipient,
|
|
142
|
-
sendWithPublicWallet,
|
|
143
|
-
relayAdaptID,
|
|
144
|
-
false, // useDummyProof
|
|
145
|
-
overallBatchMinGasPrice,
|
|
146
|
-
progressCallback,
|
|
147
|
-
valueCheck
|
|
148
|
-
);
|
|
149
|
-
|
|
150
|
-
const transaction = await generateUnshieldBaseToken(
|
|
151
|
-
transactions,
|
|
152
|
-
networkName,
|
|
153
|
-
publicWalletAddress,
|
|
154
|
-
relayAdaptParamsRandom,
|
|
155
|
-
false, // useDummyProof
|
|
156
|
-
);
|
|
157
|
-
|
|
158
|
-
const nullifiers = nullifiersForTransactions(transactions);
|
|
159
|
-
|
|
160
|
-
setCachedProvedTransaction({
|
|
161
|
-
proofType: ProofType.UnshieldBaseToken,
|
|
162
|
-
dopWalletID,
|
|
163
|
-
showSenderAddressToRecipient,
|
|
164
|
-
memoText,
|
|
165
|
-
erc20AmountRecipients,
|
|
166
|
-
nftAmountRecipients,
|
|
167
|
-
relayAdaptUnshieldERC20Amounts,
|
|
168
|
-
relayAdaptUnshieldNFTAmounts: undefined,
|
|
169
|
-
relayAdaptShieldERC20Recipients: undefined,
|
|
170
|
-
relayAdaptShieldNFTRecipients: undefined,
|
|
171
|
-
crossContractCalls: undefined,
|
|
172
|
-
relayerFeeERC20AmountRecipient,
|
|
173
|
-
sendWithPublicWallet,
|
|
174
|
-
transaction,
|
|
175
|
-
overallBatchMinGasPrice,
|
|
176
|
-
nullifiers,
|
|
177
|
-
});
|
|
178
|
-
} catch (err) {
|
|
179
|
-
throw reportAndSanitizeError(generateUnshieldBaseTokenProof.name, err);
|
|
180
|
-
}
|
|
47
|
+
const generateUnshieldBaseTokenProof = async (networkName, publicWalletAddress, dopWalletID, encryptionKey, wrappedERC20Amount, relayerFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, progressCallback) => {
|
|
48
|
+
try {
|
|
49
|
+
(0, blocked_address_1.assertNotBlockedAddress)(publicWalletAddress);
|
|
50
|
+
(0, wallets_1.assertValidEthAddress)(publicWalletAddress);
|
|
51
|
+
(0, proof_cache_1.setCachedProvedTransaction)(undefined);
|
|
52
|
+
const erc20AmountRecipients = [
|
|
53
|
+
{
|
|
54
|
+
...wrappedERC20Amount,
|
|
55
|
+
recipientAddress: publicWalletAddress,
|
|
56
|
+
},
|
|
57
|
+
];
|
|
58
|
+
const relayAdaptUnshieldERC20Amounts = [
|
|
59
|
+
wrappedERC20Amount,
|
|
60
|
+
];
|
|
61
|
+
const relayAdaptUnshieldERC20AmountRecipients = (0, tx_cross_contract_calls_1.createRelayAdaptUnshieldERC20AmountRecipients)(networkName, [
|
|
62
|
+
wrappedERC20Amount,
|
|
63
|
+
]);
|
|
64
|
+
// Empty NFT recipients.
|
|
65
|
+
const nftAmountRecipients = [];
|
|
66
|
+
const relayAdaptUnshieldNFTAmountRecipients = [];
|
|
67
|
+
const relayAdaptContract = (0, providers_1.getRelayAdaptContractForNetwork)(networkName);
|
|
68
|
+
// Generate dummy txs for relay adapt params.
|
|
69
|
+
const dummyTxs = await (0, tx_generator_1.generateDummyProofTransactions)(dop_sharedmodel_v5_1.ProofType.UnshieldBaseToken, networkName, dopWalletID, encryptionKey, false, // showSenderAddressToRecipient
|
|
70
|
+
undefined, // memoText
|
|
71
|
+
relayAdaptUnshieldERC20AmountRecipients, relayAdaptUnshieldNFTAmountRecipients, relayerFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice);
|
|
72
|
+
const relayAdaptParamsRandom = (0, dop_engine_v5_1.randomHex)(31);
|
|
73
|
+
const relayAdaptParams = await relayAdaptContract.getRelayAdaptParamsUnshieldBaseToken(dummyTxs, publicWalletAddress, relayAdaptParamsRandom);
|
|
74
|
+
const relayAdaptID = {
|
|
75
|
+
contract: relayAdaptContract.address,
|
|
76
|
+
parameters: relayAdaptParams,
|
|
77
|
+
};
|
|
78
|
+
const showSenderAddressToRecipient = false;
|
|
79
|
+
const memoText = undefined;
|
|
80
|
+
// console.log("====== 1",
|
|
81
|
+
// ProofType.Unshield,
|
|
82
|
+
// networkName,
|
|
83
|
+
// dopWalletID,
|
|
84
|
+
// encryptionKey,
|
|
85
|
+
// false, // showSenderAddressToRecipient
|
|
86
|
+
// undefined, // memoText
|
|
87
|
+
// erc20AmountRecipients,
|
|
88
|
+
// nftAmountRecipients,
|
|
89
|
+
// relayerFeeERC20AmountRecipient,
|
|
90
|
+
// sendWithPublicWallet,
|
|
91
|
+
// undefined, // relayAdaptID
|
|
92
|
+
// false, // useDummyProof
|
|
93
|
+
// overallBatchMinGasPrice,
|
|
94
|
+
// progressCallback);
|
|
95
|
+
// Generate final txs with relay adapt ID.
|
|
96
|
+
const transactions = await (0, tx_generator_1.generateProofTransactions)(dop_sharedmodel_v5_1.ProofType.UnshieldBaseToken, networkName, dopWalletID, encryptionKey, showSenderAddressToRecipient, memoText, relayAdaptUnshieldERC20AmountRecipients, relayAdaptUnshieldNFTAmountRecipients, relayerFeeERC20AmountRecipient, sendWithPublicWallet, relayAdaptID, false, // useDummyProof
|
|
97
|
+
overallBatchMinGasPrice, progressCallback);
|
|
98
|
+
const transaction = await (0, tx_generator_1.generateUnshieldBaseToken)(transactions, networkName, publicWalletAddress, relayAdaptParamsRandom, false);
|
|
99
|
+
const nullifiers = (0, tx_generator_1.nullifiersForTransactions)(transactions);
|
|
100
|
+
(0, proof_cache_1.setCachedProvedTransaction)({
|
|
101
|
+
proofType: dop_sharedmodel_v5_1.ProofType.UnshieldBaseToken,
|
|
102
|
+
dopWalletID,
|
|
103
|
+
showSenderAddressToRecipient,
|
|
104
|
+
memoText,
|
|
105
|
+
erc20AmountRecipients,
|
|
106
|
+
nftAmountRecipients,
|
|
107
|
+
relayAdaptUnshieldERC20Amounts,
|
|
108
|
+
relayAdaptUnshieldNFTAmounts: undefined,
|
|
109
|
+
relayAdaptShieldERC20Recipients: undefined,
|
|
110
|
+
relayAdaptShieldNFTRecipients: undefined,
|
|
111
|
+
crossContractCalls: undefined,
|
|
112
|
+
relayerFeeERC20AmountRecipient,
|
|
113
|
+
sendWithPublicWallet,
|
|
114
|
+
transaction,
|
|
115
|
+
overallBatchMinGasPrice,
|
|
116
|
+
nullifiers,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
throw (0, error_1.reportAndSanitizeError)(exports.generateUnshieldBaseTokenProof.name, err);
|
|
121
|
+
}
|
|
181
122
|
};
|
|
182
|
-
|
|
123
|
+
exports.generateUnshieldBaseTokenProof = generateUnshieldBaseTokenProof;
|
|
183
124
|
//# sourceMappingURL=tx-proof-unshield.js.map
|