light: conditional compilation

This commit is contained in:
Robert Habermeier 2016-12-07 10:50:18 +01:00
parent 60680e1913
commit b38d95328d
7 changed files with 13 additions and 4 deletions

1
Cargo.lock generated
View File

@ -298,7 +298,6 @@ dependencies = [
"ethcore-ipc 1.4.0", "ethcore-ipc 1.4.0",
"ethcore-ipc-codegen 1.4.0", "ethcore-ipc-codegen 1.4.0",
"ethcore-ipc-nano 1.4.0", "ethcore-ipc-nano 1.4.0",
"ethcore-network 1.5.0",
"ethcore-util 1.5.0", "ethcore-util 1.5.0",
"ethjson 0.1.0", "ethjson 0.1.0",
"ethkey 0.2.0", "ethkey 0.2.0",

View File

@ -80,6 +80,7 @@ ethstore-cli = ["ethcore/ethstore-cli"]
evm-debug = ["ethcore/evm-debug"] evm-debug = ["ethcore/evm-debug"]
evm-debug-tests = ["ethcore/evm-debug-tests"] evm-debug-tests = ["ethcore/evm-debug-tests"]
slow-blocks = ["ethcore/slow-blocks"] slow-blocks = ["ethcore/slow-blocks"]
light = ["ethcore/light"]
[[bin]] [[bin]]
path = "parity/main.rs" path = "parity/main.rs"

View File

@ -58,5 +58,6 @@ dev = ["clippy"]
default = [] default = []
benches = [] benches = []
ipc = [] ipc = []
light = []
ethkey-cli = ["ethkey/cli"] ethkey-cli = ["ethkey/cli"]
ethstore-cli = ["ethstore/cli"] ethstore-cli = ["ethstore/cli"]

View File

@ -52,7 +52,7 @@ use blockchain::{BlockChain, BlockProvider, TreeRoute, ImportRoute};
use client::{ use client::{
BlockID, TransactionID, UncleID, TraceId, ClientConfig, BlockChainClient, BlockID, TransactionID, UncleID, TraceId, ClientConfig, BlockChainClient,
MiningBlockChainClient, TraceFilter, CallAnalytics, BlockImportError, Mode, MiningBlockChainClient, TraceFilter, CallAnalytics, BlockImportError, Mode,
ChainNotify, PruningInfo, ProvingBlockChainClient, ChainNotify, PruningInfo,
}; };
use client::Error as ClientError; use client::Error as ClientError;
use env_info::EnvInfo; use env_info::EnvInfo;
@ -1377,7 +1377,8 @@ impl MayPanic for Client {
} }
} }
impl ProvingBlockChainClient for Client { #[cfg(feature = "light")]
impl ::client::ProvingBlockChainClient for Client {
fn prove_storage(&self, key1: H256, key2: H256, from_level: u32, id: BlockID) -> Vec<Bytes> { fn prove_storage(&self, key1: H256, key2: H256, from_level: u32, id: BlockID) -> Vec<Bytes> {
self.state_at(id) self.state_at(id)
.and_then(move |state| state.prove_storage(key1, key2, from_level).ok()) .and_then(move |state| state.prove_storage(key1, key2, from_level).ok())

View File

@ -27,7 +27,10 @@ pub use self::config::{Mode, ClientConfig, DatabaseCompactionProfile, BlockChain
pub use self::error::Error; pub use self::error::Error;
pub use self::test_client::{TestBlockChainClient, EachBlockWith}; pub use self::test_client::{TestBlockChainClient, EachBlockWith};
pub use self::chain_notify::ChainNotify; pub use self::chain_notify::ChainNotify;
pub use self::traits::{BlockChainClient, MiningBlockChainClient, ProvingBlockChainClient}; pub use self::traits::{BlockChainClient, MiningBlockChainClient};
#[cfg(feature = "light")]
pub use self::traits::ProvingBlockChainClient;
pub use types::ids::*; pub use types::ids::*;
pub use types::trace_filter::Filter as TraceFilter; pub use types::trace_filter::Filter as TraceFilter;

View File

@ -278,6 +278,7 @@ pub trait MiningBlockChainClient: BlockChainClient {
} }
/// Extended client interface for providing proofs of the state. /// Extended client interface for providing proofs of the state.
#[cfg(feature = "light")]
pub trait ProvingBlockChainClient: BlockChainClient { pub trait ProvingBlockChainClient: BlockChainClient {
/// Prove account storage at a specific block id. /// Prove account storage at a specific block id.
/// ///

View File

@ -31,6 +31,8 @@ use transaction::SignedTransaction;
use state_db::StateDB; use state_db::StateDB;
use util::*; use util::*;
#[cfg(feature = "light")]
use util::trie::recorder::{Recorder, BasicRecorder as TrieRecorder}; use util::trie::recorder::{Recorder, BasicRecorder as TrieRecorder};
mod account; mod account;
@ -762,6 +764,7 @@ impl State {
} }
// LES state proof implementations. // LES state proof implementations.
#[cfg(feature = "light")]
impl State { impl State {
/// Prove an account's existence or nonexistence in the state trie. /// Prove an account's existence or nonexistence in the state trie.
/// Returns a merkle proof of the account's trie node with all nodes before `from_level` /// Returns a merkle proof of the account's trie node with all nodes before `from_level`