@teleportdao/bitcoin 1.9.0 → 2.0.2
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/.tmp/block-parser.ts +58 -0
- package/.tmp/ordinal-helper.ts +133 -0
- package/.tmp/ordinal.ts +25 -0
- package/.tmp/rbf.ts +27 -24
- package/dist/bitcoin-interface-ordinal.d.ts +2 -2
- package/dist/bitcoin-interface-ordinal.d.ts.map +1 -1
- package/dist/bitcoin-interface-ordinal.js +1 -1
- package/dist/bitcoin-interface-ordinal.js.map +1 -1
- package/dist/bitcoin-interface-teleswap.d.ts +2 -53
- package/dist/bitcoin-interface-teleswap.d.ts.map +1 -1
- package/dist/bitcoin-interface-teleswap.js +6 -17
- package/dist/bitcoin-interface-teleswap.js.map +1 -1
- package/dist/bitcoin-interface-wallet.d.ts +29 -0
- package/dist/bitcoin-interface-wallet.d.ts.map +1 -0
- package/dist/bitcoin-interface-wallet.js +126 -0
- package/dist/bitcoin-interface-wallet.js.map +1 -0
- package/dist/bitcoin-interface.d.ts +5 -23
- package/dist/bitcoin-interface.d.ts.map +1 -1
- package/dist/bitcoin-interface.js +13 -92
- package/dist/bitcoin-interface.js.map +1 -1
- package/dist/bitcoin-wallet-base.d.ts +55 -31
- package/dist/bitcoin-wallet-base.d.ts.map +1 -1
- package/dist/bitcoin-wallet-base.js +105 -84
- package/dist/bitcoin-wallet-base.js.map +1 -1
- package/dist/ordinal-wallet.d.ts +29 -71
- package/dist/ordinal-wallet.d.ts.map +1 -1
- package/dist/ordinal-wallet.js +48 -108
- package/dist/ordinal-wallet.js.map +1 -1
- package/dist/teleswap-wallet.d.ts +10 -16
- package/dist/teleswap-wallet.d.ts.map +1 -1
- package/dist/teleswap-wallet.js +10 -30
- package/dist/teleswap-wallet.js.map +1 -1
- package/dist/transaction-builder/bitcoin-transaction-builder.d.ts +4 -11
- package/dist/transaction-builder/bitcoin-transaction-builder.d.ts.map +1 -1
- package/dist/transaction-builder/bitcoin-transaction-builder.js +2 -23
- package/dist/transaction-builder/bitcoin-transaction-builder.js.map +1 -1
- package/dist/transaction-builder/ordinal-transaction-builder.d.ts +3 -2
- package/dist/transaction-builder/ordinal-transaction-builder.d.ts.map +1 -1
- package/dist/transaction-builder/ordinal-transaction-builder.js +1 -6
- package/dist/transaction-builder/ordinal-transaction-builder.js.map +1 -1
- package/dist/transaction-builder/transaction-builder.d.ts +3 -7
- package/dist/transaction-builder/transaction-builder.d.ts.map +1 -1
- package/dist/transaction-builder/transaction-builder.js +22 -49
- package/dist/transaction-builder/transaction-builder.js.map +1 -1
- package/dist/type.d.ts +33 -18
- package/dist/type.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/bitcoin-interface-ordinal.ts +185 -181
- package/src/bitcoin-interface-teleswap.ts +237 -252
- package/src/bitcoin-interface-utils.ts +60 -60
- package/src/bitcoin-interface-wallet.ts +114 -0
- package/src/bitcoin-interface.ts +156 -239
- package/src/bitcoin-utils.ts +591 -591
- package/src/bitcoin-wallet-base.ts +344 -310
- package/src/helper/brc20-helper.ts +179 -179
- package/src/helper/ordinal-helper.ts +118 -118
- package/src/index.ts +15 -15
- package/src/ordinal-wallet.ts +659 -748
- package/src/sign/index.ts +1 -1
- package/src/sign/sign-transaction.ts +108 -108
- package/src/teleswap-wallet.ts +133 -155
- package/src/transaction-builder/bitcoin-transaction-builder.ts +26 -44
- package/src/transaction-builder/index.ts +3 -3
- package/src/transaction-builder/ordinal-transaction-builder.ts +139 -147
- package/src/transaction-builder/transaction-builder.ts +690 -706
- package/src/type.ts +74 -48
- package/src/utils/networks.ts +33 -33
- package/src/utils/tools.ts +92 -92
- package/tsconfig.json +9 -9
- package/webpack.config.js +16 -16
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import blockchainConfig from "@teleportdao/teleswap-nodes/src/config/blockchain.config"
|
|
2
|
+
import { BitcoinInterface } from "../src"
|
|
3
|
+
import { parseRawTransaction } from "../src/bitcoin-utils"
|
|
4
|
+
|
|
5
|
+
async function start() {
|
|
6
|
+
const btcInterface = new BitcoinInterface(
|
|
7
|
+
blockchainConfig.sourceNetwork.connection,
|
|
8
|
+
blockchainConfig.sourceNetwork.name,
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
// const txs = await btcInterface.getMultipleBlocksTransactions(
|
|
12
|
+
// ["3QMbvA6PhMSJAhr4Usr7JxVC6LuxQJqNKa"],
|
|
13
|
+
// 862571,
|
|
14
|
+
// 862572,
|
|
15
|
+
// [
|
|
16
|
+
// {
|
|
17
|
+
// txId: "7fc88095bf4a8722295b51615965b46b5f429ebe18c38d7d7746a8c00b58b724",
|
|
18
|
+
// index: 2,
|
|
19
|
+
// value: 546,
|
|
20
|
+
// script: "a914f89ef33376877ad6d01bf5e23bc263f9553bb2d587",
|
|
21
|
+
// address: "3QMbvA6PhMSJAhr4Usr7JxVC6LuxQJqNKa",
|
|
22
|
+
// },
|
|
23
|
+
// {
|
|
24
|
+
// txId: "49daf17deab7e8ecfd9eacb4d0476a5dbca7a333cc9aee94e208d718870743e7",
|
|
25
|
+
// index: 2,
|
|
26
|
+
// value: 546,
|
|
27
|
+
// script: "a914f89ef33376877ad6d01bf5e23bc263f9553bb2d587",
|
|
28
|
+
// address: "3QMbvA6PhMSJAhr4Usr7JxVC6LuxQJqNKa",
|
|
29
|
+
// },
|
|
30
|
+
// {
|
|
31
|
+
// txId: "3ac54d4ff0c8e971658b3a20a9f75d912795da2fd83b94465a2cafad3b25f3ef",
|
|
32
|
+
// index: 2,
|
|
33
|
+
// value: 546,
|
|
34
|
+
// script: "a914f89ef33376877ad6d01bf5e23bc263f9553bb2d587",
|
|
35
|
+
// address: "3QMbvA6PhMSJAhr4Usr7JxVC6LuxQJqNKa",
|
|
36
|
+
// },
|
|
37
|
+
// {
|
|
38
|
+
// txId: "49f4fc74c20ea50e2ce6d2c9b3bcfdcbba600a1f691d20bfb4f39b77170bd2e6",
|
|
39
|
+
// index: 3,
|
|
40
|
+
// value: 35637,
|
|
41
|
+
// script: "a914f89ef33376877ad6d01bf5e23bc263f9553bb2d587",
|
|
42
|
+
// address: "3QMbvA6PhMSJAhr4Usr7JxVC6LuxQJqNKa",
|
|
43
|
+
// },
|
|
44
|
+
// ],
|
|
45
|
+
// )
|
|
46
|
+
const a = await btcInterface.getRequestProof({
|
|
47
|
+
txId: "4a24b07a9faa9929153d544fd1cbb0f83f5b7eb43977a88b8c1c2b704fa112af",
|
|
48
|
+
})
|
|
49
|
+
console.log(JSON.stringify(a, null, 2))
|
|
50
|
+
|
|
51
|
+
// console.log(
|
|
52
|
+
// txs.filter(
|
|
53
|
+
// (t, i) => !txs.find((tt, ii) => t.txId === tt.txId && t.address === tt.address && ii < i),
|
|
54
|
+
// ),
|
|
55
|
+
// )
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
start()
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import * as bitcoin from "bitcoinjs-lib"
|
|
2
|
+
import ecc from "@bitcoinerlab/secp256k1"
|
|
3
|
+
|
|
4
|
+
bitcoin.initEccLib(ecc)
|
|
5
|
+
|
|
6
|
+
// eslint-disable-next-line consistent-return
|
|
7
|
+
export function createAddressObjectByScriptNoType(
|
|
8
|
+
script: Buffer,
|
|
9
|
+
network: bitcoin.Network = bitcoin.networks.bitcoin,
|
|
10
|
+
) {
|
|
11
|
+
let addressObject: bitcoin.payments.Payment
|
|
12
|
+
|
|
13
|
+
try {
|
|
14
|
+
addressObject = bitcoin.payments.p2pkh({
|
|
15
|
+
output: script,
|
|
16
|
+
network,
|
|
17
|
+
})
|
|
18
|
+
if (addressObject.address) {
|
|
19
|
+
return {
|
|
20
|
+
addressObject,
|
|
21
|
+
addressType: "p2pkh",
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
} catch (err) {
|
|
25
|
+
/* empty */
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
try {
|
|
29
|
+
addressObject = bitcoin.payments.p2wpkh({
|
|
30
|
+
output: script,
|
|
31
|
+
network,
|
|
32
|
+
})
|
|
33
|
+
if (addressObject.address) {
|
|
34
|
+
return {
|
|
35
|
+
addressObject,
|
|
36
|
+
addressType: "p2wpkh",
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
} catch (err) {
|
|
40
|
+
/* empty */
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
try {
|
|
44
|
+
addressObject = bitcoin.payments.p2sh({
|
|
45
|
+
output: script,
|
|
46
|
+
network,
|
|
47
|
+
})
|
|
48
|
+
if (addressObject.address) {
|
|
49
|
+
return {
|
|
50
|
+
addressObject,
|
|
51
|
+
addressType: "p2sh",
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
} catch (err) {
|
|
55
|
+
/* empty */
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
try {
|
|
59
|
+
addressObject = bitcoin.payments.p2wsh({
|
|
60
|
+
output: script,
|
|
61
|
+
network,
|
|
62
|
+
})
|
|
63
|
+
if (addressObject.address) {
|
|
64
|
+
return {
|
|
65
|
+
addressObject,
|
|
66
|
+
addressType: "p2wsh",
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
} catch (err) {
|
|
70
|
+
/* empty */
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
try {
|
|
74
|
+
addressObject = bitcoin.payments.p2tr({
|
|
75
|
+
output: script,
|
|
76
|
+
network,
|
|
77
|
+
})
|
|
78
|
+
if (addressObject.address) {
|
|
79
|
+
return {
|
|
80
|
+
addressObject,
|
|
81
|
+
addressType: "p2tr",
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
} catch (err) {
|
|
85
|
+
/* empty */
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export function splitBuffer(buffer: Buffer, partLength: number) {
|
|
90
|
+
const parts: Buffer[] = []
|
|
91
|
+
for (let i = 0; i < buffer.length; i += partLength) {
|
|
92
|
+
const part = buffer.subarray(i, i + partLength)
|
|
93
|
+
parts.push(part)
|
|
94
|
+
}
|
|
95
|
+
return parts
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export function getOrdinalScript(
|
|
99
|
+
file: { buffer: Buffer; type: string },
|
|
100
|
+
internalPublicKeyHex: string,
|
|
101
|
+
) {
|
|
102
|
+
let bufferParts = splitBuffer(file.buffer, 520)
|
|
103
|
+
// const splittedFileHex = bufferParts.map((part) => part.toString("hex")).join(" ")
|
|
104
|
+
// const script = `${internalPublicKeyHex} OP_CHECKSIG OP_FALSE OP_IF ${ORDINAL_ORD_HEX} 00000000000000000000 ${fileTypeHex} OP_0 ${splittedFileHex} OP_ENDIF`
|
|
105
|
+
|
|
106
|
+
// ? bitcoinjs-lib converts "OP_PUSH 1" to "0x51" instead of "0x0101" as required by the ordinal protocol
|
|
107
|
+
// ? so we push 00000000000000000000 instead of 1 and then replace 0a00000000000000000000 with 0101
|
|
108
|
+
let leafScript = bitcoin.script.compile([
|
|
109
|
+
Buffer.from(internalPublicKeyHex, "hex"),
|
|
110
|
+
bitcoin.opcodes.OP_CHECKSIG,
|
|
111
|
+
bitcoin.opcodes.OP_FALSE,
|
|
112
|
+
bitcoin.opcodes.OP_IF,
|
|
113
|
+
Buffer.from("ord", "utf8"),
|
|
114
|
+
// instead of 1 we push 00000000000000000000
|
|
115
|
+
Buffer.from("00000000000000000000", "hex"),
|
|
116
|
+
//
|
|
117
|
+
Buffer.from(file.type!, "utf8"),
|
|
118
|
+
bitcoin.opcodes.OP_0,
|
|
119
|
+
...bufferParts,
|
|
120
|
+
bitcoin.opcodes.OP_ENDIF,
|
|
121
|
+
])
|
|
122
|
+
|
|
123
|
+
leafScript = Buffer.from(
|
|
124
|
+
leafScript.toString("hex").replace("0a00000000000000000000", "0101"),
|
|
125
|
+
"hex",
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
return leafScript
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export function toXOnly(pubKey: Buffer) {
|
|
132
|
+
return pubKey.length === 32 ? pubKey : pubKey.subarray(1, 33)
|
|
133
|
+
}
|
package/.tmp/ordinal.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { OrdinalWallet } from "../"
|
|
2
|
+
import getAndDecryptAccount from "@teleportdao/teleswap-nodes/src/config/account"
|
|
3
|
+
|
|
4
|
+
require("dotenv").config()
|
|
5
|
+
|
|
6
|
+
import blockchainConfig from "@teleportdao/teleswap-nodes/src/config/blockchain.config"
|
|
7
|
+
;(async () => {
|
|
8
|
+
const account = await getAndDecryptAccount()
|
|
9
|
+
|
|
10
|
+
let btc = new OrdinalWallet("bitcoin", "", blockchainConfig.sourceNetwork.connection)
|
|
11
|
+
btc.setAccountPrivateKeyByMnemonic({
|
|
12
|
+
mnemonic: account.mnemonic,
|
|
13
|
+
index: 2,
|
|
14
|
+
addressType: "p2wpkh",
|
|
15
|
+
})
|
|
16
|
+
const x = btc.transactionBuilder.createOrdinalAddress(
|
|
17
|
+
{
|
|
18
|
+
buffer: Buffer.from("Hello World", "utf8"),
|
|
19
|
+
type: "text/plain",
|
|
20
|
+
},
|
|
21
|
+
btc.publicKey!,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
console.log(x)
|
|
25
|
+
})()
|
package/.tmp/rbf.ts
CHANGED
|
@@ -1,42 +1,45 @@
|
|
|
1
|
-
import blockchainConfig from "@teleportdao/teleswap-nodes/src/config/blockchain.config"
|
|
2
|
-
import getAndDecryptAccount from "@teleportdao/teleswap-nodes/src/config/account"
|
|
3
1
|
import { sleep } from "../dist/utils/tools"
|
|
4
|
-
import {
|
|
2
|
+
import { BitcoinBase, TeleportDaoPayment, TransferRequest } from "@teleportdao/bitcoin"
|
|
5
3
|
import { parseRawTransaction } from "../dist/bitcoin-utils"
|
|
6
|
-
|
|
7
4
|
require("dotenv").config()
|
|
8
5
|
;(async () => {
|
|
9
|
-
let btc = new
|
|
6
|
+
let btc = new TeleportDaoPayment("bitcoin_testnet", {
|
|
10
7
|
api: {
|
|
8
|
+
enabled: true,
|
|
11
9
|
provider: "MempoolSpace",
|
|
12
10
|
},
|
|
13
11
|
})
|
|
14
|
-
|
|
15
|
-
const account = await getAndDecryptAccount()
|
|
16
12
|
btc.setAccountPrivateKeyByMnemonic({
|
|
17
|
-
mnemonic:
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
addressType: "p2tr",
|
|
13
|
+
mnemonic: process.env.ACCOUNT__MNEMONIC!,
|
|
14
|
+
index: 2,
|
|
15
|
+
addressType: "p2wpkh",
|
|
21
16
|
})
|
|
22
17
|
|
|
23
18
|
console.log(btc.bitcoinAddress)
|
|
19
|
+
let balance = await btc.btcInterface.getBalance(btc.bitcoinAddress!)
|
|
24
20
|
|
|
25
|
-
|
|
21
|
+
console.log(balance)
|
|
26
22
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
btc.transactionBuilder.getOpReturnTarget("0x0101010101"),
|
|
32
|
-
btc.transactionBuilder.getOpReturnTarget("0x0202020202"),
|
|
33
|
-
],
|
|
34
|
-
changeAddress: btc.bitcoinAddress!,
|
|
35
|
-
fullAmount: false,
|
|
23
|
+
let txId = await btc.send({
|
|
24
|
+
receiverAddress: btc.bitcoinAddress!,
|
|
25
|
+
fullAmount: true,
|
|
26
|
+
amount: 0,
|
|
36
27
|
})
|
|
37
28
|
|
|
38
|
-
const signedTx = await btc.signer.signPsbt(unsignedTx, btc.privateKey!)
|
|
39
|
-
const txId = await btc.sendSignedPsbt(signedTx)
|
|
40
|
-
|
|
41
29
|
console.log(txId)
|
|
30
|
+
await sleep(5_000)
|
|
31
|
+
|
|
32
|
+
// const txId = "a4335df47c09cc983d0ba56373212b86c266ea434bb87d610ae5c892da79e1b7"
|
|
33
|
+
|
|
34
|
+
let unsigned = await btc.increaseTransactionFeeUnsignedPsbt(
|
|
35
|
+
txId,
|
|
36
|
+
[btc.signerInfo!],
|
|
37
|
+
[],
|
|
38
|
+
btc.bitcoinAddress!,
|
|
39
|
+
5,
|
|
40
|
+
)
|
|
41
|
+
let signedPsbt = await btc.signer.signPsbt(unsigned, btc.privateKey!)
|
|
42
|
+
let txIdNew = await btc.sendSignedPsbt(signedPsbt)
|
|
43
|
+
|
|
44
|
+
console.log(txIdNew)
|
|
42
45
|
})()
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { bitcoin as bitcoinProviders } from "@teleportdao/providers";
|
|
2
2
|
import { BitcoinInterface } from "./bitcoin-interface";
|
|
3
|
-
import { Transaction,
|
|
3
|
+
import { Transaction, BitcoinTokenNodeConnectionInfo } from "./type";
|
|
4
4
|
import type { SignerInfo } from "./transaction-builder";
|
|
5
5
|
export declare class BitcoinInterfaceOrdinal extends BitcoinInterface {
|
|
6
6
|
unisat: bitcoinProviders.UniSat;
|
|
7
|
-
constructor(connectionInfo:
|
|
7
|
+
constructor(connectionInfo: BitcoinTokenNodeConnectionInfo, networkName: string, uniSatToken: string);
|
|
8
8
|
getInscriptionWithRetry(inscriptionId: string, { numberOfRetry, sleepTime }?: {
|
|
9
9
|
numberOfRetry?: number | undefined;
|
|
10
10
|
sleepTime?: number | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitcoin-interface-ordinal.d.ts","sourceRoot":"","sources":["../src/bitcoin-interface-ordinal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"bitcoin-interface-ordinal.d.ts","sourceRoot":"","sources":["../src/bitcoin-interface-ordinal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,8BAA8B,EAAE,MAAM,QAAQ,CAAA;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAKvD,qBAAa,uBAAwB,SAAQ,gBAAgB;IAC3D,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAA;gBAE7B,cAAc,EAAE,8BAA8B,EAC9C,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM;IAUf,uBAAuB,CAC3B,aAAa,EAAE,MAAM,EACrB,EAAE,aAAiB,EAAE,SAAiB,EAAE;;;KAAK;IAkBzC,+BAA+B,CAAC,WAAW,EAAE;QACjD,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE;YACJ,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;YACtB,MAAM,EAAE,MAAM,CAAA;YACd,KAAK,EAAE,MAAM,CAAA;SACd,EAAE,CAAA;QACH,GAAG,EAAE;YACH,IAAI,EAAE,MAAM,CAAA;YACZ,KAAK,EAAE,MAAM,CAAA;YACb,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;YACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;YACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;SACtB,EAAE,CAAA;KACJ;cAES,MAAM;kBACF,MAAM;eACT,MAAM;eACN;YACL,EAAE,EAAE,MAAM,CAAA;YACV,IAAI,EAAE,MAAM,CAAA;YACZ,GAAG,EAAE,MAAM,CAAA;YACX,GAAG,EAAE,MAAM,CAAA;YACX,OAAO,EAAE,MAAM,CAAA;SAChB;qBACY,iBAAiB,iBAAiB;;IA2B7C,yBAAyB,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM;;;;;;;;;;;;;;;;IAezE,oBAAoB,CACxB,SAAS,EAAE,MAAM,EAAE,EACnB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgDlB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;;;;;;IAWlD,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;;;;;;CAUjE"}
|
|
@@ -20,7 +20,7 @@ const tools_1 = require("./utils/tools");
|
|
|
20
20
|
const brc20_helper_1 = require("./helper/brc20-helper");
|
|
21
21
|
class BitcoinInterfaceOrdinal extends bitcoin_interface_1.BitcoinInterface {
|
|
22
22
|
constructor(connectionInfo, networkName, uniSatToken) {
|
|
23
|
-
super(
|
|
23
|
+
super(networkName, connectionInfo);
|
|
24
24
|
this.unisat = new providers_1.bitcoin.UniSat({
|
|
25
25
|
token: uniSatToken,
|
|
26
26
|
}, networkName.includes("testnet"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitcoin-interface-ordinal.js","sourceRoot":"","sources":["../src/bitcoin-interface-ordinal.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gEAAoC;AACpC,sDAAoE;AACpE,2DAAsD;AAItD,yCAAqC;AACrC,wDAAiE;AAEjE,MAAa,uBAAwB,SAAQ,oCAAgB;IAE3D,
|
|
1
|
+
{"version":3,"file":"bitcoin-interface-ordinal.js","sourceRoot":"","sources":["../src/bitcoin-interface-ordinal.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { bitcoin } from "@teleportdao/providers";
|
|
2
2
|
import { UnwrapInfo, WrapOpReturnWithType } from "./helper/teleswap-helper";
|
|
3
3
|
import BitcoinInterface from "./bitcoin-interface";
|
|
4
|
-
import { Transaction } from "./type";
|
|
4
|
+
import { BitcoinNodeConnectionInfo, Transaction } from "./type";
|
|
5
5
|
export type ValidWrapRequest = {
|
|
6
6
|
transaction: bitcoin.Types.ConfirmedTransaction & {
|
|
7
7
|
address?: string;
|
|
@@ -37,6 +37,7 @@ export type UnwrapRequest = {
|
|
|
37
37
|
lockerLockingScript: string;
|
|
38
38
|
};
|
|
39
39
|
export declare class BitcoinInterfaceTeleswap extends BitcoinInterface {
|
|
40
|
+
constructor(connectionInfo: BitcoinNodeConnectionInfo, networkName: string);
|
|
40
41
|
getHexBlockHeaders(startBlockNumber: number, endBlockNumber: number): Promise<{
|
|
41
42
|
hexBlockHeaders: string;
|
|
42
43
|
fromBlockNumber: number;
|
|
@@ -47,58 +48,6 @@ export declare class BitcoinInterfaceTeleswap extends BitcoinInterface {
|
|
|
47
48
|
requests: ValidWrapRequest[];
|
|
48
49
|
invalidRequests: InValidWrapRequest[];
|
|
49
50
|
}>;
|
|
50
|
-
getMempoolWrapRequests(addresses: string[]): Promise<{
|
|
51
|
-
requests: {
|
|
52
|
-
transaction: bitcoin.Types.ConfirmedTransaction & {
|
|
53
|
-
address?: string | undefined;
|
|
54
|
-
addressScript?: string | undefined;
|
|
55
|
-
merkleProof?: {
|
|
56
|
-
intermediateNodes: string;
|
|
57
|
-
transactionIndex: number;
|
|
58
|
-
} | undefined;
|
|
59
|
-
};
|
|
60
|
-
request: {
|
|
61
|
-
status: boolean;
|
|
62
|
-
message: string;
|
|
63
|
-
code: string;
|
|
64
|
-
data?: undefined;
|
|
65
|
-
value?: undefined;
|
|
66
|
-
valueOutputIndex?: undefined;
|
|
67
|
-
requestOutputIndex?: undefined;
|
|
68
|
-
} | {
|
|
69
|
-
status: true;
|
|
70
|
-
data: WrapOpReturnWithType;
|
|
71
|
-
value: number;
|
|
72
|
-
valueOutputIndex: number;
|
|
73
|
-
requestOutputIndex: number;
|
|
74
|
-
message?: undefined;
|
|
75
|
-
code?: undefined;
|
|
76
|
-
};
|
|
77
|
-
lockerAddress: string;
|
|
78
|
-
lockerLockingScript: string;
|
|
79
|
-
}[];
|
|
80
|
-
invalidRequests: {
|
|
81
|
-
transaction: bitcoin.Types.ConfirmedTransaction & {
|
|
82
|
-
address?: string | undefined;
|
|
83
|
-
addressScript?: string | undefined;
|
|
84
|
-
merkleProof?: {
|
|
85
|
-
intermediateNodes: string;
|
|
86
|
-
transactionIndex: number;
|
|
87
|
-
} | undefined;
|
|
88
|
-
};
|
|
89
|
-
request: {
|
|
90
|
-
status: boolean;
|
|
91
|
-
message: string;
|
|
92
|
-
code: string;
|
|
93
|
-
data?: undefined;
|
|
94
|
-
value?: undefined;
|
|
95
|
-
valueOutputIndex?: undefined;
|
|
96
|
-
requestOutputIndex?: undefined;
|
|
97
|
-
};
|
|
98
|
-
lockerAddress: string;
|
|
99
|
-
lockerLockingScript: string;
|
|
100
|
-
}[];
|
|
101
|
-
}>;
|
|
102
51
|
getWrapRequestByTx(inputTransaction: {
|
|
103
52
|
txId: string;
|
|
104
53
|
} | (bitcoin.Types.ConfirmedTransaction & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitcoin-interface-teleswap.d.ts","sourceRoot":"","sources":["../src/bitcoin-interface-teleswap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAEhD,OAAO,EAGL,UAAU,EACV,oBAAoB,EACrB,MAAM,0BAA0B,CAAA;AACjC,OAAO,gBAAgB,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"bitcoin-interface-teleswap.d.ts","sourceRoot":"","sources":["../src/bitcoin-interface-teleswap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAEhD,OAAO,EAGL,UAAU,EACV,oBAAoB,EACrB,MAAM,0BAA0B,CAAA;AACjC,OAAO,gBAAgB,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAE/D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,oBAAoB,GAAG;QAChD,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,WAAW,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,CAAA;KACzC,CAAA;IACD,OAAO,EAAE;QACP,MAAM,EAAE,OAAO,CAAA;QACf,IAAI,EAAE,oBAAoB,CAAA;QAC1B,KAAK,EAAE,MAAM,CAAA;QACb,gBAAgB,EAAE,MAAM,CAAA;KACzB,CAAA;IACD,aAAa,EAAE,MAAM,CAAA;IACrB,mBAAmB,EAAE,MAAM,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,oBAAoB,GAAG;QAChD,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,WAAW,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,CAAA;KACzC,CAAA;IACD,OAAO,EAAE;QACP,MAAM,EAAE,OAAO,CAAA;QACf,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD,aAAa,EAAE,MAAM,CAAA;IACrB,mBAAmB,EAAE,MAAM,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,UAAU,GAAG,SAAS,CAAA;IAChC,aAAa,EAAE,MAAM,CAAA;IACrB,mBAAmB,EAAE,MAAM,CAAA;CAC5B,CAAA;AAED,qBAAa,wBAAyB,SAAQ,gBAAgB;gBAChD,cAAc,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM;IAOpE,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;;;;;;IAoCnE,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;;;;IA4BrF,kBAAkB,CACtB,gBAAgB,EACZ;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAChB,CAAC,OAAO,CAAC,KAAK,CAAC,oBAAoB,GAAG;QACpC,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,WAAW,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,CAAA;KACzC,CAAC,EACN,aAAa,EAAE,MAAM;;;;0BAKL,WAAW,CAAC,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;IAuBtC,4BAA4B,CAChC,SAAS,EAAE,MAAM,EAAE,EACnB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM;;;;;;IA0BlB,mCAAmC,CACvC,SAAS,EAAE,MAAM,EAAE,EACnB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM;;;;;;IA0BlB,4BAA4B,CAChC,WAAW,EAAE;QACX,IAAI,EAAE,GAAG,CAAA;QACT,IAAI,CAAC,EAAE,GAAG,CAAA;QACV,GAAG,CAAC,EAAE,GAAG,CAAA;QACT,aAAa,CAAC,EAAE,GAAG,CAAA;KACpB,EACD,aAAa,EAAE,MAAM;CAexB"}
|
|
@@ -17,6 +17,12 @@ const bitcoin_utils_1 = require("./bitcoin-utils");
|
|
|
17
17
|
const teleswap_helper_1 = require("./helper/teleswap-helper");
|
|
18
18
|
const bitcoin_interface_1 = __importDefault(require("./bitcoin-interface"));
|
|
19
19
|
class BitcoinInterfaceTeleswap extends bitcoin_interface_1.default {
|
|
20
|
+
constructor(connectionInfo, networkName) {
|
|
21
|
+
if (!connectionInfo.rpc) {
|
|
22
|
+
throw new Error("rpc provider is required");
|
|
23
|
+
}
|
|
24
|
+
super(networkName, connectionInfo);
|
|
25
|
+
}
|
|
20
26
|
getHexBlockHeaders(startBlockNumber, endBlockNumber) {
|
|
21
27
|
return __awaiter(this, void 0, void 0, function* () {
|
|
22
28
|
const blockHeaders = [];
|
|
@@ -75,23 +81,6 @@ class BitcoinInterfaceTeleswap extends bitcoin_interface_1.default {
|
|
|
75
81
|
return { requests, invalidRequests };
|
|
76
82
|
});
|
|
77
83
|
}
|
|
78
|
-
getMempoolWrapRequests(addresses) {
|
|
79
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
80
|
-
let transactions = yield this.apiProvider.getMempoolTransactionHistoryForMultipleAddresses(addresses);
|
|
81
|
-
let requests = [];
|
|
82
|
-
let invalidRequests = [];
|
|
83
|
-
for (let inputTx of transactions) {
|
|
84
|
-
let { transaction, request, lockerAddress, lockerLockingScript } = yield this.getWrapRequestByTx(inputTx, inputTx.address);
|
|
85
|
-
if (request.status) {
|
|
86
|
-
requests.push({ transaction, request, lockerAddress, lockerLockingScript });
|
|
87
|
-
}
|
|
88
|
-
else if (request.code !== "NO_OP_RETURN") {
|
|
89
|
-
invalidRequests.push({ transaction, request, lockerAddress, lockerLockingScript });
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
return { requests, invalidRequests };
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
84
|
getWrapRequestByTx(inputTransaction, lockerAddress) {
|
|
96
85
|
return __awaiter(this, void 0, void 0, function* () {
|
|
97
86
|
let transaction;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitcoin-interface-teleswap.js","sourceRoot":"","sources":["../src/bitcoin-interface-teleswap.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,mDAAkD;AAClD,8DAKiC;AACjC,4EAAkD;AAwClD,MAAa,wBAAyB,SAAQ,2BAAgB;
|
|
1
|
+
{"version":3,"file":"bitcoin-interface-teleswap.js","sourceRoot":"","sources":["../src/bitcoin-interface-teleswap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { bitcoin as bitcoinProvider } from "@teleportdao/providers";
|
|
2
|
+
import { BitcoinInterfaceUtils } from "./bitcoin-interface-utils";
|
|
3
|
+
import type { BitcoinWalletInterfaceConnectionInfo } from "./type";
|
|
4
|
+
import type { SignerInfo } from "./transaction-builder/transaction-builder";
|
|
5
|
+
export declare class BitcoinInterfaceWallet extends BitcoinInterfaceUtils {
|
|
6
|
+
utxoProvider: bitcoinProvider.Types.UtxoProvider;
|
|
7
|
+
apiProvider: bitcoinProvider.MempoolSpace;
|
|
8
|
+
constructor(networkName: string, connectionInfo?: BitcoinWalletInterfaceConnectionInfo);
|
|
9
|
+
getFeeRate(speed?: "normal" | "slow" | "fast"): Promise<number>;
|
|
10
|
+
getUtxo(address: string): Promise<bitcoinProvider.Types.Utxo[]>;
|
|
11
|
+
getRawTransaction(txId: string): Promise<string>;
|
|
12
|
+
sendRawTransaction(txHex: string): Promise<string>;
|
|
13
|
+
getExtendedUtxo(signerInfo: SignerInfo): Promise<{
|
|
14
|
+
hash: string;
|
|
15
|
+
value: number;
|
|
16
|
+
index: number;
|
|
17
|
+
signerInfo: SignerInfo;
|
|
18
|
+
}[]>;
|
|
19
|
+
getAddressesUtxo(allAddresses: string[]): Promise<bitcoinProvider.Types.Utxo[]>;
|
|
20
|
+
getAddressesExtendedUtxo(signerInfos: SignerInfo[]): Promise<{
|
|
21
|
+
hash: string;
|
|
22
|
+
value: number;
|
|
23
|
+
index: number;
|
|
24
|
+
signerInfo: SignerInfo;
|
|
25
|
+
}[]>;
|
|
26
|
+
getBalance(address: string): Promise<number>;
|
|
27
|
+
}
|
|
28
|
+
export default BitcoinInterfaceWallet;
|
|
29
|
+
//# sourceMappingURL=bitcoin-interface-wallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bitcoin-interface-wallet.d.ts","sourceRoot":"","sources":["../src/bitcoin-interface-wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,QAAQ,CAAA;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2CAA2C,CAAA;AAE3E,qBAAa,sBAAuB,SAAQ,qBAAqB;IAC/D,YAAY,EAAE,eAAe,CAAC,KAAK,CAAC,YAAY,CAAA;IAChD,WAAW,EAAE,eAAe,CAAC,YAAY,CAAA;gBAE7B,WAAW,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,oCAAoC;IAahF,UAAU,CAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM;IAI7C,OAAO,CAAC,OAAO,EAAE,MAAM;IAOvB,iBAAiB,CAAC,IAAI,EAAE,MAAM;IAO9B,kBAAkB,CAAC,KAAK,EAAE,MAAM;IAOhC,eAAe,CAAC,UAAU,EAAE,UAAU;;;;;;IAUtC,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE;IAyBvC,wBAAwB,CAAC,WAAW,EAAE,UAAU,EAAE;;;;;;IAyBlD,UAAU,CAAC,OAAO,EAAE,MAAM;CAIjC;AAED,eAAe,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,126 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.BitcoinInterfaceWallet = void 0;
|
|
13
|
+
const providers_1 = require("@teleportdao/providers");
|
|
14
|
+
const bitcoin_interface_utils_1 = require("./bitcoin-interface-utils");
|
|
15
|
+
class BitcoinInterfaceWallet extends bitcoin_interface_utils_1.BitcoinInterfaceUtils {
|
|
16
|
+
constructor(networkName, connectionInfo) {
|
|
17
|
+
var _a;
|
|
18
|
+
super(networkName);
|
|
19
|
+
if (((_a = connectionInfo === null || connectionInfo === void 0 ? void 0 : connectionInfo.api) === null || _a === void 0 ? void 0 : _a.provider) === "BlockStream") {
|
|
20
|
+
this.apiProvider = new providers_1.bitcoin.BlockStream(this.testnet);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
this.apiProvider = new providers_1.bitcoin.MempoolSpace(this.testnet);
|
|
24
|
+
}
|
|
25
|
+
this.utxoProvider = (connectionInfo === null || connectionInfo === void 0 ? void 0 : connectionInfo.utxo)
|
|
26
|
+
? providers_1.bitcoin.getUtxoProvider(connectionInfo.utxo, networkName)
|
|
27
|
+
: this.apiProvider;
|
|
28
|
+
}
|
|
29
|
+
getFeeRate(speed) {
|
|
30
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
return new providers_1.bitcoin.MempoolSpace(this.testnet).getRecommendedFeeRate(speed);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
getUtxo(address) {
|
|
35
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
if (!this.utxoProvider) {
|
|
37
|
+
throw new Error("utxo provider not set");
|
|
38
|
+
}
|
|
39
|
+
return this.utxoProvider.getUtxos(address);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
getRawTransaction(txId) {
|
|
43
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
44
|
+
if (this.utxoProvider.getRawTransaction) {
|
|
45
|
+
return this.utxoProvider.getRawTransaction(txId);
|
|
46
|
+
}
|
|
47
|
+
return this.apiProvider.getRawTransaction(txId);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
sendRawTransaction(txHex) {
|
|
51
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
if (this.utxoProvider.sendRawTransaction) {
|
|
53
|
+
return this.utxoProvider.sendRawTransaction(txHex);
|
|
54
|
+
}
|
|
55
|
+
return this.apiProvider.sendRawTransaction(txHex);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
getExtendedUtxo(signerInfo) {
|
|
59
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
60
|
+
let utxos = yield this.getUtxo(signerInfo.address);
|
|
61
|
+
return utxos.map((tx) => ({
|
|
62
|
+
hash: tx.txId,
|
|
63
|
+
value: tx.value,
|
|
64
|
+
index: tx.index,
|
|
65
|
+
signerInfo,
|
|
66
|
+
}));
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
getAddressesUtxo(allAddresses) {
|
|
70
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
+
const chunkOfAddresses = [];
|
|
72
|
+
const chunkLength = 20;
|
|
73
|
+
for (let i = 0; i < allAddresses.length; i += chunkLength) {
|
|
74
|
+
const tmp = allAddresses.slice(i, i + chunkLength);
|
|
75
|
+
chunkOfAddresses.push(tmp);
|
|
76
|
+
}
|
|
77
|
+
let results = [];
|
|
78
|
+
for (let addresses of chunkOfAddresses) {
|
|
79
|
+
const allPromises = [];
|
|
80
|
+
for (let address of addresses) {
|
|
81
|
+
let promise = yield this.getUtxo(address);
|
|
82
|
+
allPromises.push(promise);
|
|
83
|
+
}
|
|
84
|
+
let result = yield Promise.all(allPromises);
|
|
85
|
+
if (result.flat(1).length === 0) {
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
results.push(result.flat(1));
|
|
89
|
+
}
|
|
90
|
+
return results.flat(1);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
getAddressesExtendedUtxo(signerInfos) {
|
|
94
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
95
|
+
const chunkOfAddresses = [];
|
|
96
|
+
const chunkLength = 20;
|
|
97
|
+
for (let i = 0; i < signerInfos.length; i += chunkLength) {
|
|
98
|
+
const tmp = signerInfos.slice(i, i + chunkLength);
|
|
99
|
+
chunkOfAddresses.push(tmp);
|
|
100
|
+
}
|
|
101
|
+
let results = [];
|
|
102
|
+
for (let addresses of chunkOfAddresses) {
|
|
103
|
+
const allPromises = [];
|
|
104
|
+
for (let signerInfo of addresses) {
|
|
105
|
+
let promise = yield this.getExtendedUtxo(signerInfo);
|
|
106
|
+
allPromises.push(promise);
|
|
107
|
+
}
|
|
108
|
+
let result = yield Promise.all(allPromises);
|
|
109
|
+
if (result.flat(1).length === 0) {
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
results.push(result.flat(1));
|
|
113
|
+
}
|
|
114
|
+
return results.flat(1);
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
getBalance(address) {
|
|
118
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
119
|
+
let utxos = yield this.utxoProvider.getUtxos(address);
|
|
120
|
+
return utxos.reduce((a, tx) => a + Number(tx.value), 0);
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
exports.BitcoinInterfaceWallet = BitcoinInterfaceWallet;
|
|
125
|
+
exports.default = BitcoinInterfaceWallet;
|
|
126
|
+
//# sourceMappingURL=bitcoin-interface-wallet.js.map
|