@0xtorch/evm 0.0.96 → 0.0.98

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 (183) hide show
  1. package/_cjs/chain/definitions/arbitrumOne.js +2 -1
  2. package/_cjs/chain/definitions/arbitrumOne.js.map +1 -1
  3. package/_cjs/chain/definitions/astar.js +3 -1
  4. package/_cjs/chain/definitions/astar.js.map +1 -1
  5. package/_cjs/chain/definitions/astarZkEvm.js +3 -1
  6. package/_cjs/chain/definitions/astarZkEvm.js.map +1 -1
  7. package/_cjs/chain/definitions/avalancheC.js +2 -1
  8. package/_cjs/chain/definitions/avalancheC.js.map +1 -1
  9. package/_cjs/chain/definitions/base.js +2 -1
  10. package/_cjs/chain/definitions/base.js.map +1 -1
  11. package/_cjs/chain/definitions/blast.js +2 -1
  12. package/_cjs/chain/definitions/blast.js.map +1 -1
  13. package/_cjs/chain/definitions/bsc.js +2 -1
  14. package/_cjs/chain/definitions/bsc.js.map +1 -1
  15. package/_cjs/chain/definitions/ethereum.js +2 -1
  16. package/_cjs/chain/definitions/ethereum.js.map +1 -1
  17. package/_cjs/chain/definitions/fantom.js +2 -1
  18. package/_cjs/chain/definitions/fantom.js.map +1 -1
  19. package/_cjs/chain/definitions/linea.js +2 -1
  20. package/_cjs/chain/definitions/linea.js.map +1 -1
  21. package/_cjs/chain/definitions/mantaPacific.js +3 -1
  22. package/_cjs/chain/definitions/mantaPacific.js.map +1 -1
  23. package/_cjs/chain/definitions/mantle.js +2 -1
  24. package/_cjs/chain/definitions/mantle.js.map +1 -1
  25. package/_cjs/chain/definitions/metis.js +3 -1
  26. package/_cjs/chain/definitions/metis.js.map +1 -1
  27. package/_cjs/chain/definitions/moonbeam.js +2 -1
  28. package/_cjs/chain/definitions/moonbeam.js.map +1 -1
  29. package/_cjs/chain/definitions/moonriver.js +2 -1
  30. package/_cjs/chain/definitions/moonriver.js.map +1 -1
  31. package/_cjs/chain/definitions/oasys.js +3 -1
  32. package/_cjs/chain/definitions/oasys.js.map +1 -1
  33. package/_cjs/chain/definitions/optimism.js +2 -1
  34. package/_cjs/chain/definitions/optimism.js.map +1 -1
  35. package/_cjs/chain/definitions/polygonPos.js +2 -1
  36. package/_cjs/chain/definitions/polygonPos.js.map +1 -1
  37. package/_cjs/chain/definitions/scroll.js +2 -1
  38. package/_cjs/chain/definitions/scroll.js.map +1 -1
  39. package/_cjs/chain/definitions/zkFair.js +3 -1
  40. package/_cjs/chain/definitions/zkFair.js.map +1 -1
  41. package/_cjs/chain/definitions/zkSyncEra.js +2 -1
  42. package/_cjs/chain/definitions/zkSyncEra.js.map +1 -1
  43. package/_cjs/chain/definitions/zora.js +3 -1
  44. package/_cjs/chain/definitions/zora.js.map +1 -1
  45. package/_cjs/explorer/blockscout/client.js +9 -2
  46. package/_cjs/explorer/blockscout/client.js.map +1 -1
  47. package/_cjs/explorer/blockscout/create.js +2 -2
  48. package/_cjs/explorer/blockscout/create.js.map +1 -1
  49. package/_cjs/explorer/etherscan/create.js +11 -9
  50. package/_cjs/explorer/etherscan/create.js.map +1 -1
  51. package/_cjs/logic/getTransactionDetail/index.js +6 -3
  52. package/_cjs/logic/getTransactionDetail/index.js.map +1 -1
  53. package/_esm/chain/definitions/arbitrumOne.js +2 -1
  54. package/_esm/chain/definitions/arbitrumOne.js.map +1 -1
  55. package/_esm/chain/definitions/astar.js +3 -1
  56. package/_esm/chain/definitions/astar.js.map +1 -1
  57. package/_esm/chain/definitions/astarZkEvm.js +3 -1
  58. package/_esm/chain/definitions/astarZkEvm.js.map +1 -1
  59. package/_esm/chain/definitions/avalancheC.js +2 -1
  60. package/_esm/chain/definitions/avalancheC.js.map +1 -1
  61. package/_esm/chain/definitions/base.js +2 -1
  62. package/_esm/chain/definitions/base.js.map +1 -1
  63. package/_esm/chain/definitions/blast.js +2 -1
  64. package/_esm/chain/definitions/blast.js.map +1 -1
  65. package/_esm/chain/definitions/bsc.js +2 -1
  66. package/_esm/chain/definitions/bsc.js.map +1 -1
  67. package/_esm/chain/definitions/ethereum.js +2 -1
  68. package/_esm/chain/definitions/ethereum.js.map +1 -1
  69. package/_esm/chain/definitions/fantom.js +2 -1
  70. package/_esm/chain/definitions/fantom.js.map +1 -1
  71. package/_esm/chain/definitions/linea.js +2 -1
  72. package/_esm/chain/definitions/linea.js.map +1 -1
  73. package/_esm/chain/definitions/mantaPacific.js +3 -1
  74. package/_esm/chain/definitions/mantaPacific.js.map +1 -1
  75. package/_esm/chain/definitions/mantle.js +2 -1
  76. package/_esm/chain/definitions/mantle.js.map +1 -1
  77. package/_esm/chain/definitions/metis.js +3 -1
  78. package/_esm/chain/definitions/metis.js.map +1 -1
  79. package/_esm/chain/definitions/moonbeam.js +2 -1
  80. package/_esm/chain/definitions/moonbeam.js.map +1 -1
  81. package/_esm/chain/definitions/moonriver.js +2 -1
  82. package/_esm/chain/definitions/moonriver.js.map +1 -1
  83. package/_esm/chain/definitions/oasys.js +3 -1
  84. package/_esm/chain/definitions/oasys.js.map +1 -1
  85. package/_esm/chain/definitions/optimism.js +2 -1
  86. package/_esm/chain/definitions/optimism.js.map +1 -1
  87. package/_esm/chain/definitions/polygonPos.js +2 -1
  88. package/_esm/chain/definitions/polygonPos.js.map +1 -1
  89. package/_esm/chain/definitions/scroll.js +2 -1
  90. package/_esm/chain/definitions/scroll.js.map +1 -1
  91. package/_esm/chain/definitions/zkFair.js +3 -1
  92. package/_esm/chain/definitions/zkFair.js.map +1 -1
  93. package/_esm/chain/definitions/zkSyncEra.js +2 -1
  94. package/_esm/chain/definitions/zkSyncEra.js.map +1 -1
  95. package/_esm/chain/definitions/zora.js +3 -1
  96. package/_esm/chain/definitions/zora.js.map +1 -1
  97. package/_esm/explorer/blockscout/client.js +9 -2
  98. package/_esm/explorer/blockscout/client.js.map +1 -1
  99. package/_esm/explorer/blockscout/create.js +2 -2
  100. package/_esm/explorer/blockscout/create.js.map +1 -1
  101. package/_esm/explorer/etherscan/create.js +11 -9
  102. package/_esm/explorer/etherscan/create.js.map +1 -1
  103. package/_esm/logic/getTransactionDetail/index.js +6 -3
  104. package/_esm/logic/getTransactionDetail/index.js.map +1 -1
  105. package/_types/chain/definitions/arbitrumOne.d.ts +2 -1
  106. package/_types/chain/definitions/arbitrumOne.d.ts.map +1 -1
  107. package/_types/chain/definitions/astar.d.ts +4 -1
  108. package/_types/chain/definitions/astar.d.ts.map +1 -1
  109. package/_types/chain/definitions/astarZkEvm.d.ts +4 -1
  110. package/_types/chain/definitions/astarZkEvm.d.ts.map +1 -1
  111. package/_types/chain/definitions/avalancheC.d.ts +2 -1
  112. package/_types/chain/definitions/avalancheC.d.ts.map +1 -1
  113. package/_types/chain/definitions/base.d.ts +2 -1
  114. package/_types/chain/definitions/base.d.ts.map +1 -1
  115. package/_types/chain/definitions/blast.d.ts +2 -1
  116. package/_types/chain/definitions/blast.d.ts.map +1 -1
  117. package/_types/chain/definitions/bsc.d.ts +2 -1
  118. package/_types/chain/definitions/bsc.d.ts.map +1 -1
  119. package/_types/chain/definitions/ethereum.d.ts +2 -1
  120. package/_types/chain/definitions/ethereum.d.ts.map +1 -1
  121. package/_types/chain/definitions/fantom.d.ts +2 -1
  122. package/_types/chain/definitions/fantom.d.ts.map +1 -1
  123. package/_types/chain/definitions/linea.d.ts +2 -1
  124. package/_types/chain/definitions/linea.d.ts.map +1 -1
  125. package/_types/chain/definitions/mantaPacific.d.ts +4 -1
  126. package/_types/chain/definitions/mantaPacific.d.ts.map +1 -1
  127. package/_types/chain/definitions/mantle.d.ts +2 -1
  128. package/_types/chain/definitions/mantle.d.ts.map +1 -1
  129. package/_types/chain/definitions/metis.d.ts +4 -1
  130. package/_types/chain/definitions/metis.d.ts.map +1 -1
  131. package/_types/chain/definitions/moonbeam.d.ts +2 -1
  132. package/_types/chain/definitions/moonbeam.d.ts.map +1 -1
  133. package/_types/chain/definitions/moonriver.d.ts +2 -1
  134. package/_types/chain/definitions/moonriver.d.ts.map +1 -1
  135. package/_types/chain/definitions/oasys.d.ts +4 -1
  136. package/_types/chain/definitions/oasys.d.ts.map +1 -1
  137. package/_types/chain/definitions/optimism.d.ts +2 -1
  138. package/_types/chain/definitions/optimism.d.ts.map +1 -1
  139. package/_types/chain/definitions/polygonPos.d.ts +2 -1
  140. package/_types/chain/definitions/polygonPos.d.ts.map +1 -1
  141. package/_types/chain/definitions/scroll.d.ts +2 -1
  142. package/_types/chain/definitions/scroll.d.ts.map +1 -1
  143. package/_types/chain/definitions/zkFair.d.ts +4 -1
  144. package/_types/chain/definitions/zkFair.d.ts.map +1 -1
  145. package/_types/chain/definitions/zkSyncEra.d.ts +2 -1
  146. package/_types/chain/definitions/zkSyncEra.d.ts.map +1 -1
  147. package/_types/chain/definitions/zora.d.ts +4 -1
  148. package/_types/chain/definitions/zora.d.ts.map +1 -1
  149. package/_types/explorer/blockscout/client.d.ts +7 -1
  150. package/_types/explorer/blockscout/client.d.ts.map +1 -1
  151. package/_types/explorer/blockscout/create.d.ts +3 -1
  152. package/_types/explorer/blockscout/create.d.ts.map +1 -1
  153. package/_types/explorer/etherscan/create.d.ts +2 -1
  154. package/_types/explorer/etherscan/create.d.ts.map +1 -1
  155. package/_types/logic/getTransactionDetail/index.d.ts +2 -1
  156. package/_types/logic/getTransactionDetail/index.d.ts.map +1 -1
  157. package/chain/definitions/arbitrumOne.ts +3 -0
  158. package/chain/definitions/astar.ts +9 -1
  159. package/chain/definitions/astarZkEvm.ts +9 -1
  160. package/chain/definitions/avalancheC.ts +3 -0
  161. package/chain/definitions/base.ts +3 -0
  162. package/chain/definitions/blast.ts +3 -0
  163. package/chain/definitions/bsc.ts +3 -0
  164. package/chain/definitions/ethereum.ts +3 -0
  165. package/chain/definitions/fantom.ts +3 -0
  166. package/chain/definitions/linea.ts +3 -0
  167. package/chain/definitions/mantaPacific.ts +9 -1
  168. package/chain/definitions/mantle.ts +3 -0
  169. package/chain/definitions/metis.ts +9 -1
  170. package/chain/definitions/moonbeam.ts +3 -0
  171. package/chain/definitions/moonriver.ts +3 -0
  172. package/chain/definitions/oasys.ts +9 -1
  173. package/chain/definitions/optimism.ts +3 -0
  174. package/chain/definitions/polygonPos.ts +3 -0
  175. package/chain/definitions/scroll.ts +3 -0
  176. package/chain/definitions/zkFair.ts +9 -1
  177. package/chain/definitions/zkSyncEra.ts +3 -0
  178. package/chain/definitions/zora.ts +9 -1
  179. package/explorer/blockscout/client.ts +24 -7
  180. package/explorer/blockscout/create.ts +5 -1
  181. package/explorer/etherscan/create.ts +12 -8
  182. package/logic/getTransactionDetail/index.ts +7 -1
  183. package/package.json +1 -1
@@ -13,9 +13,17 @@ export type BlockscoutClient = {
13
13
  }) => Promise<Output>
14
14
  }
15
15
 
16
- export const createBlockscoutClient = (
17
- apiBaseUrl: string,
18
- ): BlockscoutClient => {
16
+ type CreateBlockscoutClientParameters = {
17
+ apiBaseUrl: string
18
+ proxyUrl?: string
19
+ headers?: Record<string, string>
20
+ }
21
+
22
+ export const createBlockscoutClient = ({
23
+ apiBaseUrl,
24
+ proxyUrl,
25
+ headers,
26
+ }: CreateBlockscoutClientParameters): BlockscoutClient => {
19
27
  const rateLimitPerSecond = 5
20
28
  const requestTimestamps: number[] = []
21
29
 
@@ -73,9 +81,19 @@ export const createBlockscoutClient = (
73
81
  url.searchParams.append(key, value)
74
82
  }
75
83
  console.debug(`[GET] ${url.toString()}`)
76
- const { status, message, result } = await rest(url.toString(), {
77
- schema: responseSchema,
78
- })
84
+ const { status, message, result } = await rest(
85
+ proxyUrl === undefined
86
+ ? url.toString()
87
+ : `${proxyUrl}${encodeURIComponent(url.toString())}`,
88
+ {
89
+ schema: responseSchema,
90
+ fetchOptions: {
91
+ headers: {
92
+ ...headers,
93
+ },
94
+ },
95
+ },
96
+ )
79
97
  if (status !== '1') {
80
98
  throw typeof result === 'string'
81
99
  ? new Error(result)
@@ -98,7 +116,6 @@ export const createBlockscoutClient = (
98
116
  await new Promise((resolve) => setTimeout(resolve, 5000))
99
117
  return await get({ path, query, resultSchema }, repeat + 1)
100
118
  }
101
-
102
119
  throw error
103
120
  }
104
121
  }
@@ -17,14 +17,18 @@ type CreateBlockscoutParameters = {
17
17
  name: string
18
18
  baseUrl: string
19
19
  apiBaseUrl: string
20
+ proxyUrl?: string
21
+ headers?: Record<string, string>
20
22
  }
21
23
 
22
24
  export const createBlockscout = ({
23
25
  name,
24
26
  baseUrl,
25
27
  apiBaseUrl,
28
+ proxyUrl,
29
+ headers,
26
30
  }: CreateBlockscoutParameters): Explorer => {
27
- const client = createBlockscoutClient(apiBaseUrl)
31
+ const client = createBlockscoutClient({ apiBaseUrl, proxyUrl, headers })
28
32
 
29
33
  return {
30
34
  name,
@@ -22,6 +22,7 @@ type CreateEtherscanParameters = {
22
22
  apiKey?: string
23
23
  proxyUrl?: string
24
24
  headers?: Record<string, string>
25
+ pageSize?: number
25
26
  }
26
27
 
27
28
  export const createEtherscan = ({
@@ -31,6 +32,7 @@ export const createEtherscan = ({
31
32
  apiKey,
32
33
  proxyUrl,
33
34
  headers,
35
+ pageSize = 10_000,
34
36
  }: CreateEtherscanParameters): Explorer => {
35
37
  const client = createEtherscanClient({
36
38
  apiBaseUrl,
@@ -49,13 +51,13 @@ export const createEtherscan = ({
49
51
  >()
50
52
  let startblock = fromBlock
51
53
  const endblock = toBlock
52
- const maxPageSize = 10_000
53
54
  while (true) {
54
55
  const result = await getListOfInternalTransactionsByAddress({
55
56
  client,
56
57
  address,
57
58
  startblock,
58
59
  endblock,
60
+ offset: pageSize,
59
61
  })
60
62
  for (const transaction of result) {
61
63
  const id = createInternalTransactionId(transaction)
@@ -63,7 +65,7 @@ export const createEtherscan = ({
63
65
  internalTransactions.set(id, transaction)
64
66
  }
65
67
  }
66
- if (result.length < maxPageSize) {
68
+ if (result.length < pageSize) {
67
69
  break
68
70
  }
69
71
  const maxBlockNumber = Math.max(...result.map((x) => x.blockNumber))
@@ -75,20 +77,20 @@ export const createEtherscan = ({
75
77
  const indexes = new Map<LowerHex, TransactionIndex>()
76
78
  let startblock = fromBlock
77
79
  const endblock = toBlock
78
- const maxPageSize = 10_000
79
80
  while (true) {
80
81
  const result = await getListOfNormalTransactionsByAddress({
81
82
  client,
82
83
  address,
83
84
  startblock,
84
85
  endblock,
86
+ offset: pageSize,
85
87
  })
86
88
  for (const index of result) {
87
89
  if (!indexes.has(index.hash)) {
88
90
  indexes.set(index.hash, index)
89
91
  }
90
92
  }
91
- if (result.length < maxPageSize) {
93
+ if (result.length < pageSize) {
92
94
  break
93
95
  }
94
96
  const maxBlockNumber = Math.max(...result.map((x) => x.blockNumber))
@@ -98,7 +100,6 @@ export const createEtherscan = ({
98
100
  },
99
101
  getAddressTokenTransferIndexes: async ({ address, fromBlock, toBlock }) => {
100
102
  const indexes = new Map<LowerHex, TransactionIndex>()
101
- const maxPageSize = 10_000
102
103
  const endblock = toBlock
103
104
 
104
105
  // ERC20
@@ -109,13 +110,14 @@ export const createEtherscan = ({
109
110
  address,
110
111
  startblock,
111
112
  endblock,
113
+ offset: pageSize,
112
114
  })
113
115
  for (const index of result) {
114
116
  if (!indexes.has(index.hash)) {
115
117
  indexes.set(index.hash, index)
116
118
  }
117
119
  }
118
- if (result.length < maxPageSize) {
120
+ if (result.length < pageSize) {
119
121
  break
120
122
  }
121
123
  const maxBlockNumber = Math.max(...result.map((x) => x.blockNumber))
@@ -130,13 +132,14 @@ export const createEtherscan = ({
130
132
  address,
131
133
  startblock,
132
134
  endblock,
135
+ offset: pageSize,
133
136
  })
134
137
  for (const index of result) {
135
138
  if (!indexes.has(index.hash)) {
136
139
  indexes.set(index.hash, index)
137
140
  }
138
141
  }
139
- if (result.length < maxPageSize) {
142
+ if (result.length < pageSize) {
140
143
  break
141
144
  }
142
145
  const maxBlockNumber = Math.max(...result.map((x) => x.blockNumber))
@@ -151,13 +154,14 @@ export const createEtherscan = ({
151
154
  address,
152
155
  startblock,
153
156
  endblock,
157
+ offset: pageSize,
154
158
  })
155
159
  for (const index of result) {
156
160
  if (!indexes.has(index.hash)) {
157
161
  indexes.set(index.hash, index)
158
162
  }
159
163
  }
160
- if (result.length < maxPageSize) {
164
+ if (result.length < pageSize) {
161
165
  break
162
166
  }
163
167
  const maxBlockNumber = Math.max(...result.map((x) => x.blockNumber))
@@ -12,6 +12,7 @@ type GetTransactionDetailParameters = {
12
12
  hash: LowerHex
13
13
  timestamp?: number
14
14
  internalTransactions?: readonly InternalTransaction[]
15
+ timeout?: number
15
16
  }
16
17
 
17
18
  export const getTransactionDetail = async ({
@@ -19,18 +20,21 @@ export const getTransactionDetail = async ({
19
20
  hash,
20
21
  timestamp: optionalTimestamp,
21
22
  internalTransactions = [],
23
+ timeout,
22
24
  }: GetTransactionDetailParameters): Promise<TransactionDetail> => {
23
25
  const [transaction, receipt] = await Promise.all([
24
26
  chain.client.call({
25
27
  clientCall: (client) => client.getTransaction({ hash }),
28
+ timeout,
26
29
  }),
27
30
  chain.client.call({
28
31
  clientCall: (client) => client.getTransactionReceipt({ hash }),
32
+ timeout,
29
33
  }),
30
34
  ])
31
35
  const timestamp =
32
36
  optionalTimestamp ??
33
- (await getTimestampOfBlockNumber(chain, receipt.blockNumber))
37
+ (await getTimestampOfBlockNumber(chain, receipt.blockNumber, timeout))
34
38
 
35
39
  const { erc20Transfers, erc721Transfers, erc1155Transfers, logs } =
36
40
  decodeTokenTransferLogs(
@@ -71,9 +75,11 @@ export const getTransactionDetail = async ({
71
75
  const getTimestampOfBlockNumber = async (
72
76
  chain: Chain,
73
77
  blockNumber: bigint,
78
+ timeout?: number,
74
79
  ): Promise<number> => {
75
80
  const block = await chain.client.call({
76
81
  clientCall: (client) => client.getBlock({ blockNumber }),
82
+ timeout,
77
83
  })
78
84
  return Number(block.timestamp) * 1000
79
85
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@0xtorch/evm",
3
- "version": "0.0.96",
3
+ "version": "0.0.98",
4
4
  "description": "Cryptorch EVM extension",
5
5
  "keywords": [
6
6
  "cryptorch",