@0xtorch/evm 0.0.73 → 0.0.75
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/.DS_Store +0 -0
- package/_cjs/index.js +6 -2
- package/_cjs/index.js.map +1 -1
- package/_cjs/logic/analyzeTransaction/createActions/fail.js +2 -7
- package/_cjs/logic/analyzeTransaction/createActions/fail.js.map +1 -1
- package/_cjs/logic/analyzeTransaction/createActions/gas.js +4 -4
- package/_cjs/logic/analyzeTransaction/createActions/gas.js.map +1 -1
- package/_cjs/logic/analyzeTransaction/createActions/index.js +27 -4
- package/_cjs/logic/analyzeTransaction/createActions/index.js.map +1 -1
- package/_cjs/logic/analyzeTransaction/createActions/json/addressIn.js +37 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/addressIn.js.map +1 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/allValue.js +28 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/allValue.js.map +1 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/arrayIn.js +30 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/arrayIn.js.map +1 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/betweenBigInt.js +14 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/betweenBigInt.js.map +1 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/customTransferGenerator.js +132 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/customTransferGenerator.js.map +1 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/erc1155Pattern.js +76 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/erc1155Pattern.js.map +1 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/erc1155TransferGenerator.js +45 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/erc1155TransferGenerator.js.map +1 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/erc20Pattern.js +68 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/erc20Pattern.js.map +1 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/erc20TransferGenerator.js +45 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/erc20TransferGenerator.js.map +1 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/erc721Pattern.js +45 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/erc721Pattern.js.map +1 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/erc721TransferGenerator.js +45 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/erc721TransferGenerator.js.map +1 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/generateActions.js +179 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/generateActions.js.map +1 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/index.js +41 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/index.js.map +1 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/internalTransferGenerator.js +100 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/internalTransferGenerator.js.map +1 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/join.js +44 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/join.js.map +1 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/math.js +80 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/math.js.map +1 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/schema.js +385 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/schema.js.map +1 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/simpleValue.js +253 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/simpleValue.js.map +1 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/slice.js +14 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/slice.js.map +1 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/transferGenerator.js +128 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/transferGenerator.js.map +1 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/type.js +3 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/type.js.map +1 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/verifyTxSatisfiesCondition.js +492 -0
- package/_cjs/logic/analyzeTransaction/createActions/json/verifyTxSatisfiesCondition.js.map +1 -0
- package/_cjs/logic/analyzeTransaction/createActions/spam.js +2 -2
- package/_cjs/logic/analyzeTransaction/createActions/spam.js.map +1 -1
- package/_cjs/logic/analyzeTransaction/createActions/utils/containsUrlOrDomain.js +1 -1
- package/_cjs/logic/analyzeTransaction/createActions/utils/containsUrlOrDomain.js.map +1 -1
- package/_cjs/logic/analyzeTransaction/createActions/utils/createDirection.js +5 -5
- package/_cjs/logic/analyzeTransaction/createActions/utils/createDirection.js.map +1 -1
- package/_cjs/logic/analyzeTransaction/createActions/utils/createTokenTransfers.js +82 -65
- package/_cjs/logic/analyzeTransaction/createActions/utils/createTokenTransfers.js.map +1 -1
- package/_cjs/logic/analyzeTransaction/getDataFromDatasource.js +3 -5
- package/_cjs/logic/analyzeTransaction/getDataFromDatasource.js.map +1 -1
- package/_cjs/logic/analyzeTransaction/index.js +4 -4
- package/_cjs/logic/analyzeTransaction/index.js.map +1 -1
- package/_esm/index.js +1 -0
- package/_esm/index.js.map +1 -1
- package/_esm/logic/analyzeTransaction/createActions/fail.js +2 -7
- package/_esm/logic/analyzeTransaction/createActions/fail.js.map +1 -1
- package/_esm/logic/analyzeTransaction/createActions/gas.js +5 -5
- package/_esm/logic/analyzeTransaction/createActions/gas.js.map +1 -1
- package/_esm/logic/analyzeTransaction/createActions/general.js +1 -1
- package/_esm/logic/analyzeTransaction/createActions/general.js.map +1 -1
- package/_esm/logic/analyzeTransaction/createActions/index.js +28 -6
- package/_esm/logic/analyzeTransaction/createActions/index.js.map +1 -1
- package/_esm/logic/analyzeTransaction/createActions/json/addressIn.js +33 -0
- package/_esm/logic/analyzeTransaction/createActions/json/addressIn.js.map +1 -0
- package/_esm/logic/analyzeTransaction/createActions/json/allValue.js +29 -0
- package/_esm/logic/analyzeTransaction/createActions/json/allValue.js.map +1 -0
- package/_esm/logic/analyzeTransaction/createActions/json/arrayIn.js +28 -0
- package/_esm/logic/analyzeTransaction/createActions/json/arrayIn.js.map +1 -0
- package/_esm/logic/analyzeTransaction/createActions/json/betweenBigInt.js +10 -0
- package/_esm/logic/analyzeTransaction/createActions/json/betweenBigInt.js.map +1 -0
- package/_esm/logic/analyzeTransaction/createActions/json/customTransferGenerator.js +128 -0
- package/_esm/logic/analyzeTransaction/createActions/json/customTransferGenerator.js.map +1 -0
- package/_esm/logic/analyzeTransaction/createActions/json/erc1155Pattern.js +77 -0
- package/_esm/logic/analyzeTransaction/createActions/json/erc1155Pattern.js.map +1 -0
- package/_esm/logic/analyzeTransaction/createActions/json/erc1155TransferGenerator.js +41 -0
- package/_esm/logic/analyzeTransaction/createActions/json/erc1155TransferGenerator.js.map +1 -0
- package/_esm/logic/analyzeTransaction/createActions/json/erc20Pattern.js +68 -0
- package/_esm/logic/analyzeTransaction/createActions/json/erc20Pattern.js.map +1 -0
- package/_esm/logic/analyzeTransaction/createActions/json/erc20TransferGenerator.js +41 -0
- package/_esm/logic/analyzeTransaction/createActions/json/erc20TransferGenerator.js.map +1 -0
- package/_esm/logic/analyzeTransaction/createActions/json/erc721Pattern.js +45 -0
- package/_esm/logic/analyzeTransaction/createActions/json/erc721Pattern.js.map +1 -0
- package/_esm/logic/analyzeTransaction/createActions/json/erc721TransferGenerator.js +41 -0
- package/_esm/logic/analyzeTransaction/createActions/json/erc721TransferGenerator.js.map +1 -0
- package/_esm/logic/analyzeTransaction/createActions/json/generateActions.js +177 -0
- package/_esm/logic/analyzeTransaction/createActions/json/generateActions.js.map +1 -0
- package/_esm/logic/analyzeTransaction/createActions/json/index.js +43 -0
- package/_esm/logic/analyzeTransaction/createActions/json/index.js.map +1 -0
- package/_esm/logic/analyzeTransaction/createActions/json/internalTransferGenerator.js +99 -0
- package/_esm/logic/analyzeTransaction/createActions/json/internalTransferGenerator.js.map +1 -0
- package/_esm/logic/analyzeTransaction/createActions/json/join.js +43 -0
- package/_esm/logic/analyzeTransaction/createActions/json/join.js.map +1 -0
- package/_esm/logic/analyzeTransaction/createActions/json/math.js +76 -0
- package/_esm/logic/analyzeTransaction/createActions/json/math.js.map +1 -0
- package/_esm/logic/analyzeTransaction/createActions/json/schema.js +389 -0
- package/_esm/logic/analyzeTransaction/createActions/json/schema.js.map +1 -0
- package/_esm/logic/analyzeTransaction/createActions/json/simpleValue.js +266 -0
- package/_esm/logic/analyzeTransaction/createActions/json/simpleValue.js.map +1 -0
- package/_esm/logic/analyzeTransaction/createActions/json/slice.js +10 -0
- package/_esm/logic/analyzeTransaction/createActions/json/slice.js.map +1 -0
- package/_esm/logic/analyzeTransaction/createActions/json/transferGenerator.js +124 -0
- package/_esm/logic/analyzeTransaction/createActions/json/transferGenerator.js.map +1 -0
- package/_esm/logic/analyzeTransaction/createActions/json/type.js +2 -0
- package/_esm/logic/analyzeTransaction/createActions/json/type.js.map +1 -0
- package/_esm/logic/analyzeTransaction/createActions/json/verifyTxSatisfiesCondition.js +511 -0
- package/_esm/logic/analyzeTransaction/createActions/json/verifyTxSatisfiesCondition.js.map +1 -0
- package/_esm/logic/analyzeTransaction/createActions/spam.js +3 -3
- package/_esm/logic/analyzeTransaction/createActions/spam.js.map +1 -1
- package/_esm/logic/analyzeTransaction/createActions/utils/containsUrlOrDomain.js +1 -1
- package/_esm/logic/analyzeTransaction/createActions/utils/containsUrlOrDomain.js.map +1 -1
- package/_esm/logic/analyzeTransaction/createActions/utils/createDirection.js +5 -5
- package/_esm/logic/analyzeTransaction/createActions/utils/createDirection.js.map +1 -1
- package/_esm/logic/analyzeTransaction/createActions/utils/createTokenTransfers.js +82 -65
- package/_esm/logic/analyzeTransaction/createActions/utils/createTokenTransfers.js.map +1 -1
- package/_esm/logic/analyzeTransaction/getDataFromDatasource.js +4 -6
- package/_esm/logic/analyzeTransaction/getDataFromDatasource.js.map +1 -1
- package/_esm/logic/analyzeTransaction/index.js +4 -4
- package/_esm/logic/analyzeTransaction/index.js.map +1 -1
- package/_types/index.d.ts +2 -0
- package/_types/index.d.ts.map +1 -1
- package/_types/logic/analyzeTransaction/createActions/fail.d.ts +3 -2
- package/_types/logic/analyzeTransaction/createActions/fail.d.ts.map +1 -1
- package/_types/logic/analyzeTransaction/createActions/gas.d.ts +3 -2
- package/_types/logic/analyzeTransaction/createActions/gas.d.ts.map +1 -1
- package/_types/logic/analyzeTransaction/createActions/general.d.ts +4 -4
- package/_types/logic/analyzeTransaction/createActions/general.d.ts.map +1 -1
- package/_types/logic/analyzeTransaction/createActions/index.d.ts +5 -3
- package/_types/logic/analyzeTransaction/createActions/index.d.ts.map +1 -1
- package/_types/logic/analyzeTransaction/createActions/json/addressIn.d.ts +10 -0
- package/_types/logic/analyzeTransaction/createActions/json/addressIn.d.ts.map +1 -0
- package/_types/logic/analyzeTransaction/createActions/json/allValue.d.ts +9 -0
- package/_types/logic/analyzeTransaction/createActions/json/allValue.d.ts.map +1 -0
- package/_types/logic/analyzeTransaction/createActions/json/arrayIn.d.ts +10 -0
- package/_types/logic/analyzeTransaction/createActions/json/arrayIn.d.ts.map +1 -0
- package/_types/logic/analyzeTransaction/createActions/json/betweenBigInt.d.ts +7 -0
- package/_types/logic/analyzeTransaction/createActions/json/betweenBigInt.d.ts.map +1 -0
- package/_types/logic/analyzeTransaction/createActions/json/customTransferGenerator.d.ts +12 -0
- package/_types/logic/analyzeTransaction/createActions/json/customTransferGenerator.d.ts.map +1 -0
- package/_types/logic/analyzeTransaction/createActions/json/erc1155Pattern.d.ts +10 -0
- package/_types/logic/analyzeTransaction/createActions/json/erc1155Pattern.d.ts.map +1 -0
- package/_types/logic/analyzeTransaction/createActions/json/erc1155TransferGenerator.d.ts +10 -0
- package/_types/logic/analyzeTransaction/createActions/json/erc1155TransferGenerator.d.ts.map +1 -0
- package/_types/logic/analyzeTransaction/createActions/json/erc20Pattern.d.ts +10 -0
- package/_types/logic/analyzeTransaction/createActions/json/erc20Pattern.d.ts.map +1 -0
- package/_types/logic/analyzeTransaction/createActions/json/erc20TransferGenerator.d.ts +10 -0
- package/_types/logic/analyzeTransaction/createActions/json/erc20TransferGenerator.d.ts.map +1 -0
- package/_types/logic/analyzeTransaction/createActions/json/erc721Pattern.d.ts +10 -0
- package/_types/logic/analyzeTransaction/createActions/json/erc721Pattern.d.ts.map +1 -0
- package/_types/logic/analyzeTransaction/createActions/json/erc721TransferGenerator.d.ts +10 -0
- package/_types/logic/analyzeTransaction/createActions/json/erc721TransferGenerator.d.ts.map +1 -0
- package/_types/logic/analyzeTransaction/createActions/json/generateActions.d.ts +14 -0
- package/_types/logic/analyzeTransaction/createActions/json/generateActions.d.ts.map +1 -0
- package/_types/logic/analyzeTransaction/createActions/json/index.d.ts +16 -0
- package/_types/logic/analyzeTransaction/createActions/json/index.d.ts.map +1 -0
- package/_types/logic/analyzeTransaction/createActions/json/internalTransferGenerator.d.ts +12 -0
- package/_types/logic/analyzeTransaction/createActions/json/internalTransferGenerator.d.ts.map +1 -0
- package/_types/logic/analyzeTransaction/createActions/json/join.d.ts +9 -0
- package/_types/logic/analyzeTransaction/createActions/json/join.d.ts.map +1 -0
- package/_types/logic/analyzeTransaction/createActions/json/math.d.ts +9 -0
- package/_types/logic/analyzeTransaction/createActions/json/math.d.ts.map +1 -0
- package/_types/logic/analyzeTransaction/createActions/json/schema.d.ts +658268 -0
- package/_types/logic/analyzeTransaction/createActions/json/schema.d.ts.map +1 -0
- package/_types/logic/analyzeTransaction/createActions/json/simpleValue.d.ts +9 -0
- package/_types/logic/analyzeTransaction/createActions/json/simpleValue.d.ts.map +1 -0
- package/_types/logic/analyzeTransaction/createActions/json/slice.d.ts +9 -0
- package/_types/logic/analyzeTransaction/createActions/json/slice.d.ts.map +1 -0
- package/_types/logic/analyzeTransaction/createActions/json/transferGenerator.d.ts +15 -0
- package/_types/logic/analyzeTransaction/createActions/json/transferGenerator.d.ts.map +1 -0
- package/_types/logic/analyzeTransaction/createActions/json/type.d.ts +6 -0
- package/_types/logic/analyzeTransaction/createActions/json/type.d.ts.map +1 -0
- package/_types/logic/analyzeTransaction/createActions/json/verifyTxSatisfiesCondition.d.ts +10 -0
- package/_types/logic/analyzeTransaction/createActions/json/verifyTxSatisfiesCondition.d.ts.map +1 -0
- package/_types/logic/analyzeTransaction/createActions/spam.d.ts +7 -5
- package/_types/logic/analyzeTransaction/createActions/spam.d.ts.map +1 -1
- package/_types/logic/analyzeTransaction/createActions/utils/createDirection.d.ts +5 -4
- package/_types/logic/analyzeTransaction/createActions/utils/createDirection.d.ts.map +1 -1
- package/_types/logic/analyzeTransaction/createActions/utils/createTokenTransfers.d.ts +3 -2
- package/_types/logic/analyzeTransaction/createActions/utils/createTokenTransfers.d.ts.map +1 -1
- package/_types/logic/analyzeTransaction/getDataFromDatasource.d.ts +11 -10
- package/_types/logic/analyzeTransaction/getDataFromDatasource.d.ts.map +1 -1
- package/_types/logic/analyzeTransaction/index.d.ts +8 -7
- package/_types/logic/analyzeTransaction/index.d.ts.map +1 -1
- package/_types/types/analyzeDataSource.d.ts +2 -3
- package/_types/types/analyzeDataSource.d.ts.map +1 -1
- package/_types/types/log.d.ts +2 -2
- package/_types/types/transactionDecoded.d.ts +38 -38
- package/_types/types/transactionDecoded.d.ts.map +1 -1
- package/_types/types/transactionDetail.d.ts +36 -36
- package/_types/types/transactionIndex.d.ts +5 -5
- package/analyzer/.DS_Store +0 -0
- package/chain/.DS_Store +0 -0
- package/client/.DS_Store +0 -0
- package/explorer/.DS_Store +0 -0
- package/index.ts +10 -0
- package/logic/analyzeTransaction/createActions/fail.ts +4 -8
- package/logic/analyzeTransaction/createActions/gas.ts +7 -6
- package/logic/analyzeTransaction/createActions/general.ts +5 -5
- package/logic/analyzeTransaction/createActions/index.ts +37 -9
- package/logic/analyzeTransaction/createActions/json/addressIn.ts +57 -0
- package/logic/analyzeTransaction/createActions/json/allValue.ts +41 -0
- package/logic/analyzeTransaction/createActions/json/arrayIn.ts +51 -0
- package/logic/analyzeTransaction/createActions/json/betweenBigInt.ts +18 -0
- package/logic/analyzeTransaction/createActions/json/customTransferGenerator.ts +166 -0
- package/logic/analyzeTransaction/createActions/json/erc1155Pattern.ts +108 -0
- package/logic/analyzeTransaction/createActions/json/erc1155TransferGenerator.ts +53 -0
- package/logic/analyzeTransaction/createActions/json/erc20Pattern.ts +96 -0
- package/logic/analyzeTransaction/createActions/json/erc20TransferGenerator.ts +53 -0
- package/logic/analyzeTransaction/createActions/json/erc721Pattern.ts +74 -0
- package/logic/analyzeTransaction/createActions/json/erc721TransferGenerator.ts +53 -0
- package/logic/analyzeTransaction/createActions/json/generateActions.ts +248 -0
- package/logic/analyzeTransaction/createActions/json/index.ts +72 -0
- package/logic/analyzeTransaction/createActions/json/internalTransferGenerator.ts +141 -0
- package/logic/analyzeTransaction/createActions/json/join.ts +54 -0
- package/logic/analyzeTransaction/createActions/json/math.ts +96 -0
- package/logic/analyzeTransaction/createActions/json/schema.ts +554 -0
- package/logic/analyzeTransaction/createActions/json/simpleValue.ts +339 -0
- package/logic/analyzeTransaction/createActions/json/slice.ts +21 -0
- package/logic/analyzeTransaction/createActions/json/transferGenerator.ts +158 -0
- package/logic/analyzeTransaction/createActions/json/type.ts +8 -0
- package/logic/analyzeTransaction/createActions/json/verifyTxSatisfiesCondition.ts +731 -0
- package/logic/analyzeTransaction/createActions/spam.ts +9 -6
- package/logic/analyzeTransaction/createActions/tests/tx-1-0x5c1345e9b83106f657de5a20d75de3e9f56725697b4ef47cafd019c1fa944128.json +383 -0
- package/logic/analyzeTransaction/createActions/utils/containsUrlOrDomain.ts +1 -1
- package/logic/analyzeTransaction/createActions/utils/createDirection.ts +10 -8
- package/logic/analyzeTransaction/createActions/utils/createTokenTransfers.ts +96 -68
- package/logic/analyzeTransaction/getDataFromDatasource.ts +14 -28
- package/logic/analyzeTransaction/index.ts +11 -10
- package/package.json +2 -2
- package/types/analyzeDataSource.ts +2 -2
package/index.ts
CHANGED
|
@@ -81,6 +81,16 @@ export { getAddressIndexData } from './logic/getAddressIndexData'
|
|
|
81
81
|
export { getTransactionDetail } from './logic/getTransactionDetail'
|
|
82
82
|
export { analyzeTransaction } from './logic/analyzeTransaction'
|
|
83
83
|
export { createActions } from './logic/analyzeTransaction/createActions'
|
|
84
|
+
export {
|
|
85
|
+
analyzerSchema,
|
|
86
|
+
conditionSchema,
|
|
87
|
+
generatorSchema,
|
|
88
|
+
} from './logic/analyzeTransaction/createActions/json/schema'
|
|
89
|
+
export type {
|
|
90
|
+
JsonAnalyzer,
|
|
91
|
+
Condition,
|
|
92
|
+
Generator,
|
|
93
|
+
} from './logic/analyzeTransaction/createActions/json/type'
|
|
84
94
|
export { decodeTransaction } from './logic/analyzeTransaction/decodeTransaction'
|
|
85
95
|
export {
|
|
86
96
|
isEvmAccountId,
|
|
@@ -1,27 +1,23 @@
|
|
|
1
1
|
import type { Action } from '@0xtorch/core'
|
|
2
|
+
import type { LowerHex } from '../../../types'
|
|
2
3
|
import type { TransactionDecoded } from '../../../types/transactionDecoded'
|
|
3
|
-
import { createEvmAddressId } from '../../../utils'
|
|
4
4
|
|
|
5
5
|
type CreateActionsByFailAnalyzerParameters = {
|
|
6
6
|
transaction: TransactionDecoded
|
|
7
|
-
|
|
7
|
+
relatedAddresses: Set<LowerHex>
|
|
8
8
|
source: string
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
export const createActionsByFailAnalyzer = ({
|
|
12
12
|
transaction,
|
|
13
|
-
|
|
13
|
+
relatedAddresses,
|
|
14
14
|
source,
|
|
15
15
|
}: CreateActionsByFailAnalyzerParameters): readonly Action[] | undefined => {
|
|
16
16
|
if (transaction.status !== 'reverted') {
|
|
17
17
|
return undefined
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
chainId: transaction.chainId,
|
|
22
|
-
address: transaction.from.address,
|
|
23
|
-
})
|
|
24
|
-
if (!accountIds.has(fromId)) {
|
|
20
|
+
if (!relatedAddresses.has(transaction.from.address)) {
|
|
25
21
|
return undefined
|
|
26
22
|
}
|
|
27
23
|
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import { createBigDecimal } from '@0xtorch/big-decimal'
|
|
2
2
|
import type { Action } from '@0xtorch/core'
|
|
3
3
|
import type { Chain } from '../../../chain'
|
|
4
|
+
import type { LowerHex } from '../../../types'
|
|
4
5
|
import type { TransactionDecoded } from '../../../types/transactionDecoded'
|
|
5
6
|
import { createEvmAddressId } from '../../../utils'
|
|
6
7
|
|
|
7
8
|
type CreateActionsByGasAnalyzerParameters = {
|
|
8
9
|
chain: Chain
|
|
9
10
|
transaction: TransactionDecoded
|
|
10
|
-
|
|
11
|
+
relatedAddresses: Set<LowerHex>
|
|
11
12
|
source: string
|
|
12
13
|
}
|
|
13
14
|
|
|
14
15
|
export const createActionsByGasAnalyzer = ({
|
|
15
16
|
chain,
|
|
16
17
|
transaction,
|
|
17
|
-
|
|
18
|
+
relatedAddresses,
|
|
18
19
|
source,
|
|
19
20
|
}: CreateActionsByGasAnalyzerParameters): readonly Action[] | undefined => {
|
|
20
21
|
// gas fee が 0 の場合は、 undefined を返す
|
|
@@ -22,14 +23,14 @@ export const createActionsByGasAnalyzer = ({
|
|
|
22
23
|
return undefined
|
|
23
24
|
}
|
|
24
25
|
|
|
25
|
-
// from address が
|
|
26
|
+
// from address が related addresses に含まれていない場合は、 undefined を返す
|
|
27
|
+
if (!relatedAddresses.has(transaction.from.address)) {
|
|
28
|
+
return undefined
|
|
29
|
+
}
|
|
26
30
|
const fromId = createEvmAddressId({
|
|
27
31
|
chainId: transaction.chainId,
|
|
28
32
|
address: transaction.from.address,
|
|
29
33
|
})
|
|
30
|
-
if (!accountIds.has(fromId)) {
|
|
31
|
-
return undefined
|
|
32
|
-
}
|
|
33
34
|
|
|
34
35
|
// transaction gas fee から action 作成
|
|
35
36
|
return [
|
|
@@ -6,10 +6,10 @@ import {
|
|
|
6
6
|
import type { TransactionDecoded } from '../../../types/transactionDecoded'
|
|
7
7
|
|
|
8
8
|
type CreateActionsByGasAnalyzerParameters = {
|
|
9
|
-
transaction: TransactionDecoded
|
|
10
|
-
transfers: readonly Transfer[]
|
|
11
|
-
accountIds: Set<string>
|
|
12
|
-
source: string
|
|
9
|
+
readonly transaction: TransactionDecoded
|
|
10
|
+
readonly transfers: readonly Transfer[]
|
|
11
|
+
readonly accountIds: Set<string>
|
|
12
|
+
readonly source: string
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
export const createActionsByGeneralAnalyzer = ({
|
|
@@ -18,7 +18,7 @@ export const createActionsByGeneralAnalyzer = ({
|
|
|
18
18
|
accountIds,
|
|
19
19
|
source,
|
|
20
20
|
}: CreateActionsByGasAnalyzerParameters): readonly Action[] => {
|
|
21
|
-
//
|
|
21
|
+
// 汎用分析してアクション作成
|
|
22
22
|
const actions = createGeneralActionsByTransfers({
|
|
23
23
|
transfers,
|
|
24
24
|
accountIds,
|
|
@@ -1,25 +1,28 @@
|
|
|
1
1
|
import type { Action } from '@0xtorch/core'
|
|
2
2
|
import type { Chain } from '../../../chain'
|
|
3
|
+
import type { LowerHex } from '../../../types'
|
|
3
4
|
import type { TransactionDecoded } from '../../../types/transactionDecoded'
|
|
4
|
-
import { createEvmActionSource } from '../../../utils'
|
|
5
|
+
import { createEvmActionSource, createEvmAddressId } from '../../../utils'
|
|
5
6
|
import { createActionsByFailAnalyzer } from './fail'
|
|
6
7
|
import { createActionsByGasAnalyzer } from './gas'
|
|
7
8
|
import { createActionsByGeneralAnalyzer } from './general'
|
|
9
|
+
import { createActionsByJsonAnalyzer } from './json'
|
|
10
|
+
import type { JsonAnalyzer } from './json/type'
|
|
8
11
|
import { createActionsBySpamAnalyzer } from './spam'
|
|
9
12
|
import { createTokenTransfers } from './utils/createTokenTransfers'
|
|
10
13
|
|
|
11
14
|
type CreateActionsParameters = {
|
|
12
15
|
chain: Chain
|
|
13
16
|
transaction: TransactionDecoded
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
jsonAnalyzers: readonly unknown[]
|
|
17
|
+
relatedAddresses: Set<LowerHex>
|
|
18
|
+
jsonAnalyzers: readonly JsonAnalyzer[]
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
export const createActions = ({
|
|
20
22
|
chain,
|
|
21
23
|
transaction,
|
|
22
|
-
|
|
24
|
+
relatedAddresses,
|
|
25
|
+
jsonAnalyzers,
|
|
23
26
|
}: CreateActionsParameters): readonly Action[] => {
|
|
24
27
|
const actions: Action[] = []
|
|
25
28
|
const source = createEvmActionSource({
|
|
@@ -31,7 +34,7 @@ export const createActions = ({
|
|
|
31
34
|
const actionsByGasAnalyzer = createActionsByGasAnalyzer({
|
|
32
35
|
chain,
|
|
33
36
|
transaction,
|
|
34
|
-
|
|
37
|
+
relatedAddresses,
|
|
35
38
|
source,
|
|
36
39
|
})
|
|
37
40
|
if (actionsByGasAnalyzer !== undefined) {
|
|
@@ -41,7 +44,7 @@ export const createActions = ({
|
|
|
41
44
|
// [some] fail analyzer
|
|
42
45
|
const actionsByFailAnalyzer = createActionsByFailAnalyzer({
|
|
43
46
|
transaction,
|
|
44
|
-
|
|
47
|
+
relatedAddresses,
|
|
45
48
|
source,
|
|
46
49
|
})
|
|
47
50
|
if (actionsByFailAnalyzer !== undefined) {
|
|
@@ -49,16 +52,41 @@ export const createActions = ({
|
|
|
49
52
|
return resetAccountActionsOrder(actions)
|
|
50
53
|
}
|
|
51
54
|
|
|
52
|
-
const transfers = createTokenTransfers({
|
|
55
|
+
const transfers = createTokenTransfers({
|
|
56
|
+
chain,
|
|
57
|
+
transaction,
|
|
58
|
+
relatedAddresses,
|
|
59
|
+
})
|
|
60
|
+
const accountIds = new Set(
|
|
61
|
+
[...relatedAddresses].map((address) =>
|
|
62
|
+
createEvmAddressId({
|
|
63
|
+
chainId: transaction.chainId,
|
|
64
|
+
address,
|
|
65
|
+
}),
|
|
66
|
+
),
|
|
67
|
+
)
|
|
53
68
|
|
|
54
|
-
// TODO
|
|
55
69
|
// [some] json analyzer
|
|
70
|
+
const actionsByJsonAnalyzer = createActionsByJsonAnalyzer({
|
|
71
|
+
chain,
|
|
72
|
+
transaction,
|
|
73
|
+
relatedAddresses,
|
|
74
|
+
accountIds,
|
|
75
|
+
jsonAnalyzers,
|
|
76
|
+
transfers,
|
|
77
|
+
source,
|
|
78
|
+
})
|
|
79
|
+
if (actionsByJsonAnalyzer !== undefined) {
|
|
80
|
+
actions.push(...actionsByJsonAnalyzer)
|
|
81
|
+
return resetAccountActionsOrder(actions)
|
|
82
|
+
}
|
|
56
83
|
|
|
57
84
|
// [some] spam analyzer
|
|
58
85
|
const actionsBySpamAnalyzer = createActionsBySpamAnalyzer({
|
|
59
86
|
transaction,
|
|
60
87
|
transfers,
|
|
61
88
|
accountIds,
|
|
89
|
+
relatedAddresses,
|
|
62
90
|
source,
|
|
63
91
|
})
|
|
64
92
|
if (actionsBySpamAnalyzer !== undefined) {
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { z } from 'zod'
|
|
2
|
+
import type { LowerHex, TransactionDecoded } from '../../../../types'
|
|
3
|
+
import type { addressInSchema } from './schema'
|
|
4
|
+
|
|
5
|
+
export const checkValueIsAddressIn = ({
|
|
6
|
+
value,
|
|
7
|
+
schema,
|
|
8
|
+
transaction,
|
|
9
|
+
relatedAddresses,
|
|
10
|
+
}: {
|
|
11
|
+
readonly value: string
|
|
12
|
+
readonly schema: z.infer<typeof addressInSchema>
|
|
13
|
+
readonly transaction: TransactionDecoded
|
|
14
|
+
readonly relatedAddresses: Set<LowerHex>
|
|
15
|
+
}): boolean => {
|
|
16
|
+
const valuesSet = getAddressInValues({
|
|
17
|
+
schema,
|
|
18
|
+
transaction,
|
|
19
|
+
relatedAddresses,
|
|
20
|
+
})
|
|
21
|
+
if (schema.not === true) {
|
|
22
|
+
return !valuesSet.has(value)
|
|
23
|
+
}
|
|
24
|
+
return valuesSet.has(value)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const getAddressInValues = ({
|
|
28
|
+
schema,
|
|
29
|
+
transaction,
|
|
30
|
+
relatedAddresses,
|
|
31
|
+
}: {
|
|
32
|
+
readonly schema: z.infer<typeof addressInSchema>
|
|
33
|
+
readonly transaction: TransactionDecoded
|
|
34
|
+
readonly relatedAddresses: Set<LowerHex>
|
|
35
|
+
}): Set<string> => {
|
|
36
|
+
const set = new Set<string>()
|
|
37
|
+
|
|
38
|
+
for (const value of schema.values) {
|
|
39
|
+
if (value === 'related') {
|
|
40
|
+
for (const address of relatedAddresses) {
|
|
41
|
+
set.add(address)
|
|
42
|
+
}
|
|
43
|
+
continue
|
|
44
|
+
}
|
|
45
|
+
if (value === 'from') {
|
|
46
|
+
set.add(transaction.from.address)
|
|
47
|
+
continue
|
|
48
|
+
}
|
|
49
|
+
if (value === 'to') {
|
|
50
|
+
set.add(transaction.to?.address ?? '')
|
|
51
|
+
continue
|
|
52
|
+
}
|
|
53
|
+
set.add(value)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return set
|
|
57
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { z } from 'zod'
|
|
2
|
+
import type { LowerHex, TransactionDecoded } from '../../../../types'
|
|
3
|
+
import { getJoinValue } from './join'
|
|
4
|
+
import { getMathValue } from './math'
|
|
5
|
+
import type { allValueSchema } from './schema'
|
|
6
|
+
import { getSimpleValue } from './simpleValue'
|
|
7
|
+
import { getSliceValue } from './slice'
|
|
8
|
+
|
|
9
|
+
export const getAllValue = ({
|
|
10
|
+
schema,
|
|
11
|
+
transaction,
|
|
12
|
+
relatedAddresses,
|
|
13
|
+
}: {
|
|
14
|
+
readonly schema: z.infer<typeof allValueSchema>
|
|
15
|
+
readonly transaction: TransactionDecoded
|
|
16
|
+
readonly relatedAddresses: Set<LowerHex>
|
|
17
|
+
}): string => {
|
|
18
|
+
if (typeof schema === 'string') {
|
|
19
|
+
// simple value
|
|
20
|
+
return getSimpleValue({ schema, transaction, relatedAddresses })
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
switch (schema.type) {
|
|
24
|
+
case 'math': {
|
|
25
|
+
// math value
|
|
26
|
+
return getMathValue({ schema, transaction, relatedAddresses }).toString()
|
|
27
|
+
}
|
|
28
|
+
case 'slice': {
|
|
29
|
+
// slice value
|
|
30
|
+
return getSliceValue({ schema, transaction, relatedAddresses })
|
|
31
|
+
}
|
|
32
|
+
case 'join': {
|
|
33
|
+
// join value
|
|
34
|
+
return getJoinValue({ schema, transaction, relatedAddresses })
|
|
35
|
+
}
|
|
36
|
+
default: {
|
|
37
|
+
// simple value
|
|
38
|
+
return getSimpleValue({ schema, transaction, relatedAddresses })
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { z } from 'zod'
|
|
2
|
+
import type { LowerHex, TransactionDecoded } from '../../../../types'
|
|
3
|
+
import { getAllValue } from './allValue'
|
|
4
|
+
import type { arrayInSchema } from './schema'
|
|
5
|
+
|
|
6
|
+
export const checkValueIsArrayIn = ({
|
|
7
|
+
value,
|
|
8
|
+
schema,
|
|
9
|
+
transaction,
|
|
10
|
+
relatedAddresses,
|
|
11
|
+
}: {
|
|
12
|
+
readonly value: string
|
|
13
|
+
readonly schema: z.infer<typeof arrayInSchema>
|
|
14
|
+
readonly transaction: TransactionDecoded
|
|
15
|
+
readonly relatedAddresses: Set<LowerHex>
|
|
16
|
+
}): boolean => {
|
|
17
|
+
const valuesSet = getArrayInValues({
|
|
18
|
+
schema,
|
|
19
|
+
transaction,
|
|
20
|
+
relatedAddresses,
|
|
21
|
+
})
|
|
22
|
+
if (schema.not === true) {
|
|
23
|
+
return !valuesSet.has(value)
|
|
24
|
+
}
|
|
25
|
+
return valuesSet.has(value)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const getArrayInValues = ({
|
|
29
|
+
schema,
|
|
30
|
+
transaction,
|
|
31
|
+
relatedAddresses,
|
|
32
|
+
}: {
|
|
33
|
+
readonly schema: z.infer<typeof arrayInSchema>
|
|
34
|
+
readonly transaction: TransactionDecoded
|
|
35
|
+
readonly relatedAddresses: Set<LowerHex>
|
|
36
|
+
}): Set<string> => {
|
|
37
|
+
const set = new Set<string>()
|
|
38
|
+
|
|
39
|
+
for (const value of schema.values) {
|
|
40
|
+
// related
|
|
41
|
+
if (value === 'related') {
|
|
42
|
+
for (const address of relatedAddresses) {
|
|
43
|
+
set.add(address)
|
|
44
|
+
}
|
|
45
|
+
continue
|
|
46
|
+
}
|
|
47
|
+
// all value
|
|
48
|
+
set.add(getAllValue({ schema: value, transaction, relatedAddresses }))
|
|
49
|
+
}
|
|
50
|
+
return set
|
|
51
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { z } from 'zod'
|
|
2
|
+
import type { betweenBigIntSchema } from './schema'
|
|
3
|
+
|
|
4
|
+
export const checkValueIsBetweenBigInt = ({
|
|
5
|
+
value,
|
|
6
|
+
schema,
|
|
7
|
+
}: {
|
|
8
|
+
readonly value: bigint
|
|
9
|
+
readonly schema: z.infer<typeof betweenBigIntSchema>
|
|
10
|
+
}): boolean => {
|
|
11
|
+
if (schema.min !== undefined && value < schema.min) {
|
|
12
|
+
return false
|
|
13
|
+
}
|
|
14
|
+
if (schema.max !== undefined && value > schema.max) {
|
|
15
|
+
return false
|
|
16
|
+
}
|
|
17
|
+
return true
|
|
18
|
+
}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { createBigDecimal } from '@0xtorch/big-decimal'
|
|
2
|
+
import type { CryptoCurrency, Nft, Transfer } from '@0xtorch/core'
|
|
3
|
+
import type { z } from 'zod'
|
|
4
|
+
import type { Chain } from '../../../../chain'
|
|
5
|
+
import {
|
|
6
|
+
type LowerHex,
|
|
7
|
+
type TransactionDecoded,
|
|
8
|
+
isHex,
|
|
9
|
+
toLowerHex,
|
|
10
|
+
} from '../../../../types'
|
|
11
|
+
import { createEvmAddressId } from '../../../../utils'
|
|
12
|
+
import { getAllValue } from './allValue'
|
|
13
|
+
import { checkTransferIsMatchErc20Pattern } from './erc20Pattern'
|
|
14
|
+
import { checkTransferIsMatchErc721Pattern } from './erc721Pattern'
|
|
15
|
+
import { checkTransferIsMatchErc1155Pattern } from './erc1155Pattern'
|
|
16
|
+
import type { customTransferGeneratorSchema } from './schema'
|
|
17
|
+
|
|
18
|
+
export const generateCustomTransfer = ({
|
|
19
|
+
schema,
|
|
20
|
+
chain,
|
|
21
|
+
transaction,
|
|
22
|
+
relatedAddresses,
|
|
23
|
+
}: {
|
|
24
|
+
readonly schema: z.infer<typeof customTransferGeneratorSchema>
|
|
25
|
+
readonly chain: Chain
|
|
26
|
+
readonly transaction: TransactionDecoded
|
|
27
|
+
readonly relatedAddresses: Set<LowerHex>
|
|
28
|
+
}): Transfer => {
|
|
29
|
+
const fromText =
|
|
30
|
+
schema.from === undefined
|
|
31
|
+
? undefined
|
|
32
|
+
: getAllValue({
|
|
33
|
+
schema: schema.from,
|
|
34
|
+
transaction,
|
|
35
|
+
relatedAddresses,
|
|
36
|
+
})
|
|
37
|
+
const from =
|
|
38
|
+
fromText === undefined || !isHex(fromText)
|
|
39
|
+
? undefined
|
|
40
|
+
: createEvmAddressId({
|
|
41
|
+
chainId: transaction.chainId,
|
|
42
|
+
address: toLowerHex(fromText),
|
|
43
|
+
})
|
|
44
|
+
|
|
45
|
+
const toText =
|
|
46
|
+
schema.to === undefined
|
|
47
|
+
? undefined
|
|
48
|
+
: getAllValue({
|
|
49
|
+
schema: schema.to,
|
|
50
|
+
transaction,
|
|
51
|
+
relatedAddresses,
|
|
52
|
+
})
|
|
53
|
+
const to =
|
|
54
|
+
toText === undefined || !isHex(toText)
|
|
55
|
+
? undefined
|
|
56
|
+
: createEvmAddressId({
|
|
57
|
+
chainId: transaction.chainId,
|
|
58
|
+
address: toLowerHex(toText),
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
const { asset, decimals } = getAssetWithDecimals({
|
|
62
|
+
schema: schema.asset,
|
|
63
|
+
chain,
|
|
64
|
+
transaction,
|
|
65
|
+
relatedAddresses,
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
const amountText = getAllValue({
|
|
69
|
+
schema: schema.amount,
|
|
70
|
+
transaction,
|
|
71
|
+
relatedAddresses,
|
|
72
|
+
})
|
|
73
|
+
const amount = createBigDecimal(BigInt(amountText), decimals)
|
|
74
|
+
|
|
75
|
+
return {
|
|
76
|
+
direction: schema.direction,
|
|
77
|
+
from,
|
|
78
|
+
to,
|
|
79
|
+
asset,
|
|
80
|
+
amount,
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const getAssetWithDecimals = ({
|
|
85
|
+
schema,
|
|
86
|
+
chain,
|
|
87
|
+
transaction,
|
|
88
|
+
relatedAddresses,
|
|
89
|
+
}: {
|
|
90
|
+
readonly schema: z.infer<typeof customTransferGeneratorSchema>['asset']
|
|
91
|
+
readonly chain: Chain
|
|
92
|
+
readonly transaction: TransactionDecoded
|
|
93
|
+
readonly relatedAddresses: Set<LowerHex>
|
|
94
|
+
}): { readonly asset: CryptoCurrency | Nft; readonly decimals: number } => {
|
|
95
|
+
switch (schema.type) {
|
|
96
|
+
case 'native': {
|
|
97
|
+
return {
|
|
98
|
+
asset: chain.nativeToken.currency,
|
|
99
|
+
decimals: chain.nativeToken.decimals,
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
case 'erc20': {
|
|
103
|
+
let currentIndex = -1
|
|
104
|
+
for (const transfer of transaction.erc20Transfers) {
|
|
105
|
+
const matched = checkTransferIsMatchErc20Pattern({
|
|
106
|
+
transfer,
|
|
107
|
+
schema,
|
|
108
|
+
transaction,
|
|
109
|
+
relatedAddresses,
|
|
110
|
+
})
|
|
111
|
+
if (matched) {
|
|
112
|
+
currentIndex += 1
|
|
113
|
+
if (currentIndex === schema.index) {
|
|
114
|
+
return {
|
|
115
|
+
asset: transfer.token.currency,
|
|
116
|
+
decimals: transfer.token.decimals,
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
throw new Error('Matched ERC20 transfer is not found')
|
|
122
|
+
}
|
|
123
|
+
case 'erc721': {
|
|
124
|
+
let currentIndex = -1
|
|
125
|
+
for (const transfer of transaction.erc721Transfers) {
|
|
126
|
+
const matched = checkTransferIsMatchErc721Pattern({
|
|
127
|
+
transfer,
|
|
128
|
+
schema,
|
|
129
|
+
transaction,
|
|
130
|
+
relatedAddresses,
|
|
131
|
+
})
|
|
132
|
+
if (matched) {
|
|
133
|
+
currentIndex += 1
|
|
134
|
+
if (currentIndex === schema.index) {
|
|
135
|
+
return {
|
|
136
|
+
asset: transfer.token,
|
|
137
|
+
decimals: 0,
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
throw new Error('Matched ERC721 transfer is not found')
|
|
143
|
+
}
|
|
144
|
+
case 'erc1155': {
|
|
145
|
+
let currentIndex = -1
|
|
146
|
+
for (const transfer of transaction.erc1155Transfers) {
|
|
147
|
+
const matched = checkTransferIsMatchErc1155Pattern({
|
|
148
|
+
transfer,
|
|
149
|
+
schema,
|
|
150
|
+
transaction,
|
|
151
|
+
relatedAddresses,
|
|
152
|
+
})
|
|
153
|
+
if (matched) {
|
|
154
|
+
currentIndex += 1
|
|
155
|
+
if (currentIndex === schema.index) {
|
|
156
|
+
return {
|
|
157
|
+
asset: transfer.token,
|
|
158
|
+
decimals: 0,
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
throw new Error('Matched ERC1155 transfer is not found')
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import type { z } from 'zod'
|
|
2
|
+
import type {
|
|
3
|
+
Erc1155TokenTransfer,
|
|
4
|
+
LowerHex,
|
|
5
|
+
TransactionDecoded,
|
|
6
|
+
} from '../../../../types'
|
|
7
|
+
import { getAllValue } from './allValue'
|
|
8
|
+
import { checkValueIsArrayIn } from './arrayIn'
|
|
9
|
+
import { checkValueIsBetweenBigInt } from './betweenBigInt'
|
|
10
|
+
import type { erc1155TransferPatternSchema } from './schema'
|
|
11
|
+
|
|
12
|
+
export const checkTransferIsMatchErc1155Pattern = ({
|
|
13
|
+
transfer,
|
|
14
|
+
schema,
|
|
15
|
+
transaction,
|
|
16
|
+
relatedAddresses,
|
|
17
|
+
}: {
|
|
18
|
+
readonly transfer: Erc1155TokenTransfer
|
|
19
|
+
readonly schema: z.infer<typeof erc1155TransferPatternSchema>
|
|
20
|
+
readonly transaction: TransactionDecoded
|
|
21
|
+
readonly relatedAddresses: Set<LowerHex>
|
|
22
|
+
}): boolean => {
|
|
23
|
+
// address
|
|
24
|
+
if (
|
|
25
|
+
schema.address !== undefined &&
|
|
26
|
+
!checkValueIsArrayIn({
|
|
27
|
+
value: transfer.address,
|
|
28
|
+
schema: schema.address,
|
|
29
|
+
transaction,
|
|
30
|
+
relatedAddresses,
|
|
31
|
+
})
|
|
32
|
+
) {
|
|
33
|
+
return false
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// from
|
|
37
|
+
if (
|
|
38
|
+
schema.from !== undefined &&
|
|
39
|
+
!checkValueIsArrayIn({
|
|
40
|
+
value: transfer.from,
|
|
41
|
+
schema: schema.from,
|
|
42
|
+
transaction,
|
|
43
|
+
relatedAddresses,
|
|
44
|
+
})
|
|
45
|
+
) {
|
|
46
|
+
return false
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// to
|
|
50
|
+
if (
|
|
51
|
+
schema.to !== undefined &&
|
|
52
|
+
!checkValueIsArrayIn({
|
|
53
|
+
value: transfer.to,
|
|
54
|
+
schema: schema.to,
|
|
55
|
+
transaction,
|
|
56
|
+
relatedAddresses,
|
|
57
|
+
})
|
|
58
|
+
) {
|
|
59
|
+
return false
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// id
|
|
63
|
+
if (
|
|
64
|
+
schema.id !== undefined &&
|
|
65
|
+
getAllValue({
|
|
66
|
+
schema: schema.id,
|
|
67
|
+
transaction,
|
|
68
|
+
relatedAddresses,
|
|
69
|
+
}) !== transfer.tokenId.toString()
|
|
70
|
+
) {
|
|
71
|
+
return false
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// amount
|
|
75
|
+
if (schema.amount !== undefined) {
|
|
76
|
+
if (typeof schema.amount === 'string') {
|
|
77
|
+
if (transfer.value.toString() !== schema.amount) {
|
|
78
|
+
return false
|
|
79
|
+
}
|
|
80
|
+
} else {
|
|
81
|
+
switch (schema.amount.type) {
|
|
82
|
+
case 'between': {
|
|
83
|
+
if (
|
|
84
|
+
!checkValueIsBetweenBigInt({
|
|
85
|
+
value: transfer.value,
|
|
86
|
+
schema: schema.amount,
|
|
87
|
+
})
|
|
88
|
+
) {
|
|
89
|
+
return false
|
|
90
|
+
}
|
|
91
|
+
break
|
|
92
|
+
}
|
|
93
|
+
default: {
|
|
94
|
+
const value = getAllValue({
|
|
95
|
+
schema: schema.amount,
|
|
96
|
+
transaction,
|
|
97
|
+
relatedAddresses,
|
|
98
|
+
})
|
|
99
|
+
if (transfer.value.toString() !== value) {
|
|
100
|
+
return false
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
return true
|
|
108
|
+
}
|