Late transaction value debiting - implementing Ethereum flash minting without adding new opcodes or precompiles

Currently, Ethereum does transaction values like this:

  1. debit value and fee from sending account
  2. credit value to receiving account
  3. call receiving account

Under late transaction value debiting, it will happen like this:

  1. debit fee from sending account
  2. credit value to receiving account
  3. call receiving account
  4. debit value from sending account, if insufficient balance, revert the transaction

Late transaction value debiting allows the implementation of Ethereum flash minting without adding new opcodes or precompiles. The ability to flash mint Ethereum will be critical to Defi’s market efficiency. It allows the arbitrage of much smaller price discrepancies since users no longer need to pay flash loan fees. Late transaction value debiting can be implemented in clients with extremely small changes, compared to dedicated flash mint opcodes and precompiles.