The first fix independently extends the address expiration time and the address
TTL:
By example:
* We have an address with a TTL of 4s that will expire in 1s.
* We update it with a TTL of 3s.
Before this change:
* We end up with an address with a TTL of 3s that will expire in 3s.
After this change:
* We end up with an address with a TTL of 4s that will expire in 3s.
---
The second fix prevents the in-memory addressbook from announcing existing
addresses every time their TTLs get updated.
---
The third fix correctly updates TTLs for existing addresses in the on-disk
addressbook.
This fixes https://github.com/libp2p/go-libp2p-identify/issues/2
We switched to a slice to reduce the amount of memory the peerstore ended up
taking up unfortunately, this really killed us in allocations. Looking at
go-ipfs profiles, I'm worried that memory fragmentation is killing us so I'd
like to revert to the old behavior.
Note: The real solution here is dealing with "address abusers".