hodl-wallet 2.1.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 (117) hide show
  1. package/README.md +11 -11
  2. package/dist/app/account.d.ts +7 -0
  3. package/dist/app/account.js +248 -0
  4. package/dist/app/account.js.map +1 -0
  5. package/dist/app/format.d.ts +5 -0
  6. package/dist/app/format.js +33 -0
  7. package/dist/app/format.js.map +1 -0
  8. package/dist/app/history.d.ts +48 -0
  9. package/dist/app/history.js +115 -0
  10. package/dist/app/history.js.map +1 -0
  11. package/dist/app/index.d.ts +12 -0
  12. package/dist/app/index.js +9 -0
  13. package/dist/app/index.js.map +1 -0
  14. package/dist/app/menu.d.ts +13 -0
  15. package/dist/app/menu.js +93 -0
  16. package/dist/app/menu.js.map +1 -0
  17. package/dist/app/output.d.ts +17 -0
  18. package/dist/app/output.js +107 -0
  19. package/dist/app/output.js.map +1 -0
  20. package/dist/app/session.d.ts +125 -0
  21. package/dist/app/session.js +2 -0
  22. package/dist/app/session.js.map +1 -0
  23. package/dist/app/swap.d.ts +5 -0
  24. package/dist/app/swap.js +274 -0
  25. package/dist/app/swap.js.map +1 -0
  26. package/dist/app/transfer.d.ts +3 -0
  27. package/dist/app/transfer.js +144 -0
  28. package/dist/app/transfer.js.map +1 -0
  29. package/dist/app/ui.d.ts +73 -0
  30. package/dist/app/ui.js +15 -0
  31. package/dist/app/ui.js.map +1 -0
  32. package/dist/browser-core.d.ts +7 -1
  33. package/dist/browser-core.js +6 -1
  34. package/dist/browser-core.js.map +1 -1
  35. package/dist/config.d.ts +11 -0
  36. package/dist/config.js +12 -0
  37. package/dist/config.js.map +1 -0
  38. package/dist/hodl-file.d.ts +31 -0
  39. package/dist/hodl-file.js +78 -0
  40. package/dist/hodl-file.js.map +1 -0
  41. package/dist/index.js +24 -1096
  42. package/dist/index.js.map +1 -1
  43. package/dist/network/abis/erc20.d.ts +35 -13
  44. package/dist/network/abis/erc20.js +6 -26
  45. package/dist/network/abis/erc20.js.map +1 -1
  46. package/dist/network/arb.d.ts +5 -0
  47. package/dist/network/arb.js +5 -0
  48. package/dist/network/arb.js.map +1 -1
  49. package/dist/network/avax.d.ts +6 -0
  50. package/dist/network/avax.js +6 -0
  51. package/dist/network/avax.js.map +1 -1
  52. package/dist/network/bsc.d.ts +6 -0
  53. package/dist/network/bsc.js +6 -0
  54. package/dist/network/bsc.js.map +1 -1
  55. package/dist/network/eth.d.ts +6 -0
  56. package/dist/network/eth.js +6 -0
  57. package/dist/network/eth.js.map +1 -1
  58. package/dist/network/ftm.d.ts +6 -0
  59. package/dist/network/ftm.js +6 -0
  60. package/dist/network/ftm.js.map +1 -1
  61. package/dist/network/lib/BitcoinNetwork.d.ts +3 -1
  62. package/dist/network/lib/BitcoinNetwork.js +58 -13
  63. package/dist/network/lib/BitcoinNetwork.js.map +1 -1
  64. package/dist/network/lib/Web3Network.d.ts +10 -4
  65. package/dist/network/lib/Web3Network.js +141 -73
  66. package/dist/network/lib/Web3Network.js.map +1 -1
  67. package/dist/network/op.d.ts +5 -0
  68. package/dist/network/op.js +5 -0
  69. package/dist/network/op.js.map +1 -1
  70. package/dist/network/pol.d.ts +6 -0
  71. package/dist/network/pol.js +6 -0
  72. package/dist/network/pol.js.map +1 -1
  73. package/dist/network/types.d.ts +35 -0
  74. package/dist/network-registry.d.ts +6 -1
  75. package/dist/network-registry.js +28 -0
  76. package/dist/network-registry.js.map +1 -1
  77. package/dist/node-session.d.ts +53 -0
  78. package/dist/node-session.js +359 -0
  79. package/dist/node-session.js.map +1 -0
  80. package/dist/persist.d.ts +14 -7
  81. package/dist/persist.js +83 -108
  82. package/dist/persist.js.map +1 -1
  83. package/dist/request.d.ts +7 -0
  84. package/dist/request.js +26 -0
  85. package/dist/request.js.map +1 -0
  86. package/dist/swap/bitcoin.d.ts +1 -1
  87. package/dist/swap/bitcoin.js +7 -6
  88. package/dist/swap/bitcoin.js.map +1 -1
  89. package/dist/swap/chain.js +25 -40
  90. package/dist/swap/chain.js.map +1 -1
  91. package/dist/swap/config.d.ts +12 -0
  92. package/dist/swap/config.js +6 -0
  93. package/dist/swap/config.js.map +1 -1
  94. package/dist/swap/http.d.ts +2 -1
  95. package/dist/swap/http.js +8 -4
  96. package/dist/swap/http.js.map +1 -1
  97. package/dist/swap/providers.d.ts +15 -0
  98. package/dist/swap/providers.js +187 -1
  99. package/dist/swap/providers.js.map +1 -1
  100. package/dist/swap/routes.d.ts +28 -0
  101. package/dist/swap/routes.js +5 -3
  102. package/dist/swap/routes.js.map +1 -1
  103. package/dist/swap/service.d.ts +2 -1
  104. package/dist/swap/service.js +16 -5
  105. package/dist/swap/service.js.map +1 -1
  106. package/dist/swap/types.d.ts +3 -1
  107. package/dist/swap/types.js.map +1 -1
  108. package/dist/transfer-service.js +1 -2
  109. package/dist/transfer-service.js.map +1 -1
  110. package/dist/ui-inquirer.d.ts +37 -0
  111. package/dist/ui-inquirer.js +97 -0
  112. package/dist/ui-inquirer.js.map +1 -0
  113. package/dist/wallet-store.d.ts +2 -1
  114. package/package.json +17 -14
  115. package/dist/swap/ui.d.ts +0 -3
  116. package/dist/swap/ui.js +0 -257
  117. package/dist/swap/ui.js.map +0 -1
package/dist/persist.js CHANGED
@@ -1,34 +1,55 @@
1
1
  import Deepbase from 'deepbase';
2
+ import { encryptedDocument } from 'deepbase/plugins/encryption';
2
3
  import crypto from 'node:crypto';
3
4
  import fs from 'node:fs';
4
5
  import path from 'node:path';
5
- import { clearSensitiveData, isSensitiveField } from './sensitive-data.js';
6
+ import { HODL_FILE_IV_BYTES, HODL_FILE_KEY_BYTES, HODL_FILE_SALT_BYTES, HODL_FILE_SCRYPT, formatHodlFile, hodlFileHeader, isHodlFile, parseHodlFile, scryptMemory } from './hodl-file.js';
7
+ import { clearSensitiveData } from './sensitive-data.js';
6
8
  const ALGORITHM = 'aes-256-gcm';
7
9
  const KEY_LENGTH = 32;
8
- const IV_LENGTH = 12;
9
- const SALT_LENGTH = 16;
10
- const SEALED_SECRET_VERSION = 1;
11
10
  class Persist extends Deepbase {
12
11
  encryptionKey;
13
- memoryKey;
12
+ legacy;
14
13
  disposed = false;
15
14
  storagePath;
16
15
  constructor(opts) {
17
16
  const encryptionKey = Buffer.from(opts.encryptionKey, 'utf8');
18
- const memoryKey = crypto.randomBytes(KEY_LENGTH);
17
+ const legacy = {};
19
18
  opts.encryptionKey = '';
20
19
  super({
21
20
  name: 'persist',
22
21
  path: opts.path,
23
- stringify: (obj) => Persist.encrypt(obj, encryptionKey),
24
- parse: (encryptedData) => Persist.decrypt(encryptedData, encryptionKey),
25
- encodeForMemory: (value, path) => Persist.transformSecrets(value, path, secret => Persist.sealSecret(secret, memoryKey)),
26
- decodeFromMemory: (value, path) => Persist.transformSecrets(value, path, secret => Persist.unsealSecret(secret, memoryKey))
22
+ parse: (text) => {
23
+ if (!Persist.isLegacyProfile(text))
24
+ return JSON.parse(text);
25
+ legacy.profile = Persist.decryptProfile(text, encryptionKey);
26
+ return {};
27
+ }
27
28
  });
29
+ this.use(encryptedDocument({ password: encryptionKey }));
28
30
  this.encryptionKey = encryptionKey;
29
- this.memoryKey = memoryKey;
31
+ this.legacy = legacy;
30
32
  this.storagePath = opts.path;
31
33
  }
34
+ /** Opens the profile, rejecting a wrong password, and rewrites one saved before the encrypted document format. */
35
+ async connect() {
36
+ const result = await super.connect();
37
+ const { profile } = this.legacy;
38
+ delete this.legacy.profile;
39
+ if (profile === undefined) {
40
+ clearSensitiveData(await this.get());
41
+ }
42
+ else {
43
+ try {
44
+ await this.set(profile);
45
+ await this.flush();
46
+ }
47
+ finally {
48
+ clearSensitiveData(profile);
49
+ }
50
+ }
51
+ return result;
52
+ }
32
53
  async flush() {
33
54
  const descriptor = fs.openSync(path.join(this.storagePath, 'persist.json'), 'r');
34
55
  try {
@@ -46,6 +67,16 @@ class Persist extends Deepbase {
46
67
  fs.closeSync(directory);
47
68
  }
48
69
  }
70
+ /** Whether the password is the one this profile is encrypted with. */
71
+ matchesPassword(password) {
72
+ const candidate = Buffer.from(password, 'utf8');
73
+ try {
74
+ return candidate.length === this.encryptionKey.length && crypto.timingSafeEqual(candidate, this.encryptionKey);
75
+ }
76
+ finally {
77
+ candidate.fill(0);
78
+ }
79
+ }
49
80
  async dispose() {
50
81
  if (this.disposed) {
51
82
  return;
@@ -55,58 +86,70 @@ class Persist extends Deepbase {
55
86
  }
56
87
  finally {
57
88
  this.encryptionKey.fill(0);
58
- this.memoryKey.fill(0);
59
89
  this.disposed = true;
60
90
  }
61
91
  }
62
92
  static clearSensitiveData(value) {
63
93
  clearSensitiveData(value);
64
94
  }
95
+ /** A .HODL file in the current format, v3. */
65
96
  static encrypt(obj, encryptionKey) {
66
- const salt = crypto.randomBytes(SALT_LENGTH);
67
- const iv = crypto.randomBytes(IV_LENGTH);
68
- const key = crypto.scryptSync(encryptionKey, salt, KEY_LENGTH);
97
+ const salt = crypto.randomBytes(HODL_FILE_SALT_BYTES);
98
+ const iv = crypto.randomBytes(HODL_FILE_IV_BYTES);
99
+ const header = hodlFileHeader(salt);
100
+ const key = Persist.fileKey(encryptionKey, salt, HODL_FILE_SCRYPT);
69
101
  let serialized;
70
102
  try {
71
103
  serialized = Buffer.from(JSON.stringify(obj), 'utf8');
72
104
  const cipher = crypto.createCipheriv(ALGORITHM, key, iv);
105
+ cipher.setAAD(Buffer.from(header, 'utf8'));
73
106
  const encrypted = Buffer.concat([
74
107
  cipher.update(serialized),
75
108
  cipher.final()
76
109
  ]);
77
- const authTag = cipher.getAuthTag();
78
- return `v2:${salt.toString('hex')}:${iv.toString('hex')}:${authTag.toString('hex')}:${encrypted.toString('hex')}`;
110
+ return formatHodlFile(header, iv, cipher.getAuthTag(), encrypted);
79
111
  }
80
112
  finally {
81
113
  key.fill(0);
82
114
  serialized?.fill(0);
83
115
  }
84
116
  }
117
+ static isLegacyProfile(text) {
118
+ return /^v\d+:/.test(text);
119
+ }
120
+ /** Whether the text is a v2 or v3 .HODL file. */
121
+ static isCurrentFormat(encryptedData) {
122
+ return isHodlFile(encryptedData);
123
+ }
124
+ /** A v2 or v3 .HODL file. Profiles saved before v2 are read with decryptProfile. */
85
125
  static decrypt(encryptedData, encryptionKey) {
86
- const parts = encryptedData.split(':');
87
- if (parts[0] === 'v2' && parts.length === 5) {
88
- const [, saltHex, ivHex, authTagHex, encryptedHex] = parts;
89
- const salt = Buffer.from(saltHex, 'hex');
90
- const iv = Buffer.from(ivHex, 'hex');
91
- const authTag = Buffer.from(authTagHex, 'hex');
92
- const encrypted = Buffer.from(encryptedHex, 'hex');
93
- const key = crypto.scryptSync(encryptionKey, salt, KEY_LENGTH);
94
- let decrypted;
95
- try {
96
- const decipher = crypto.createDecipheriv(ALGORITHM, key, iv);
97
- decipher.setAuthTag(authTag);
98
- decrypted = Buffer.concat([
99
- decipher.update(encrypted),
100
- decipher.final()
101
- ]);
102
- return JSON.parse(decrypted.toString('utf8'));
103
- }
104
- finally {
105
- key.fill(0);
106
- decrypted?.fill(0);
107
- }
126
+ const file = parseHodlFile(encryptedData);
127
+ const key = Persist.fileKey(encryptionKey, file.salt, file.cost);
128
+ let decrypted;
129
+ try {
130
+ const decipher = crypto.createDecipheriv(ALGORITHM, key, file.iv);
131
+ if (file.additionalData)
132
+ decipher.setAAD(file.additionalData);
133
+ decipher.setAuthTag(file.tag);
134
+ decrypted = Buffer.concat([
135
+ decipher.update(file.ciphertext),
136
+ decipher.final()
137
+ ]);
138
+ return JSON.parse(decrypted.toString('utf8'));
139
+ }
140
+ finally {
141
+ key.fill(0);
142
+ decrypted?.fill(0);
108
143
  }
109
- return Persist.decryptLegacy(encryptedData, encryptionKey);
144
+ }
145
+ static fileKey(encryptionKey, salt, cost) {
146
+ return crypto.scryptSync(encryptionKey, salt, HODL_FILE_KEY_BYTES, { ...cost, maxmem: scryptMemory(cost) });
147
+ }
148
+ /** A profile saved as a v2 or older string, before the encrypted document format. */
149
+ static decryptProfile(encryptedData, encryptionKey) {
150
+ return Persist.isCurrentFormat(encryptedData)
151
+ ? Persist.decrypt(encryptedData, encryptionKey)
152
+ : Persist.decryptLegacy(encryptedData, encryptionKey);
110
153
  }
111
154
  static decryptLegacy(encryptedData, encryptionKey) {
112
155
  const [, encrypted] = encryptedData.split(':');
@@ -150,74 +193,6 @@ class Persist extends Deepbase {
150
193
  iv: derived.subarray(keyLen, keyLen + ivLen)
151
194
  };
152
195
  }
153
- static transformSecrets(value, path, transform) {
154
- if (Persist.isSensitivePath(path)) {
155
- return transform(value);
156
- }
157
- if (Array.isArray(value)) {
158
- return value.map((item, index) => Persist.transformSecrets(item, [...path, String(index)], transform));
159
- }
160
- if (Persist.isRecord(value)) {
161
- return Object.fromEntries(Object.entries(value).map(([key, item]) => [
162
- key,
163
- Persist.transformSecrets(item, [...path, key], transform)
164
- ]));
165
- }
166
- return value;
167
- }
168
- static isSensitivePath(path) {
169
- const field = path.at(-1);
170
- return field !== undefined && isSensitiveField(field);
171
- }
172
- static isRecord(value) {
173
- return typeof value === 'object' && value !== null && !Array.isArray(value);
174
- }
175
- static isSealedSecret(value) {
176
- if (!Persist.isRecord(value)) {
177
- return false;
178
- }
179
- return (value.__hodlSealed === SEALED_SECRET_VERSION &&
180
- typeof value.iv === 'string' &&
181
- typeof value.authTag === 'string' &&
182
- typeof value.ciphertext === 'string');
183
- }
184
- static sealSecret(secret, memoryKey) {
185
- if (typeof secret !== 'string') {
186
- throw new TypeError('Sensitive values must be strings before entering memory');
187
- }
188
- const iv = crypto.randomBytes(IV_LENGTH);
189
- const cipher = crypto.createCipheriv(ALGORITHM, memoryKey, iv);
190
- const plaintext = Buffer.from(secret, 'utf8');
191
- try {
192
- const ciphertext = Buffer.concat([cipher.update(plaintext), cipher.final()]);
193
- return {
194
- __hodlSealed: SEALED_SECRET_VERSION,
195
- iv: iv.toString('hex'),
196
- authTag: cipher.getAuthTag().toString('hex'),
197
- ciphertext: ciphertext.toString('hex')
198
- };
199
- }
200
- finally {
201
- plaintext.fill(0);
202
- }
203
- }
204
- static unsealSecret(secret, memoryKey) {
205
- if (!Persist.isSealedSecret(secret)) {
206
- throw new TypeError('Sensitive value is not sealed in memory');
207
- }
208
- const iv = Buffer.from(secret.iv, 'hex');
209
- const authTag = Buffer.from(secret.authTag, 'hex');
210
- const ciphertext = Buffer.from(secret.ciphertext, 'hex');
211
- const decipher = crypto.createDecipheriv(ALGORITHM, memoryKey, iv);
212
- decipher.setAuthTag(authTag);
213
- const plaintext = Buffer.concat([decipher.update(ciphertext), decipher.final()]);
214
- try {
215
- return plaintext.toString('utf8');
216
- }
217
- finally {
218
- plaintext.fill(0);
219
- }
220
- }
221
196
  }
222
197
  export default Persist;
223
198
  //# sourceMappingURL=persist.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"persist.js","sourceRoot":"","sources":["../persist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"persist.js","sourceRoot":"","sources":["../persist.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /** A request that got no HTTP response: the host was unreachable, refused it, or did not answer in time. */
2
+ export declare class NetworkError extends Error {
3
+ }
4
+ /** fetch, naming the host when no response arrives; fetch reports that as a bare TypeError. */
5
+ export declare function request(input: string | URL | Request, init?: RequestInit): Promise<Response>;
6
+ /** What to show for an error: a network failure among its causes outranks the wrappers that describe the request. */
7
+ export declare function errorMessage(error: unknown): string;
@@ -0,0 +1,26 @@
1
+ /** A request that got no HTTP response: the host was unreachable, refused it, or did not answer in time. */
2
+ export class NetworkError extends Error {
3
+ }
4
+ /** fetch, naming the host when no response arrives; fetch reports that as a bare TypeError. */
5
+ export async function request(input, init) {
6
+ try {
7
+ return await fetch(input, init);
8
+ }
9
+ catch (error) {
10
+ const host = new URL(input instanceof Request ? input.url : input).host;
11
+ if (error instanceof Error && error.name === 'TimeoutError')
12
+ throw new NetworkError(`${host} did not respond in time.`, { cause: error });
13
+ if (error instanceof TypeError)
14
+ throw new NetworkError(`Could not reach ${host}.`, { cause: error });
15
+ throw error;
16
+ }
17
+ }
18
+ /** What to show for an error: a network failure among its causes outranks the wrappers that describe the request. */
19
+ export function errorMessage(error) {
20
+ for (let cause = error; cause instanceof Error; cause = cause.cause) {
21
+ if (cause instanceof NetworkError)
22
+ return cause.message;
23
+ }
24
+ return error instanceof Error ? error.message : String(error);
25
+ }
26
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../request.ts"],"names":[],"mappings":"AAAA,4GAA4G;AAC5G,MAAM,OAAO,YAAa,SAAQ,KAAK;CAAG;AAE1C,+FAA+F;AAC/F,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAA6B,EAAE,IAAkB;IAC3E,IAAI,CAAC;QACD,OAAO,MAAM,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;QACxE,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc;YAAE,MAAM,IAAI,YAAY,CAAC,GAAG,IAAI,2BAA2B,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1I,IAAI,KAAK,YAAY,SAAS;YAAE,MAAM,IAAI,YAAY,CAAC,mBAAmB,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACrG,MAAM,KAAK,CAAC;IAChB,CAAC;AACL,CAAC;AAED,qHAAqH;AACrH,MAAM,UAAU,YAAY,CAAC,KAAc;IACvC,KAAK,IAAI,KAAK,GAAG,KAAK,EAAE,KAAK,YAAY,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAClE,IAAI,KAAK,YAAY,YAAY;YAAE,OAAO,KAAK,CAAC,OAAO,CAAC;IAC5D,CAAC;IACD,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC"}
@@ -2,7 +2,7 @@ import type { WalletAccount } from '../network/types.js';
2
2
  import { BitcoinPayments } from './chain.js';
3
3
  import type { ChainReceipt, FundingEstimate, ProviderQuote, SwapChain, SwapInput, SwapPlan, SwapQuote, SwapStep } from './types.js';
4
4
  type Output = {
5
- script: Buffer;
5
+ script: Uint8Array;
6
6
  value: number;
7
7
  };
8
8
  export declare function bitcoinMemoOutputs(memo?: string): Output[];
@@ -1,5 +1,6 @@
1
1
  import * as bitcoin from 'bitcoinjs-lib';
2
2
  import BitcoinNetwork, { signBitcoinTransaction } from '../network/lib/BitcoinNetwork.js';
3
+ import { request } from '../request.js';
3
4
  import { BscPayments, BitcoinPayments } from './chain.js';
4
5
  import { swapConfig as config } from './config.js';
5
6
  import { integer, list, record, swapJson, swapText, SwapHttpError, textField, transactionHash, units } from './http.js';
@@ -79,7 +80,7 @@ export class BitcoinSwapChain extends BitcoinPayments {
79
80
  };
80
81
  }
81
82
  async assertAvailable(address) {
82
- const script = bitcoin.address.toOutputScript(address).toString('hex');
83
+ const script = Buffer.from(bitcoin.address.toOutputScript(address)).toString('hex');
83
84
  const pending = list(await swapJson(`${config.destination.url}/address/${address}/txs/mempool`)).map(record);
84
85
  if (pending.some(tx => list(tx.vin).some(input => record(record(input).prevout).scriptpubkey === script))) {
85
86
  throw new Error('An outgoing Bitcoin transaction is still pending.');
@@ -121,7 +122,7 @@ export class BitcoinSwapChain extends BitcoinPayments {
121
122
  const raw = await swapText(`${config.destination.url}/tx/${input.txid}/hex`);
122
123
  const parent = bitcoin.Transaction.fromHex(raw.trim());
123
124
  const output = parent.outs[input.vout];
124
- if (parent.getId() !== input.txid || !output || output.value !== input.value || !output.script.equals(script)) {
125
+ if (parent.getId() !== input.txid || !output || output.value !== BigInt(input.value) || !Buffer.from(output.script).equals(Buffer.from(script))) {
125
126
  throw new Error('Bitcoin funding input does not match the source wallet.');
126
127
  }
127
128
  if (quote.provider === 'thorchain' && parent.outs.length > config.bitcoin.maxOutputs) {
@@ -137,10 +138,10 @@ export class BitcoinSwapChain extends BitcoinPayments {
137
138
  }
138
139
  const memo = bitcoinMemoOutputs(quote.provider === 'thorchain' ? textField(plan.memo) : undefined);
139
140
  const memoCost = memo.reduce((sum, output) => sum + BigInt(output.value), 0n);
140
- psbt.addOutput({ address: plan.depositAddress, value: Number(amount) });
141
- psbt.addOutput({ address: quote.from, value: Number(change) });
141
+ psbt.addOutput({ address: plan.depositAddress, value: amount });
142
+ psbt.addOutput({ address: quote.from, value: change });
142
143
  for (const output of memo)
143
- psbt.addOutput(output);
144
+ psbt.addOutput({ script: output.script, value: BigInt(output.value) });
144
145
  signBitcoinTransaction(psbt, account.privateKey, bitcoin.networks.bitcoin);
145
146
  const transaction = psbt.extractTransaction();
146
147
  const minerFee = BigInt(quote.funding.budgetBaseUnits) - memoCost;
@@ -150,7 +151,7 @@ export class BitcoinSwapChain extends BitcoinPayments {
150
151
  return { kind, hash: transaction.getId(), rawTransaction: transaction.toHex(), confirmed: false, broadcastAttempted: false };
151
152
  }
152
153
  async broadcast(step) {
153
- const response = await fetch(`${config.destination.url}/tx`, {
154
+ const response = await request(`${config.destination.url}/tx`, {
154
155
  method: 'POST', headers: { 'content-type': 'text/plain' }, body: step.rawTransaction,
155
156
  signal: AbortSignal.timeout(config.httpTimeoutMs), redirect: 'error'
156
157
  });
@@ -1 +1 @@
1
- {"version":3,"file":"bitcoin.js","sourceRoot":"","sources":["../../swap/bitcoin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bitcoin.js","sourceRoot":"","sources":["../../swap/bitcoin.ts"],"names":[],"mappings":"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"}
@@ -1,28 +1,14 @@
1
- import { Web3 } from 'web3';
1
+ import { encodeFunctionData, keccak256, parseAbi, toBytes } from 'viem';
2
+ import { privateKeyToAccount } from 'viem/accounts';
2
3
  import * as bitcoin from 'bitcoinjs-lib';
3
4
  import { swapConfig as config } from './config.js';
4
5
  import { evmAddress, integer, list, record, swapJson, swapText, textField, transactionHash } from './http.js';
5
- const web3 = new Web3();
6
- const approveAbi = {
7
- name: 'approve', type: 'function',
8
- inputs: [{ name: 'spender', type: 'address' }, { name: 'amount', type: 'uint256' }]
9
- };
10
- const allowanceAbi = {
11
- name: 'allowance', type: 'function',
12
- inputs: [{ name: 'owner', type: 'address' }, { name: 'spender', type: 'address' }]
13
- };
14
- const transferAbi = {
15
- name: 'transfer', type: 'function',
16
- inputs: [{ name: 'to', type: 'address' }, { name: 'amount', type: 'uint256' }]
17
- };
18
- const depositAbi = {
19
- name: 'depositWithExpiry', type: 'function',
20
- inputs: [
21
- { name: 'vault', type: 'address' }, { name: 'asset', type: 'address' },
22
- { name: 'amount', type: 'uint256' }, { name: 'memo', type: 'string' },
23
- { name: 'expiry', type: 'uint256' }
24
- ]
25
- };
6
+ const abi = parseAbi([
7
+ 'function approve(address spender, uint256 amount)',
8
+ 'function allowance(address owner, address spender)',
9
+ 'function transfer(address to, uint256 amount)',
10
+ 'function depositWithExpiry(address vault, address asset, uint256 amount, string memo, uint256 expiry)'
11
+ ]);
26
12
  function hex(value) {
27
13
  if (typeof value !== 'string' || !/^0x[\da-f]+$/i.test(value))
28
14
  throw new Error('Invalid RPC number.');
@@ -80,7 +66,7 @@ export class BscPayments {
80
66
  return { amount: 0n, confirmations: 0 };
81
67
  if (hex(receipt.status) !== 1n)
82
68
  throw new Error('Refund transaction reverted.');
83
- const transferTopic = web3.utils.keccak256('Transfer(address,address,uint256)');
69
+ const transferTopic = keccak256(toBytes('Transfer(address,address,uint256)'));
84
70
  const recipient = `0x${evmAddress(address).slice(2).toLowerCase().padStart(64, '0')}`;
85
71
  let amount = 0n;
86
72
  for (const value of list(receipt.logs)) {
@@ -101,7 +87,7 @@ export class BitcoinPayments {
101
87
  const tx = record(await swapJson(`${config.destination.url}/tx/${id}`));
102
88
  if (transactionHash(tx.txid) !== id)
103
89
  throw new Error('Bitcoin transaction hash mismatch.');
104
- const script = bitcoin.address.toOutputScript(address, bitcoin.networks.bitcoin).toString('hex');
90
+ const script = Buffer.from(bitcoin.address.toOutputScript(address, bitcoin.networks.bitcoin)).toString('hex');
105
91
  let sats = 0n;
106
92
  for (const entry of list(tx.vout)) {
107
93
  const output = record(entry);
@@ -147,7 +133,7 @@ export class BscSwapChain extends BscPayments {
147
133
  }
148
134
  async allowance(address, router) {
149
135
  await this.assertChain();
150
- const data = web3.eth.abi.encodeFunctionCall(allowanceAbi, [evmAddress(address), evmAddress(router)]);
136
+ const data = encodeFunctionData({ abi, functionName: 'allowance', args: [evmAddress(address), evmAddress(router)] });
151
137
  return hex(await this.rpc('eth_call', [{ to: config.token, data }, 'latest']));
152
138
  }
153
139
  async assertNonceAvailable(address) {
@@ -160,7 +146,8 @@ export class BscSwapChain extends BscPayments {
160
146
  }
161
147
  async sign(quote, plan, kind, account) {
162
148
  await this.assertChain();
163
- if (web3.eth.accounts.privateKeyToAccount(account.privateKey).address.toLowerCase() !== quote.from.toLowerCase()) {
149
+ const signer = privateKeyToAccount(account.privateKey);
150
+ if (signer.address.toLowerCase() !== quote.from.toLowerCase()) {
164
151
  throw new Error('Swap signer does not match source account.');
165
152
  }
166
153
  await this.assertNonceAvailable(quote.from);
@@ -170,19 +157,19 @@ export class BscSwapChain extends BscPayments {
170
157
  if (kind !== 'deposit') {
171
158
  if (quote.provider !== 'thorchain' || plan.router !== config.thorchain.router)
172
159
  throw new Error('Invalid approval router.');
173
- data = web3.eth.abi.encodeFunctionCall(approveAbi, [plan.router, kind === 'approve' ? quote.amountBaseUnits : '0']);
160
+ data = encodeFunctionData({ abi, functionName: 'approve', args: [plan.router, kind === 'approve' ? BigInt(quote.amountBaseUnits) : 0n] });
174
161
  }
175
- else if (quote.provider === 'chainflip') {
176
- data = web3.eth.abi.encodeFunctionCall(transferAbi, [evmAddress(plan.depositAddress), quote.amountBaseUnits]);
162
+ else if (quote.provider !== 'thorchain') {
163
+ data = encodeFunctionData({ abi, functionName: 'transfer', args: [evmAddress(plan.depositAddress), BigInt(quote.amountBaseUnits)] });
177
164
  limit = config.gas.transfer;
178
165
  }
179
166
  else {
180
167
  if (plan.router !== config.thorchain.router || !plan.memo || !plan.expirySeconds)
181
168
  throw new Error('Invalid THORChain deposit.');
182
169
  to = plan.router;
183
- data = web3.eth.abi.encodeFunctionCall(depositAbi, [
184
- evmAddress(plan.depositAddress), config.token, quote.amountBaseUnits, plan.memo, String(plan.expirySeconds)
185
- ]);
170
+ data = encodeFunctionData({ abi, functionName: 'depositWithExpiry', args: [
171
+ evmAddress(plan.depositAddress), config.token, BigInt(quote.amountBaseUnits), plan.memo, BigInt(plan.expirySeconds)
172
+ ] });
186
173
  limit = config.gas.deposit;
187
174
  }
188
175
  const nonce = hex(await this.rpc('eth_getTransactionCount', [quote.from, 'pending']));
@@ -191,14 +178,12 @@ export class BscSwapChain extends BscPayments {
191
178
  const estimate = hex(await this.rpc('eth_estimateGas', [request]));
192
179
  if (estimate > BigInt(limit))
193
180
  throw new Error('Gas exceeds the accepted budget; obtain a new quote.');
194
- const signed = await web3.eth.accounts.signTransaction({
195
- ...request, nonce, gas: limit, gasPrice, chainId: config.source.chainId, networkId: config.source.chainId, type: '0x0'
196
- }, account.privateKey);
197
- if (!signed.rawTransaction)
198
- throw new Error('Could not sign swap transaction.');
181
+ const rawTransaction = await signer.signTransaction({
182
+ to, data, value: 0n, nonce: Number(nonce), gas: BigInt(limit), gasPrice, chainId: config.source.chainId, type: 'legacy'
183
+ });
199
184
  return {
200
- kind, nonce: nonce.toString(), rawTransaction: signed.rawTransaction,
201
- hash: transactionHash(signed.transactionHash, true), confirmed: false, broadcastAttempted: false
185
+ kind, nonce: nonce.toString(), rawTransaction,
186
+ hash: transactionHash(keccak256(rawTransaction), true), confirmed: false, broadcastAttempted: false
202
187
  };
203
188
  }
204
189
  async broadcast(step) {
@@ -244,7 +229,7 @@ export class BscSwapChain extends BscPayments {
244
229
  kind = allowance > 0n ? 'reset_approval' : 'approve';
245
230
  }
246
231
  const spent = steps.reduce((sum, step) => sum + (step.kind === 'deposit' ? config.gas.deposit : config.gas.approval), 0);
247
- const next = kind === 'deposit' ? (quote.provider === 'chainflip' ? config.gas.transfer : config.gas.deposit) : config.gas.approval;
232
+ const next = kind === 'deposit' ? (quote.provider === 'thorchain' ? config.gas.deposit : config.gas.transfer) : config.gas.approval;
248
233
  if (spent + next > quote.funding.units)
249
234
  throw new Error('Funding requirements exceed the accepted gas budget.');
250
235
  return kind;