def load(obj): if type(obj) == str: obj = json.loads(obj) return Block( obj["prev_block"], [Transaction.load(txn_dict) for txn_dict in obj["transactions"]], obj["block_idx"], obj["magic_num"])
def recv_broad_transaction(): """接收交易、广播交易的进程""" while self.server_flag: # 阻塞在取trans的地方 node, msg = M_mailbox.get() if msg.type == "PUT": if msg.command == "TRANS": trans = Transaction.load(msg.data) if trans != self.trans_later and self.add_trans(trans): self.trans_later = trans NetworkRouting.get_instance().broad_a_msg( msg) # 广播交易 elif msg.command == "BLOCK": # 其它进程先挖到,暂停挖矿 block = Block.load(msg.data) if self.block_later != block and Verify.verify_new_block( block) and FullBlockChain.get_instance( ).get_top_hash() == block.get_hash(): self.accept_block(block)