@shapeshiftoss/hdwallet-native 1.55.3 → 1.55.4

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/dist/adapter.js +61 -22
  2. package/dist/adapter.js.map +1 -1
  3. package/dist/arkeo.js +123 -54
  4. package/dist/arkeo.js.map +1 -1
  5. package/dist/binance.js +194 -123
  6. package/dist/binance.js.map +1 -1
  7. package/dist/bitcoin.js +284 -219
  8. package/dist/bitcoin.js.map +1 -1
  9. package/dist/cosmos.js +123 -54
  10. package/dist/cosmos.js.map +1 -1
  11. package/dist/crypto/CryptoHelper.js +172 -106
  12. package/dist/crypto/CryptoHelper.js.map +1 -1
  13. package/dist/crypto/EncryptedWallet.js +123 -64
  14. package/dist/crypto/EncryptedWallet.js.map +1 -1
  15. package/dist/crypto/classes/cipherString.js +19 -18
  16. package/dist/crypto/classes/cipherString.js.map +1 -1
  17. package/dist/crypto/classes/encryptedObject.js +7 -7
  18. package/dist/crypto/classes/encryptedObject.js.map +1 -1
  19. package/dist/crypto/classes/encryptionType.js +5 -2
  20. package/dist/crypto/classes/encryptionType.js.map +1 -1
  21. package/dist/crypto/classes/index.js +11 -4
  22. package/dist/crypto/classes/index.js.map +1 -1
  23. package/dist/crypto/classes/symmetricCryptoKey.js +11 -13
  24. package/dist/crypto/classes/symmetricCryptoKey.js.map +1 -1
  25. package/dist/crypto/engines/index.js +18 -2
  26. package/dist/crypto/engines/index.js.map +1 -1
  27. package/dist/crypto/engines/types.js +5 -2
  28. package/dist/crypto/engines/types.js.map +1 -1
  29. package/dist/crypto/engines/web-crypto.js +84 -39
  30. package/dist/crypto/engines/web-crypto.js.map +1 -1
  31. package/dist/crypto/index.js +32 -3
  32. package/dist/crypto/index.js.map +1 -1
  33. package/dist/crypto/isolation/adapters/binance.js +51 -12
  34. package/dist/crypto/isolation/adapters/binance.js.map +1 -1
  35. package/dist/crypto/isolation/adapters/bip32.js +108 -65
  36. package/dist/crypto/isolation/adapters/bip32.js.map +1 -1
  37. package/dist/crypto/isolation/adapters/bitcoin.js +84 -41
  38. package/dist/crypto/isolation/adapters/bitcoin.js.map +1 -1
  39. package/dist/crypto/isolation/adapters/cosmos.js +24 -9
  40. package/dist/crypto/isolation/adapters/cosmos.js.map +1 -1
  41. package/dist/crypto/isolation/adapters/cosmosDirect.js +77 -35
  42. package/dist/crypto/isolation/adapters/cosmosDirect.js.map +1 -1
  43. package/dist/crypto/isolation/adapters/ethereum.js +90 -49
  44. package/dist/crypto/isolation/adapters/ethereum.js.map +1 -1
  45. package/dist/crypto/isolation/adapters/fio.js +67 -24
  46. package/dist/crypto/isolation/adapters/fio.js.map +1 -1
  47. package/dist/crypto/isolation/adapters/index.js +20 -7
  48. package/dist/crypto/isolation/adapters/index.js.map +1 -1
  49. package/dist/crypto/isolation/core/bip32/index.js +50 -22
  50. package/dist/crypto/isolation/core/bip32/index.js.map +1 -1
  51. package/dist/crypto/isolation/core/bip32/interfaces.js +28 -2
  52. package/dist/crypto/isolation/core/bip32/interfaces.js.map +1 -1
  53. package/dist/crypto/isolation/core/bip32/types.js +8 -5
  54. package/dist/crypto/isolation/core/bip32/types.js.map +1 -1
  55. package/dist/crypto/isolation/core/bip39/index.js +17 -1
  56. package/dist/crypto/isolation/core/bip39/index.js.map +1 -1
  57. package/dist/crypto/isolation/core/bip39/interfaces.js +2 -1
  58. package/dist/crypto/isolation/core/digest/algorithms.js +32 -23
  59. package/dist/crypto/isolation/core/digest/algorithms.js.map +1 -1
  60. package/dist/crypto/isolation/core/digest/index.js +18 -2
  61. package/dist/crypto/isolation/core/digest/index.js.map +1 -1
  62. package/dist/crypto/isolation/core/digest/types.js +26 -23
  63. package/dist/crypto/isolation/core/digest/types.js.map +1 -1
  64. package/dist/crypto/isolation/core/index.js +32 -5
  65. package/dist/crypto/isolation/core/index.js.map +1 -1
  66. package/dist/crypto/isolation/core/secp256k1/index.js +18 -2
  67. package/dist/crypto/isolation/core/secp256k1/index.js.map +1 -1
  68. package/dist/crypto/isolation/core/secp256k1/interfaces.js +2 -1
  69. package/dist/crypto/isolation/core/secp256k1/types.js +157 -119
  70. package/dist/crypto/isolation/core/secp256k1/types.js.map +1 -1
  71. package/dist/crypto/isolation/engines/default/bip32.js +176 -102
  72. package/dist/crypto/isolation/engines/default/bip32.js.map +1 -1
  73. package/dist/crypto/isolation/engines/default/bip39.js +68 -24
  74. package/dist/crypto/isolation/engines/default/bip39.js.map +1 -1
  75. package/dist/crypto/isolation/engines/default/index.js +32 -3
  76. package/dist/crypto/isolation/engines/default/index.js.map +1 -1
  77. package/dist/crypto/isolation/engines/default/revocable.js +51 -30
  78. package/dist/crypto/isolation/engines/default/revocable.js.map +1 -1
  79. package/dist/crypto/isolation/engines/dummy/bip32.js +121 -63
  80. package/dist/crypto/isolation/engines/dummy/bip32.js.map +1 -1
  81. package/dist/crypto/isolation/engines/dummy/bip39.js +97 -55
  82. package/dist/crypto/isolation/engines/dummy/bip39.js.map +1 -1
  83. package/dist/crypto/isolation/engines/dummy/index.js +30 -3
  84. package/dist/crypto/isolation/engines/dummy/index.js.map +1 -1
  85. package/dist/crypto/isolation/engines/dummy/types.js +5 -1
  86. package/dist/crypto/isolation/engines/dummy/types.js.map +1 -1
  87. package/dist/crypto/isolation/engines/index.js +28 -2
  88. package/dist/crypto/isolation/engines/index.js.map +1 -1
  89. package/dist/crypto/isolation/index.js +29 -3
  90. package/dist/crypto/isolation/index.js.map +1 -1
  91. package/dist/crypto/isolation/types.js +49 -43
  92. package/dist/crypto/isolation/types.js.map +1 -1
  93. package/dist/crypto/utils.js +13 -7
  94. package/dist/crypto/utils.js.map +1 -1
  95. package/dist/ethereum.js +160 -92
  96. package/dist/ethereum.js.map +1 -1
  97. package/dist/fio.js +282 -204
  98. package/dist/fio.js.map +1 -1
  99. package/dist/index.js +32 -3
  100. package/dist/index.js.map +1 -1
  101. package/dist/kava.js +119 -50
  102. package/dist/kava.js.map +1 -1
  103. package/dist/native.js +304 -176
  104. package/dist/native.js.map +1 -1
  105. package/dist/networks.js +33 -16
  106. package/dist/networks.js.map +1 -1
  107. package/dist/osmosis.js +123 -54
  108. package/dist/osmosis.js.map +1 -1
  109. package/dist/secret.js +119 -50
  110. package/dist/secret.js.map +1 -1
  111. package/dist/terra.js +119 -50
  112. package/dist/terra.js.map +1 -1
  113. package/dist/thorchain.js +123 -54
  114. package/dist/thorchain.js.map +1 -1
  115. package/dist/util.js +54 -16
  116. package/dist/util.js.map +1 -1
  117. package/package.json +3 -3
package/dist/bitcoin.js CHANGED
@@ -1,19 +1,71 @@
1
- import * as bitcoin from "@shapeshiftoss/bitcoinjs-lib";
2
- import * as core from "@shapeshiftoss/hdwallet-core";
3
- import * as bchAddr from "bchaddrjs";
4
- import { getNetwork } from "./networks";
5
- import * as util from "./util";
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
35
+ if (kind === "m") throw new TypeError("Private method is not writable");
36
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
37
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
38
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
39
+ };
40
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
41
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
42
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
43
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
44
+ };
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.MixinNativeBTCWalletInfo = MixinNativeBTCWalletInfo;
47
+ exports.MixinNativeBTCWallet = MixinNativeBTCWallet;
48
+ const bitcoin = __importStar(require("@shapeshiftoss/bitcoinjs-lib"));
49
+ const core = __importStar(require("@shapeshiftoss/hdwallet-core"));
50
+ const bchAddr = __importStar(require("bchaddrjs"));
51
+ const networks_1 = require("./networks");
52
+ const util = __importStar(require("./util"));
6
53
  const supportedCoins = ["bitcoin", "dash", "digibyte", "dogecoin", "litecoin", "bitcoincash", "testnet"];
7
54
  const segwit = ["p2wpkh", "p2sh-p2wpkh", "bech32"];
8
- export function MixinNativeBTCWalletInfo(Base) {
55
+ function MixinNativeBTCWalletInfo(Base) {
9
56
  // eslint-disable-next-line @typescript-eslint/no-shadow
10
57
  return class MixinNativeBTCWalletInfo extends Base {
11
- _supportsBTCInfo = true;
58
+ constructor() {
59
+ super(...arguments);
60
+ this._supportsBTCInfo = true;
61
+ }
12
62
  btcSupportsCoinSync(coin) {
13
63
  return supportedCoins.includes(String(coin).toLowerCase());
14
64
  }
15
- async btcSupportsCoin(coin) {
16
- return this.btcSupportsCoinSync(coin);
65
+ btcSupportsCoin(coin) {
66
+ return __awaiter(this, void 0, void 0, function* () {
67
+ return this.btcSupportsCoinSync(coin);
68
+ });
17
69
  }
18
70
  btcSupportsScriptTypeSync(coin, scriptType) {
19
71
  if (!this.btcSupportsCoinSync(coin))
@@ -29,11 +81,15 @@ export function MixinNativeBTCWalletInfo(Base) {
29
81
  return false;
30
82
  }
31
83
  }
32
- async btcSupportsScriptType(coin, scriptType) {
33
- return this.btcSupportsScriptTypeSync(coin, scriptType);
84
+ btcSupportsScriptType(coin, scriptType) {
85
+ return __awaiter(this, void 0, void 0, function* () {
86
+ return this.btcSupportsScriptTypeSync(coin, scriptType);
87
+ });
34
88
  }
35
- async btcSupportsSecureTransfer() {
36
- return false;
89
+ btcSupportsSecureTransfer() {
90
+ return __awaiter(this, void 0, void 0, function* () {
91
+ return false;
92
+ });
37
93
  }
38
94
  btcSupportsNativeShapeShift() {
39
95
  return false;
@@ -77,231 +133,240 @@ export function MixinNativeBTCWalletInfo(Base) {
77
133
  (addressNList[0] === 0x80000000 + 49 && msg.scriptType == core.BTCInputScriptType.SpendP2SHWitness) ||
78
134
  (addressNList[0] === 0x80000000 + 84 && msg.scriptType == core.BTCInputScriptType.SpendWitness)) {
79
135
  addressNList[2] += 1;
80
- return {
81
- ...msg,
82
- addressNList,
83
- };
136
+ return Object.assign(Object.assign({}, msg), { addressNList });
84
137
  }
85
138
  return undefined;
86
139
  }
87
140
  };
88
141
  }
89
- export function MixinNativeBTCWallet(Base) {
142
+ function MixinNativeBTCWallet(Base) {
143
+ var _MixinNativeBTCWallet_masterKey, _a;
90
144
  // eslint-disable-next-line @typescript-eslint/no-shadow
91
- return class MixinNativeBTCWallet extends Base {
92
- _supportsBTC = true;
93
- #masterKey;
94
- async btcInitializeWallet(masterKey) {
95
- this.#masterKey = masterKey;
96
- }
97
- btcWipe() {
98
- this.#masterKey = undefined;
99
- }
100
- createPayment(pubkey, scriptType, network) {
101
- switch (scriptType) {
102
- case "p2sh":
103
- return bitcoin.payments.p2sh({ pubkey, network });
104
- case "p2pkh":
105
- return bitcoin.payments.p2pkh({ pubkey, network });
106
- case "p2wpkh":
107
- return bitcoin.payments.p2wpkh({ pubkey, network });
108
- case "p2sh-p2wpkh":
109
- return bitcoin.payments.p2sh({
110
- redeem: bitcoin.payments.p2wpkh({ pubkey, network }),
111
- network,
112
- });
113
- case "bech32":
114
- return bitcoin.payments.p2wsh({
115
- redeem: bitcoin.payments.p2wsh({ pubkey, network }),
116
- network,
117
- });
118
- default:
119
- throw new Error(`no implementation for script type: ${scriptType}`);
120
- }
121
- }
122
- validateVoutOrdering(msg, tx) {
123
- // From THORChain specification:
124
- /* ignoreTx checks if we can already ignore a tx according to preset rules
125
-
126
- we expect array of "vout" for a BTC to have this format
127
- OP_RETURN is mandatory only on inbound tx
128
- vout:0 is our vault
129
- vout:1 is any any change back to themselves
130
- vout:2 is OP_RETURN (first 80 bytes)
131
- vout:3 is OP_RETURN (next 80 bytes)
132
-
133
- Rules to ignore a tx are:
134
- - vout:0 doesn't have coins (value)
135
- - vout:0 doesn't have address
136
- - count vouts > 4
137
- - count vouts with coins (value) > 2
138
- */
139
- // Check that vout:0 contains the vault address
140
- if (bitcoin.address.fromOutputScript(tx.outs[0].script) != msg.vaultAddress) {
141
- console.error("Vout:0 does not contain vault address.");
142
- return false;
143
- }
144
- // TODO: Can we check and make sure vout:1 is our address?
145
- // Check and make sure vout:2 exists
146
- if (tx.outs.length < 3) {
147
- console.error("Not enough outputs found in transaction.", msg);
148
- return false;
145
+ return _a = class MixinNativeBTCWallet extends Base {
146
+ constructor() {
147
+ super(...arguments);
148
+ this._supportsBTC = true;
149
+ _MixinNativeBTCWallet_masterKey.set(this, void 0);
149
150
  }
150
- // Check and make sure vout:2 has OP_RETURN data
151
- const opcode = bitcoin.script.decompile(tx.outs[2].script)?.[0];
152
- if (Object.keys(bitcoin.script.OPS).find((k) => bitcoin.script.OPS[k] === opcode) != "OP_RETURN") {
153
- console.error("OP_RETURN output not found for transaction.");
154
- return false;
151
+ btcInitializeWallet(masterKey) {
152
+ return __awaiter(this, void 0, void 0, function* () {
153
+ __classPrivateFieldSet(this, _MixinNativeBTCWallet_masterKey, masterKey, "f");
154
+ });
155
155
  }
156
- // Make sure vout:3 does not exist
157
- if (tx.outs[3]) {
158
- console.error("Illegal second op_return output found.");
159
- return false;
156
+ btcWipe() {
157
+ __classPrivateFieldSet(this, _MixinNativeBTCWallet_masterKey, undefined, "f");
160
158
  }
161
- return true;
162
- }
163
- async buildInput(coin, input) {
164
- return this.needsMnemonic(!!this.#masterKey, async () => {
165
- const { addressNList, amount, hex, scriptType } = input;
166
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
167
- const keyPair = await util.getKeyPair(this.#masterKey, addressNList, coin, scriptType);
168
- const isSegwit = !!scriptType && segwit.includes(scriptType);
169
- const nonWitnessUtxo = hex && Buffer.from(hex, "hex");
170
- const witnessUtxo = input.tx && {
171
- script: Buffer.from(input.tx.vout[input.vout].scriptPubKey.hex, "hex"),
172
- value: Number(amount),
173
- };
174
- const utxoData = isSegwit && witnessUtxo ? { witnessUtxo } : { nonWitnessUtxo };
175
- if (!(utxoData.witnessUtxo || utxoData.nonWitnessUtxo)) {
176
- throw new Error("failed to build input - must provide prev rawTx (segwit input can provide scriptPubKey hex and value instead)");
177
- }
178
- const { publicKey, network } = keyPair;
179
- const payment = this.createPayment(publicKey, scriptType, network);
180
- const scriptData = {};
159
+ createPayment(pubkey, scriptType, network) {
181
160
  switch (scriptType) {
182
- case "p2sh-p2wpkh":
183
161
  case "p2sh":
162
+ return bitcoin.payments.p2sh({ pubkey, network });
163
+ case "p2pkh":
164
+ return bitcoin.payments.p2pkh({ pubkey, network });
165
+ case "p2wpkh":
166
+ return bitcoin.payments.p2wpkh({ pubkey, network });
167
+ case "p2sh-p2wpkh":
168
+ return bitcoin.payments.p2sh({
169
+ redeem: bitcoin.payments.p2wpkh({ pubkey, network }),
170
+ network,
171
+ });
184
172
  case "bech32":
185
- scriptData.redeemScript = payment.redeem?.output;
186
- break;
173
+ return bitcoin.payments.p2wsh({
174
+ redeem: bitcoin.payments.p2wsh({ pubkey, network }),
175
+ network,
176
+ });
177
+ default:
178
+ throw new Error(`no implementation for script type: ${scriptType}`);
187
179
  }
188
- const bchData = {};
189
- if (coin.toLowerCase() === "bitcoincash") {
190
- bchData.sighashType = bitcoin.Transaction.SIGHASH_ALL | bitcoin.Transaction.SIGHASH_BITCOINCASHBIP143;
180
+ }
181
+ validateVoutOrdering(msg, tx) {
182
+ // From THORChain specification:
183
+ /* ignoreTx checks if we can already ignore a tx according to preset rules
184
+
185
+ we expect array of "vout" for a BTC to have this format
186
+ OP_RETURN is mandatory only on inbound tx
187
+ vout:0 is our vault
188
+ vout:1 is any any change back to themselves
189
+ vout:2 is OP_RETURN (first 80 bytes)
190
+ vout:3 is OP_RETURN (next 80 bytes)
191
+
192
+ Rules to ignore a tx are:
193
+ - vout:0 doesn't have coins (value)
194
+ - vout:0 doesn't have address
195
+ - count vouts > 4
196
+ - count vouts with coins (value) > 2
197
+ */
198
+ var _b;
199
+ // Check that vout:0 contains the vault address
200
+ if (bitcoin.address.fromOutputScript(tx.outs[0].script) != msg.vaultAddress) {
201
+ console.error("Vout:0 does not contain vault address.");
202
+ return false;
191
203
  }
192
- return {
193
- ...utxoData,
194
- ...bchData,
195
- ...scriptData,
196
- };
197
- });
198
- }
199
- async btcGetAddress(msg) {
200
- return this.needsMnemonic(!!this.#masterKey, async () => {
201
- const { addressNList, coin, scriptType } = msg;
202
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
203
- const keyPair = await util.getKeyPair(this.#masterKey, addressNList, coin, scriptType);
204
- const { address } = this.createPayment(keyPair.publicKey, scriptType, keyPair.network);
205
- if (!address)
206
- return null;
207
- return coin.toLowerCase() === "bitcoincash" ? bchAddr.toCashAddress(address) : address;
208
- });
209
- }
210
- async btcSignTx(msg) {
211
- return this.needsMnemonic(!!this.#masterKey, async () => {
212
- const { coin, inputs, outputs, version, locktime } = msg;
213
- const psbt = new bitcoin.Psbt({ network: getNetwork(coin) });
214
- psbt.setVersion(version ?? 1);
215
- locktime && psbt.setLocktime(locktime);
216
- await Promise.all(inputs.map(async (input) => {
217
- try {
218
- const inputData = await this.buildInput(coin, input);
219
- psbt.addInput({
220
- hash: input.txid,
221
- index: input.vout,
222
- ...inputData,
223
- });
224
- }
225
- catch (e) {
226
- throw new Error(`failed to add input: ${e}`);
227
- }
228
- }));
229
- await Promise.all(outputs.map(async (output) => {
230
- try {
231
- const { amount } = output;
232
- let address;
233
- if (output.address !== undefined) {
234
- address = output.address;
235
- }
236
- else if (output.addressNList !== undefined) {
237
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
238
- const keyPair = await util.getKeyPair(this.#masterKey, output.addressNList, coin, output.scriptType);
239
- const { publicKey, network } = keyPair;
240
- const payment = this.createPayment(publicKey, output.scriptType, network);
241
- if (!payment.address)
242
- throw new Error("could not get payment address");
243
- address = payment.address;
204
+ // TODO: Can we check and make sure vout:1 is our address?
205
+ // Check and make sure vout:2 exists
206
+ if (tx.outs.length < 3) {
207
+ console.error("Not enough outputs found in transaction.", msg);
208
+ return false;
209
+ }
210
+ // Check and make sure vout:2 has OP_RETURN data
211
+ const opcode = (_b = bitcoin.script.decompile(tx.outs[2].script)) === null || _b === void 0 ? void 0 : _b[0];
212
+ if (Object.keys(bitcoin.script.OPS).find((k) => bitcoin.script.OPS[k] === opcode) != "OP_RETURN") {
213
+ console.error("OP_RETURN output not found for transaction.");
214
+ return false;
215
+ }
216
+ // Make sure vout:3 does not exist
217
+ if (tx.outs[3]) {
218
+ console.error("Illegal second op_return output found.");
219
+ return false;
220
+ }
221
+ return true;
222
+ }
223
+ buildInput(coin, input) {
224
+ return __awaiter(this, void 0, void 0, function* () {
225
+ return this.needsMnemonic(!!__classPrivateFieldGet(this, _MixinNativeBTCWallet_masterKey, "f"), () => __awaiter(this, void 0, void 0, function* () {
226
+ var _b;
227
+ const { addressNList, amount, hex, scriptType } = input;
228
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
229
+ const keyPair = yield util.getKeyPair(__classPrivateFieldGet(this, _MixinNativeBTCWallet_masterKey, "f"), addressNList, coin, scriptType);
230
+ const isSegwit = !!scriptType && segwit.includes(scriptType);
231
+ const nonWitnessUtxo = hex && Buffer.from(hex, "hex");
232
+ const witnessUtxo = input.tx && {
233
+ script: Buffer.from(input.tx.vout[input.vout].scriptPubKey.hex, "hex"),
234
+ value: Number(amount),
235
+ };
236
+ const utxoData = isSegwit && witnessUtxo ? { witnessUtxo } : { nonWitnessUtxo };
237
+ if (!(utxoData.witnessUtxo || utxoData.nonWitnessUtxo)) {
238
+ throw new Error("failed to build input - must provide prev rawTx (segwit input can provide scriptPubKey hex and value instead)");
244
239
  }
245
- else {
246
- throw new Error("unsupported output type");
240
+ const { publicKey, network } = keyPair;
241
+ const payment = this.createPayment(publicKey, scriptType, network);
242
+ const scriptData = {};
243
+ switch (scriptType) {
244
+ case "p2sh-p2wpkh":
245
+ case "p2sh":
246
+ case "bech32":
247
+ scriptData.redeemScript = (_b = payment.redeem) === null || _b === void 0 ? void 0 : _b.output;
248
+ break;
247
249
  }
250
+ const bchData = {};
248
251
  if (coin.toLowerCase() === "bitcoincash") {
249
- address = bchAddr.toLegacyAddress(address);
252
+ bchData.sighashType = bitcoin.Transaction.SIGHASH_ALL | bitcoin.Transaction.SIGHASH_BITCOINCASHBIP143;
250
253
  }
251
- psbt.addOutput({ address, value: Number(amount) });
252
- }
253
- catch (e) {
254
- throw new Error(`failed to add output: ${e}`);
255
- }
256
- }));
257
- if (msg.opReturnData) {
258
- const data = Buffer.from(msg.opReturnData, "utf-8");
259
- const embed = bitcoin.payments.embed({ data: [data] });
260
- const script = embed.output;
261
- if (!script)
262
- throw new Error("unable to build OP_RETURN script");
263
- psbt.addOutput({ script, value: 0 });
264
- }
265
- await Promise.all(inputs.map(async (input, idx) => {
266
- try {
267
- const { addressNList, scriptType } = input;
254
+ return Object.assign(Object.assign(Object.assign({}, utxoData), bchData), scriptData);
255
+ }));
256
+ });
257
+ }
258
+ btcGetAddress(msg) {
259
+ return __awaiter(this, void 0, void 0, function* () {
260
+ return this.needsMnemonic(!!__classPrivateFieldGet(this, _MixinNativeBTCWallet_masterKey, "f"), () => __awaiter(this, void 0, void 0, function* () {
261
+ const { addressNList, coin, scriptType } = msg;
268
262
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
269
- const keyPair = await util.getKeyPair(this.#masterKey, addressNList, coin, scriptType);
270
- await psbt.signInputAsync(idx, keyPair);
271
- }
272
- catch (e) {
273
- throw new Error(`failed to sign input: ${e}`);
274
- }
275
- }));
276
- psbt.finalizeAllInputs();
277
- const tx = psbt.extractTransaction(true);
278
- // If this is a THORChain transaction, validate the vout ordering
279
- if (msg.vaultAddress && !this.validateVoutOrdering(msg, tx)) {
280
- throw new Error("Improper vout ordering for BTC Thorchain transaction");
281
- }
282
- const signatures = tx.ins.map((input) => {
283
- if (input.witness.length > 0) {
284
- return input.witness[0].toString("hex");
285
- }
286
- else {
287
- const sigLen = input.script[0];
288
- return input.script.slice(1, sigLen).toString("hex");
289
- }
263
+ const keyPair = yield util.getKeyPair(__classPrivateFieldGet(this, _MixinNativeBTCWallet_masterKey, "f"), addressNList, coin, scriptType);
264
+ const { address } = this.createPayment(keyPair.publicKey, scriptType, keyPair.network);
265
+ if (!address)
266
+ return null;
267
+ return coin.toLowerCase() === "bitcoincash" ? bchAddr.toCashAddress(address) : address;
268
+ }));
290
269
  });
291
- return {
292
- signatures,
293
- serializedTx: tx.toHex(),
294
- };
295
- });
296
- }
297
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
298
- async btcSignMessage(msg) {
299
- throw new Error("function not implemented");
300
- }
301
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
302
- async btcVerifyMessage(msg) {
303
- throw new Error("function not implemented");
304
- }
305
- };
270
+ }
271
+ btcSignTx(msg) {
272
+ return __awaiter(this, void 0, void 0, function* () {
273
+ return this.needsMnemonic(!!__classPrivateFieldGet(this, _MixinNativeBTCWallet_masterKey, "f"), () => __awaiter(this, void 0, void 0, function* () {
274
+ const { coin, inputs, outputs, version, locktime } = msg;
275
+ const psbt = new bitcoin.Psbt({ network: (0, networks_1.getNetwork)(coin) });
276
+ psbt.setVersion(version !== null && version !== void 0 ? version : 1);
277
+ locktime && psbt.setLocktime(locktime);
278
+ yield Promise.all(inputs.map((input) => __awaiter(this, void 0, void 0, function* () {
279
+ try {
280
+ const inputData = yield this.buildInput(coin, input);
281
+ psbt.addInput(Object.assign({ hash: input.txid, index: input.vout }, inputData));
282
+ }
283
+ catch (e) {
284
+ throw new Error(`failed to add input: ${e}`);
285
+ }
286
+ })));
287
+ yield Promise.all(outputs.map((output) => __awaiter(this, void 0, void 0, function* () {
288
+ try {
289
+ const { amount } = output;
290
+ let address;
291
+ if (output.address !== undefined) {
292
+ address = output.address;
293
+ }
294
+ else if (output.addressNList !== undefined) {
295
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
296
+ const keyPair = yield util.getKeyPair(__classPrivateFieldGet(this, _MixinNativeBTCWallet_masterKey, "f"), output.addressNList, coin, output.scriptType);
297
+ const { publicKey, network } = keyPair;
298
+ const payment = this.createPayment(publicKey, output.scriptType, network);
299
+ if (!payment.address)
300
+ throw new Error("could not get payment address");
301
+ address = payment.address;
302
+ }
303
+ else {
304
+ throw new Error("unsupported output type");
305
+ }
306
+ if (coin.toLowerCase() === "bitcoincash") {
307
+ address = bchAddr.toLegacyAddress(address);
308
+ }
309
+ psbt.addOutput({ address, value: Number(amount) });
310
+ }
311
+ catch (e) {
312
+ throw new Error(`failed to add output: ${e}`);
313
+ }
314
+ })));
315
+ if (msg.opReturnData) {
316
+ const data = Buffer.from(msg.opReturnData, "utf-8");
317
+ const embed = bitcoin.payments.embed({ data: [data] });
318
+ const script = embed.output;
319
+ if (!script)
320
+ throw new Error("unable to build OP_RETURN script");
321
+ psbt.addOutput({ script, value: 0 });
322
+ }
323
+ yield Promise.all(inputs.map((input, idx) => __awaiter(this, void 0, void 0, function* () {
324
+ try {
325
+ const { addressNList, scriptType } = input;
326
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
327
+ const keyPair = yield util.getKeyPair(__classPrivateFieldGet(this, _MixinNativeBTCWallet_masterKey, "f"), addressNList, coin, scriptType);
328
+ yield psbt.signInputAsync(idx, keyPair);
329
+ }
330
+ catch (e) {
331
+ throw new Error(`failed to sign input: ${e}`);
332
+ }
333
+ })));
334
+ psbt.finalizeAllInputs();
335
+ const tx = psbt.extractTransaction(true);
336
+ // If this is a THORChain transaction, validate the vout ordering
337
+ if (msg.vaultAddress && !this.validateVoutOrdering(msg, tx)) {
338
+ throw new Error("Improper vout ordering for BTC Thorchain transaction");
339
+ }
340
+ const signatures = tx.ins.map((input) => {
341
+ if (input.witness.length > 0) {
342
+ return input.witness[0].toString("hex");
343
+ }
344
+ else {
345
+ const sigLen = input.script[0];
346
+ return input.script.slice(1, sigLen).toString("hex");
347
+ }
348
+ });
349
+ return {
350
+ signatures,
351
+ serializedTx: tx.toHex(),
352
+ };
353
+ }));
354
+ });
355
+ }
356
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
357
+ btcSignMessage(msg) {
358
+ return __awaiter(this, void 0, void 0, function* () {
359
+ throw new Error("function not implemented");
360
+ });
361
+ }
362
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
363
+ btcVerifyMessage(msg) {
364
+ return __awaiter(this, void 0, void 0, function* () {
365
+ throw new Error("function not implemented");
366
+ });
367
+ }
368
+ },
369
+ _MixinNativeBTCWallet_masterKey = new WeakMap(),
370
+ _a;
306
371
  }
307
372
  //# sourceMappingURL=bitcoin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bitcoin.js","sourceRoot":"","sources":["../src/bitcoin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bitcoin.js","sourceRoot":"","sources":["../src/bitcoin.ts"],"names":[],"mappings":"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"}