Пример #1
0
 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"])
Пример #2
0
 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)