2
0
mirror of https://github.com/Revertron/Alfis synced 2024-11-03 15:40:19 +00:00

Fixed wait for signing mode in miner.

This commit is contained in:
Revertron 2021-03-17 10:22:34 +01:00
parent 85c2a7e668
commit d8ac1e3c32
2 changed files with 18 additions and 9 deletions

View File

@ -13,7 +13,7 @@ use crate::blockchain::enums::BlockQuality::*;
use crate::blockchain::hash_utils::*;
use crate::settings::Settings;
use crate::keys::check_public_key_strength;
use std::cmp::min;
use std::cmp::{min, max};
const DB_NAME: &str = "blockchain.db";
const SQL_CREATE_TABLES: &str = "CREATE TABLE blocks (
@ -329,6 +329,19 @@ impl Chain {
}
}
pub fn next_minable_block(&self) -> u64 {
match self.last_full_block {
None => { self.height() + 1 }
Some(ref block) => {
if block.index < LOCKER_BLOCK_START {
self.height() + 1
} else {
max(block.index, self.height()) + LOCKER_BLOCK_SIGNS
}
}
}
}
pub fn max_height(&self) -> u64 {
self.max_height
}

View File

@ -209,14 +209,10 @@ fn find_hash(context: Arc<Mutex<Context>>, digest: &mut dyn Digest, mut block: B
loop {
block.random = rand::random();
block.index = context.lock().unwrap().chain.height() + 1;
if let Some(last_block) = context.lock().unwrap().chain.last_block() {
block.prev_block_hash = last_block.hash;
if block.transaction.is_some() && last_block.transaction.is_some() {
// We can't mine our domain block over a block with domain
// TODO make a method in Chain to get next available to mine block index
thread::sleep(Duration::from_millis(1000));
continue;
}
if context.lock().unwrap().chain.next_minable_block() > block.index {
// We can't mine now, as we need to wait for block to be signed
thread::sleep(Duration::from_millis(1000));
continue;
}
debug!("Mining block {}", serde_json::to_string(&block).unwrap());
for nonce in 0..std::u64::MAX {