mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 19:09:54 +00:00
chore: phase out ethers rpc block types (#1463)
This commit is contained in:
@ -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::*, *};
|
||||
|
||||
@ -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),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user