feat(core): add dev as a chain (#1093)

adds a new error message to etherscan if the user tries to create an
etherscan client with a 1337/ganache/dev chain
This commit is contained in:
Dan Cline 2022-03-30 14:20:23 -04:00 committed by GitHub
parent 3a653472cf
commit 842f4d260f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 14 additions and 4 deletions

View File

@ -22,6 +22,7 @@ pub enum Chain {
XDai = 100, XDai = 100,
Polygon = 137, Polygon = 137,
Fantom = 250, Fantom = 250,
Dev = 1337,
FantomTestnet = 4002, FantomTestnet = 4002,
PolygonMumbai = 80001, PolygonMumbai = 80001,
Avalanche = 43114, Avalanche = 43114,
@ -60,6 +61,7 @@ impl fmt::Display for Chain {
Chain::Optimism => "optimism", Chain::Optimism => "optimism",
Chain::OptimismKovan => "optimism-kovan", Chain::OptimismKovan => "optimism-kovan",
Chain::Fantom => "fantom", Chain::Fantom => "fantom",
Chain::Dev => "dev",
Chain::FantomTestnet => "fantom-testnet", Chain::FantomTestnet => "fantom-testnet",
Chain::BinanceSmartChain => "bsc", Chain::BinanceSmartChain => "bsc",
Chain::BinanceSmartChainTestnet => "bsc-testnet", Chain::BinanceSmartChainTestnet => "bsc-testnet",
@ -103,6 +105,7 @@ impl TryFrom<u64> for Chain {
42 => Chain::Kovan, 42 => Chain::Kovan,
100 => Chain::XDai, 100 => Chain::XDai,
137 => Chain::Polygon, 137 => Chain::Polygon,
1337 => Chain::Dev,
250 => Chain::Fantom, 250 => Chain::Fantom,
4002 => Chain::FantomTestnet, 4002 => Chain::FantomTestnet,
80001 => Chain::PolygonMumbai, 80001 => Chain::PolygonMumbai,
@ -147,6 +150,7 @@ impl FromStr for Chain {
"optimism-kovan" => Chain::OptimismKovan, "optimism-kovan" => Chain::OptimismKovan,
"fantom" => Chain::Fantom, "fantom" => Chain::Fantom,
"fantom-testnet" => Chain::FantomTestnet, "fantom-testnet" => Chain::FantomTestnet,
"dev" => Chain::Dev,
"bsc" => Chain::BinanceSmartChain, "bsc" => Chain::BinanceSmartChain,
"bsc-testnet" => Chain::BinanceSmartChainTestnet, "bsc-testnet" => Chain::BinanceSmartChainTestnet,
"arbitrum" => Chain::Arbitrum, "arbitrum" => Chain::Arbitrum,

View File

@ -25,4 +25,6 @@ pub enum EtherscanError {
ContractCodeNotVerified(Address), ContractCodeNotVerified(Address),
#[error(transparent)] #[error(transparent)]
IO(#[from] std::io::Error), IO(#[from] std::io::Error),
#[error("Local networks (e.g. ganache, geth --dev) cannot be indexed by etherscan")]
LocalNetworksNotSupported,
} }

View File

@ -92,6 +92,7 @@ impl Client {
Chain::Cronos => { Chain::Cronos => {
(Url::parse("https://api.cronoscan.com/api"), Url::parse("https://cronoscan.com")) (Url::parse("https://api.cronoscan.com/api"), Url::parse("https://cronoscan.com"))
} }
Chain::Dev => return Err(EtherscanError::LocalNetworksNotSupported),
chain => return Err(EtherscanError::ChainNotSupported(chain)), chain => return Err(EtherscanError::ChainNotSupported(chain)),
}; };
@ -128,6 +129,7 @@ impl Client {
Chain::Moonbeam | Chain::MoonbeamDev | Chain::Moonriver => { Chain::Moonbeam | Chain::MoonbeamDev | Chain::Moonriver => {
std::env::var("MOONSCAN_API_KEY")? std::env::var("MOONSCAN_API_KEY")?
} }
Chain::Dev => return Err(errors::EtherscanError::LocalNetworksNotSupported),
}; };
Self::new(chain, api_key) Self::new(chain, api_key)
} }
@ -241,6 +243,12 @@ mod tests {
assert_eq!(err.to_string(), "chain xdai not supported"); assert_eq!(err.to_string(), "chain xdai not supported");
} }
#[test]
fn local_networks_not_supported() {
let err = Client::new_from_env(Chain::Dev).unwrap_err();
assert!(matches!(err, EtherscanError::LocalNetworksNotSupported));
}
pub async fn run_at_least_duration(duration: Duration, block: impl Future) { pub async fn run_at_least_duration(duration: Duration, block: impl Future) {
let start = SystemTime::now(); let start = SystemTime::now();
block.await; block.await;

View File

@ -117,10 +117,6 @@ impl<D: Sync + Send + DigestSigner<Sha256Proxy, RecoverableSignature>> Signer fo
} }
/// Gets the wallet's chain id /// Gets the wallet's chain id
///
/// # Panics
///
/// If the chain id has not already been set.
fn chain_id(&self) -> u64 { fn chain_id(&self) -> u64 {
self.chain_id self.chain_id
} }