Functional equation: $f(x^2+f(y))=y+f^2(x)$. 

Functional Equation:

Solve for a given function $f:R\rightarrow R$, $$f(x^2+f(y))=y+f^2(x)\tag{$\ast$}$$
Note: $f^2(x)=f(x)\cdot f(x)$.

Not sure if the proof is correct (I have made quite a few fake proofs):

My Attempt:
Fix $x$ to show $f$ is surjective, and assume $f(y_1)=f(y_2)$. Then, sub $y=y_1$ and $y=y_2$ to show $f$ is injective. Therefore, $f$ is bijective.
One may find a $k$ such that $f(k)=0$. Sub into $(*)$, giving $$f(k^2+f(y))=y.$$ Now, one may find $m$ such that $f(m)=-k^2$. Sub it in to obtain $f(0)=m$. Therefore, we have the following simultaneous equation: $$\begin{align}f(f(0))&=-k^2 \\ \text{and }\qquad f(k)&=0.\end{align}$$ Set $x=y=0$, giving $f(f(0))=f^2(0)$. So we have $f^2(0)=-k^2$. Since the LHS$\,\ge0$ and RHS$\,\le0$, then $f^2(0)=-k^2=0$ and thus, $f(0)=0$.
Now set $x=0$ to obtain that $f(f(y))=y$. In other words, $f$ is an involution.
Now set $y=0$ to obtain $f(x^2)=f^2(x)$. Thus, $f^2(-x)=f(x^2)=f^2(x)$. Since $f$ is injective, then $f(x)\neq f(-x)$. Therefore, $f(x)=-f(-x)$. In other words, $f$ is odd.
Set $y=f(x^2)$ in $(*)$ to obtain that $f(2x^2)=2f(x^2)$. Set $x=1$ and $y=0$ in $(*)$ to obtain $f(1)=1$. Set $c=x^2$ to obtain $f(2c)=2f(c)$. Therefore, $$\forall x>0, \ f(x)=x\text{ is the only solution.}$$ Since $f$ is an odd function, I claim that $f(x)=x$ is certainly the only solution.
Edit: new last step
Sub $x=f(z)$ and $y=0$ in $(*)$ gives $$f(z^2)=z^2$$ Since $f$ is an odd function, $f(x)=x$ is the only solution.
 A: You correctly derived that $f$ is odd, that $f^2(x)=f(x^2)$, and that $f$ is an involution.
From the latter, you have
$$f(x^2+y)=f(y)+f^2(x) $$
and therefore
$$\tag1z\ge y\implies f(z)\ge f(y).$$
By induction (mimicking part of the work for Cauchy's equation), $$\tag2 f(nz)=nf(z)$$
for $n\in\Bbb N$ and $z\ge0$.
Indeed, this is clear for $n=1$, and with $x=\sqrt{z}$ and $y=nz$, we get the induction step: $f(z+nz)=f(nz)+f^2(\sqrt{z})=nf(z)+f(\sqrt z^2)=(n+1)f(z)$.
Using that $f$ is odd, $(2)$ also holds for $z<0$, as well as for all $n\in\Bbb Z$. From $0\ne f(1)=f(1^2)=f(1)^2$, we get $f(1)=1$, hence $f(n)=n$ for all $n\in \Bbb Z$.
Now let $x$ be any real with $\frac mn\le x\le\frac{m+1}n$ with $m\in\Bbb Z$, $n\in\Bbb N$. $m\le nx<m+1$ and by $(1)$
$$ m=f(m)\le f(nx)=nf(x)\le f(m+1)=m+1$$
i.e.
$$ \frac mn\le f(x)\le \frac{m+1}n.$$
As we can make the rational approximations arbitrarily good, we conclude that $$f(x)=x$$ for all $x$.
A: Most of your proof are correct. However, your last claim is not justified. 
The following is a simpler proof. Once you have proven that $f^2(x)=f(x^2)$ and $f(f(y))=y$, you have 
$$f(x^2 +f(f(y)))= f(x^2 +y ) = f(y) + f(x^2) $$
Then by replacing $x^2 \to x$ (but keeping that $x>0$ in mind) you have 
 $f(x +y ) = f(x)+ f(y)$
with $x>0$. Everything now is similar to Cauchy's functional equation. 
Also with $f(1)=1$ and $f(-x) = -f(x)$, you can be able to fix the freedom in Cauchy's solution and prove that $f(x) =x$ for all rational $x$.
