hodl-wallet 2.2.0 → 2.3.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.
Files changed (106) hide show
  1. package/README.md +10 -10
  2. package/dist/app/format.d.ts +3 -1
  3. package/dist/app/format.js +11 -5
  4. package/dist/app/format.js.map +1 -1
  5. package/dist/app/history.d.ts +48 -0
  6. package/dist/app/history.js +115 -0
  7. package/dist/app/history.js.map +1 -0
  8. package/dist/app/index.d.ts +7 -3
  9. package/dist/app/index.js +3 -1
  10. package/dist/app/index.js.map +1 -1
  11. package/dist/app/menu.d.ts +1 -0
  12. package/dist/app/menu.js +22 -7
  13. package/dist/app/menu.js.map +1 -1
  14. package/dist/app/output.d.ts +3 -1
  15. package/dist/app/output.js +30 -4
  16. package/dist/app/output.js.map +1 -1
  17. package/dist/app/session.d.ts +20 -0
  18. package/dist/app/swap.d.ts +5 -0
  19. package/dist/app/swap.js +274 -0
  20. package/dist/app/swap.js.map +1 -0
  21. package/dist/app/ui.d.ts +13 -0
  22. package/dist/app/ui.js.map +1 -1
  23. package/dist/browser-core.d.ts +5 -1
  24. package/dist/browser-core.js +4 -1
  25. package/dist/browser-core.js.map +1 -1
  26. package/dist/config.d.ts +11 -0
  27. package/dist/config.js +12 -0
  28. package/dist/config.js.map +1 -0
  29. package/dist/hodl-file.d.ts +31 -0
  30. package/dist/hodl-file.js +78 -0
  31. package/dist/hodl-file.js.map +1 -0
  32. package/dist/network/abis/erc20.d.ts +35 -13
  33. package/dist/network/abis/erc20.js +6 -26
  34. package/dist/network/abis/erc20.js.map +1 -1
  35. package/dist/network/arb.d.ts +5 -0
  36. package/dist/network/arb.js +5 -0
  37. package/dist/network/arb.js.map +1 -1
  38. package/dist/network/avax.d.ts +6 -0
  39. package/dist/network/avax.js +6 -0
  40. package/dist/network/avax.js.map +1 -1
  41. package/dist/network/bsc.d.ts +6 -0
  42. package/dist/network/bsc.js +6 -0
  43. package/dist/network/bsc.js.map +1 -1
  44. package/dist/network/eth.d.ts +6 -0
  45. package/dist/network/eth.js +6 -0
  46. package/dist/network/eth.js.map +1 -1
  47. package/dist/network/ftm.d.ts +6 -0
  48. package/dist/network/ftm.js +6 -0
  49. package/dist/network/ftm.js.map +1 -1
  50. package/dist/network/lib/BitcoinNetwork.d.ts +3 -1
  51. package/dist/network/lib/BitcoinNetwork.js +58 -13
  52. package/dist/network/lib/BitcoinNetwork.js.map +1 -1
  53. package/dist/network/lib/Web3Network.d.ts +10 -4
  54. package/dist/network/lib/Web3Network.js +141 -73
  55. package/dist/network/lib/Web3Network.js.map +1 -1
  56. package/dist/network/op.d.ts +5 -0
  57. package/dist/network/op.js +5 -0
  58. package/dist/network/op.js.map +1 -1
  59. package/dist/network/pol.d.ts +6 -0
  60. package/dist/network/pol.js +6 -0
  61. package/dist/network/pol.js.map +1 -1
  62. package/dist/network/types.d.ts +35 -0
  63. package/dist/network-registry.d.ts +6 -1
  64. package/dist/network-registry.js +28 -0
  65. package/dist/network-registry.js.map +1 -1
  66. package/dist/node-session.d.ts +3 -1
  67. package/dist/node-session.js +26 -77
  68. package/dist/node-session.js.map +1 -1
  69. package/dist/persist.d.ts +10 -9
  70. package/dist/persist.js +56 -101
  71. package/dist/persist.js.map +1 -1
  72. package/dist/request.d.ts +7 -0
  73. package/dist/request.js +26 -0
  74. package/dist/request.js.map +1 -0
  75. package/dist/swap/bitcoin.d.ts +1 -1
  76. package/dist/swap/bitcoin.js +7 -6
  77. package/dist/swap/bitcoin.js.map +1 -1
  78. package/dist/swap/chain.js +25 -40
  79. package/dist/swap/chain.js.map +1 -1
  80. package/dist/swap/config.d.ts +12 -0
  81. package/dist/swap/config.js +6 -0
  82. package/dist/swap/config.js.map +1 -1
  83. package/dist/swap/http.d.ts +2 -1
  84. package/dist/swap/http.js +8 -4
  85. package/dist/swap/http.js.map +1 -1
  86. package/dist/swap/providers.d.ts +15 -0
  87. package/dist/swap/providers.js +187 -1
  88. package/dist/swap/providers.js.map +1 -1
  89. package/dist/swap/routes.d.ts +28 -0
  90. package/dist/swap/routes.js +5 -3
  91. package/dist/swap/routes.js.map +1 -1
  92. package/dist/swap/service.d.ts +2 -1
  93. package/dist/swap/service.js +16 -5
  94. package/dist/swap/service.js.map +1 -1
  95. package/dist/swap/types.d.ts +3 -1
  96. package/dist/swap/types.js.map +1 -1
  97. package/dist/transfer-service.js +1 -2
  98. package/dist/transfer-service.js.map +1 -1
  99. package/dist/ui-inquirer.d.ts +8 -1
  100. package/dist/ui-inquirer.js +45 -10
  101. package/dist/ui-inquirer.js.map +1 -1
  102. package/dist/wallet-store.d.ts +2 -1
  103. package/package.json +13 -14
  104. package/dist/swap/ui.d.ts +0 -3
  105. package/dist/swap/ui.js +0 -257
  106. package/dist/swap/ui.js.map +0 -1
@@ -1,23 +1,40 @@
1
1
  import BaseNetwork from './BaseNetwork.js';
2
- import { Web3, TransactionNotFound } from 'web3';
2
+ import { createPublicClient, encodeFunctionData, getAddress, http, keccak256, parseAbiItem, parseEther, toHex, TransactionNotFoundError, TransactionReceiptNotFoundError } from 'viem';
3
+ import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';
3
4
  import { ERC20_ABI } from '../abis/erc20.js';
4
- import bip39 from 'bip39';
5
- import hdkey from 'hdkey';
5
+ import * as bip39 from '@scure/bip39';
6
+ import { wordlist } from '@scure/bip39/wordlists/english.js';
7
+ import { HDKey } from '@scure/bip32';
6
8
  import { formatUnits, parseDecimalToUnits } from '../../amounts.js';
9
+ import { walletConfig } from '../../config.js';
10
+ import { request } from '../../request.js';
11
+ const TRANSFER_EVENT = parseAbiItem('event Transfer(address indexed from, address indexed to, uint256 value)');
7
12
  export default class Web3Network extends BaseNetwork {
8
- web3;
13
+ client;
9
14
  constructor(config) {
10
15
  super(config);
11
- this.web3 = new Web3(config.url);
16
+ // A retried eth_sendRawTransaction would broadcast the transfer again.
17
+ this.client = createPublicClient({ transport: http(config.url, { retryCount: 0, fetchFn: request }) });
12
18
  }
13
19
  formatPrivateKey(privateKey) {
14
20
  return privateKey.startsWith('0x') ? privateKey : `0x${privateKey}`;
15
21
  }
22
+ /** Accepts an optional 0x prefix and either a single case or a valid EIP-55 checksum. */
16
23
  validateAddress(address) {
17
- return this.web3.utils.isAddress(address);
24
+ if (!/^(0x)?[\da-f]{40}$/i.test(address))
25
+ return false;
26
+ const digits = address.slice(-40);
27
+ return digits === digits.toLowerCase() || digits === digits.toUpperCase()
28
+ || getAddress(`0x${digits.toLowerCase()}`) === `0x${digits}`;
29
+ }
30
+ address(address) {
31
+ if (!this.validateAddress(address)) {
32
+ throw new Error('Invalid EVM address.');
33
+ }
34
+ return getAddress(`0x${address.slice(-40).toLowerCase()}`);
18
35
  }
19
36
  async getBalance(address) {
20
- const balanceWei = await this.web3.eth.getBalance(address);
37
+ const balanceWei = await this.client.getBalance({ address: this.address(address) });
21
38
  return formatUnits(balanceWei, 18);
22
39
  }
23
40
  async transfer(from, to, amount, options = {}) {
@@ -35,34 +52,99 @@ export default class Web3Network extends BaseNetwork {
35
52
  };
36
53
  }
37
54
  async estimateGas(transaction) {
38
- return this.web3.eth.estimateGas(transaction);
55
+ return this.client.estimateGas(transaction);
39
56
  }
40
57
  async getGasPrice() {
41
- return this.web3.eth.getGasPrice();
58
+ return this.client.getGasPrice();
42
59
  }
43
60
  async handleERC20Transfer(account, token, recipient, amount) {
44
61
  return this.transferToken(account, recipient, amount, token);
45
62
  }
46
63
  async handleNativeTransfer(account, recipient, amount) {
47
64
  const gasPrice = await this.getGasPrice();
48
- const valueInWei = this.web3.utils.toWei(amount.toString(), 'ether');
49
65
  const gasLimit = await this.estimateGas({
50
- from: account.address,
51
- to: recipient,
52
- value: valueInWei
66
+ account: this.address(account.address),
67
+ to: this.address(recipient),
68
+ value: parseEther(amount.toString())
53
69
  });
54
70
  return this.transfer(account, recipient, amount, { gasLimit, gasPrice });
55
71
  }
56
72
  async getTokenBalance(address, tokenSymbol) {
57
73
  return (await this.getAssetBalance(address, tokenSymbol)).amount;
58
74
  }
59
- async getAssetBalance(address, asset) {
60
- if (!this.validateAddress(address)) {
61
- throw new Error('Invalid EVM address.');
75
+ /** Listed only where an endpoint serves the logs. Token transfers only: a standard RPC cannot look up native transfers by address. */
76
+ get recentTransfers() {
77
+ const { history } = this.config;
78
+ return history ? (address, limit, cursor) => this.recentTokenTransfers(history, address, limit, cursor) : undefined;
79
+ }
80
+ /** The cursor is the last block a later scan need not read again. */
81
+ async recentTokenTransfers(history, address, limit, cursor) {
82
+ if (cursor !== undefined && !/^\d+$/.test(cursor))
83
+ throw new Error('Invalid transfer cursor.');
84
+ const owner = this.address(address);
85
+ const client = history.url ? createPublicClient({ transport: http(history.url, { fetchFn: request }) }) : this.client;
86
+ const tokens = new Map(Object.entries(this.config.tokens).map(([symbol, token]) => [this.address(token.address), symbol]));
87
+ if (tokens.size === 0)
88
+ return { transfers: [] };
89
+ const head = await client.getBlockNumber();
90
+ const range = BigInt(history.blockRange);
91
+ const reach = (blocks) => head >= BigInt(blocks) ? head - BigInt(blocks) + 1n : 0n;
92
+ // A cursor within catch-up reach means everything after it is wanted; otherwise the latest `limit` are.
93
+ const since = cursor !== undefined && BigInt(cursor) + 1n >= reach(history.catchUpBlocks) ? BigInt(cursor) + 1n : undefined;
94
+ const oldest = reach(history.lookbackBlocks);
95
+ const logs = (args, fromBlock, toBlock) => client.getLogs({ address: [...tokens.keys()], event: TRANSFER_EVENT, args, fromBlock, toBlock, strict: true });
96
+ const found = new Map();
97
+ const read = async (fromBlock, toBlock) => {
98
+ const chunk = await Promise.all([logs({ to: owner }, fromBlock, toBlock), logs({ from: owner }, fromBlock, toBlock)]);
99
+ for (const log of chunk.flat())
100
+ found.set(`${log.transactionHash}:${log.logIndex}`, log);
101
+ };
102
+ // Nodes behind one endpoint disagree on the head: the newest chunk ends at each node's own head
103
+ // and spans half a range, so a node up to half a range ahead of this one stays within it. Being read
104
+ // on every scan, it is where the next one picks up.
105
+ const newest = head - range / 2n + 1n > 0n ? head - range / 2n + 1n : 0n;
106
+ await read(newest, 'latest');
107
+ const below = (toBlock, floor) => [toBlock - range + 1n > floor ? toBlock - range + 1n : floor, toBlock];
108
+ if (since !== undefined) {
109
+ // Catching up needs every range down to the cursor, so several are read at once.
110
+ const ranges = [];
111
+ for (let toBlock = newest - 1n; toBlock >= since; toBlock -= range)
112
+ ranges.push(below(toBlock, since));
113
+ for (let index = 0; index < ranges.length; index += walletConfig.history.parallelRanges) {
114
+ await Promise.all(ranges.slice(index, index + walletConfig.history.parallelRanges).map(([fromBlock, toBlock]) => read(fromBlock, toBlock)));
115
+ }
62
116
  }
117
+ else {
118
+ for (let toBlock = newest - 1n; toBlock >= oldest && found.size < limit; toBlock -= range)
119
+ await read(...below(toBlock, oldest));
120
+ }
121
+ const latest = [...found.values()].sort((a, b) => Number(b.blockNumber - a.blockNumber) || b.logIndex - a.logIndex);
122
+ const decimals = new Map(await Promise.all([...new Set(latest.map(log => getAddress(log.address)))].map(async (token) => [token, Number(await client.readContract({ address: token, abi: ERC20_ABI, functionName: 'decimals' }))])));
123
+ // Some endpoints omit blockTimestamp from logs or report it as zero.
124
+ const blocks = new Map(await Promise.all([...new Set(latest.filter(log => !log.blockTimestamp).map(log => log.blockNumber))]
125
+ .map(async (blockNumber) => [blockNumber, (await client.getBlock({ blockNumber })).timestamp])));
126
+ const transfers = latest.map((log) => {
127
+ const token = getAddress(log.address);
128
+ const outgoing = getAddress(log.args.from) === owner;
129
+ const timestamp = log.blockTimestamp || blocks.get(log.blockNumber);
130
+ return {
131
+ id: `${log.transactionHash}:${log.logIndex}`,
132
+ hash: log.transactionHash,
133
+ direction: outgoing ? 'out' : 'in',
134
+ counterparty: getAddress(outgoing ? log.args.to : log.args.from),
135
+ asset: tokens.get(token),
136
+ amount: formatUnits(log.args.value, decimals.get(token)),
137
+ timestamp: new Date(Number(timestamp) * 1000).toISOString(),
138
+ state: 'confirmed'
139
+ };
140
+ });
141
+ return { transfers, ...(newest > 0n ? { cursor: String(newest - 1n) } : {}) };
142
+ }
143
+ async getAssetBalance(address, asset) {
144
+ const owner = this.address(address);
63
145
  const symbol = asset.toUpperCase();
64
146
  if (symbol === this.config.nativeToken) {
65
- const baseUnits = await this.web3.eth.getBalance(address);
147
+ const baseUnits = await this.client.getBalance({ address: owner });
66
148
  return {
67
149
  asset: symbol,
68
150
  amount: formatUnits(baseUnits, 18),
@@ -74,9 +156,9 @@ export default class Web3Network extends BaseNetwork {
74
156
  if (!tokenConfig) {
75
157
  throw new Error(`Token ${symbol} not supported`);
76
158
  }
77
- const contract = new this.web3.eth.Contract(ERC20_ABI, tokenConfig.address);
78
- const baseUnits = String(await contract.methods.balanceOf(address).call());
79
- const decimals = Number(await contract.methods.decimals().call());
159
+ const token = this.address(tokenConfig.address);
160
+ const baseUnits = String(await this.client.readContract({ address: token, abi: ERC20_ABI, functionName: 'balanceOf', args: [owner] }));
161
+ const decimals = Number(await this.client.readContract({ address: token, abi: ERC20_ABI, functionName: 'decimals' }));
80
162
  if (!Number.isInteger(decimals) || decimals < 0) {
81
163
  throw new Error(`Token ${symbol} returned invalid decimals.`);
82
164
  }
@@ -88,14 +170,13 @@ export default class Web3Network extends BaseNetwork {
88
170
  };
89
171
  }
90
172
  async buildTransfer(from, to, amount, asset, options = {}) {
91
- if (!this.validateAddress(from) || !this.validateAddress(to)) {
92
- throw new Error('Invalid EVM address.');
93
- }
173
+ const sender = this.address(from);
174
+ const recipient = this.address(to);
94
175
  const configuredChainId = this.config.chainId;
95
176
  if (configuredChainId === undefined) {
96
177
  throw new Error(`Network ${this.config.id} does not define a chain ID.`);
97
178
  }
98
- const providerChainId = Number(await this.web3.eth.getChainId());
179
+ const providerChainId = await this.client.getChainId();
99
180
  if (providerChainId !== configuredChainId) {
100
181
  throw new Error(`RPC chain ID mismatch: expected ${configuredChainId}, received ${providerChainId}.`);
101
182
  }
@@ -111,13 +192,12 @@ export default class Web3Network extends BaseNetwork {
111
192
  const gasPrice = options.gasPrice !== undefined
112
193
  ? BigInt(options.gasPrice)
113
194
  : await this.getGasPrice();
114
- const nonce = await this.web3.eth.getTransactionCount(from, 'pending');
195
+ const nonce = await this.client.getTransactionCount({ address: sender, blockTag: 'pending' });
115
196
  let transaction;
116
197
  if (symbol === this.config.nativeToken) {
117
198
  transaction = {
118
- from: from,
119
- to,
120
- value: maximum ? '0' : amountBaseUnits.toString()
199
+ to: recipient,
200
+ value: maximum ? 0n : amountBaseUnits
121
201
  };
122
202
  }
123
203
  else {
@@ -125,25 +205,23 @@ export default class Web3Network extends BaseNetwork {
125
205
  if (!tokenConfig) {
126
206
  throw new Error(`Token ${symbol} not supported`);
127
207
  }
128
- const contract = new this.web3.eth.Contract(ERC20_ABI, tokenConfig.address);
129
208
  transaction = {
130
- from: from,
131
- to: tokenConfig.address,
132
- data: contract.methods.transfer(to, amountBaseUnits.toString()).encodeABI(),
133
- value: '0'
209
+ to: this.address(tokenConfig.address),
210
+ data: encodeFunctionData({ abi: ERC20_ABI, functionName: 'transfer', args: [recipient, amountBaseUnits] }),
211
+ value: 0n
134
212
  };
135
213
  }
136
214
  const gas = options.gasLimit !== undefined
137
215
  ? BigInt(options.gasLimit)
138
- : await this.web3.eth.estimateGas(transaction);
216
+ : await this.client.estimateGas({ account: sender, ...transaction });
139
217
  const feeBaseUnits = gas * gasPrice;
140
218
  const nativeBalance = await this.getAssetBalance(from, this.config.nativeToken);
141
219
  if (maximum && symbol === this.config.nativeToken) {
142
220
  amountBaseUnits = BigInt(nativeBalance.baseUnits) - feeBaseUnits;
143
221
  if (amountBaseUnits <= 0n)
144
222
  throw new Error(`Insufficient ${symbol} balance for fee.`);
145
- transaction.value = amountBaseUnits.toString();
146
- if (options.gasLimit === undefined && await this.web3.eth.estimateGas(transaction) > gas) {
223
+ transaction.value = amountBaseUnits;
224
+ if (options.gasLimit === undefined && await this.client.estimateGas({ account: sender, ...transaction }) > gas) {
147
225
  throw new Error('Gas estimate increased for the maximum amount. Specify a smaller amount.');
148
226
  }
149
227
  }
@@ -154,7 +232,7 @@ export default class Web3Network extends BaseNetwork {
154
232
  throw new Error(`Insufficient ${this.config.nativeToken} balance for amount and fee.`);
155
233
  }
156
234
  return {
157
- transaction: { ...transaction, nonce, gas, gasPrice, chainId: configuredChainId, networkId: configuredChainId },
235
+ transaction: { ...transaction, nonce, gas, gasPrice, chainId: configuredChainId, type: 'legacy' },
158
236
  estimate: {
159
237
  from, to, asset: symbol,
160
238
  amount: formatUnits(amountBaseUnits, balance.decimals),
@@ -170,25 +248,19 @@ export default class Web3Network extends BaseNetwork {
170
248
  async prepareTransfer(from, to, amount, asset, options = {}) {
171
249
  const { estimate, transaction } = await this.buildTransfer(from.address, to, amount, asset, options);
172
250
  this.checkFeeLimit(BigInt(estimate.fee.baseUnits), options.maxFeeBaseUnits);
173
- const signed = await this.web3.eth.accounts.signTransaction(transaction, from.privateKey);
174
- if (!signed.rawTransaction) {
175
- throw new Error('Failed to create a signed transaction.');
176
- }
177
- const transactionHash = signed.transactionHash || this.web3.utils.keccak256(signed.rawTransaction);
178
- if (!transactionHash) {
179
- throw new Error('Failed to calculate transaction hash.');
180
- }
181
- return { ...estimate, transactionHash, rawTransaction: signed.rawTransaction };
251
+ const rawTransaction = await privateKeyToAccount(this.formatPrivateKey(from.privateKey)).signTransaction(transaction);
252
+ return { ...estimate, transactionHash: keccak256(rawTransaction), rawTransaction };
182
253
  }
183
254
  async getTransactionStatus(transactionHash) {
184
- const receipt = await this.web3.eth.getTransactionReceipt(transactionHash).catch(missingTransaction);
255
+ const hash = transactionHash;
256
+ const receipt = await this.client.getTransactionReceipt({ hash }).catch(missingTransaction);
185
257
  if (receipt) {
186
258
  return {
187
- state: isFailedReceiptStatus(receipt.status) ? 'failed' : 'confirmed',
259
+ state: receipt.status === 'reverted' ? 'failed' : 'confirmed',
188
260
  transactionHash
189
261
  };
190
262
  }
191
- const transaction = await this.web3.eth.getTransaction(transactionHash).catch(missingTransaction);
263
+ const transaction = await this.client.getTransaction({ hash }).catch(missingTransaction);
192
264
  return {
193
265
  state: transaction ? 'submitted' : 'not_found',
194
266
  transactionHash
@@ -199,7 +271,7 @@ export default class Web3Network extends BaseNetwork {
199
271
  return false;
200
272
  }
201
273
  try {
202
- this.web3.eth.accounts.privateKeyToAccount(this.formatPrivateKey(privateKey));
274
+ privateKeyToAccount(this.formatPrivateKey(privateKey));
203
275
  return true;
204
276
  }
205
277
  catch {
@@ -211,7 +283,8 @@ export default class Web3Network extends BaseNetwork {
211
283
  throw new Error('Private key is required');
212
284
  }
213
285
  try {
214
- return this.web3.eth.accounts.privateKeyToAccount(this.formatPrivateKey(privateKey));
286
+ const formatted = this.formatPrivateKey(privateKey);
287
+ return { address: privateKeyToAccount(formatted).address, privateKey: formatted };
215
288
  }
216
289
  catch (error) {
217
290
  const message = error instanceof Error ? error.message : String(error);
@@ -219,20 +292,22 @@ export default class Web3Network extends BaseNetwork {
219
292
  }
220
293
  }
221
294
  async createAccount() {
222
- return this.web3.eth.accounts.create();
295
+ const privateKey = generatePrivateKey();
296
+ return { address: privateKeyToAccount(privateKey).address, privateKey };
223
297
  }
224
298
  async accountFromMnemonic(mnemonic) {
225
299
  const seed = await bip39.mnemonicToSeed(mnemonic);
226
- const root = hdkey.fromMasterSeed(seed);
227
- const addrNode = root.derive("m/44'/60'/0'/0/0");
228
- const privateKey = addrNode.privateKey.toString('hex');
229
- const account = this.web3.eth.accounts.privateKeyToAccount('0x' + privateKey);
230
- return { ...account, mnemonic };
300
+ const addrNode = HDKey.fromMasterSeed(seed).derive("m/44'/60'/0'/0/0");
301
+ if (!addrNode.privateKey) {
302
+ throw new Error('Mnemonic derivation produced no private key');
303
+ }
304
+ const privateKey = toHex(addrNode.privateKey);
305
+ return { address: privateKeyToAccount(privateKey).address, privateKey, mnemonic };
231
306
  }
232
307
  async createAccountFromMnemonic(wordCount = 12) {
233
308
  try {
234
309
  const strength = wordCount === 24 ? 256 : 128;
235
- const mnemonic = bip39.generateMnemonic(strength);
310
+ const mnemonic = bip39.generateMnemonic(wordlist, strength);
236
311
  return this.accountFromMnemonic(mnemonic);
237
312
  }
238
313
  catch (error) {
@@ -241,30 +316,23 @@ export default class Web3Network extends BaseNetwork {
241
316
  }
242
317
  }
243
318
  validateMnemonic(mnemonic) {
244
- return bip39.validateMnemonic(mnemonic);
319
+ return bip39.validateMnemonic(mnemonic, wordlist);
245
320
  }
246
321
  async sendSignedTransaction(signedTx) {
247
- let receipt;
248
- if (typeof signedTx === 'string') {
249
- receipt = await this.web3.eth.sendSignedTransaction(signedTx);
250
- }
251
- else {
252
- if (!signedTx.rawTransaction) {
253
- throw new Error('Signed transaction rawTransaction is required.');
254
- }
255
- receipt = await this.web3.eth.sendSignedTransaction(signedTx.rawTransaction);
322
+ const rawTransaction = typeof signedTx === 'string' ? signedTx : signedTx.rawTransaction;
323
+ if (!rawTransaction) {
324
+ throw new Error('Signed transaction rawTransaction is required.');
256
325
  }
257
- if (isFailedReceiptStatus(receipt.status)) {
326
+ const hash = await this.client.sendRawTransaction({ serializedTransaction: rawTransaction });
327
+ const receipt = await this.client.waitForTransactionReceipt({ hash });
328
+ if (receipt.status === 'reverted') {
258
329
  throw new Error('Transaction was mined but reverted.');
259
330
  }
260
331
  return receipt;
261
332
  }
262
333
  }
263
- function isFailedReceiptStatus(status) {
264
- return status === false || status === 0 || status === 0n || status === '0x0';
265
- }
266
334
  function missingTransaction(error) {
267
- if (error instanceof TransactionNotFound)
335
+ if (error instanceof TransactionReceiptNotFoundError || error instanceof TransactionNotFoundError)
268
336
  return undefined;
269
337
  throw error;
270
338
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Web3Network.js","sourceRoot":"","sources":["../../../network/lib/Web3Network.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Web3Network.js","sourceRoot":"","sources":["../../../network/lib/Web3Network.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,11 @@ declare const optimism: {
9
9
  explorer: string;
10
10
  url: string;
11
11
  nativeToken: string;
12
+ history: {
13
+ blockRange: number;
14
+ lookbackBlocks: number;
15
+ catchUpBlocks: number;
16
+ };
12
17
  tokens: {
13
18
  USDT: {
14
19
  address: string;
@@ -9,6 +9,11 @@ const optimism = {
9
9
  explorer: 'https://optimistic.etherscan.io/tx/',
10
10
  url: 'https://mainnet.optimism.io',
11
11
  nativeToken: 'ETH',
12
+ history: {
13
+ blockRange: 10_000,
14
+ lookbackBlocks: 100_000,
15
+ catchUpBlocks: 200_000
16
+ },
12
17
  tokens: {
13
18
  'USDT': {
14
19
  address: '0x94b008aA00579c1307B0EF2c499aD98a8ce58e58',
@@ -1 +1 @@
1
- {"version":3,"file":"op.js","sourceRoot":"","sources":["../../network/op.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAG/C,MAAM,QAAQ,GAAG;IACb,YAAY,EAAE,WAAW;IACzB,EAAE,EAAE,IAAI;IACR,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,mBAAmB;IAChC,QAAQ,EAAE,qCAAqC;IAC/C,GAAG,EAAE,6BAA6B;IAClC,WAAW,EAAE,KAAK;IAClB,MAAM,EAAE;QACJ,MAAM,EAAE;YACJ,OAAO,EAAE,4CAA4C;SACxD;KACJ;CACoB,CAAC;AAE1B,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"op.js","sourceRoot":"","sources":["../../network/op.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAG/C,MAAM,QAAQ,GAAG;IACb,YAAY,EAAE,WAAW;IACzB,EAAE,EAAE,IAAI;IACR,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,mBAAmB;IAChC,QAAQ,EAAE,qCAAqC;IAC/C,GAAG,EAAE,6BAA6B;IAClC,WAAW,EAAE,KAAK;IAClB,OAAO,EAAE;QACL,UAAU,EAAE,MAAM;QAClB,cAAc,EAAE,OAAO;QACvB,aAAa,EAAE,OAAO;KACzB;IACD,MAAM,EAAE;QACJ,MAAM,EAAE;YACJ,OAAO,EAAE,4CAA4C;SACxD;KACJ;CACoB,CAAC;AAE1B,eAAe,QAAQ,CAAC"}
@@ -9,6 +9,12 @@ declare const polygon: {
9
9
  explorer: string;
10
10
  url: string;
11
11
  nativeToken: string;
12
+ history: {
13
+ url: string;
14
+ blockRange: number;
15
+ lookbackBlocks: number;
16
+ catchUpBlocks: number;
17
+ };
12
18
  tokens: {
13
19
  USDT: {
14
20
  address: string;
@@ -9,6 +9,12 @@ const polygon = {
9
9
  explorer: 'https://polygonscan.com/tx/',
10
10
  url: 'https://polygon-rpc.com/',
11
11
  nativeToken: 'POL',
12
+ history: {
13
+ url: 'https://polygon-bor-rpc.publicnode.com',
14
+ blockRange: 10_000,
15
+ lookbackBlocks: 100_000,
16
+ catchUpBlocks: 200_000
17
+ },
12
18
  tokens: {
13
19
  'USDT': {
14
20
  address: '0xc2132D05D31c914a87C6611C10748AEb04B58e8F'
@@ -1 +1 @@
1
- {"version":3,"file":"pol.js","sourceRoot":"","sources":["../../network/pol.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAG/C,MAAM,OAAO,GAAG;IACZ,YAAY,EAAE,WAAW;IACzB,EAAE,EAAE,KAAK;IACT,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,GAAG;IACZ,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,kBAAkB;IAC/B,QAAQ,EAAE,6BAA6B;IACvC,GAAG,EAAE,0BAA0B;IAC/B,WAAW,EAAE,KAAK;IAClB,MAAM,EAAE;QACJ,MAAM,EAAE;YACJ,OAAO,EAAE,4CAA4C;SACxD;KACJ;CACoB,CAAC;AAE1B,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"pol.js","sourceRoot":"","sources":["../../network/pol.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAG/C,MAAM,OAAO,GAAG;IACZ,YAAY,EAAE,WAAW;IACzB,EAAE,EAAE,KAAK;IACT,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,GAAG;IACZ,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,kBAAkB;IAC/B,QAAQ,EAAE,6BAA6B;IACvC,GAAG,EAAE,0BAA0B;IAC/B,WAAW,EAAE,KAAK;IAClB,OAAO,EAAE;QACL,GAAG,EAAE,wCAAwC;QAC7C,UAAU,EAAE,MAAM;QAClB,cAAc,EAAE,OAAO;QACvB,aAAa,EAAE,OAAO;KACzB;IACD,MAAM,EAAE;QACJ,MAAM,EAAE;YACJ,OAAO,EAAE,4CAA4C;SACxD;KACJ;CACoB,CAAC;AAE1B,eAAe,OAAO,CAAC"}
@@ -2,6 +2,16 @@ export type TokenConfig = {
2
2
  address: string;
3
3
  decimals?: number;
4
4
  };
5
+ /** Where an EVM network's token transfers are read from: `eth_getLogs` in ranges of `blockRange`. */
6
+ export type TransferHistoryConfig = {
7
+ /** When the network's own endpoint cannot serve the logs. */
8
+ url?: string;
9
+ blockRange: number;
10
+ /** How far back from the head a first scan reaches. */
11
+ lookbackBlocks: number;
12
+ /** How far back a scan resuming from a cursor reaches: what the endpoint serves without an archive token, in a bounded number of ranges. */
13
+ catchUpBlocks: number;
14
+ };
5
15
  export type NetworkConfig = {
6
16
  id: string;
7
17
  family: 'evm' | 'bitcoin';
@@ -14,6 +24,7 @@ export type NetworkConfig = {
14
24
  chainId?: number;
15
25
  network?: string;
16
26
  feeRate?: number;
27
+ history?: TransferHistoryConfig;
17
28
  };
18
29
  export type NetworkConstructor = new (config: NetworkConfig) => BaseNetworkContract;
19
30
  export type NetworkPlugin = NetworkConfig & {
@@ -61,6 +72,25 @@ export type TransactionStatus = {
61
72
  state: 'not_found' | 'submitted' | 'confirmed' | 'failed';
62
73
  transactionHash: string;
63
74
  };
75
+ /** A transfer into or out of an address, as the chain records it. */
76
+ export type ChainTransfer = {
77
+ /** Unique per transfer: one transaction can hold several. */
78
+ id: string;
79
+ hash: string;
80
+ direction: 'in' | 'out';
81
+ /** The sender of an incoming transfer, the recipient of an outgoing one. */
82
+ counterparty: string;
83
+ asset: string;
84
+ amount: string;
85
+ /** Absent while unconfirmed. */
86
+ timestamp?: string;
87
+ state: 'pending' | 'confirmed';
88
+ };
89
+ /** One read of an address's transfers; `cursor` lets the next read start after them. */
90
+ export type TransferScan = {
91
+ transfers: ChainTransfer[];
92
+ cursor?: string;
93
+ };
64
94
  export type NetworkUsageEntry = {
65
95
  count: number;
66
96
  lastUsed: number;
@@ -87,6 +117,11 @@ export interface BaseNetworkContract {
87
117
  estimateTransfer(from: string, to: string, amount: string, asset: string, options?: TransferOptions): Promise<TransferEstimate>;
88
118
  prepareTransfer(from: WalletAccount, to: string, amount: string, asset: string, options?: TransferOptions): Promise<PreparedTransfer>;
89
119
  getTransactionStatus(transactionHash: string): Promise<TransactionStatus>;
120
+ /**
121
+ * Optional. The address's transfers in and out, newest first: without a cursor the latest ones, stopping once
122
+ * `limit` are found; with the cursor of an earlier scan, all of those since that scan.
123
+ */
124
+ recentTransfers?(address: string, limit: number, cursor?: string): Promise<TransferScan>;
90
125
  sendSignedTransaction(signedTx: SignedTransaction | string): Promise<unknown>;
91
126
  handleNativeTransfer?(from: WalletAccount, to: string, amount: number | string, options?: TransferOptions): Promise<SignedTransaction | string | unknown>;
92
127
  handleERC20Transfer?(from: WalletAccount, tokenSymbol: string, to: string, amount: number | string): Promise<SignedTransaction | string | unknown>;
@@ -1,6 +1,11 @@
1
- import type { NetworkPlugin } from './network/types.js';
1
+ import type { NetworkPlugin, NetworkUsage, NetworkUsageEntry } from './network/types.js';
2
2
  export declare const ACTIVE_NETWORKS: readonly NetworkPlugin[];
3
3
  export declare function networkStorageName(network: NetworkPlugin): string;
4
+ export declare function isNetworkUsageEntry(value: unknown): value is NetworkUsageEntry;
5
+ /** Most recently used first; networks with no use time fall back to how often they were used. */
6
+ export declare function byRecentUse(networks: readonly NetworkPlugin[], usage: NetworkUsage): NetworkPlugin[];
7
+ /** Counts one more use of the network, now. */
8
+ export declare function recordNetworkUse(usage: NetworkUsage, network: NetworkPlugin): void;
4
9
  export declare class NetworkRegistry {
5
10
  private readonly byId;
6
11
  constructor(networks?: readonly NetworkPlugin[]);
@@ -21,6 +21,34 @@ export const ACTIVE_NETWORKS = Object.freeze([
21
21
  export function networkStorageName(network) {
22
22
  return network.storageName ?? network.name;
23
23
  }
24
+ export function isNetworkUsageEntry(value) {
25
+ return (typeof value === 'object' &&
26
+ value !== null &&
27
+ !Array.isArray(value) &&
28
+ typeof value.count === 'number');
29
+ }
30
+ /** Most recently used first; networks with no use time fall back to how often they were used. */
31
+ export function byRecentUse(networks, usage) {
32
+ const lastUsed = (network) => {
33
+ const entry = usage[networkStorageName(network)];
34
+ return typeof entry === 'object' ? entry.lastUsed || 0 : 0;
35
+ };
36
+ const count = (network) => {
37
+ const entry = usage[networkStorageName(network)];
38
+ return typeof entry === 'number' ? entry : entry?.count || 0;
39
+ };
40
+ return [...networks].sort((a, b) => {
41
+ if (lastUsed(a) === 0 && lastUsed(b) === 0)
42
+ return count(b) - count(a);
43
+ return lastUsed(b) - lastUsed(a);
44
+ });
45
+ }
46
+ /** Counts one more use of the network, now. */
47
+ export function recordNetworkUse(usage, network) {
48
+ const current = usage[networkStorageName(network)];
49
+ const count = typeof current === 'number' ? current : isNetworkUsageEntry(current) ? current.count : 0;
50
+ usage[networkStorageName(network)] = { count: count + 1, lastUsed: Date.now() };
51
+ }
24
52
  export class NetworkRegistry {
25
53
  byId;
26
54
  constructor(networks = ACTIVE_NETWORKS) {
@@ -1 +1 @@
1
- {"version":3,"file":"network-registry.js","sourceRoot":"","sources":["../network-registry.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,kBAAkB,CAAC;AACnC,OAAO,IAAI,MAAM,mBAAmB,CAAC;AACrC,OAAO,GAAG,MAAM,kBAAkB,CAAC;AACnC,OAAO,GAAG,MAAM,kBAAkB,CAAC;AACnC,OAAO,GAAG,MAAM,kBAAkB,CAAC;AACnC,OAAO,GAAG,MAAM,kBAAkB,CAAC;AACnC,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACjC,OAAO,GAAG,MAAM,kBAAkB,CAAC;AAGnC,MAAM,CAAC,MAAM,eAAe,GAA6B,MAAM,CAAC,MAAM,CAAC;IACnE,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,EAAE;IACF,GAAG;IACH,IAAI;IACJ,WAAW;CACd,CAAC,CAAC;AAEH,MAAM,UAAU,kBAAkB,CAAC,OAAsB;IACrD,OAAO,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;AAC/C,CAAC;AAED,MAAM,OAAO,eAAe;IACP,IAAI,CAA6B;IAElD,YAAY,WAAqC,eAAe;QAC5D,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3D,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;IACL,CAAC;IAED,IAAI;QACA,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,GAAG,CAAC,EAAU;QACV,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,cAAc,CAAC,MAA+B;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QAC3E,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ"}
1
+ {"version":3,"file":"network-registry.js","sourceRoot":"","sources":["../network-registry.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { ProfileLock } from './profile-lock.js';
2
- import type { AccountDetails, ContactsPort, HostAction, NewAccount, SentTransfer, SessionCapabilities, TransferPort, WalletSession } from './app/session.js';
2
+ import type { AccountDetails, ContactsPort, HostAction, NewAccount, RecentTransfers, SentTransfer, SessionCapabilities, TransferPort, WalletSession } from './app/session.js';
3
3
  import type { BaseNetworkContract, NetworkPlugin } from './network/types.js';
4
4
  /** The encrypted profile in ~/.HODL as a wallet session. Prompts only through the Ui it is given. */
5
5
  export declare class NodeSession implements WalletSession {
@@ -34,6 +34,8 @@ export declare class NodeSession implements WalletSession {
34
34
  accountDetails(): Promise<AccountDetails | null>;
35
35
  tokenBalances(): Promise<Array<[string, string]>>;
36
36
  sentTransfers(): Promise<SentTransfer[]>;
37
+ /** Saved under `chainTransfers`, then the address and the network's storage name. */
38
+ recentTransfers(): Promise<RecentTransfers>;
37
39
  importActions(): HostAction[];
38
40
  exportActions(): HostAction[];
39
41
  menuActions(): HostAction[];