client.rs 34.1 KiB
Newer Older

	fn import_sealed_block(&self, block: SealedBlock) -> ImportResult {
		let _import_lock = self.import_lock.lock();
		let _timer = PerfTimer::new("import_sealed_block");
		let start = precise_time_ns();

		let original_best = self.chain_info().best_block_hash;

		let h = block.header().hash();
		let number = block.header().number();

		let block_data = block.rlp_bytes();
		let route = self.commit_block(block, &h, &block_data);
		trace!(target: "client", "Imported sealed block #{} ({})", number, h);

		{
			let (enacted, retracted) = self.calculate_enacted_retracted(&[route]);
			self.miner.chain_new_blocks(self, &[h.clone()], &[], &enacted, &retracted);

			self.notify(|notify| {
				notify.new_blocks(
					vec![h.clone()],
					vec![],
					enacted.clone(),
					retracted.clone(),
					precise_time_ns() - start,
		}

		if self.chain_info().best_block_hash != original_best {
			self.miner.update_sealing(self);
		}

		Ok(h)
	}
Tomusdrw's avatar
Tomusdrw committed
impl MayPanic for Client {
	fn on_panic<F>(&self, closure: F) where F: OnPanicListener {