def init(): # 删除旧文件 if os.path.isfile(STORE_BLC_FILE_PATH): os.remove(STORE_BLC_FILE_PATH) if os.path.isfile(STORE_KEYS_FILE_PATH): os.remove(STORE_KEYS_FILE_PATH) # 打开N服务和B服务 NetworkRouting.get_instance().start_server() FullBlockChain.get_instance().start_server() # 添加创世区块 keys = [UserKey() for i in range(10)] for key in keys: Wallet.get_instance().add_key(key) Miner.get_instance().set_wallet_address(keys[0].get_address()) t = Transaction() for key in keys: t.add_output(TransOutput(Btc("1000"), key.get_address())) block = Block(1) block.add_transaction(t) head_trans = Transaction() head_trans.add_output(TransOutput(Btc(MINING_BTCS), keys[0].get_address())) block.set_head_transaction(head_trans) block.find_randnum() FullBlockChain.get_instance().add_first_block(block) Wallet.get_instance().write_keys_to_file()
key1 = UserKey() key2 = UserKey() # 初始区块的创币交易(只有输出,没有输入) t1 = Transaction() t1.add_output(TransOutput(Btc("5000"), key1.get_address())) t1.add_output(TransOutput(Btc("5000"), key2.get_address())) # 创世区块 b1 = Block() b1.add_transaction(t1) # 添加矿工奖励交易 mt1 = Transaction() mt1.add_output(TransOutput(Btc(MINING_BTCS), key1.get_address())) b1.set_head_transaction(mt1) b1.set_index(1) # 挖矿 b1.find_randnum() # 添加区块 bc.add_block(b1) # key1向key2转账 t2 = Transaction() t2.add_input(TransInput(1, 1, 1)) t2.add_output(TransOutput(Btc("23.567"), key2.get_address())) t2.sign_transaction(key1) if not Verify.verify_transaction(t2): print("交易有问题") b2 = Block(pre_hash=b1.get_hash()) b2.add_transaction(t2) mt2 = Transaction() mt2.add_output(TransOutput(Btc(MINING_BTCS), key2.get_address())) # 计算交易费 fee = bc.compute_block_fee(b2)