Open
Description
This is a discussion we had with @wanderer at Devcon3. This is an attempt to determine upper bounds in metering.
In short the proposal is that functions can be annotated (probably through a custom section) marking them atomic. In this case, they only have a single useGas
statement at the beginning of the body which will deduct the entire gas cost. (Likely this custom section would also contain this value.) As a result these functions cannot fail executing once started.
Now if the given function contains unbounded loops then they cannot be marked atomic and the metering contract would reject them.