.map(|txin| { self.transactions[&txin.previous_output.txid].output [txin.previous_output.vout as usize] .value }) .sum::() - tx.output.iter().map(|txout| txout.value).sum::(); self.transactions.insert(tx.txid(), tx.clone()); fee }) .sum::(), script_pubkey: ScriptBuf::new(), }], }; self.transactions.insert(coinbase.txid(), coinbase.clone()); let block = Block { header: Header { version: Version::ONE, prev_blockhash: *self.hashes.last().unwrap(), merkle_root: TxMerkleNode::all_zeros(), time: self.blocks.len().try_into().unwrap(), bits: CompactTarget::from_consensus(0), nonce: self.nonce, }, txdata: std::iter::once(coinbase) .chain(self.mempool.drain(0..)) .collect(), }; for tx in block.txdata.iter() { for input in tx.input.iter() {