#[repr(u64)]pub enum Chain {
Show 78 variants
Mainnet = 1,
Morden = 2,
Ropsten = 3,
Rinkeby = 4,
Goerli = 5,
Kovan = 42,
Holesky = 17_000,
Sepolia = 11_155_111,
Optimism = 10,
OptimismKovan = 69,
OptimismGoerli = 420,
OptimismSepolia = 11_155_420,
Arbitrum = 42_161,
ArbitrumTestnet = 421_611,
ArbitrumGoerli = 421_613,
ArbitrumSepolia = 421_614,
ArbitrumNova = 42_170,
Cronos = 25,
CronosTestnet = 338,
Rsk = 30,
BinanceSmartChain = 56,
BinanceSmartChainTestnet = 97,
Poa = 99,
Sokol = 77,
ScrollSepolia = 534_351,
Scroll = 534_352,
ScrollAlphaTestnet = 534_353,
Metis = 1_088,
Gnosis = 100,
Polygon = 137,
PolygonMumbai = 80_001,
PolygonAmoy = 80_002,
PolygonZkEvm = 1_101,
PolygonZkEvmTestnet = 1_442,
Fantom = 250,
FantomTestnet = 4_002,
Moonbeam = 1_284,
MoonbeamDev = 1_281,
Moonriver = 1_285,
Moonbase = 1_287,
Dev = 1_337,
AnvilHardhat = 31_337,
Evmos = 9_001,
EvmosTestnet = 9_000,
Chiado = 10_200,
Oasis = 26_863,
Emerald = 42_262,
EmeraldTestnet = 42_261,
FilecoinMainnet = 314,
FilecoinCalibrationTestnet = 314_159,
Avalanche = 43_114,
AvalancheFuji = 43_113,
Celo = 42_220,
CeloAlfajores = 44_787,
CeloBaklava = 62_320,
Aurora = 1_313_161_554,
AuroraTestnet = 1_313_161_555,
Canto = 7_700,
CantoTestnet = 740,
Boba = 288,
Base = 8_453,
BaseGoerli = 84_531,
BaseSepolia = 84_532,
Blast = 81_457,
BlastSepolia = 168_587_773,
Linea = 59_144,
LineaTestnet = 59_140,
ZkSync = 324,
ZkSyncTestnet = 280,
Mantle = 5_000,
MantleTestnet = 5_001,
Viction = 88,
Zora = 7_777_777,
ZoraGoerli = 999,
ZoraSepolia = 999_999_999,
Mode = 34_443,
ModeSepolia = 919,
Elastos = 20,
}Expand description
An Ethereum EIP-155 chain.
Variants§
Mainnet = 1
Morden = 2
Ropsten = 3
Rinkeby = 4
Goerli = 5
Kovan = 42
Holesky = 17_000
Sepolia = 11_155_111
Optimism = 10
OptimismKovan = 69
OptimismGoerli = 420
OptimismSepolia = 11_155_420
Arbitrum = 42_161
ArbitrumTestnet = 421_611
ArbitrumGoerli = 421_613
ArbitrumSepolia = 421_614
ArbitrumNova = 42_170
Cronos = 25
CronosTestnet = 338
Rsk = 30
BinanceSmartChain = 56
BinanceSmartChainTestnet = 97
Poa = 99
Sokol = 77
ScrollSepolia = 534_351
Scroll = 534_352
ScrollAlphaTestnet = 534_353
Metis = 1_088
Gnosis = 100
Polygon = 137
PolygonMumbai = 80_001
PolygonAmoy = 80_002
PolygonZkEvm = 1_101
PolygonZkEvmTestnet = 1_442
Fantom = 250
FantomTestnet = 4_002
Moonbeam = 1_284
MoonbeamDev = 1_281
Moonriver = 1_285
Moonbase = 1_287
Dev = 1_337
AnvilHardhat = 31_337
Evmos = 9_001
EvmosTestnet = 9_000
Chiado = 10_200
Oasis = 26_863
Emerald = 42_262
EmeraldTestnet = 42_261
FilecoinMainnet = 314
FilecoinCalibrationTestnet = 314_159
Avalanche = 43_114
AvalancheFuji = 43_113
Celo = 42_220
CeloAlfajores = 44_787
CeloBaklava = 62_320
Aurora = 1_313_161_554
AuroraTestnet = 1_313_161_555
Canto = 7_700
CantoTestnet = 740
Boba = 288
Base = 8_453
BaseGoerli = 84_531
BaseSepolia = 84_532
Blast = 81_457
BlastSepolia = 168_587_773
Linea = 59_144
LineaTestnet = 59_140
ZkSync = 324
ZkSyncTestnet = 280
Mantle = 5_000
MantleTestnet = 5_001
Viction = 88
Zora = 7_777_777
ZoraGoerli = 999
ZoraSepolia = 999_999_999
Mode = 34_443
ModeSepolia = 919
Elastos = 20
Implementations§
Source§impl Chain
impl Chain
Sourcepub const fn average_blocktime_hint(&self) -> Option<Duration>
pub const fn average_blocktime_hint(&self) -> Option<Duration>
Returns the chain’s average blocktime, if applicable.
It can be beneficial to know the average blocktime to adjust the polling of an HTTP provider for example.
Note: this is not an accurate average, but is rather a sensible default derived from blocktime charts such as Etherscan’s or Polygonscan’s.
§Examples
use ethers_core::types::Chain;
use std::time::Duration;
assert_eq!(
Chain::Mainnet.average_blocktime_hint(),
Some(Duration::from_millis(12_000)),
);
assert_eq!(
Chain::Optimism.average_blocktime_hint(),
Some(Duration::from_millis(2_000)),
);Sourcepub const fn is_legacy(&self) -> bool
pub const fn is_legacy(&self) -> bool
Returns whether the chain implements EIP-1559 (with the type 2 EIP-2718 transaction type).
§Examples
use ethers_core::types::Chain;
assert!(!Chain::Mainnet.is_legacy());
assert!(Chain::Celo.is_legacy());Sourcepub const fn supports_push0(&self) -> bool
pub const fn supports_push0(&self) -> bool
Returns whether the chain supports the PUSH0 opcode or not.
For more information, see EIP-3855:
<https://eips.ethereum.org/EIPS/eip-3855>
Sourcepub const fn etherscan_urls(&self) -> Option<(&'static str, &'static str)>
pub const fn etherscan_urls(&self) -> Option<(&'static str, &'static str)>
Returns the chain’s blockchain explorer and its API (Etherscan and Etherscan-like) URLs.
Returns (API_URL, BASE_URL)
§Examples
use ethers_core::types::Chain;
assert_eq!(
Chain::Mainnet.etherscan_urls(),
Some(("https://api.etherscan.io/api", "https://etherscan.io"))
);
assert_eq!(
Chain::Avalanche.etherscan_urls(),
Some(("https://api.snowtrace.io/api", "https://snowtrace.io"))
);
assert_eq!(Chain::AnvilHardhat.etherscan_urls(), None);Sourcepub const fn etherscan_api_key_name(&self) -> Option<&'static str>
pub const fn etherscan_api_key_name(&self) -> Option<&'static str>
Returns the chain’s blockchain explorer’s API key environment variable’s default name.
§Examples
use ethers_core::types::Chain;
assert_eq!(Chain::Mainnet.etherscan_api_key_name(), Some("ETHERSCAN_API_KEY"));
assert_eq!(Chain::AnvilHardhat.etherscan_api_key_name(), None);Sourcepub fn etherscan_api_key(&self) -> Option<String>
pub fn etherscan_api_key(&self) -> Option<String>
Returns the chain’s blockchain explorer’s API key, from the environment variable with the
name specified in etherscan_api_key_name.
§Examples
use ethers_core::types::Chain;
let chain = Chain::Mainnet;
std::env::set_var(chain.etherscan_api_key_name().unwrap(), "KEY");
assert_eq!(chain.etherscan_api_key().as_deref(), Some("KEY"));Trait Implementations§
Source§impl<'de> Deserialize<'de> for Chain
impl<'de> Deserialize<'de> for Chain
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Chain, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Chain, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl IntoEnumIterator for Chain
impl IntoEnumIterator for Chain
Source§impl Ord for Chain
impl Ord for Chain
Source§impl PartialOrd for Chain
impl PartialOrd for Chain
Source§impl Serialize for Chain
impl Serialize for Chain
Source§fn serialize<S>(
&self,
s: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
fn serialize<S>(
&self,
s: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
Source§impl TryFromPrimitive for Chain
impl TryFromPrimitive for Chain
Source§impl VariantNames for Chain
impl VariantNames for Chain
impl Copy for Chain
impl Eq for Chain
impl StructuralPartialEq for Chain
Auto Trait Implementations§
impl Freeze for Chain
impl RefUnwindSafe for Chain
impl Send for Chain
impl Sync for Chain
impl Unpin for Chain
impl UnwindSafe for Chain
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.