# How is a sponge construction better than cycling the output of a hash back to the input?

Wikipedia has this diagram of a sponge construction.

Why is this better than just cycling the output to the input? Like this, assuming $p$ is a list of blocks that are equal to the size of $f()$, and $z$ is the corresponding output.

$$c_{-1} = 0\\ c_{n} = f(c_{n-1} \oplus p_{n})\\ z_{n} = f(z_{n-1})$$

Or in other words, why not have $r$ be the whole block?

why not have $r$ be the whole block?
• In the absorbing phase, the attacker could set the intermediate state to whatever he wants. For example, if the current state is $c_{n-1}$ and the attacker wants the next state to be $t$, he computes $p_n = c_{n-1} \oplus f^{-1}(t)$; this allows a trivial preimage attack. And, even if $f$ wasn't invertible, this would still allow a trivial second preimage attack.
• In the squeezing phase, if the attacker knows the value $z_0$, he could trivially compute the rest of the hash $z_1, z_2, ...$