If we take the block validation algorithm described in the white paper (Section Blockchain and Mining), it states at point 6:
Let
TX
be the block's transaction list, withn
transactions. For alli
in0...n-1
, setS[i+1] = APPLY(S[i],TX[i])
. If any applications returns an error, or if the total gas consumed in the block up until this point exceeds the GASLIMIT, return an error.
Is the bold claim true? I mean if the bold part would be true, would it imply that valid blocks cannot contain transactions with errors? Or is it simply a generic validation algorithm that does not correspond to the real one?
(I know for sure that there are valid blocks with failed transactions, e.g. out of gas exception, callstack overflow, etc., e.g. https://etherscan.io/tx/0x3967f859c56c61f3365f6873ea001985e4e694952a9c22b68be731132c8e3e77)