@deserialize/multi-vm-wallet 1.4.2 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +7 -1
- package/BUILD_OPTIMIZATION_PLAN.md +640 -0
- package/BUILD_RESULTS.md +282 -0
- package/BUN_MIGRATION.md +415 -0
- package/CHANGELOG_SECURITY.md +573 -0
- package/IMPLEMENTATION_SUMMARY.md +494 -0
- package/SECURITY_AUDIT.md +1124 -0
- package/bun.lock +553 -0
- package/dist/IChainWallet.js +0 -5
- package/dist/bip32Old.js +0 -885
- package/dist/bip32Small.js +0 -79
- package/dist/bipTest.js +0 -362
- package/dist/constant.js +0 -17
- package/dist/english.js +0 -1
- package/dist/evm/aa-service/index.d.ts +0 -5
- package/dist/evm/aa-service/index.js +0 -14
- package/dist/evm/aa-service/lib/account-adapter.d.ts +0 -22
- package/dist/evm/aa-service/lib/account-adapter.js +0 -24
- package/dist/evm/aa-service/lib/kernel-account.d.ts +0 -30
- package/dist/evm/aa-service/lib/kernel-account.js +2 -67
- package/dist/evm/aa-service/lib/kernel-modules.d.ts +0 -177
- package/dist/evm/aa-service/lib/kernel-modules.js +4 -202
- package/dist/evm/aa-service/lib/session-keys.d.ts +0 -118
- package/dist/evm/aa-service/lib/session-keys.js +7 -151
- package/dist/evm/aa-service/lib/type.d.ts +0 -55
- package/dist/evm/aa-service/lib/type.js +0 -10
- package/dist/evm/aa-service/services/account-abstraction.d.ts +0 -426
- package/dist/evm/aa-service/services/account-abstraction.js +0 -461
- package/dist/evm/aa-service/services/bundler.d.ts +0 -6
- package/dist/evm/aa-service/services/bundler.js +0 -54
- package/dist/evm/evm.d.ts +9 -51
- package/dist/evm/evm.js +338 -76
- package/dist/evm/index.js +0 -3
- package/dist/evm/script.js +3 -17
- package/dist/evm/smartWallet.d.ts +0 -173
- package/dist/evm/smartWallet.js +0 -206
- package/dist/evm/smartWallet.types.d.ts +0 -6
- package/dist/evm/smartWallet.types.js +0 -8
- package/dist/evm/transaction.utils.d.ts +0 -242
- package/dist/evm/transaction.utils.js +4 -320
- package/dist/evm/transactionParsing.d.ts +0 -11
- package/dist/evm/transactionParsing.js +28 -147
- package/dist/evm/utils.d.ts +0 -46
- package/dist/evm/utils.js +1 -57
- package/dist/helpers/index.d.ts +0 -4
- package/dist/helpers/index.js +8 -44
- package/dist/helpers/routeScan.js +0 -1
- package/dist/index.js +0 -1
- package/dist/old.js +0 -884
- package/dist/price.js +0 -1
- package/dist/price.types.js +0 -2
- package/dist/rate-limiter.d.ts +28 -0
- package/dist/rate-limiter.js +95 -0
- package/dist/retry-logic.d.ts +14 -0
- package/dist/retry-logic.js +120 -0
- package/dist/savings/index.js +0 -1
- package/dist/savings/saving-manager.d.ts +10 -11
- package/dist/savings/saving-manager.js +79 -22
- package/dist/savings/savings-operations.d.ts +39 -0
- package/dist/savings/savings-operations.js +141 -0
- package/dist/savings/smart-savings.d.ts +0 -63
- package/dist/savings/smart-savings.js +0 -78
- package/dist/savings/types.d.ts +0 -69
- package/dist/savings/types.js +0 -7
- package/dist/savings/validation.d.ts +9 -0
- package/dist/savings/validation.js +85 -0
- package/dist/svm/constant.js +0 -1
- package/dist/svm/index.js +0 -1
- package/dist/svm/svm.d.ts +11 -1
- package/dist/svm/svm.js +267 -27
- package/dist/svm/transactionParsing.d.ts +0 -7
- package/dist/svm/transactionParsing.js +3 -41
- package/dist/svm/transactionSender.js +0 -9
- package/dist/svm/utils.d.ts +0 -12
- package/dist/svm/utils.js +9 -60
- package/dist/test.d.ts +0 -4
- package/dist/test.js +6 -98
- package/dist/transaction-utils.d.ts +38 -0
- package/dist/transaction-utils.js +168 -0
- package/dist/types.d.ts +36 -0
- package/dist/types.js +0 -1
- package/dist/utils.js +0 -1
- package/dist/vm-validation.d.ts +11 -0
- package/dist/vm-validation.js +151 -0
- package/dist/vm.d.ts +12 -2
- package/dist/vm.js +61 -16
- package/dist/walletBip32.js +15 -70
- package/package.json +9 -4
- package/test-discovery.ts +235 -0
- package/test-pocket-discovery.ts +84 -0
- package/tsconfig.json +18 -11
- package/tsconfig.prod.json +10 -0
- package/utils/evm/evm.ts +554 -8
- package/utils/rate-limiter.ts +179 -0
- package/utils/retry-logic.ts +271 -0
- package/utils/savings/EXAMPLES.md +883 -0
- package/utils/savings/SECURITY.md +731 -0
- package/utils/savings/saving-manager.ts +526 -16
- package/utils/savings/savings-operations.ts +509 -0
- package/utils/savings/validation.ts +187 -0
- package/utils/svm/svm.ts +476 -5
- package/utils/test.ts +2 -2
- package/utils/transaction-utils.ts +394 -0
- package/utils/types.ts +100 -0
- package/utils/vm-validation.ts +280 -0
- package/utils/vm.ts +197 -10
- package/utils/walletBip32.ts +39 -3
- package/dist/IChainWallet.js.map +0 -1
- package/dist/bip32.d.ts +0 -9
- package/dist/bip32.js +0 -172
- package/dist/bip32.js.map +0 -1
- package/dist/bip32Old.js.map +0 -1
- package/dist/bip32Small.js.map +0 -1
- package/dist/bipTest.js.map +0 -1
- package/dist/constant.js.map +0 -1
- package/dist/english.js.map +0 -1
- package/dist/evm/SMART_WALLET_EXAMPLES.d.ts +0 -20
- package/dist/evm/SMART_WALLET_EXAMPLES.js +0 -451
- package/dist/evm/SMART_WALLET_EXAMPLES.js.map +0 -1
- package/dist/evm/aa-service/index.js.map +0 -1
- package/dist/evm/aa-service/lib/account-adapter.js.map +0 -1
- package/dist/evm/aa-service/lib/kernel-account.js.map +0 -1
- package/dist/evm/aa-service/lib/kernel-modules.js.map +0 -1
- package/dist/evm/aa-service/lib/session-keys.js.map +0 -1
- package/dist/evm/aa-service/lib/type.js.map +0 -1
- package/dist/evm/aa-service/services/account-abstraction.js.map +0 -1
- package/dist/evm/aa-service/services/bundler.js.map +0 -1
- package/dist/evm/evm.js.map +0 -1
- package/dist/evm/index.js.map +0 -1
- package/dist/evm/script.js.map +0 -1
- package/dist/evm/smartWallet.js.map +0 -1
- package/dist/evm/smartWallet.types.js.map +0 -1
- package/dist/evm/transaction.utils.js.map +0 -1
- package/dist/evm/transactionParsing.js.map +0 -1
- package/dist/evm/utils.js.map +0 -1
- package/dist/helpers/index.js.map +0 -1
- package/dist/helpers/routeScan.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/old.js.map +0 -1
- package/dist/price.js.map +0 -1
- package/dist/price.types.js.map +0 -1
- package/dist/privacy/artifact-manager.d.ts +0 -117
- package/dist/privacy/artifact-manager.js +0 -251
- package/dist/privacy/artifact-manager.js.map +0 -1
- package/dist/privacy/broadcaster-client.d.ts +0 -166
- package/dist/privacy/broadcaster-client.js +0 -261
- package/dist/privacy/broadcaster-client.js.map +0 -1
- package/dist/privacy/index.d.ts +0 -34
- package/dist/privacy/index.js +0 -56
- package/dist/privacy/index.js.map +0 -1
- package/dist/privacy/network-config.d.ts +0 -57
- package/dist/privacy/network-config.js +0 -118
- package/dist/privacy/network-config.js.map +0 -1
- package/dist/privacy/poi-helper.d.ts +0 -161
- package/dist/privacy/poi-helper.js +0 -249
- package/dist/privacy/poi-helper.js.map +0 -1
- package/dist/privacy/railgun-engine.d.ts +0 -135
- package/dist/privacy/railgun-engine.js +0 -205
- package/dist/privacy/railgun-engine.js.map +0 -1
- package/dist/privacy/railgun-privacy-wallet.d.ts +0 -288
- package/dist/privacy/railgun-privacy-wallet.js +0 -539
- package/dist/privacy/railgun-privacy-wallet.js.map +0 -1
- package/dist/privacy/types.d.ts +0 -229
- package/dist/privacy/types.js +0 -26
- package/dist/privacy/types.js.map +0 -1
- package/dist/savings/index.js.map +0 -1
- package/dist/savings/saving-actions.d.ts +0 -0
- package/dist/savings/saving-actions.js +0 -78
- package/dist/savings/saving-actions.js.map +0 -1
- package/dist/savings/saving-manager.js.map +0 -1
- package/dist/savings/savings-manager.d.ts +0 -126
- package/dist/savings/savings-manager.js +0 -234
- package/dist/savings/savings-manager.js.map +0 -1
- package/dist/savings/smart-savings.js.map +0 -1
- package/dist/savings/types.js.map +0 -1
- package/dist/svm/constant.js.map +0 -1
- package/dist/svm/index.js.map +0 -1
- package/dist/svm/svm.js.map +0 -1
- package/dist/svm/transactionParsing.js.map +0 -1
- package/dist/svm/transactionSender.js.map +0 -1
- package/dist/svm/utils.js.map +0 -1
- package/dist/test.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils.js.map +0 -1
- package/dist/vm.js.map +0 -1
- package/dist/walletBip32.js.map +0 -1
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test script for wallet discovery functionality
|
|
3
|
+
*
|
|
4
|
+
* Usage: npx ts-node test-discovery.ts
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { EVMVM } from './utils/evm/evm';
|
|
8
|
+
import { SVMVM } from './utils/svm/svm';
|
|
9
|
+
import { JsonRpcProvider } from 'ethers';
|
|
10
|
+
import { Connection } from '@solana/web3.js';
|
|
11
|
+
import { DiscoveredWallet } from './utils/types';
|
|
12
|
+
|
|
13
|
+
const MNEMONIC = 'olive gasp beach rug swift voice during during differ reject reunion rib';
|
|
14
|
+
|
|
15
|
+
async function testEVMDiscovery() {
|
|
16
|
+
console.log('\n=== EVM Wallet Discovery Test ===\n');
|
|
17
|
+
|
|
18
|
+
try {
|
|
19
|
+
// Create EVM VM instance
|
|
20
|
+
const evmVM = EVMVM.fromMnemonic(MNEMONIC) as EVMVM;
|
|
21
|
+
|
|
22
|
+
// Use Ethereum mainnet RPC
|
|
23
|
+
const provider = new JsonRpcProvider('https://eth.llamarpc.com');
|
|
24
|
+
|
|
25
|
+
console.log('Starting EVM wallet discovery...');
|
|
26
|
+
console.log('Network: Ethereum Mainnet');
|
|
27
|
+
console.log('Gap Limit: 20');
|
|
28
|
+
console.log('Max Index: 50\n');
|
|
29
|
+
|
|
30
|
+
const result = await evmVM.discoverWallets(provider, {
|
|
31
|
+
startIndex: 0,
|
|
32
|
+
maxIndex: 50,
|
|
33
|
+
gapLimit: 20,
|
|
34
|
+
onProgress: (current: number, total: number, found: number) => {
|
|
35
|
+
process.stdout.write(`\rProgress: ${current}/${total} scanned, ${found} found`);
|
|
36
|
+
},
|
|
37
|
+
onDiscovered: (wallet: DiscoveredWallet) => {
|
|
38
|
+
console.log(`\n✓ Found wallet at index ${wallet.index}:`);
|
|
39
|
+
console.log(` Address: ${wallet.address}`);
|
|
40
|
+
console.log(` Balance: ${wallet.nativeBalance.formatted} ${wallet.nativeBalance.symbol}`);
|
|
41
|
+
console.log(` Derivation Path: ${wallet.derivationPath}`);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
console.log('\n\n--- EVM Discovery Results ---');
|
|
46
|
+
console.log(`Total wallets found: ${result.discovered.length}`);
|
|
47
|
+
console.log(`Scanned indices: ${result.scannedIndices}`);
|
|
48
|
+
console.log(`Highest index checked: ${result.highestIndex}`);
|
|
49
|
+
console.log(`Total balance: ${Number(result.totalBalance) / 1e18} ETH`);
|
|
50
|
+
console.log(`Stopped by gap limit: ${result.stoppedByGapLimit}`);
|
|
51
|
+
console.log(`Duration: ${result.duration}ms`);
|
|
52
|
+
|
|
53
|
+
if (result.discovered.length > 0) {
|
|
54
|
+
console.log('\nDiscovered wallets:');
|
|
55
|
+
result.discovered.forEach((wallet: DiscoveredWallet) => {
|
|
56
|
+
console.log(` [${wallet.index}] ${wallet.address} - ${wallet.nativeBalance.formatted} ETH`);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
} catch (error) {
|
|
61
|
+
console.error('EVM Discovery Error:', error);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
async function testSVMDiscovery() {
|
|
66
|
+
console.log('\n\n=== SVM Wallet Discovery Test ===\n');
|
|
67
|
+
|
|
68
|
+
try {
|
|
69
|
+
// Create SVM VM instance
|
|
70
|
+
const svmVM = SVMVM.fromMnemonic(MNEMONIC) as SVMVM;
|
|
71
|
+
|
|
72
|
+
// Use Solana mainnet RPC
|
|
73
|
+
const connection = new Connection('https://api.mainnet-beta.solana.com');
|
|
74
|
+
|
|
75
|
+
console.log('Starting SVM wallet discovery...');
|
|
76
|
+
console.log('Network: Solana Mainnet');
|
|
77
|
+
console.log('Gap Limit: 20');
|
|
78
|
+
console.log('Max Index: 50\n');
|
|
79
|
+
|
|
80
|
+
const result = await svmVM.discoverWallets(connection, {
|
|
81
|
+
startIndex: 0,
|
|
82
|
+
maxIndex: 50,
|
|
83
|
+
gapLimit: 20,
|
|
84
|
+
onProgress: (current: number, total: number, found: number) => {
|
|
85
|
+
process.stdout.write(`\rProgress: ${current}/${total} scanned, ${found} found`);
|
|
86
|
+
},
|
|
87
|
+
onDiscovered: (wallet: DiscoveredWallet) => {
|
|
88
|
+
console.log(`\n✓ Found wallet at index ${wallet.index}:`);
|
|
89
|
+
console.log(` Address: ${wallet.address}`);
|
|
90
|
+
console.log(` Balance: ${wallet.nativeBalance.formatted} ${wallet.nativeBalance.symbol}`);
|
|
91
|
+
console.log(` Derivation Path: ${wallet.derivationPath}`);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
console.log('\n\n--- SVM Discovery Results ---');
|
|
96
|
+
console.log(`Total wallets found: ${result.discovered.length}`);
|
|
97
|
+
console.log(`Scanned indices: ${result.scannedIndices}`);
|
|
98
|
+
console.log(`Highest index checked: ${result.highestIndex}`);
|
|
99
|
+
console.log(`Total balance: ${Number(result.totalBalance) / 1e9} SOL`);
|
|
100
|
+
console.log(`Stopped by gap limit: ${result.stoppedByGapLimit}`);
|
|
101
|
+
console.log(`Duration: ${result.duration}ms`);
|
|
102
|
+
|
|
103
|
+
if (result.discovered.length > 0) {
|
|
104
|
+
console.log('\nDiscovered wallets:');
|
|
105
|
+
result.discovered.forEach((wallet: DiscoveredWallet) => {
|
|
106
|
+
console.log(` [${wallet.index}] ${wallet.address} - ${wallet.nativeBalance.formatted} SOL`);
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
} catch (error) {
|
|
111
|
+
console.error('SVM Discovery Error:', error);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
async function testEVMPocketDiscovery() {
|
|
116
|
+
console.log('\n\n=== EVM Pocket Discovery Test ===\n');
|
|
117
|
+
|
|
118
|
+
try {
|
|
119
|
+
// Create EVM VM instance
|
|
120
|
+
const evmVM = EVMVM.fromMnemonic(MNEMONIC) as EVMVM;
|
|
121
|
+
|
|
122
|
+
// Use Ethereum mainnet RPC
|
|
123
|
+
const provider = new JsonRpcProvider('https://eth.llamarpc.com');
|
|
124
|
+
|
|
125
|
+
console.log('Starting EVM pocket discovery...');
|
|
126
|
+
console.log('Network: Ethereum Mainnet');
|
|
127
|
+
console.log('Wallet Index: 0');
|
|
128
|
+
console.log('Gap Limit: 20');
|
|
129
|
+
console.log('Max Index: 30\n');
|
|
130
|
+
|
|
131
|
+
const result = await evmVM.discoverPockets(provider, {
|
|
132
|
+
walletIndex: 0,
|
|
133
|
+
startIndex: 0,
|
|
134
|
+
maxIndex: 30,
|
|
135
|
+
gapLimit: 20,
|
|
136
|
+
onProgress: (current: number, total: number, found: number) => {
|
|
137
|
+
process.stdout.write(`\rProgress: ${current}/${total} scanned, ${found} found`);
|
|
138
|
+
},
|
|
139
|
+
onDiscovered: (pocket: DiscoveredWallet) => {
|
|
140
|
+
console.log(`\n✓ Found pocket at account ${pocket.index}:`);
|
|
141
|
+
console.log(` Address: ${pocket.address}`);
|
|
142
|
+
console.log(` Balance: ${pocket.nativeBalance.formatted} ${pocket.nativeBalance.symbol}`);
|
|
143
|
+
console.log(` Derivation Path: ${pocket.derivationPath}`);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
console.log('\n\n--- EVM Pocket Discovery Results ---');
|
|
148
|
+
console.log(`Total pockets found: ${result.discovered.length}`);
|
|
149
|
+
console.log(`Scanned indices: ${result.scannedIndices}`);
|
|
150
|
+
console.log(`Highest index checked: ${result.highestIndex}`);
|
|
151
|
+
console.log(`Total balance: ${Number(result.totalBalance) / 1e18} ETH`);
|
|
152
|
+
console.log(`Stopped by gap limit: ${result.stoppedByGapLimit}`);
|
|
153
|
+
console.log(`Duration: ${result.duration}ms`);
|
|
154
|
+
|
|
155
|
+
if (result.discovered.length > 0) {
|
|
156
|
+
console.log('\nDiscovered pockets:');
|
|
157
|
+
result.discovered.forEach((pocket: DiscoveredWallet) => {
|
|
158
|
+
console.log(` [Pocket ${pocket.index}] ${pocket.address} - ${pocket.nativeBalance.formatted} ETH`);
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
} catch (error) {
|
|
163
|
+
console.error('EVM Pocket Discovery Error:', error);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
async function testSVMPocketDiscovery() {
|
|
168
|
+
console.log('\n\n=== SVM Pocket Discovery Test ===\n');
|
|
169
|
+
|
|
170
|
+
try {
|
|
171
|
+
// Create SVM VM instance
|
|
172
|
+
const svmVM = SVMVM.fromMnemonic(MNEMONIC) as SVMVM;
|
|
173
|
+
|
|
174
|
+
// Use Solana mainnet RPC
|
|
175
|
+
const connection = new Connection('https://api.mainnet-beta.solana.com');
|
|
176
|
+
|
|
177
|
+
console.log('Starting SVM pocket discovery...');
|
|
178
|
+
console.log('Network: Solana Mainnet');
|
|
179
|
+
console.log('Wallet Index: 0');
|
|
180
|
+
console.log('Gap Limit: 20');
|
|
181
|
+
console.log('Max Index: 30\n');
|
|
182
|
+
|
|
183
|
+
const result = await svmVM.discoverPockets(connection, {
|
|
184
|
+
walletIndex: 0,
|
|
185
|
+
startIndex: 0,
|
|
186
|
+
maxIndex: 30,
|
|
187
|
+
gapLimit: 20,
|
|
188
|
+
onProgress: (current: number, total: number, found: number) => {
|
|
189
|
+
process.stdout.write(`\rProgress: ${current}/${total} scanned, ${found} found`);
|
|
190
|
+
},
|
|
191
|
+
onDiscovered: (pocket: DiscoveredWallet) => {
|
|
192
|
+
console.log(`\n✓ Found pocket at account ${pocket.index}:`);
|
|
193
|
+
console.log(` Address: ${pocket.address}`);
|
|
194
|
+
console.log(` Balance: ${pocket.nativeBalance.formatted} ${pocket.nativeBalance.symbol}`);
|
|
195
|
+
console.log(` Derivation Path: ${pocket.derivationPath}`);
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
console.log('\n\n--- SVM Pocket Discovery Results ---');
|
|
200
|
+
console.log(`Total pockets found: ${result.discovered.length}`);
|
|
201
|
+
console.log(`Scanned indices: ${result.scannedIndices}`);
|
|
202
|
+
console.log(`Highest index checked: ${result.highestIndex}`);
|
|
203
|
+
console.log(`Total balance: ${Number(result.totalBalance) / 1e9} SOL`);
|
|
204
|
+
console.log(`Stopped by gap limit: ${result.stoppedByGapLimit}`);
|
|
205
|
+
console.log(`Duration: ${result.duration}ms`);
|
|
206
|
+
|
|
207
|
+
if (result.discovered.length > 0) {
|
|
208
|
+
console.log('\nDiscovered pockets:');
|
|
209
|
+
result.discovered.forEach((pocket: DiscoveredWallet) => {
|
|
210
|
+
console.log(` [Pocket ${pocket.index}] ${pocket.address} - ${pocket.nativeBalance.formatted} SOL`);
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
} catch (error) {
|
|
215
|
+
console.error('SVM Pocket Discovery Error:', error);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
async function main() {
|
|
220
|
+
console.log('╔════════════════════════════════════════════════╗');
|
|
221
|
+
console.log('║ Wallet Discovery Test Suite ║');
|
|
222
|
+
console.log('╚════════════════════════════════════════════════╝');
|
|
223
|
+
|
|
224
|
+
// Test standard wallet discovery
|
|
225
|
+
await testEVMDiscovery();
|
|
226
|
+
await testSVMDiscovery();
|
|
227
|
+
|
|
228
|
+
// Test pocket discovery
|
|
229
|
+
await testEVMPocketDiscovery();
|
|
230
|
+
await testSVMPocketDiscovery();
|
|
231
|
+
|
|
232
|
+
console.log('\n\n✅ Testing complete!\n');
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
main().catch(console.error);
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pocket Discovery Test
|
|
3
|
+
*
|
|
4
|
+
* Usage: npx ts-node test-pocket-discovery.ts
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { EVMVM } from './utils/evm/evm';
|
|
8
|
+
import { SVMVM } from './utils/svm/svm';
|
|
9
|
+
import { JsonRpcProvider } from 'ethers';
|
|
10
|
+
import { Connection } from '@solana/web3.js';
|
|
11
|
+
import { DiscoveredWallet } from './utils/types';
|
|
12
|
+
|
|
13
|
+
const MNEMONIC = 'olive gasp beach rug swift voice during during differ reject reunion rib';
|
|
14
|
+
|
|
15
|
+
async function testEVMPocketDiscovery() {
|
|
16
|
+
console.log('╔════════════════════════════════════════════════╗');
|
|
17
|
+
console.log('║ EVM Pocket Discovery Test ║');
|
|
18
|
+
console.log('╚════════════════════════════════════════════════╝\n');
|
|
19
|
+
|
|
20
|
+
const evmVM = EVMVM.fromMnemonic(MNEMONIC) as EVMVM;
|
|
21
|
+
const provider = new JsonRpcProvider('https://eth.llamarpc.com');
|
|
22
|
+
|
|
23
|
+
console.log('Network: Ethereum Mainnet');
|
|
24
|
+
console.log('Wallet Index: 0');
|
|
25
|
+
console.log('Checking pockets 0-10...\n');
|
|
26
|
+
|
|
27
|
+
const result = await evmVM.discoverPockets(provider, {
|
|
28
|
+
walletIndex: 0,
|
|
29
|
+
startIndex: 0,
|
|
30
|
+
maxIndex: 10,
|
|
31
|
+
gapLimit: 20,
|
|
32
|
+
onProgress: (current: number, total: number, found: number) => {
|
|
33
|
+
process.stdout.write(`\rProgress: ${current}/${total} pockets checked, ${found} with funds`);
|
|
34
|
+
},
|
|
35
|
+
onDiscovered: (pocket: DiscoveredWallet) => {
|
|
36
|
+
console.log(`\n✓ Pocket ${pocket.index}: ${pocket.address}`);
|
|
37
|
+
console.log(` Balance: ${pocket.nativeBalance.formatted} ETH`);
|
|
38
|
+
console.log(` Path: ${pocket.derivationPath}`);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
console.log(`\n\n✅ EVM Complete: ${result.discovered.length} pockets found in ${result.duration}ms\n`);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
async function testSVMPocketDiscovery() {
|
|
46
|
+
console.log('╔════════════════════════════════════════════════╗');
|
|
47
|
+
console.log('║ SVM Pocket Discovery Test ║');
|
|
48
|
+
console.log('╚════════════════════════════════════════════════╝\n');
|
|
49
|
+
|
|
50
|
+
const svmVM = SVMVM.fromMnemonic(MNEMONIC) as SVMVM;
|
|
51
|
+
const connection = new Connection('https://api.mainnet-beta.solana.com');
|
|
52
|
+
|
|
53
|
+
console.log('Network: Solana Mainnet');
|
|
54
|
+
console.log('Wallet Index: 0');
|
|
55
|
+
console.log('Checking pockets 0-10...\n');
|
|
56
|
+
|
|
57
|
+
const result = await svmVM.discoverPockets(connection, {
|
|
58
|
+
walletIndex: 0,
|
|
59
|
+
startIndex: 0,
|
|
60
|
+
maxIndex: 10,
|
|
61
|
+
gapLimit: 20,
|
|
62
|
+
onProgress: (current: number, total: number, found: number) => {
|
|
63
|
+
process.stdout.write(`\rProgress: ${current}/${total} pockets checked, ${found} with funds`);
|
|
64
|
+
},
|
|
65
|
+
onDiscovered: (pocket: DiscoveredWallet) => {
|
|
66
|
+
console.log(`\n✓ Pocket ${pocket.index}: ${pocket.address}`);
|
|
67
|
+
console.log(` Balance: ${pocket.nativeBalance.formatted} SOL`);
|
|
68
|
+
console.log(` Path: ${pocket.derivationPath}`);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
console.log(`\n\n✅ SVM Complete: ${result.discovered.length} pockets found in ${result.duration}ms\n`);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
async function main() {
|
|
76
|
+
console.log('\n🔍 Testing Savings Pocket Discovery\n');
|
|
77
|
+
|
|
78
|
+
await testEVMPocketDiscovery();
|
|
79
|
+
await testSVMPocketDiscovery();
|
|
80
|
+
|
|
81
|
+
console.log('✨ All pocket discovery tests complete!\n');
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
main().catch(console.error);
|
package/tsconfig.json
CHANGED
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"compilerOptions": {
|
|
3
|
-
"target": "ES2022",
|
|
4
|
-
"module": "commonjs",
|
|
5
|
-
"declaration": true,
|
|
6
|
-
"outDir": "./dist",
|
|
7
|
-
"strict": true,
|
|
8
|
-
"esModuleInterop": true,
|
|
9
|
-
"skipLibCheck": true,
|
|
3
|
+
"target": "ES2022",
|
|
4
|
+
"module": "commonjs",
|
|
5
|
+
"declaration": true,
|
|
6
|
+
"outDir": "./dist",
|
|
7
|
+
"strict": true,
|
|
8
|
+
"esModuleInterop": true,
|
|
9
|
+
"skipLibCheck": true,
|
|
10
|
+
"skipDefaultLibCheck": true,
|
|
10
11
|
"forceConsistentCasingInFileNames": true,
|
|
11
|
-
"sourceMap": true,
|
|
12
|
-
"lib": ["ES2022", "DOM"]
|
|
12
|
+
"sourceMap": true,
|
|
13
|
+
"lib": ["ES2022", "DOM"],
|
|
14
|
+
|
|
15
|
+
// Performance optimizations
|
|
16
|
+
"incremental": true,
|
|
17
|
+
"tsBuildInfoFile": "./dist/.tsbuildinfo",
|
|
18
|
+
"moduleResolution": "node",
|
|
19
|
+
"resolveJsonModule": true
|
|
13
20
|
},
|
|
14
|
-
"include": ["utils/**/*"],
|
|
15
|
-
"exclude": ["node_modules", "**/*.spec.ts", "**/*.bak"
|
|
21
|
+
"include": ["utils/**/*"],
|
|
22
|
+
"exclude": ["node_modules", "**/*.spec.ts", "**/*.bak", "**/*.test.ts"]
|
|
16
23
|
}
|