Пример #1
0
def test_get_nonce(vm):
    computation, _ = vm.apply_transaction(ShardingTransaction(**merge(DEFAULT_BASE_TX_PARAMS, {
        "data": int_to_big_endian(NONCE_GETTER_ID),
    })))
    assert computation.output == pad32(b"\x00")

    computation, _ = vm.apply_transaction(SIGNED_DEFAULT_TRANSACTION)

    computation, _ = vm.apply_transaction(ShardingTransaction(**merge(DEFAULT_BASE_TX_PARAMS, {
        "data": int_to_big_endian(NONCE_GETTER_ID),
    })))
    assert computation.output == pad32(b"\x01")
Пример #2
0
def new_sharding_transaction(tx_initiator,
                             data_destination,
                             data_value,
                             data_msgdata,
                             data_vrs,
                             code='',
                             salt=b'\x00' * 32,
                             gas=1000000,
                             access_list=None):
    """
    Create and return a sharding transaction. Data will be encoded in the following order

    [destination, value, msg_data, vrs].
    """
    assert len(data_vrs) in (0, 65)
    tx_data = (pad32(data_destination) + pad32(bytes([data_value])) +
               pad32(data_msgdata) + pad32(data_vrs[:32]) +
               pad32(data_vrs[32:64]) + bytes(data_vrs[64:]))
    if access_list is None:
        access_list = [[tx_initiator]]
        if data_destination:
            access_list.append([data_destination])
    return ShardingTransaction(
        chain_id=1,
        shard_id=1,
        to=tx_initiator,
        data=tx_data,
        gas=gas,
        access_list=access_list,
        code=decode_hex(code),
        salt=salt,
    )
Пример #3
0
def test_sharding_transaction_intrinsic_gas(sharding_txn_fixture):
    txn = ShardingTransaction(
        chain_id=sharding_txn_fixture["chain_id"],
        shard_id=sharding_txn_fixture["shard_id"],
        to=to_canonical_address(sharding_txn_fixture["to"]),
        data=decode_hex(sharding_txn_fixture["data"]),
        gas=sharding_txn_fixture["gas"],
        access_list=sharding_txn_fixture["access_list"],
        code=decode_hex(sharding_txn_fixture["code"]),
        salt=sharding_txn_fixture["salt"],
    )

    assert txn.intrinsic_gas == sharding_txn_fixture["intrinsic_gas"]
Пример #4
0
def get_nonce(vm):
    computation, _ = vm.apply_transaction(
        ShardingTransaction(**merge(DEFAULT_BASE_TX_PARAMS, {
            "data": int_to_big_endian(NONCE_GETTER_ID),
        })))
    return big_endian_to_int(computation.output)