instantiate genesis epoch data if nonexistant in header_chain

This commit is contained in:
Robert Habermeier 2017-09-04 12:37:03 +02:00
parent 372779915f
commit e69e8254db
1 changed files with 14 additions and 10 deletions

View File

@ -258,6 +258,8 @@ impl HeaderChain {
let mut live_epoch_proofs = ::std::collections::HashMap::default();
let genesis = ::rlp::encode(&spec.genesis_header()).into_vec();
let decoded_header = spec.genesis_header();
let chain = if let Some(current) = db.get(col, CURRENT_KEY)? {
let (best_number, highest_number) = {
let rlp = Rlp::new(&current);
@ -315,16 +317,6 @@ impl HeaderChain {
cache: cache,
}
} else {
let decoded_header: Header = ::rlp::decode(&genesis);
let genesis_data = genesis_epoch_data(spec, &decoded_header)?;
{
let mut batch = db.transaction();
let data = encode_canonical_transition(&decoded_header, &genesis_data);
batch.put_vec(col, LAST_CANONICAL_TRANSITION, data);
db.write(batch)?;
}
HeaderChain {
genesis_header: encoded::Header::new(genesis),
best_block: RwLock::new(BlockDescriptor {
@ -340,6 +332,18 @@ impl HeaderChain {
}
};
// instantiate genesis epoch data if it doesn't exist.
if let None = chain.db.get(col, LAST_CANONICAL_TRANSITION)? {
let genesis_data = genesis_epoch_data(spec, &decoded_header)?;
{
let mut batch = chain.db.transaction();
let data = encode_canonical_transition(&decoded_header, &genesis_data);
batch.put_vec(col, LAST_CANONICAL_TRANSITION, data);
chain.db.write(batch)?;
}
}
Ok(chain)
}