Skip to content

Commit 8ff9b91

Browse files
committed
docs: merge delegated naming with Routing V1 Spec
- suggestions from code review - removes application/json from ipip-379 - removes custom headers from ipip-379 - cleans duplicated errors - punctuation and others
1 parent c04b1f6 commit 8ff9b91

File tree

4 files changed

+88
-240
lines changed

4 files changed

+88
-240
lines changed

src/ipips/ipip-0337.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ To understand the design rationale, it is important to consider the concrete Ref
7070
So this API proposal makes the following changes:
7171

7272
- The Delegated Content Routing API is defined using HTTP semantics, and can be implemented without introducing Reframe concepts nor IPLD
73-
- There is a clear distinction between the RPC protocol (HTTP) and the API (Delegated Content Routing)
73+
- There is a clear distinction between the [Kubo RPC](https://docs.ipfs.tech/reference/kubo/rpc/) and the vendor-agnostic Routing V1 HTTP API (introduced in :cite[ipip-0377]).
7474
- "Method names" and cache-relevant parameters are pushed into the URL path
7575
- Streaming support is removed, and default response size limits are added.
7676
- We will add streaming support in a subsequent IPIP, but we are trying to minimize the scope of this IPIP to what is immediately useful

src/ipips/ipip-0379.md

Lines changed: 12 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,12 @@ relatedIssues:
1212
- https://github.com/ipfs/specs/issues/343
1313
- https://github.com/ipfs/specs/pull/337
1414
- https://github.com/ipfs/specs/pull/377
15+
xref:
16+
- ipns-record
1517
order: 379
1618
tags: ['ipips']
1719
---
1820

19-
- Start Date: 2023-02-13
20-
- Related Issues:
21-
2221
## Summary
2322

2423
This IPIP specifies a set of HTTP APIs to offload naming system onto another process or server.
@@ -28,21 +27,17 @@ This IPIP specifies a set of HTTP APIs to offload naming system onto another pro
2827
Expanding on the motivations of :cite[ipip-0337], the work here concentrates on delegation of _naming system_ over HTTP APIs. Naming is part of the core IPFS DHT functionality.
2928
The performance of naming system over the IPFS DHT can suffer from long delays due to churn of records and quorum requirements.
3029

31-
## HTTP API Specification
30+
## Detailed design
3231

33-
See :cite[http-ipns-routing] specification.
32+
See :cite[http-routing-v1] specification.
3433

3534
## Design rationale
3635

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

3938
The document proposes the following:
4039
- Use of HTTP semantics for publication and resolution of naming records.
41-
- Preference for human-readable request and response encoding, such as JSON format
42-
- Optional backward compatibility support for the existing ProtocolBuffer format using `Content-Type: application/vnd.ipfs.ipns-record`
43-
- Use of extra headers in `OPTIONS` response to communicate the supported capabilities and limitations, namely:
44-
- `X-Ipns-Allow-Max-Size` -- to signal maximum supported IPNS record size
45-
- `X-Ipns-Allow-Protobuf` -- to signal whether the server supports ProtocolBuffer formatted records.
40+
- Use of existing :ref[IPNS Record] serialization format through `Content-Type: application/vnd.ipfs.ipns-record`.
4641
- Streaming interaction is not supported.
4742

4843
### User benefit
@@ -51,44 +46,32 @@ The ability of offload naming onto another process or server via an idiomatic an
5146

5247
### Compatibility
5348

54-
#### Backwards Compatibility
49+
See "Compatibility" section of :cite[ipip-0337].
5550

56-
##### Serialization Format
51+
#### Serialization Format
5752

58-
:cite[ipns-record] use ProtocolBuffer serialisation format.
53+
:cite[ipns-record] uses `application/vnd.ipfs.ipns-record` protobuf serialization format.
5954
This format is widely in use in IPNS over PubSub and DHT routing systems.
6055
One of the motivations of this document is to introduce simple to use HTTP APIs and ultimately reduce barrier for interaction across alternative systems.
6156
Further, interoperability across the existing and HTTP APIs is also desirable in order to reduce the barrier for adoption of the delegated HTTP APIs.
6257

63-
The specification here maintains backwards compatibility in terms of record serialisation, with preference for human-readable formats such as JSON.
6458
To maximize interoperability with existing ecosystem, the canonical IPNS record serialization format :cite[ipns-record] (`0x0300`) can be requested with content type `application/vnd.ipfs.ipns-record`.
6559

66-
##### Reframe
67-
68-
See "Backwards Compatibility" section of :cite[ipip-0337].
69-
70-
#### Forwards Compatibility
71-
72-
See "Forwards Compatibility" section of :cite[ipip-0337].
73-
7460
### Security
7561

7662
All interaction over the APIs should use TLS to protect against third-party observation and tampering.
77-
Additionally, the IPNS records are signed by the publisher's identity and contain sequence number to avoid replay attacks.
78-
79-
To avoid Denial of Service attack, maximum IPNS record size of `10 KiB` applies.
80-
Implements are permitted to set a lower limit. If lower than the default maximum, the limit should be discoverable via `OPTIONS` request with header key `X-Ipns-Allow-Max-Size` with value specified as the number of bytes.
63+
Additionally, the IPNS records must be validated according to the rules stated in :cite[ipns-record] before further processing.
8164

82-
Similarly, a client may check if a server supports ProtocolBuffer formatted records by checking the `X-Ipns-Allow-Protobuf` header key in response to `OPTIONS` request. If present the header value must be either `true` or `false` the absence of the header indicates that ProtocolBuffer formatted records are not supported.
65+
To avoid Denial of Service attack, maximum IPNS record size defined in :cite[ipns-record] applies.
8366

8467
Privacy in delegated IPNS is out of scope for this work.
85-
- The usual JSON parsing rules apply. To prevent potential Denial of Service (DoS) attack, clients should ignore responses larger than 100 providers and introduce a byte size limit that is applicable to their use case.
8668

8769
### Alternatives
8870

8971
See:
72+
9073
- [Libp2p-based IPNS](https://github.com/ipfs/go-ipns).
91-
- Reframe; find out more on "Design Rationale" section of :cite[ipip-0337].
74+
- Reframe; it was deprecated and now removed. Historical reasons can be found in :cite[ipip-0337].
9275

9376
### Copyright
9477

src/routing/http-ipns-routing.md

Lines changed: 0 additions & 177 deletions
This file was deleted.

0 commit comments

Comments
 (0)