@teleportdao/bitcoin 1.4.9 → 1.5.0
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/check.ts +16 -0
- package/dist/bitcoin-base.d.ts +7 -0
- package/dist/bitcoin-base.d.ts.map +1 -1
- package/dist/bitcoin-base.js +18 -0
- package/dist/bitcoin-base.js.map +1 -1
- package/dist/bitcoin-interface.d.ts +2 -2
- package/dist/bitcoin-interface.d.ts.map +1 -1
- package/dist/bitcoin-interface.js +4 -7
- package/dist/bitcoin-interface.js.map +1 -1
- package/dist/bundle.js +6 -6
- package/dist/helper/teleport-request-helper.d.ts.map +1 -1
- package/dist/helper/teleport-request-helper.js +2 -2
- package/dist/helper/teleport-request-helper.js.map +1 -1
- package/dist/teleport-dao-payments.d.ts +5 -3
- package/dist/teleport-dao-payments.d.ts.map +1 -1
- package/dist/teleport-dao-payments.js +6 -5
- package/dist/teleport-dao-payments.js.map +1 -1
- package/package.json +4 -4
- package/src/bitcoin-base.ts +24 -0
- package/src/bitcoin-interface.ts +14 -7
- package/src/helper/teleport-request-helper.js +5 -3
- package/src/teleport-dao-payments.ts +8 -2
- package/src/mempool-space.ts +0 -255
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teleport-request-helper.d.ts","sourceRoot":"","sources":["../../src/helper/teleport-request-helper.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"teleport-request-helper.d.ts","sourceRoot":"","sources":["../../src/helper/teleport-request-helper.js"],"names":[],"mappings":"AAyJA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuBC"}
|
|
@@ -64,7 +64,6 @@ function parseLendAndBorrowRequest(data) {
|
|
|
64
64
|
};
|
|
65
65
|
}
|
|
66
66
|
function parseRawRequest(opReturnData) {
|
|
67
|
-
var _a;
|
|
68
67
|
let data = opReturnData.slice(2, 4) === "4c" ? opReturnData.slice(6) : opReturnData.slice(4);
|
|
69
68
|
let _chainId = Number(`0x${data.slice(0, 2)}`);
|
|
70
69
|
let appIdHex = data.slice(2, 6);
|
|
@@ -76,7 +75,8 @@ function parseRawRequest(opReturnData) {
|
|
|
76
75
|
};
|
|
77
76
|
}
|
|
78
77
|
let appId = Number(`0x${appIdHex}`);
|
|
79
|
-
let requestType = (
|
|
78
|
+
let requestType = Object.keys(teleportRequestsType).find((key) => appId >= teleportRequestsType[key].appIdRange[0] &&
|
|
79
|
+
appId <= teleportRequestsType[key].appIdRange[1]);
|
|
80
80
|
switch (requestType) {
|
|
81
81
|
case "transfer":
|
|
82
82
|
case "exchange":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teleport-request-helper.js","sourceRoot":"","sources":["../../src/helper/teleport-request-helper.js"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"teleport-request-helper.js","sourceRoot":"","sources":["../../src/helper/teleport-request-helper.js"],"names":[],"mappings":"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"}
|
|
@@ -16,12 +16,13 @@ export type TransferRequest = {
|
|
|
16
16
|
deadline?: number;
|
|
17
17
|
isFixedToken?: boolean;
|
|
18
18
|
feeSpeed?: "normal" | "fast" | "slow";
|
|
19
|
+
staticFeeRate?: number;
|
|
19
20
|
};
|
|
20
21
|
export declare class TeleportDaoPayment extends BitcoinBase {
|
|
21
22
|
payBurnRequest(receivers: Target[], feeSpeed?: "normal" | "fast" | "slow"): Promise<string>;
|
|
22
|
-
transferBitcoinToEth({ lockerAddress, amount, fullAmount, chainId, appId, recipientAddress, percentageFee, speed, isExchange, exchangeTokenAddress, outputAmount, deadline, isFixedToken, feeSpeed, }: TransferRequest): Promise<string>;
|
|
23
|
+
transferBitcoinToEth({ lockerAddress, amount, fullAmount, chainId, appId, recipientAddress, percentageFee, speed, isExchange, exchangeTokenAddress, outputAmount, deadline, isFixedToken, feeSpeed, staticFeeRate, }: TransferRequest): Promise<string>;
|
|
23
24
|
getBitcoinToEthTargetOutputs({ lockerAddress, amount, fullAmount, chainId, appId, recipientAddress, percentageFee, speed, isExchange, exchangeTokenAddress, outputAmount, deadline, isFixedToken, }: TransferRequest): Promise<Target[]>;
|
|
24
|
-
getBitcoinToEthUnsignedPsbt({ changeAddress, extendedUtxo, lockerAddress, amount, fullAmount, chainId, appId, recipientAddress, percentageFee, speed, isExchange, exchangeTokenAddress, outputAmount, deadline, isFixedToken, feeSpeed, }: TransferRequest & {
|
|
25
|
+
getBitcoinToEthUnsignedPsbt({ changeAddress, extendedUtxo, lockerAddress, amount, fullAmount, chainId, appId, recipientAddress, percentageFee, speed, isExchange, exchangeTokenAddress, outputAmount, deadline, isFixedToken, feeSpeed, staticFeeRate, }: TransferRequest & {
|
|
25
26
|
extendedUtxo: ExtendedUtxo[];
|
|
26
27
|
}): Promise<{
|
|
27
28
|
unsignedTransaction: string;
|
|
@@ -35,13 +36,14 @@ export declare class TeleportDaoPayment extends BitcoinBase {
|
|
|
35
36
|
fee: number;
|
|
36
37
|
change: import("./transaction-builder/transaction-builder").ChangeTarget | undefined;
|
|
37
38
|
}>;
|
|
38
|
-
bitcoinToEthLend({ lockerAddress, amount, chainId, appId, recipientAddress, percentageFee, mode, isBorrow, tokenAddress, borrowAmount, }: {
|
|
39
|
+
bitcoinToEthLend({ lockerAddress, amount, chainId, appId, recipientAddress, percentageFee, mode, isBorrow, tokenAddress, borrowAmount, staticFeeRate, }: {
|
|
39
40
|
lockerAddress: string;
|
|
40
41
|
amount: number;
|
|
41
42
|
chainId: number;
|
|
42
43
|
appId: number;
|
|
43
44
|
recipientAddress: string;
|
|
44
45
|
percentageFee: number;
|
|
46
|
+
staticFeeRate: number;
|
|
45
47
|
mode?: 0 | 1 | boolean;
|
|
46
48
|
isBorrow?: boolean;
|
|
47
49
|
tokenAddress?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teleport-dao-payments.d.ts","sourceRoot":"","sources":["../src/teleport-dao-payments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAA;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,MAAM,MAAM,eAAe,GAAG;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,OAAO,CAAA;IAEpB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,gBAAgB,EAAE,MAAM,CAAA;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACxB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"teleport-dao-payments.d.ts","sourceRoot":"","sources":["../src/teleport-dao-payments.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,7 +36,7 @@ class TeleportDaoPayment extends bitcoin_base_1.BitcoinBase {
|
|
|
36
36
|
return txId;
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
|
-
transferBitcoinToEth({ lockerAddress, amount, fullAmount = false, chainId, appId, recipientAddress, percentageFee, speed = 0, isExchange = false, exchangeTokenAddress = "0x0000000000000000000000000000000000000000", outputAmount = 0, deadline, isFixedToken = false, feeSpeed = "normal", }) {
|
|
39
|
+
transferBitcoinToEth({ lockerAddress, amount, fullAmount = false, chainId, appId, recipientAddress, percentageFee, speed = 0, isExchange = false, exchangeTokenAddress = "0x0000000000000000000000000000000000000000", outputAmount = 0, deadline, isFixedToken = false, feeSpeed = "normal", staticFeeRate, }) {
|
|
40
40
|
return __awaiter(this, void 0, void 0, function* () {
|
|
41
41
|
if (!this.currentAccount || !this.currentAccountType || !this.publicKey || !this.privateKey) {
|
|
42
42
|
throw new Error("account not initialized");
|
|
@@ -63,6 +63,7 @@ class TeleportDaoPayment extends bitcoin_base_1.BitcoinBase {
|
|
|
63
63
|
deadline,
|
|
64
64
|
isFixedToken,
|
|
65
65
|
feeSpeed,
|
|
66
|
+
staticFeeRate,
|
|
66
67
|
});
|
|
67
68
|
let signedPsbt = yield this.signer.signPsbt(unsignedTx, this.privateKey);
|
|
68
69
|
let txId = yield this.sendSignedPsbt(signedPsbt);
|
|
@@ -95,9 +96,9 @@ class TeleportDaoPayment extends bitcoin_base_1.BitcoinBase {
|
|
|
95
96
|
];
|
|
96
97
|
});
|
|
97
98
|
}
|
|
98
|
-
getBitcoinToEthUnsignedPsbt({ changeAddress, extendedUtxo, lockerAddress, amount, fullAmount = false, chainId, appId, recipientAddress, percentageFee, speed = 0, isExchange = false, exchangeTokenAddress = "0x0000000000000000000000000000000000000000", outputAmount = 0, deadline = 0, isFixedToken = false, feeSpeed = "normal", }) {
|
|
99
|
+
getBitcoinToEthUnsignedPsbt({ changeAddress, extendedUtxo, lockerAddress, amount, fullAmount = false, chainId, appId, recipientAddress, percentageFee, speed = 0, isExchange = false, exchangeTokenAddress = "0x0000000000000000000000000000000000000000", outputAmount = 0, deadline = 0, isFixedToken = false, feeSpeed = "normal", staticFeeRate, }) {
|
|
99
100
|
return __awaiter(this, void 0, void 0, function* () {
|
|
100
|
-
let feeRate = yield this.transactionBuilder._getFeeRate(feeSpeed);
|
|
101
|
+
let feeRate = staticFeeRate || (yield this.transactionBuilder._getFeeRate(feeSpeed));
|
|
101
102
|
let targets = yield this.getBitcoinToEthTargetOutputs({
|
|
102
103
|
lockerAddress,
|
|
103
104
|
amount,
|
|
@@ -123,7 +124,7 @@ class TeleportDaoPayment extends bitcoin_base_1.BitcoinBase {
|
|
|
123
124
|
return unsignedTx;
|
|
124
125
|
});
|
|
125
126
|
}
|
|
126
|
-
bitcoinToEthLend({ lockerAddress, amount, chainId, appId, recipientAddress, percentageFee, mode = 0, isBorrow = false, tokenAddress = "0x0000000000000000000000000000000000000000", borrowAmount = 0, }) {
|
|
127
|
+
bitcoinToEthLend({ lockerAddress, amount, chainId, appId, recipientAddress, percentageFee, mode = 0, isBorrow = false, tokenAddress = "0x0000000000000000000000000000000000000000", borrowAmount = 0, staticFeeRate, }) {
|
|
127
128
|
return __awaiter(this, void 0, void 0, function* () {
|
|
128
129
|
if (!this.currentAccount || !this.currentAccountType || !this.publicKey || !this.privateKey) {
|
|
129
130
|
throw new Error("account not initialized");
|
|
@@ -154,7 +155,7 @@ class TeleportDaoPayment extends bitcoin_base_1.BitcoinBase {
|
|
|
154
155
|
opTarget,
|
|
155
156
|
],
|
|
156
157
|
changeAddress: this.currentAccount,
|
|
157
|
-
feeRate:
|
|
158
|
+
feeRate: staticFeeRate,
|
|
158
159
|
fullAmount: false,
|
|
159
160
|
});
|
|
160
161
|
let signedPsbt = yield this.signer.signPsbt(unsignedTx, this.privateKey);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teleport-dao-payments.js","sourceRoot":"","sources":["../src/teleport-dao-payments.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,iDAA4C;
|
|
1
|
+
{"version":3,"file":"teleport-dao-payments.js","sourceRoot":"","sources":["../src/teleport-dao-payments.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teleportdao/bitcoin",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "teleswap bitcoin package",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"browser": "dist/bundle.js",
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
"license": "ISC",
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@bitcoinerlab/secp256k1": "^1.0.5",
|
|
18
|
-
"@teleportdao/configs": "^1.
|
|
19
|
-
"@teleportdao/providers": "^1.
|
|
18
|
+
"@teleportdao/configs": "^1.5.0",
|
|
19
|
+
"@teleportdao/providers": "^1.5.0",
|
|
20
20
|
"axios": "^0.27.2",
|
|
21
21
|
"bignumber.js": "^9.1.1",
|
|
22
22
|
"bip32": "^4.0.0",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"publishConfig": {
|
|
35
35
|
"access": "public"
|
|
36
36
|
},
|
|
37
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "09d752308413f871b806cf95c825a443caa70c7a",
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@babel/preset-react": "^7.23.3"
|
|
40
40
|
}
|
package/src/bitcoin-base.ts
CHANGED
|
@@ -26,6 +26,7 @@ class BitcoinBase {
|
|
|
26
26
|
p2sh: string
|
|
27
27
|
p2wsh: string
|
|
28
28
|
"p2sh-p2wsh": string
|
|
29
|
+
p2tr: string
|
|
29
30
|
}
|
|
30
31
|
transactionBuilder: TransactionBuilder
|
|
31
32
|
btcInterface: BitcoinInterface
|
|
@@ -63,6 +64,16 @@ class BitcoinBase {
|
|
|
63
64
|
this.publicKeys = []
|
|
64
65
|
}
|
|
65
66
|
|
|
67
|
+
get signerInfo() {
|
|
68
|
+
return this.privateKey
|
|
69
|
+
? {
|
|
70
|
+
address: this.bitcoinAddress!,
|
|
71
|
+
publicKey: this.publicKey!.toString("hex"),
|
|
72
|
+
addressType: this.currentAccountType!,
|
|
73
|
+
}
|
|
74
|
+
: undefined
|
|
75
|
+
}
|
|
76
|
+
|
|
66
77
|
static createTransactionInputsAndOutputs({
|
|
67
78
|
targets,
|
|
68
79
|
extendedUtxo,
|
|
@@ -247,5 +258,18 @@ class BitcoinBase {
|
|
|
247
258
|
let txId = await this.transactionBuilder.sendTx(signedTx)
|
|
248
259
|
return txId
|
|
249
260
|
}
|
|
261
|
+
|
|
262
|
+
async increaseTransactionFee(
|
|
263
|
+
txId: string,
|
|
264
|
+
signerInfo: SignerInfo,
|
|
265
|
+
extraExtendedUtxo: ExtendedUtxo[],
|
|
266
|
+
) {
|
|
267
|
+
let transaction = await this.btcInterface.getTransaction(txId)
|
|
268
|
+
console.log(transaction)
|
|
269
|
+
if (transaction?.blockNumber > 0) {
|
|
270
|
+
return
|
|
271
|
+
}
|
|
272
|
+
// this.transactionBuilder.processUnsignedTransaction()
|
|
273
|
+
}
|
|
250
274
|
}
|
|
251
275
|
export { BitcoinBase }
|
package/src/bitcoin-interface.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { bitcoin as bitcoinProvider } from "@teleportdao/providers"
|
|
2
|
-
import { runWithRetries
|
|
2
|
+
import { runWithRetries } from "./utils/tools"
|
|
3
3
|
import {
|
|
4
4
|
parseRawTransaction,
|
|
5
5
|
calculateMerkleProof,
|
|
@@ -11,7 +11,6 @@ import { getBurnTransactionInfo } from "./helper/burn-request-helper"
|
|
|
11
11
|
import { BitcoinInterfaceUtils } from "./bitcoin-interface-utils"
|
|
12
12
|
import type { BitcoinConnectionInfo } from "./transaction-builder/bitcoin-transaction-builder"
|
|
13
13
|
import type { SignerInfo } from "./transaction-builder/transaction-builder"
|
|
14
|
-
import ms from "./mempool-space"
|
|
15
14
|
|
|
16
15
|
export class BitcoinInterface extends BitcoinInterfaceUtils {
|
|
17
16
|
rpcProvider?: bitcoinProvider.RPC
|
|
@@ -19,7 +18,10 @@ export class BitcoinInterface extends BitcoinInterfaceUtils {
|
|
|
19
18
|
// todo : add provider type
|
|
20
19
|
minTeleporterFeeAmount: number
|
|
21
20
|
provider: any
|
|
22
|
-
apiProvider!:
|
|
21
|
+
apiProvider!:
|
|
22
|
+
| bitcoinProvider.ApiProviders.BlockStream
|
|
23
|
+
| bitcoinProvider.ApiProviders.NowNodes
|
|
24
|
+
| bitcoinProvider.ApiProviders.MempoolSpace
|
|
23
25
|
constructor(
|
|
24
26
|
connectionInfo: BitcoinConnectionInfo,
|
|
25
27
|
networkName: string,
|
|
@@ -28,8 +30,13 @@ export class BitcoinInterface extends BitcoinInterfaceUtils {
|
|
|
28
30
|
super(networkName)
|
|
29
31
|
if (connectionInfo.rpc?.enabled) {
|
|
30
32
|
this.rpcProvider = bitcoinProvider.getRpcProvider(connectionInfo.rpc)
|
|
31
|
-
} else if (
|
|
32
|
-
|
|
33
|
+
} else if (
|
|
34
|
+
connectionInfo.api.provider !== "BlockStream" &&
|
|
35
|
+
connectionInfo.api.provider !== "MempoolSpace"
|
|
36
|
+
) {
|
|
37
|
+
throw new Error(
|
|
38
|
+
"if rpc is disabled, we just support BlockStream Or MempoolSpace as api provider",
|
|
39
|
+
)
|
|
33
40
|
}
|
|
34
41
|
|
|
35
42
|
if (connectionInfo.api.enabled) {
|
|
@@ -65,7 +72,7 @@ export class BitcoinInterface extends BitcoinInterfaceUtils {
|
|
|
65
72
|
|
|
66
73
|
// speed : low normal fast
|
|
67
74
|
async getFeeRate(speed?: "normal" | "slow" | "fast") {
|
|
68
|
-
return new
|
|
75
|
+
return new bitcoinProvider.ApiProviders.MempoolSpace(this.testnet).getRecommendedFeeRate(speed)
|
|
69
76
|
}
|
|
70
77
|
|
|
71
78
|
// ----------- specific
|
|
@@ -280,7 +287,7 @@ export class BitcoinInterface extends BitcoinInterfaceUtils {
|
|
|
280
287
|
async getTransactionHistory(
|
|
281
288
|
addresses: string[],
|
|
282
289
|
startBlockNumber: number,
|
|
283
|
-
endBlockNumber
|
|
290
|
+
endBlockNumber?: number,
|
|
284
291
|
) {
|
|
285
292
|
if (this.rpcProvider) {
|
|
286
293
|
let endBlock = endBlockNumber || (await this.getLatestBlockNumber())
|
|
@@ -86,9 +86,11 @@ function parseRawRequest(opReturnData) {
|
|
|
86
86
|
let appId = Number(`0x${appIdHex}`) // 2 bytes
|
|
87
87
|
|
|
88
88
|
// get type base on appId
|
|
89
|
-
let requestType = teleportRequestsType.find(
|
|
90
|
-
(
|
|
91
|
-
|
|
89
|
+
let requestType = Object.keys(teleportRequestsType).find(
|
|
90
|
+
(key) =>
|
|
91
|
+
appId >= teleportRequestsType[key].appIdRange[0] &&
|
|
92
|
+
appId <= teleportRequestsType[key].appIdRange[1],
|
|
93
|
+
)
|
|
92
94
|
|
|
93
95
|
switch (requestType) {
|
|
94
96
|
case "transfer":
|
|
@@ -18,6 +18,7 @@ export type TransferRequest = {
|
|
|
18
18
|
deadline?: number // 4 bytes
|
|
19
19
|
isFixedToken?: boolean // 1 byte
|
|
20
20
|
feeSpeed?: "normal" | "fast" | "slow"
|
|
21
|
+
staticFeeRate?: number
|
|
21
22
|
}
|
|
22
23
|
export class TeleportDaoPayment extends BitcoinBase {
|
|
23
24
|
// payment
|
|
@@ -62,6 +63,7 @@ export class TeleportDaoPayment extends BitcoinBase {
|
|
|
62
63
|
deadline, // 4 bytes
|
|
63
64
|
isFixedToken = false, // 1 byte
|
|
64
65
|
feeSpeed = "normal",
|
|
66
|
+
staticFeeRate,
|
|
65
67
|
}: TransferRequest) {
|
|
66
68
|
if (!this.currentAccount || !this.currentAccountType || !this.publicKey || !this.privateKey) {
|
|
67
69
|
throw new Error("account not initialized")
|
|
@@ -89,6 +91,7 @@ export class TeleportDaoPayment extends BitcoinBase {
|
|
|
89
91
|
deadline,
|
|
90
92
|
isFixedToken,
|
|
91
93
|
feeSpeed,
|
|
94
|
+
staticFeeRate,
|
|
92
95
|
})
|
|
93
96
|
let signedPsbt = await this.signer.signPsbt(unsignedTx, this.privateKey)
|
|
94
97
|
let txId = await this.sendSignedPsbt(signedPsbt)
|
|
@@ -154,10 +157,11 @@ export class TeleportDaoPayment extends BitcoinBase {
|
|
|
154
157
|
deadline = 0, // 4 bytes
|
|
155
158
|
isFixedToken = false, // 1 byte
|
|
156
159
|
feeSpeed = "normal",
|
|
160
|
+
staticFeeRate,
|
|
157
161
|
}: TransferRequest & {
|
|
158
162
|
extendedUtxo: ExtendedUtxo[]
|
|
159
163
|
}) {
|
|
160
|
-
let feeRate = await this.transactionBuilder._getFeeRate(feeSpeed)
|
|
164
|
+
let feeRate = staticFeeRate || (await this.transactionBuilder._getFeeRate(feeSpeed))
|
|
161
165
|
let targets = await this.getBitcoinToEthTargetOutputs({
|
|
162
166
|
lockerAddress,
|
|
163
167
|
amount,
|
|
@@ -196,6 +200,7 @@ export class TeleportDaoPayment extends BitcoinBase {
|
|
|
196
200
|
isBorrow = false,
|
|
197
201
|
tokenAddress = "0x0000000000000000000000000000000000000000", // 20 bytes
|
|
198
202
|
borrowAmount = 0, // 28 bytes
|
|
203
|
+
staticFeeRate,
|
|
199
204
|
}: {
|
|
200
205
|
lockerAddress: string
|
|
201
206
|
amount: number
|
|
@@ -203,6 +208,7 @@ export class TeleportDaoPayment extends BitcoinBase {
|
|
|
203
208
|
appId: number
|
|
204
209
|
recipientAddress: string // 20 bytes
|
|
205
210
|
percentageFee: number // 2 bytes in satoshi
|
|
211
|
+
staticFeeRate: number
|
|
206
212
|
mode?: 0 | 1 | boolean // 1 byte
|
|
207
213
|
isBorrow?: boolean
|
|
208
214
|
tokenAddress?: string // 20 bytes
|
|
@@ -239,7 +245,7 @@ export class TeleportDaoPayment extends BitcoinBase {
|
|
|
239
245
|
opTarget,
|
|
240
246
|
],
|
|
241
247
|
changeAddress: this.currentAccount,
|
|
242
|
-
feeRate:
|
|
248
|
+
feeRate: staticFeeRate,
|
|
243
249
|
fullAmount: false,
|
|
244
250
|
})
|
|
245
251
|
let signedPsbt = await this.signer.signPsbt(unsignedTx, this.privateKey)
|
package/src/mempool-space.ts
DELETED
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
import { AxiosInstance } from "axios"
|
|
2
|
-
import { getAxiosInstance } from "./utils/tools"
|
|
3
|
-
|
|
4
|
-
class BlockStream {
|
|
5
|
-
api: AxiosInstance
|
|
6
|
-
constructor(
|
|
7
|
-
testnet = false,
|
|
8
|
-
// not used yet
|
|
9
|
-
_config?: {
|
|
10
|
-
token?: string
|
|
11
|
-
},
|
|
12
|
-
) {
|
|
13
|
-
const baseUrl = testnet
|
|
14
|
-
? "https://mempool.space/testnet/api/v1"
|
|
15
|
-
: "https://mempool.space/api/v1"
|
|
16
|
-
this.api = getAxiosInstance({
|
|
17
|
-
baseUrl,
|
|
18
|
-
} as any)
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
async getOutspend(txId: string, index: number) {
|
|
22
|
-
let response = await this.api.get(`/tx/${txId}/outspend/${index}`)
|
|
23
|
-
return response.data
|
|
24
|
-
}
|
|
25
|
-
async getOutspends(txId: string) {
|
|
26
|
-
let response = await this.api.get(`/tx/${txId}/outspends`)
|
|
27
|
-
return response.data
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
async getLatestBlockNumber() {
|
|
31
|
-
const result = await this.api.get(`/blocks/tip/height`)
|
|
32
|
-
return result.data
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
async getBlockHash(blockNumber: number) {
|
|
36
|
-
const result = await this.api.get(`/block-height/${blockNumber}`)
|
|
37
|
-
return result.data
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
async getBlockHeaderHex(blockNumber: number) {
|
|
41
|
-
const hash = await this.getBlockHash(blockNumber)
|
|
42
|
-
const result = await this.api.get(`/block/${hash}/header`)
|
|
43
|
-
return result.data
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// --------------
|
|
47
|
-
|
|
48
|
-
async getConfirmedTransactions(userAddress: string, lastReceivedTxId = "") {
|
|
49
|
-
const result = await this.api.get(`/address/${userAddress}/txs/chain/${lastReceivedTxId}`)
|
|
50
|
-
return result.data
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
async getMempoolTransactions(userAddress: string) {
|
|
54
|
-
const result = await this.api.get(`/address/${userAddress}/txs/mempool`)
|
|
55
|
-
return result.data
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
async getTransaction(txId: string) {
|
|
59
|
-
const result = await this.api.get(`/tx/${txId}`)
|
|
60
|
-
let tx = result.data
|
|
61
|
-
return {
|
|
62
|
-
txId: tx.txid,
|
|
63
|
-
version: tx.version,
|
|
64
|
-
locktime: tx.locktime,
|
|
65
|
-
blockTime: tx.status.block_time,
|
|
66
|
-
blockNumber: tx.status.block_height || null,
|
|
67
|
-
blockHash: tx.status.block_hash || null,
|
|
68
|
-
vout: tx.vout.map((vo: any) => ({
|
|
69
|
-
address: vo.scriptpubkey_address || null,
|
|
70
|
-
script: vo.scriptpubkey,
|
|
71
|
-
value: vo.value,
|
|
72
|
-
})),
|
|
73
|
-
vin: tx.vin.map((vi: any) => ({
|
|
74
|
-
txId: vi.txid,
|
|
75
|
-
index: vi.vout,
|
|
76
|
-
address: vi.prevout.scriptpubkey_address || null,
|
|
77
|
-
script: vi.prevout.scriptpubkey,
|
|
78
|
-
value: vi.prevout.value,
|
|
79
|
-
})),
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
async getRawTransaction(txId: string) {
|
|
84
|
-
const result = await this.api.get(`/tx/${txId}/hex`)
|
|
85
|
-
return result.data
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
async getTransactionHistory(userAddress: string, blockNumber = 0, lastSeenTxId = undefined) {
|
|
89
|
-
let maximumTxsLength = 15
|
|
90
|
-
// get transactions from lastSeenTxId to the end
|
|
91
|
-
let fetchTxs = true
|
|
92
|
-
let allResults = []
|
|
93
|
-
let lastReceivedTxId = ""
|
|
94
|
-
while (fetchTxs) {
|
|
95
|
-
let result = await this.getConfirmedTransactions(userAddress, lastReceivedTxId)
|
|
96
|
-
let lastSeenTxIdIndex = result.findIndex((tx: any) => tx.txid === lastSeenTxId)
|
|
97
|
-
result = result.filter((_value: any) => +_value.status.block_height > blockNumber)
|
|
98
|
-
result =
|
|
99
|
-
lastSeenTxIdIndex < 0
|
|
100
|
-
? result
|
|
101
|
-
: result.filter((_value: any, index: number) => index < lastSeenTxIdIndex)
|
|
102
|
-
allResults.push(...result)
|
|
103
|
-
lastReceivedTxId = result[result.length - 1]?.txid
|
|
104
|
-
fetchTxs = result.length === maximumTxsLength && lastSeenTxIdIndex < 0 && result.length !== 0
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
return allResults.map((tx) => ({
|
|
108
|
-
address: userAddress,
|
|
109
|
-
txId: tx.txid,
|
|
110
|
-
version: tx.version,
|
|
111
|
-
locktime: tx.locktime,
|
|
112
|
-
blockNumber: tx.status.block_height || null,
|
|
113
|
-
blockHash: tx.status.block_hash || null,
|
|
114
|
-
blockTime: tx.status.block_time || null,
|
|
115
|
-
vout: tx.vout.map((vo: any) => ({
|
|
116
|
-
address: vo.scriptpubkey_address || null,
|
|
117
|
-
script: vo.scriptpubkey,
|
|
118
|
-
value: vo.value,
|
|
119
|
-
})),
|
|
120
|
-
vin: tx.vin.map((vi: any) => ({
|
|
121
|
-
txId: vi.txid,
|
|
122
|
-
index: vi.vout,
|
|
123
|
-
address: vi.prevout.scriptpubkey_address || null,
|
|
124
|
-
script: vi.prevout.scriptpubkey,
|
|
125
|
-
value: vi.prevout.value,
|
|
126
|
-
})),
|
|
127
|
-
}))
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
async getMempoolTransactionHistory(userAddress: string) {
|
|
131
|
-
let result = await this.getMempoolTransactions(userAddress)
|
|
132
|
-
return result.map((tx: any) => ({
|
|
133
|
-
address: userAddress,
|
|
134
|
-
txId: tx.txid,
|
|
135
|
-
version: tx.version,
|
|
136
|
-
locktime: tx.locktime,
|
|
137
|
-
vout: tx.vout.map((vo: any) => ({
|
|
138
|
-
address: vo.scriptpubkey_address || null,
|
|
139
|
-
script: vo.scriptpubkey,
|
|
140
|
-
value: vo.value,
|
|
141
|
-
})),
|
|
142
|
-
vin: tx.vin.map((vi: any) => ({
|
|
143
|
-
txId: vi.txid,
|
|
144
|
-
index: vi.vout,
|
|
145
|
-
address: vi.prevout.scriptpubkey_address || null,
|
|
146
|
-
script: vi.prevout.scriptpubkey,
|
|
147
|
-
value: vi.prevout.value,
|
|
148
|
-
})),
|
|
149
|
-
}))
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
async getMempoolTransactionHistoryForMultipleAddresses(addresses: string[], blockNumber = 0) {
|
|
153
|
-
const allPromises = []
|
|
154
|
-
for (let address of addresses) {
|
|
155
|
-
let promise = await this.getMempoolTransactionHistory(address)
|
|
156
|
-
allPromises.push(promise)
|
|
157
|
-
}
|
|
158
|
-
let result = await Promise.all(allPromises)
|
|
159
|
-
return result
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
async getTransactionHistoryForMultipleAddresses(userAddresses: string[], blockNumber = 0) {
|
|
163
|
-
const allPromises = []
|
|
164
|
-
for (let address of userAddresses) {
|
|
165
|
-
let promise = await this.getTransactionHistory(address, blockNumber)
|
|
166
|
-
allPromises.push(promise)
|
|
167
|
-
}
|
|
168
|
-
let result = await Promise.all(allPromises)
|
|
169
|
-
return result
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
async getUtxos(userAddress: string): Promise<
|
|
173
|
-
{
|
|
174
|
-
address: string
|
|
175
|
-
txId: string
|
|
176
|
-
index: number
|
|
177
|
-
value: number
|
|
178
|
-
blockNumber?: number
|
|
179
|
-
}[]
|
|
180
|
-
> {
|
|
181
|
-
const result = await this.api.get(`/address/${userAddress}/utxo`)
|
|
182
|
-
return result.data.map((tx: any) => ({
|
|
183
|
-
address: userAddress,
|
|
184
|
-
txId: tx.txid,
|
|
185
|
-
index: tx.vout,
|
|
186
|
-
value: tx.value,
|
|
187
|
-
blockNumber: tx.status?.block_height || undefined,
|
|
188
|
-
}))
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
async getBalance(address: string) {
|
|
192
|
-
let utxos = await this.getUtxos(address)
|
|
193
|
-
return utxos.reduce((a: any, tx: any) => a + Number(tx.value), 0)
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
async getBlockTransactionIds(blockHash: string) {
|
|
197
|
-
let result = await this.api.get(`/block/${blockHash}/txids`)
|
|
198
|
-
return result.data
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
async getFeeRate(speed: "normal" | "slow" | "fast" = "normal") {
|
|
202
|
-
let result = await this.api.get(`/fee-estimates`)
|
|
203
|
-
let fees = {
|
|
204
|
-
slow: +result.data[10],
|
|
205
|
-
normal: +result.data[6],
|
|
206
|
-
fast: +result.data[3],
|
|
207
|
-
}
|
|
208
|
-
return fees[speed] || fees.normal
|
|
209
|
-
}
|
|
210
|
-
async getRecommendedFeeRate(speed: "normal" | "slow" | "fast" = "normal") {
|
|
211
|
-
let result = await this.api.get(`/fees/recommended`)
|
|
212
|
-
|
|
213
|
-
let fees = {
|
|
214
|
-
slow: +result.data.economyFee,
|
|
215
|
-
normal: +result.data.halfHourFee,
|
|
216
|
-
fast: +result.data.fastestFee,
|
|
217
|
-
}
|
|
218
|
-
return fees[speed] || fees.normal
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
async sendRawTransaction(rawTransaction: string) {
|
|
222
|
-
const result = await this.api.post(`/tx`, rawTransaction)
|
|
223
|
-
return result.data
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
// not used
|
|
227
|
-
|
|
228
|
-
async getMerkleProof(txId: string) {
|
|
229
|
-
let result = (await this.api.get(`/tx/${txId}/merkle-proof`)).data
|
|
230
|
-
let intermediateNodes = result.merkle.reduce(
|
|
231
|
-
(a: any, merkle: any) => a + Buffer.from(merkle, "hex").reverse().toString("hex"),
|
|
232
|
-
"0x",
|
|
233
|
-
)
|
|
234
|
-
let transactionIndex = result.pos
|
|
235
|
-
return {
|
|
236
|
-
intermediateNodes,
|
|
237
|
-
transactionIndex,
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
async getLatestBlock() {
|
|
242
|
-
const result = await this.api.get(`/blocks`)
|
|
243
|
-
// 10 newest blocks
|
|
244
|
-
const blocks = result.data
|
|
245
|
-
return blocks[0]
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
async getBlock(blockNumber: number) {
|
|
249
|
-
const blockHash = await this.getBlockHash(blockNumber)
|
|
250
|
-
const result = await this.api.get(`/block/${blockHash}`)
|
|
251
|
-
return result.data
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
export default BlockStream
|