@teleportdao/bitcoin 1.4.0 → 1.4.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 (43) hide show
  1. package/dist/bitcoin-base.d.ts +17 -16
  2. package/dist/bitcoin-base.d.ts.map +1 -1
  3. package/dist/bitcoin-base.js +12 -7
  4. package/dist/bitcoin-base.js.map +1 -1
  5. package/dist/bitcoin-utils.d.ts +1 -1
  6. package/dist/bitcoin-utils.d.ts.map +1 -1
  7. package/dist/bitcoin-utils.js +3 -0
  8. package/dist/bitcoin-utils.js.map +1 -1
  9. package/dist/bundle.js +4 -0
  10. package/dist/index.d.ts +5 -5
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +14 -12
  13. package/dist/index.js.map +1 -1
  14. package/dist/sign/sign-transaction.d.ts +9 -5
  15. package/dist/sign/sign-transaction.d.ts.map +1 -1
  16. package/dist/sign/sign-transaction.js +14 -11
  17. package/dist/sign/sign-transaction.js.map +1 -1
  18. package/dist/teleport-dao-payments.d.ts +17 -6
  19. package/dist/teleport-dao-payments.d.ts.map +1 -1
  20. package/dist/teleport-dao-payments.js +4 -3
  21. package/dist/teleport-dao-payments.js.map +1 -1
  22. package/dist/transaction-builder/bitcoin-transaction-builder.d.ts +26 -11
  23. package/dist/transaction-builder/bitcoin-transaction-builder.d.ts.map +1 -1
  24. package/dist/transaction-builder/bitcoin-transaction-builder.js +36 -8
  25. package/dist/transaction-builder/bitcoin-transaction-builder.js.map +1 -1
  26. package/dist/transaction-builder/transaction-builder.d.ts +148 -9
  27. package/dist/transaction-builder/transaction-builder.d.ts.map +1 -1
  28. package/dist/transaction-builder/transaction-builder.js +230 -30
  29. package/dist/transaction-builder/transaction-builder.js.map +1 -1
  30. package/package.json +7 -5
  31. package/src/bitcoin-base.js +220 -219
  32. package/src/bitcoin-utils.js +487 -483
  33. package/src/helper/teleport-request-helper.js +179 -179
  34. package/src/index.ts +8 -0
  35. package/src/sign/sign-transaction.ts +96 -0
  36. package/src/teleport-dao-payments.js +280 -280
  37. package/src/transaction-builder/bitcoin-transaction-builder.ts +57 -0
  38. package/src/transaction-builder/transaction-builder.ts +490 -0
  39. package/src/index.js +0 -15
  40. package/src/sign/sign-transaction.js +0 -36
  41. package/src/transaction-builder/bitcoin-transaction-builder.js +0 -37
  42. package/src/transaction-builder/transaction-builder-common.js +0 -236
  43. package/src/transaction-builder/transaction-builder.js +0 -159
@@ -1,4 +1,27 @@
1
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
+ };
2
25
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
26
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
27
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -8,24 +31,29 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
31
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
32
  });
10
33
  };
11
- const BaseTransactionBuilder = require("./transaction-builder");
12
- const BitcoinInterface = require("../bitcoin-interface");
13
- class BitcoinTransactionBuilder extends BaseTransactionBuilder {
14
- constructor(connectionInfo, networkName, network) {
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ const transaction_builder_1 = __importDefault(require("./transaction-builder"));
39
+ const bitcoin_interface_1 = __importDefault(require("../bitcoin-interface"));
40
+ const bitcoin = __importStar(require("bitcoinjs-lib"));
41
+ class BitcoinTransactionBuilder extends transaction_builder_1.default {
42
+ constructor(connectionInfo, networkName, network = bitcoin.networks.bitcoin) {
15
43
  super({
16
44
  network,
17
45
  testnet: networkName === null || networkName === void 0 ? void 0 : networkName.includes("_testnet"),
18
46
  dustLimit: 1000,
19
47
  });
20
- this.btcInterface = new BitcoinInterface(connectionInfo, networkName);
48
+ this.btcInterface = new bitcoin_interface_1.default(connectionInfo, networkName);
21
49
  }
22
50
  _getUtxo(userAddress) {
23
51
  return __awaiter(this, void 0, void 0, function* () {
24
52
  let utxos = yield this.btcInterface.getAddressesUtxo([userAddress]);
25
53
  return utxos.map((tx) => ({
26
54
  hash: tx.txId,
27
- value: tx.value,
28
- index: tx.index,
55
+ value: +tx.value,
56
+ index: +tx.index,
29
57
  }));
30
58
  });
31
59
  }
@@ -46,5 +74,5 @@ class BitcoinTransactionBuilder extends BaseTransactionBuilder {
46
74
  });
47
75
  }
48
76
  }
49
- module.exports = BitcoinTransactionBuilder;
77
+ exports.default = BitcoinTransactionBuilder;
50
78
  //# sourceMappingURL=bitcoin-transaction-builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bitcoin-transaction-builder.js","sourceRoot":"","sources":["../../src/transaction-builder/bitcoin-transaction-builder.js"],"names":[],"mappings":";;;;;;;;;;AAAA,MAAM,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAA;AAC/D,MAAM,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAA;AAExD,MAAM,yBAA0B,SAAQ,sBAAsB;IAC5D,YAAY,cAAc,EAAE,WAAW,EAAE,OAAO;QAC9C,KAAK,CAAC;YACJ,OAAO;YACP,OAAO,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,CAAC,UAAU,CAAC;YAC1C,SAAS,EAAE,IAAI;SAChB,CAAC,CAAA;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,gBAAgB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA;IACvE,CAAC;IAEK,QAAQ,CAAC,WAAW;;YACxB,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA;YACnE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,KAAK,EAAE,EAAE,CAAC,KAAK;gBACf,KAAK,EAAE,EAAE,CAAC,KAAK;aAChB,CAAC,CAAC,CAAA;QACL,CAAC;KAAA;IAEK,WAAW,CAAC,KAAK;;YACrB,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QAC5C,CAAC;KAAA;IAEK,kBAAkB,CAAC,aAAa;;YACpC,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAA;QACpE,CAAC;KAAA;IAEK,MAAM,CAAC,KAAK;;YAChB,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;YACrE,OAAO,IAAI,CAAA;QACb,CAAC;KAAA;CACF;AAED,MAAM,CAAC,OAAO,GAAG,yBAAyB,CAAA"}
1
+ {"version":3,"file":"bitcoin-transaction-builder.js","sourceRoot":"","sources":["../../src/transaction-builder/bitcoin-transaction-builder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gFAA0D;AAC1D,6EAAmD;AACnD,uDAAwC;AAgBxC,MAAM,yBAA0B,SAAQ,6BAAsB;IAE5D,YACE,cAAqC,EACrC,WAAmB,EACnB,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO;QAElC,KAAK,CAAC;YACJ,OAAO;YACP,OAAO,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,CAAC,UAAU,CAAC;YAC1C,SAAS,EAAE,IAAI;SAChB,CAAC,CAAA;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,2BAAgB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA;IACvE,CAAC;IAEK,QAAQ,CAAC,WAAmB;;YAChC,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA;YACnE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,EAAE,EAAE,CAAC,IAAc;gBACvB,KAAK,EAAE,CAAC,EAAE,CAAC,KAAK;gBAChB,KAAK,EAAE,CAAC,EAAE,CAAC,KAAK;aACjB,CAAC,CAAC,CAAA;QACL,CAAC;KAAA;IAEK,WAAW,CAAC,KAAa;;YAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QAC5C,CAAC;KAAA;IAEK,kBAAkB,CAAC,aAAqB;;YAC5C,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAA;QACpE,CAAC;KAAA;IAEK,MAAM,CAAC,KAAa;;YACxB,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;YACrE,OAAO,IAAI,CAAA;QACb,CAAC;KAAA;CACF;AAED,kBAAe,yBAAyB,CAAA"}
@@ -1,13 +1,152 @@
1
- export = BaseBitcoinLikeTransaction;
2
- declare class BaseBitcoinLikeTransaction extends BaseBitcoinLikeTransactionBuilderCommon {
3
- convertBaseInputsToInputs(baseInputs?: any[]): Promise<any[]>;
4
- createUnsignedTransaction({ inputs, outputs, change, fee, feeRate, }: any): {
1
+ /// <reference types="node" />
2
+ import * as bitcoin from "bitcoinjs-lib";
3
+ export type Utxo = {
4
+ hash: string;
5
+ value: number;
6
+ index: number;
7
+ };
8
+ export type SignerInfo = {
9
+ address: string;
10
+ publicKey: string;
11
+ addressType: string;
12
+ derivationPath?: string;
13
+ masterFingerprint?: string;
14
+ };
15
+ export type ExtendedUtxo = {
16
+ signerInfo: SignerInfo;
17
+ hash: string;
18
+ value: number;
19
+ index: number;
20
+ };
21
+ export type TargetAddress = {
22
+ address: string;
23
+ value: number;
24
+ };
25
+ export type TargetScript = {
26
+ script: Buffer;
27
+ value: number;
28
+ };
29
+ export type Target = TargetAddress | TargetScript;
30
+ export type BitcoinJSInputInfo = ExtendedUtxo & {
31
+ bip32Derivation?: {
32
+ path: string;
33
+ pubkey: Buffer;
34
+ masterFingerprint: Buffer;
35
+ }[];
36
+ nonWitnessUtxo?: Buffer;
37
+ witnessUtxo?: {
38
+ script: Buffer;
39
+ value: number;
40
+ };
41
+ redeemScript?: Buffer;
42
+ tapInternalKey?: Buffer;
43
+ };
44
+ export type ExtendedUnsignedTransaction = {
45
+ unsignedTransaction: string;
46
+ outputs: Target[];
47
+ inputs: {
48
+ hash: string;
49
+ value: number;
50
+ index: number;
51
+ signerInfo: SignerInfo;
52
+ }[];
53
+ fee: number;
54
+ change: TargetAddress | undefined;
55
+ };
56
+ declare class BaseBitcoinLikeTransaction {
57
+ testnet: boolean;
58
+ network: bitcoin.Network;
59
+ maximumNumberOfOutputsInTransaction: number;
60
+ feeMin: number;
61
+ dustLimit: number;
62
+ constructor({ network, testnet, feeMin, dustLimit, maximumNumberOfOutputsInTransaction, }: {
63
+ network: bitcoin.Network;
64
+ testnet: boolean;
65
+ feeMin?: number;
66
+ dustLimit?: number;
67
+ maximumNumberOfOutputsInTransaction?: number;
68
+ });
69
+ _getUtxo(userAddress: string): Promise<Utxo[]>;
70
+ _getTransactionHex(transactionId: string): Promise<string>;
71
+ createAddressObject(input: {
72
+ addressType: string;
73
+ publicKey: Buffer;
74
+ }): bitcoin.payments.Payment;
75
+ validateAddress(address: string): boolean;
76
+ getOpReturnTarget(dataHex: string): {
77
+ script: Buffer | undefined;
78
+ value: number;
79
+ };
80
+ getExtendedUtxo(signerInfo: SignerInfo): Promise<{
81
+ signerInfo: SignerInfo;
82
+ hash: string;
83
+ value: number;
84
+ index: number;
85
+ }[]>;
86
+ static helperHandleInputsAndOutputs({ targets, extendedUtxo, feeRate, changeAddress, selectType, }: {
87
+ extendedUtxo: ExtendedUtxo[];
88
+ targets: Target[];
89
+ feeRate: number;
90
+ changeAddress?: string;
91
+ selectType?: "normal" | "accumulative" | "full";
92
+ }): {
93
+ inputs: ExtendedUtxo[];
94
+ fee: number;
95
+ outputs: Target[];
96
+ change: TargetAddress;
97
+ };
98
+ filterAndConvertTxDataToStandardFormat({ extendedUtxo, targets, changeAddress, feeRate, selectType, }: {
99
+ extendedUtxo: ExtendedUtxo[];
100
+ targets: Target[];
101
+ feeRate: number;
102
+ changeAddress?: string;
103
+ selectType?: "normal" | "accumulative" | "full";
104
+ }): Promise<{
105
+ inputs: BitcoinJSInputInfo[];
106
+ outputs: Target[];
107
+ change: TargetAddress;
108
+ fee: number;
109
+ feeRate: number;
110
+ }>;
111
+ convertExtendedUtxoToInputs(baseInputs?: ExtendedUtxo[]): Promise<BitcoinJSInputInfo[]>;
112
+ createUnsignedTransaction({ inputs, outputs, change, fee, feeRate, }: {
113
+ inputs: BitcoinJSInputInfo[];
114
+ outputs: Target[];
115
+ change?: TargetAddress;
116
+ fee: number;
117
+ feeRate: number;
118
+ }): {
5
119
  unsignedTransaction: string;
6
- outputs: any;
7
- inputs: any;
8
- fee: any;
9
- change: any;
120
+ outputs: Target[];
121
+ inputs: {
122
+ hash: string;
123
+ value: number;
124
+ index: number;
125
+ signerInfo: SignerInfo;
126
+ }[];
127
+ fee: number;
128
+ change: TargetAddress | undefined;
10
129
  };
130
+ processUnsignedTransaction({ extendedUtxo, targets, changeAddress, fullAmount, feeRate, selfTransaction, selectType, }: {
131
+ extendedUtxo: ExtendedUtxo[];
132
+ targets: Target[];
133
+ feeRate: number;
134
+ changeAddress?: string;
135
+ fullAmount?: boolean;
136
+ selfTransaction?: boolean;
137
+ selectType?: "normal" | "accumulative" | "full";
138
+ }): Promise<{
139
+ unsignedTransaction: string;
140
+ outputs: Target[];
141
+ inputs: {
142
+ hash: string;
143
+ value: number;
144
+ index: number;
145
+ signerInfo: SignerInfo;
146
+ }[];
147
+ fee: number;
148
+ change: TargetAddress | undefined;
149
+ }>;
11
150
  }
12
- import BaseBitcoinLikeTransactionBuilderCommon = require("./transaction-builder-common");
151
+ export default BaseBitcoinLikeTransaction;
13
152
  //# sourceMappingURL=transaction-builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-builder.d.ts","sourceRoot":"","sources":["../../src/transaction-builder/transaction-builder.js"],"names":[],"mappings":";AAGA;IACE,8DA+CC;IAOD;;;;;;MAiGC;CACF"}
1
+ {"version":3,"file":"transaction-builder.d.ts","sourceRoot":"","sources":["../../src/transaction-builder/transaction-builder.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AA0BxC,MAAM,MAAM,IAAI,GAAG;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AACD,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AACD,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AACD,MAAM,MAAM,MAAM,GAAG,aAAa,GAAG,YAAY,CAAA;AAEjD,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG;IAC9C,eAAe,CAAC,EAAE;QAChB,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,MAAM,CAAA;QACd,iBAAiB,EAAE,MAAM,CAAA;KAC1B,EAAE,CAAA;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE;QACZ,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;IACD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,mBAAmB,EAAE,MAAM,CAAA;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;QACb,UAAU,EAAE,UAAU,CAAA;KACvB,EAAE,CAAA;IACH,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,aAAa,GAAG,SAAS,CAAA;CAClC,CAAA;AAED,cAAM,0BAA0B;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;IACxB,mCAAmC,EAAE,MAAM,CAAA;IAC3C,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;gBAEL,EACV,OAAO,EACP,OAAO,EACP,MAAU,EACV,SAAS,EACT,mCAAwC,GACzC,EAAE;QACD,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;QACxB,OAAO,EAAE,OAAO,CAAA;QAChB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,mCAAmC,CAAC,EAAE,MAAM,CAAA;KAC7C;IASK,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAO9C,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOhE,mBAAmB,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAKrE,eAAe,CAAC,OAAO,EAAE,MAAM;IAS/B,iBAAiB,CAAC,OAAO,EAAE,MAAM;;;;IAY3B,eAAe,CAAC,UAAU,EAAE,UAAU;;;;;;IAY5C,MAAM,CAAC,4BAA4B,CAAC,EAClC,OAAO,EACP,YAAY,EACZ,OAAO,EACP,aAAa,EACb,UAAqB,GACtB,EAAE;QACD,YAAY,EAAE,YAAY,EAAE,CAAA;QAC5B,OAAO,EAAE,MAAM,EAAE,CAAA;QACjB,OAAO,EAAE,MAAM,CAAA;QACf,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,UAAU,CAAC,EAAE,QAAQ,GAAG,cAAc,GAAG,MAAM,CAAA;KAChD;;;;;;IA4DK,sCAAsC,CAAC,EAC3C,YAAY,EACZ,OAAO,EACP,aAAa,EACb,OAAO,EACP,UAAU,GACX,EAAE;QACD,YAAY,EAAE,YAAY,EAAE,CAAA;QAC5B,OAAO,EAAE,MAAM,EAAE,CAAA;QACjB,OAAO,EAAE,MAAM,CAAA;QACf,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,UAAU,CAAC,EAAE,QAAQ,GAAG,cAAc,GAAG,MAAM,CAAA;KAChD;;;;;;;IA0BK,2BAA2B,CAAC,UAAU,GAAE,YAAY,EAAO;IA8DjE,yBAAyB,CAAC,EACxB,MAAM,EACN,OAAO,EACP,MAAM,EACN,GAAG,EACH,OAAO,GACR,EAAE;QACD,MAAM,EAAE,kBAAkB,EAAE,CAAA;QAC5B,OAAO,EAAE,MAAM,EAAE,CAAA;QACjB,MAAM,CAAC,EAAE,aAAa,CAAA;QACtB,GAAG,EAAE,MAAM,CAAA;QACX,OAAO,EAAE,MAAM,CAAA;KAChB;;;;;;;;;;;;IAqGK,0BAA0B,CAAC,EAC/B,YAAY,EACZ,OAAY,EACZ,aAAyB,EACzB,UAAkB,EAClB,OAAO,EACP,eAAuB,EACvB,UAAqB,GACtB,EAAE;QACD,YAAY,EAAE,YAAY,EAAE,CAAA;QAC5B,OAAO,EAAE,MAAM,EAAE,CAAA;QACjB,OAAO,EAAE,MAAM,CAAA;QAEf,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,UAAU,CAAC,EAAE,OAAO,CAAA;QACpB,eAAe,CAAC,EAAE,OAAO,CAAA;QACzB,UAAU,CAAC,EAAE,QAAQ,GAAG,cAAc,GAAG,MAAM,CAAA;KAChD;;;;;;;;;;;;CAoBF;AAED,eAAe,0BAA0B,CAAA"}
@@ -1,4 +1,27 @@
1
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
+ };
2
25
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
26
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
27
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -8,10 +31,141 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
31
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
32
  });
10
33
  };
11
- const bitcoin = require("bitcoinjs-lib");
12
- const BaseBitcoinLikeTransactionBuilderCommon = require("./transaction-builder-common");
13
- class BaseBitcoinLikeTransaction extends BaseBitcoinLikeTransactionBuilderCommon {
14
- convertBaseInputsToInputs(baseInputs = []) {
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ const bitcoin = __importStar(require("bitcoinjs-lib"));
36
+ const bitcoin_utils_1 = require("../bitcoin-utils");
37
+ const coinselect = require("coinselect");
38
+ const coinselectSplit = require("coinselect/split");
39
+ const coinselectAccumulative = require("coinselect/accumulative");
40
+ const TX_EMPTY_SIZE = 4 + 1 + 1 + 4;
41
+ const TX_INPUT_BASE = 32 + 4 + 1 + 4;
42
+ const TX_INPUT_P2PKH = 107;
43
+ const TX_INPUT_P2SH_P2PKH = 50;
44
+ const TX_INPUT_P2WPKH = 47;
45
+ const TX_OUTPUT_BASE = 8 + 1;
46
+ const TX_OUTPUT_P2PKH = 25;
47
+ const componentBytes = {
48
+ bytePerInput: {
49
+ p2pkh: TX_INPUT_BASE + TX_INPUT_P2PKH,
50
+ p2wpkh: TX_INPUT_BASE + TX_INPUT_P2WPKH,
51
+ p2shp2wpkh: TX_INPUT_BASE + TX_INPUT_P2SH_P2PKH,
52
+ },
53
+ baseTxBytes: TX_EMPTY_SIZE,
54
+ bytePerOutput: TX_OUTPUT_BASE + TX_OUTPUT_P2PKH,
55
+ };
56
+ class BaseBitcoinLikeTransaction {
57
+ constructor({ network, testnet, feeMin = 0, dustLimit, maximumNumberOfOutputsInTransaction = 50, }) {
58
+ this.testnet = testnet;
59
+ this.network = network;
60
+ this.maximumNumberOfOutputsInTransaction = maximumNumberOfOutputsInTransaction;
61
+ this.feeMin = feeMin;
62
+ this.dustLimit = dustLimit || 1 * 2 * componentBytes.bytePerInput.p2pkh;
63
+ }
64
+ _getUtxo(userAddress) {
65
+ return __awaiter(this, void 0, void 0, function* () {
66
+ throw new Error("Do not call abstract method directly");
67
+ });
68
+ }
69
+ _getTransactionHex(transactionId) {
70
+ return __awaiter(this, void 0, void 0, function* () {
71
+ throw new Error("Do not call abstract method directly");
72
+ });
73
+ }
74
+ createAddressObject(input) {
75
+ return (0, bitcoin_utils_1.createAddressObjectByPublicKey)(input, this.network);
76
+ }
77
+ validateAddress(address) {
78
+ try {
79
+ (0, bitcoin_utils_1.getAddressType)(address);
80
+ return true;
81
+ }
82
+ catch (error) {
83
+ return false;
84
+ }
85
+ }
86
+ getOpReturnTarget(dataHex) {
87
+ if (!(dataHex.length > 0))
88
+ throw new Error("invalid data in hex");
89
+ const embed = bitcoin.payments.embed({
90
+ data: [Buffer.from(dataHex, "hex")],
91
+ network: this.network,
92
+ });
93
+ return {
94
+ script: embed.output,
95
+ value: 0,
96
+ };
97
+ }
98
+ getExtendedUtxo(signerInfo) {
99
+ return __awaiter(this, void 0, void 0, function* () {
100
+ let utxo = yield this._getUtxo(signerInfo.address);
101
+ const extendedUtxo = utxo.map((input) => (Object.assign(Object.assign({}, input), { signerInfo })));
102
+ if (!extendedUtxo || extendedUtxo.length === 0) {
103
+ throw new Error("no utxo found");
104
+ }
105
+ return extendedUtxo;
106
+ });
107
+ }
108
+ static helperHandleInputsAndOutputs({ targets, extendedUtxo, feeRate, changeAddress, selectType = "normal", }) {
109
+ let selectResponse;
110
+ switch (selectType) {
111
+ case "normal":
112
+ selectResponse = coinselect(extendedUtxo, targets, Math.round(feeRate));
113
+ break;
114
+ case "accumulative":
115
+ selectResponse = coinselectAccumulative(extendedUtxo, targets, Math.round(feeRate));
116
+ break;
117
+ case "full":
118
+ if (!targets[0].address) {
119
+ throw new Error();
120
+ }
121
+ selectResponse = coinselectSplit(extendedUtxo, [{ address: targets[0].address }], Math.round(feeRate));
122
+ break;
123
+ default:
124
+ break;
125
+ }
126
+ let { inputs, outputs, fee, } = selectResponse;
127
+ if (!inputs || !outputs) {
128
+ throw new Error("not enough balance");
129
+ }
130
+ let changeIndex = outputs.findIndex((x) => !(x === null || x === void 0 ? void 0 : x.address) && !x.script && (x.value || 0) > 0);
131
+ let change;
132
+ if (changeIndex >= 0) {
133
+ if (!changeAddress)
134
+ throw new Error("change address not exist");
135
+ change = {
136
+ address: changeAddress,
137
+ value: outputs[changeIndex].value,
138
+ };
139
+ outputs.splice(changeIndex, 1);
140
+ }
141
+ return {
142
+ inputs,
143
+ fee,
144
+ outputs: outputs,
145
+ change: change,
146
+ };
147
+ }
148
+ filterAndConvertTxDataToStandardFormat({ extendedUtxo, targets, changeAddress, feeRate, selectType, }) {
149
+ return __awaiter(this, void 0, void 0, function* () {
150
+ let { inputs: filteredInputs, outputs, change, fee, } = BaseBitcoinLikeTransaction.helperHandleInputsAndOutputs({
151
+ targets,
152
+ extendedUtxo,
153
+ feeRate,
154
+ changeAddress,
155
+ selectType,
156
+ });
157
+ let inputs = yield this.convertExtendedUtxoToInputs(filteredInputs);
158
+ return {
159
+ inputs,
160
+ outputs,
161
+ change,
162
+ fee,
163
+ feeRate,
164
+ };
165
+ });
166
+ }
167
+ convertExtendedUtxoToInputs(baseInputs = []) {
168
+ var _a;
15
169
  return __awaiter(this, void 0, void 0, function* () {
16
170
  let inputs = baseInputs;
17
171
  let transactionId = null;
@@ -19,11 +173,10 @@ class BaseBitcoinLikeTransaction extends BaseBitcoinLikeTransactionBuilderCommon
19
173
  for (let i in inputs) {
20
174
  let { address, publicKey, derivationPath, masterFingerprint, addressType } = inputs[i].signerInfo;
21
175
  let addressObject = this.createAddressObject({
22
- address,
23
- publicKey: publicKey ? Buffer.from(publicKey, "hex") : null,
176
+ publicKey: Buffer.from(publicKey, "hex"),
24
177
  addressType,
25
178
  });
26
- if (derivationPath && masterFingerprint && publicKey && true) {
179
+ if (derivationPath && masterFingerprint && addressObject.pubkey) {
27
180
  inputs[i].bip32Derivation = [
28
181
  {
29
182
  path: derivationPath,
@@ -33,28 +186,45 @@ class BaseBitcoinLikeTransaction extends BaseBitcoinLikeTransactionBuilderCommon
33
186
  ];
34
187
  }
35
188
  if (addressType === "p2pkh") {
36
- if (transactionId === inputs[i].hash) {
189
+ if (transactionHex && transactionId === inputs[i].hash) {
37
190
  inputs[i].nonWitnessUtxo = Buffer.from(transactionHex, "hex");
38
191
  }
39
192
  else {
40
193
  transactionHex = yield this._getTransactionHex(inputs[i].hash);
41
- inputs[i].nonWitnessUtxo = Buffer.from(transactionHex, "hex");
42
194
  transactionId = inputs[i].hash;
195
+ inputs[i].nonWitnessUtxo = Buffer.from(transactionHex, "hex");
43
196
  }
44
197
  }
45
198
  else if (addressType === "p2wpkh") {
199
+ if (!addressObject.output)
200
+ throw new Error("invalid signer info");
46
201
  inputs[i].witnessUtxo = {
47
202
  script: addressObject.output,
48
203
  value: inputs[i].value,
49
204
  };
50
205
  }
51
206
  else if (addressType === "p2sh-p2wpkh") {
207
+ if (!addressObject.output)
208
+ throw new Error("invalid signer info");
52
209
  inputs[i].witnessUtxo = {
53
210
  script: addressObject.output,
54
211
  value: inputs[i].value,
55
212
  };
213
+ if (!((_a = addressObject === null || addressObject === void 0 ? void 0 : addressObject.redeem) === null || _a === void 0 ? void 0 : _a.output))
214
+ throw new Error("invalid signer info for p2sh address");
56
215
  inputs[i].redeemScript = addressObject.redeem.output;
57
216
  }
217
+ else if (addressType === "p2tr") {
218
+ if (!addressObject.output)
219
+ throw new Error("invalid signer info");
220
+ inputs[i].witnessUtxo = {
221
+ script: addressObject.output,
222
+ value: inputs[i].value,
223
+ };
224
+ if (!addressObject.pubkey)
225
+ throw new Error("invalid signer info for p2tr address (pubkey)");
226
+ inputs[i].tapInternalKey = Buffer.from(publicKey, "hex");
227
+ }
58
228
  }
59
229
  return inputs;
60
230
  });
@@ -62,7 +232,7 @@ class BaseBitcoinLikeTransaction extends BaseBitcoinLikeTransactionBuilderCommon
62
232
  createUnsignedTransaction({ inputs, outputs, change, fee, feeRate, }) {
63
233
  const { network } = this;
64
234
  const newPsbt = new bitcoin.Psbt({ network });
65
- newPsbt.setMaximumFeeRate = feeRate + feeRate / 100;
235
+ newPsbt.setMaximumFeeRate(+(feeRate + feeRate / 100).toFixed());
66
236
  for (const input of inputs) {
67
237
  let { addressType } = input.signerInfo;
68
238
  switch (addressType) {
@@ -72,9 +242,10 @@ class BaseBitcoinLikeTransaction extends BaseBitcoinLikeTransactionBuilderCommon
72
242
  index: Number(input.index),
73
243
  nonWitnessUtxo: input.nonWitnessUtxo,
74
244
  sequence: 0xffffffff - 1,
245
+ bip32Derivation: input.bip32Derivation,
75
246
  };
76
- if (input.bip32Derivation)
77
- i.bip32Derivation = input.bip32Derivation;
247
+ if (!i.bip32Derivation)
248
+ delete i.bip32Derivation;
78
249
  newPsbt.addInput(i);
79
250
  break;
80
251
  }
@@ -84,9 +255,10 @@ class BaseBitcoinLikeTransaction extends BaseBitcoinLikeTransactionBuilderCommon
84
255
  index: Number(input.index),
85
256
  witnessUtxo: input.witnessUtxo,
86
257
  sequence: 0xffffffff - 1,
258
+ bip32Derivation: input.bip32Derivation,
87
259
  };
88
- if (input.bip32Derivation)
89
- i.bip32Derivation = input.bip32Derivation;
260
+ if (!i.bip32Derivation)
261
+ delete i.bip32Derivation;
90
262
  newPsbt.addInput(i);
91
263
  break;
92
264
  }
@@ -97,9 +269,24 @@ class BaseBitcoinLikeTransaction extends BaseBitcoinLikeTransactionBuilderCommon
97
269
  witnessUtxo: input.witnessUtxo,
98
270
  redeemScript: input.redeemScript,
99
271
  sequence: 0xffffffff - 1,
272
+ bip32Derivation: input.bip32Derivation,
100
273
  };
101
- if (input.bip32Derivation)
102
- i.bip32Derivation = input.bip32Derivation;
274
+ if (!i.bip32Derivation)
275
+ delete i.bip32Derivation;
276
+ newPsbt.addInput(i);
277
+ break;
278
+ }
279
+ case "p2tr": {
280
+ let i = {
281
+ hash: input.hash,
282
+ index: Number(input.index),
283
+ witnessUtxo: input.witnessUtxo,
284
+ tapInternalKey: input.tapInternalKey,
285
+ sequence: 0xffffffff - 1,
286
+ bip32Derivation: input.bip32Derivation,
287
+ };
288
+ if (!i.bip32Derivation)
289
+ delete i.bip32Derivation;
103
290
  newPsbt.addInput(i);
104
291
  break;
105
292
  }
@@ -116,14 +303,6 @@ class BaseBitcoinLikeTransaction extends BaseBitcoinLikeTransactionBuilderCommon
116
303
  value: Number(change.value),
117
304
  });
118
305
  }
119
- for (let i in outputs) {
120
- if (newPsbt.txOutputs[i].address !== outputs[i].address) {
121
- throw new Error("error address");
122
- }
123
- if (newPsbt.txOutputs[i].value !== outputs[i].value) {
124
- throw new Error("error value");
125
- }
126
- }
127
306
  if (change && Object.keys(change).length !== 0) {
128
307
  if (newPsbt.txOutputs[outputs.length].address !== change.address) {
129
308
  throw new Error("error change address");
@@ -136,16 +315,37 @@ class BaseBitcoinLikeTransaction extends BaseBitcoinLikeTransactionBuilderCommon
136
315
  return {
137
316
  unsignedTransaction: unsignedPsbtBaseText,
138
317
  outputs,
139
- inputs: inputs.map((tx) => ({
140
- hash: tx.hash,
141
- value: Number(tx.value),
142
- index: tx.index,
143
- signerInfo: tx.signerInfo,
318
+ inputs: inputs.map((utx) => ({
319
+ hash: utx.hash,
320
+ value: Number(utx.value),
321
+ index: utx.index,
322
+ signerInfo: utx.signerInfo,
144
323
  })),
145
324
  fee,
146
325
  change,
147
326
  };
148
327
  }
328
+ processUnsignedTransaction({ extendedUtxo, targets = [], changeAddress = undefined, fullAmount = false, feeRate, selfTransaction = false, selectType = "normal", }) {
329
+ return __awaiter(this, void 0, void 0, function* () {
330
+ if (!selfTransaction && targets.length === 0)
331
+ throw new Error("no target");
332
+ const { inputs, outputs, change, fee } = yield this.filterAndConvertTxDataToStandardFormat({
333
+ extendedUtxo,
334
+ targets,
335
+ changeAddress,
336
+ feeRate,
337
+ selectType: fullAmount ? "full" : selectType,
338
+ });
339
+ let unsignedTransaction = this.createUnsignedTransaction({
340
+ inputs,
341
+ outputs,
342
+ change,
343
+ fee,
344
+ feeRate,
345
+ });
346
+ return unsignedTransaction;
347
+ });
348
+ }
149
349
  }
150
- module.exports = BaseBitcoinLikeTransaction;
350
+ exports.default = BaseBitcoinLikeTransaction;
151
351
  //# sourceMappingURL=transaction-builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-builder.js","sourceRoot":"","sources":["../../src/transaction-builder/transaction-builder.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transaction-builder.js","sourceRoot":"","sources":["../../src/transaction-builder/transaction-builder.ts"],"names":[],"mappings":"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"}