@@ -60,14 +60,10 @@ const Table = () => {
60
60
const [ stats , setStats ] = useState < any > ( ) ;
61
61
62
62
const sourcifyChainMap = useMemo ( ( ) => {
63
- return sourcifyChains ?. reduce ( function (
64
- acc ,
65
- currentChain
66
- ) {
63
+ return sourcifyChains ?. reduce ( function ( acc , currentChain ) {
67
64
acc [ currentChain . chainId ] = currentChain ;
68
65
return acc ;
69
- } ,
70
- { } ) ;
66
+ } , { } ) ;
71
67
} , [ sourcifyChains ] ) ;
72
68
73
69
const addMonitoredSupportFrom = async ( url , supportedChains ) => {
@@ -143,6 +139,26 @@ const Table = () => {
143
139
return 1 ;
144
140
}
145
141
142
+ // Chains with trace support come next
143
+ const hasTraceA = a ?. traceSupportedRPCs ?. length > 0 ;
144
+ const hasTraceB = b ?. traceSupportedRPCs ?. length > 0 ;
145
+
146
+ if ( hasTraceA && ! hasTraceB ) {
147
+ return - 1 ;
148
+ } else if ( ! hasTraceA && hasTraceB ) {
149
+ return 1 ;
150
+ }
151
+
152
+ // Chains with Etherscan API come next
153
+ const hasEtherscanA = a ?. etherscanAPI ;
154
+ const hasEtherscanB = b ?. etherscanAPI ;
155
+
156
+ if ( hasEtherscanA && ! hasEtherscanB ) {
157
+ return - 1 ;
158
+ } else if ( ! hasEtherscanA && hasEtherscanB ) {
159
+ return 1 ;
160
+ }
161
+
146
162
// Sort the rest alphabetically by chain.name
147
163
return a . name . localeCompare ( b . name ) ;
148
164
} ) ;
@@ -203,6 +219,7 @@ const Table = () => {
203
219
{ chain . supported ? "Verification" : "Not Supported" } < br />
204
220
{ chain . monitored ? "Monitoring" : "" }
205
221
</ td >
222
+ < td style = { { textAlign : "center" } } > { chain ?. traceSupportedRPCs ?. length > 0 ? "✅" : "" } </ td >
206
223
< td style = { { textAlign : "center" } } > { chain . etherscanAPI ? "✅" : "" } </ td >
207
224
< td >
208
225
{
@@ -235,14 +252,10 @@ const Table = () => {
235
252
< ReactTooltip effect = "solid" />
236
253
< div >
237
254
< h2 > Chains by Verified Contracts</ h2 >
238
- < Chart
239
- stats = { stats }
240
- sourcifyChainMap = { sourcifyChainMap }
241
- sourcifyChains = { sourcifyChains }
242
- />
255
+ < Chart stats = { stats } sourcifyChainMap = { sourcifyChainMap } sourcifyChains = { sourcifyChains } />
243
256
</ div >
244
257
< div >
245
- < h2 > Chains by Type of Support</ h2 >
258
+ < h2 > Chains by Type of Support</ h2 >
246
259
{ error && < div style = { { textAlign : "center" , color : "indianRed" } } > { error } </ div > }
247
260
{ sourcifyChains . length > 0 && (
248
261
< div style = { { marginBottom : "16px" } } >
@@ -256,6 +269,10 @@ const Table = () => {
256
269
< li >
257
270
Verification support: < b > { sourcifyChains . filter ( ( c ) => c . supported ) . length } </ b >
258
271
</ li >
272
+ < li >
273
+ That has an RPC with trace support:{ " " }
274
+ < b > { sourcifyChains . filter ( ( c ) => c . traceSupportedRPCs ?. length > 0 ) . length } </ b >
275
+ </ li >
259
276
< li >
260
277
Not Supported (deprecated): < b > { sourcifyChains . filter ( ( c ) => ! c . supported ) . length } </ b >
261
278
</ li >
@@ -265,12 +282,43 @@ const Table = () => {
265
282
</ ul >
266
283
</ div >
267
284
) }
285
+ < ReactTooltip effect = "solid" delayHide = { 500 } clickable = { true } id = "rpc-trace-support" />
268
286
< table >
269
287
< thead >
270
288
< tr >
271
289
< th > Chain</ th >
272
290
< th > Chain ID</ th >
273
291
< th > Support Type</ th >
292
+ < th
293
+ data-html = { true }
294
+ data-tip = { renderToString (
295
+ < div style = { { maxWidth : "300px" } } >
296
+ < p > This allows verifying contracts created with factories with the creation bytecode.</ p >
297
+ < p >
298
+ If not supported, contracts can be verified normally with the runtime bytecode, but also with the
299
+ creation bytecode if they were created by an EOA, ie. the creation bytecode is in the transaction
300
+ payload that created the contract.
301
+ </ p >
302
+ </ div >
303
+ ) }
304
+ data-for = "rpc-trace-support"
305
+ >
306
+ RPCs with trace support{ " " }
307
+ < span
308
+ style = { {
309
+ border : "1px solid" ,
310
+ borderRadius : "100%" ,
311
+ width : "20px" ,
312
+ height : "20px" ,
313
+ display : "inline-flex" ,
314
+ alignItems : "center" ,
315
+ justifyContent : "center" ,
316
+ color : "gray" ,
317
+ } }
318
+ >
319
+ ?
320
+ </ span >
321
+ </ th >
274
322
< th > Import from Etherscan</ th >
275
323
< th > Verification Tests</ th >
276
324
</ tr >
0 commit comments