chore: phase out ethers rpc block types (#1463)

This commit is contained in:
Matthias Seitz
2023-02-20 16:02:33 +01:00
committed by GitHub
parent 2a9472e9c3
commit 50203a8f2a
22 changed files with 119 additions and 95 deletions

View File

@ -1,4 +1,5 @@
use crate::{Header, SealedHeader, TransactionSigned, Withdrawal, H256};
use ethers_core::types::BlockNumber;
use reth_codecs::derive_arbitrary;
use reth_rlp::{Decodable, DecodeError, Encodable, RlpDecodable, RlpEncodable};
use serde::{
@ -361,9 +362,22 @@ impl BlockNumberOrTag {
}
}
impl<T: Into<u64>> From<T> for BlockNumberOrTag {
fn from(num: T) -> Self {
BlockNumberOrTag::Number(num.into())
impl From<u64> for BlockNumberOrTag {
fn from(num: u64) -> Self {
BlockNumberOrTag::Number(num)
}
}
impl From<ethers_core::types::BlockNumber> for BlockNumberOrTag {
fn from(value: BlockNumber) -> Self {
match value {
BlockNumber::Latest => BlockNumberOrTag::Latest,
BlockNumber::Finalized => BlockNumberOrTag::Finalized,
BlockNumber::Safe => BlockNumberOrTag::Safe,
BlockNumber::Earliest => BlockNumberOrTag::Earliest,
BlockNumber::Pending => BlockNumberOrTag::Pending,
BlockNumber::Number(num) => BlockNumberOrTag::Number(num.as_u64()),
}
}
}
@ -439,11 +453,31 @@ pub struct BlockHash {
/// Whether the block must be a canonical block
pub require_canonical: Option<bool>,
}
impl BlockHash {
pub fn from_hash(block_hash: H256, require_canonical: Option<bool>) -> Self {
BlockHash { block_hash, require_canonical }
}
}
impl From<H256> for BlockHash {
fn from(value: H256) -> Self {
Self::from_hash(value, None)
}
}
impl From<BlockHash> for H256 {
fn from(value: BlockHash) -> Self {
value.block_hash
}
}
impl AsRef<H256> for BlockHash {
fn as_ref(&self) -> &H256 {
&self.block_hash
}
}
#[cfg(test)]
mod test {
use super::{BlockId, BlockNumberOrTag::*, *};

View File

@ -1,4 +1,4 @@
use crate::{rpc::BlockNumber as RpcBlockNumber, BlockNumber, H256};
use crate::{BlockNumber, BlockNumberOrTag, H256};
/// Current status of the blockchain's head.
#[derive(Default, Debug, Eq, PartialEq)]
@ -15,14 +15,14 @@ pub struct ChainInfo {
impl ChainInfo {
/// Attempts to convert a [BlockNumber](crate::rpc::BlockNumber) enum to a numeric value
pub fn convert_block_number(&self, number: RpcBlockNumber) -> Option<u64> {
pub fn convert_block_number(&self, number: BlockNumberOrTag) -> Option<u64> {
match number {
RpcBlockNumber::Finalized => self.last_finalized,
RpcBlockNumber::Safe => self.safe_finalized,
RpcBlockNumber::Earliest => Some(0),
RpcBlockNumber::Number(num) => Some(num.as_u64()),
RpcBlockNumber::Pending => None,
RpcBlockNumber::Latest => Some(self.best_number),
BlockNumberOrTag::Finalized => self.last_finalized,
BlockNumberOrTag::Safe => self.safe_finalized,
BlockNumberOrTag::Earliest => Some(0),
BlockNumberOrTag::Number(num) => Some(num),
BlockNumberOrTag::Pending => None,
BlockNumberOrTag::Latest => Some(self.best_number),
}
}
}