コード例 #1
0
def userB_starts_to_exit_some_eth_from_plasma_cash(context, amount):
    client = container.get_client()
    client.start_exit(userB,
                      uid,
                      prev_tx_blk_num=DEPOSIT_TX_BLOCK,
                      tx_blk_num=TRANSFER_TX_1_BLOCK)
    time.sleep(5)
    client.submit_block(operator_key)
コード例 #2
0
def userB_has_some_amount_of_eth_in_plasma_cash(context, amount):
    client = container.get_client()
    block = client.get_block(TRANSFER_TX_BLOCK)
    tx = block.get_tx_by_uid(uid)
    assert tx.amount == amount, 'tx.amount {} != amount: {}'.format(
        tx.amount, amount)

    assert_msg = 'tx.new_owner {} not same address as userB: {}'.format(
        tx.new_owner.hex(), userB)
    assert address_equals(tx.new_owner.hex(), userB), assert_msg
コード例 #3
0
def userC_starts_to_exit_some_eth_from_plasma_cash(context, amount):
    client = container.get_client()

    deposit_block = client.get_block(DEPOSIT_TX_BLOCK)
    deposit_tx = deposit_block.get_tx_by_uid(uid)
    deposit_block.merklize_transaction_set()
    deposit_tx_proof = deposit_block.merkle.create_merkle_proof(uid)

    # invalid tx doesn't exist in child chain
    invalid_tx = Transaction(DEPOSIT_TX_BLOCK, uid, 1,
                             utils.normalize_address(userC))
    invalid_tx.sign(utils.normalize_key(userA_key))
    invalid_tx_merkle = SparseMerkleTree(257, {uid: invalid_tx.merkle_hash})
    invalid_tx_proof = invalid_tx_merkle.create_merkle_proof(uid)

    root_chain = container.get_root_chain()
    root_chain.functions.startExit(
        rlp.encode(deposit_tx), deposit_tx_proof, DEPOSIT_TX_BLOCK,
        rlp.encode(invalid_tx), invalid_tx_proof,
        TRANSFER_TX_2_BLOCK).transact({'from': userC})
    time.sleep(5)
コード例 #4
0
def userB_start_exit_some_eth_from_plasma_cash(context, amount):
    client = container.get_client()
    client.start_exit(userB, uid, prev_tx_blk_num=1, tx_blk_num=2)
    time.sleep(5)
    client.submit_block(submit_block_sig)
コード例 #5
0
def userA_transfer_some_eth_to_userB_in_child_chain(context, amount):
    prev_block = DEPOSIT_TX_BLOCK
    client = container.get_client()
    client.send_transaction(prev_block, uid, amount, userB, userA_key)
    client.submit_block(submit_block_sig)
コード例 #6
0
def userA_deposit_some_eth_to_plasma(context, amount):
    client = container.get_client()
    client.deposit(amount=amount, depositor=userA, currency=eth_currency)
    time.sleep(5)
    client.submit_block(submit_block_sig)
コード例 #7
0
def userB_finalize_exit(context):
    client = container.get_client()
    client.finalize_exit(uid, userB)
    time.sleep(5)
コード例 #8
0
def userC_challenges_the_exit(context):
    client = container.get_client()
    client.challenge_exit(userC, uid, tx_blk_num=TRANSFER_TX_1_BLOCK)
    time.sleep(5)
コード例 #9
0
def userA_transfers_some_eth_to_userB(context, amount):
    prev_block = DEPOSIT_TX_BLOCK
    client = container.get_client()
    client.send_transaction(prev_block, uid, amount, userB, userA_key)
    client.submit_block(operator_key)
コード例 #10
0
def userA_deposits_some_amount_of_eth_in_plasma_cash(context, amount):
    client = container.get_client()
    client.deposit(amount=amount, depositor=userA, currency=eth_currency)
    time.sleep(5)
    client.submit_block(operator_key)
コード例 #11
0
def userC_challenges_the_coin_spent_exit(context):
    client = container.get_client()
    client.challenge_exit(userC, uid, tx_blk_num=TRANSFER_TX_2_BLOCK)
    time.sleep(5)
    client.submit_block(operator_key)
コード例 #12
0
def userB_transfers_some_eth_to_userC(context, amount):
    prev_block = TRANSFER_TX_1_BLOCK
    client = container.get_client()
    client.send_transaction(prev_block, uid, amount, userC, userB_key)
    client.submit_block(operator_key)