DHT hourly key/value republish

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.