diff --git a/src/miner/worker.rs b/src/miner/worker.rs index ffaf26edfb8147fa0ad78e551925ad2bd833ae0e..452439cd17a6d47820044ef3e9dfc3942e2cea7b 100644 --- a/src/miner/worker.rs +++ b/src/miner/worker.rs @@ -3,21 +3,26 @@ use log::{debug, info}; use crate::types::block::Block; use crate::network::server::Handle as ServerHandle; use std::thread; +use std::sync::{Arc, Mutex}; +use crate::Blockchain; #[derive(Clone)] pub struct Worker { server: ServerHandle, finished_block_chan: Receiver<Block>, + blockchain:Arc<Mutex<Blockchain>> } impl Worker { pub fn new( server: &ServerHandle, finished_block_chan: Receiver<Block>, + blockchain: &Arc<Mutex<Blockchain>> ) -> Self { Self { server: server.clone(), finished_block_chan, + blockchain: Arc::clone(blockchain) } } @@ -35,6 +40,8 @@ impl Worker { loop { let _block = self.finished_block_chan.recv().expect("Receive finished block error"); // TODO for student: insert this finished block to blockchain, and broadcast this block hash + let mut new_blockchain = self.blockchain.lock().unwrap(); + new_blockchain.insert(&_block); } } }