@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.
Files changed (242) hide show
  1. package/.DS_Store +0 -0
  2. package/_cjs/index.js +6 -2
  3. package/_cjs/index.js.map +1 -1
  4. package/_cjs/logic/analyzeTransaction/createActions/fail.js +2 -7
  5. package/_cjs/logic/analyzeTransaction/createActions/fail.js.map +1 -1
  6. package/_cjs/logic/analyzeTransaction/createActions/gas.js +4 -4
  7. package/_cjs/logic/analyzeTransaction/createActions/gas.js.map +1 -1
  8. package/_cjs/logic/analyzeTransaction/createActions/index.js +27 -4
  9. package/_cjs/logic/analyzeTransaction/createActions/index.js.map +1 -1
  10. package/_cjs/logic/analyzeTransaction/createActions/json/addressIn.js +37 -0
  11. package/_cjs/logic/analyzeTransaction/createActions/json/addressIn.js.map +1 -0
  12. package/_cjs/logic/analyzeTransaction/createActions/json/allValue.js +28 -0
  13. package/_cjs/logic/analyzeTransaction/createActions/json/allValue.js.map +1 -0
  14. package/_cjs/logic/analyzeTransaction/createActions/json/arrayIn.js +30 -0
  15. package/_cjs/logic/analyzeTransaction/createActions/json/arrayIn.js.map +1 -0
  16. package/_cjs/logic/analyzeTransaction/createActions/json/betweenBigInt.js +14 -0
  17. package/_cjs/logic/analyzeTransaction/createActions/json/betweenBigInt.js.map +1 -0
  18. package/_cjs/logic/analyzeTransaction/createActions/json/customTransferGenerator.js +132 -0
  19. package/_cjs/logic/analyzeTransaction/createActions/json/customTransferGenerator.js.map +1 -0
  20. package/_cjs/logic/analyzeTransaction/createActions/json/erc1155Pattern.js +76 -0
  21. package/_cjs/logic/analyzeTransaction/createActions/json/erc1155Pattern.js.map +1 -0
  22. package/_cjs/logic/analyzeTransaction/createActions/json/erc1155TransferGenerator.js +45 -0
  23. package/_cjs/logic/analyzeTransaction/createActions/json/erc1155TransferGenerator.js.map +1 -0
  24. package/_cjs/logic/analyzeTransaction/createActions/json/erc20Pattern.js +68 -0
  25. package/_cjs/logic/analyzeTransaction/createActions/json/erc20Pattern.js.map +1 -0
  26. package/_cjs/logic/analyzeTransaction/createActions/json/erc20TransferGenerator.js +45 -0
  27. package/_cjs/logic/analyzeTransaction/createActions/json/erc20TransferGenerator.js.map +1 -0
  28. package/_cjs/logic/analyzeTransaction/createActions/json/erc721Pattern.js +45 -0
  29. package/_cjs/logic/analyzeTransaction/createActions/json/erc721Pattern.js.map +1 -0
  30. package/_cjs/logic/analyzeTransaction/createActions/json/erc721TransferGenerator.js +45 -0
  31. package/_cjs/logic/analyzeTransaction/createActions/json/erc721TransferGenerator.js.map +1 -0
  32. package/_cjs/logic/analyzeTransaction/createActions/json/generateActions.js +179 -0
  33. package/_cjs/logic/analyzeTransaction/createActions/json/generateActions.js.map +1 -0
  34. package/_cjs/logic/analyzeTransaction/createActions/json/index.js +41 -0
  35. package/_cjs/logic/analyzeTransaction/createActions/json/index.js.map +1 -0
  36. package/_cjs/logic/analyzeTransaction/createActions/json/internalTransferGenerator.js +100 -0
  37. package/_cjs/logic/analyzeTransaction/createActions/json/internalTransferGenerator.js.map +1 -0
  38. package/_cjs/logic/analyzeTransaction/createActions/json/join.js +44 -0
  39. package/_cjs/logic/analyzeTransaction/createActions/json/join.js.map +1 -0
  40. package/_cjs/logic/analyzeTransaction/createActions/json/math.js +80 -0
  41. package/_cjs/logic/analyzeTransaction/createActions/json/math.js.map +1 -0
  42. package/_cjs/logic/analyzeTransaction/createActions/json/schema.js +385 -0
  43. package/_cjs/logic/analyzeTransaction/createActions/json/schema.js.map +1 -0
  44. package/_cjs/logic/analyzeTransaction/createActions/json/simpleValue.js +253 -0
  45. package/_cjs/logic/analyzeTransaction/createActions/json/simpleValue.js.map +1 -0
  46. package/_cjs/logic/analyzeTransaction/createActions/json/slice.js +14 -0
  47. package/_cjs/logic/analyzeTransaction/createActions/json/slice.js.map +1 -0
  48. package/_cjs/logic/analyzeTransaction/createActions/json/transferGenerator.js +128 -0
  49. package/_cjs/logic/analyzeTransaction/createActions/json/transferGenerator.js.map +1 -0
  50. package/_cjs/logic/analyzeTransaction/createActions/json/type.js +3 -0
  51. package/_cjs/logic/analyzeTransaction/createActions/json/type.js.map +1 -0
  52. package/_cjs/logic/analyzeTransaction/createActions/json/verifyTxSatisfiesCondition.js +492 -0
  53. package/_cjs/logic/analyzeTransaction/createActions/json/verifyTxSatisfiesCondition.js.map +1 -0
  54. package/_cjs/logic/analyzeTransaction/createActions/spam.js +2 -2
  55. package/_cjs/logic/analyzeTransaction/createActions/spam.js.map +1 -1
  56. package/_cjs/logic/analyzeTransaction/createActions/utils/containsUrlOrDomain.js +1 -1
  57. package/_cjs/logic/analyzeTransaction/createActions/utils/containsUrlOrDomain.js.map +1 -1
  58. package/_cjs/logic/analyzeTransaction/createActions/utils/createDirection.js +5 -5
  59. package/_cjs/logic/analyzeTransaction/createActions/utils/createDirection.js.map +1 -1
  60. package/_cjs/logic/analyzeTransaction/createActions/utils/createTokenTransfers.js +82 -65
  61. package/_cjs/logic/analyzeTransaction/createActions/utils/createTokenTransfers.js.map +1 -1
  62. package/_cjs/logic/analyzeTransaction/getDataFromDatasource.js +3 -5
  63. package/_cjs/logic/analyzeTransaction/getDataFromDatasource.js.map +1 -1
  64. package/_cjs/logic/analyzeTransaction/index.js +4 -4
  65. package/_cjs/logic/analyzeTransaction/index.js.map +1 -1
  66. package/_esm/index.js +1 -0
  67. package/_esm/index.js.map +1 -1
  68. package/_esm/logic/analyzeTransaction/createActions/fail.js +2 -7
  69. package/_esm/logic/analyzeTransaction/createActions/fail.js.map +1 -1
  70. package/_esm/logic/analyzeTransaction/createActions/gas.js +5 -5
  71. package/_esm/logic/analyzeTransaction/createActions/gas.js.map +1 -1
  72. package/_esm/logic/analyzeTransaction/createActions/general.js +1 -1
  73. package/_esm/logic/analyzeTransaction/createActions/general.js.map +1 -1
  74. package/_esm/logic/analyzeTransaction/createActions/index.js +28 -6
  75. package/_esm/logic/analyzeTransaction/createActions/index.js.map +1 -1
  76. package/_esm/logic/analyzeTransaction/createActions/json/addressIn.js +33 -0
  77. package/_esm/logic/analyzeTransaction/createActions/json/addressIn.js.map +1 -0
  78. package/_esm/logic/analyzeTransaction/createActions/json/allValue.js +29 -0
  79. package/_esm/logic/analyzeTransaction/createActions/json/allValue.js.map +1 -0
  80. package/_esm/logic/analyzeTransaction/createActions/json/arrayIn.js +28 -0
  81. package/_esm/logic/analyzeTransaction/createActions/json/arrayIn.js.map +1 -0
  82. package/_esm/logic/analyzeTransaction/createActions/json/betweenBigInt.js +10 -0
  83. package/_esm/logic/analyzeTransaction/createActions/json/betweenBigInt.js.map +1 -0
  84. package/_esm/logic/analyzeTransaction/createActions/json/customTransferGenerator.js +128 -0
  85. package/_esm/logic/analyzeTransaction/createActions/json/customTransferGenerator.js.map +1 -0
  86. package/_esm/logic/analyzeTransaction/createActions/json/erc1155Pattern.js +77 -0
  87. package/_esm/logic/analyzeTransaction/createActions/json/erc1155Pattern.js.map +1 -0
  88. package/_esm/logic/analyzeTransaction/createActions/json/erc1155TransferGenerator.js +41 -0
  89. package/_esm/logic/analyzeTransaction/createActions/json/erc1155TransferGenerator.js.map +1 -0
  90. package/_esm/logic/analyzeTransaction/createActions/json/erc20Pattern.js +68 -0
  91. package/_esm/logic/analyzeTransaction/createActions/json/erc20Pattern.js.map +1 -0
  92. package/_esm/logic/analyzeTransaction/createActions/json/erc20TransferGenerator.js +41 -0
  93. package/_esm/logic/analyzeTransaction/createActions/json/erc20TransferGenerator.js.map +1 -0
  94. package/_esm/logic/analyzeTransaction/createActions/json/erc721Pattern.js +45 -0
  95. package/_esm/logic/analyzeTransaction/createActions/json/erc721Pattern.js.map +1 -0
  96. package/_esm/logic/analyzeTransaction/createActions/json/erc721TransferGenerator.js +41 -0
  97. package/_esm/logic/analyzeTransaction/createActions/json/erc721TransferGenerator.js.map +1 -0
  98. package/_esm/logic/analyzeTransaction/createActions/json/generateActions.js +177 -0
  99. package/_esm/logic/analyzeTransaction/createActions/json/generateActions.js.map +1 -0
  100. package/_esm/logic/analyzeTransaction/createActions/json/index.js +43 -0
  101. package/_esm/logic/analyzeTransaction/createActions/json/index.js.map +1 -0
  102. package/_esm/logic/analyzeTransaction/createActions/json/internalTransferGenerator.js +99 -0
  103. package/_esm/logic/analyzeTransaction/createActions/json/internalTransferGenerator.js.map +1 -0
  104. package/_esm/logic/analyzeTransaction/createActions/json/join.js +43 -0
  105. package/_esm/logic/analyzeTransaction/createActions/json/join.js.map +1 -0
  106. package/_esm/logic/analyzeTransaction/createActions/json/math.js +76 -0
  107. package/_esm/logic/analyzeTransaction/createActions/json/math.js.map +1 -0
  108. package/_esm/logic/analyzeTransaction/createActions/json/schema.js +389 -0
  109. package/_esm/logic/analyzeTransaction/createActions/json/schema.js.map +1 -0
  110. package/_esm/logic/analyzeTransaction/createActions/json/simpleValue.js +266 -0
  111. package/_esm/logic/analyzeTransaction/createActions/json/simpleValue.js.map +1 -0
  112. package/_esm/logic/analyzeTransaction/createActions/json/slice.js +10 -0
  113. package/_esm/logic/analyzeTransaction/createActions/json/slice.js.map +1 -0
  114. package/_esm/logic/analyzeTransaction/createActions/json/transferGenerator.js +124 -0
  115. package/_esm/logic/analyzeTransaction/createActions/json/transferGenerator.js.map +1 -0
  116. package/_esm/logic/analyzeTransaction/createActions/json/type.js +2 -0
  117. package/_esm/logic/analyzeTransaction/createActions/json/type.js.map +1 -0
  118. package/_esm/logic/analyzeTransaction/createActions/json/verifyTxSatisfiesCondition.js +511 -0
  119. package/_esm/logic/analyzeTransaction/createActions/json/verifyTxSatisfiesCondition.js.map +1 -0
  120. package/_esm/logic/analyzeTransaction/createActions/spam.js +3 -3
  121. package/_esm/logic/analyzeTransaction/createActions/spam.js.map +1 -1
  122. package/_esm/logic/analyzeTransaction/createActions/utils/containsUrlOrDomain.js +1 -1
  123. package/_esm/logic/analyzeTransaction/createActions/utils/containsUrlOrDomain.js.map +1 -1
  124. package/_esm/logic/analyzeTransaction/createActions/utils/createDirection.js +5 -5
  125. package/_esm/logic/analyzeTransaction/createActions/utils/createDirection.js.map +1 -1
  126. package/_esm/logic/analyzeTransaction/createActions/utils/createTokenTransfers.js +82 -65
  127. package/_esm/logic/analyzeTransaction/createActions/utils/createTokenTransfers.js.map +1 -1
  128. package/_esm/logic/analyzeTransaction/getDataFromDatasource.js +4 -6
  129. package/_esm/logic/analyzeTransaction/getDataFromDatasource.js.map +1 -1
  130. package/_esm/logic/analyzeTransaction/index.js +4 -4
  131. package/_esm/logic/analyzeTransaction/index.js.map +1 -1
  132. package/_types/index.d.ts +2 -0
  133. package/_types/index.d.ts.map +1 -1
  134. package/_types/logic/analyzeTransaction/createActions/fail.d.ts +3 -2
  135. package/_types/logic/analyzeTransaction/createActions/fail.d.ts.map +1 -1
  136. package/_types/logic/analyzeTransaction/createActions/gas.d.ts +3 -2
  137. package/_types/logic/analyzeTransaction/createActions/gas.d.ts.map +1 -1
  138. package/_types/logic/analyzeTransaction/createActions/general.d.ts +4 -4
  139. package/_types/logic/analyzeTransaction/createActions/general.d.ts.map +1 -1
  140. package/_types/logic/analyzeTransaction/createActions/index.d.ts +5 -3
  141. package/_types/logic/analyzeTransaction/createActions/index.d.ts.map +1 -1
  142. package/_types/logic/analyzeTransaction/createActions/json/addressIn.d.ts +10 -0
  143. package/_types/logic/analyzeTransaction/createActions/json/addressIn.d.ts.map +1 -0
  144. package/_types/logic/analyzeTransaction/createActions/json/allValue.d.ts +9 -0
  145. package/_types/logic/analyzeTransaction/createActions/json/allValue.d.ts.map +1 -0
  146. package/_types/logic/analyzeTransaction/createActions/json/arrayIn.d.ts +10 -0
  147. package/_types/logic/analyzeTransaction/createActions/json/arrayIn.d.ts.map +1 -0
  148. package/_types/logic/analyzeTransaction/createActions/json/betweenBigInt.d.ts +7 -0
  149. package/_types/logic/analyzeTransaction/createActions/json/betweenBigInt.d.ts.map +1 -0
  150. package/_types/logic/analyzeTransaction/createActions/json/customTransferGenerator.d.ts +12 -0
  151. package/_types/logic/analyzeTransaction/createActions/json/customTransferGenerator.d.ts.map +1 -0
  152. package/_types/logic/analyzeTransaction/createActions/json/erc1155Pattern.d.ts +10 -0
  153. package/_types/logic/analyzeTransaction/createActions/json/erc1155Pattern.d.ts.map +1 -0
  154. package/_types/logic/analyzeTransaction/createActions/json/erc1155TransferGenerator.d.ts +10 -0
  155. package/_types/logic/analyzeTransaction/createActions/json/erc1155TransferGenerator.d.ts.map +1 -0
  156. package/_types/logic/analyzeTransaction/createActions/json/erc20Pattern.d.ts +10 -0
  157. package/_types/logic/analyzeTransaction/createActions/json/erc20Pattern.d.ts.map +1 -0
  158. package/_types/logic/analyzeTransaction/createActions/json/erc20TransferGenerator.d.ts +10 -0
  159. package/_types/logic/analyzeTransaction/createActions/json/erc20TransferGenerator.d.ts.map +1 -0
  160. package/_types/logic/analyzeTransaction/createActions/json/erc721Pattern.d.ts +10 -0
  161. package/_types/logic/analyzeTransaction/createActions/json/erc721Pattern.d.ts.map +1 -0
  162. package/_types/logic/analyzeTransaction/createActions/json/erc721TransferGenerator.d.ts +10 -0
  163. package/_types/logic/analyzeTransaction/createActions/json/erc721TransferGenerator.d.ts.map +1 -0
  164. package/_types/logic/analyzeTransaction/createActions/json/generateActions.d.ts +14 -0
  165. package/_types/logic/analyzeTransaction/createActions/json/generateActions.d.ts.map +1 -0
  166. package/_types/logic/analyzeTransaction/createActions/json/index.d.ts +16 -0
  167. package/_types/logic/analyzeTransaction/createActions/json/index.d.ts.map +1 -0
  168. package/_types/logic/analyzeTransaction/createActions/json/internalTransferGenerator.d.ts +12 -0
  169. package/_types/logic/analyzeTransaction/createActions/json/internalTransferGenerator.d.ts.map +1 -0
  170. package/_types/logic/analyzeTransaction/createActions/json/join.d.ts +9 -0
  171. package/_types/logic/analyzeTransaction/createActions/json/join.d.ts.map +1 -0
  172. package/_types/logic/analyzeTransaction/createActions/json/math.d.ts +9 -0
  173. package/_types/logic/analyzeTransaction/createActions/json/math.d.ts.map +1 -0
  174. package/_types/logic/analyzeTransaction/createActions/json/schema.d.ts +658268 -0
  175. package/_types/logic/analyzeTransaction/createActions/json/schema.d.ts.map +1 -0
  176. package/_types/logic/analyzeTransaction/createActions/json/simpleValue.d.ts +9 -0
  177. package/_types/logic/analyzeTransaction/createActions/json/simpleValue.d.ts.map +1 -0
  178. package/_types/logic/analyzeTransaction/createActions/json/slice.d.ts +9 -0
  179. package/_types/logic/analyzeTransaction/createActions/json/slice.d.ts.map +1 -0
  180. package/_types/logic/analyzeTransaction/createActions/json/transferGenerator.d.ts +15 -0
  181. package/_types/logic/analyzeTransaction/createActions/json/transferGenerator.d.ts.map +1 -0
  182. package/_types/logic/analyzeTransaction/createActions/json/type.d.ts +6 -0
  183. package/_types/logic/analyzeTransaction/createActions/json/type.d.ts.map +1 -0
  184. package/_types/logic/analyzeTransaction/createActions/json/verifyTxSatisfiesCondition.d.ts +10 -0
  185. package/_types/logic/analyzeTransaction/createActions/json/verifyTxSatisfiesCondition.d.ts.map +1 -0
  186. package/_types/logic/analyzeTransaction/createActions/spam.d.ts +7 -5
  187. package/_types/logic/analyzeTransaction/createActions/spam.d.ts.map +1 -1
  188. package/_types/logic/analyzeTransaction/createActions/utils/createDirection.d.ts +5 -4
  189. package/_types/logic/analyzeTransaction/createActions/utils/createDirection.d.ts.map +1 -1
  190. package/_types/logic/analyzeTransaction/createActions/utils/createTokenTransfers.d.ts +3 -2
  191. package/_types/logic/analyzeTransaction/createActions/utils/createTokenTransfers.d.ts.map +1 -1
  192. package/_types/logic/analyzeTransaction/getDataFromDatasource.d.ts +11 -10
  193. package/_types/logic/analyzeTransaction/getDataFromDatasource.d.ts.map +1 -1
  194. package/_types/logic/analyzeTransaction/index.d.ts +8 -7
  195. package/_types/logic/analyzeTransaction/index.d.ts.map +1 -1
  196. package/_types/types/analyzeDataSource.d.ts +2 -3
  197. package/_types/types/analyzeDataSource.d.ts.map +1 -1
  198. package/_types/types/log.d.ts +2 -2
  199. package/_types/types/transactionDecoded.d.ts +38 -38
  200. package/_types/types/transactionDecoded.d.ts.map +1 -1
  201. package/_types/types/transactionDetail.d.ts +36 -36
  202. package/_types/types/transactionIndex.d.ts +5 -5
  203. package/analyzer/.DS_Store +0 -0
  204. package/chain/.DS_Store +0 -0
  205. package/client/.DS_Store +0 -0
  206. package/explorer/.DS_Store +0 -0
  207. package/index.ts +10 -0
  208. package/logic/analyzeTransaction/createActions/fail.ts +4 -8
  209. package/logic/analyzeTransaction/createActions/gas.ts +7 -6
  210. package/logic/analyzeTransaction/createActions/general.ts +5 -5
  211. package/logic/analyzeTransaction/createActions/index.ts +37 -9
  212. package/logic/analyzeTransaction/createActions/json/addressIn.ts +57 -0
  213. package/logic/analyzeTransaction/createActions/json/allValue.ts +41 -0
  214. package/logic/analyzeTransaction/createActions/json/arrayIn.ts +51 -0
  215. package/logic/analyzeTransaction/createActions/json/betweenBigInt.ts +18 -0
  216. package/logic/analyzeTransaction/createActions/json/customTransferGenerator.ts +166 -0
  217. package/logic/analyzeTransaction/createActions/json/erc1155Pattern.ts +108 -0
  218. package/logic/analyzeTransaction/createActions/json/erc1155TransferGenerator.ts +53 -0
  219. package/logic/analyzeTransaction/createActions/json/erc20Pattern.ts +96 -0
  220. package/logic/analyzeTransaction/createActions/json/erc20TransferGenerator.ts +53 -0
  221. package/logic/analyzeTransaction/createActions/json/erc721Pattern.ts +74 -0
  222. package/logic/analyzeTransaction/createActions/json/erc721TransferGenerator.ts +53 -0
  223. package/logic/analyzeTransaction/createActions/json/generateActions.ts +248 -0
  224. package/logic/analyzeTransaction/createActions/json/index.ts +72 -0
  225. package/logic/analyzeTransaction/createActions/json/internalTransferGenerator.ts +141 -0
  226. package/logic/analyzeTransaction/createActions/json/join.ts +54 -0
  227. package/logic/analyzeTransaction/createActions/json/math.ts +96 -0
  228. package/logic/analyzeTransaction/createActions/json/schema.ts +554 -0
  229. package/logic/analyzeTransaction/createActions/json/simpleValue.ts +339 -0
  230. package/logic/analyzeTransaction/createActions/json/slice.ts +21 -0
  231. package/logic/analyzeTransaction/createActions/json/transferGenerator.ts +158 -0
  232. package/logic/analyzeTransaction/createActions/json/type.ts +8 -0
  233. package/logic/analyzeTransaction/createActions/json/verifyTxSatisfiesCondition.ts +731 -0
  234. package/logic/analyzeTransaction/createActions/spam.ts +9 -6
  235. package/logic/analyzeTransaction/createActions/tests/tx-1-0x5c1345e9b83106f657de5a20d75de3e9f56725697b4ef47cafd019c1fa944128.json +383 -0
  236. package/logic/analyzeTransaction/createActions/utils/containsUrlOrDomain.ts +1 -1
  237. package/logic/analyzeTransaction/createActions/utils/createDirection.ts +10 -8
  238. package/logic/analyzeTransaction/createActions/utils/createTokenTransfers.ts +96 -68
  239. package/logic/analyzeTransaction/getDataFromDatasource.ts +14 -28
  240. package/logic/analyzeTransaction/index.ts +11 -10
  241. package/package.json +2 -2
  242. 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
- accountIds: Set<string>
7
+ relatedAddresses: Set<LowerHex>
8
8
  source: string
9
9
  }
10
10
 
11
11
  export const createActionsByFailAnalyzer = ({
12
12
  transaction,
13
- accountIds,
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
- const fromId = createEvmAddressId({
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
- accountIds: Set<string>
11
+ relatedAddresses: Set<LowerHex>
11
12
  source: string
12
13
  }
13
14
 
14
15
  export const createActionsByGasAnalyzer = ({
15
16
  chain,
16
17
  transaction,
17
- accountIds,
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 が accountIds に含まれていない場合は、 undefined を返す
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
- // gas 分析してアクション作成
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
- accountIds: Set<string>
15
- // TODO
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
- accountIds,
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
- accountIds,
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
- accountIds,
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({ chain, transaction, accountIds })
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
+ }