@0xtorch/evm 0.0.134 → 0.0.136
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/_cjs/chain/definitions/berachain.js +69 -0
- package/_cjs/chain/definitions/berachain.js.map +1 -0
- package/_cjs/chain/definitions/fantom.js +5 -6
- package/_cjs/chain/definitions/fantom.js.map +1 -1
- package/_cjs/chain/definitions/unichain.js +80 -0
- package/_cjs/chain/definitions/unichain.js.map +1 -0
- package/_cjs/chain/index.js +14 -4
- package/_cjs/chain/index.js.map +1 -1
- package/_cjs/index.js +13 -4
- package/_cjs/index.js.map +1 -1
- package/_cjs/logic/analyzeTransaction/decodeTransaction/decodeInput.js +6 -1
- package/_cjs/logic/analyzeTransaction/decodeTransaction/decodeInput.js.map +1 -1
- package/_cjs/logic/getTransactionDetail/decodeTokenTransferLogs.js +110 -0
- package/_cjs/logic/getTransactionDetail/decodeTokenTransferLogs.js.map +1 -1
- package/_esm/chain/definitions/berachain.js +70 -0
- package/_esm/chain/definitions/berachain.js.map +1 -0
- package/_esm/chain/definitions/fantom.js +6 -7
- package/_esm/chain/definitions/fantom.js.map +1 -1
- package/_esm/chain/definitions/unichain.js +75 -0
- package/_esm/chain/definitions/unichain.js.map +1 -0
- package/_esm/chain/index.js +2 -0
- package/_esm/chain/index.js.map +1 -1
- package/_esm/index.js +1 -1
- package/_esm/index.js.map +1 -1
- package/_esm/logic/analyzeTransaction/decodeTransaction/decodeInput.js +8 -2
- package/_esm/logic/analyzeTransaction/decodeTransaction/decodeInput.js.map +1 -1
- package/_esm/logic/getTransactionDetail/decodeTokenTransferLogs.js +114 -0
- package/_esm/logic/getTransactionDetail/decodeTokenTransferLogs.js.map +1 -1
- package/_types/chain/definitions/berachain.d.ts +18 -0
- package/_types/chain/definitions/berachain.d.ts.map +1 -0
- package/_types/chain/definitions/fantom.d.ts +1 -1
- package/_types/chain/definitions/fantom.d.ts.map +1 -1
- package/_types/chain/definitions/unichain.d.ts +18 -0
- package/_types/chain/definitions/unichain.d.ts.map +1 -0
- package/_types/chain/index.d.ts +2 -0
- package/_types/chain/index.d.ts.map +1 -1
- package/_types/chain/viemChains/chainVerse.d.ts +1 -0
- package/_types/chain/viemChains/chainVerse.d.ts.map +1 -1
- package/_types/chain/viemChains/defiVerse.d.ts +1 -0
- package/_types/chain/viemChains/defiVerse.d.ts.map +1 -1
- package/_types/chain/viemChains/geekVerse.d.ts +1 -0
- package/_types/chain/viemChains/geekVerse.d.ts.map +1 -1
- package/_types/chain/viemChains/gesoVerse.d.ts +1 -0
- package/_types/chain/viemChains/gesoVerse.d.ts.map +1 -1
- package/_types/chain/viemChains/homeVerse.d.ts +1 -0
- package/_types/chain/viemChains/homeVerse.d.ts.map +1 -1
- package/_types/chain/viemChains/mchVerse.d.ts +1 -0
- package/_types/chain/viemChains/mchVerse.d.ts.map +1 -1
- package/_types/chain/viemChains/saakuru.d.ts +1 -0
- package/_types/chain/viemChains/saakuru.d.ts.map +1 -1
- package/_types/chain/viemChains/soneium.d.ts +1 -0
- package/_types/chain/viemChains/soneium.d.ts.map +1 -1
- package/_types/chain/viemChains/sonic.d.ts +1 -0
- package/_types/chain/viemChains/sonic.d.ts.map +1 -1
- package/_types/chain/viemChains/tcgVerse.d.ts +1 -0
- package/_types/chain/viemChains/tcgVerse.d.ts.map +1 -1
- package/_types/index.d.ts +1 -1
- package/_types/index.d.ts.map +1 -1
- package/_types/logic/analyzeTransaction/decodeTransaction/decodeInput.d.ts.map +1 -1
- package/chain/definitions/berachain.ts +93 -0
- package/chain/definitions/fantom.ts +5 -7
- package/chain/definitions/unichain.ts +98 -0
- package/chain/index.ts +12 -0
- package/index.ts +8 -0
- package/logic/analyzeTransaction/decodeTransaction/decodeInput.ts +8 -1
- package/logic/getTransactionDetail/decodeTokenTransferLogs.ts +152 -0
- package/package.json +3 -3
|
@@ -50,6 +50,14 @@ export const decodeTokenTransferLogs = (
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
+
const erc20NftAddress = new Set<LowerHex>([
|
|
54
|
+
'0xf5b0a3efb8e8e4c201e2a935f110eaaf3ffecb8d',
|
|
55
|
+
])
|
|
56
|
+
|
|
57
|
+
const noIndexErc721Address = new Set<LowerHex>([
|
|
58
|
+
'0xda9f43015749056182352e9dc6d3ee0b6293d80a',
|
|
59
|
+
])
|
|
60
|
+
|
|
53
61
|
const decodeTokenTransferLog = (
|
|
54
62
|
log: Log,
|
|
55
63
|
wrappedTokenAddresses: Set<LowerHex>,
|
|
@@ -59,6 +67,16 @@ const decodeTokenTransferLog = (
|
|
|
59
67
|
erc721Transfer?: Erc721Transfer
|
|
60
68
|
erc1155Transfers?: Erc1155Transfer[]
|
|
61
69
|
} => {
|
|
70
|
+
// ERC20 形式の NFT token の場合、別で処理する
|
|
71
|
+
if (erc20NftAddress.has(log.address)) {
|
|
72
|
+
return decodeErc20NftTransferLog(log)
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// NoIndex ERC721 の場合、別で処理する
|
|
76
|
+
if (noIndexErc721Address.has(log.address)) {
|
|
77
|
+
return decodeNoIndexLog(log)
|
|
78
|
+
}
|
|
79
|
+
|
|
62
80
|
// decode by ERC20
|
|
63
81
|
const decodedByErc20 = decodeErc20TransferLog(log)
|
|
64
82
|
if (decodedByErc20 !== undefined) {
|
|
@@ -106,6 +124,40 @@ const decodeTokenTransferLog = (
|
|
|
106
124
|
return { log }
|
|
107
125
|
}
|
|
108
126
|
|
|
127
|
+
const decodeErc20NftTransferLog = (
|
|
128
|
+
log: Log,
|
|
129
|
+
): {
|
|
130
|
+
log: Log
|
|
131
|
+
erc20Transfer?: Erc20Transfer
|
|
132
|
+
erc721Transfer?: Erc721Transfer
|
|
133
|
+
erc1155Transfers?: Erc1155Transfer[]
|
|
134
|
+
} => {
|
|
135
|
+
// decode by ERC20 as ERC721
|
|
136
|
+
const decodedByErc20AsErc721 = decodeErc20TransferLogAsErc721Transfer(log)
|
|
137
|
+
if (decodedByErc20AsErc721 !== undefined) {
|
|
138
|
+
return decodedByErc20AsErc721
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
return { log }
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
const decodeNoIndexLog = (
|
|
145
|
+
log: Log,
|
|
146
|
+
): {
|
|
147
|
+
log: Log
|
|
148
|
+
erc20Transfer?: Erc20Transfer
|
|
149
|
+
erc721Transfer?: Erc721Transfer
|
|
150
|
+
erc1155Transfers?: Erc1155Transfer[]
|
|
151
|
+
} => {
|
|
152
|
+
// decode by NoIndex ERC721
|
|
153
|
+
const decodedByNoIndexTransfer = decodeNoIndexErc721TransferLog(log)
|
|
154
|
+
if (decodedByNoIndexTransfer !== undefined) {
|
|
155
|
+
return decodedByNoIndexTransfer
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
return { log }
|
|
159
|
+
}
|
|
160
|
+
|
|
109
161
|
const erc20TransferSignature =
|
|
110
162
|
'0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef'
|
|
111
163
|
const erc20TransferIndexedCount = 2
|
|
@@ -161,6 +213,57 @@ const decodeErc20TransferLog = (
|
|
|
161
213
|
}
|
|
162
214
|
}
|
|
163
215
|
|
|
216
|
+
const decodeErc20TransferLogAsErc721Transfer = (
|
|
217
|
+
log: Log,
|
|
218
|
+
): { log: Log; erc721Transfer: Erc721Transfer } | undefined => {
|
|
219
|
+
if (
|
|
220
|
+
log.topics.length !== erc20TransferIndexedCount + 1 ||
|
|
221
|
+
log.topics[0] !== erc20TransferSignature ||
|
|
222
|
+
log.topics[1]?.slice(0, 26) !== '0x000000000000000000000000' ||
|
|
223
|
+
log.topics[2]?.slice(0, 26) !== '0x000000000000000000000000' ||
|
|
224
|
+
log.data.length !== 66
|
|
225
|
+
) {
|
|
226
|
+
return undefined
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
const from = toLowerHex(`0x${log.topics[1].slice(26)}`)
|
|
230
|
+
const to = toLowerHex(`0x${log.topics[2].slice(26)}`)
|
|
231
|
+
const tokenId = BigInt(log.data)
|
|
232
|
+
|
|
233
|
+
log.eventName = 'Transfer'
|
|
234
|
+
log.args = [
|
|
235
|
+
{
|
|
236
|
+
indexed: true,
|
|
237
|
+
name: 'from',
|
|
238
|
+
type: 'address',
|
|
239
|
+
value: from,
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
indexed: true,
|
|
243
|
+
name: 'to',
|
|
244
|
+
type: 'address',
|
|
245
|
+
value: to,
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
indexed: true,
|
|
249
|
+
name: 'tokenId',
|
|
250
|
+
type: 'uint256',
|
|
251
|
+
value: tokenId,
|
|
252
|
+
},
|
|
253
|
+
]
|
|
254
|
+
|
|
255
|
+
return {
|
|
256
|
+
log,
|
|
257
|
+
erc721Transfer: {
|
|
258
|
+
address: log.address,
|
|
259
|
+
logIndex: log.logIndex,
|
|
260
|
+
from,
|
|
261
|
+
to,
|
|
262
|
+
tokenId,
|
|
263
|
+
},
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
|
|
164
267
|
const wrappedTokenDepositSignature =
|
|
165
268
|
'0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c'
|
|
166
269
|
const wrappedTokenDepositIndexedCount = 1
|
|
@@ -392,6 +495,55 @@ const decodeErc721TransferLog = (
|
|
|
392
495
|
}
|
|
393
496
|
}
|
|
394
497
|
|
|
498
|
+
const decodeNoIndexErc721TransferLog = (
|
|
499
|
+
log: Log,
|
|
500
|
+
): { log: Log; erc721Transfer: Erc721Transfer } | undefined => {
|
|
501
|
+
if (
|
|
502
|
+
log.topics.length !== 1 ||
|
|
503
|
+
log.topics[0] !== erc721TransferSignature ||
|
|
504
|
+
log.data.length !== 192
|
|
505
|
+
) {
|
|
506
|
+
return undefined
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
const from = toLowerHex(`0x${log.data.slice(26, 66)}`)
|
|
510
|
+
const to = toLowerHex(`0x${log.data.slice(90, 130)}`)
|
|
511
|
+
const tokenId = BigInt(log.data.slice(130))
|
|
512
|
+
|
|
513
|
+
log.eventName = 'Transfer'
|
|
514
|
+
log.args = [
|
|
515
|
+
{
|
|
516
|
+
indexed: true,
|
|
517
|
+
name: 'from',
|
|
518
|
+
type: 'address',
|
|
519
|
+
value: from,
|
|
520
|
+
},
|
|
521
|
+
{
|
|
522
|
+
indexed: true,
|
|
523
|
+
name: 'to',
|
|
524
|
+
type: 'address',
|
|
525
|
+
value: to,
|
|
526
|
+
},
|
|
527
|
+
{
|
|
528
|
+
indexed: true,
|
|
529
|
+
name: 'tokenId',
|
|
530
|
+
type: 'uint256',
|
|
531
|
+
value: tokenId,
|
|
532
|
+
},
|
|
533
|
+
]
|
|
534
|
+
|
|
535
|
+
return {
|
|
536
|
+
log,
|
|
537
|
+
erc721Transfer: {
|
|
538
|
+
address: log.address,
|
|
539
|
+
logIndex: log.logIndex,
|
|
540
|
+
from,
|
|
541
|
+
to,
|
|
542
|
+
tokenId,
|
|
543
|
+
},
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
|
|
395
547
|
const erc1155TransferSingleSignature =
|
|
396
548
|
'0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62'
|
|
397
549
|
const erc1155TransferSingleIndexedCount = 3
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@0xtorch/evm",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.136",
|
|
4
4
|
"description": "Cryptorch EVM extension",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cryptorch",
|
|
@@ -38,9 +38,9 @@
|
|
|
38
38
|
],
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@0xtorch/big-decimal": "^0.0.14",
|
|
41
|
-
"@0xtorch/core": "^0.0.
|
|
41
|
+
"@0xtorch/core": "^0.0.65",
|
|
42
42
|
"abitype": "^1.0.8",
|
|
43
|
-
"viem": "^2.
|
|
43
|
+
"viem": "^2.31.4",
|
|
44
44
|
"zod": "^3.24.4"
|
|
45
45
|
}
|
|
46
46
|
}
|