@0xtorch/evm 0.0.94 → 0.0.96
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/logic/analyzeTransaction/decodeTransaction/index.js +31 -1
- package/_cjs/logic/analyzeTransaction/decodeTransaction/index.js.map +1 -1
- package/_esm/logic/analyzeTransaction/decodeTransaction/index.js +35 -1
- package/_esm/logic/analyzeTransaction/decodeTransaction/index.js.map +1 -1
- package/_types/logic/analyzeTransaction/decodeTransaction/index.d.ts.map +1 -1
- package/logic/analyzeTransaction/decodeTransaction/index.ts +44 -2
- package/package.json +1 -1
|
@@ -6,6 +6,7 @@ const decodeLog_1 = require("./decodeLog");
|
|
|
6
6
|
const parseToErc20TokenTransfer_1 = require("./parseToErc20TokenTransfer");
|
|
7
7
|
const parseToErc721TokenTransfer_1 = require("./parseToErc721TokenTransfer");
|
|
8
8
|
const parseToErc1155TokenTransfer_1 = require("./parseToErc1155TokenTransfer");
|
|
9
|
+
const zkSyncEraChainId = 324;
|
|
9
10
|
const decodeTransaction = ({ transaction, addresses, erc20Tokens, eventAbis, functionAbis, nfts, }) => {
|
|
10
11
|
const fromAddress = addresses.find(({ address }) => address === transaction.from);
|
|
11
12
|
if (fromAddress === undefined) {
|
|
@@ -48,9 +49,38 @@ const decodeTransaction = ({ transaction, addresses, erc20Tokens, eventAbis, fun
|
|
|
48
49
|
transfer,
|
|
49
50
|
nfts: nftsMap,
|
|
50
51
|
}));
|
|
52
|
+
const filteredErc20Transfers = [];
|
|
53
|
+
if (transaction.chainId === zkSyncEraChainId) {
|
|
54
|
+
const feeAddress = '0x0000000000000000000000000000000000008001';
|
|
55
|
+
let ignoredNativeTransfer = false;
|
|
56
|
+
for (const transfer of erc20Transfers) {
|
|
57
|
+
if (transfer.from === feeAddress || transfer.to === feeAddress) {
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
if (!ignoredNativeTransfer &&
|
|
61
|
+
transfer.from === transaction.from &&
|
|
62
|
+
transfer.to === transaction.to &&
|
|
63
|
+
transfer.value === transaction.value) {
|
|
64
|
+
ignoredNativeTransfer = true;
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
filteredErc20Transfers.push(transfer);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
filteredErc20Transfers.push(...erc20Transfers);
|
|
72
|
+
}
|
|
73
|
+
let filteredInternalTransactions;
|
|
74
|
+
if (transaction.chainId === zkSyncEraChainId) {
|
|
75
|
+
filteredInternalTransactions = [];
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
filteredInternalTransactions = transaction.internalTransactions;
|
|
79
|
+
}
|
|
51
80
|
return {
|
|
52
81
|
...transaction,
|
|
53
|
-
|
|
82
|
+
internalTransactions: filteredInternalTransactions,
|
|
83
|
+
erc20Transfers: filteredErc20Transfers,
|
|
54
84
|
erc721Transfers,
|
|
55
85
|
erc1155Transfers,
|
|
56
86
|
from: fromAddress,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../logic/analyzeTransaction/decodeTransaction/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../logic/analyzeTransaction/decodeTransaction/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { decodeLog } from './decodeLog';
|
|
|
3
3
|
import { parseToErc20TokenTransfer } from './parseToErc20TokenTransfer';
|
|
4
4
|
import { parseToErc721TokenTransfer } from './parseToErc721TokenTransfer';
|
|
5
5
|
import { parseToErc1155TokenTransfer } from './parseToErc1155TokenTransfer';
|
|
6
|
+
const zkSyncEraChainId = 324;
|
|
6
7
|
export const decodeTransaction = ({ transaction, addresses, erc20Tokens, eventAbis, functionAbis, nfts, }) => {
|
|
7
8
|
// parse fetched data
|
|
8
9
|
const fromAddress = addresses.find(({ address }) => address === transaction.from);
|
|
@@ -49,10 +50,43 @@ export const decodeTransaction = ({ transaction, addresses, erc20Tokens, eventAb
|
|
|
49
50
|
transfer,
|
|
50
51
|
nfts: nftsMap,
|
|
51
52
|
}));
|
|
53
|
+
// chain 毎固有の条件に応じて ERC20 transfer をフィルタリング
|
|
54
|
+
const filteredErc20Transfers = [];
|
|
55
|
+
// zkSync でのトランザクションの場合、fee 関連の transfer を除外・native transfer と同様の transfer を除外
|
|
56
|
+
if (transaction.chainId === zkSyncEraChainId) {
|
|
57
|
+
const feeAddress = '0x0000000000000000000000000000000000008001';
|
|
58
|
+
let ignoredNativeTransfer = false;
|
|
59
|
+
for (const transfer of erc20Transfers) {
|
|
60
|
+
if (transfer.from === feeAddress || transfer.to === feeAddress) {
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (!ignoredNativeTransfer &&
|
|
64
|
+
transfer.from === transaction.from &&
|
|
65
|
+
transfer.to === transaction.to &&
|
|
66
|
+
transfer.value === transaction.value) {
|
|
67
|
+
ignoredNativeTransfer = true;
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
filteredErc20Transfers.push(transfer);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
filteredErc20Transfers.push(...erc20Transfers);
|
|
75
|
+
}
|
|
76
|
+
// chain 毎固有の条件に応じて internal transaction をフィルタリング
|
|
77
|
+
let filteredInternalTransactions;
|
|
78
|
+
if (transaction.chainId === zkSyncEraChainId) {
|
|
79
|
+
// zkSync の場合 internal transaction は除外する
|
|
80
|
+
filteredInternalTransactions = [];
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
filteredInternalTransactions = transaction.internalTransactions;
|
|
84
|
+
}
|
|
52
85
|
// データを統合して TransactionDecoded に変形
|
|
53
86
|
return {
|
|
54
87
|
...transaction,
|
|
55
|
-
|
|
88
|
+
internalTransactions: filteredInternalTransactions,
|
|
89
|
+
erc20Transfers: filteredErc20Transfers,
|
|
56
90
|
erc721Transfers,
|
|
57
91
|
erc1155Transfers,
|
|
58
92
|
from: fromAddress,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../logic/analyzeTransaction/decodeTransaction/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../logic/analyzeTransaction/decodeTransaction/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../logic/analyzeTransaction/decodeTransaction/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../logic/analyzeTransaction/decodeTransaction/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,KAAK,EACV,UAAU,EAGV,QAAQ,EACT,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AASzE,KAAK,2BAA2B,GAAG;IACjC,WAAW,EAAE,iBAAiB,CAAA;IAC9B,SAAS,EAAE,SAAS,UAAU,EAAE,CAAA;IAChC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAA;IAClC,SAAS,EAAE,SAAS;QAClB,SAAS,EAAE,QAAQ,CAAA;QACnB,YAAY,EAAE,MAAM,CAAA;QACpB,GAAG,EAAE,MAAM,CAAA;KACZ,EAAE,CAAA;IACH,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;IAC/B,IAAI,EAAE,SAAS,GAAG,EAAE,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,iBAAiB,4EAO3B,2BAA2B,KAAG,kBA8GhC,CAAA"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { Nft } from '@0xtorch/core'
|
|
2
|
-
import type {
|
|
2
|
+
import type {
|
|
3
|
+
Erc20Token,
|
|
4
|
+
Erc20TokenTransfer,
|
|
5
|
+
InternalTransaction,
|
|
6
|
+
LowerHex,
|
|
7
|
+
} from '../../../types'
|
|
3
8
|
import type { EvmAddress } from '../../../types/address'
|
|
4
9
|
import type { TransactionDecoded } from '../../../types/transactionDecoded'
|
|
5
10
|
import type { TransactionDetail } from '../../../types/transactionDetail'
|
|
@@ -9,6 +14,8 @@ import { parseToErc20TokenTransfer } from './parseToErc20TokenTransfer'
|
|
|
9
14
|
import { parseToErc721TokenTransfer } from './parseToErc721TokenTransfer'
|
|
10
15
|
import { parseToErc1155TokenTransfer } from './parseToErc1155TokenTransfer'
|
|
11
16
|
|
|
17
|
+
const zkSyncEraChainId = 324
|
|
18
|
+
|
|
12
19
|
type DecodeTransactionParameters = {
|
|
13
20
|
transaction: TransactionDetail
|
|
14
21
|
addresses: readonly EvmAddress[]
|
|
@@ -93,10 +100,45 @@ export const decodeTransaction = ({
|
|
|
93
100
|
}),
|
|
94
101
|
)
|
|
95
102
|
|
|
103
|
+
// chain 毎固有の条件に応じて ERC20 transfer をフィルタリング
|
|
104
|
+
const filteredErc20Transfers: Erc20TokenTransfer[] = []
|
|
105
|
+
// zkSync でのトランザクションの場合、fee 関連の transfer を除外・native transfer と同様の transfer を除外
|
|
106
|
+
if (transaction.chainId === zkSyncEraChainId) {
|
|
107
|
+
const feeAddress = '0x0000000000000000000000000000000000008001'
|
|
108
|
+
let ignoredNativeTransfer = false
|
|
109
|
+
for (const transfer of erc20Transfers) {
|
|
110
|
+
if (transfer.from === feeAddress || transfer.to === feeAddress) {
|
|
111
|
+
continue
|
|
112
|
+
}
|
|
113
|
+
if (
|
|
114
|
+
!ignoredNativeTransfer &&
|
|
115
|
+
transfer.from === transaction.from &&
|
|
116
|
+
transfer.to === transaction.to &&
|
|
117
|
+
transfer.value === transaction.value
|
|
118
|
+
) {
|
|
119
|
+
ignoredNativeTransfer = true
|
|
120
|
+
continue
|
|
121
|
+
}
|
|
122
|
+
filteredErc20Transfers.push(transfer)
|
|
123
|
+
}
|
|
124
|
+
} else {
|
|
125
|
+
filteredErc20Transfers.push(...erc20Transfers)
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// chain 毎固有の条件に応じて internal transaction をフィルタリング
|
|
129
|
+
let filteredInternalTransactions: InternalTransaction[]
|
|
130
|
+
if (transaction.chainId === zkSyncEraChainId) {
|
|
131
|
+
// zkSync の場合 internal transaction は除外する
|
|
132
|
+
filteredInternalTransactions = []
|
|
133
|
+
} else {
|
|
134
|
+
filteredInternalTransactions = transaction.internalTransactions
|
|
135
|
+
}
|
|
136
|
+
|
|
96
137
|
// データを統合して TransactionDecoded に変形
|
|
97
138
|
return {
|
|
98
139
|
...transaction,
|
|
99
|
-
|
|
140
|
+
internalTransactions: filteredInternalTransactions,
|
|
141
|
+
erc20Transfers: filteredErc20Transfers,
|
|
100
142
|
erc721Transfers,
|
|
101
143
|
erc1155Transfers,
|
|
102
144
|
from: fromAddress,
|