Put x=0, we get 2f(0)f(y)−f(0)=0, if f(0)=0 then f(y)=1/2 for all y, which does not satisfy. Thus f(0)=0.
Put y=0, we get 2f(x)2−f(x2)=x/2⋅f(2x) then plugging back 2f(x)⋅f(x+y)=2f(x)2+2x⋅f(f(y)) so
f(x)⋅f(x+y)=f(x)2+x⋅f(f(y)).(⋄)
Note that f(−x)2=x⋅f(f(x)). In (⋄), take y=−2x then
f(x)⋅f(−x)=f(x)2+x⋅f(f(−2x)).
Note that −2x⋅f(f(−2x))=f(2x)2, so x⋅f(f(−2x))=−f(2x)2/2. Thus
f(x)⋅f(−x)=f(x)2−f(2x)2/2
or
−2f(x)f(−x)+2f(x)2=f(2x)2.
In (⋄), take x=y=0 then
f(x)⋅f(2x)=f(x)2+x⋅f(f(x))
or
f(2x)=f(x)+x⋅f(f(x))/f(x)=f(x)+f(−x)2/f(x).
So (f(x)+f(−x)2/f(x))2=2f(x)2−2f(x)⋅f(−x). Dividing both sides by f(−x)2 and put k=f(x)/f(−x) then
(k+1/k)2=2k2−2k⟷k2−2k=2+1/k2.
Changing the sign x→−x then we get (k+1/k)2=2/k2−2/k combining with above, we get k=−1. Then f(x) is odd. Now we get f(x)2=x⋅f(f(x)). Put y→−y, we get
f(x)⋅f(x−y)=f(x)2+x⋅f(f(−y)),
f(x)[f(x+y)+f(x−y)]=2f(x)2.
Consider x=0 then f(x+y)+f(x−y)=2f(x) using f(0)=0, this implies that f(x) is additive. Note that
2f(x)2−f(x2)=x/2⋅f(2x)=x⋅f(x)⟺2f(x)2=f(x2)+xf(x).
Plugging x→x+1, it is easily to get f(x)=ax and putting back to the original, a=1. There are two solutions: f(x)=0,f(x)=x. □