light: search for common ancestor with peers

This commit is contained in:
Robert Habermeier
2016-12-13 21:09:57 +01:00
parent 8c64400654
commit 6fb71527e4
5 changed files with 53 additions and 27 deletions

View File

@@ -276,7 +276,7 @@ mod tests {
header.set_timestamp(rolling_timestamp);
header.set_difficulty(*genesis_header.difficulty() * i.into());
chain.insert(::rlp::encode(&header).to_vec());
chain.insert(::rlp::encode(&header).to_vec()).unwrap();
parent_hash = header.hash();
rolling_timestamp += 10;

View File

@@ -18,6 +18,7 @@
use ethcore::block_import_error::BlockImportError;
use ethcore::block_status::BlockStatus;
use ethcore::ids::BlockId;
use ethcore::verification::queue::{self, HeaderQueue};
use ethcore::transaction::SignedTransaction;
use ethcore::blockchain_info::BlockChainInfo;
@@ -33,7 +34,7 @@ use request;
use self::header_chain::HeaderChain;
mod cht;
pub mod cht;
mod header_chain;
/// Configuration for the light client.
@@ -84,16 +85,8 @@ impl Client {
}
}
/// Get the header queue info.
pub fn queue_info(&self) -> queue::QueueInfo {
self.queue.queue_info()
}
}
// dummy implementation -- may draw from canonical cache further on.
impl Provider for Client {
fn chain_info(&self) -> BlockChainInfo {
/// Get the chain info.
pub fn chain_info(&self) -> BlockChainInfo {
let best_block = self.chain.best_block();
let first_block = self.chain.first_block();
let genesis_hash = self.chain.genesis_hash();
@@ -111,6 +104,28 @@ impl Provider for Client {
}
}
/// Get the header queue info.
pub fn queue_info(&self) -> queue::QueueInfo {
self.queue.queue_info()
}
/// Get a block header by Id.
pub fn get_header(&self, id: BlockId) -> Option<Bytes> {
self.chain.get_header(id)
}
/// Get the `i`th CHT root.
pub fn cht_root(&self, i: usize) -> Option<H256> {
self.chain.cht_root(i)
}
}
// dummy implementation -- may draw from canonical cache further on.
impl Provider for Client {
fn chain_info(&self) -> BlockChainInfo {
Client::chain_info(self)
}
fn reorg_depth(&self, _a: &H256, _b: &H256) -> Option<u64> {
None
}

View File

@@ -38,7 +38,7 @@ use request::{self, HashOrNumber, Request};
use self::buffer_flow::{Buffer, FlowParams};
use self::context::Ctx;
use self::error::{Error, Punishment};
use self::error::Punishment;
mod buffer_flow;
mod context;
@@ -48,6 +48,7 @@ mod status;
#[cfg(test)]
mod tests;
pub use self::error::Error;
pub use self::context::{EventContext, IoContext};
pub use self::status::{Status, Capabilities, Announcement};