When my code creates or modifies a contract there is a gas cost. But when my code makes a call that does not modify a contract (e.g. reads existing data) it doesn't appear that I'm required to pay gas.
If the above is correct, what happens if a pure or constant function requires a large number of CPU cycles? For example, instead of just returning existing data a function calculates a large number of hash operations. If I can make this call without providing gas, who "pays" for those calculations?