1+ use crate :: constants:: {
2+ ARBITRUM_BASED_TAG , LACKS_MEMPOOL_TAGS , OPTIMISM_BASED_TAG , OPTIMISM_TAG , ROLLUP_TAG ,
3+ } ;
14use crate :: models:: { NetworkConfigData , NetworkRepoModel , RepositoryError } ;
25use std:: time:: Duration ;
36
@@ -93,19 +96,31 @@ impl TryFrom<NetworkRepoModel> for EvmNetwork {
9396
9497impl EvmNetwork {
9598 pub fn is_optimism ( & self ) -> bool {
96- self . tags . contains ( & "optimism" . to_string ( ) )
99+ self . tags
100+ . iter ( )
101+ . any ( |t| t == OPTIMISM_BASED_TAG || t == OPTIMISM_TAG )
97102 }
98103
99104 pub fn is_rollup ( & self ) -> bool {
100- self . tags . contains ( & "rollup" . to_string ( ) )
105+ self . tags . iter ( ) . any ( |t| t == ROLLUP_TAG )
101106 }
102107
108+ /// Returns whether this network lacks mempool-like behavior (no public/pending pool).
109+ ///
110+ /// Returns true if any tag in `constants::LACKS_MEMPOOL_TAGS` is present.
111+ /// Currently includes:
112+ /// - "no-mempool"
113+ /// - "arbitrum-based"
114+ /// - "optimism-based"
115+ /// - "optimism" (deprecated; kept for compatibility)
103116 pub fn lacks_mempool ( & self ) -> bool {
104- self . tags . contains ( & "no-mempool" . to_string ( ) )
117+ self . tags
118+ . iter ( )
119+ . any ( |t| LACKS_MEMPOOL_TAGS . contains ( & t. as_str ( ) ) )
105120 }
106121
107122 pub fn is_arbitrum ( & self ) -> bool {
108- self . tags . contains ( & "arbitrum-based" . to_string ( ) )
123+ self . tags . iter ( ) . any ( |t| t == ARBITRUM_BASED_TAG )
109124 }
110125
111126 pub fn is_testnet ( & self ) -> bool {
@@ -146,6 +161,7 @@ impl EvmNetwork {
146161mod tests {
147162 use super :: * ;
148163 use crate :: config:: { EvmNetworkConfig , NetworkConfigCommon } ;
164+ use crate :: constants:: { NO_MEMPOOL_TAG , OPTIMISM_TAG } ;
149165 use crate :: models:: { NetworkConfigData , NetworkRepoModel , NetworkType } ;
150166
151167 fn create_test_evm_network_with_tags ( tags : Vec < & str > ) -> EvmNetwork {
@@ -165,19 +181,31 @@ mod tests {
165181
166182 #[ test]
167183 fn test_is_optimism_with_optimism_tag ( ) {
168- let network = create_test_evm_network_with_tags ( vec ! [ "optimism" , "rollup" ] ) ;
184+ let network = create_test_evm_network_with_tags ( vec ! [ OPTIMISM_BASED_TAG , ROLLUP_TAG ] ) ;
169185 assert ! ( network. is_optimism( ) ) ;
170186 }
171187
172188 #[ test]
173189 fn test_is_optimism_without_optimism_tag ( ) {
174- let network = create_test_evm_network_with_tags ( vec ! [ "rollup" , "mainnet" ] ) ;
190+ let network = create_test_evm_network_with_tags ( vec ! [ ROLLUP_TAG , "mainnet" ] ) ;
175191 assert ! ( !network. is_optimism( ) ) ;
176192 }
177193
194+ #[ test]
195+ fn test_is_optimism_with_deprecated_optimism_tag ( ) {
196+ let network = create_test_evm_network_with_tags ( vec ! [ OPTIMISM_TAG , ROLLUP_TAG ] ) ;
197+ assert ! ( network. is_optimism( ) ) ;
198+ }
199+
200+ #[ test]
201+ fn test_lacks_mempool_with_deprecated_optimism_tag ( ) {
202+ let network = create_test_evm_network_with_tags ( vec ! [ OPTIMISM_TAG , ROLLUP_TAG ] ) ;
203+ assert ! ( network. lacks_mempool( ) ) ;
204+ }
205+
178206 #[ test]
179207 fn test_is_rollup_with_rollup_tag ( ) {
180- let network = create_test_evm_network_with_tags ( vec ! [ "rollup" , "no-mempool" ] ) ;
208+ let network = create_test_evm_network_with_tags ( vec ! [ ROLLUP_TAG , NO_MEMPOOL_TAG ] ) ;
181209 assert ! ( network. is_rollup( ) ) ;
182210 }
183211
@@ -189,30 +217,31 @@ mod tests {
189217
190218 #[ test]
191219 fn test_lacks_mempool_with_no_mempool_tag ( ) {
192- let network = create_test_evm_network_with_tags ( vec ! [ "rollup" , "no-mempool" ] ) ;
220+ let network = create_test_evm_network_with_tags ( vec ! [ ROLLUP_TAG , NO_MEMPOOL_TAG ] ) ;
193221 assert ! ( network. lacks_mempool( ) ) ;
194222 }
195223
196224 #[ test]
197225 fn test_lacks_mempool_without_no_mempool_tag ( ) {
198- let network = create_test_evm_network_with_tags ( vec ! [ "rollup" , "optimism" ] ) ;
226+ let network = create_test_evm_network_with_tags ( vec ! [ ROLLUP_TAG ] ) ;
199227 assert ! ( !network. lacks_mempool( ) ) ;
200228 }
201229
202230 #[ test]
203231 fn test_arbitrum_like_network ( ) {
204- let network = create_test_evm_network_with_tags ( vec ! [ "rollup" , "no-mempool" ] ) ;
232+ let network = create_test_evm_network_with_tags ( vec ! [ ROLLUP_TAG , ARBITRUM_BASED_TAG ] ) ;
205233 assert ! ( network. is_rollup( ) ) ;
234+ assert ! ( network. is_arbitrum( ) ) ;
206235 assert ! ( network. lacks_mempool( ) ) ;
207236 assert ! ( !network. is_optimism( ) ) ;
208237 }
209238
210239 #[ test]
211240 fn test_optimism_like_network ( ) {
212- let network = create_test_evm_network_with_tags ( vec ! [ "rollup" , "optimism" ] ) ;
241+ let network = create_test_evm_network_with_tags ( vec ! [ ROLLUP_TAG , OPTIMISM_BASED_TAG ] ) ;
213242 assert ! ( network. is_rollup( ) ) ;
214243 assert ! ( network. is_optimism( ) ) ;
215- assert ! ( ! network. lacks_mempool( ) ) ;
244+ assert ! ( network. lacks_mempool( ) ) ;
216245 }
217246
218247 #[ test]
@@ -241,7 +270,7 @@ mod tests {
241270 explorer_urls : None ,
242271 average_blocktime_ms : Some ( 12000 ) ,
243272 is_testnet : Some ( false ) ,
244- tags : Some ( vec ! [ "rollup" . to_string( ) , "optimism" . to_string( ) ] ) ,
273+ tags : Some ( vec ! [ ROLLUP_TAG . to_string( ) , OPTIMISM_BASED_TAG . to_string( ) ] ) ,
245274 } ,
246275 chain_id : Some ( 10 ) ,
247276 required_confirmations : Some ( 1 ) ,
@@ -259,6 +288,6 @@ mod tests {
259288 let network = EvmNetwork :: try_from ( repo_model) . unwrap ( ) ;
260289 assert ! ( network. is_optimism( ) ) ;
261290 assert ! ( network. is_rollup( ) ) ;
262- assert ! ( ! network. lacks_mempool( ) ) ;
291+ assert ! ( network. lacks_mempool( ) ) ;
263292 }
264293}
0 commit comments