@teleportdao/bitcoin 1.7.20 → 1.7.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/.tmp/rbf.ts +24 -27
  2. package/dist/helper/teleswap-helper.js +1 -1
  3. package/dist/helper/teleswap-helper.js.map +1 -1
  4. package/package.json +3 -3
  5. package/src/bitcoin-interface-ordinal.ts +181 -181
  6. package/src/bitcoin-interface-teleswap.ts +252 -252
  7. package/src/bitcoin-interface-utils.ts +60 -60
  8. package/src/bitcoin-interface.ts +241 -241
  9. package/src/bitcoin-utils.ts +591 -591
  10. package/src/bitcoin-wallet-base.ts +310 -310
  11. package/src/helper/brc20-helper.ts +181 -181
  12. package/src/helper/ordinal-helper.ts +118 -118
  13. package/src/helper/teleswap-helper.ts +1 -1
  14. package/src/index.ts +15 -15
  15. package/src/ordinal-wallet.ts +738 -738
  16. package/src/sign/index.ts +1 -1
  17. package/src/sign/sign-transaction.ts +108 -108
  18. package/src/teleswap-wallet.ts +155 -155
  19. package/src/transaction-builder/bitcoin-transaction-builder.ts +44 -44
  20. package/src/transaction-builder/index.ts +3 -3
  21. package/src/transaction-builder/ordinal-transaction-builder.ts +147 -147
  22. package/src/transaction-builder/transaction-builder.ts +706 -706
  23. package/src/type.ts +48 -48
  24. package/src/utils/networks.ts +33 -33
  25. package/src/utils/tools.ts +90 -90
  26. package/tsconfig.json +9 -9
  27. package/webpack.config.js +16 -16
  28. package/dist/bitcoin-base.d.ts +0 -93
  29. package/dist/bitcoin-base.d.ts.map +0 -1
  30. package/dist/bitcoin-base.js +0 -236
  31. package/dist/bitcoin-base.js.map +0 -1
  32. package/dist/helper/burn-request-helper.d.ts +0 -7
  33. package/dist/helper/burn-request-helper.d.ts.map +0 -1
  34. package/dist/helper/burn-request-helper.js +0 -26
  35. package/dist/helper/burn-request-helper.js.map +0 -1
  36. package/dist/helper/teleport-request-helper.d.ts +0 -47
  37. package/dist/helper/teleport-request-helper.d.ts.map +0 -1
  38. package/dist/helper/teleport-request-helper.js +0 -146
  39. package/dist/helper/teleport-request-helper.js.map +0 -1
  40. package/dist/teleport-dao-payments.d.ts +0 -76
  41. package/dist/teleport-dao-payments.d.ts.map +0 -1
  42. package/dist/teleport-dao-payments.js +0 -217
  43. package/dist/teleport-dao-payments.js.map +0 -1
package/.tmp/rbf.ts CHANGED
@@ -1,45 +1,42 @@
1
+ import blockchainConfig from "@teleportdao/teleswap-nodes/src/config/blockchain.config"
2
+ import getAndDecryptAccount from "@teleportdao/teleswap-nodes/src/config/account"
1
3
  import { sleep } from "../dist/utils/tools"
2
- import { BitcoinBase, TeleportDaoPayment, TransferRequest } from "@teleportdao/bitcoin"
4
+ import { BitcoinBaseWallet } from "@teleportdao/bitcoin"
3
5
  import { parseRawTransaction } from "../dist/bitcoin-utils"
6
+
4
7
  require("dotenv").config()
5
8
  ;(async () => {
6
- let btc = new TeleportDaoPayment("bitcoin_testnet", {
9
+ let btc = new BitcoinBaseWallet("bitcoin_testnet", {
7
10
  api: {
8
- enabled: true,
9
11
  provider: "MempoolSpace",
10
12
  },
11
13
  })
14
+
15
+ const account = await getAndDecryptAccount()
12
16
  btc.setAccountPrivateKeyByMnemonic({
13
- mnemonic: process.env.ACCOUNT__MNEMONIC!,
14
- index: 2,
15
- addressType: "p2wpkh",
17
+ mnemonic: account.mnemonic,
18
+ mnemonicPassword: account.mnemonicPassword,
19
+ index: 3,
20
+ addressType: "p2tr",
16
21
  })
17
22
 
18
23
  console.log(btc.bitcoinAddress)
19
- let balance = await btc.btcInterface.getBalance(btc.bitcoinAddress!)
20
24
 
21
- console.log(balance)
25
+ const extendedUtxo = await btc.getExtendedUtxo(btc.signerInfo!)
22
26
 
23
- let txId = await btc.send({
24
- receiverAddress: btc.bitcoinAddress!,
25
- fullAmount: true,
26
- amount: 0,
27
+ const unsignedTx = await btc.transactionBuilder.processUnsignedTransaction({
28
+ extendedUtxo,
29
+ feeRate: await btc.btcInterface.getFeeRate(),
30
+ targets: [
31
+ btc.transactionBuilder.getOpReturnTarget("0x0101010101"),
32
+ btc.transactionBuilder.getOpReturnTarget("0x0202020202"),
33
+ ],
34
+ changeAddress: btc.bitcoinAddress!,
35
+ fullAmount: false,
27
36
  })
28
37
 
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)
38
+ const signedTx = await btc.signer.signPsbt(unsignedTx, btc.privateKey!)
39
+ const txId = await btc.sendSignedPsbt(signedTx)
43
40
 
44
- console.log(txIdNew)
41
+ console.log(txId)
45
42
  })()
@@ -47,7 +47,7 @@ function generateWrapOpReturn({ chainId, appId, recipientAddress, networkFee, th
47
47
  throw new Error("invalid outputAmount");
48
48
  }
49
49
  if ((bridgePercentageFee || 0) > 100 ||
50
- (bridgePercentageFee || 0) < 0.00001 ||
50
+ (bridgePercentageFee && bridgePercentageFee < 0.00001) ||
51
51
  (0, bignumber_js_1.default)((bridgePercentageFee === null || bridgePercentageFee === void 0 ? void 0 : bridgePercentageFee.toFixed(5)) || 0)
52
52
  .multipliedBy(1e5)
53
53
  .toString(16).length > wrapOpReturnLength.bridgePercentageFee) {
@@ -1 +1 @@
1
- {"version":3,"file":"teleswap-helper.js","sourceRoot":"","sources":["../../src/helper/teleswap-helper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"teleswap-helper.js","sourceRoot":"","sources":["../../src/helper/teleswap-helper.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.7.20",
3
+ "version": "1.7.21",
4
4
  "description": "teleswap bitcoin package",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -14,7 +14,7 @@
14
14
  "license": "ISC",
15
15
  "dependencies": {
16
16
  "@bitcoinerlab/secp256k1": "^1.0.5",
17
- "@teleportdao/configs": "^1.7.20",
17
+ "@teleportdao/configs": "^1.7.21",
18
18
  "@teleportdao/providers": "^1.7.14",
19
19
  "axios": "^0.27.2",
20
20
  "bignumber.js": "^9.1.1",
@@ -31,5 +31,5 @@
31
31
  "publishConfig": {
32
32
  "access": "public"
33
33
  },
34
- "gitHead": "450823edbb14374c0acafb1c4e66a2f92e007bcc"
34
+ "gitHead": "baf4ea51ed79d55ca01c2b41dac9342ffc8b7eb6"
35
35
  }
@@ -1,181 +1,181 @@
1
- import BigNumber from "bignumber.js"
2
- import { bitcoin as bitcoinProviders } from "@teleportdao/providers"
3
- import { BitcoinInterface } from "./bitcoin-interface"
4
- import { Transaction, BitcoinConnectionInfo } from "./type"
5
- import type { SignerInfo } from "./transaction-builder"
6
-
7
- import { sleep } from "./utils/tools"
8
- import { checkAndParseBrc20Request } from "./helper/brc20-helper"
9
-
10
- export class BitcoinInterfaceOrdinal extends BitcoinInterface {
11
- unisat: bitcoinProviders.UniSat
12
- constructor(connectionInfo: BitcoinConnectionInfo, networkName: string, uniSatToken: string) {
13
- super(connectionInfo, networkName)
14
- this.unisat = new bitcoinProviders.UniSat(
15
- {
16
- token: uniSatToken,
17
- },
18
- networkName.includes("testnet"),
19
- )
20
- }
21
- async getInscriptionWithRetry(
22
- inscriptionId: string,
23
- { numberOfRetry = 5, sleepTime = 20000 } = {},
24
- ) {
25
- let count = 0
26
- while (count <= numberOfRetry) {
27
- try {
28
- let inscription = await this.unisat.getInscriptionInfo(inscriptionId)
29
- if (inscription?.brc20) {
30
- return inscription
31
- }
32
- } catch (e: any) {
33
- console.log(e.message)
34
- }
35
- await sleep(sleepTime + count * 5000)
36
- count += 1
37
- }
38
- return null
39
- }
40
-
41
- async getTransactionBrc20TransferInfo(transaction: {
42
- txId: string
43
- vout: {
44
- address: string | null
45
- script: string
46
- value: number
47
- }[]
48
- vin: {
49
- txId: string
50
- index: number
51
- address?: string | null
52
- script?: string | null
53
- value?: number | null
54
- }[]
55
- }) {
56
- let txBrc20s: {
57
- txId: string
58
- receiver: string
59
- index: number
60
- brc20: {
61
- op: string
62
- tick: string
63
- lim: string
64
- amt: string
65
- decimal: string
66
- }
67
- inscription: bitcoinProviders.UnisatInscription
68
- }[] = []
69
- for (let x = 0; x < transaction.vout.length - 1; x += 1) {
70
- if (!transaction.vout[x].address) {
71
- return []
72
- }
73
- let inscription = await this.unisat.getInscriptionInfo(
74
- `${transaction.vin[x].txId}i${transaction.vin[x].index}`,
75
- )
76
-
77
- const brc20 = inscription?.brc20?.op === "transfer" ? inscription.brc20 : undefined
78
- if (brc20 && inscription) {
79
- txBrc20s.push({
80
- txId: transaction.txId,
81
- receiver: transaction.vout[x].address!,
82
- index: x,
83
- inscription,
84
- brc20,
85
- })
86
- } else {
87
- return []
88
- }
89
- }
90
-
91
- return txBrc20s
92
- }
93
-
94
- async convertToBrc20WrapRequest(transaction: Transaction, lockerAddress: string) {
95
- let { vout } = transaction
96
- let request = checkAndParseBrc20Request(vout, lockerAddress)
97
- let lockerLockingScript: string =
98
- transaction.addressScript ||
99
- this.convertAddressToScript(lockerAddress).script!.toString("hex")
100
-
101
- return {
102
- transaction,
103
- request,
104
- lockerAddress,
105
- lockerLockingScript,
106
- }
107
- }
108
-
109
- async getBrc20WrapRequests(
110
- addresses: string[],
111
- startblockNumber: number,
112
- endBlockNumber: number,
113
- ) {
114
- // transaction in StartBlock is not returned --> (startblockNumber,endBlockNumber]
115
- let transactions: Transaction[] = await this.getMultipleBlocksTransactions(
116
- addresses,
117
- startblockNumber,
118
- endBlockNumber || (await this.getLatestBlockNumber()),
119
- )
120
-
121
- let requests = []
122
- let invalidRequests = []
123
-
124
- // eslint-disable-next-line no-restricted-syntax
125
- for (let inputTx of transactions) {
126
- let data = await this.convertToBrc20WrapRequest(inputTx, inputTx.address)
127
- if (data.request.status) {
128
- let inscription = await this.getInscriptionWithRetry(
129
- `${inputTx.vin[0].txId}i${inputTx.vin[0].index}`,
130
- )
131
- const brc20 = inscription?.brc20?.op === "transfer" ? inscription.brc20 : undefined
132
-
133
- if (!brc20) {
134
- invalidRequests.push({
135
- ...data,
136
- message: `invalid brc20 -> ${inscription?.brc20?.op}:${inscription?.brc20?.amt}`,
137
- })
138
- } else if (
139
- !BigNumber(brc20.amt)
140
- .multipliedBy(1e18)
141
- .isEqualTo(data.request.data?.inputAmount || 0)
142
- ) {
143
- invalidRequests.push({
144
- ...data,
145
- message: `invalid brc20 amount -> ${inscription?.brc20?.op}:${inscription?.brc20?.amt}:${data.request.data?.inputAmount}`,
146
- })
147
- } else {
148
- requests.push({ ...data, brc20 })
149
- }
150
- // check brc20 info
151
- // this.unisat.getBrc20TickerTxHistory(data.request.data!.brc20!.ticker, data.transaction.txId)
152
- // ignore normal transaction
153
- } else if (data.request.code !== "NO_OP_RETURN") {
154
- invalidRequests.push(data)
155
- }
156
- }
157
- return { requests, invalidRequests }
158
- }
159
-
160
- async getBTCUtxo(address: string, signerInfo: SignerInfo) {
161
- return bitcoinProviders.UniSat.convertToNormalUtxo(
162
- (await this.unisat.getBTCUtxo(address))?.utxo || [],
163
- ).map(({ txId, index, value }) => ({
164
- hash: txId,
165
- index,
166
- value,
167
- signerInfo,
168
- }))
169
- }
170
-
171
- async getInscriptionUtxo(address: string, signerInfo: SignerInfo) {
172
- return bitcoinProviders.UniSat.convertToNormalUtxo(
173
- (await this.unisat.getInscriptionUtxo(address))?.utxo || [],
174
- ).map(({ txId, index, value }) => ({
175
- hash: txId,
176
- index,
177
- value,
178
- signerInfo,
179
- }))
180
- }
181
- }
1
+ import BigNumber from "bignumber.js"
2
+ import { bitcoin as bitcoinProviders } from "@teleportdao/providers"
3
+ import { BitcoinInterface } from "./bitcoin-interface"
4
+ import { Transaction, BitcoinConnectionInfo } from "./type"
5
+ import type { SignerInfo } from "./transaction-builder"
6
+
7
+ import { sleep } from "./utils/tools"
8
+ import { checkAndParseBrc20Request } from "./helper/brc20-helper"
9
+
10
+ export class BitcoinInterfaceOrdinal extends BitcoinInterface {
11
+ unisat: bitcoinProviders.UniSat
12
+ constructor(connectionInfo: BitcoinConnectionInfo, networkName: string, uniSatToken: string) {
13
+ super(connectionInfo, networkName)
14
+ this.unisat = new bitcoinProviders.UniSat(
15
+ {
16
+ token: uniSatToken,
17
+ },
18
+ networkName.includes("testnet"),
19
+ )
20
+ }
21
+ async getInscriptionWithRetry(
22
+ inscriptionId: string,
23
+ { numberOfRetry = 5, sleepTime = 20000 } = {},
24
+ ) {
25
+ let count = 0
26
+ while (count <= numberOfRetry) {
27
+ try {
28
+ let inscription = await this.unisat.getInscriptionInfo(inscriptionId)
29
+ if (inscription?.brc20) {
30
+ return inscription
31
+ }
32
+ } catch (e: any) {
33
+ console.log(e.message)
34
+ }
35
+ await sleep(sleepTime + count * 5000)
36
+ count += 1
37
+ }
38
+ return null
39
+ }
40
+
41
+ async getTransactionBrc20TransferInfo(transaction: {
42
+ txId: string
43
+ vout: {
44
+ address: string | null
45
+ script: string
46
+ value: number
47
+ }[]
48
+ vin: {
49
+ txId: string
50
+ index: number
51
+ address?: string | null
52
+ script?: string | null
53
+ value?: number | null
54
+ }[]
55
+ }) {
56
+ let txBrc20s: {
57
+ txId: string
58
+ receiver: string
59
+ index: number
60
+ brc20: {
61
+ op: string
62
+ tick: string
63
+ lim: string
64
+ amt: string
65
+ decimal: string
66
+ }
67
+ inscription: bitcoinProviders.UnisatInscription
68
+ }[] = []
69
+ for (let x = 0; x < transaction.vout.length - 1; x += 1) {
70
+ if (!transaction.vout[x].address) {
71
+ return []
72
+ }
73
+ let inscription = await this.unisat.getInscriptionInfo(
74
+ `${transaction.vin[x].txId}i${transaction.vin[x].index}`,
75
+ )
76
+
77
+ const brc20 = inscription?.brc20?.op === "transfer" ? inscription.brc20 : undefined
78
+ if (brc20 && inscription) {
79
+ txBrc20s.push({
80
+ txId: transaction.txId,
81
+ receiver: transaction.vout[x].address!,
82
+ index: x,
83
+ inscription,
84
+ brc20,
85
+ })
86
+ } else {
87
+ return []
88
+ }
89
+ }
90
+
91
+ return txBrc20s
92
+ }
93
+
94
+ async convertToBrc20WrapRequest(transaction: Transaction, lockerAddress: string) {
95
+ let { vout } = transaction
96
+ let request = checkAndParseBrc20Request(vout, lockerAddress)
97
+ let lockerLockingScript: string =
98
+ transaction.addressScript ||
99
+ this.convertAddressToScript(lockerAddress).script!.toString("hex")
100
+
101
+ return {
102
+ transaction,
103
+ request,
104
+ lockerAddress,
105
+ lockerLockingScript,
106
+ }
107
+ }
108
+
109
+ async getBrc20WrapRequests(
110
+ addresses: string[],
111
+ startblockNumber: number,
112
+ endBlockNumber: number,
113
+ ) {
114
+ // transaction in StartBlock is not returned --> (startblockNumber,endBlockNumber]
115
+ let transactions: Transaction[] = await this.getMultipleBlocksTransactions(
116
+ addresses,
117
+ startblockNumber,
118
+ endBlockNumber || (await this.getLatestBlockNumber()),
119
+ )
120
+
121
+ let requests = []
122
+ let invalidRequests = []
123
+
124
+ // eslint-disable-next-line no-restricted-syntax
125
+ for (let inputTx of transactions) {
126
+ let data = await this.convertToBrc20WrapRequest(inputTx, inputTx.address)
127
+ if (data.request.status) {
128
+ let inscription = await this.getInscriptionWithRetry(
129
+ `${inputTx.vin[0].txId}i${inputTx.vin[0].index}`,
130
+ )
131
+ const brc20 = inscription?.brc20?.op === "transfer" ? inscription.brc20 : undefined
132
+
133
+ if (!brc20) {
134
+ invalidRequests.push({
135
+ ...data,
136
+ message: `invalid brc20 -> ${inscription?.brc20?.op}:${inscription?.brc20?.amt}`,
137
+ })
138
+ } else if (
139
+ !BigNumber(brc20.amt)
140
+ .multipliedBy(1e18)
141
+ .isEqualTo(data.request.data?.inputAmount || 0)
142
+ ) {
143
+ invalidRequests.push({
144
+ ...data,
145
+ message: `invalid brc20 amount -> ${inscription?.brc20?.op}:${inscription?.brc20?.amt}:${data.request.data?.inputAmount}`,
146
+ })
147
+ } else {
148
+ requests.push({ ...data, brc20 })
149
+ }
150
+ // check brc20 info
151
+ // this.unisat.getBrc20TickerTxHistory(data.request.data!.brc20!.ticker, data.transaction.txId)
152
+ // ignore normal transaction
153
+ } else if (data.request.code !== "NO_OP_RETURN") {
154
+ invalidRequests.push(data)
155
+ }
156
+ }
157
+ return { requests, invalidRequests }
158
+ }
159
+
160
+ async getBTCUtxo(address: string, signerInfo: SignerInfo) {
161
+ return bitcoinProviders.UniSat.convertToNormalUtxo(
162
+ (await this.unisat.getBTCUtxo(address))?.utxo || [],
163
+ ).map(({ txId, index, value }) => ({
164
+ hash: txId,
165
+ index,
166
+ value,
167
+ signerInfo,
168
+ }))
169
+ }
170
+
171
+ async getInscriptionUtxo(address: string, signerInfo: SignerInfo) {
172
+ return bitcoinProviders.UniSat.convertToNormalUtxo(
173
+ (await this.unisat.getInscriptionUtxo(address))?.utxo || [],
174
+ ).map(({ txId, index, value }) => ({
175
+ hash: txId,
176
+ index,
177
+ value,
178
+ signerInfo,
179
+ }))
180
+ }
181
+ }