diff --git a/ethcore/src/account.rs b/ethcore/src/account.rs index 409637d6f..ab7ad1e53 100644 --- a/ethcore/src/account.rs +++ b/ethcore/src/account.rs @@ -1,3 +1,5 @@ +//! Single account in the system. + use util::*; use pod_account::*; diff --git a/ethcore/src/account_diff.rs b/ethcore/src/account_diff.rs index 1843c4381..c349ade84 100644 --- a/ethcore/src/account_diff.rs +++ b/ethcore/src/account_diff.rs @@ -1,3 +1,5 @@ +//! Diff between two accounts. + use util::*; use pod_account::*; diff --git a/ethcore/src/basic_types.rs b/ethcore/src/basic_types.rs index 3d6fc2609..7bab6e7f1 100644 --- a/ethcore/src/basic_types.rs +++ b/ethcore/src/basic_types.rs @@ -1,3 +1,5 @@ +//! Ethcore basic typenames. + use util::*; /// Type for a 2048-bit log-bloom, as used by our blocks. diff --git a/ethcore/src/block.rs b/ethcore/src/block.rs index f8e8ef16f..1977fb406 100644 --- a/ethcore/src/block.rs +++ b/ethcore/src/block.rs @@ -1,3 +1,5 @@ +//! Blockchain block. + #![allow(ptr_arg)] // Because of &LastHashes -> &Vec<_> use common::*; @@ -394,4 +396,4 @@ mod tests { assert_eq!(orig_db.keys(), db.keys()); assert!(orig_db.keys().iter().filter(|k| orig_db.get(k.0) != db.get(k.0)).next() == None); } -} \ No newline at end of file +} diff --git a/ethcore/src/blockchain.rs b/ethcore/src/blockchain.rs index 1dea65ae7..7ad124133 100644 --- a/ethcore/src/blockchain.rs +++ b/ethcore/src/blockchain.rs @@ -1,4 +1,4 @@ -//! Fast access to blockchain data. +//! Blockchain database. use util::*; use rocksdb::{DB, WriteBatch, Writable}; diff --git a/ethcore/src/client.rs b/ethcore/src/client.rs index ee9b658d8..8d1584e32 100644 --- a/ethcore/src/client.rs +++ b/ethcore/src/client.rs @@ -1,3 +1,5 @@ +//! Blockchain database client. + use util::*; use rocksdb::{Options, DB}; use blockchain::{BlockChain, BlockProvider, CacheSize}; diff --git a/ethcore/src/evm/factory.rs b/ethcore/src/evm/factory.rs index 9f76d25ec..cf78a9692 100644 --- a/ethcore/src/evm/factory.rs +++ b/ethcore/src/evm/factory.rs @@ -93,7 +93,6 @@ fn test_create_vm() { } /// Create tests by injecting different VM factories -#[macro_export] macro_rules! evm_test( ($name_test: ident: $name_jit: ident, $name_int: ident) => { #[test] @@ -109,7 +108,6 @@ macro_rules! evm_test( ); /// Create ignored tests by injecting different VM factories -#[macro_export] macro_rules! evm_test_ignore( ($name_test: ident: $name_jit: ident, $name_int: ident) => { #[test] diff --git a/ethcore/src/extras.rs b/ethcore/src/extras.rs index 4459826cc..be5121a2d 100644 --- a/ethcore/src/extras.rs +++ b/ethcore/src/extras.rs @@ -1,3 +1,5 @@ +//! Blockchain DB extras. + use util::*; use header::BlockNumber; use rocksdb::{DB, Writable}; diff --git a/ethcore/src/header.rs b/ethcore/src/header.rs index c6c18bf4b..531ab93f0 100644 --- a/ethcore/src/header.rs +++ b/ethcore/src/header.rs @@ -1,3 +1,5 @@ +//! Block header. + use util::*; use basic_types::*; use time::now_utc; diff --git a/ethcore/src/lib.rs b/ethcore/src/lib.rs index 0652d964e..b4e7655a2 100644 --- a/ethcore/src/lib.rs +++ b/ethcore/src/lib.rs @@ -2,82 +2,66 @@ #![feature(cell_extras)] #![feature(augmented_assignments)] #![feature(plugin)] -//#![plugin(interpolate_idents)] #![plugin(clippy)] #![allow(needless_range_loop, match_bool)] -//! Ethcore's ethereum implementation +//! Ethcore library //! -//! ### Rust version -//! - beta +//! ### Rust version: //! - nightly //! //! ### Supported platforms: //! - OSX -//! - Linux/Ubuntu +//! - Linux //! -//! ### Dependencies: -//! - RocksDB 3.13 -//! - LLVM 3.7 (optional, required for `jit`) -//! - evmjit (optional, required for `jit`) +//! ### Building: //! -//! ### Dependencies Installation +//! - Ubuntu 14.04 and later: //! -//! - OSX -//! -//! - rocksdb //! ```bash -//! brew install rocksdb +//! # install rocksdb +//! add-apt-repository "deb http://ppa.launchpad.net/giskou/librocksdb/ubuntu trusty main" +//! apt-get update +//! apt-get install -y --force-yes librocksdb +//! +//! # install multirust +//! curl -sf https://raw.githubusercontent.com/brson/multirust/master/blastoff.sh | sh -s -- --yes +//! +//! # install nightly and make it default +//! multirust update nightly && multirust default nightly +//! +//! # export rust LIBRARY_PATH +//! export LIBRARY_PATH=/usr/local/lib +//! +//! # download and build parity +//! git clone https://github.com/ethcore/parity +//! cd parity +//! cargo build --release //! ``` +//! +//! - OSX: //! -//! - llvm +//! ```bash +//! # install rocksdb && multirust +//! brew update +//! brew install rocksdb +//! brew install multirust //! -//! - download llvm 3.7 from http://llvm.org/apt/ +//! # install nightly and make it default +//! multirust update nightly && multirust default nightly //! -//! ```bash -//! cd llvm-3.7.0.src -//! mkdir build && cd $_ -//! cmake -G "Unix Makefiles" .. -DCMAKE_C_FLAGS_RELEASE= -DCMAKE_CXX_FLAGS_RELEASE= -DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/llvm/3.7 -DCMAKE_BUILD_TYPE=Release -//! make && make install -//! ``` -//! - evmjit +//! # export rust LIBRARY_PATH +//! export LIBRARY_PATH=/usr/local/lib //! -//! - download from https://github.com/debris/evmjit -//! -//! ```bash -//! cd evmjit -//! mkdir build && cd $_ -//! cmake -DLLVM_DIR=/usr/local/lib/llvm-3.7/share/llvm/cmake .. -//! make && make install -//! ``` -//! -//! - Linux/Ubuntu -//! -//! - rocksdb -//! -//! ```bash -//! wget https://github.com/facebook/rocksdb/archive/rocksdb-3.13.tar.gz -//! tar xvf rocksdb-3.13.tar.gz && cd rocksdb-rocksdb-3.13 && make shared_lib -//! sudo make install -//! ``` -//! -//! - llvm -//! -//! - install using packages from http://llvm.org/apt/ -//! -//! - evmjit -//! -//! - download from https://github.com/debris/evmjit -//! -//! ```bash -//! cd evmjit -//! mkdir build && cd $_ -//! cmake .. && make -//! sudo make install -//! sudo ldconfig -//! ``` -#[macro_use] -extern crate log; +//! # download and build parity +//! git clone https://github.com/ethcore/parity +//! cd parity +//! cargo build --release +//! ``` + +#[macro_use] extern crate log; +#[macro_use] extern crate ethcore_util as util; +#[macro_use] extern crate lazy_static; extern crate rustc_serialize; extern crate flate2; extern crate rocksdb; @@ -86,73 +70,42 @@ extern crate crypto; extern crate time; extern crate env_logger; extern crate num_cpus; -#[cfg(feature = "jit" )] -extern crate evmjit; -#[macro_use] -extern crate ethcore_util as util; extern crate crossbeam; -#[macro_use] -extern crate lazy_static; -// NOTE: Add doc parser exception for these pub declarations. +#[cfg(feature = "jit" )] extern crate evmjit; -/// TODO [Gav Wood] Please document me -pub mod common; -/// TODO [Tomusdrw] Please document me -pub mod basic_types; -#[macro_use] -pub mod evm; +pub mod block; +pub mod blockchain; +pub mod client; pub mod error; -/// TODO [Gav Wood] Please document me -pub mod log_entry; -/// TODO [Gav Wood] Please document me -pub mod env_info; -/// TODO [Gav Wood] Please document me -pub mod pod_account; -/// TODO [Gav Wood] Please document me -pub mod pod_state; -/// TODO [Gav Wood] Please document me -pub mod account_diff; -/// TODO [Gav Wood] Please document me -pub mod state_diff; -/// TODO [Gav Wood] Please document me -pub mod engine; -/// TODO [Gav Wood] Please document me -pub mod state; -/// TODO [Gav Wood] Please document me -pub mod account; -pub mod action_params; -/// TODO [debris] Please document me +pub mod ethereum; pub mod header; -/// TODO [Gav Wood] Please document me -pub mod transaction; -/// TODO [Gav Wood] Please document me -pub mod receipt; -/// TODO [Gav Wood] Please document me -pub mod null_engine; -/// TODO [Gav Wood] Please document me -pub mod builtin; -/// TODO [debris] Please document me +pub mod service; pub mod spec; pub mod views; -pub mod blockchain; -/// TODO [Gav Wood] Please document me -pub mod extras; -/// TODO [arkpar] Please document me -pub mod substate; -/// TODO [Gav Wood] Please document me -pub mod service; -pub mod executive; -pub mod externalities; -#[cfg(test)] -mod tests; +mod common; +mod basic_types; +mod evm; +mod log_entry; +mod env_info; +mod pod_account; +mod pod_state; +mod account_diff; +mod state_diff; +mod engine; +mod state; +mod account; +mod action_params; +mod transaction; +mod receipt; +mod null_engine; +mod builtin; +mod extras; +mod substate; +mod executive; +mod externalities; +mod verification; +mod block_queue; -/// TODO [arkpar] Please document me -pub mod client; -/// TODO [arkpar] Please document me -pub mod block; -/// TODO [arkpar] Please document me -pub mod verification; -pub mod block_queue; -pub mod ethereum; +#[cfg(test)] mod tests; diff --git a/ethcore/src/service.rs b/ethcore/src/service.rs index f24758abb..e12fc249f 100644 --- a/ethcore/src/service.rs +++ b/ethcore/src/service.rs @@ -1,3 +1,5 @@ +//! Creates and registers client and network services. + use util::*; use spec::Spec; use error::*; @@ -109,4 +111,4 @@ mod tests { let service = ClientService::start(spec, NetworkConfiguration::new()); assert!(service.is_ok()); } -} \ No newline at end of file +} diff --git a/ethcore/src/spec.rs b/ethcore/src/spec.rs index d51246b23..ed8b2dd8f 100644 --- a/ethcore/src/spec.rs +++ b/ethcore/src/spec.rs @@ -1,3 +1,5 @@ +//! Parameters for a block chain. + use common::*; use flate2::read::GzDecoder; use engine::*; diff --git a/ethcore/src/substate.rs b/ethcore/src/substate.rs index 73ba267cd..182cef93b 100644 --- a/ethcore/src/substate.rs +++ b/ethcore/src/substate.rs @@ -1,3 +1,4 @@ +//! Execution environment substate. use common::*; /// State changes which should be applied in finalize, @@ -57,4 +58,4 @@ mod tests { assert_eq!(sub_state.sstore_clears_count, x!(12)); assert_eq!(sub_state.suicides.len(), 1); } -} \ No newline at end of file +} diff --git a/ethcore/src/transaction.rs b/ethcore/src/transaction.rs index 24b617f67..18aa07c57 100644 --- a/ethcore/src/transaction.rs +++ b/ethcore/src/transaction.rs @@ -1,3 +1,5 @@ +//! Transaction data structure. + use util::*; use basic_types::*; use error::*;