@teleportdao/bitcoin 1.7.7 → 1.7.10
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/dist/helper/teleswap-helper.d.ts.map +1 -1
- package/dist/helper/teleswap-helper.js +4 -3
- package/dist/helper/teleswap-helper.js.map +1 -1
- package/package.json +3 -3
- package/src/bitcoin-interface-ordinal.ts +181 -181
- package/src/bitcoin-interface-teleswap.ts +252 -252
- package/src/bitcoin-interface-utils.ts +59 -59
- package/src/bitcoin-interface.ts +247 -247
- package/src/bitcoin-utils.ts +591 -591
- package/src/bitcoin-wallet-base.ts +310 -310
- package/src/helper/brc20-helper.ts +181 -181
- package/src/helper/ordinal-helper.ts +118 -118
- package/src/helper/teleswap-helper.ts +11 -3
- package/src/index.ts +15 -15
- package/src/ordinal-wallet.ts +738 -738
- package/src/sign/index.ts +1 -1
- package/src/sign/sign-transaction.ts +108 -108
- package/src/teleswap-wallet.ts +152 -152
- package/src/transaction-builder/bitcoin-transaction-builder.ts +44 -44
- package/src/transaction-builder/index.ts +3 -3
- package/src/transaction-builder/ordinal-transaction-builder.ts +147 -147
- package/src/transaction-builder/transaction-builder.ts +706 -706
- package/src/type.ts +43 -43
- package/src/utils/networks.ts +33 -33
- package/src/utils/tools.ts +89 -89
- package/tsconfig.json +9 -9
- package/webpack.config.js +16 -16
- package/dist/bitcoin-base.d.ts +0 -93
- package/dist/bitcoin-base.d.ts.map +0 -1
- package/dist/bitcoin-base.js +0 -236
- package/dist/bitcoin-base.js.map +0 -1
- package/dist/helper/burn-request-helper.d.ts +0 -7
- package/dist/helper/burn-request-helper.d.ts.map +0 -1
- package/dist/helper/burn-request-helper.js +0 -26
- package/dist/helper/burn-request-helper.js.map +0 -1
- package/dist/helper/teleport-request-helper.d.ts +0 -47
- package/dist/helper/teleport-request-helper.d.ts.map +0 -1
- package/dist/helper/teleport-request-helper.js +0 -146
- package/dist/helper/teleport-request-helper.js.map +0 -1
- package/dist/teleport-dao-payments.d.ts +0 -76
- package/dist/teleport-dao-payments.d.ts.map +0 -1
- package/dist/teleport-dao-payments.js +0 -217
- package/dist/teleport-dao-payments.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teleswap-helper.d.ts","sourceRoot":"","sources":["../../src/helper/teleswap-helper.ts"],"names":[],"mappings":"AAGA,KAAK,GAAG,GAAG;IACT,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,KAAK,IAAI,GAAG;IACV,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,gBAAgB,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,OAAO,CAAA;IAEd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,CAAC,IAAI,GAAG;QACjB,KAAK,EAAE,MAAM,CAAA;KACd,CAAC,EAAE,CAAA;IACJ,OAAO,EAAE,CAAC,IAAI,GAAG;QACf,KAAK,EAAE,MAAM,CAAA;KACd,CAAC,EAAE,CAAA;IACJ,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM,CAAA;QAChB,OAAO,EAAE,MAAM,CAAA;QACf,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;CACF,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG;IAChD,WAAW,EAAE,MAAM,GAAG,aAAa,CAAA;CACpC,CAAA;AAYD,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,KAAK,EACL,gBAAgB,EAChB,UAAU,EACV,YAAgB,EAChB,KAAa,EACb,UAAkB,EAClB,WAAW,EACX,YAAY,EACZ,mBAAuB,GACxB,EAAE,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,GAAG;IACtC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,UAkDA;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,GAAG,EAAO,EAAE,KAAK,GAAE,IAAI,EAAO;;eAM9E,MAAM;;;eAGN,MAAM;;;;;;;;cAelB;AAID,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"teleswap-helper.d.ts","sourceRoot":"","sources":["../../src/helper/teleswap-helper.ts"],"names":[],"mappings":"AAGA,KAAK,GAAG,GAAG;IACT,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,KAAK,IAAI,GAAG;IACV,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,gBAAgB,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,OAAO,CAAA;IAEd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,CAAC,IAAI,GAAG;QACjB,KAAK,EAAE,MAAM,CAAA;KACd,CAAC,EAAE,CAAA;IACJ,OAAO,EAAE,CAAC,IAAI,GAAG;QACf,KAAK,EAAE,MAAM,CAAA;KACd,CAAC,EAAE,CAAA;IACJ,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM,CAAA;QAChB,OAAO,EAAE,MAAM,CAAA;QACf,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;CACF,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG;IAChD,WAAW,EAAE,MAAM,GAAG,aAAa,CAAA;CACpC,CAAA;AAYD,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,KAAK,EACL,gBAAgB,EAChB,UAAU,EACV,YAAgB,EAChB,KAAa,EACb,UAAkB,EAClB,WAAW,EACX,YAAY,EACZ,mBAAuB,GACxB,EAAE,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,GAAG;IACtC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,UAkDA;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,GAAG,EAAO,EAAE,KAAK,GAAE,IAAI,EAAO;;eAM9E,MAAM;;;eAGN,MAAM;;;;;;;;cAelB;AAID,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM;;;;;;;;;;EAuD5C;AAED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM;;;;;;;;;;EAoCvD;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,MAAM;;;;;;;;;;;;;;;;EAsC5E"}
|
|
@@ -92,6 +92,7 @@ function parseWrapRequest(data) {
|
|
|
92
92
|
parsedData.recipientAddress = `0x${data.slice(offset, (offset += 40))}`;
|
|
93
93
|
parsedData.networkFee = new bignumber_js_1.default(`0x${data.slice(offset, (offset += wrapOpReturnLength.networkFee))}`).toFixed(0);
|
|
94
94
|
parsedData.speed = data.slice(offset, (offset += 2)) === "01";
|
|
95
|
+
parsedData.thirdPartyId = new bignumber_js_1.default(`0x${data.slice(offset, (offset += wrapOpReturnLength.thirdPartyId))}`).toNumber();
|
|
95
96
|
if (data.length === offset) {
|
|
96
97
|
return {
|
|
97
98
|
status: true,
|
|
@@ -126,7 +127,7 @@ function parseWrapRequest(data) {
|
|
|
126
127
|
exports.parseWrapRequest = parseWrapRequest;
|
|
127
128
|
function parseWrapRawRequest(opReturnData) {
|
|
128
129
|
let data = opReturnData.slice(2, 4) === "4c" ? opReturnData.slice(6) : opReturnData.slice(4);
|
|
129
|
-
let appIdHex = data.slice(
|
|
130
|
+
let appIdHex = data.slice(wrapOpReturnLength.chainId, wrapOpReturnLength.chainId + wrapOpReturnLength.appId);
|
|
130
131
|
if (!appIdHex) {
|
|
131
132
|
return {
|
|
132
133
|
status: false,
|
|
@@ -138,8 +139,8 @@ function parseWrapRawRequest(opReturnData) {
|
|
|
138
139
|
let requestType = Object.keys(configs_1.teleswap.requestAppId).find((key) => appId >= configs_1.teleswap.requestAppId[key].appIdRange[0] &&
|
|
139
140
|
appId <= configs_1.teleswap.requestAppId[key].appIdRange[1]);
|
|
140
141
|
switch (requestType) {
|
|
141
|
-
case "
|
|
142
|
-
case "
|
|
142
|
+
case "Wrap":
|
|
143
|
+
case "WrapAndSwap":
|
|
143
144
|
return parseWrapRequest(data);
|
|
144
145
|
default:
|
|
145
146
|
return {
|
|
@@ -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.
|
|
3
|
+
"version": "1.7.10",
|
|
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.
|
|
17
|
+
"@teleportdao/configs": "^1.7.10",
|
|
18
18
|
"@teleportdao/providers": "^1.7.7",
|
|
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": "
|
|
34
|
+
"gitHead": "5e90d6222ea15ab459f895c0fc68061ea4a6725d"
|
|
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
|
+
}
|