Context hash should commit to the state *before* the state is applied, not *after*.
Transactions are currently executed three times:
- when they reach the mempool
- when the baker includes them in a block
- when the node sees the block
As discussed in #348 small changes to the mempool and the way fees are paid would allow transactions to only be executed once, when the node sees a block. The mempool would only check that the fees can be paid, the baker would care about maximizing its fees. The full effect of the transaction would only be computed once the node receives it within a block.
For this to happen, it's also necessary that the context hash be computed as off the beginning of the block. Otherwise the baker would have to compute the effect of the block before publishing it.