Пример #1
0
def test_rlp_encoding(access_list, expected):
    validate_transaction_access_list(access_list)
    encoded = rlp.encode(access_list, access_list_sedes)
    print(encoded)
    print(expected)
    assert encoded == expected

    decoded = rlp.decode(encoded, access_list_sedes)
    assert decoded == access_list
Пример #2
0
    def validate(self):
        validate_uint256(self.chain_id, title="Transaction.chain_id")
        validate_uint256(self.shard_id, title="Transaction.shard_id")

        validate_canonical_address(self.to, title="Transaction.to")
        validate_is_bytes(self.data, title="Transaction.data")

        validate_uint256(self.gas, title="Transaction.gas")
        validate_uint256(self.gas_price, title="Transaction.gas_price")

        validate_transaction_access_list(self.access_list, title="Transaction.access_list")

        validate_is_bytes(self.code, title="Transaction.code")

        super(ShardingTransaction, self).validate()
Пример #3
0
def validate_sharding_transaction(vm_state, transaction):
    gas_cost = transaction.gas * transaction.gas_price
    with vm_state.state_db(read_only=True) as state_db:
        txn_initiator_balance = state_db.get_balance(transaction.to)

    if txn_initiator_balance < gas_cost:
        raise ValidationError(
            "Transaction initiator account balance cannot afford txn gas: `{0}`"
            .format(transaction.to)  # noqa: E501
        )

    if vm_state.gas_used + transaction.gas > vm_state.gas_limit:
        raise ValidationError("Transaction exceeds gas limit")

    validate_transaction_access_list(transaction.access_list)
Пример #4
0
def validate_sharding_transaction(vm_state, transaction):
    if vm_state.gas_used + transaction.gas > vm_state.gas_limit:
        raise ValidationError("Transaction exceeds gas limit")

    validate_transaction_access_list(transaction.access_list)
Пример #5
0
def test_validate_transaction_access_list(value, is_valid):
    if is_valid:
        validate_transaction_access_list(value)
    else:
        with pytest.raises(ValidationError):
            validate_transaction_access_list(value)