@teleportdao/bitcoin 1.4.3 → 1.4.6

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 (69) hide show
  1. package/dist/bitcoin-base.d.ts +66 -53
  2. package/dist/bitcoin-base.d.ts.map +1 -1
  3. package/dist/bitcoin-base.js +47 -38
  4. package/dist/bitcoin-base.js.map +1 -1
  5. package/dist/bitcoin-interface-utils.d.ts +12 -10
  6. package/dist/bitcoin-interface-utils.d.ts.map +1 -1
  7. package/dist/bitcoin-interface-utils.js +16 -10
  8. package/dist/bitcoin-interface-utils.js.map +1 -1
  9. package/dist/bitcoin-interface.d.ts +206 -50
  10. package/dist/bitcoin-interface.d.ts.map +1 -1
  11. package/dist/bitcoin-interface.js +42 -27
  12. package/dist/bitcoin-interface.js.map +1 -1
  13. package/dist/bitcoin-utils.d.ts +111 -41
  14. package/dist/bitcoin-utils.d.ts.map +1 -1
  15. package/dist/bitcoin-utils.js +215 -156
  16. package/dist/bitcoin-utils.js.map +1 -1
  17. package/dist/bundle.js +13 -0
  18. package/dist/index.d.ts +5 -6
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +32 -12
  21. package/dist/index.js.map +1 -1
  22. package/dist/sign/sign-transaction.d.ts +9 -5
  23. package/dist/sign/sign-transaction.d.ts.map +1 -1
  24. package/dist/sign/sign-transaction.js +14 -11
  25. package/dist/sign/sign-transaction.js.map +1 -1
  26. package/dist/teleport-dao-payments.d.ts +68 -89
  27. package/dist/teleport-dao-payments.d.ts.map +1 -1
  28. package/dist/teleport-dao-payments.js +16 -4
  29. package/dist/teleport-dao-payments.js.map +1 -1
  30. package/dist/transaction-builder/bitcoin-transaction-builder.d.ts +30 -11
  31. package/dist/transaction-builder/bitcoin-transaction-builder.d.ts.map +1 -1
  32. package/dist/transaction-builder/bitcoin-transaction-builder.js +37 -9
  33. package/dist/transaction-builder/bitcoin-transaction-builder.js.map +1 -1
  34. package/dist/transaction-builder/transaction-builder.d.ts +198 -9
  35. package/dist/transaction-builder/transaction-builder.d.ts.map +1 -1
  36. package/dist/transaction-builder/transaction-builder.js +291 -38
  37. package/dist/transaction-builder/transaction-builder.js.map +1 -1
  38. package/dist/utils/networks.d.ts +5 -35
  39. package/dist/utils/networks.d.ts.map +1 -1
  40. package/dist/utils/networks.js +26 -2
  41. package/dist/utils/networks.js.map +1 -1
  42. package/dist/utils/tools.d.ts +15 -9
  43. package/dist/utils/tools.d.ts.map +1 -1
  44. package/dist/utils/tools.js +14 -11
  45. package/dist/utils/tools.js.map +1 -1
  46. package/package.json +8 -6
  47. package/src/{bitcoin-base.js → bitcoin-base.ts} +248 -219
  48. package/src/{bitcoin-interface-utils.js → bitcoin-interface-utils.ts} +59 -53
  49. package/src/{bitcoin-interface.js → bitcoin-interface.ts} +420 -350
  50. package/src/{bitcoin-utils.js → bitcoin-utils.ts} +608 -483
  51. package/src/helper/teleport-request-helper.js +179 -179
  52. package/src/index.ts +5 -0
  53. package/src/sign/sign-transaction.ts +96 -0
  54. package/src/{teleport-dao-payments.js → teleport-dao-payments.ts} +341 -280
  55. package/src/transaction-builder/bitcoin-transaction-builder.ts +61 -0
  56. package/src/transaction-builder/transaction-builder.ts +567 -0
  57. package/src/utils/{networks.js → networks.ts} +33 -31
  58. package/src/utils/{tools.js → tools.ts} +80 -72
  59. package/tsconfig.json +10 -9
  60. package/webpack.config.js +16 -0
  61. package/dist/transaction-builder/transaction-builder-common.d.ts +0 -57
  62. package/dist/transaction-builder/transaction-builder-common.d.ts.map +0 -1
  63. package/dist/transaction-builder/transaction-builder-common.js +0 -183
  64. package/dist/transaction-builder/transaction-builder-common.js.map +0 -1
  65. package/src/index.js +0 -15
  66. package/src/sign/sign-transaction.js +0 -36
  67. package/src/transaction-builder/bitcoin-transaction-builder.js +0 -37
  68. package/src/transaction-builder/transaction-builder-common.js +0 -236
  69. package/src/transaction-builder/transaction-builder.js +0 -159
@@ -1,48 +1,43 @@
1
- export function parseRawTransaction(rawTransaction: any): {
2
- version: any;
3
- flag: any;
1
+ /// <reference types="node" />
2
+ import networks from "./utils/networks";
3
+ import * as bitcoin from "bitcoinjs-lib";
4
+ export { networks };
5
+ export declare function generateMnemonic(): string;
6
+ export declare function parseRawTransaction(rawTransaction: string): {
7
+ version: string;
8
+ flag: string;
4
9
  vin: string;
5
10
  vout: string;
6
11
  witness: string;
7
12
  locktime: string;
8
13
  };
9
- export function calculateMerkleProof(blockTransactions: any, txId: any, blockMerkleRoot?: undefined): {
10
- intermediateNodes: any;
11
- transactionIndex: any;
14
+ export declare function reverseBytes(hexInput: string): string;
15
+ export declare function getPublicKeyHexByXpubAndIndex(xpub: string, index?: number, isChange?: boolean, network?: bitcoin.networks.Network): string;
16
+ export declare function getPubKeyFromPrivateKeyWIF(privateKeyWIF: string, network?: bitcoin.networks.Network): Buffer;
17
+ export declare function getPubKeyFromPrivateKeyHex(privateKeyHex: string, network?: bitcoin.networks.Network): Buffer;
18
+ export declare function getPrivateKeyHexFromWIF(privateKeyWIF: string, network?: bitcoin.networks.Network): string;
19
+ export declare function calculateMerkleProof(blockTransactions: string[], txId: string, blockMerkleRoot?: string): {
20
+ intermediateNodes: string;
21
+ transactionIndex: number;
12
22
  };
13
- export function createAddressObjectByHash({ addressType, hash }: {
14
- addressType: any;
15
- hash: any;
16
- }, network?: bitcoin.networks.Network): bitcoin.payments.Payment;
17
- export function createAddressObjectByPublicKey({ addressType, publicKey }: {
18
- addressType: any;
19
- publicKey: any;
20
- }, network?: bitcoin.networks.Network): bitcoin.payments.Payment;
21
- export function createAddressObjectByAddress(address: any, network?: bitcoin.networks.Network): {
22
- addressObject: bitcoin.payments.Payment;
23
- addressType: "p2wpkh" | "p2sh" | "p2pkh";
23
+ export declare function parseBlockHeader(headerHex: string): {
24
+ version: string;
25
+ previousBlockHash: string;
26
+ merkleRoot: string;
27
+ timestamp: string;
28
+ difficulty: string;
29
+ nonce: string;
24
30
  };
25
- export function createAddressObjectByScript({ addressType, script }: {
26
- addressType: any;
27
- script: any;
28
- }, network?: bitcoin.networks.Network): bitcoin.payments.Payment;
29
- export function getAddressType(address: any, network?: bitcoin.networks.Network): "p2wpkh" | "p2sh" | "p2pkh";
30
- export function getPubKeyFromPrivateKeyWIF(privateKeyWIF: any, network?: bitcoin.networks.Network): Buffer;
31
- export function getPubKeyFromPrivateKeyHex(privateKeyHex: any, network?: bitcoin.networks.Network): Buffer;
32
- export function getPublicKeyHexByXpubAndIndex(xpub: any, index?: number, isChange?: boolean, network?: bitcoin.networks.Network): string;
33
- export function getPrivateKeyHexFromWIF(privateKeyWIF: any, network?: bitcoin.networks.Network): string;
34
- export function reverseBytes(hexInput: any): string;
35
- export function parseBlockHeader(headerHex: any): {};
36
- export function generateMnemonic(): string;
37
- export function parseRawBlock(rawBlockHex: any, blockNumber?: undefined, network?: any): {
38
- blockNumber: undefined;
31
+ export declare function convertBitcoinScriptToAddress(script: Buffer, network?: bitcoin.networks.Network): string | null;
32
+ export declare function parseRawBlock(rawBlockHex: string, blockNumber?: number, network?: bitcoin.networks.Network): {
33
+ blockNumber: number | undefined;
39
34
  merkleRoot: string;
40
35
  prvBlockHash: string;
41
36
  transactions: {
42
37
  txId: string;
43
38
  version: number;
44
39
  locktime: number;
45
- blockNumber: undefined;
40
+ blockNumber: number | undefined;
46
41
  blockHash: string;
47
42
  vout: {
48
43
  address: string | null;
@@ -54,20 +49,95 @@ export function parseRawBlock(rawBlockHex: any, blockNumber?: undefined, network
54
49
  txId: string;
55
50
  index: number;
56
51
  }[];
57
- }[];
52
+ }[] | undefined;
58
53
  };
59
- export function extractTransactionsAndBlockInfoFromRawBlock(rawBlockHex: any, blockNumber: any, addresses?: any[], inputTxIds?: any[], network?: bitcoin.networks.Network): {
54
+ export declare function extractTransactionsAndBlockInfoFromRawBlock(rawBlockHex: string, blockNumber: number, addresses?: string[], inputTxIds?: {
55
+ txId: string;
56
+ index: number;
57
+ address?: string;
58
+ script?: string;
59
+ value?: number;
60
+ }[], network?: bitcoin.networks.Network): {
60
61
  blockInfo: {
61
- blockNumber: any;
62
+ blockNumber: number;
62
63
  blockHash: string;
63
64
  merkleRoot: string;
64
65
  prvBlockHash: string;
65
66
  };
66
- withdrawTxs: any[];
67
- depositTxs: any[];
67
+ withdrawTxs: {
68
+ txId: string;
69
+ version: number;
70
+ locktime: number;
71
+ blockNumber: number;
72
+ blockHash: string;
73
+ merkleProof: {
74
+ intermediateNodes: string;
75
+ transactionIndex: number;
76
+ };
77
+ vout: {
78
+ address: string | null;
79
+ script: string;
80
+ value: number;
81
+ }[];
82
+ vin: {
83
+ txId: string;
84
+ index: number;
85
+ address?: string | null;
86
+ script?: string | null;
87
+ value?: number | null;
88
+ }[];
89
+ address: string;
90
+ addressScript: string;
91
+ }[];
92
+ depositTxs: {
93
+ txId: string;
94
+ version: number;
95
+ locktime: number;
96
+ blockNumber: number;
97
+ blockHash: string;
98
+ merkleProof: {
99
+ intermediateNodes: string;
100
+ transactionIndex: number;
101
+ };
102
+ vout: {
103
+ address: string | null;
104
+ script: string;
105
+ value: number;
106
+ }[];
107
+ vin: {
108
+ txId: string;
109
+ index: number;
110
+ address?: string | null;
111
+ script?: string | null;
112
+ value?: number | null;
113
+ }[];
114
+ address: string;
115
+ addressScript: string;
116
+ }[];
117
+ };
118
+ export declare function validateAddress(address: string, network?: bitcoin.networks.Network): boolean;
119
+ export declare function getAddressType(address: string, network?: bitcoin.networks.Network): "p2tr" | "p2wpkh" | "p2sh" | "p2pkh";
120
+ export declare function createAddressObjectByScript({ addressType, script }: {
121
+ addressType: string;
122
+ script: Buffer;
123
+ }, network?: bitcoin.Network): bitcoin.payments.Payment;
124
+ export declare function createAddressObjectByHash({ addressType, hash }: {
125
+ addressType: string;
126
+ hash: Buffer;
127
+ }, network?: bitcoin.Network): bitcoin.payments.Payment;
128
+ export declare function createAddressObjectByPublicKey({ addressType, publicKey }: {
129
+ addressType: string;
130
+ publicKey: Buffer;
131
+ }, network?: bitcoin.Network): bitcoin.payments.Payment;
132
+ export declare function createAddressObjectByAddress(address: string, network?: bitcoin.networks.Network): {
133
+ addressObject: bitcoin.payments.Payment;
134
+ addressType: "p2wpkh" | "p2sh" | "p2pkh";
135
+ };
136
+ export declare function publicKeyConvertor(publicKeyHex: string, compressed?: boolean): string;
137
+ export declare const addressTypeHelper: {
138
+ addressTypesNumber: {
139
+ [key: string]: number;
140
+ };
141
+ addressTypes: string[];
68
142
  };
69
- export function validateAddress(address: any, network?: bitcoin.networks.Network): boolean;
70
- import networks = require("./utils/networks");
71
- import bitcoin = require("bitcoinjs-lib");
72
- export { networks };
73
143
  //# sourceMappingURL=bitcoin-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bitcoin-utils.d.ts","sourceRoot":"","sources":["../src/bitcoin-utils.js"],"names":[],"mappings":"AAcA;;;;;;;EAsDC;AAqKD;;;EA2BC;AA1KD;;;iEAyBC;AA6BD;;;iEA+BC;AAED;;;EA0BC;AAtFD;;;iEAyBC;AApED,8GAcC;AAkID,2GAGC;AAED,2GAGC;AArBD,yIAWC;AAYD,wGAGC;AAjKD,oDAEC;AA8LD,qDAgBC;AA7QD,2CAGC;AAoRD;;;;;;;;;;;;;;;;;;;;;EA2BC;AAED;;;;;;;;;EAsHC;AAED,2FAiBC"}
1
+ {"version":3,"file":"bitcoin-utils.d.ts","sourceRoot":"","sources":["../src/bitcoin-utils.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,47 @@
1
1
  "use strict";
2
- const bip39 = require("bip39");
3
- const bip32 = require("bip32");
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 __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.addressTypeHelper = exports.publicKeyConvertor = exports.createAddressObjectByAddress = exports.createAddressObjectByPublicKey = exports.createAddressObjectByHash = exports.createAddressObjectByScript = exports.getAddressType = exports.validateAddress = exports.extractTransactionsAndBlockInfoFromRawBlock = exports.parseRawBlock = exports.convertBitcoinScriptToAddress = exports.parseBlockHeader = exports.calculateMerkleProof = exports.getPrivateKeyHexFromWIF = exports.getPubKeyFromPrivateKeyHex = exports.getPubKeyFromPrivateKeyWIF = exports.getPublicKeyHexByXpubAndIndex = exports.reverseBytes = exports.parseRawTransaction = exports.generateMnemonic = exports.networks = void 0;
30
+ const bip39 = __importStar(require("bip39"));
31
+ const bip32 = __importStar(require("bip32"));
32
+ const networks_1 = __importDefault(require("./utils/networks"));
33
+ exports.networks = networks_1.default;
34
+ const bitcoin = __importStar(require("bitcoinjs-lib"));
35
+ const ECPair = bitcoin.ECPair;
4
36
  let varUnit = require("varuint-bitcoin");
5
37
  const fastRoot = require("merkle-lib/fastRoot");
6
38
  const merkle = require("merkle-lib");
7
39
  const merkleProof = require("merkle-lib/proof");
8
- const bitcoin = require("bitcoinjs-lib");
9
- const networks = require("./utils/networks");
10
40
  function generateMnemonic() {
11
41
  const mnemonic = bip39.generateMnemonic(256);
12
42
  return mnemonic;
13
43
  }
44
+ exports.generateMnemonic = generateMnemonic;
14
45
  function parseRawTransaction(rawTransaction) {
15
46
  const size = {
16
47
  version: 4,
@@ -59,156 +90,42 @@ function parseRawTransaction(rawTransaction) {
59
90
  let locktime = `0x${rawTransaction.slice(rawTransaction.length - 8, rawTransaction.length)}`;
60
91
  return { version, flag, vin, vout, witness, locktime };
61
92
  }
93
+ exports.parseRawTransaction = parseRawTransaction;
62
94
  function reverseBytes(hexInput) {
63
95
  return Buffer.from(hexInput, "hex").reverse().toString("hex");
64
96
  }
65
- function getAddressType(address, network = bitcoin.networks.bitcoin) {
66
- if (address.startsWith(network.bech32)) {
67
- return "p2wpkh";
68
- }
69
- let base58Data = bitcoin.address.fromBase58Check(address);
70
- if (base58Data.version === Number(network.scriptHash)) {
71
- return "p2sh";
72
- }
73
- if (base58Data.version === Number(network.pubKeyHash)) {
74
- return "p2pkh";
75
- }
76
- throw new Error("invalid address");
77
- }
78
- function createAddressObjectByHash({ addressType, hash }, network = bitcoin.networks.bitcoin) {
79
- let addressObject;
80
- switch (addressType) {
81
- case "p2pkh":
82
- addressObject = bitcoin.payments.p2pkh({
83
- hash,
84
- network,
85
- });
86
- break;
87
- case "p2wpkh":
88
- addressObject = bitcoin.payments.p2wpkh({
89
- hash,
90
- network,
91
- });
92
- break;
93
- case "p2sh":
94
- addressObject = bitcoin.payments.p2sh({
95
- hash,
96
- network,
97
- });
98
- break;
99
- default:
100
- throw new Error("address type is incorrect");
101
- }
102
- return addressObject;
103
- }
104
- function createAddressObjectByScript({ addressType, script }, network = bitcoin.networks.bitcoin) {
105
- let addressObject;
106
- switch (addressType) {
107
- case "p2pkh":
108
- addressObject = bitcoin.payments.p2pkh({
109
- output: script,
110
- network,
111
- });
112
- break;
113
- case "p2wpkh":
114
- addressObject = bitcoin.payments.p2wpkh({
115
- output: script,
116
- network,
117
- });
118
- break;
119
- case "p2sh":
120
- addressObject = bitcoin.payments.p2sh({
121
- output: script,
122
- network,
123
- });
124
- break;
125
- default:
126
- throw new Error("address type is incorrect");
127
- }
128
- return addressObject;
129
- }
130
- function createAddressObjectByPublicKey({ addressType, publicKey }, network = bitcoin.networks.bitcoin) {
131
- let addressObject;
132
- switch (addressType) {
133
- case "p2pkh":
134
- addressObject = bitcoin.payments.p2pkh({
135
- pubkey: publicKey,
136
- network,
137
- });
138
- break;
139
- case "p2wpkh":
140
- addressObject = bitcoin.payments.p2wpkh({
141
- pubkey: publicKey,
142
- network,
143
- });
144
- break;
145
- case "p2sh-p2wpkh":
146
- addressObject = bitcoin.payments.p2sh({
147
- redeem: bitcoin.payments.p2wpkh({
148
- pubkey: publicKey,
149
- network,
150
- }),
151
- });
152
- break;
153
- default:
154
- throw new Error("address type is incorrect");
155
- }
156
- return addressObject;
157
- }
158
- function createAddressObjectByAddress(address, network = bitcoin.networks.bitcoin) {
159
- let addressType = getAddressType(address, network);
160
- let addressObject;
161
- switch (addressType) {
162
- case "p2pkh":
163
- addressObject = bitcoin.payments.p2pkh({
164
- address,
165
- network,
166
- });
167
- break;
168
- case "p2wpkh":
169
- addressObject = bitcoin.payments.p2wpkh({
170
- address,
171
- network,
172
- });
173
- break;
174
- case "p2sh":
175
- addressObject = bitcoin.payments.p2sh({
176
- address,
177
- network,
178
- });
179
- break;
180
- default:
181
- throw new Error("address type is incorrect");
182
- }
183
- return { addressObject, addressType };
184
- }
185
- function getPublicKeyHexByXpubAndIndex(xpub, index = 0, isChange = false, network = networks.bitcoin) {
97
+ exports.reverseBytes = reverseBytes;
98
+ function getPublicKeyHexByXpubAndIndex(xpub, index = 0, isChange = false, network = networks_1.default.bitcoin) {
186
99
  const node = bip32.fromBase58(xpub, network);
187
100
  return node
188
101
  .derive(isChange ? 1 : 0)
189
102
  .derive(index)
190
103
  .publicKey.toString("hex");
191
104
  }
105
+ exports.getPublicKeyHexByXpubAndIndex = getPublicKeyHexByXpubAndIndex;
192
106
  function getPubKeyFromPrivateKeyWIF(privateKeyWIF, network = bitcoin.networks.bitcoin) {
193
107
  let key = bitcoin.ECPair.fromWIF(privateKeyWIF, network);
194
108
  return key.publicKey;
195
109
  }
110
+ exports.getPubKeyFromPrivateKeyWIF = getPubKeyFromPrivateKeyWIF;
196
111
  function getPubKeyFromPrivateKeyHex(privateKeyHex, network = bitcoin.networks.bitcoin) {
197
- let key = bitcoin.ECPair.fromPrivateKey(Buffer.from(privateKeyHex, "hex"), network);
112
+ let key = bitcoin.ECPair.fromPrivateKey(Buffer.from(privateKeyHex, "hex"), { network });
198
113
  return key.publicKey;
199
114
  }
115
+ exports.getPubKeyFromPrivateKeyHex = getPubKeyFromPrivateKeyHex;
200
116
  function getPrivateKeyHexFromWIF(privateKeyWIF, network = bitcoin.networks.bitcoin) {
201
117
  let key = bitcoin.ECPair.fromWIF(privateKeyWIF, network);
202
118
  return key.privateKey.toString("hex");
203
119
  }
204
- function calculateMerkleProof(blockTransactions, txId, blockMerkleRoot = undefined) {
120
+ exports.getPrivateKeyHexFromWIF = getPrivateKeyHexFromWIF;
121
+ function calculateMerkleProof(blockTransactions, txId, blockMerkleRoot) {
205
122
  let transactionIndex = blockTransactions.findIndex((tx) => tx === txId);
206
123
  if (transactionIndex < 0)
207
124
  throw new Error("txId is not in this tree");
208
125
  let data = blockTransactions.map((a) => Buffer.from(a, "hex").reverse());
209
126
  if (blockMerkleRoot &&
210
127
  blockMerkleRoot !== fastRoot(data, bitcoin.crypto.hash256).toString("hex")) {
211
- throw new Error("calculated anf block merkleRoot not matched");
128
+ throw new Error("calculated merkleRoot and block merkleRoot not matched");
212
129
  }
213
130
  let tree = merkle(data, bitcoin.crypto.hash256);
214
131
  let proof = merkleProof(tree, data[transactionIndex]);
@@ -221,6 +138,7 @@ function calculateMerkleProof(blockTransactions, txId, blockMerkleRoot = undefin
221
138
  transactionIndex,
222
139
  };
223
140
  }
141
+ exports.calculateMerkleProof = calculateMerkleProof;
224
142
  function parseBlockHeader(headerHex) {
225
143
  const size = {
226
144
  version: 4,
@@ -238,16 +156,18 @@ function parseBlockHeader(headerHex) {
238
156
  }
239
157
  return result;
240
158
  }
159
+ exports.parseBlockHeader = parseBlockHeader;
241
160
  function convertBitcoinScriptToAddress(script, network = bitcoin.networks.bitcoin) {
242
- var _a;
243
161
  try {
244
- return (_a = bitcoin.address) === null || _a === void 0 ? void 0 : _a.fromOutputScript(script, network);
162
+ return bitcoin.address.fromOutputScript(script, network);
245
163
  }
246
164
  catch (error) {
247
165
  return null;
248
166
  }
249
167
  }
250
- function parseRawBlock(rawBlockHex, blockNumber = undefined, network = bitcoin.networks.network) {
168
+ exports.convertBitcoinScriptToAddress = convertBitcoinScriptToAddress;
169
+ function parseRawBlock(rawBlockHex, blockNumber, network = bitcoin.networks.bitcoin) {
170
+ var _a;
251
171
  let block = bitcoin.Block.fromBuffer(Buffer.from(rawBlockHex, "hex"));
252
172
  let blockHash = block.getHash().toString("hex");
253
173
  let merkleRoot = block.merkleRoot.toString("hex");
@@ -256,7 +176,7 @@ function parseRawBlock(rawBlockHex, blockNumber = undefined, network = bitcoin.n
256
176
  blockNumber,
257
177
  merkleRoot,
258
178
  prvBlockHash,
259
- transactions: block.transactions.map((tx) => ({
179
+ transactions: (_a = block.transactions) === null || _a === void 0 ? void 0 : _a.map((tx) => ({
260
180
  txId: tx.getId(),
261
181
  version: tx.version,
262
182
  locktime: tx.locktime,
@@ -275,7 +195,9 @@ function parseRawBlock(rawBlockHex, blockNumber = undefined, network = bitcoin.n
275
195
  })),
276
196
  };
277
197
  }
198
+ exports.parseRawBlock = parseRawBlock;
278
199
  function extractTransactionsAndBlockInfoFromRawBlock(rawBlockHex, blockNumber, addresses = [], inputTxIds = [], network = bitcoin.networks.bitcoin) {
200
+ var _a;
279
201
  let block = bitcoin.Block.fromBuffer(Buffer.from(rawBlockHex, "hex"));
280
202
  let blockHash = block.getHash().reverse().toString("hex");
281
203
  let merkleRoot = block.merkleRoot.toString("hex");
@@ -290,7 +212,7 @@ function extractTransactionsAndBlockInfoFromRawBlock(rawBlockHex, blockNumber, a
290
212
  let blockTxIds = block.transactions.map((tx) => tx.getId());
291
213
  let withdrawTxs = [];
292
214
  let depositTxs = [];
293
- block.transactions.forEach((tx) => {
215
+ (_a = block.transactions) === null || _a === void 0 ? void 0 : _a.forEach((tx) => {
294
216
  let txId = tx.getId();
295
217
  let inputTxAddress;
296
218
  let isWithdraw = tx.ins.find((vi) => {
@@ -319,16 +241,16 @@ function extractTransactionsAndBlockInfoFromRawBlock(rawBlockHex, blockNumber, a
319
241
  return {
320
242
  txId: Buffer.from(vi.hash).reverse().toString("hex"),
321
243
  index: vi.index,
322
- address: viInput.address || null,
323
- script: viInput.script || null,
324
- value: viInput.value || null,
244
+ address: (viInput === null || viInput === void 0 ? void 0 : viInput.address) || null,
245
+ script: (viInput === null || viInput === void 0 ? void 0 : viInput.script) || null,
246
+ value: (viInput === null || viInput === void 0 ? void 0 : viInput.value) || null,
325
247
  };
326
248
  }),
327
249
  address: inputTxAddress,
328
250
  addressScript: createAddressObjectByAddress(inputTxAddress, network).addressObject.output.toString("hex"),
329
251
  });
330
252
  }
331
- let addressIndex;
253
+ let addressIndex = -1;
332
254
  let isDeposit = tx.outs.find((blockTxVo) => {
333
255
  let sIndex = addressScript.findIndex((addScript) => addScript === blockTxVo.script.toString("hex"));
334
256
  if (sIndex >= 0) {
@@ -366,6 +288,7 @@ function extractTransactionsAndBlockInfoFromRawBlock(rawBlockHex, blockNumber, a
366
288
  depositTxs,
367
289
  };
368
290
  }
291
+ exports.extractTransactionsAndBlockInfoFromRawBlock = extractTransactionsAndBlockInfoFromRawBlock;
369
292
  function validateAddress(address, network = bitcoin.networks.bitcoin) {
370
293
  try {
371
294
  let isValid = false;
@@ -386,24 +309,160 @@ function validateAddress(address, network = bitcoin.networks.bitcoin) {
386
309
  return false;
387
310
  }
388
311
  }
389
- module.exports = {
390
- parseRawTransaction,
391
- calculateMerkleProof,
392
- createAddressObjectByHash,
393
- createAddressObjectByPublicKey,
394
- createAddressObjectByAddress,
395
- createAddressObjectByScript,
396
- getAddressType,
397
- getPubKeyFromPrivateKeyWIF,
398
- getPubKeyFromPrivateKeyHex,
399
- getPublicKeyHexByXpubAndIndex,
400
- getPrivateKeyHexFromWIF,
401
- reverseBytes,
402
- parseBlockHeader,
403
- generateMnemonic,
404
- parseRawBlock,
405
- extractTransactionsAndBlockInfoFromRawBlock,
406
- validateAddress,
407
- networks,
312
+ exports.validateAddress = validateAddress;
313
+ function toXOnlyPublicKey(pubKey) {
314
+ return pubKey.length === 32 ? pubKey : pubKey.slice(1, 33);
315
+ }
316
+ function getAddressType(address, network = bitcoin.networks.bitcoin) {
317
+ if (address.startsWith(`${network.bech32}1p`)) {
318
+ return "p2tr";
319
+ }
320
+ if (address.startsWith(network.bech32)) {
321
+ return "p2wpkh";
322
+ }
323
+ let base58Data = bitcoin.address.fromBase58Check(address);
324
+ if (base58Data.version === Number(network.scriptHash)) {
325
+ return "p2sh";
326
+ }
327
+ if (base58Data.version === Number(network.pubKeyHash)) {
328
+ return "p2pkh";
329
+ }
330
+ throw new Error("invalid address");
331
+ }
332
+ exports.getAddressType = getAddressType;
333
+ function createAddressObjectByScript({ addressType, script }, network = bitcoin.networks.bitcoin) {
334
+ let addressObject;
335
+ switch (addressType) {
336
+ case "p2pkh":
337
+ addressObject = bitcoin.payments.p2pkh({
338
+ output: script,
339
+ network,
340
+ });
341
+ break;
342
+ case "p2wpkh":
343
+ addressObject = bitcoin.payments.p2wpkh({
344
+ output: script,
345
+ network,
346
+ });
347
+ break;
348
+ case "p2sh":
349
+ addressObject = bitcoin.payments.p2sh({
350
+ output: script,
351
+ network,
352
+ });
353
+ break;
354
+ case "p2wsh":
355
+ addressObject = bitcoin.payments.p2wsh({
356
+ output: script,
357
+ network,
358
+ });
359
+ break;
360
+ default:
361
+ throw new Error("address type is incorrect");
362
+ }
363
+ return addressObject;
364
+ }
365
+ exports.createAddressObjectByScript = createAddressObjectByScript;
366
+ function createAddressObjectByHash({ addressType, hash }, network = bitcoin.networks.bitcoin) {
367
+ let addressObject;
368
+ switch (addressType) {
369
+ case "p2pkh":
370
+ addressObject = bitcoin.payments.p2pkh({
371
+ hash,
372
+ network,
373
+ });
374
+ break;
375
+ case "p2wpkh":
376
+ addressObject = bitcoin.payments.p2wpkh({
377
+ hash,
378
+ network,
379
+ });
380
+ break;
381
+ case "p2sh":
382
+ addressObject = bitcoin.payments.p2sh({
383
+ hash,
384
+ network,
385
+ });
386
+ break;
387
+ case "p2wsh":
388
+ addressObject = bitcoin.payments.p2wsh({
389
+ hash,
390
+ network,
391
+ });
392
+ break;
393
+ default:
394
+ throw new Error("address type is incorrect");
395
+ }
396
+ return addressObject;
397
+ }
398
+ exports.createAddressObjectByHash = createAddressObjectByHash;
399
+ function createAddressObjectByPublicKey({ addressType, publicKey }, network = bitcoin.networks.bitcoin) {
400
+ let addressObject;
401
+ switch (addressType) {
402
+ case "p2pkh":
403
+ addressObject = bitcoin.payments.p2pkh({
404
+ pubkey: publicKey,
405
+ network,
406
+ });
407
+ break;
408
+ case "p2wpkh":
409
+ addressObject = bitcoin.payments.p2wpkh({
410
+ pubkey: publicKey,
411
+ network,
412
+ });
413
+ break;
414
+ case "p2sh-p2wpkh":
415
+ addressObject = bitcoin.payments.p2sh({
416
+ redeem: bitcoin.payments.p2wpkh({
417
+ pubkey: publicKey,
418
+ network,
419
+ }),
420
+ });
421
+ break;
422
+ case "p2tr":
423
+ default:
424
+ throw new Error("address type is incorrect");
425
+ }
426
+ return addressObject;
427
+ }
428
+ exports.createAddressObjectByPublicKey = createAddressObjectByPublicKey;
429
+ function createAddressObjectByAddress(address, network = bitcoin.networks.bitcoin) {
430
+ let addressType = getAddressType(address, network);
431
+ let addressObject;
432
+ switch (addressType) {
433
+ case "p2pkh":
434
+ addressObject = bitcoin.payments.p2pkh({
435
+ address,
436
+ network,
437
+ });
438
+ break;
439
+ case "p2wpkh":
440
+ addressObject = bitcoin.payments.p2wpkh({
441
+ address,
442
+ network,
443
+ });
444
+ break;
445
+ case "p2sh":
446
+ addressObject = bitcoin.payments.p2sh({
447
+ address,
448
+ network,
449
+ });
450
+ break;
451
+ default:
452
+ throw new Error("address type is incorrect");
453
+ }
454
+ return { addressObject, addressType };
455
+ }
456
+ exports.createAddressObjectByAddress = createAddressObjectByAddress;
457
+ function publicKeyConvertor(publicKeyHex, compressed = true) {
458
+ let pubkey = ECPair.fromPublicKey(Buffer.from(publicKeyHex, "hex"), {
459
+ compressed,
460
+ });
461
+ return pubkey.publicKey.toString("hex");
462
+ }
463
+ exports.publicKeyConvertor = publicKeyConvertor;
464
+ exports.addressTypeHelper = {
465
+ addressTypesNumber: { p2pk: 0, p2pkh: 1, p2sh: 2, p2wpkh: 3, p2wsh: 4, p2tr: 5 },
466
+ addressTypes: ["p2pk", "p2pkh", "p2sh", "p2wpkh", "p2wsh", "p2tr"],
408
467
  };
409
468
  //# sourceMappingURL=bitcoin-utils.js.map