This topic piques my interest.
go-ipfs doesn’t use dht.PutValue(key, value) to store content. Content is held locally, advertised via provider records (à la Coral), and exchanged via Bitswap, not via the DHT protocol. It is a pull model.
Since the availability of this data is not managed by the DHT, it cannot autonomously decide to reprovide.
OTOH, Kademlia’s STORE (= dht.PutValue(key, value)) is pertinent to a push model.
Usages I know of:
- libp2p itself uses it to store public keys for peers.
- IPNS uses it to publish name records.
go-libp2p deviates from Kademlia insofar we don’t expire content received via this pathway: it’s permanent. So republishing every hour is unnecessary.
This seems like a weakness worth addressing.