Ethereum provides a wide range of opcodes to work with, and arbitrary functionality can be implemented. Ethereum charges "gas" for each computation performed on chain. For common operations like hashing, adding, multiplying and state updates, Ethereum fixes the amount of gas that is charged. For other operations, a variable amount of gas is charged. Transaction fee is denominated in ETH. Gas and ETH are subject to their own fee markets.