diff --git a/light-node/Cargo.toml b/light-node/Cargo.toml index 9a47833f9..a81e074e4 100644 --- a/light-node/Cargo.toml +++ b/light-node/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] gumdrop = "0.7" serde = { version = "1", features = ["serde_derive"] } -tendermint = { version = "0.11", path = "../tendermint" } +tendermint = { version = "0.12.0-rc0", path = "../tendermint" } tokio = "0.2" [dependencies.abscissa_core] diff --git a/light-node/src/commands/start.rs b/light-node/src/commands/start.rs index 0de9339d9..f8e4e6f7f 100644 --- a/light-node/src/commands/start.rs +++ b/light-node/src/commands/start.rs @@ -68,8 +68,7 @@ impl Runnable for StartCmd { println!( "attempting bisection from height {:?} to height {:?}", - latest_trusted_height, - latest_peer_height, + latest_trusted_height, latest_peer_height, ); let now = &SystemTime::now(); diff --git a/light-node/src/requester.rs b/light-node/src/requester.rs index b7ffdb042..f27292a93 100644 --- a/light-node/src/requester.rs +++ b/light-node/src/requester.rs @@ -1,9 +1,12 @@ -use tendermint::block; -use tendermint::lite; +use tendermint::block::signed_header::SignedHeader as TMCommit; +use tendermint::block::Header as TMHeader; use tendermint::rpc; use tendermint::validator; +use tendermint::{block, lite}; use core::future::Future; +use tendermint::lite::{Height, SignedHeader}; +use tendermint::validator::Set; use tokio::runtime::Builder; /// RPCRequester wraps the Tendermint rpc::Client. @@ -17,33 +20,26 @@ impl RPCRequester { } } -impl lite::types::Requester for RPCRequester { - type SignedHeader = block::signed_header::SignedHeader; - type ValidatorSet = validator::Set; +type TMSignedHeader = SignedHeader; +impl lite::types::Requester for RPCRequester { /// Request the signed header at height h. /// If h==0, request the latest signed header. /// TODO: use an enum instead of h==0. - fn signed_header(&self, h: H) -> Result - where - H: Into, - { + fn signed_header(&self, h: Height) -> Result { let height: block::Height = h.into(); let r = match height.value() { 0 => block_on(self.client.latest_commit()), _ => block_on(self.client.commit(height)), }; match r { - Ok(response) => Ok(response.signed_header), + Ok(response) => Ok(response.signed_header.into()), Err(_error) => Err(lite::Error::RequestFailed), } } /// Request the validator set at height h. - fn validator_set(&self, h: H) -> Result - where - H: Into, - { + fn validator_set(&self, h: Height) -> Result { let r = block_on(self.client.validators(h)); match r { Ok(response) => Ok(validator::Set::new(response.validators)), @@ -66,7 +62,6 @@ mod tests { use super::*; use tendermint::lite::types::Header as LiteHeader; use tendermint::lite::types::Requester as LiteRequester; - use tendermint::lite::types::SignedHeader as LiteSignedHeader; use tendermint::lite::types::ValidatorSet as LiteValSet; use tendermint::rpc; diff --git a/light-node/src/store.rs b/light-node/src/store.rs index cbebe6697..c78eb01dd 100644 --- a/light-node/src/store.rs +++ b/light-node/src/store.rs @@ -1,8 +1,9 @@ -use crate::state::State; -use tendermint::block::Height; -use tendermint::lite::{Error, Header, SignedHeader, Store, TrustedState}; +use tendermint::lite::{Error, Header, Height, TrustedState}; use std::collections::HashMap; +use tendermint::block; + +pub type State = TrustedState; #[derive(Default)] pub struct MemStore { @@ -13,25 +14,23 @@ pub struct MemStore { impl MemStore { pub fn new() -> MemStore { MemStore { - height: Height::from(0), + height: 0, store: HashMap::new(), } } } -impl Store for MemStore { - type TrustedState = State; - - fn add(&mut self, trusted: &Self::TrustedState) -> Result<(), Error> { +impl MemStore { + pub fn add(&mut self, trusted: State) -> Result<(), Error> { let height = trusted.last_header().header().height(); self.height = height; - self.store.insert(height, trusted.clone()); + self.store.insert(height, trusted); Ok(()) } - fn get(&self, h: Height) -> Result<&Self::TrustedState, Error> { + pub fn get(&self, h: Height) -> Result<&State, Error> { let mut height = h; - if h.value() == 0 { + if h == 0 { height = self.height } match self.store.get(&height) {