@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.
- package/dist/bitcoin-base.d.ts +66 -53
- package/dist/bitcoin-base.d.ts.map +1 -1
- package/dist/bitcoin-base.js +47 -38
- package/dist/bitcoin-base.js.map +1 -1
- package/dist/bitcoin-interface-utils.d.ts +12 -10
- package/dist/bitcoin-interface-utils.d.ts.map +1 -1
- package/dist/bitcoin-interface-utils.js +16 -10
- package/dist/bitcoin-interface-utils.js.map +1 -1
- package/dist/bitcoin-interface.d.ts +206 -50
- package/dist/bitcoin-interface.d.ts.map +1 -1
- package/dist/bitcoin-interface.js +42 -27
- package/dist/bitcoin-interface.js.map +1 -1
- package/dist/bitcoin-utils.d.ts +111 -41
- package/dist/bitcoin-utils.d.ts.map +1 -1
- package/dist/bitcoin-utils.js +215 -156
- package/dist/bitcoin-utils.js.map +1 -1
- package/dist/bundle.js +13 -0
- package/dist/index.d.ts +5 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -12
- package/dist/index.js.map +1 -1
- package/dist/sign/sign-transaction.d.ts +9 -5
- package/dist/sign/sign-transaction.d.ts.map +1 -1
- package/dist/sign/sign-transaction.js +14 -11
- package/dist/sign/sign-transaction.js.map +1 -1
- package/dist/teleport-dao-payments.d.ts +68 -89
- package/dist/teleport-dao-payments.d.ts.map +1 -1
- package/dist/teleport-dao-payments.js +16 -4
- package/dist/teleport-dao-payments.js.map +1 -1
- package/dist/transaction-builder/bitcoin-transaction-builder.d.ts +30 -11
- package/dist/transaction-builder/bitcoin-transaction-builder.d.ts.map +1 -1
- package/dist/transaction-builder/bitcoin-transaction-builder.js +37 -9
- package/dist/transaction-builder/bitcoin-transaction-builder.js.map +1 -1
- package/dist/transaction-builder/transaction-builder.d.ts +198 -9
- package/dist/transaction-builder/transaction-builder.d.ts.map +1 -1
- package/dist/transaction-builder/transaction-builder.js +291 -38
- package/dist/transaction-builder/transaction-builder.js.map +1 -1
- package/dist/utils/networks.d.ts +5 -35
- package/dist/utils/networks.d.ts.map +1 -1
- package/dist/utils/networks.js +26 -2
- package/dist/utils/networks.js.map +1 -1
- package/dist/utils/tools.d.ts +15 -9
- package/dist/utils/tools.d.ts.map +1 -1
- package/dist/utils/tools.js +14 -11
- package/dist/utils/tools.js.map +1 -1
- package/package.json +8 -6
- package/src/{bitcoin-base.js → bitcoin-base.ts} +248 -219
- package/src/{bitcoin-interface-utils.js → bitcoin-interface-utils.ts} +59 -53
- package/src/{bitcoin-interface.js → bitcoin-interface.ts} +420 -350
- package/src/{bitcoin-utils.js → bitcoin-utils.ts} +608 -483
- package/src/helper/teleport-request-helper.js +179 -179
- package/src/index.ts +5 -0
- package/src/sign/sign-transaction.ts +96 -0
- package/src/{teleport-dao-payments.js → teleport-dao-payments.ts} +341 -280
- package/src/transaction-builder/bitcoin-transaction-builder.ts +61 -0
- package/src/transaction-builder/transaction-builder.ts +567 -0
- package/src/utils/{networks.js → networks.ts} +33 -31
- package/src/utils/{tools.js → tools.ts} +80 -72
- package/tsconfig.json +10 -9
- package/webpack.config.js +16 -0
- package/dist/transaction-builder/transaction-builder-common.d.ts +0 -57
- package/dist/transaction-builder/transaction-builder-common.d.ts.map +0 -1
- package/dist/transaction-builder/transaction-builder-common.js +0 -183
- package/dist/transaction-builder/transaction-builder-common.js.map +0 -1
- package/src/index.js +0 -15
- package/src/sign/sign-transaction.js +0 -36
- package/src/transaction-builder/bitcoin-transaction-builder.js +0 -37
- package/src/transaction-builder/transaction-builder-common.js +0 -236
- package/src/transaction-builder/transaction-builder.js +0 -159
package/dist/bitcoin-utils.d.ts
CHANGED
|
@@ -1,48 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
|
10
|
-
|
|
11
|
-
|
|
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
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
|
26
|
-
|
|
27
|
-
|
|
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:
|
|
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:
|
|
62
|
+
blockNumber: number;
|
|
62
63
|
blockHash: string;
|
|
63
64
|
merkleRoot: string;
|
|
64
65
|
prvBlockHash: string;
|
|
65
66
|
};
|
|
66
|
-
withdrawTxs:
|
|
67
|
-
|
|
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.
|
|
1
|
+
{"version":3,"file":"bitcoin-utils.d.ts","sourceRoot":"","sources":["../src/bitcoin-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/bitcoin-utils.js
CHANGED
|
@@ -1,16 +1,47 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
66
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
162
|
+
return bitcoin.address.fromOutputScript(script, network);
|
|
245
163
|
}
|
|
246
164
|
catch (error) {
|
|
247
165
|
return null;
|
|
248
166
|
}
|
|
249
167
|
}
|
|
250
|
-
|
|
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
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
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
|