dop-wallet-v6 1.1.7 → 1.1.9
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-downloader.d.ts +1 -1
- package/dist/services/artifacts/artifact-downloader.js +20 -20
- package/dist/services/artifacts/artifact-downloader.js.map +1 -1
- package/dist/services/artifacts/artifact-hash.d.ts +1 -1
- package/dist/services/artifacts/artifact-hash.js +8 -8
- package/dist/services/artifacts/artifact-hash.js.map +1 -1
- package/dist/services/artifacts/artifact-util.d.ts +1 -1
- package/dist/services/artifacts/artifact-util.js +26 -18
- package/dist/services/artifacts/artifact-util.js.map +1 -1
- package/dist/services/artifacts/json/artifact-v2-hashes.json +65 -0
- package/dist/services/dop/core/artifacts.d.ts +3 -3
- package/dist/services/dop/core/artifacts.js +8 -6
- package/dist/services/dop/core/artifacts.js.map +1 -1
- package/dist/services/dop/core/engine.d.ts +2 -2
- package/dist/services/dop/core/engine.js +16 -13
- package/dist/services/dop/core/engine.js.map +1 -1
- package/dist/services/dop/core/prover.d.ts +1 -1
- package/dist/services/dop/core/prover.js +2 -2
- package/dist/services/dop/core/prover.js.map +1 -1
- package/dist/services/dop/core/providers.d.ts +3 -3
- package/dist/services/dop/core/providers.js +16 -16
- package/dist/services/dop/core/providers.js.map +1 -1
- package/dist/services/dop/core/shields.d.ts +1 -1
- package/dist/services/dop/core/shields.js +2 -2
- package/dist/services/dop/core/shields.js.map +1 -1
- package/dist/services/dop/history/transaction-history.d.ts +2 -2
- package/dist/services/dop/history/transaction-history.js +14 -14
- package/dist/services/dop/history/transaction-history.js.map +1 -1
- package/dist/services/dop/process/extract-first-note.d.ts +2 -2
- package/dist/services/dop/process/extract-first-note.js +15 -15
- package/dist/services/dop/process/extract-first-note.js.map +1 -1
- package/dist/services/dop/quick-sync/empty-events.d.ts +1 -1
- package/dist/services/dop/quick-sync/empty-events.js.map +1 -1
- package/dist/services/dop/quick-sync/graph-type-formatters.d.ts +1 -1
- package/dist/services/dop/quick-sync/graph-type-formatters.js +15 -15
- package/dist/services/dop/quick-sync/graph-type-formatters.js.map +1 -1
- package/dist/services/dop/quick-sync/graphql/index.js +5 -5
- package/dist/services/dop/quick-sync/graphql/index.js.map +1 -1
- package/dist/services/dop/quick-sync/quick-sync-graph.d.ts +1 -1
- package/dist/services/dop/quick-sync/quick-sync-graph.js +17 -17
- package/dist/services/dop/quick-sync/quick-sync-graph.js.map +1 -1
- package/dist/services/dop/util/bytes.d.ts +1 -1
- package/dist/services/dop/util/bytes.js +7 -7
- package/dist/services/dop/util/bytes.js.map +1 -1
- package/dist/services/dop/util/commitment.d.ts +1 -2
- package/dist/services/dop/util/commitment.js +5 -4
- package/dist/services/dop/util/commitment.js.map +1 -1
- package/dist/services/dop/util/crypto.d.ts +2 -2
- package/dist/services/dop/util/crypto.js +15 -15
- package/dist/services/dop/util/crypto.js.map +1 -1
- package/dist/services/dop/util/db.d.ts +1 -1
- package/dist/services/dop/util/db.js +2 -2
- package/dist/services/dop/util/db.js.map +1 -1
- package/dist/services/dop/wallets/balance-update.d.ts +2 -2
- package/dist/services/dop/wallets/balance-update.js +6 -6
- package/dist/services/dop/wallets/balance-update.js.map +1 -1
- package/dist/services/dop/wallets/balances.d.ts +2 -2
- package/dist/services/dop/wallets/balances.js.map +1 -1
- package/dist/services/dop/wallets/wallets.d.ts +4 -2
- package/dist/services/dop/wallets/wallets.js +27 -12
- package/dist/services/dop/wallets/wallets.js.map +1 -1
- package/dist/services/ethers/ethers-util.js +2 -2
- package/dist/services/ethers/ethers-util.js.map +1 -1
- package/dist/services/transactions/proof-cache.d.ts +1 -1
- package/dist/services/transactions/proof-cache.js +16 -16
- package/dist/services/transactions/proof-cache.js.map +1 -1
- package/dist/services/transactions/tx-cross-contract-calls.d.ts +2 -4
- package/dist/services/transactions/tx-cross-contract-calls.js +269 -117
- package/dist/services/transactions/tx-cross-contract-calls.js.map +1 -1
- package/dist/services/transactions/tx-gas-details.d.ts +1 -1
- package/dist/services/transactions/tx-gas-details.js +36 -24
- package/dist/services/transactions/tx-gas-details.js.map +1 -1
- package/dist/services/transactions/tx-gas-relayer-fee-estimator.d.ts +1 -4
- package/dist/services/transactions/tx-gas-relayer-fee-estimator.js +187 -88
- package/dist/services/transactions/tx-gas-relayer-fee-estimator.js.map +1 -1
- package/dist/services/transactions/tx-generator.d.ts +4 -5
- package/dist/services/transactions/tx-generator.js +71 -42
- package/dist/services/transactions/tx-generator.js.map +1 -1
- package/dist/services/transactions/tx-notes.d.ts +2 -2
- package/dist/services/transactions/tx-notes.js +13 -13
- package/dist/services/transactions/tx-notes.js.map +1 -1
- package/dist/services/transactions/tx-nullifiers.d.ts +1 -1
- package/dist/services/transactions/tx-nullifiers.js.map +1 -1
- package/dist/services/transactions/tx-proof-transfer.d.ts +4 -3
- package/dist/services/transactions/tx-proof-transfer.js +13 -19
- package/dist/services/transactions/tx-proof-transfer.js.map +1 -1
- package/dist/services/transactions/tx-proof-unshield.d.ts +3 -4
- package/dist/services/transactions/tx-proof-unshield.js +146 -87
- package/dist/services/transactions/tx-proof-unshield.js.map +1 -1
- package/dist/services/transactions/tx-shield-base-token.d.ts +2 -2
- package/dist/services/transactions/tx-shield-base-token.js +13 -10
- package/dist/services/transactions/tx-shield-base-token.js.map +1 -1
- package/dist/services/transactions/tx-shield.d.ts +1 -1
- package/dist/services/transactions/tx-shield.js +16 -12
- package/dist/services/transactions/tx-shield.js.map +1 -1
- package/dist/services/transactions/tx-transfer.d.ts +1 -2
- package/dist/services/transactions/tx-transfer.js +55 -16
- package/dist/services/transactions/tx-transfer.js.map +1 -1
- package/dist/services/transactions/tx-unshield.d.ts +1 -3
- package/dist/services/transactions/tx-unshield.js +119 -40
- package/dist/services/transactions/tx-unshield.js.map +1 -1
- package/dist/utils/blocked-address.js +3 -3
- package/dist/utils/blocked-address.js.map +1 -1
- package/dist/utils/error.js +2 -2
- package/dist/utils/error.js.map +1 -1
- package/dist/utils/gas-price.d.ts +1 -1
- package/dist/utils/gas-price.js +13 -13
- package/dist/utils/gas-price.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
const
|
|
3
|
+
exports.generateTransact = exports.generateDummyProofTransactions = exports.createDummyRelayerFeeERC20Amount = exports.nullifiersForTransactions = exports.generateProofTransactions = exports.DUMMY_FROM_ADDRESS = void 0;
|
|
4
|
+
const dop_engine_v5_1 = require("dop-engine-v5");
|
|
5
|
+
const dop_sharedmodel_v5_1 = require("dop-sharedmodel-v5");
|
|
6
6
|
const engine_1 = require("../dop/core/engine");
|
|
7
7
|
const providers_1 = require("../dop/core/providers");
|
|
8
8
|
const tx_notes_1 = require("./tx-notes");
|
|
@@ -12,9 +12,11 @@ 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, valueCheck) => {
|
|
16
16
|
const dopWallet = (0, engine_1.fullWalletForID)(dopWalletID);
|
|
17
|
-
|
|
17
|
+
console.log("txs transactionsFromERC20Amounts111", proofType, erc20AmountRecipients, nftAmountRecipients, dopWallet, encryptionKey, showSenderAddressToRecipient, memoText, networkName, relayerFeeERC20AmountRecipient, sendWithPublicWallet, relayAdaptID, useDummyProof, overallBatchMinGasPrice, progressCallback, valueCheck);
|
|
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);
|
|
18
20
|
return txs;
|
|
19
21
|
};
|
|
20
22
|
exports.generateProofTransactions = generateProofTransactions;
|
|
@@ -22,6 +24,9 @@ const nullifiersForTransactions = (transactions) => {
|
|
|
22
24
|
return transactions
|
|
23
25
|
.map(transaction => transaction.nullifiers)
|
|
24
26
|
.flat();
|
|
27
|
+
// return transactions
|
|
28
|
+
// .map(transaction => transaction.commitments)
|
|
29
|
+
// .flat() as string[];
|
|
25
30
|
};
|
|
26
31
|
exports.nullifiersForTransactions = nullifiersForTransactions;
|
|
27
32
|
const createDummyRelayerFeeERC20Amount = (feeTokenAddress) => {
|
|
@@ -32,7 +37,7 @@ const createDummyRelayerFeeERC20Amount = (feeTokenAddress) => {
|
|
|
32
37
|
return relayerFeeERC20Amount;
|
|
33
38
|
};
|
|
34
39
|
exports.createDummyRelayerFeeERC20Amount = createDummyRelayerFeeERC20Amount;
|
|
35
|
-
const generateDummyProofTransactions = async (proofType, networkName, dopWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, relayerFeeERC20Amount, sendWithPublicWallet, overallBatchMinGasPrice) => {
|
|
40
|
+
const generateDummyProofTransactions = async (proofType, networkName, dopWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, relayerFeeERC20Amount, sendWithPublicWallet, overallBatchMinGasPrice, valueCheck) => {
|
|
36
41
|
if (!relayerFeeERC20Amount && !sendWithPublicWallet) {
|
|
37
42
|
throw new Error('Must send with relayer or public wallet.');
|
|
38
43
|
}
|
|
@@ -47,7 +52,8 @@ const generateDummyProofTransactions = async (proofType, networkName, dopWalletI
|
|
|
47
52
|
: undefined;
|
|
48
53
|
return (0, exports.generateProofTransactions)(proofType, networkName, dopWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, relayerFeeERC20AmountRecipient, sendWithPublicWallet, undefined, // relayAdaptID
|
|
49
54
|
true, // useDummyProof
|
|
50
|
-
overallBatchMinGasPrice, () => { })
|
|
55
|
+
overallBatchMinGasPrice, () => { }, // progressCallback (not necessary for dummy txs)
|
|
56
|
+
valueCheck);
|
|
51
57
|
};
|
|
52
58
|
exports.generateDummyProofTransactions = generateDummyProofTransactions;
|
|
53
59
|
const generateTransact = async (txs, networkName, useDummyProof = false) => {
|
|
@@ -62,59 +68,76 @@ const generateTransact = async (txs, networkName, useDummyProof = false) => {
|
|
|
62
68
|
return transaction;
|
|
63
69
|
};
|
|
64
70
|
exports.generateTransact = generateTransact;
|
|
65
|
-
const generateUnshieldBaseToken = async (
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
71
|
+
/*export const generateUnshieldBaseToken = async (
|
|
72
|
+
txs: TransactionStruct[],
|
|
73
|
+
networkName: NetworkName,
|
|
74
|
+
toWalletAddress: string,
|
|
75
|
+
relayAdaptParamsRandom: string,
|
|
76
|
+
useDummyProof = false,
|
|
77
|
+
): Promise<ContractTransaction> => {
|
|
78
|
+
assertValidEthAddress(toWalletAddress);
|
|
79
|
+
assertNotBlockedAddress(toWalletAddress);
|
|
80
|
+
|
|
81
|
+
const relayAdaptContract = getRelayAdaptContractForNetwork(networkName);
|
|
82
|
+
|
|
83
|
+
const transaction = await relayAdaptContract.populateUnshieldBaseToken(
|
|
84
|
+
txs,
|
|
85
|
+
toWalletAddress,
|
|
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) => {
|
|
97
|
+
const network = dop_sharedmodel_v5_1.NETWORK_CONFIG[networkName];
|
|
81
98
|
const { chain } = network;
|
|
99
|
+
console.log("generateProofTransactions chain000", chain);
|
|
82
100
|
// Removes overallBatchMinGasPrice for L2 networks.
|
|
83
101
|
const validatedOverallBatchMinGasPrice = (0, gas_price_1.shouldSetOverallBatchMinGasPriceForNetwork)(networkName)
|
|
84
102
|
? BigInt(overallBatchMinGasPrice ?? 0)
|
|
85
103
|
: BigInt(0);
|
|
86
|
-
|
|
104
|
+
console.log("generateProofTransactions transactionBatch000", validatedOverallBatchMinGasPrice);
|
|
105
|
+
const transactionBatch = new dop_engine_v5_1.TransactionBatch(chain, validatedOverallBatchMinGasPrice);
|
|
87
106
|
// const transactionBatchNew = new TransactionBatch(
|
|
88
107
|
// chain,
|
|
89
108
|
// validatedOverallBatchMinGasPrice,
|
|
90
109
|
// );
|
|
110
|
+
console.log("generateProofTransactions transactionBatch000", transactionBatch);
|
|
91
111
|
if (relayAdaptID) {
|
|
92
112
|
transactionBatch.setAdaptID(relayAdaptID);
|
|
93
113
|
}
|
|
94
114
|
if (relayerFeeERC20AmountRecipient && !sendWithPublicWallet) {
|
|
95
115
|
(0, dop_1.assertValidDopAddress)(relayerFeeERC20AmountRecipient.recipientAddress);
|
|
96
116
|
// Add Relayer Fee - must be first transaction in the batch, and first output for the transaction.
|
|
97
|
-
transactionBatch.addOutput((0, tx_notes_1.erc20NoteFromERC20AmountRecipient)(relayerFeeERC20AmountRecipient, dopWallet,
|
|
117
|
+
transactionBatch.addOutput((0, tx_notes_1.erc20NoteFromERC20AmountRecipient)(relayerFeeERC20AmountRecipient, dopWallet, dop_engine_v5_1.OutputType.RelayerFee, false, // showSenderAddressToRecipient - never show sender for Relayer fees
|
|
98
118
|
undefined));
|
|
99
119
|
}
|
|
120
|
+
console.log("generateProofTransactions erc20AmountRecipient11", erc20AmountRecipients);
|
|
100
121
|
erc20AmountRecipients.forEach((erc20AmountRecipient) => {
|
|
101
122
|
addTransactionOutputsERC20(proofType, transactionBatch, erc20AmountRecipient, dopWallet, showSenderAddressToRecipient, memoText);
|
|
102
123
|
});
|
|
103
124
|
nftAmountRecipients.forEach((nftAmountRecipient) => {
|
|
104
125
|
addTransactionOutputsNFT(proofType, transactionBatch, nftAmountRecipient, dopWallet, showSenderAddressToRecipient, memoText);
|
|
105
126
|
});
|
|
106
|
-
|
|
127
|
+
console.log("generateProofTransactions generateAllProofs bef", transactionBatch);
|
|
128
|
+
const txBatches = await generateAllProofs(transactionBatch, dopWallet, encryptionKey, useDummyProof, progressCallback, valueCheck);
|
|
129
|
+
console.log("txBatches generateAllProofs", txBatches);
|
|
107
130
|
return txBatches;
|
|
108
131
|
};
|
|
109
132
|
const addTransactionOutputsERC20 = (proofType, transactionBatch, erc20AmountRecipient, dopWallet, showSenderAddressToRecipient, memoText) => {
|
|
110
133
|
switch (proofType) {
|
|
111
|
-
case
|
|
134
|
+
case dop_sharedmodel_v5_1.ProofType.Transfer: {
|
|
112
135
|
addTransactionOutputsTransferERC20(transactionBatch, erc20AmountRecipient, dopWallet, showSenderAddressToRecipient, memoText);
|
|
113
136
|
break;
|
|
114
137
|
}
|
|
115
|
-
case
|
|
116
|
-
case
|
|
117
|
-
case
|
|
138
|
+
case dop_sharedmodel_v5_1.ProofType.CrossContractCalls:
|
|
139
|
+
case dop_sharedmodel_v5_1.ProofType.UnshieldBaseToken:
|
|
140
|
+
case dop_sharedmodel_v5_1.ProofType.Unshield: {
|
|
118
141
|
addTransactionOutputsUnshieldERC20(transactionBatch, erc20AmountRecipient, false);
|
|
119
142
|
break;
|
|
120
143
|
}
|
|
@@ -122,13 +145,13 @@ const addTransactionOutputsERC20 = (proofType, transactionBatch, erc20AmountReci
|
|
|
122
145
|
};
|
|
123
146
|
const addTransactionOutputsNFT = (proofType, transactionBatch, nftAmountRecipient, dopWallet, showSenderAddressToRecipient, memoText) => {
|
|
124
147
|
switch (proofType) {
|
|
125
|
-
case
|
|
148
|
+
case dop_sharedmodel_v5_1.ProofType.Transfer: {
|
|
126
149
|
addTransactionOutputsTransferNFT(transactionBatch, nftAmountRecipient, dopWallet, showSenderAddressToRecipient, memoText);
|
|
127
150
|
break;
|
|
128
151
|
}
|
|
129
|
-
case
|
|
130
|
-
case
|
|
131
|
-
case
|
|
152
|
+
case dop_sharedmodel_v5_1.ProofType.CrossContractCalls:
|
|
153
|
+
case dop_sharedmodel_v5_1.ProofType.UnshieldBaseToken:
|
|
154
|
+
case dop_sharedmodel_v5_1.ProofType.Unshield: {
|
|
132
155
|
addTransactionOutputsUnshieldNFT(transactionBatch, nftAmountRecipient, false);
|
|
133
156
|
break;
|
|
134
157
|
}
|
|
@@ -136,13 +159,13 @@ const addTransactionOutputsNFT = (proofType, transactionBatch, nftAmountRecipien
|
|
|
136
159
|
};
|
|
137
160
|
const addTransactionOutputsTransferERC20 = (transactionBatch, erc20AmountRecipient, dopWallet, showSenderAddressToRecipient, memoText) => {
|
|
138
161
|
(0, dop_1.assertValidDopAddress)(erc20AmountRecipient.recipientAddress);
|
|
139
|
-
transactionBatch.addOutput((0, tx_notes_1.erc20NoteFromERC20AmountRecipient)(erc20AmountRecipient, dopWallet,
|
|
162
|
+
transactionBatch.addOutput((0, tx_notes_1.erc20NoteFromERC20AmountRecipient)(erc20AmountRecipient, dopWallet, dop_engine_v5_1.OutputType.Transfer, showSenderAddressToRecipient, memoText));
|
|
140
163
|
};
|
|
141
164
|
const addTransactionOutputsUnshieldERC20 = (transactionBatch, erc20AmountRecipient, allowOverride) => {
|
|
142
165
|
const { recipientAddress, amount } = erc20AmountRecipient;
|
|
143
166
|
(0, dop_1.assertValidEthAddress)(recipientAddress);
|
|
144
167
|
(0, blocked_address_1.assertNotBlockedAddress)(recipientAddress);
|
|
145
|
-
const tokenData = (0,
|
|
168
|
+
const tokenData = (0, dop_engine_v5_1.getTokenDataERC20)(erc20AmountRecipient.tokenAddress);
|
|
146
169
|
transactionBatch.addUnshieldData({
|
|
147
170
|
toAddress: recipientAddress,
|
|
148
171
|
value: amount,
|
|
@@ -158,8 +181,8 @@ const addTransactionOutputsUnshieldNFT = (transactionBatch, nftAmountRecipient,
|
|
|
158
181
|
const { recipientAddress, nftAddress, tokenSubID, nftTokenType, amount } = nftAmountRecipient;
|
|
159
182
|
(0, dop_1.assertValidEthAddress)(recipientAddress);
|
|
160
183
|
(0, blocked_address_1.assertNotBlockedAddress)(recipientAddress);
|
|
161
|
-
const tokenData = (0,
|
|
162
|
-
const value = nftTokenType ===
|
|
184
|
+
const tokenData = (0, dop_engine_v5_1.getTokenDataNFT)(nftAddress, nftTokenType, tokenSubID);
|
|
185
|
+
const value = nftTokenType === dop_sharedmodel_v5_1.NFTTokenType.ERC721 ? dop_engine_v5_1.ERC721_NOTE_VALUE : amount;
|
|
163
186
|
transactionBatch.addUnshieldData({
|
|
164
187
|
toAddress: recipientAddress,
|
|
165
188
|
value,
|
|
@@ -167,10 +190,16 @@ const addTransactionOutputsUnshieldNFT = (transactionBatch, nftAmountRecipient,
|
|
|
167
190
|
allowOverride,
|
|
168
191
|
});
|
|
169
192
|
};
|
|
170
|
-
const generateAllProofs = (transactionBatch, dopWallet, encryptionKey, useDummyProof, progressCallback) => {
|
|
193
|
+
const generateAllProofs = (transactionBatch, dopWallet, encryptionKey, useDummyProof, progressCallback, valueCheck) => {
|
|
171
194
|
const prover = (0, prover_1.getProver)();
|
|
172
|
-
return useDummyProof
|
|
173
|
-
|
|
174
|
-
|
|
195
|
+
// return useDummyProof
|
|
196
|
+
// ? transactionBatch.generateDummyTransactions(
|
|
197
|
+
// prover,
|
|
198
|
+
// dopWallet,
|
|
199
|
+
// encryptionKey,
|
|
200
|
+
// )
|
|
201
|
+
// :
|
|
202
|
+
console.log("generateProofTransactions generateAllProofs in 0", transactionBatch);
|
|
203
|
+
return transactionBatch.generateTransactions(prover, dopWallet, encryptionKey, progressCallback, valueCheck);
|
|
175
204
|
};
|
|
176
205
|
//# 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';\nimport {\n DopERC20Amount,\n DopERC20AmountRecipient,\n NetworkName,\n NETWORK_CONFIG,\n ProofType,\n DopNFTAmountRecipient,\n NFTTokenType,\n} from 'dop-sharedmodel';\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
|
+
{"version":3,"file":"tx-generator.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-generator.ts"],"names":[],"mappings":";;;AAAA,iDAWuB;AACvB,2DAQ4B;AAC5B,+CAAkE;AAClE,qDAG+B;AAC/B,yCAGoB;AACpB,+CAA+C;AAC/C,gCAAsE;AACtE,iEAAsE;AACtE,qDAAmF;AAGnF,MAAM,YAAY,GAAG,EAAE,CAAC;AACX,QAAA,kBAAkB,GAAG,4CAA4C,CAAC;AAExE,MAAM,yBAAyB,GAAG,KAAK,EAC5C,SAAoB,EACpB,WAAwB,EACxB,WAAmB,EACnB,aAAqB,EACrB,4BAAqC,EACrC,QAA0B,EAC1B,qBAAgD,EAChD,mBAA4C,EAC5C,8BAAiE,EACjE,oBAA6B,EAC7B,YAA+B,EAC/B,aAAsB,EACtB,uBAAyC,EACzC,gBAAwC,EACxC,UAAkB,EACY,EAAE;IAChC,MAAM,SAAS,GAAG,IAAA,wBAAe,EAAC,WAAW,CAAC,CAAC;IAE/C,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,SAAS,EAC1D,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,EACT,aAAa,EACb,4BAA4B,EAC5B,QAAQ,EACR,WAAW,EACX,8BAA8B,EAC9B,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,uBAAuB,EACvB,gBAAgB,EAChB,UAAU,CACX,CAAC;IAEF,MAAM,GAAG,GAAwB,MAAM,4BAA4B,CACjE,SAAS,EACT,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,EACT,aAAa,EACb,4BAA4B,EAC5B,QAAQ,EACR,WAAW,EACX,8BAA8B,EAC9B,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,uBAAuB,EACvB,gBAAgB,EAChB,UAAU,CACX,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC;IACrD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAvDW,QAAA,yBAAyB,6BAuDpC;AAEK,MAAM,yBAAyB,GAAG,CACvC,YAAiC,EACvB,EAAE;IACZ,OAAO,YAAY;SAChB,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC;SAC1C,IAAI,EAAc,CAAC;IACtB,sBAAsB;IACtB,iDAAiD;IACjD,yBAAyB;AAC3B,CAAC,CAAC;AATW,QAAA,yBAAyB,6BASpC;AAEK,MAAM,gCAAgC,GAAG,CAAC,eAAuB,EAAE,EAAE;IAC1E,MAAM,qBAAqB,GAAmB;QAC5C,YAAY,EAAE,eAAe;QAC7B,MAAM,EAAE,YAAY;KACrB,CAAC;IACF,OAAO,qBAAqB,CAAC;AAC/B,CAAC,CAAC;AANW,QAAA,gCAAgC,oCAM3C;AAEK,MAAM,8BAA8B,GAAG,KAAK,EACjD,SAAoB,EACpB,WAAwB,EACxB,WAAmB,EACnB,aAAqB,EACrB,4BAAqC,EACrC,QAA0B,EAC1B,qBAAgD,EAChD,mBAA4C,EAC5C,qBAA+C,EAC/C,oBAA6B,EAC7B,uBAAyC,EACzC,UAAkB,EACY,EAAE;IAChC,IAAI,CAAC,qBAAqB,IAAI,CAAC,oBAAoB,EAAE;QACnD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;KAC7D;IAED,MAAM,SAAS,GAAG,IAAA,oBAAW,EAAC,WAAW,CAAC,CAAC;IAE3C,4CAA4C;IAC5C,MAAM,iBAAiB,GAAG,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAE1D,MAAM,8BAA8B,GAClC,qBAAqB;QACnB,CAAC,CAAC;YACE,GAAG,qBAAqB;YACxB,gBAAgB,EAAE,iBAAiB;SACpC;QACH,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO,IAAA,iCAAyB,EAC9B,SAAS,EACT,WAAW,EACX,WAAW,EACX,aAAa,EACb,4BAA4B,EAC5B,QAAQ,EACR,qBAAqB,EACrB,mBAAmB,EACnB,8BAA8B,EAC9B,oBAAoB,EACpB,SAAS,EAAE,eAAe;IAC1B,IAAI,EAAE,gBAAgB;IACtB,uBAAuB,EACvB,GAAG,EAAE,GAAE,CAAC,EAAE,iDAAiD;IAC3D,UAAU,CACX,CAAC;AACJ,CAAC,CAAC;AAhDW,QAAA,8BAA8B,kCAgDzC;AAEK,MAAM,gBAAgB,GAAG,KAAK,EACnC,GAAwB,EACxB,WAAwB,EACxB,aAAa,GAAG,KAAK,EACS,EAAE;IAChC,MAAM,sBAAsB,GAC1B,IAAA,+CAAmC,EAAC,WAAW,CAAC,CAAC;IAEnD,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC/D,IAAI,aAAa,EAAE;QACjB,OAAO;YACL,GAAG,WAAW;YACd,IAAI,EAAE,0BAAkB;SACzB,CAAC;KACH;IACD,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAhBW,QAAA,gBAAgB,oBAgB3B;AAEF;;;;;;;;;;;;;;;;;;;;;;;;IAwBI;AAEJ,MAAM,4BAA4B,GAAG,KAAK,EACxC,SAAoB,EACpB,qBAAgD,EAChD,mBAA4C,EAC5C,SAAoB,EACpB,aAAqB,EACrB,4BAAqC,EACrC,QAA0B,EAC1B,WAAwB,EACxB,8BAAiE,EACjE,oBAA6B,EAC7B,YAA+B,EAC/B,aAAsB,EACtB,uBAAyC,EACzC,gBAAwC,EACxC,UAAkB,EACY,EAAE;IAChC,MAAM,OAAO,GAAG,mCAAc,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;IAEzD,mDAAmD;IACnD,MAAM,gCAAgC,GACpC,IAAA,sDAA0C,EAAC,WAAW,CAAC;QACrD,CAAC,CAAC,MAAM,CAAC,uBAAuB,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEd,OAAO,CAAC,GAAG,CAAC,+CAA+C,EAAE,gCAAgC,CAAC,CAAC;IAEjG,MAAM,gBAAgB,GAAG,IAAI,gCAAgB,CAC3C,KAAK,EACL,gCAAgC,CACjC,CAAC;IACF,oDAAoD;IACpD,WAAW;IACX,sCAAsC;IACtC,KAAK;IACL,OAAO,CAAC,GAAG,CAAC,+CAA+C,EAAE,gBAAgB,CAAC,CAAC;IAE/E,IAAI,YAAY,EAAE;QAChB,gBAAgB,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;KAC3C;IAED,IAAI,8BAA8B,IAAI,CAAC,oBAAoB,EAAE;QAC3D,IAAA,2BAAqB,EAAC,8BAA8B,CAAC,gBAAgB,CAAC,CAAC;QAEvE,kGAAkG;QAClG,gBAAgB,CAAC,SAAS,CACxB,IAAA,4CAAiC,EAC/B,8BAA8B,EAC9B,SAAS,EACT,0BAAU,CAAC,UAAU,EACrB,KAAK,EAAE,oEAAoE;QAC3E,SAAS,CACV,CACF,CAAC;KACH;IACD,OAAO,CAAC,GAAG,CAAC,kDAAkD,EAAE,qBAAqB,CAAC,CAAC;IAEvF,qBAAqB,CAAC,OAAO,CAC3B,CAAC,oBAA6C,EAAE,EAAE;QAChD,0BAA0B,CACxB,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,SAAS,EACT,4BAA4B,EAC5B,QAAQ,CACT,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,mBAAmB,CAAC,OAAO,CAAC,CAAC,kBAAyC,EAAE,EAAE;QACxE,wBAAwB,CACtB,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,SAAS,EACT,4BAA4B,EAC5B,QAAQ,CACT,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,iDAAiD,EAAE,gBAAgB,CAAC,CAAC;IAEjF,MAAM,SAAS,GAAG,MAAM,iBAAiB,CACvC,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,UAAU,CACX,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,SAAS,CAAC,CAAA;IACrD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,CACjC,SAAoB,EACpB,gBAAkC,EAClC,oBAA6C,EAC7C,SAAoB,EACpB,4BAAqC,EACrC,QAA0B,EAC1B,EAAE;IACF,QAAQ,SAAS,EAAE;QACjB,KAAK,8BAAS,CAAC,QAAQ,CAAC,CAAC;YACvB,kCAAkC,CAChC,gBAAgB,EAChB,oBAAoB,EACpB,SAAS,EACT,4BAA4B,EAC5B,QAAQ,CACT,CAAC;YACF,MAAM;SACP;QACD,KAAK,8BAAS,CAAC,kBAAkB,CAAC;QAClC,KAAK,8BAAS,CAAC,iBAAiB,CAAC;QACjC,KAAK,8BAAS,CAAC,QAAQ,CAAC,CAAC;YACvB,kCAAkC,CAChC,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,CACN,CAAC;YACF,MAAM;SACP;KACF;AACH,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAC/B,SAAoB,EACpB,gBAAkC,EAClC,kBAAyC,EACzC,SAAoB,EACpB,4BAAqC,EACrC,QAA0B,EAC1B,EAAE;IACF,QAAQ,SAAS,EAAE;QACjB,KAAK,8BAAS,CAAC,QAAQ,CAAC,CAAC;YACvB,gCAAgC,CAC9B,gBAAgB,EAChB,kBAAkB,EAClB,SAAS,EACT,4BAA4B,EAC5B,QAAQ,CACT,CAAC;YACF,MAAM;SACP;QACD,KAAK,8BAAS,CAAC,kBAAkB,CAAC;QAClC,KAAK,8BAAS,CAAC,iBAAiB,CAAC;QACjC,KAAK,8BAAS,CAAC,QAAQ,CAAC,CAAC;YACvB,gCAAgC,CAC9B,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,CACN,CAAC;YACF,MAAM;SACP;KACF;AACH,CAAC,CAAC;AAEF,MAAM,kCAAkC,GAAG,CACzC,gBAAkC,EAClC,oBAA6C,EAC7C,SAAoB,EACpB,4BAAqC,EACrC,QAA0B,EAC1B,EAAE;IACF,IAAA,2BAAqB,EAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IAE7D,gBAAgB,CAAC,SAAS,CACxB,IAAA,4CAAiC,EAC/B,oBAAoB,EACpB,SAAS,EACT,0BAAU,CAAC,QAAQ,EACnB,4BAA4B,EAC5B,QAAQ,CACT,CACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,kCAAkC,GAAG,CACzC,gBAAkC,EAClC,oBAA6C,EAC7C,aAAuB,EACvB,EAAE;IACF,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAAC;IAE1D,IAAA,2BAAqB,EAAC,gBAAgB,CAAC,CAAC;IACxC,IAAA,yCAAuB,EAAC,gBAAgB,CAAC,CAAC;IAE1C,MAAM,SAAS,GAAG,IAAA,iCAAiB,EAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAEvE,gBAAgB,CAAC,eAAe,CAAC;QAC/B,SAAS,EAAE,gBAAgB;QAC3B,KAAK,EAAE,MAAM;QACb,SAAS;QACT,aAAa;KACd,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,gCAAgC,GAAG,CACvC,gBAAkC,EAClC,kBAAyC,EACzC,SAAoB,EACpB,4BAAqC,EACrC,QAA0B,EAC1B,EAAE;IACF,IAAA,2BAAqB,EAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IAE3D,gBAAgB,CAAC,SAAS,CACxB,IAAA,wCAA6B,EAC3B,kBAAkB,EAClB,SAAS,EACT,4BAA4B,EAC5B,QAAQ,CACT,CACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,gCAAgC,GAAG,CACvC,gBAAkC,EAClC,kBAAyC,EACzC,aAAuB,EACvB,EAAE;IACF,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,GACtE,kBAAkB,CAAC;IAErB,IAAA,2BAAqB,EAAC,gBAAgB,CAAC,CAAC;IACxC,IAAA,yCAAuB,EAAC,gBAAgB,CAAC,CAAC;IAE1C,MAAM,SAAS,GAAiB,IAAA,+BAAe,EAC7C,UAAU,EACV,YAAqB,EACrB,UAAU,CACX,CAAC;IAEF,MAAM,KAAK,GACT,YAAY,KAAK,iCAAY,CAAC,MAAM,CAAC,CAAC,CAAC,iCAAiB,CAAC,CAAC,CAAC,MAAM,CAAC;IAEpE,gBAAgB,CAAC,eAAe,CAAC;QAC/B,SAAS,EAAE,gBAAgB;QAC3B,KAAK;QACL,SAAS;QACT,aAAa;KACd,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CACxB,gBAAkC,EAClC,SAAoB,EACpB,aAAqB,EACrB,aAAsB,EACtB,gBAAwC,EACxC,UAAkB,EACY,EAAE;IAChC,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;IAC3B,uBAAuB;IACrB,gDAAgD;IAChD,cAAc;IACd,iBAAiB;IACjB,qBAAqB;IACrB,MAAM;IACN,KAAK;IACP,OAAO,CAAC,GAAG,CAAC,kDAAkD,EAAE,gBAAgB,CAAC,CAAC;IAEhF,OAAO,gBAAgB,CAAC,oBAAoB,CACxC,MAAM,EACN,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,UAAU,CACX,CAAC;AACR,CAAC,CAAC","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,5 +1,5 @@
|
|
|
1
|
-
import { OutputType, TransactNote, DopWallet } from 'dop-engine';
|
|
2
|
-
import { DopNFTAmountRecipient, DopERC20Amount, DopERC20AmountRecipient, DopNFTAmount, DopERC20Recipient } from 'dop-sharedmodel';
|
|
1
|
+
import { OutputType, TransactNote, DopWallet } from 'dop-engine-v5';
|
|
2
|
+
import { DopNFTAmountRecipient, DopERC20Amount, DopERC20AmountRecipient, DopNFTAmount, DopERC20Recipient } from 'dop-sharedmodel-v5';
|
|
3
3
|
export declare const erc20NoteFromERC20AmountRecipient: (erc20AmountRecipient: DopERC20AmountRecipient, dopWallet: DopWallet, outputType: OutputType, showSenderAddressToRecipient: boolean, memoText: Optional<string>) => TransactNote;
|
|
4
4
|
export declare const nftNoteFromNFTAmountRecipient: (nftAmountRecipient: DopNFTAmountRecipient, dopWallet: DopWallet, showSenderAddressToRecipient: boolean, memoText: Optional<string>) => TransactNote;
|
|
5
5
|
export declare const compareERC20AmountRecipients: (a: Optional<DopERC20AmountRecipient>, b: Optional<DopERC20AmountRecipient>) => boolean;
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.compareNFTAmountRecipientArrays = exports.compareNFTAmountArrays = exports.compareERC20RecipientArrays = exports.compareERC20AmountRecipientArrays = exports.compareERC20AmountArrays = exports.compareERC20AmountRecipients = exports.nftNoteFromNFTAmountRecipient = exports.erc20NoteFromERC20AmountRecipient = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
4
|
+
const dop_engine_v5_1 = require("dop-engine-v5");
|
|
5
|
+
const dop_sharedmodel_v5_1 = require("dop-sharedmodel-v5");
|
|
6
6
|
const erc20NoteFromERC20AmountRecipient = (erc20AmountRecipient, dopWallet, outputType, showSenderAddressToRecipient, memoText) => {
|
|
7
7
|
const { amount, recipientAddress } = erc20AmountRecipient;
|
|
8
|
-
const receiverAddressData =
|
|
9
|
-
const random = (0,
|
|
10
|
-
const tokenData = (0,
|
|
11
|
-
return
|
|
8
|
+
const receiverAddressData = dop_engine_v5_1.DopEngine.decodeAddress(recipientAddress);
|
|
9
|
+
const random = (0, dop_engine_v5_1.randomHex)(16);
|
|
10
|
+
const tokenData = (0, dop_engine_v5_1.getTokenDataERC20)(erc20AmountRecipient.tokenAddress);
|
|
11
|
+
return dop_engine_v5_1.TransactNote.createTransfer(receiverAddressData, dopWallet.addressKeys, random, amount, tokenData, dopWallet.getViewingKeyPair(), showSenderAddressToRecipient, outputType, memoText);
|
|
12
12
|
};
|
|
13
13
|
exports.erc20NoteFromERC20AmountRecipient = erc20NoteFromERC20AmountRecipient;
|
|
14
14
|
const nftNoteFromNFTAmountRecipient = (nftAmountRecipient, dopWallet, showSenderAddressToRecipient, memoText) => {
|
|
15
15
|
const { recipientAddress, nftAddress, nftTokenType, tokenSubID, amount } = nftAmountRecipient;
|
|
16
|
-
const random = (0,
|
|
17
|
-
const receiverAddressData =
|
|
18
|
-
const tokenData = (0,
|
|
16
|
+
const random = (0, dop_engine_v5_1.randomHex)(16);
|
|
17
|
+
const receiverAddressData = dop_engine_v5_1.DopEngine.decodeAddress(recipientAddress);
|
|
18
|
+
const tokenData = (0, dop_engine_v5_1.getTokenDataNFT)(nftAddress, nftTokenType, tokenSubID);
|
|
19
19
|
switch (nftTokenType) {
|
|
20
|
-
case
|
|
21
|
-
return
|
|
22
|
-
case
|
|
23
|
-
return
|
|
20
|
+
case dop_sharedmodel_v5_1.NFTTokenType.ERC721:
|
|
21
|
+
return dop_engine_v5_1.TransactNote.createERC721Transfer(receiverAddressData, dopWallet.addressKeys, random, tokenData, dopWallet.getViewingKeyPair(), showSenderAddressToRecipient, memoText);
|
|
22
|
+
case dop_sharedmodel_v5_1.NFTTokenType.ERC1155:
|
|
23
|
+
return dop_engine_v5_1.TransactNote.createERC1155Transfer(receiverAddressData, dopWallet.addressKeys, random, tokenData, BigInt(amount), dopWallet.getViewingKeyPair(), showSenderAddressToRecipient, memoText);
|
|
24
24
|
}
|
|
25
25
|
};
|
|
26
26
|
exports.nftNoteFromNFTAmountRecipient = nftNoteFromNFTAmountRecipient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx-notes.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-notes.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n randomHex,\n OutputType,\n TransactNote,\n DopWallet,\n DopEngine,\n getTokenDataERC20,\n getTokenDataNFT,\n} from 'dop-engine';\nimport {\n NFTTokenType,\n DopNFTAmountRecipient,\n DopERC20Amount,\n DopERC20AmountRecipient,\n DopNFTAmount,\n DopERC20Recipient,\n} from 'dop-sharedmodel';\n\nexport const erc20NoteFromERC20AmountRecipient = (\n erc20AmountRecipient: DopERC20AmountRecipient,\n dopWallet: DopWallet,\n outputType: OutputType,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n): TransactNote => {\n const { amount, recipientAddress } = erc20AmountRecipient;\n\n const receiverAddressData = DopEngine.decodeAddress(recipientAddress);\n const random = randomHex(16);\n\n const tokenData = getTokenDataERC20(erc20AmountRecipient.tokenAddress);\n\n return TransactNote.createTransfer(\n receiverAddressData,\n dopWallet.addressKeys,\n random,\n amount,\n tokenData,\n dopWallet.getViewingKeyPair(),\n showSenderAddressToRecipient,\n outputType,\n memoText,\n );\n};\n\nexport const nftNoteFromNFTAmountRecipient = (\n nftAmountRecipient: DopNFTAmountRecipient,\n dopWallet: DopWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n): TransactNote => {\n const { recipientAddress, nftAddress, nftTokenType, tokenSubID, amount } =\n nftAmountRecipient;\n\n const random = randomHex(16);\n\n const receiverAddressData = DopEngine.decodeAddress(recipientAddress);\n\n const tokenData = getTokenDataNFT(\n nftAddress,\n nftTokenType as 1 | 2,\n tokenSubID,\n );\n\n switch (nftTokenType) {\n case NFTTokenType.ERC721:\n return TransactNote.createERC721Transfer(\n receiverAddressData,\n dopWallet.addressKeys,\n random,\n tokenData,\n dopWallet.getViewingKeyPair(),\n showSenderAddressToRecipient,\n memoText,\n );\n case NFTTokenType.ERC1155:\n return TransactNote.createERC1155Transfer(\n receiverAddressData,\n dopWallet.addressKeys,\n random,\n tokenData,\n BigInt(amount),\n dopWallet.getViewingKeyPair(),\n showSenderAddressToRecipient,\n memoText,\n );\n }\n};\n\nconst compareERC20Amounts = (\n a: Optional<DopERC20Amount>,\n b: Optional<DopERC20Amount>,\n) => {\n return a?.tokenAddress === b?.tokenAddress && a?.amount === b?.amount;\n};\n\nexport const compareERC20AmountRecipients = (\n a: Optional<DopERC20AmountRecipient>,\n b: Optional<DopERC20AmountRecipient>,\n) => {\n return (\n compareERC20Amounts(a, b) && a?.recipientAddress === b?.recipientAddress\n );\n};\n\nexport const compareERC20AmountArrays = (\n a: Optional<DopERC20Amount[]>,\n b: Optional<DopERC20Amount[]>,\n) => {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (const erc20Amount of a) {\n const found = b.find(ta => ta.tokenAddress === erc20Amount.tokenAddress);\n if (!found) {\n return false;\n }\n if (found.amount !== erc20Amount.amount) {\n return false;\n }\n }\n return true;\n};\n\nexport const compareERC20AmountRecipientArrays = (\n a: Optional<DopERC20AmountRecipient[]>,\n b: Optional<DopERC20AmountRecipient[]>,\n) => {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (const erc20Amount of a) {\n const found = b.find(\n ta =>\n ta.tokenAddress === erc20Amount.tokenAddress &&\n ta.recipientAddress === erc20Amount.recipientAddress,\n );\n if (!found) {\n return false;\n }\n if (found.amount !== erc20Amount.amount) {\n return false;\n }\n }\n return true;\n};\n\nexport const compareERC20RecipientArrays = (\n a: Optional<DopERC20Recipient[]>,\n b: Optional<DopERC20Recipient[]>,\n) => {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (const erc20Recipient of a) {\n const found =\n b.find(\n ta =>\n ta.tokenAddress === erc20Recipient.tokenAddress &&\n ta.recipientAddress === erc20Recipient.recipientAddress,\n ) != null;\n if (!found) {\n return false;\n }\n }\n return true;\n};\n\nexport const compareNFTAmountArrays = (\n a: Optional<DopNFTAmount[]>,\n b: Optional<DopNFTAmount[]>,\n) => {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (const nftAmountRecipient of a) {\n const found = b.find(\n ta =>\n ta.nftAddress === nftAmountRecipient.nftAddress &&\n ta.tokenSubID === nftAmountRecipient.tokenSubID,\n );\n if (!found) {\n return false;\n }\n if (found.nftTokenType !== nftAmountRecipient.nftTokenType) {\n return false;\n }\n if (found.amount !== nftAmountRecipient.amount) {\n return false;\n }\n }\n return true;\n};\n\nexport const compareNFTAmountRecipientArrays = (\n a: Optional<DopNFTAmountRecipient[]>,\n b: Optional<DopNFTAmountRecipient[]>,\n) => {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (const nftAmountRecipient of a) {\n const found = b.find(\n ta =>\n ta.nftAddress === nftAmountRecipient.nftAddress &&\n ta.tokenSubID === nftAmountRecipient.tokenSubID,\n );\n if (!found) {\n return false;\n }\n if (found.nftTokenType !== nftAmountRecipient.nftTokenType) {\n return false;\n }\n if (found.recipientAddress !== nftAmountRecipient.recipientAddress) {\n return false;\n }\n if (found.amount !== nftAmountRecipient.amount) {\n return false;\n }\n }\n return true;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"tx-notes.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-notes.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n randomHex,\n OutputType,\n TransactNote,\n DopWallet,\n DopEngine,\n getTokenDataERC20,\n getTokenDataNFT,\n} from 'dop-engine-v5';\nimport {\n NFTTokenType,\n DopNFTAmountRecipient,\n DopERC20Amount,\n DopERC20AmountRecipient,\n DopNFTAmount,\n DopERC20Recipient,\n} from 'dop-sharedmodel-v5';\n\nexport const erc20NoteFromERC20AmountRecipient = (\n erc20AmountRecipient: DopERC20AmountRecipient,\n dopWallet: DopWallet,\n outputType: OutputType,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n): TransactNote => {\n const { amount, recipientAddress } = erc20AmountRecipient;\n\n const receiverAddressData = DopEngine.decodeAddress(recipientAddress);\n const random = randomHex(16);\n\n const tokenData = getTokenDataERC20(erc20AmountRecipient.tokenAddress);\n\n return TransactNote.createTransfer(\n receiverAddressData,\n dopWallet.addressKeys,\n random,\n amount,\n tokenData,\n dopWallet.getViewingKeyPair(),\n showSenderAddressToRecipient,\n outputType,\n memoText,\n );\n};\n\nexport const nftNoteFromNFTAmountRecipient = (\n nftAmountRecipient: DopNFTAmountRecipient,\n dopWallet: DopWallet,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n): TransactNote => {\n const { recipientAddress, nftAddress, nftTokenType, tokenSubID, amount } =\n nftAmountRecipient;\n\n const random = randomHex(16);\n\n const receiverAddressData = DopEngine.decodeAddress(recipientAddress);\n\n const tokenData = getTokenDataNFT(\n nftAddress,\n nftTokenType as 1 | 2,\n tokenSubID,\n );\n\n switch (nftTokenType) {\n case NFTTokenType.ERC721:\n return TransactNote.createERC721Transfer(\n receiverAddressData,\n dopWallet.addressKeys,\n random,\n tokenData,\n dopWallet.getViewingKeyPair(),\n showSenderAddressToRecipient,\n memoText,\n );\n case NFTTokenType.ERC1155:\n return TransactNote.createERC1155Transfer(\n receiverAddressData,\n dopWallet.addressKeys,\n random,\n tokenData,\n BigInt(amount),\n dopWallet.getViewingKeyPair(),\n showSenderAddressToRecipient,\n memoText,\n );\n }\n};\n\nconst compareERC20Amounts = (\n a: Optional<DopERC20Amount>,\n b: Optional<DopERC20Amount>,\n) => {\n return a?.tokenAddress === b?.tokenAddress && a?.amount === b?.amount;\n};\n\nexport const compareERC20AmountRecipients = (\n a: Optional<DopERC20AmountRecipient>,\n b: Optional<DopERC20AmountRecipient>,\n) => {\n return (\n compareERC20Amounts(a, b) && a?.recipientAddress === b?.recipientAddress\n );\n};\n\nexport const compareERC20AmountArrays = (\n a: Optional<DopERC20Amount[]>,\n b: Optional<DopERC20Amount[]>,\n) => {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (const erc20Amount of a) {\n const found = b.find(ta => ta.tokenAddress === erc20Amount.tokenAddress);\n if (!found) {\n return false;\n }\n if (found.amount !== erc20Amount.amount) {\n return false;\n }\n }\n return true;\n};\n\nexport const compareERC20AmountRecipientArrays = (\n a: Optional<DopERC20AmountRecipient[]>,\n b: Optional<DopERC20AmountRecipient[]>,\n) => {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (const erc20Amount of a) {\n const found = b.find(\n ta =>\n ta.tokenAddress === erc20Amount.tokenAddress &&\n ta.recipientAddress === erc20Amount.recipientAddress,\n );\n if (!found) {\n return false;\n }\n if (found.amount !== erc20Amount.amount) {\n return false;\n }\n }\n return true;\n};\n\nexport const compareERC20RecipientArrays = (\n a: Optional<DopERC20Recipient[]>,\n b: Optional<DopERC20Recipient[]>,\n) => {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (const erc20Recipient of a) {\n const found =\n b.find(\n ta =>\n ta.tokenAddress === erc20Recipient.tokenAddress &&\n ta.recipientAddress === erc20Recipient.recipientAddress,\n ) != null;\n if (!found) {\n return false;\n }\n }\n return true;\n};\n\nexport const compareNFTAmountArrays = (\n a: Optional<DopNFTAmount[]>,\n b: Optional<DopNFTAmount[]>,\n) => {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (const nftAmountRecipient of a) {\n const found = b.find(\n ta =>\n ta.nftAddress === nftAmountRecipient.nftAddress &&\n ta.tokenSubID === nftAmountRecipient.tokenSubID,\n );\n if (!found) {\n return false;\n }\n if (found.nftTokenType !== nftAmountRecipient.nftTokenType) {\n return false;\n }\n if (found.amount !== nftAmountRecipient.amount) {\n return false;\n }\n }\n return true;\n};\n\nexport const compareNFTAmountRecipientArrays = (\n a: Optional<DopNFTAmountRecipient[]>,\n b: Optional<DopNFTAmountRecipient[]>,\n) => {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (const nftAmountRecipient of a) {\n const found = b.find(\n ta =>\n ta.nftAddress === nftAmountRecipient.nftAddress &&\n ta.tokenSubID === nftAmountRecipient.tokenSubID,\n );\n if (!found) {\n return false;\n }\n if (found.nftTokenType !== nftAmountRecipient.nftTokenType) {\n return false;\n }\n if (found.recipientAddress !== nftAmountRecipient.recipientAddress) {\n return false;\n }\n if (found.amount !== nftAmountRecipient.amount) {\n return false;\n }\n }\n return true;\n};\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Chain, DopTxidFromNullifiersResponse } from 'dop-sharedmodel';
|
|
1
|
+
import { Chain, DopTxidFromNullifiersResponse } from 'dop-sharedmodel-v5';
|
|
2
2
|
export declare const getCompletedTxidFromNullifiers: (chain: Chain, nullifiers: string[]) => Promise<DopTxidFromNullifiersResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx-nullifiers.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-nullifiers.ts"],"names":[],"mappings":";;;AAIA,6CAA2D;AAC3D,gCAAmC;AAE5B,MAAM,8BAA8B,GAAG,KAAK,EACjD,KAAY,EACZ,UAAoB,EACoB,EAAE;IAC1C,IAAI;QACF,MAAM,MAAM,GAAG,IAAA,eAAS,GAAE,CAAC;QAC3B,MAAM,IAAI,GAAqB,MAAM,MAAM,CAAC,8BAA8B,CACxE,KAAK,EACL,UAAU,CACX,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,CAAC;KACjB;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAC1B,sCAA8B,CAAC,IAAI,EACnC,GAAG,CACJ,CAAC;KACH;AACH,CAAC,CAAC;AAjBW,QAAA,8BAA8B,kCAiBzC","sourcesContent":["import {\n Chain,\n DopTxidFromNullifiersResponse,\n} from 'dop-sharedmodel';\nimport { reportAndSanitizeError } from '../../utils/error';\nimport { getEngine } from '../dop';\n\nexport const getCompletedTxidFromNullifiers = async (\n chain: Chain,\n nullifiers: string[],\n): Promise<DopTxidFromNullifiersResponse> => {\n try {\n const engine = getEngine();\n const txid: Optional<string> = await engine.getCompletedTxidFromNullifiers(\n chain,\n nullifiers,\n );\n return { txid };\n } catch (err) {\n throw reportAndSanitizeError(\n getCompletedTxidFromNullifiers.name,\n err,\n );\n }\n};\n"]}
|
|
1
|
+
{"version":3,"file":"tx-nullifiers.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-nullifiers.ts"],"names":[],"mappings":";;;AAIA,6CAA2D;AAC3D,gCAAmC;AAE5B,MAAM,8BAA8B,GAAG,KAAK,EACjD,KAAY,EACZ,UAAoB,EACoB,EAAE;IAC1C,IAAI;QACF,MAAM,MAAM,GAAG,IAAA,eAAS,GAAE,CAAC;QAC3B,MAAM,IAAI,GAAqB,MAAM,MAAM,CAAC,8BAA8B,CACxE,KAAK,EACL,UAAU,CACX,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,CAAC;KACjB;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAC1B,sCAA8B,CAAC,IAAI,EACnC,GAAG,CACJ,CAAC;KACH;AACH,CAAC,CAAC;AAjBW,QAAA,8BAA8B,kCAiBzC","sourcesContent":["import {\n Chain,\n DopTxidFromNullifiersResponse,\n} from 'dop-sharedmodel-v5';\nimport { reportAndSanitizeError } from '../../utils/error';\nimport { getEngine } from '../dop';\n\nexport const getCompletedTxidFromNullifiers = async (\n chain: Chain,\n nullifiers: string[],\n): Promise<DopTxidFromNullifiersResponse> => {\n try {\n const engine = getEngine();\n const txid: Optional<string> = await engine.getCompletedTxidFromNullifiers(\n chain,\n nullifiers,\n );\n return { txid };\n } catch (err) {\n throw reportAndSanitizeError(\n getCompletedTxidFromNullifiers.name,\n err,\n );\n }\n};\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import { NetworkName, DopERC20AmountRecipient, DopNFTAmountRecipient } from 'dop-sharedmodel';
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import { NetworkName, DopERC20AmountRecipient, DopNFTAmountRecipient } from 'dop-sharedmodel-v5';
|
|
2
|
+
import { TransactionStruct } from 'dop-engine-v5';
|
|
3
|
+
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, valueCheck: bigint) => Promise<TransactionStruct[]>;
|
|
@@ -1,35 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateTransferProof = void 0;
|
|
4
|
-
const
|
|
4
|
+
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, valueCheck) => {
|
|
9
9
|
try {
|
|
10
10
|
(0, proof_cache_1.setCachedProvedTransaction)(undefined);
|
|
11
|
-
|
|
12
|
-
//
|
|
13
|
-
//
|
|
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);
|
|
26
|
-
const transactions = await (0, tx_generator_1.generateProofTransactions)(dop_sharedmodel_1.ProofType.Transfer, networkName, dopWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, relayerFeeERC20AmountRecipient, sendWithPublicWallet, undefined, // relayAdaptID
|
|
11
|
+
console.log("====== 2", dop_sharedmodel_v5_1.ProofType.Unshield, networkName, dopWalletID, encryptionKey, false, // showSenderAddressToRecipient
|
|
12
|
+
undefined, // memoText
|
|
13
|
+
erc20AmountRecipients, nftAmountRecipients, relayerFeeERC20AmountRecipient, sendWithPublicWallet, undefined, // relayAdaptID
|
|
27
14
|
false, // useDummyProof
|
|
28
15
|
overallBatchMinGasPrice, progressCallback);
|
|
16
|
+
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
|
+
false, // useDummyProof
|
|
18
|
+
overallBatchMinGasPrice, progressCallback, valueCheck);
|
|
19
|
+
console.log("generateProofTransactions generateTransferProof0", transactions);
|
|
20
|
+
return transactions;
|
|
29
21
|
const transaction = await (0, tx_generator_1.generateTransact)(transactions, networkName);
|
|
22
|
+
console.log("generateProofTransactions transaction1", transactions);
|
|
30
23
|
const nullifiers = (0, tx_generator_1.nullifiersForTransactions)(transactions);
|
|
24
|
+
console.log("generateProofTransactions nullifiers0", nullifiers);
|
|
31
25
|
(0, proof_cache_1.setCachedProvedTransaction)({
|
|
32
|
-
proofType:
|
|
26
|
+
proofType: dop_sharedmodel_v5_1.ProofType.Transfer,
|
|
33
27
|
dopWalletID,
|
|
34
28
|
showSenderAddressToRecipient,
|
|
35
29
|
memoText,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx-proof-transfer.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-proof-transfer.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"tx-proof-transfer.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-proof-transfer.ts"],"names":[],"mappings":";;;AAAA,2DAK4B;AAI5B,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,EACxC,UAAkB,EACY,EAAE;IAChC,IAAI;QACF,IAAA,wCAA0B,EAAC,SAAS,CAAC,CAAC;QAGtC,OAAO,CAAC,GAAG,CAAC,UAAU,EACpB,8BAAS,CAAC,QAAQ,EAClB,WAAW,EACX,WAAW,EACX,aAAa,EACb,KAAK,EAAE,+BAA+B;QACtC,SAAS,EAAE,WAAW;QACtB,qBAAqB,EACrB,mBAAmB,EACnB,8BAA8B,EAC9B,oBAAoB,EACpB,SAAS,EAAE,eAAe;QAC1B,KAAK,EAAE,gBAAgB;QACvB,uBAAuB,EACvB,gBAAgB,CAAC,CAAC;QAEpB,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,EAChB,UAAU,CACX,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,kDAAkD,EAAE,YAAY,CAAC,CAAC;QAC9E,OAAO,YAAY,CAAC;QAEpB,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAgB,EAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAEtE,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,YAAY,CAAC,CAAC;QAGpE,MAAM,UAAU,GAAG,IAAA,wCAAyB,EAAC,YAAY,CAAC,CAAC;QAE3D,OAAO,CAAC,GAAG,CAAC,uCAAuC,EAAE,UAAU,CAAC,CAAC;QAGjE,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;AAtFW,QAAA,qBAAqB,yBAsFhC","sourcesContent":["import {\n NetworkName,\n ProofType,\n DopERC20AmountRecipient,\n DopNFTAmountRecipient,\n} from 'dop-sharedmodel-v5';\nimport {\n TransactionStruct\n} from 'dop-engine-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 valueCheck: bigint,\n): Promise<TransactionStruct[]> => {\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 \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 valueCheck,\n );\n\n console.log(\"generateProofTransactions generateTransferProof0\", transactions);\n return transactions;\n\n const transaction = await generateTransact(transactions, networkName);\n\n console.log(\"generateProofTransactions transaction1\", transactions);\n\n\n const nullifiers = nullifiersForTransactions(transactions);\n\n console.log(\"generateProofTransactions nullifiers0\", nullifiers);\n\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,4 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ProverProgressCallback } from 'dop-engine';
|
|
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
|
+
import { NetworkName, DopERC20AmountRecipient, DopNFTAmountRecipient } from 'dop-sharedmodel-v5';
|
|
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, valueCheck: bigint) => Promise<void>;
|