#[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

source

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)),
);
source

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());
source

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>

source

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);
source

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);
source

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 AsRef<str> for Chain

source§

fn as_ref(&self) -> &str

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl Clone for Chain

source§

fn clone(&self) -> Chain

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Chain

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl Default for Chain

source§

fn default() -> Chain

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for Chain

source§

fn deserialize<__D>( __deserializer: __D ) -> Result<Chain, <__D as Deserializer<'de>>::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for Chain

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl EnumCount for Chain

source§

const COUNT: usize = 78usize

source§

impl FromStr for Chain

§

type Err = ParseError

The associated error which can be returned from parsing.
source§

fn from_str(s: &str) -> Result<Chain, <Chain as FromStr>::Err>

Parses a string s to return a value of this type. Read more
source§

impl Hash for Chain

source§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl IntoEnumIterator for Chain

source§

impl Ord for Chain

source§

fn cmp(&self, other: &Chain) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for Chain

source§

fn eq(&self, other: &Chain) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for Chain

source§

fn partial_cmp(&self, other: &Chain) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for Chain

source§

fn serialize<S>( &self, s: S ) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl TryFrom<&str> for Chain

§

type Error = ParseError

The type returned in the event of a conversion error.
source§

fn try_from(s: &str) -> Result<Chain, <Chain as TryFrom<&str>>::Error>

Performs the conversion.
source§

impl TryFrom<U128> for Chain

§

type Error = TryFromPrimitiveError<Chain>

The type returned in the event of a conversion error.
source§

fn try_from(value: U128) -> Result<Chain, <Chain as TryFrom<U128>>::Error>

Performs the conversion.
source§

impl TryFrom<U256> for Chain

§

type Error = TryFromPrimitiveError<Chain>

The type returned in the event of a conversion error.
source§

fn try_from(value: U256) -> Result<Chain, <Chain as TryFrom<U256>>::Error>

Performs the conversion.
source§

impl TryFrom<U512> for Chain

§

type Error = TryFromPrimitiveError<Chain>

The type returned in the event of a conversion error.
source§

fn try_from(value: U512) -> Result<Chain, <Chain as TryFrom<U512>>::Error>

Performs the conversion.
source§

impl TryFrom<U64> for Chain

§

type Error = TryFromPrimitiveError<Chain>

The type returned in the event of a conversion error.
source§

fn try_from(value: U64) -> Result<Chain, <Chain as TryFrom<U64>>::Error>

Performs the conversion.
source§

impl TryFrom<u16> for Chain

§

type Error = TryFromPrimitiveError<Chain>

The type returned in the event of a conversion error.
source§

fn try_from(value: u16) -> Result<Chain, <Chain as TryFrom<u16>>::Error>

Performs the conversion.
source§

impl TryFrom<u32> for Chain

§

type Error = TryFromPrimitiveError<Chain>

The type returned in the event of a conversion error.
source§

fn try_from(value: u32) -> Result<Chain, <Chain as TryFrom<u32>>::Error>

Performs the conversion.
source§

impl TryFrom<u64> for Chain

§

type Error = TryFromPrimitiveError<Chain>

The type returned in the event of a conversion error.
source§

fn try_from(number: u64) -> Result<Chain, TryFromPrimitiveError<Chain>>

Performs the conversion.
source§

impl TryFrom<u8> for Chain

§

type Error = TryFromPrimitiveError<Chain>

The type returned in the event of a conversion error.
source§

fn try_from(value: u8) -> Result<Chain, <Chain as TryFrom<u8>>::Error>

Performs the conversion.
source§

impl TryFrom<usize> for Chain

§

type Error = TryFromPrimitiveError<Chain>

The type returned in the event of a conversion error.
source§

fn try_from(value: usize) -> Result<Chain, <Chain as TryFrom<usize>>::Error>

Performs the conversion.
source§

impl TryFromPrimitive for Chain

source§

impl VariantNames for Chain

source§

const VARIANTS: &'static [&'static str] = _

Names of the variants of this enum
source§

impl Copy for Chain

source§

impl Eq for Chain

source§

impl StructuralPartialEq for Chain

Auto Trait Implementations§

§

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> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

source§

impl<T> JsonSchemaMaybe for T