@teleportdao/bitcoin 1.4.4 → 1.4.7
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 +62 -50
- package/dist/bitcoin-base.d.ts.map +1 -1
- package/dist/bitcoin-base.js +55 -28
- 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 -159
- package/dist/bitcoin-utils.js.map +1 -1
- package/dist/bundle.js +13 -4
- package/dist/index.d.ts +5 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -13
- package/dist/index.js.map +1 -1
- package/dist/teleport-dao-payments.d.ts +60 -92
- package/dist/teleport-dao-payments.d.ts.map +1 -1
- package/dist/teleport-dao-payments.js +12 -1
- package/dist/teleport-dao-payments.js.map +1 -1
- package/dist/transaction-builder/bitcoin-transaction-builder.d.ts +8 -4
- package/dist/transaction-builder/bitcoin-transaction-builder.d.ts.map +1 -1
- package/dist/transaction-builder/bitcoin-transaction-builder.js +3 -3
- package/dist/transaction-builder/bitcoin-transaction-builder.js.map +1 -1
- package/dist/transaction-builder/transaction-builder.d.ts +63 -13
- package/dist/transaction-builder/transaction-builder.d.ts.map +1 -1
- package/dist/transaction-builder/transaction-builder.js +72 -19
- 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 +6 -6
- package/src/{bitcoin-base.js → bitcoin-base.ts} +97 -69
- package/src/{bitcoin-interface-utils.js → bitcoin-interface-utils.ts} +59 -53
- package/src/{bitcoin-interface.js → bitcoin-interface.ts} +115 -45
- package/src/{bitcoin-utils.js → bitcoin-utils.ts} +337 -216
- package/src/index.ts +5 -8
- package/src/{teleport-dao-payments.js → teleport-dao-payments.ts} +67 -6
- package/src/transaction-builder/bitcoin-transaction-builder.ts +8 -4
- package/src/transaction-builder/transaction-builder.ts +102 -25
- 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
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const path = require("path")
|
|
2
|
+
// const webpack = require("webpack")
|
|
3
|
+
|
|
4
|
+
module.exports = {
|
|
5
|
+
mode: "production",
|
|
6
|
+
entry: "./dist/index.js",
|
|
7
|
+
output: {
|
|
8
|
+
filename: "bundle.js",
|
|
9
|
+
path: path.resolve(__dirname, "dist"),
|
|
10
|
+
libraryTarget: "umd", // Module type
|
|
11
|
+
globalObject: "this", // Fix for universal module definition
|
|
12
|
+
},
|
|
13
|
+
performance: {
|
|
14
|
+
hints: false,
|
|
15
|
+
},
|
|
16
|
+
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
export = BaseBitcoinLikeTransaction;
|
|
2
|
-
declare class BaseBitcoinLikeTransaction {
|
|
3
|
-
static helperHandleInputsAndOutputs({ targets, extendedUtxo, feeRate, changeAddress, selectType, }: {
|
|
4
|
-
targets: any;
|
|
5
|
-
extendedUtxo: any;
|
|
6
|
-
feeRate: any;
|
|
7
|
-
changeAddress: any;
|
|
8
|
-
selectType?: string | undefined;
|
|
9
|
-
}): {
|
|
10
|
-
inputs: any;
|
|
11
|
-
fee: any;
|
|
12
|
-
outputs: any;
|
|
13
|
-
change: {
|
|
14
|
-
address: any;
|
|
15
|
-
value: any;
|
|
16
|
-
} | undefined;
|
|
17
|
-
};
|
|
18
|
-
constructor({ network, testnet, feeMin, dustLimit, maximumNumberOfOutputsInTransaction, }: {
|
|
19
|
-
network: any;
|
|
20
|
-
testnet: any;
|
|
21
|
-
feeMin?: number | undefined;
|
|
22
|
-
dustLimit: any;
|
|
23
|
-
maximumNumberOfOutputsInTransaction?: number | undefined;
|
|
24
|
-
});
|
|
25
|
-
testnet: any;
|
|
26
|
-
network: any;
|
|
27
|
-
maximumNumberOfOutputsInTransaction: number;
|
|
28
|
-
feeMin: number;
|
|
29
|
-
dustLimit: any;
|
|
30
|
-
_getUtxo(userAddress: any): Promise<void>;
|
|
31
|
-
_getTransactionHex(transactionId: any): Promise<void>;
|
|
32
|
-
convertBaseInputsToInputs(baseInputs: any): Promise<void>;
|
|
33
|
-
createUnsignedTransaction(baseInputs: any): Promise<void>;
|
|
34
|
-
createAddressObject({ addressType, publicKey }: {
|
|
35
|
-
addressType: any;
|
|
36
|
-
publicKey: any;
|
|
37
|
-
}): bitcoin.payments.Payment;
|
|
38
|
-
validateAddress(address: any): boolean;
|
|
39
|
-
getExtendedUtxo(signerInfo: any): Promise<any>;
|
|
40
|
-
convertUtxoToInput({ extendedUtxo, targets, changeAddress, feeRate, selectType }: any): Promise<{
|
|
41
|
-
inputs: void;
|
|
42
|
-
outputs: any;
|
|
43
|
-
change: {
|
|
44
|
-
address: any;
|
|
45
|
-
value: any;
|
|
46
|
-
} | undefined;
|
|
47
|
-
fee: any;
|
|
48
|
-
feeRate: any;
|
|
49
|
-
}>;
|
|
50
|
-
processUnsignedTransaction({ extendedUtxo, targets, changeAddress, fullAmount, feeRate, selfTransaction, selectType, }: any): Promise<void>;
|
|
51
|
-
getOpReturnTarget(dataHex: any): {
|
|
52
|
-
script: Buffer | undefined;
|
|
53
|
-
value: number;
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
import bitcoin = require("bitcoinjs-lib");
|
|
57
|
-
//# sourceMappingURL=transaction-builder-common.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transaction-builder-common.d.ts","sourceRoot":"","sources":["../../src/transaction-builder/transaction-builder-common.js"],"names":[],"mappings":";AA2BA;IAqEE;;;;;;;;;;;;;;MAgDC;IAnHD;;;;;;OAYC;IALC,aAAsB;IACtB,aAAsB;IACtB,4CAA8E;IAC9E,eAAoB;IACpB,eAAuE;IAIzE,0CAIC;IAGD,sDAIC;IAGD,0DAIC;IAGD,0DAIC;IAGD;;;iCAEC;IAED,uCAkBC;IAoDD,+CAUC;IAOD;;;;;;;;;OAuBC;IAOD,4IA2BC;IAED;;;MAUC;CACF"}
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
const bitcoin = require("bitcoinjs-lib");
|
|
12
|
-
const coinselect = require("coinselect");
|
|
13
|
-
const coinselectSplit = require("coinselect/split");
|
|
14
|
-
const coinselectAccumulative = require("coinselect/accumulative");
|
|
15
|
-
const { createAddressObjectByPublicKey } = require("../bitcoin-utils");
|
|
16
|
-
const TX_EMPTY_SIZE = 4 + 1 + 1 + 4;
|
|
17
|
-
const TX_INPUT_BASE = 32 + 4 + 1 + 4;
|
|
18
|
-
const TX_INPUT_P2PKH = 107;
|
|
19
|
-
const TX_INPUT_P2SH_P2PKH = 50;
|
|
20
|
-
const TX_INPUT_P2WPKH = 47;
|
|
21
|
-
const TX_OUTPUT_BASE = 8 + 1;
|
|
22
|
-
const TX_OUTPUT_P2PKH = 25;
|
|
23
|
-
const componentBytes = {
|
|
24
|
-
bytePerInput: {
|
|
25
|
-
p2pkh: TX_INPUT_BASE + TX_INPUT_P2PKH,
|
|
26
|
-
p2wpkh: TX_INPUT_BASE + TX_INPUT_P2WPKH,
|
|
27
|
-
p2shp2wpkh: TX_INPUT_BASE + TX_INPUT_P2SH_P2PKH,
|
|
28
|
-
},
|
|
29
|
-
baseTxBytes: TX_EMPTY_SIZE,
|
|
30
|
-
bytePerOutput: TX_OUTPUT_BASE + TX_OUTPUT_P2PKH,
|
|
31
|
-
};
|
|
32
|
-
class BaseBitcoinLikeTransaction {
|
|
33
|
-
constructor({ network, testnet, feeMin = 0, dustLimit, maximumNumberOfOutputsInTransaction = 50, }) {
|
|
34
|
-
this.testnet = testnet;
|
|
35
|
-
this.network = network;
|
|
36
|
-
this.maximumNumberOfOutputsInTransaction = maximumNumberOfOutputsInTransaction;
|
|
37
|
-
this.feeMin = feeMin;
|
|
38
|
-
this.dustLimit = dustLimit || 1 * 2 * componentBytes.bytePerInput.p2pkh;
|
|
39
|
-
}
|
|
40
|
-
_getUtxo(userAddress) {
|
|
41
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
-
throw new Error("Do not call abstract method directly");
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
_getTransactionHex(transactionId) {
|
|
46
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
-
throw new Error("Do not call abstract method directly");
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
convertBaseInputsToInputs(baseInputs) {
|
|
51
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
52
|
-
throw new Error("Do not call abstract method directly");
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
createUnsignedTransaction(baseInputs) {
|
|
56
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
57
|
-
throw new Error("Do not call abstract method directly");
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
createAddressObject({ addressType, publicKey }) {
|
|
61
|
-
return createAddressObjectByPublicKey({ addressType, publicKey }, this.network);
|
|
62
|
-
}
|
|
63
|
-
validateAddress(address) {
|
|
64
|
-
try {
|
|
65
|
-
let isValid = false;
|
|
66
|
-
let network = this.network;
|
|
67
|
-
let isAddressSegwit = address.startsWith(network.bech32);
|
|
68
|
-
if (isAddressSegwit) {
|
|
69
|
-
bitcoin.address.fromBech32(address);
|
|
70
|
-
isValid = true;
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
let base58Data = bitcoin.address.fromBase58Check(address);
|
|
74
|
-
isValid =
|
|
75
|
-
base58Data.version === Number(network.scriptHash) ||
|
|
76
|
-
base58Data.version === Number(network.pubKeyHash);
|
|
77
|
-
}
|
|
78
|
-
return isValid;
|
|
79
|
-
}
|
|
80
|
-
catch (error) {
|
|
81
|
-
return false;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
static helperHandleInputsAndOutputs({ targets, extendedUtxo, feeRate, changeAddress, selectType = "normal", }) {
|
|
85
|
-
let selectResponse;
|
|
86
|
-
switch (selectType) {
|
|
87
|
-
case "normal":
|
|
88
|
-
selectResponse = coinselect(extendedUtxo, targets, Math.round(feeRate));
|
|
89
|
-
break;
|
|
90
|
-
case "accumulative":
|
|
91
|
-
selectResponse = coinselectAccumulative(extendedUtxo, targets, Math.round(feeRate));
|
|
92
|
-
break;
|
|
93
|
-
case "full":
|
|
94
|
-
selectResponse = coinselectSplit(extendedUtxo, [{ address: targets[0].address }], Math.round(feeRate));
|
|
95
|
-
break;
|
|
96
|
-
default:
|
|
97
|
-
break;
|
|
98
|
-
}
|
|
99
|
-
let { inputs, outputs, fee } = selectResponse;
|
|
100
|
-
if (!inputs || !outputs) {
|
|
101
|
-
throw new Error("not enough balance");
|
|
102
|
-
}
|
|
103
|
-
let changeIndex = outputs.findIndex((x) => !x.address && !x.script && x.value > 0);
|
|
104
|
-
let change;
|
|
105
|
-
if (changeIndex >= 0) {
|
|
106
|
-
change = {
|
|
107
|
-
address: changeAddress,
|
|
108
|
-
value: outputs[changeIndex].value,
|
|
109
|
-
};
|
|
110
|
-
outputs.splice(changeIndex, 1);
|
|
111
|
-
}
|
|
112
|
-
return {
|
|
113
|
-
inputs,
|
|
114
|
-
fee,
|
|
115
|
-
outputs,
|
|
116
|
-
change,
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
getExtendedUtxo(signerInfo) {
|
|
120
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
121
|
-
let utxo = yield this._getUtxo(signerInfo.address);
|
|
122
|
-
const extendedUtxo = utxo.map((input) => (Object.assign(Object.assign({}, input), { signerInfo })));
|
|
123
|
-
if (!extendedUtxo || extendedUtxo.length === 0) {
|
|
124
|
-
throw new Error("no utxo found");
|
|
125
|
-
}
|
|
126
|
-
return extendedUtxo;
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
convertUtxoToInput({ extendedUtxo, targets, changeAddress, feeRate, selectType }) {
|
|
130
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
131
|
-
let { inputs: filteredInputs, outputs, change, fee, } = BaseBitcoinLikeTransaction.helperHandleInputsAndOutputs({
|
|
132
|
-
targets,
|
|
133
|
-
extendedUtxo,
|
|
134
|
-
feeRate,
|
|
135
|
-
changeAddress,
|
|
136
|
-
selectType,
|
|
137
|
-
});
|
|
138
|
-
let inputs = yield this.convertBaseInputsToInputs(filteredInputs);
|
|
139
|
-
return {
|
|
140
|
-
inputs,
|
|
141
|
-
outputs,
|
|
142
|
-
change,
|
|
143
|
-
fee,
|
|
144
|
-
feeRate,
|
|
145
|
-
};
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
processUnsignedTransaction({ extendedUtxo, targets = [], changeAddress = undefined, fullAmount = false, feeRate, selfTransaction = false, selectType = "normal", }) {
|
|
149
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
150
|
-
if (!selfTransaction && targets.length === 0)
|
|
151
|
-
throw new Error("no target");
|
|
152
|
-
const { inputs, outputs, change, fee } = yield this.convertUtxoToInput({
|
|
153
|
-
extendedUtxo,
|
|
154
|
-
targets,
|
|
155
|
-
changeAddress,
|
|
156
|
-
feeRate,
|
|
157
|
-
selectType: fullAmount ? "full" : selectType,
|
|
158
|
-
});
|
|
159
|
-
let unsignedTransaction = yield this.createUnsignedTransaction({
|
|
160
|
-
inputs,
|
|
161
|
-
outputs,
|
|
162
|
-
change,
|
|
163
|
-
fee,
|
|
164
|
-
feeRate,
|
|
165
|
-
});
|
|
166
|
-
return unsignedTransaction;
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
getOpReturnTarget(dataHex) {
|
|
170
|
-
if (!dataHex.length > 0)
|
|
171
|
-
throw new Error("invalid data in hex");
|
|
172
|
-
const embed = bitcoin.payments.embed({
|
|
173
|
-
data: [Buffer.from(dataHex, "hex")],
|
|
174
|
-
network: this.network,
|
|
175
|
-
});
|
|
176
|
-
return {
|
|
177
|
-
script: embed.output,
|
|
178
|
-
value: 0,
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
module.exports = BaseBitcoinLikeTransaction;
|
|
183
|
-
//# sourceMappingURL=transaction-builder-common.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transaction-builder-common.js","sourceRoot":"","sources":["../../src/transaction-builder/transaction-builder-common.js"],"names":[],"mappings":"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"}
|