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