commit
eb7cc5fb4d
38
README.md
38
README.md
@ -7,10 +7,9 @@
|
||||
[coveralls-image]: https://coveralls.io/repos/github/ethcore/parity/badge.svg?branch=master&t=Fk0OuQ
|
||||
[coveralls-url]: https://coveralls.io/r/ethcore/parity?branch=master
|
||||
|
||||
|
||||
### Building from source
|
||||
|
||||
##### Ubuntu 14.04 and later
|
||||
##### Ubuntu 14.04
|
||||
|
||||
```bash
|
||||
# install rocksdb
|
||||
@ -22,10 +21,8 @@ apt-get install -y --force-yes librocksdb
|
||||
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
|
||||
multirust update nightly
|
||||
multirust default nightly
|
||||
|
||||
# download and build parity
|
||||
git clone https://github.com/ethcore/parity
|
||||
@ -33,7 +30,31 @@ cd parity
|
||||
cargo build --release
|
||||
```
|
||||
|
||||
##### OSX
|
||||
##### Linux
|
||||
|
||||
```bash
|
||||
# install rocksdb
|
||||
git clone --tag v4.1 --depth=1 https://github.com/facebook/rocksdb.git
|
||||
cd rocksdb
|
||||
make shared_lib
|
||||
sudo cp -a librocksdb.so* /usr/lib
|
||||
sudo ldconfig
|
||||
cd ..
|
||||
|
||||
# install rust nightly
|
||||
curl -sf https://raw.githubusercontent.com/brson/multirust/master/blastoff.sh | sudo sh -s -- --yes
|
||||
|
||||
# install nightly and make it default
|
||||
sudo multirust update nightly
|
||||
sudo multirust default nightly
|
||||
|
||||
# download and build parity
|
||||
git clone https://github.com/ethcore/parity
|
||||
cd parity
|
||||
cargo build --release
|
||||
```
|
||||
|
||||
##### OSX with Homebrew
|
||||
|
||||
```bash
|
||||
# install rocksdb && multirust
|
||||
@ -44,9 +65,6 @@ brew install multirust
|
||||
# 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
|
||||
|
@ -7,11 +7,11 @@ use pod_account::*;
|
||||
/// Change in existance type.
|
||||
// TODO: include other types of change.
|
||||
pub enum Existance {
|
||||
/// TODO [Gav Wood] Please document me
|
||||
/// Item came into existance.
|
||||
Born,
|
||||
/// TODO [Gav Wood] Please document me
|
||||
/// Item stayed in existance.
|
||||
Alive,
|
||||
/// TODO [Gav Wood] Please document me
|
||||
/// Item went out of existance.
|
||||
Died,
|
||||
}
|
||||
|
||||
@ -27,20 +27,20 @@ impl fmt::Display for Existance {
|
||||
}
|
||||
|
||||
#[derive(Debug,Clone,PartialEq,Eq)]
|
||||
/// TODO [Gav Wood] Please document me
|
||||
/// Account diff.
|
||||
pub struct AccountDiff {
|
||||
/// TODO [Gav Wood] Please document me
|
||||
pub balance: Diff<U256>, // Allowed to be Same
|
||||
/// TODO [Gav Wood] Please document me
|
||||
/// Change in balance, allowed to be `Diff::Same`.
|
||||
pub balance: Diff<U256>,
|
||||
/// Change in nonce, allowed to be `Diff::Same`.
|
||||
pub nonce: Diff<U256>, // Allowed to be Same
|
||||
/// TODO [Gav Wood] Please document me
|
||||
/// Change in code, allowed to be `Diff::Same`.
|
||||
pub code: Diff<Bytes>, // Allowed to be Same
|
||||
/// TODO [Gav Wood] Please document me
|
||||
pub storage: BTreeMap<H256, Diff<H256>>,// Not allowed to be Same
|
||||
/// Change in storage, values are not allowed to be `Diff::Same`.
|
||||
pub storage: BTreeMap<H256, Diff<H256>>,
|
||||
}
|
||||
|
||||
impl AccountDiff {
|
||||
/// TODO [Gav Wood] Please document me
|
||||
/// Get `Existance` projection.
|
||||
pub fn existance(&self) -> Existance {
|
||||
match self.balance {
|
||||
Diff::Born(_) => Existance::Born,
|
||||
@ -49,7 +49,8 @@ impl AccountDiff {
|
||||
}
|
||||
}
|
||||
|
||||
/// TODO [Gav Wood] Please document me
|
||||
/// Determine difference between two optionally existance `Account`s. Returns None
|
||||
/// if they are the same.
|
||||
pub fn diff_pod(pre: Option<&PodAccount>, post: Option<&PodAccount>) -> Option<AccountDiff> {
|
||||
match (pre, post) {
|
||||
(None, Some(x)) => Some(AccountDiff {
|
||||
|
@ -8,10 +8,10 @@ pub type LogBloom = H2048;
|
||||
/// Constant 2048-bit datum for 0. Often used as a default.
|
||||
pub static ZERO_LOGBLOOM: LogBloom = H2048([0x00; 256]);
|
||||
|
||||
/// TODO [Gav Wood] Please document me
|
||||
/// Semantic boolean for when a seal/signature is included.
|
||||
pub enum Seal {
|
||||
/// TODO [Gav Wood] Please document me
|
||||
/// The seal/signature is included.
|
||||
With,
|
||||
/// TODO [Gav Wood] Please document me
|
||||
/// The seal/signature is not included.
|
||||
Without,
|
||||
}
|
||||
|
@ -63,7 +63,8 @@ impl Builtin {
|
||||
}
|
||||
}
|
||||
|
||||
/// TODO [Gav Wood] Please document me
|
||||
/// Copy a bunch of bytes to a destination; if the `src` is too small to fill `dest`,
|
||||
/// leave the rest unchanged.
|
||||
pub fn copy_to(src: &[u8], dest: &mut[u8]) {
|
||||
// NICE: optimise
|
||||
for i in 0..min(src.len(), dest.len()) {
|
||||
|
@ -116,18 +116,18 @@ pub trait BlockChainClient : Sync + Send {
|
||||
}
|
||||
|
||||
#[derive(Default, Clone, Debug, Eq, PartialEq)]
|
||||
/// TODO [Gav Wood] Please document me
|
||||
/// Report on the status of a client.
|
||||
pub struct ClientReport {
|
||||
/// TODO [Gav Wood] Please document me
|
||||
/// How many blocks have been imported so far.
|
||||
pub blocks_imported: usize,
|
||||
/// TODO [Gav Wood] Please document me
|
||||
/// How many transactions have been applied so far.
|
||||
pub transactions_applied: usize,
|
||||
/// TODO [Gav Wood] Please document me
|
||||
/// How much gas has been processed so far.
|
||||
pub gas_processed: U256,
|
||||
}
|
||||
|
||||
impl ClientReport {
|
||||
/// TODO [Gav Wood] Please document me
|
||||
/// Alter internal reporting to reflect the additional `block` has been processed.
|
||||
pub fn accrue_block(&mut self, block: &PreVerifiedBlock) {
|
||||
self.blocks_imported += 1;
|
||||
self.transactions_applied += block.transactions.len();
|
||||
|
@ -31,17 +31,16 @@ pub trait Engine : Sync + Send {
|
||||
|
||||
/// Some intrinsic operation parameters; by default they take their value from the `spec()`'s `engine_params`.
|
||||
fn maximum_extra_data_size(&self) -> usize { decode(&self.spec().engine_params.get("maximumExtraDataSize").unwrap()) }
|
||||
/// TODO [Gav Wood] Please document me
|
||||
/// Maximum number of uncles a block is allowed to declare.
|
||||
fn maximum_uncle_count(&self) -> usize { 2 }
|
||||
/// TODO [Gav Wood] Please document me
|
||||
/// The nonce with which accounts begin.
|
||||
fn account_start_nonce(&self) -> U256 { decode(&self.spec().engine_params.get("accountStartNonce").unwrap()) }
|
||||
|
||||
/// Block transformation functions, before and after the transactions.
|
||||
/// Block transformation functions, before the transactions.
|
||||
fn on_new_block(&self, _block: &mut ExecutedBlock) {}
|
||||
/// TODO [Gav Wood] Please document me
|
||||
/// Block transformation functions, after the transactions.
|
||||
fn on_close_block(&self, _block: &mut ExecutedBlock) {}
|
||||
|
||||
// TODO: consider including State in the params for verification functions.
|
||||
/// Phase 1 quick block verification. Only does checks that are cheap. `block` (the header's full block)
|
||||
/// may be provided for additional checks. Returns either a null `Ok` or a general error detailing the problem with import.
|
||||
fn verify_block_basic(&self, _header: &Header, _block: Option<&[u8]>) -> Result<(), Error> { Ok(()) }
|
||||
@ -58,7 +57,7 @@ pub trait Engine : Sync + Send {
|
||||
// TODO: Add flags for which bits of the transaction to check.
|
||||
// TODO: consider including State in the params.
|
||||
fn verify_transaction_basic(&self, _t: &Transaction, _header: &Header) -> Result<(), Error> { Ok(()) }
|
||||
/// TODO [Gav Wood] Please document me
|
||||
/// Verify a particular transaction is valid.
|
||||
fn verify_transaction(&self, _t: &Transaction, _header: &Header) -> Result<(), Error> { Ok(()) }
|
||||
|
||||
/// Don't forget to call Super::populateFromParent when subclassing & overriding.
|
||||
@ -67,11 +66,13 @@ pub trait Engine : Sync + Send {
|
||||
|
||||
// TODO: builtin contract routing - to do this properly, it will require removing the built-in configuration-reading logic
|
||||
// from Spec into here and removing the Spec::builtins field.
|
||||
/// TODO [Gav Wood] Please document me
|
||||
/// Determine whether a particular address is a builtin contract.
|
||||
fn is_builtin(&self, a: &Address) -> bool { self.spec().builtins.contains_key(a) }
|
||||
/// TODO [Gav Wood] Please document me
|
||||
/// Determine the code execution cost of the builtin contract with address `a`.
|
||||
/// Panics if `is_builtin(a)` is not true.
|
||||
fn cost_of_builtin(&self, a: &Address, input: &[u8]) -> U256 { self.spec().builtins.get(a).unwrap().cost(input.len()) }
|
||||
/// TODO [Gav Wood] Please document me
|
||||
/// Execution the builtin contract `a` on `input` and return `output`.
|
||||
/// Panics if `is_builtin(a)` is not true.
|
||||
fn execute_builtin(&self, a: &Address, input: &[u8], output: &mut [u8]) { self.spec().builtins.get(a).unwrap().execute(input, output); }
|
||||
|
||||
// TODO: sealing stuff - though might want to leave this for later.
|
||||
|
Loading…
Reference in New Issue
Block a user