IPIP-0379: Delegated IPNS HTTP API

Related Issues
ipfs/specs/issues/343
ipfs/specs/pull/337
ipfs/specs/pull/377
History
Commit History
Feedback
GitHub ipfs/specs (inspect source, open issue)

1. Summary

This IPIP specifies /routing/v1/ipns HTTP API to offload naming system onto another process or server.

2. Motivation

One of the motivations of this document is to introduce simple to use HTTP APIs and ultimately reduce barrier for interaction across alternative systems.

Expanding on the motivations of [ipip-0337], the work here concentrates on delegation of IPNS over HTTP API. Naming is part of the core IPFS DHT functionality. The performance of naming system over the IPFS DHT can suffer from long delays due to churn of records and quorum requirements.

3. Detailed design

Add /routing/v1/ipns to the existing [http-routing-v1] specification.

4. Design rationale

The rationale for delegated IPNS over HTTP APIs closely follows the reasoning listed in [ipip-0337].

The document proposes the following:

4.1 User benefit

The ability to offload naming to another process or server using a simple HTTP API brings several benefits:

4.2 Compatibility

See the "Compatibility" section of [ipip-0337].

4.2.1 Serialization Format

Standard IPNS record serialization format is used, making it fully compatible with the existing IPNS ecosystem.

[ipns-record] uses application/vnd.ipfs.ipns-record protobuf serialization format. This format is widely in use in IPNS over PubSub and DHT routing systems. Further, interoperability across the existing and HTTP APIs is also desirable in order to reduce the barrier for adoption of the delegated HTTP APIs.

To maximize interoperability with existing ecosystem, the canonical IPNS record serialization format [ipns-record] (0x0300) can be requested with content type application/vnd.ipfs.ipns-record.

4.3 Security

All interaction over the APIs should use TLS to protect against third-party observation and tampering. Additionally, the IPNS records must be validated according to the rules stated in [ipns-record] before further processing.

To avoid Denial of Service attack, maximum IPNS record size defined in [ipns-record] applies.

Privacy in delegated IPNS is out of scope for this IPIP.

4.4 Alternatives

See:

A. References

[http-routing-v1]
Delegated Routing V1 HTTP API. Gus Eggert; Masih H. Derkani; Henrique Dias; Marcin Rataj. 2024-03-22. URL: https://specs.ipfs.tech/routing/http-routing-v1/
[ipip-0337]
IPIP-0337: Delegated Content Routing HTTP API. Gus Eggert; Marcin Rataj. 2022-10-18. URL: https://specs.ipfs.tech/ipips/ipip-0337/
[ipns-record]
IPNS Record and Protocol. Vasco Santos; Steve Allen; Marcin Rataj; Henrique Dias; Gus Eggert. 2023-10-03. URL: https://specs.ipfs.tech/ipns/ipns-record/

B. Acknowledgments

We gratefully acknowledge the following individuals for their valuable contributions, ranging from minor suggestions to major insights, which have shaped and improved this specification.

Editors
Masih H. Derkani GitHub
Marcin Rataj GitHub