IPNS records as IPLD objects → in CAR archives?

It looks as though the CAR spec allows CAR archives to hold any (supported) IPLD objects. I would find it very helpful if IPNS records could be recorded as IPLD objects, so they could be stored in CAR files as a transport mechanism too.

This would be helpful for me so that I could create a CAR file containing an updated website (IPFS records), and proof that it’s the ‘same site’ (the IPNS record), then deliver it via SD card/sneakernet. The receiving (and, let’s say, airgapped) Kubo instance would be able to update their latest known version of the website, trusting the signature of the IPNS record.

I can’t see any other easy way to operate a non-internet connected Kubo instance with trusted dynamic websites today; am I missing something?

1 Like

Agree, this would be useful for various use cases, offline/sneakernet, but also reducing round-trips in verifiable HTTP contexts.

Implementation of IPIP-351: IPNS Signed Records Response Format on HTTP Gateways is planned to ship with Kubo 0.19. It will get you half-way there: will return raw IPNS record, allowing a custom light client to verify IPNS read via sneakernet, without having to run DHT client.

Since ipns-record protobuf record is just a binary blob, it could be placed in a CAR as an additional raw block, but we would need a custom codec to indicate it has a special meaning to allow clients to act on it in a standardized way.

If you want to follow this or help with design, remaining work is tracked in (wrote more there):


Code for ipns-record (0x0300) serialization format registered:


Thank you, this looks superb! I’m currently travelling/away from laptops until May, but I’d love to get involved — I’ll see what I can offer from a phone/iPad until then!