Fix client side optimistic balance updating and move it to user model