@teleportdao/bitcoin 1.8.6 → 1.8.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.
@@ -1,19 +1,16 @@
1
1
  import BigNumber from "bignumber.js"
2
2
  import { bitcoin as bitcoinProviders } from "@teleportdao/providers"
3
- import { BitcoinBaseWallet } from "./bitcoin-wallet-base"
4
- // eslint-disable-next-line import/no-extraneous-dependencies
5
- import { BitcoinConnectionInfo } from "./type"
6
- import type { SignerInfo, ChangeTarget, Target, ExtendedUtxo } from "./transaction-builder"
7
-
8
- import { OrdinalTransactionBuilder } from "./transaction-builder"
3
+ import { OrdinalTransactionBuilder } from "./transaction-builder/ordinal-transaction-builder"
9
4
  import BitcoinSign from "./sign/sign-transaction"
10
5
  //
11
6
  import { BitcoinInterfaceOrdinal } from "./bitcoin-interface-ordinal"
12
-
13
7
  import { generateBrc2OpReturn } from "./helper/brc20-helper"
14
- import { sleep } from "./utils/tools"
8
+ import { runWithRetries, sleep } from "./utils/tools"
9
+ import { BitcoinConnectionInfo } from "./type"
10
+ import { ChangeTarget, ExtendedUtxo, SignerInfo, Target } from "./transaction-builder"
11
+ import { BitcoinBaseWallet } from "./bitcoin-wallet-base"
15
12
 
16
- export class OrdinalWallet extends BitcoinBaseWallet {
13
+ class OrdinalWallet extends BitcoinBaseWallet {
17
14
  unisat: bitcoinProviders.UniSat
18
15
  transactionBuilder: OrdinalTransactionBuilder
19
16
  btcInterface: BitcoinInterfaceOrdinal
@@ -37,19 +34,11 @@ export class OrdinalWallet extends BitcoinBaseWallet {
37
34
  this.unisat = this.btcInterface.unisat
38
35
  }
39
36
 
40
- async sendSignedPsbtWithRetry(signedPsbt: string, { numberOfRetry = 5, sleepTime = 5000 } = {}) {
41
- let count = 0
42
- while (count <= numberOfRetry) {
43
- try {
44
- let txId = await this.sendSignedPsbt(signedPsbt)
45
- return txId
46
- } catch (e: any) {
47
- console.log(e.message)
48
- await sleep(sleepTime + count * 5000)
49
- count += 1
50
- }
51
- }
52
- throw new Error("failed to send transaction")
37
+ async sendSignedPsbtWithRetry(signedPsbt: string, { maxTries = 5, retrySleep = 5000 } = {}) {
38
+ return runWithRetries(() => this.sendSignedPsbt(signedPsbt), {
39
+ retrySleep,
40
+ maxTries,
41
+ })
53
42
  }
54
43
 
55
44
  static deployBRC20Data(tickName: string, max: number | string, limit: number | string) {
@@ -68,6 +57,7 @@ export class OrdinalWallet extends BitcoinBaseWallet {
68
57
  }
69
58
 
70
59
  static mintBRC20Data(tickName: string, amount: string | number) {
60
+ if (BigNumber(amount).isLessThanOrEqualTo(0)) throw new Error("amount should be greater than 0")
71
61
  let data = {
72
62
  p: "brc-20",
73
63
  op: "mint",
@@ -82,6 +72,7 @@ export class OrdinalWallet extends BitcoinBaseWallet {
82
72
  }
83
73
 
84
74
  static transferBRC20Data(tickName: string, amount: string | number) {
75
+ if (BigNumber(amount).isLessThanOrEqualTo(0)) throw new Error("amount should be greater than 0")
85
76
  let data = {
86
77
  p: "brc-20",
87
78
  op: "transfer",
@@ -177,10 +168,12 @@ export class OrdinalWallet extends BitcoinBaseWallet {
177
168
  type: string
178
169
  },
179
170
  signer: SignerInfo,
171
+ ordinalSigner?: SignerInfo,
180
172
  extendedUtxo?: ExtendedUtxo[],
181
173
  staticFeeRate?: number,
182
174
  ) {
183
- const publicKey = Buffer.from(signer.publicKey, "hex")
175
+ const ordinalSignerPublicKey = ordinalSigner?.publicKey || signer.publicKey
176
+ const publicKey = Buffer.from(ordinalSignerPublicKey, "hex")
184
177
  let transferOrdinal = this.transactionBuilder.createOrdinalAddress(file, publicKey)
185
178
  const leafScript = transferOrdinal.redeem.output
186
179
  const { ordinalAddress } = transferOrdinal
@@ -215,11 +208,19 @@ export class OrdinalWallet extends BitcoinBaseWallet {
215
208
  type: string
216
209
  },
217
210
  signer: SignerInfo,
211
+ ordinalSigner?: SignerInfo,
218
212
  extendedUtxo?: ExtendedUtxo[],
219
213
  staticFeeRate?: number,
220
214
  ) {
215
+ const receiverAddress = ordinalSigner?.address || signer.address
221
216
  const { inscribeDepositUnsignedInfo, transferOrdinal } =
222
- await this.inscribeOrdinalDepositUnsigned(file, signer, extendedUtxo, staticFeeRate)
217
+ await this.inscribeOrdinalDepositUnsigned(
218
+ file,
219
+ signer,
220
+ ordinalSigner,
221
+ extendedUtxo,
222
+ staticFeeRate,
223
+ )
223
224
  const { ordinalAddress } = transferOrdinal
224
225
  let ordinalAmount = 600
225
226
  let inscribeDeposit: {
@@ -234,7 +235,7 @@ export class OrdinalWallet extends BitcoinBaseWallet {
234
235
  let inscribeUnsignedInfo = this.transactionBuilder.createInscribeUnsignedTx(
235
236
  transferOrdinal,
236
237
  inscribeDeposit,
237
- this.bitcoinAddress!,
238
+ receiverAddress,
238
239
  ordinalAmount,
239
240
  )
240
241
  return {
@@ -251,6 +252,7 @@ export class OrdinalWallet extends BitcoinBaseWallet {
251
252
  ),
252
253
  },
253
254
  inscribeAddress: ordinalAddress,
255
+ receiverAddress,
254
256
  }
255
257
  }
256
258
 
@@ -261,14 +263,21 @@ export class OrdinalWallet extends BitcoinBaseWallet {
261
263
  },
262
264
  extendedUtxo?: ExtendedUtxo[],
263
265
  staticFeeRate?: number,
266
+ ordinalReceiverAddress?: string,
264
267
  ) {
265
268
  if (!this.currentAccount || !this.currentAccountType || !this.publicKey || !this.privateKey) {
266
269
  throw new Error("account not initialized")
267
270
  }
271
+ const receiverAddress = ordinalReceiverAddress || this.bitcoinAddress!
268
272
 
269
273
  const { inscribeDepositUnsignedInfo, transferOrdinal } =
270
- await this.inscribeOrdinalDepositUnsigned(file, this.signerInfo!, extendedUtxo, staticFeeRate)
271
-
274
+ await this.inscribeOrdinalDepositUnsigned(
275
+ file,
276
+ this.signerInfo!,
277
+ undefined,
278
+ extendedUtxo,
279
+ staticFeeRate,
280
+ )
272
281
  let ordinalUtxo = await this.btcInterface.getBTCUtxo(
273
282
  transferOrdinal.ordinalAddress,
274
283
  this.signerInfo!,
@@ -327,7 +336,7 @@ export class OrdinalWallet extends BitcoinBaseWallet {
327
336
  let inscribeUnsignedInfo = this.transactionBuilder.createInscribeUnsignedTx(
328
337
  transferOrdinal,
329
338
  inscribeDeposit,
330
- this.bitcoinAddress!,
339
+ receiverAddress,
331
340
  ordinalAmount,
332
341
  )
333
342
 
@@ -370,11 +379,12 @@ export class OrdinalWallet extends BitcoinBaseWallet {
370
379
  async inscribeBrc20Unsigned(
371
380
  brc: { tick: string; amount: number | string },
372
381
  signer: SignerInfo,
382
+ ordinalSigner?: SignerInfo,
373
383
  extendedUtxo?: ExtendedUtxo[],
374
384
  staticFeeRate?: number,
375
385
  ) {
376
386
  let file = OrdinalWallet.transferBRC20Data(brc.tick, brc.amount)
377
- return this.inscribeOrdinalUnsigned(file, signer, extendedUtxo, staticFeeRate)
387
+ return this.inscribeOrdinalUnsigned(file, signer, ordinalSigner, extendedUtxo, staticFeeRate)
378
388
  }
379
389
 
380
390
  async inscribeBrc20(
@@ -394,10 +404,12 @@ export class OrdinalWallet extends BitcoinBaseWallet {
394
404
  index: number
395
405
  },
396
406
  signer: SignerInfo,
407
+ ordinalSigner?: SignerInfo,
397
408
  extendedUtxo?: ExtendedUtxo[],
398
409
  staticFeeRate?: number,
399
410
  otherTargets?: Target[],
400
411
  ) {
412
+ const ordinalSignerInfo = ordinalSigner || signer
401
413
  let utxo = extendedUtxo || (await this.btcInterface.getBTCUtxo(signer.address, signer))
402
414
  let feeRate = staticFeeRate || (await this.btcInterface.getFeeRate("normal"))
403
415
  let unsignedTx = await this.transactionBuilder.createNftPsbt({
@@ -406,7 +418,7 @@ export class OrdinalWallet extends BitcoinBaseWallet {
406
418
  hash: brcInscribeUtxo.hash,
407
419
  index: 0,
408
420
  value: brcInscribeUtxo.value,
409
- signerInfo: signer,
421
+ signerInfo: ordinalSignerInfo,
410
422
  },
411
423
  feeRate,
412
424
  receiverAddress: receiver,
@@ -464,10 +476,12 @@ export class OrdinalWallet extends BitcoinBaseWallet {
464
476
  receiver: string,
465
477
  brc: { tick: string; amount: number | string },
466
478
  signer: SignerInfo,
479
+ ordinalSigner?: SignerInfo,
467
480
  otherTargets?: Target[],
468
481
  extendedUtxo?: ExtendedUtxo[],
469
482
  staticFeeRate?: number,
470
483
  ) {
484
+ const ordinalSignerInfo = ordinalSigner || signer
471
485
  // check all fee before process transaction
472
486
  let brc20Balance = await this.unisat.getBrc20AddressBalanceForTicker(signer.address, brc.tick)
473
487
 
@@ -489,7 +503,7 @@ export class OrdinalWallet extends BitcoinBaseWallet {
489
503
  extendedUtxo || (await this.btcInterface.getBTCUtxo(signer.address, signer))
490
504
  let utxo2: ExtendedUtxo[] = []
491
505
  const { inscribeAddress, inscribeDepositUnsignedInfo, inscribeUnsignedInfo } =
492
- await this.inscribeBrc20Unsigned(brc, signer, utxo1, feeRate)
506
+ await this.inscribeBrc20Unsigned(brc, signer, ordinalSignerInfo, utxo1, feeRate)
493
507
 
494
508
  utxo2 = utxo1.filter(
495
509
  (u) =>
@@ -514,6 +528,7 @@ export class OrdinalWallet extends BitcoinBaseWallet {
514
528
  index: 0,
515
529
  },
516
530
  signer,
531
+ ordinalSignerInfo,
517
532
  utxo2,
518
533
  feeRate,
519
534
  otherTargets,
@@ -618,12 +633,10 @@ export class OrdinalWallet extends BitcoinBaseWallet {
618
633
  outputToken: string
619
634
  outputAmount: string
620
635
  },
636
+ ordinalSigner?: SignerInfo,
621
637
  extendedUtxo?: ExtendedUtxo[],
622
638
  staticFeeRate?: number,
623
- {
624
- chainId = 137, // 80001
625
- appId = exchange ? 1 : 0,
626
- } = {},
639
+ { chainId = 137, appId = exchange ? 1 : 0 } = {},
627
640
  ) {
628
641
  const isExchange = !!exchange
629
642
  let dataHex = generateBrc2OpReturn({
@@ -641,6 +654,7 @@ export class OrdinalWallet extends BitcoinBaseWallet {
641
654
  lockerAddress,
642
655
  brc,
643
656
  signer,
657
+ ordinalSigner,
644
658
  [opTarget],
645
659
  extendedUtxo,
646
660
  staticFeeRate,
@@ -662,12 +676,10 @@ export class OrdinalWallet extends BitcoinBaseWallet {
662
676
  outputToken: string
663
677
  outputAmount: string
664
678
  },
679
+ ordinalSigner?: SignerInfo,
665
680
  extendedUtxo?: ExtendedUtxo[],
666
681
  staticFeeRate?: number,
667
- {
668
- chainId = 137, // 80001
669
- appId = exchange ? 1 : 0,
670
- } = {},
682
+ { chainId = 137, appId = exchange ? 1 : 0 } = {},
671
683
  ) {
672
684
  let utxo: ExtendedUtxo[] =
673
685
  extendedUtxo || (await this.btcInterface.getBTCUtxo(signer.address, signer))
@@ -689,6 +701,7 @@ export class OrdinalWallet extends BitcoinBaseWallet {
689
701
  lockerAddress,
690
702
  brcInscribeTx,
691
703
  signer,
704
+ ordinalSigner,
692
705
  utxo,
693
706
  feeRate,
694
707
  [opTarget],
@@ -707,10 +720,7 @@ export class OrdinalWallet extends BitcoinBaseWallet {
707
720
  },
708
721
  extendedUtxo?: ExtendedUtxo[],
709
722
  staticFeeRate?: number,
710
- {
711
- chainId = 137, // 80001
712
- appId = exchange ? 1 : 0,
713
- } = {},
723
+ { chainId = 137, appId = exchange ? 1 : 0 } = {},
714
724
  ) {
715
725
  const isExchange = !!exchange
716
726
 
@@ -1,93 +0,0 @@
1
- /// <reference types="node" />
2
- import TransactionBuilder, { BitcoinConnectionInfo } from "./transaction-builder/bitcoin-transaction-builder";
3
- import type { ExtendedUtxo, SignerInfo, Target } from "./transaction-builder/transaction-builder";
4
- import BitcoinSign from "./sign/sign-transaction";
5
- import { Network, Payment } from "bitcoinjs-lib";
6
- import { BitcoinInterface } from "./bitcoin-interface";
7
- declare class BitcoinBase {
8
- network: Network;
9
- hdWalletPath: {
10
- p2pkh: string;
11
- p2wpkh: string;
12
- "p2sh-p2wpkh": string;
13
- p2sh: string;
14
- p2wsh: string;
15
- "p2sh-p2wsh": string;
16
- p2tr: string;
17
- };
18
- transactionBuilder: TransactionBuilder;
19
- btcInterface: BitcoinInterface;
20
- signer: BitcoinSign;
21
- currentAccount?: string;
22
- currentAccountType?: string;
23
- privateKey?: Buffer;
24
- publicKey?: Buffer;
25
- publicKeys?: Buffer[];
26
- addressObj?: Payment;
27
- bitcoinAddress: string | undefined;
28
- constructor(networkName: string, connectionInfo?: BitcoinConnectionInfo);
29
- get signerInfo(): {
30
- address: string;
31
- publicKey: string;
32
- addressType: string;
33
- } | undefined;
34
- createTransactionInputsAndOutputs({ targets, extendedUtxo, changeAddress, feeRate, }: {
35
- targets: Target[];
36
- extendedUtxo: ExtendedUtxo[];
37
- changeAddress: string;
38
- feeRate: number;
39
- fullAmount?: boolean;
40
- }): {
41
- inputs: ExtendedUtxo[];
42
- fee: number;
43
- outputs: Target[];
44
- change: import("./transaction-builder/transaction-builder").ChangeTarget | undefined;
45
- };
46
- checkBalanceIsSufficient({ targets, extendedUtxo, changeAddress, feeRate, fullAmount, }: {
47
- targets: Target[];
48
- extendedUtxo: ExtendedUtxo[];
49
- changeAddress: string;
50
- feeRate: number;
51
- fullAmount?: boolean;
52
- }): boolean;
53
- setMultiSigAccount(accountType?: string): void;
54
- setAccountPrivateKey(privateKeyHex: string): void;
55
- setAccountPublicKey(publicKeyHex: string): void;
56
- setAccountPrivateKeyByMnemonic({ mnemonic, mnemonicPassword, index, walletNumber, addressType, }: {
57
- mnemonic: string;
58
- mnemonicPassword?: string;
59
- index?: number;
60
- walletNumber?: number;
61
- addressType?: string;
62
- }): string | undefined;
63
- setAccount(accountType?: string): string | undefined;
64
- getExtendedUtxo(input: SignerInfo): Promise<{
65
- signerInfo: SignerInfo;
66
- hash: string;
67
- value: number;
68
- index: number;
69
- }[]>;
70
- send({ receiverAddress, amount, fullAmount, speed, }: {
71
- receiverAddress: string;
72
- amount: number;
73
- fullAmount?: boolean;
74
- speed?: "normal" | "fast" | "slow";
75
- }): Promise<string>;
76
- sendSignedPsbt(signedPsbt: string): Promise<string>;
77
- sendSignedTx(signedTx: string): Promise<string>;
78
- sendMultiSignedPsbt(signedPsbts?: string[]): Promise<string>;
79
- increaseTransactionFeeUnsignedPsbt(txId: string, signerInfos: SignerInfo[], extraExtendedUtxo: ExtendedUtxo[], changeAddress: string, staticFeeRate?: number): Promise<{
80
- unsignedTransaction: string;
81
- outputs: Target[];
82
- inputs: {
83
- hash: string;
84
- value: number;
85
- index: number;
86
- signerInfo: SignerInfo;
87
- }[];
88
- fee: number;
89
- change: import("./transaction-builder/transaction-builder").ChangeTarget | undefined;
90
- }>;
91
- }
92
- export { BitcoinBase };
93
- //# sourceMappingURL=bitcoin-base.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bitcoin-base.d.ts","sourceRoot":"","sources":["../src/bitcoin-base.ts"],"names":[],"mappings":"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"}
@@ -1,236 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
- return new (P || (P = Promise))(function (resolve, reject) {
28
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
- step((generator = generator.apply(thisArg, _arguments || [])).next());
32
- });
33
- };
34
- var __importDefault = (this && this.__importDefault) || function (mod) {
35
- return (mod && mod.__esModule) ? mod : { "default": mod };
36
- };
37
- Object.defineProperty(exports, "__esModule", { value: true });
38
- exports.BitcoinBase = void 0;
39
- const bitcoin_transaction_builder_1 = __importDefault(require("./transaction-builder/bitcoin-transaction-builder"));
40
- const sign_transaction_1 = __importDefault(require("./sign/sign-transaction"));
41
- const bip39 = __importStar(require("bip39"));
42
- const configs_1 = require("@teleportdao/configs");
43
- const bitcoin_utils_1 = require("./bitcoin-utils");
44
- const networks_1 = __importDefault(require("./utils/networks"));
45
- const bip32_1 = __importDefault(require("bip32"));
46
- const secp256k1_1 = __importDefault(require("@bitcoinerlab/secp256k1"));
47
- const bip32 = (0, bip32_1.default)(secp256k1_1.default);
48
- class BitcoinBase {
49
- constructor(networkName, connectionInfo = {
50
- api: {
51
- enabled: true,
52
- provider: "BlockStream",
53
- },
54
- }) {
55
- this.network = networks_1.default[networkName];
56
- this.hdWalletPath = configs_1.hdWalletPath.bitcoin;
57
- this.transactionBuilder = new bitcoin_transaction_builder_1.default(connectionInfo, networkName, this.network);
58
- this.btcInterface = this.transactionBuilder.btcInterface;
59
- this.signer = new sign_transaction_1.default(this.network);
60
- this.currentAccount = undefined;
61
- this.currentAccountType = undefined;
62
- this.privateKey = undefined;
63
- this.publicKey = undefined;
64
- this.publicKeys = [];
65
- }
66
- get signerInfo() {
67
- return this.privateKey
68
- ? {
69
- address: this.bitcoinAddress,
70
- publicKey: this.publicKey.toString("hex"),
71
- addressType: this.currentAccountType,
72
- }
73
- : undefined;
74
- }
75
- createTransactionInputsAndOutputs({ targets, extendedUtxo, changeAddress, feeRate, }) {
76
- return this.transactionBuilder.helperHandleInputsAndOutputs({
77
- targets,
78
- extendedUtxo,
79
- changeObject: {
80
- address: changeAddress,
81
- },
82
- feeRate,
83
- });
84
- }
85
- checkBalanceIsSufficient({ targets, extendedUtxo, changeAddress, feeRate, fullAmount = false, }) {
86
- try {
87
- this.transactionBuilder.helperHandleInputsAndOutputs({
88
- targets,
89
- extendedUtxo,
90
- changeObject: {
91
- address: changeAddress,
92
- },
93
- feeRate,
94
- });
95
- return true;
96
- }
97
- catch (err) {
98
- return false;
99
- }
100
- }
101
- setMultiSigAccount(accountType = "p2sh") {
102
- switch (accountType) {
103
- default:
104
- throw new Error("accountType is incorrect");
105
- }
106
- this.currentAccountType = accountType;
107
- }
108
- setAccountPrivateKey(privateKeyHex) {
109
- this.privateKey = Buffer.from(privateKeyHex, "hex");
110
- let publicKey = (0, bitcoin_utils_1.getPubKeyFromPrivateKeyHex)(privateKeyHex, this.network);
111
- this.publicKey = publicKey;
112
- }
113
- setAccountPublicKey(publicKeyHex) {
114
- this.publicKey = Buffer.from(publicKeyHex, "hex");
115
- }
116
- setAccountPrivateKeyByMnemonic({ mnemonic, mnemonicPassword = "", index = 0, walletNumber = 0, addressType = "p2sh-p2wpkh", }) {
117
- if (!bip39.validateMnemonic(mnemonic))
118
- throw new Error("invalid mnemonic");
119
- const seed = bip39.mnemonicToSeedSync(mnemonic, mnemonicPassword);
120
- const node = bip32.fromSeed(seed);
121
- let basePath = this.hdWalletPath[addressType];
122
- if (!basePath) {
123
- throw new Error("incorrect path or addressType");
124
- }
125
- const path = `${basePath}/${walletNumber}`;
126
- const account = node.derivePath(path);
127
- const userKeyPair = account.derive(index);
128
- this.setAccountPrivateKey(userKeyPair.privateKey.toString("hex"));
129
- return this.setAccount(addressType);
130
- }
131
- setAccount(accountType = "p2pkh") {
132
- if (!this.publicKey) {
133
- throw new Error("account not initialized");
134
- }
135
- let addressObj = this.transactionBuilder.createAddressObject({
136
- addressType: accountType,
137
- publicKey: this.publicKey,
138
- });
139
- this.currentAccount = addressObj.address;
140
- this.currentAccountType = accountType;
141
- this.addressObj = addressObj;
142
- this.bitcoinAddress = addressObj.address;
143
- return addressObj.address;
144
- }
145
- getExtendedUtxo(input) {
146
- return __awaiter(this, void 0, void 0, function* () {
147
- return this.transactionBuilder.getExtendedUtxo(input);
148
- });
149
- }
150
- send({ receiverAddress, amount, fullAmount = false, speed = "normal", }) {
151
- return __awaiter(this, void 0, void 0, function* () {
152
- if (!this.currentAccount || !this.currentAccountType || !this.publicKey || !this.privateKey) {
153
- throw new Error("account not initialized");
154
- }
155
- let extendedUtxo = yield this.getExtendedUtxo({
156
- address: this.currentAccount,
157
- addressType: this.currentAccountType,
158
- publicKey: this.publicKey.toString("hex"),
159
- });
160
- if (amount - +amount.toFixed() !== 0)
161
- throw new Error("incorrect amount. amount should be in satoshi");
162
- let feeRate = yield this.transactionBuilder._getFeeRate(speed);
163
- let unsignedTx = yield this.transactionBuilder.processUnsignedTransaction({
164
- extendedUtxo,
165
- targets: [
166
- {
167
- address: receiverAddress,
168
- value: amount,
169
- },
170
- ],
171
- changeAddress: this.currentAccount,
172
- feeRate,
173
- fullAmount,
174
- });
175
- let signedPsbt = yield this.signer.signPsbt(unsignedTx, this.privateKey);
176
- let signedTx = this.signer.finalizePsbts([signedPsbt]);
177
- let txId = yield this.transactionBuilder.sendTx(signedTx);
178
- return txId;
179
- });
180
- }
181
- sendSignedPsbt(signedPsbt) {
182
- return __awaiter(this, void 0, void 0, function* () {
183
- let signedTx = this.signer.finalizePsbts([signedPsbt]);
184
- let txId = yield this.transactionBuilder.sendTx(signedTx);
185
- return txId;
186
- });
187
- }
188
- sendSignedTx(signedTx) {
189
- return __awaiter(this, void 0, void 0, function* () {
190
- let txId = yield this.transactionBuilder.sendTx(signedTx);
191
- return txId;
192
- });
193
- }
194
- sendMultiSignedPsbt(signedPsbts = []) {
195
- return __awaiter(this, void 0, void 0, function* () {
196
- let signedTx = this.signer.finalizePsbts(signedPsbts);
197
- let txId = yield this.transactionBuilder.sendTx(signedTx);
198
- return txId;
199
- });
200
- }
201
- increaseTransactionFeeUnsignedPsbt(txId, signerInfos, extraExtendedUtxo, changeAddress, staticFeeRate) {
202
- return __awaiter(this, void 0, void 0, function* () {
203
- let transaction = yield this.btcInterface.getTransaction(txId);
204
- let extendedUtxo = transaction.vin.map((vi) => ({
205
- signerInfo: signerInfos.find((s) => s.address === vi.address),
206
- hash: vi.txId,
207
- value: +vi.value,
208
- index: vi.index,
209
- }));
210
- if (extendedUtxo.find((x) => { var _a; return !((_a = x.signerInfo) === null || _a === void 0 ? void 0 : _a.address); })) {
211
- throw new Error("signerInfo not match");
212
- }
213
- let changeIndex = transaction.vout.findIndex((vo) => transaction.vin.find((vi) => vo.address === vi.address || vo.address === changeAddress));
214
- const feeRate = staticFeeRate || (yield this.transactionBuilder._getFeeRate("fast"));
215
- let targets = transaction.vout
216
- .filter((_, index) => index !== changeIndex)
217
- .map((vo) => vo.address
218
- ? {
219
- address: vo.address,
220
- value: vo.value,
221
- }
222
- : {
223
- script: Buffer.from(vo.script, "hex"),
224
- value: vo.value,
225
- });
226
- return this.transactionBuilder.processUnsignedTransaction({
227
- extendedUtxo: [...extendedUtxo, ...extraExtendedUtxo],
228
- targets,
229
- feeRate,
230
- changeAddress: changeIndex >= 0 ? transaction.vout[changeIndex].address : changeAddress,
231
- });
232
- });
233
- }
234
- }
235
- exports.BitcoinBase = BitcoinBase;
236
- //# sourceMappingURL=bitcoin-base.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bitcoin-base.js","sourceRoot":"","sources":["../src/bitcoin-base.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oHAE0D;AAG1D,+EAAiD;AAEjD,6CAA8B;AAC9B,kDAAmD;AACnD,mDAA4D;AAC5D,gEAAuC;AAIvC,kDAAgC;AAChC,wEAAyC;AAEzC,MAAM,KAAK,GAAG,IAAA,eAAY,EAAC,mBAAG,CAAC,CAAA;AAE/B,MAAM,WAAW;IAqBf,YACE,WAAmB,EACnB,iBAAwC;QACtC,GAAG,EAAE;YACH,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,aAAa;SACxB;KACF;QAED,IAAI,CAAC,OAAO,GAAG,kBAAQ,CAAC,WAAW,CAAC,CAAA;QACpC,IAAI,CAAC,YAAY,GAAG,sBAAY,CAAC,OAAO,CAAA;QAExC,IAAI,CAAC,kBAAkB,GAAG,IAAI,qCAAkB,CAAC,cAAc,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAC3F,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAA;QAExD,IAAI,CAAC,MAAM,GAAG,IAAI,0BAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAE3C,IAAI,CAAC,cAAc,GAAG,SAAS,CAAA;QAC/B,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAA;QAEnC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAE1B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;IACtB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,UAAU;YACpB,CAAC,CAAC;gBACE,OAAO,EAAE,IAAI,CAAC,cAAe;gBAC7B,SAAS,EAAE,IAAI,CAAC,SAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC1C,WAAW,EAAE,IAAI,CAAC,kBAAmB;aACtC;YACH,CAAC,CAAC,SAAS,CAAA;IACf,CAAC;IAED,iCAAiC,CAAC,EAChC,OAAO,EACP,YAAY,EACZ,aAAa,EACb,OAAO,GAOR;QACC,OAAO,IAAI,CAAC,kBAAkB,CAAC,4BAA4B,CAAC;YAC1D,OAAO;YACP,YAAY;YACZ,YAAY,EAAE;gBACZ,OAAO,EAAE,aAAa;aACvB;YACD,OAAO;SACR,CAAC,CAAA;IACJ,CAAC;IAED,wBAAwB,CAAC,EACvB,OAAO,EACP,YAAY,EACZ,aAAa,EACb,OAAO,EACP,UAAU,GAAG,KAAK,GAOnB;QACC,IAAI;YACF,IAAI,CAAC,kBAAkB,CAAC,4BAA4B,CAAC;gBACnD,OAAO;gBACP,YAAY;gBACZ,YAAY,EAAE;oBACZ,OAAO,EAAE,aAAa;iBACvB;gBACD,OAAO;aACR,CAAC,CAAA;YACF,OAAO,IAAI,CAAA;SACZ;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,KAAK,CAAA;SACb;IACH,CAAC;IAGD,kBAAkB,CAAC,WAAW,GAAG,MAAM;QAGrC,QAAQ,WAAW,EAAE;YAUnB;gBACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;SAC9C;QACD,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAA;IACvC,CAAC;IAED,oBAAoB,CAAC,aAAqB;QACxC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;QACnD,IAAI,SAAS,GAAG,IAAA,0CAA0B,EAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QACvE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;IAED,mBAAmB,CAAC,YAAoB;QACtC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;IACnD,CAAC;IAED,8BAA8B,CAAC,EAC7B,QAAQ,EACR,gBAAgB,GAAG,EAAE,EACrB,KAAK,GAAG,CAAC,EACT,YAAY,GAAG,CAAC,EAChB,WAAW,GAAG,aAAa,GAO5B;QACC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;QAC1E,MAAM,IAAI,GAAG,KAAK,CAAC,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAA;QACjE,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAEjC,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,WAA6C,CAAC,CAAA;QAC/E,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;SACjD;QACD,MAAM,IAAI,GAAG,GAAG,QAAQ,IAAI,YAAY,EAAE,CAAA;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACzC,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,UAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;QAClE,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;IACrC,CAAC;IAED,UAAU,CAAC,WAAW,GAAG,OAAO;QAC9B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;SAC3C;QACD,IAAI,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC;YAC3D,WAAW,EAAE,WAAW;YACxB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAA;QACF,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,OAAO,CAAA;QACxC,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAA;QACrC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,OAAO,CAAA;QACxC,OAAO,UAAU,CAAC,OAAO,CAAA;IAC3B,CAAC;IAEK,eAAe,CAAC,KAAiB;;YACrC,OAAO,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;QACvD,CAAC;KAAA;IAEK,IAAI,CAAC,EACT,eAAe,EACf,MAAM,EACN,UAAU,GAAG,KAAK,EAClB,KAAK,GAAG,QAAQ,GAMjB;;YACC,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBAC3F,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;aAC3C;YAED,IAAI,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC;gBAC5C,OAAO,EAAE,IAAI,CAAC,cAAc;gBAC5B,WAAW,EAAE,IAAI,CAAC,kBAAkB;gBACpC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;aAC1C,CAAC,CAAA;YACF,IAAI,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;gBAClC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;YAClE,IAAI,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;YAC9D,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,0BAA0B,CAAC;gBACxE,YAAY;gBACZ,OAAO,EAAE;oBACP;wBACE,OAAO,EAAE,eAAe;wBACxB,KAAK,EAAE,MAAM;qBACd;iBACF;gBACD,aAAa,EAAE,IAAI,CAAC,cAAc;gBAClC,OAAO;gBACP,UAAU;aACX,CAAC,CAAA;YACF,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;YACxE,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;YACtD,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACzD,OAAO,IAAI,CAAA;QACb,CAAC;KAAA;IAEK,cAAc,CAAC,UAAkB;;YACrC,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;YACtD,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACzD,OAAO,IAAI,CAAA;QACb,CAAC;KAAA;IAEK,YAAY,CAAC,QAAgB;;YACjC,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACzD,OAAO,IAAI,CAAA;QACb,CAAC;KAAA;IAEK,mBAAmB,CAAC,cAAwB,EAAE;;YAClD,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAA;YACrD,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACzD,OAAO,IAAI,CAAA;QACb,CAAC;KAAA;IAEK,kCAAkC,CACtC,IAAY,EACZ,WAAyB,EACzB,iBAAiC,EACjC,aAAqB,EACrB,aAAsB;;YAEtB,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;YAE9D,IAAI,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC9C,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC,OAAO,CAAE;gBAC9D,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,KAAK,EAAE,CAAC,EAAE,CAAC,KAAK;gBAChB,KAAK,EAAE,EAAE,CAAC,KAAK;aAChB,CAAC,CAAC,CAAA;YAEH,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAC,CAAA,MAAA,CAAC,CAAC,UAAU,0CAAE,OAAO,CAAA,CAAA,EAAA,CAAC,EAAE;gBACpD,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;aACxC;YAED,IAAI,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAClD,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,KAAK,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,KAAK,aAAa,CAAC,CACxF,CAAA;YAED,MAAM,OAAO,GAAG,aAAa,IAAI,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAA;YAEpF,IAAI,OAAO,GAAG,WAAW,CAAC,IAAI;iBAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,WAAW,CAAC;iBAC3C,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACV,EAAE,CAAC,OAAO;gBACR,CAAC,CAAC;oBACE,OAAO,EAAE,EAAE,CAAC,OAAO;oBACnB,KAAK,EAAE,EAAE,CAAC,KAAK;iBAChB;gBACH,CAAC,CAAC;oBACE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;oBACrC,KAAK,EAAE,EAAE,CAAC,KAAK;iBAChB,CACN,CAAA;YACH,OAAO,IAAI,CAAC,kBAAkB,CAAC,0BAA0B,CAAC;gBACxD,YAAY,EAAE,CAAC,GAAG,YAAY,EAAE,GAAG,iBAAiB,CAAC;gBACrD,OAAO;gBACP,OAAO;gBACP,aAAa,EAAE,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa;aACxF,CAAC,CAAA;QACJ,CAAC;KAAA;CACF;AACQ,kCAAW"}
@@ -1,7 +0,0 @@
1
- export function getBurnTransactionInfo(address: any, vin?: any[], vouts?: any[]): {
2
- receivers: any[];
3
- changes: any[];
4
- totalInputValue: any;
5
- lockerVin: any;
6
- } | null;
7
- //# sourceMappingURL=burn-request-helper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"burn-request-helper.d.ts","sourceRoot":"","sources":["../../src/helper/burn-request-helper.js"],"names":[],"mappings":"AAAA;;;;;SAsBC"}
@@ -1,26 +0,0 @@
1
- "use strict";
2
- function getBurnTransactionInfo(address, vin = [], vouts = []) {
3
- let lockerVinIndex = vin.findIndex((vi) => vi.address === address);
4
- if (lockerVinIndex >= 0) {
5
- let lockerVin = vin[lockerVinIndex];
6
- lockerVin.vinIndex = lockerVinIndex;
7
- let totalInputValue = vin.reduce((acc, current) => +acc + +current.value, 0);
8
- let receivers = [];
9
- let changes = [];
10
- for (let i in vouts) {
11
- let vout = Object.assign(Object.assign({}, vouts[i]), { index: i });
12
- if (vout.address === address) {
13
- changes.push(vout);
14
- }
15
- else {
16
- receivers.push(vout);
17
- }
18
- }
19
- return { receivers, changes, totalInputValue, lockerVin };
20
- }
21
- return null;
22
- }
23
- module.exports = {
24
- getBurnTransactionInfo,
25
- };
26
- //# sourceMappingURL=burn-request-helper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"burn-request-helper.js","sourceRoot":"","sources":["../../src/helper/burn-request-helper.js"],"names":[],"mappings":";AAAA,SAAS,sBAAsB,CAAC,OAAO,EAAE,GAAG,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE;IAC3D,IAAI,cAAc,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,CAAA;IAClE,IAAI,cAAc,IAAI,CAAC,EAAE;QACvB,IAAI,SAAS,GAAG,GAAG,CAAC,cAAc,CAAC,CAAA;QACnC,SAAS,CAAC,QAAQ,GAAG,cAAc,CAAA;QACnC,IAAI,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAC5E,IAAI,SAAS,GAAG,EAAE,CAAA;QAClB,IAAI,OAAO,GAAG,EAAE,CAAA;QAChB,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE;YACnB,IAAI,IAAI,mCACH,KAAK,CAAC,CAAC,CAAC,KACX,KAAK,EAAE,CAAC,GACT,CAAA;YACD,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE;gBAC5B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;aACnB;iBAAM;gBACL,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;aACrB;SACF;QACD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,CAAA;KAC1D;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,CAAC,OAAO,GAAG;IACf,sBAAsB;CACvB,CAAA"}