def run_test(puzzle_hash, solution, payments): run = asyncio.get_event_loop().run_until_complete remote = make_client_server() coin = farm_spendable_coin(remote, puzzle_hash) spend_bundle = build_spend_bundle(coin, solution) # push it r = run(remote.push_tx(tx=spend_bundle)) assert r["response"].startswith("accepted") print(r) # confirm it farm_spendable_coin(remote) # get unspents r = run(remote.all_unspents()) print("unspents = %s" % r.get("unspents")) unspents = r["unspents"] # ensure all outputs are there for puzzle_hash, amount in payments: expected_coin = Coin(coin.name(), puzzle_hash, amount) name = expected_coin.name() assert name in unspents unspent = run(remote.unspent_for_coin_name(coin_name=name)) assert unspent.confirmed_block_index == 2 assert unspent.spent_block_index == 0
def signature_for_coinbase(coin: Coin, pool_private_key: blspy.PrivateKey): message_hash = coin.name() return BLSSignature( pool_private_key.sign_prepend_prehashed(message_hash).serialize())