EIP-4803: Limit transaction gas to a maximum of 2^63-1

@matt regarding your question on ACD, from the rationale:

2^63-1 vs 2^64-1

2^63-1 is chosen because it allows representing the gas value as a signed integer, and so the out of gas check can be done as a simple “less than zero” check after subtraction.

The check can be as simple as with signed numbers:

gasAvailable -= cost
if gasAvailable < 0:
  raise OOG

(In theory this also allows processing multiple instructions and checking OOG once – this is not realistic given we need to stop at the exact OOG spot)

When working with unsigned numbers:

if gasAvailable < cost:
  raise OOG
gasAvailable -= cost

geth currently uses uint64, and with the EIP they do not need to change that, however they can, and use a check like above, which could be cheaper on most CPUs.

@chfast since you had a strong preference for the signed version, let me know if you have anything to add.