grin/chain/src/lib.rs

56 lines
1.4 KiB
Rust
Raw Normal View History

2020-01-20 14:40:58 +03:00
// Copyright 2020 The Grin Developers
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
2016-10-21 03:06:12 +03:00
//! The block chain itself, validates and accepts new blocks, handles reorgs.
#![deny(non_upper_case_globals)]
#![deny(non_camel_case_types)]
#![deny(non_snake_case)]
#![deny(unused_mut)]
#![warn(missing_docs)]
#[macro_use]
extern crate bitflags;
NRD rules and "recent" kernel pos index (#3302) * variants for output_pos linked list entries (head/tail/middle/unique) next and prev and Vec<u8> lmdb keys * get_pos on enum * break list and list entries out into separate enums * track output features in the new output_pos index, so we can determine coinbase maturity * push entry impl for none and unique * some test coverage for output_pos_list * commit * wip - FooListEntry * use instance of the index * linked list of output_pos and commit_pos both now supported * linked_list * cleanup and rename * rename * peek_pos * push some, peek some, pop some * cleanup * commit pos cleanup * split list and entry out into separate db prefixes * cleanup and add placeholder for pop_back * pop_pos_back (for popping off the back of the linked list) test coverage for pop_pos_back * wip * placeholder for prune via a trait pos must always increase in the index * rewind kernel_pos_idx when calling rewind_single_block * RewindableListIndex with rewind support. * test coverage for rewindable list index * test coverage for rewind back to 0 * rewind past end of list * add tests for kernel_pos_idx with multiple commits * commit * cleanup * hook NRD relative lock height validation into block processing and tx validation * cleanup * set local chain type for kernel_idx tests * add test coverage for NRD rules in block processing * NRD test coverage and cleanup * NRD relative height 1 test * test coverage for NRD kernels in block processing * cleanup * start of test coverage for txpool NRD kernel rules * wip * rework pool tests to use real chain (was mock chain) to better reflect reality (tx/block validation rules etc.) * cleanup * cleanup pruneable trait for kernel pos index * add clear() to kernel_pos idx and test coverage * hook kernel_pos rebuild into node startup, compaction and fast sync * verify full NRD history on fast sync * return early if nrd disabled * fix header sync issue
2020-06-10 18:38:29 +03:00
#[macro_use]
extern crate enum_primitive;
#[macro_use]
extern crate serde_derive;
#[macro_use]
extern crate log;
2016-10-21 03:06:12 +03:00
use failure;
use grin_core as core;
use grin_keychain as keychain;
use grin_util as util;
2016-10-21 03:06:12 +03:00
mod chain;
mod error;
NRD rules and "recent" kernel pos index (#3302) * variants for output_pos linked list entries (head/tail/middle/unique) next and prev and Vec<u8> lmdb keys * get_pos on enum * break list and list entries out into separate enums * track output features in the new output_pos index, so we can determine coinbase maturity * push entry impl for none and unique * some test coverage for output_pos_list * commit * wip - FooListEntry * use instance of the index * linked list of output_pos and commit_pos both now supported * linked_list * cleanup and rename * rename * peek_pos * push some, peek some, pop some * cleanup * commit pos cleanup * split list and entry out into separate db prefixes * cleanup and add placeholder for pop_back * pop_pos_back (for popping off the back of the linked list) test coverage for pop_pos_back * wip * placeholder for prune via a trait pos must always increase in the index * rewind kernel_pos_idx when calling rewind_single_block * RewindableListIndex with rewind support. * test coverage for rewindable list index * test coverage for rewind back to 0 * rewind past end of list * add tests for kernel_pos_idx with multiple commits * commit * cleanup * hook NRD relative lock height validation into block processing and tx validation * cleanup * set local chain type for kernel_idx tests * add test coverage for NRD rules in block processing * NRD test coverage and cleanup * NRD relative height 1 test * test coverage for NRD kernels in block processing * cleanup * start of test coverage for txpool NRD kernel rules * wip * rework pool tests to use real chain (was mock chain) to better reflect reality (tx/block validation rules etc.) * cleanup * cleanup pruneable trait for kernel pos index * add clear() to kernel_pos idx and test coverage * hook kernel_pos rebuild into node startup, compaction and fast sync * verify full NRD history on fast sync * return early if nrd disabled * fix header sync issue
2020-06-10 18:38:29 +03:00
pub mod linked_list;
2016-10-21 03:06:12 +03:00
pub mod pipe;
pub mod store;
pub mod txhashset;
2016-10-21 03:06:12 +03:00
pub mod types;
// Re-export the base interface
pub use crate::chain::{Chain, MAX_ORPHAN_SIZE};
pub use crate::error::{Error, ErrorKind};
pub use crate::store::ChainStore;
pub use crate::types::{
BlockStatus, ChainAdapter, Options, SyncState, SyncStatus, Tip, TxHashsetDownloadStats,
TxHashsetWriteStatus,
};