|
|
|
|
@@ -22,7 +22,7 @@ use std::mem;
|
|
|
|
|
use itertools::Itertools;
|
|
|
|
|
use bloomchain as bc;
|
|
|
|
|
use heapsize::HeapSizeOf;
|
|
|
|
|
use ethereum_types::{H256, H2048, U256};
|
|
|
|
|
use ethereum_types::{H256, Bloom, U256};
|
|
|
|
|
use parking_lot::{Mutex, RwLock};
|
|
|
|
|
use bytes::Bytes;
|
|
|
|
|
use rlp::*;
|
|
|
|
|
@@ -32,7 +32,7 @@ use transaction::*;
|
|
|
|
|
use views::*;
|
|
|
|
|
use log_entry::{LogEntry, LocalizedLogEntry};
|
|
|
|
|
use receipt::Receipt;
|
|
|
|
|
use blooms::{Bloom, BloomGroup};
|
|
|
|
|
use blooms::BloomGroup;
|
|
|
|
|
use blockchain::block_info::{BlockInfo, BlockLocation, BranchBecomingCanonChainData};
|
|
|
|
|
use blockchain::best_block::{BestBlock, BestAncientBlock};
|
|
|
|
|
use types::blockchain_info::BlockChainInfo;
|
|
|
|
|
@@ -149,7 +149,7 @@ pub trait BlockProvider {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// Returns numbers of blocks containing given bloom.
|
|
|
|
|
fn blocks_with_bloom(&self, bloom: &H2048, from_block: BlockNumber, to_block: BlockNumber) -> Vec<BlockNumber>;
|
|
|
|
|
fn blocks_with_bloom(&self, bloom: &Bloom, from_block: BlockNumber, to_block: BlockNumber) -> Vec<BlockNumber>;
|
|
|
|
|
|
|
|
|
|
/// Returns logs matching given filter.
|
|
|
|
|
fn logs<F>(&self, blocks: Vec<BlockNumber>, matches: F, limit: Option<usize>) -> Vec<LocalizedLogEntry>
|
|
|
|
|
@@ -354,7 +354,7 @@ impl BlockProvider for BlockChain {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// Returns numbers of blocks containing given bloom.
|
|
|
|
|
fn blocks_with_bloom(&self, bloom: &H2048, from_block: BlockNumber, to_block: BlockNumber) -> Vec<BlockNumber> {
|
|
|
|
|
fn blocks_with_bloom(&self, bloom: &Bloom, from_block: BlockNumber, to_block: BlockNumber) -> Vec<BlockNumber> {
|
|
|
|
|
let range = from_block as bc::Number..to_block as bc::Number;
|
|
|
|
|
let chain = bc::group::BloomGroupChain::new(self.blooms_config, self);
|
|
|
|
|
chain.with_bloom(&range, &Bloom::from(bloom.clone()).into())
|
|
|
|
|
@@ -2132,11 +2132,11 @@ mod tests {
|
|
|
|
|
#[test]
|
|
|
|
|
fn test_bloom_filter_simple() {
|
|
|
|
|
// TODO: From here
|
|
|
|
|
let bloom_b1: H2048 = "00000020000000000000000000000000000000000000000002000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000400000000000000000000002000".into();
|
|
|
|
|
let bloom_b1: Bloom = "00000020000000000000000000000000000000000000000002000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000400000000000000000000002000".into();
|
|
|
|
|
|
|
|
|
|
let bloom_b2: H2048 = "00000000000000000000000000000000000000000000020000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".into();
|
|
|
|
|
let bloom_b2: Bloom = "00000000000000000000000000000000000000000000020000001000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".into();
|
|
|
|
|
|
|
|
|
|
let bloom_ba: H2048 = "00000000000000000000000000000000000000000000020000000800000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".into();
|
|
|
|
|
let bloom_ba: Bloom = "00000000000000000000000000000000000000000000020000000800000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000008000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".into();
|
|
|
|
|
|
|
|
|
|
let mut canon_chain = ChainGenerator::default();
|
|
|
|
|
let mut finalizer = BlockFinalizer::default();
|
|
|
|
|
|