In rust-libp2p (specifically libp2p-swarm 0.43.3), there are two swarm events, FromSwarm::NewExternalAddrCandidate and FromSwarm::ExternalAddrConfirmed, and the documentation describes them as such:
NewExternalAddrCandidate(NewExternalAddrCandidate<'a>)Informs the behaviour that we have discovered a new candidate for an external address for us.
ExternalAddrConfirmed(ExternalAddrConfirmed<'a>)Informs the behaviour that an external address of the local node was confirmed.
What's the meaningful difference between discovery of an external address and confirmation of one?