dop-wallet-v6 1.2.8 → 1.2.10
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/dop/__tests__/integration.test.d.ts +1 -0
- package/dist/services/dop/__tests__/integration.test.js +378 -0
- package/dist/services/dop/__tests__/integration.test.js.map +1 -0
- package/dist/services/dop/core/index.d.ts +1 -0
- package/dist/services/dop/core/index.js +1 -0
- package/dist/services/dop/core/index.js.map +1 -1
- package/dist/services/dop/core/react-native-init.d.ts +15 -0
- package/dist/services/dop/core/react-native-init.js +151 -0
- package/dist/services/dop/core/react-native-init.js.map +1 -0
- package/dist/services/dop/dop-txids/graphql/index.js +4 -8
- package/dist/services/dop/dop-txids/graphql/index.js.map +1 -1
- package/dist/services/dop/quick-sync/V2/graphql/index.js +4 -8
- package/dist/services/dop/quick-sync/V2/graphql/index.js.map +1 -1
- package/dist/services/dop/quick-sync/V3/graphql/index.js +4 -8
- package/dist/services/dop/quick-sync/V3/graphql/index.js.map +1 -1
- package/dist/services/transactions/tx-proof-transfer-with-data.d.ts +8 -2
- package/dist/services/transactions/tx-proof-transfer-with-data.js +25 -6
- package/dist/services/transactions/tx-proof-transfer-with-data.js.map +1 -1
- package/package.json +5 -4
- package/react-native-shims.js +7 -0
|
@@ -2,10 +2,16 @@ import { NetworkName, DopERC20AmountRecipient, DopNFTAmountRecipient, TXIDVersio
|
|
|
2
2
|
import { GenerateTransactionsProgressCallback } from './tx-generator';
|
|
3
3
|
export declare const generateTransferProofForExplorer: (txidVersion: TXIDVersion, networkName: NetworkName, dopWalletID: string, encryptionKey: string, showSenderAddressToRecipient: boolean, memoText: Optional<string>, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: GenerateTransactionsProgressCallback) => Promise<void>;
|
|
4
4
|
/**
|
|
5
|
-
* Generate transfer proof and return the
|
|
5
|
+
* Generate transfer proof and return the proved transactions in the format expected by verification
|
|
6
6
|
* This function generates the proof and returns the complete proved transaction data
|
|
7
|
+
* matching the format used in the example verification code
|
|
7
8
|
*/
|
|
8
|
-
export declare const generateTransferProof: (txidVersion: TXIDVersion, networkName: NetworkName, dopWalletID: string, encryptionKey: string, showSenderAddressToRecipient: boolean, memoText: Optional<string>, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: GenerateTransactionsProgressCallback) => Promise<
|
|
9
|
+
export declare const generateTransferProof: (txidVersion: TXIDVersion, networkName: NetworkName, dopWalletID: string, encryptionKey: string, showSenderAddressToRecipient: boolean, memoText: Optional<string>, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: GenerateTransactionsProgressCallback) => Promise<(import("dop-engine-v3").TransactionStructV2 | import("dop-engine-v3").TransactionStructV3)[]>;
|
|
10
|
+
/**
|
|
11
|
+
* Generate transfer proof and return a custom formatted version for explorer/UI purposes
|
|
12
|
+
* This function transforms the proved transactions into a simplified format
|
|
13
|
+
*/
|
|
14
|
+
export declare const generateTransferProofForUI: (txidVersion: TXIDVersion, networkName: NetworkName, dopWalletID: string, encryptionKey: string, showSenderAddressToRecipient: boolean, memoText: Optional<string>, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: GenerateTransactionsProgressCallback) => Promise<{
|
|
9
15
|
memo: never[];
|
|
10
16
|
memoText: string;
|
|
11
17
|
serializedCommitment: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateTransferProof = exports.generateTransferProofForExplorer = void 0;
|
|
3
|
+
exports.generateTransferProofForUI = exports.generateTransferProof = exports.generateTransferProofForExplorer = void 0;
|
|
4
4
|
const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v3");
|
|
5
5
|
const tx_generator_1 = require("./tx-generator");
|
|
6
6
|
const proof_cache_1 = require("./proof-cache");
|
|
@@ -39,8 +39,9 @@ const generateTransferProofForExplorer = async (txidVersion, networkName, dopWal
|
|
|
39
39
|
};
|
|
40
40
|
exports.generateTransferProofForExplorer = generateTransferProofForExplorer;
|
|
41
41
|
/**
|
|
42
|
-
* Generate transfer proof and return the
|
|
42
|
+
* Generate transfer proof and return the proved transactions in the format expected by verification
|
|
43
43
|
* This function generates the proof and returns the complete proved transaction data
|
|
44
|
+
* matching the format used in the example verification code
|
|
44
45
|
*/
|
|
45
46
|
const generateTransferProof = async (txidVersion, networkName, dopWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, progressCallback) => {
|
|
46
47
|
try {
|
|
@@ -48,7 +49,25 @@ const generateTransferProof = async (txidVersion, networkName, dopWalletID, encr
|
|
|
48
49
|
const { provedTransactions } = await (0, tx_generator_1.generateProofTransactions)(dop_sharedmodels_v3_1.ProofType.Transfer, networkName, dopWalletID, txidVersion, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, undefined, // relayAdaptID
|
|
49
50
|
false, // useDummyProof
|
|
50
51
|
overallBatchMinGasPrice, progressCallback);
|
|
51
|
-
//
|
|
52
|
+
// Return the proved transactions directly without transformation
|
|
53
|
+
// This matches the format expected by the verification example code
|
|
54
|
+
// The structure should include: boundParams, decryptPreimage, merkleRoot, nullifiers, proof, txidVersion
|
|
55
|
+
return provedTransactions;
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
throw (0, error_1.reportAndSanitizeError)(exports.generateTransferProof.name, err);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
exports.generateTransferProof = generateTransferProof;
|
|
62
|
+
/**
|
|
63
|
+
* Generate transfer proof and return a custom formatted version for explorer/UI purposes
|
|
64
|
+
* This function transforms the proved transactions into a simplified format
|
|
65
|
+
*/
|
|
66
|
+
const generateTransferProofForUI = async (txidVersion, networkName, dopWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, progressCallback) => {
|
|
67
|
+
try {
|
|
68
|
+
// Get the standard proof format first
|
|
69
|
+
const provedTransactions = await (0, exports.generateTransferProof)(txidVersion, networkName, dopWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, progressCallback);
|
|
70
|
+
// Transform the proved transactions to a custom format for UI/explorer
|
|
52
71
|
const transformedTransactions = provedTransactions.map((transaction) => {
|
|
53
72
|
// Type-safe access to boundParams properties with proper type checking
|
|
54
73
|
const boundParams = transaction.boundParams;
|
|
@@ -70,7 +89,7 @@ const generateTransferProof = async (txidVersion, networkName, dopWalletID, encr
|
|
|
70
89
|
// Get serialized commitment from the bound params
|
|
71
90
|
const serializedCommitment = firstCommitmentCiphertext ?? null;
|
|
72
91
|
return {
|
|
73
|
-
// Add the wanted fields
|
|
92
|
+
// Add the wanted fields for UI/explorer
|
|
74
93
|
memo: [],
|
|
75
94
|
memoText: memoText ?? '',
|
|
76
95
|
serializedCommitment,
|
|
@@ -97,8 +116,8 @@ const generateTransferProof = async (txidVersion, networkName, dopWalletID, encr
|
|
|
97
116
|
return transformedTransactions;
|
|
98
117
|
}
|
|
99
118
|
catch (err) {
|
|
100
|
-
throw (0, error_1.reportAndSanitizeError)(exports.
|
|
119
|
+
throw (0, error_1.reportAndSanitizeError)(exports.generateTransferProofForUI.name, err);
|
|
101
120
|
}
|
|
102
121
|
};
|
|
103
|
-
exports.
|
|
122
|
+
exports.generateTransferProofForUI = generateTransferProofForUI;
|
|
104
123
|
//# sourceMappingURL=tx-proof-transfer-with-data.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx-proof-transfer-with-data.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-proof-transfer-with-data.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n NetworkName,\n ProofType,\n DopERC20AmountRecipient,\n DopNFTAmountRecipient,\n TXIDVersion,\n} from 'dop-sharedmodels-v3';\nimport {\n GenerateTransactionsProgressCallback,\n generateProofTransactions,\n generateTransact,\n nullifiersForTransactions,\n} from './tx-generator';\nimport { setCachedProvedTransaction } from './proof-cache';\nimport { reportAndSanitizeError } from '../../utils/error';\n\nexport const generateTransferProofForExplorer = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n): Promise<void> => {\n try {\n setCachedProvedTransaction(undefined);\n\n const { provedTransactions } =\n await generateProofTransactions(\n ProofType.Transfer,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n undefined, // relayAdaptID\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback,\n );\n const transaction = await generateTransact(\n txidVersion,\n provedTransactions,\n networkName,\n 0n\n );\n\n const nullifiers = nullifiersForTransactions(provedTransactions);\n\n setCachedProvedTransaction({\n proofType: ProofType.Transfer,\n txidVersion,\n dopWalletID,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayAdaptDecryptERC20Amounts: undefined,\n relayAdaptDecryptNFTAmounts: undefined,\n relayAdaptEncryptERC20Recipients: undefined,\n relayAdaptEncryptNFTRecipients: undefined,\n crossContractCalls: undefined,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n transaction,\n overallBatchMinGasPrice,\n nullifiers,\n });\n } catch (err) {\n throw reportAndSanitizeError(generateTransferProofForExplorer.name, err);\n }\n};\n\n/**\n * Generate transfer proof and return the raw proved transactions for explorer verification\n * This function generates the proof and returns the complete proved transaction data\n */\nexport const generateTransferProof = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n) => {\n try {\n // Generate the proof transactions directly\n const { provedTransactions } = await generateProofTransactions(\n ProofType.Transfer,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n undefined, // relayAdaptID\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback,\n );\n\n // Transform the proved transactions to the format expected by the explorer\n const transformedTransactions = provedTransactions.map((transaction) => {\n // Type-safe access to boundParams properties with proper type checking\n const boundParams = transaction.boundParams as {\n treeNumber?: number | bigint;\n adaptContract?: string;\n adaptParams?: string;\n chainID?: string | bigint;\n commitmentCiphertext?: Array<{\n blindedReceiverViewingKey?: string;\n [key: string]: unknown;\n }>;\n [key: string]: unknown;\n };\n \n // Calculate commitment tree index and other derived fields\n let commitmentTreeIndex = 0;\n if (typeof boundParams.treeNumber === 'number') {\n commitmentTreeIndex = boundParams.treeNumber;\n } else if (typeof boundParams.treeNumber === 'bigint') {\n commitmentTreeIndex = Number(boundParams.treeNumber);\n }\n \n // Extract hash from the transaction\n const hash = Array.isArray(transaction.commitments) && transaction.commitments.length > 0 \n ? transaction.commitments[0] \n : transaction.merkleRoot;\n \n // Create shield key hash from the bound params\n const firstCommitmentCiphertext = boundParams.commitmentCiphertext?.[0];\n const shieldKeyHash = firstCommitmentCiphertext?.blindedReceiverViewingKey ?? '0x0';\n \n // Get serialized commitment from the bound params\n const serializedCommitment = firstCommitmentCiphertext ?? null;\n\n return {\n // Add the wanted fields\n memo: [], // Empty array as requested\n memoText: memoText ?? '', // Use the provided memo text\n serializedCommitment,\n commitmentTreeIndex,\n hash,\n shieldKeyHash,\n \n // Keep essential transaction data from boundParams\n boundParams: {\n adaptContract: boundParams.adaptContract ?? '0x0000000000000000000000000000000000000000',\n adaptParams: boundParams.adaptParams ?? '0x0000000000000000000000000000000000000000000000000000000000000000',\n chainID: boundParams.chainID ?? '0x0000000000000089',\n commitmentCiphertext: boundParams.commitmentCiphertext ?? [],\n decrypt: 0n,\n },\n \n // Keep core proof data\n merkleRoot: transaction.merkleRoot,\n nullifiers: transaction.nullifiers,\n proof: transaction.proof,\n txidVersion: transaction.txidVersion,\n \n // Remove the unwanted fields by not including them:\n // decryptPreimage, minGasPrice, treeNumber, commitments are not included\n };\n });\n\n return transformedTransactions;\n } catch (err) {\n throw reportAndSanitizeError(generateTransferProof.name, err);\n }\n};\n"]}
|
|
1
|
+
{"version":3,"file":"tx-proof-transfer-with-data.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-proof-transfer-with-data.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n NetworkName,\n ProofType,\n DopERC20AmountRecipient,\n DopNFTAmountRecipient,\n TXIDVersion,\n} from 'dop-sharedmodels-v3';\nimport {\n GenerateTransactionsProgressCallback,\n generateProofTransactions,\n generateTransact,\n nullifiersForTransactions,\n} from './tx-generator';\nimport { setCachedProvedTransaction } from './proof-cache';\nimport { reportAndSanitizeError } from '../../utils/error';\n\nexport const generateTransferProofForExplorer = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n): Promise<void> => {\n try {\n setCachedProvedTransaction(undefined);\n\n const { provedTransactions } =\n await generateProofTransactions(\n ProofType.Transfer,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n undefined, // relayAdaptID\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback,\n );\n const transaction = await generateTransact(\n txidVersion,\n provedTransactions,\n networkName,\n 0n\n );\n\n const nullifiers = nullifiersForTransactions(provedTransactions);\n\n setCachedProvedTransaction({\n proofType: ProofType.Transfer,\n txidVersion,\n dopWalletID,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayAdaptDecryptERC20Amounts: undefined,\n relayAdaptDecryptNFTAmounts: undefined,\n relayAdaptEncryptERC20Recipients: undefined,\n relayAdaptEncryptNFTRecipients: undefined,\n crossContractCalls: undefined,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n transaction,\n overallBatchMinGasPrice,\n nullifiers,\n });\n } catch (err) {\n throw reportAndSanitizeError(generateTransferProofForExplorer.name, err);\n }\n};\n\n/**\n * Generate transfer proof and return the proved transactions in the format expected by verification\n * This function generates the proof and returns the complete proved transaction data\n * matching the format used in the example verification code\n */\nexport const generateTransferProof = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n) => {\n try {\n // Generate the proof transactions directly\n const { provedTransactions } = await generateProofTransactions(\n ProofType.Transfer,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n undefined, // relayAdaptID\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback,\n );\n\n // Return the proved transactions directly without transformation\n // This matches the format expected by the verification example code\n // The structure should include: boundParams, decryptPreimage, merkleRoot, nullifiers, proof, txidVersion\n return provedTransactions;\n } catch (err) {\n throw reportAndSanitizeError(generateTransferProof.name, err);\n }\n};\n\n/**\n * Generate transfer proof and return a custom formatted version for explorer/UI purposes\n * This function transforms the proved transactions into a simplified format\n */\nexport const generateTransferProofForUI = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n) => {\n try {\n // Get the standard proof format first\n const provedTransactions = await generateTransferProof(\n txidVersion,\n networkName,\n dopWalletID,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n progressCallback,\n );\n\n // Transform the proved transactions to a custom format for UI/explorer\n const transformedTransactions = provedTransactions.map((transaction) => {\n // Type-safe access to boundParams properties with proper type checking\n const boundParams = transaction.boundParams as {\n treeNumber?: number | bigint;\n adaptContract?: string;\n adaptParams?: string;\n chainID?: string | bigint;\n commitmentCiphertext?: Array<{\n blindedReceiverViewingKey?: string;\n [key: string]: unknown;\n }>;\n [key: string]: unknown;\n };\n \n // Calculate commitment tree index and other derived fields\n let commitmentTreeIndex = 0;\n if (typeof boundParams.treeNumber === 'number') {\n commitmentTreeIndex = boundParams.treeNumber;\n } else if (typeof boundParams.treeNumber === 'bigint') {\n commitmentTreeIndex = Number(boundParams.treeNumber);\n }\n \n // Extract hash from the transaction\n const hash = Array.isArray(transaction.commitments) && transaction.commitments.length > 0 \n ? transaction.commitments[0] \n : transaction.merkleRoot;\n \n // Create shield key hash from the bound params\n const firstCommitmentCiphertext = boundParams.commitmentCiphertext?.[0];\n const shieldKeyHash = firstCommitmentCiphertext?.blindedReceiverViewingKey ?? '0x0';\n \n // Get serialized commitment from the bound params\n const serializedCommitment = firstCommitmentCiphertext ?? null;\n\n return {\n // Add the wanted fields for UI/explorer\n memo: [], // Empty array as requested\n memoText: memoText ?? '', // Use the provided memo text\n serializedCommitment,\n commitmentTreeIndex,\n hash,\n shieldKeyHash,\n \n // Keep essential transaction data from boundParams\n boundParams: {\n adaptContract: boundParams.adaptContract ?? '0x0000000000000000000000000000000000000000',\n adaptParams: boundParams.adaptParams ?? '0x0000000000000000000000000000000000000000000000000000000000000000',\n chainID: boundParams.chainID ?? '0x0000000000000089',\n commitmentCiphertext: boundParams.commitmentCiphertext ?? [],\n decrypt: 0n,\n },\n \n // Keep core proof data\n merkleRoot: transaction.merkleRoot,\n nullifiers: transaction.nullifiers,\n proof: transaction.proof,\n txidVersion: transaction.txidVersion,\n \n // Remove the unwanted fields by not including them:\n // decryptPreimage, minGasPrice, treeNumber, commitments are not included\n };\n });\n\n return transformedTransactions;\n } catch (err) {\n throw reportAndSanitizeError(generateTransferProofForUI.name, err);\n }\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dop-wallet-v6",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.10",
|
|
4
4
|
"description": "DOP Wallet SDK, compatible with mobile, browser and nodejs environments.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"license": "MIT",
|
|
@@ -28,7 +28,6 @@
|
|
|
28
28
|
"postinstall": "node postinstall.js"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@graphql-mesh/cache-localforage": "^0.7.20",
|
|
32
31
|
"@graphql-mesh/cross-helpers": "^0.3.4",
|
|
33
32
|
"@graphql-mesh/graphql": "^0.34.16",
|
|
34
33
|
"@graphql-mesh/http": "^0.3.28",
|
|
@@ -39,18 +38,20 @@
|
|
|
39
38
|
"@graphql-mesh/types": "^0.91.14",
|
|
40
39
|
"@graphql-mesh/utils": "^0.43.22",
|
|
41
40
|
"@noble/ed25519": "^1.7.1",
|
|
42
|
-
"
|
|
43
|
-
"dop-sharedmodels-v3": "1.1.9",
|
|
41
|
+
"@react-native-async-storage/async-storage": "^1.24.0",
|
|
44
42
|
"@whatwg-node/fetch": "^0.8.4",
|
|
45
43
|
"assert": "2.0.0",
|
|
46
44
|
"axios": "1.7.2",
|
|
47
45
|
"brotli": "^1.3.3",
|
|
48
46
|
"buffer": "^6.0.3",
|
|
49
47
|
"crypto-browserify": "3.12.0",
|
|
48
|
+
"dop-engine-v3": "1.4.9",
|
|
49
|
+
"dop-sharedmodels-v3": "1.1.9",
|
|
50
50
|
"ethereum-cryptography": "^2.0.0",
|
|
51
51
|
"ethers": "6.13.1",
|
|
52
52
|
"events": "3.3.0",
|
|
53
53
|
"graphql": "^16.6.0",
|
|
54
|
+
"memdown": "^6.1.1",
|
|
54
55
|
"stream-browserify": "3.0.0"
|
|
55
56
|
},
|
|
56
57
|
"devDependencies": {
|
package/react-native-shims.js
CHANGED
|
@@ -39,4 +39,11 @@ global.crypto.subtle.digest ??= (algorithm, data) => {
|
|
|
39
39
|
* - stream-browserify:
|
|
40
40
|
* - engine uses AES encryption, which we shim with browserify-aes, which
|
|
41
41
|
* needs cipher-base, which needs stream
|
|
42
|
+
*
|
|
43
|
+
* AsyncStorage Compatibility Note:
|
|
44
|
+
* - This wallet SDK is compatible with React Native 0.60+ which moved AsyncStorage
|
|
45
|
+
* out of core into @react-native-async-storage/async-storage
|
|
46
|
+
* - GraphQL Mesh caching has been disabled to avoid legacy AsyncStorage conflicts
|
|
47
|
+
* - If you need persistent GraphQL caching in React Native, implement custom
|
|
48
|
+
* cache using @react-native-async-storage/async-storage
|
|
42
49
|
*/
|