Multiplayer Shooter: Bullet Actors or Line Trace with replicated Hit?

Hi there,
as i´m working on a multiplayer shooter i came up with the question wether it´d be better to:
-spawn a bullet actor on the server and replicate it with it´s movement to all clients (and a listen server)
-spawn a bullet actor on the server but don´t replicate it to the clients, only the impact it has when it hits something (damage, spawning particle effect etc.)
-perform a linetrace on the client and replicate it´s impact to all clients (and listen server) (the linetrace is performed by the gun/player, there is no bullet actor)

Of course the first option is the best, but i´m not sure about bandwith. Let´s say that the average of bullets is 10bullets/second with a minimum of 0 bullets /second and an expected maximum of 40bullets/second. What impact would each have on network-performance, could it cause some kind of lag (for example being hit by bullets altough you are already in cover)?

I use 3rd variant.

It has own drawbacks of course (like it is required to have some anticheat system).

Also, I do not multicast impacts to clients - only damages. So, each client simulates own bullets (and multicasts damage on player hit) and all other`s bullets (but only for graphical purposes on impacts).

Also, it is bad idea to replicate each bullet for automatic fire (because huge bandwith).
So, I replicate:

  1. trigger down event + first bullet vector
  2. now client fires bullets from other’s gun locally each 0.1 sec (this bullets just to render impacts). Also, in such case it is required to player other`s player animations while they are shooting even they are not rendered (there are such property in skeletal mesh).
  3. trigger release