feat(chain): add BSC and BSC testnet (#831)
* feat(chain): add BSC and BSC testnet * docs(changelog): add note about new BSC known chains
This commit is contained in:
parent
a97526d6fe
commit
f434e0f57f
|
@ -4,6 +4,8 @@
|
||||||
|
|
||||||
### Unreleased
|
### Unreleased
|
||||||
|
|
||||||
|
- Add BSC mainnet and testnet to the list of known chains
|
||||||
|
[831](https://github.com/gakonst/ethers-rs/pull/831)
|
||||||
- Returns error on invalid type conversion instead of panicking
|
- Returns error on invalid type conversion instead of panicking
|
||||||
[691](https://github.com/gakonst/ethers-rs/pull/691/files)
|
[691](https://github.com/gakonst/ethers-rs/pull/691/files)
|
||||||
- Change types mapping for solidity `bytes` to rust `ethers::core::Bytes` and
|
- Change types mapping for solidity `bytes` to rust `ethers::core::Bytes` and
|
||||||
|
|
|
@ -32,6 +32,8 @@ pub enum Chain {
|
||||||
Moonriver = 1285,
|
Moonriver = 1285,
|
||||||
Optimism = 10,
|
Optimism = 10,
|
||||||
OptimismKovan = 69,
|
OptimismKovan = 69,
|
||||||
|
BinanceSmartChain = 56,
|
||||||
|
BinanceSmartChainTestnet = 97,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl fmt::Display for Chain {
|
impl fmt::Display for Chain {
|
||||||
|
@ -79,6 +81,8 @@ impl TryFrom<u64> for Chain {
|
||||||
1285 => Chain::Moonriver,
|
1285 => Chain::Moonriver,
|
||||||
10 => Chain::Optimism,
|
10 => Chain::Optimism,
|
||||||
69 => Chain::OptimismKovan,
|
69 => Chain::OptimismKovan,
|
||||||
|
56 => Chain::BinanceSmartChain,
|
||||||
|
97 => Chain::BinanceSmartChainTestnet,
|
||||||
_ => return Err(ParseChainError(chain.to_string())),
|
_ => return Err(ParseChainError(chain.to_string())),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -106,6 +110,8 @@ 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,
|
||||||
|
"bsc" => Chain::BinanceSmartChain,
|
||||||
|
"bsc-testnet" => Chain::BinanceSmartChainTestnet,
|
||||||
_ => return Err(ParseChainError(chain.to_owned())),
|
_ => return Err(ParseChainError(chain.to_owned())),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,6 +73,13 @@ impl Client {
|
||||||
Url::parse("https://api-testnet.ftmscan.com"),
|
Url::parse("https://api-testnet.ftmscan.com"),
|
||||||
Url::parse("https://testnet.ftmscan.com"),
|
Url::parse("https://testnet.ftmscan.com"),
|
||||||
),
|
),
|
||||||
|
Chain::BinanceSmartChain => {
|
||||||
|
(Url::parse("https://api.bscscan.com/api"), Url::parse("https://bscscan.com"))
|
||||||
|
}
|
||||||
|
Chain::BinanceSmartChainTestnet => (
|
||||||
|
Url::parse("https://api-testnet.bscscan.com/api"),
|
||||||
|
Url::parse("https://testnet.bscscan.com"),
|
||||||
|
),
|
||||||
chain => return Err(EtherscanError::ChainNotSupported(chain)),
|
chain => return Err(EtherscanError::ChainNotSupported(chain)),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -90,15 +97,17 @@ impl Client {
|
||||||
let api_key = match chain {
|
let api_key = match chain {
|
||||||
Chain::Avalanche | Chain::AvalancheFuji => std::env::var("SNOWTRACE_API_KEY")?,
|
Chain::Avalanche | Chain::AvalancheFuji => std::env::var("SNOWTRACE_API_KEY")?,
|
||||||
Chain::Polygon | Chain::PolygonMumbai => std::env::var("POLYGONSCAN_API_KEY")?,
|
Chain::Polygon | Chain::PolygonMumbai => std::env::var("POLYGONSCAN_API_KEY")?,
|
||||||
Chain::Mainnet |
|
Chain::Mainnet
|
||||||
Chain::Ropsten |
|
| Chain::Ropsten
|
||||||
Chain::Kovan |
|
| Chain::Kovan
|
||||||
Chain::Rinkeby |
|
| Chain::Rinkeby
|
||||||
Chain::Goerli |
|
| Chain::Goerli
|
||||||
Chain::Optimism |
|
| Chain::Optimism
|
||||||
Chain::OptimismKovan |
|
| Chain::OptimismKovan
|
||||||
Chain::Fantom |
|
| Chain::Fantom
|
||||||
Chain::FantomTestnet => std::env::var("ETHERSCAN_API_KEY")?,
|
| Chain::FantomTestnet
|
||||||
|
| Chain::BinanceSmartChain
|
||||||
|
| Chain::BinanceSmartChainTestnet => std::env::var("ETHERSCAN_API_KEY")?,
|
||||||
|
|
||||||
Chain::XDai | Chain::Sepolia => String::default(),
|
Chain::XDai | Chain::Sepolia => String::default(),
|
||||||
Chain::Moonbeam | Chain::MoonbeamDev | Chain::Moonriver => {
|
Chain::Moonbeam | Chain::MoonbeamDev | Chain::Moonriver => {
|
||||||
|
|
Loading…
Reference in New Issue