You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* docs(glossary): add spec links and new gateway entries
- add spec links to existing entries: Bitswap, DHT, IPNS, DNSLink
- add new entries: Denylist, IPIP, Path Gateway, Subdomain Gateway,
Trustless Gateway, `_redirects` file
- include trust/MITM guidance for gateway types
- link to @helia/verified-fetch for trustless verification example
* docs: make glossary more prominent across site
- add Glossary link to top navigation bar
- add callout on homepage for newcomers
- add Glossary to Learn section on homepage
- add Glossary and IPFS Specs sections to Reference page
* docs(glossary): add Kademlia entry and clarify DHT hierarchy
- add Kademlia entry explaining XOR-based routing algorithm
- rename Amino to Amino DHT for clarity
- update DHT entry to reference Kademlia and Amino DHT
- add spec links for Amino DHT and Kademlia
- update IPNI and Mainnet entries to use Amino DHT anchor
Copy file name to clipboardExpand all lines: docs/README.md
+7-5Lines changed: 7 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,14 +11,15 @@ On a more technical level, IPFS is a set of open protocols for addressing, routi
11
11
12
12
Many popular projects are built with IPFS - see the [ecosystem directory](https://ecosystem.ipfs.tech) and the [awesome-ipfs](https://github.com/ipfs/awesome-ipfs) list to find some of these projects.
13
13
14
+
::: tip New to IPFS?
15
+
Check out the [Glossary](./concepts/glossary.md) to learn key terms and concepts.
16
+
:::
17
+
14
18
## Get started
15
19
16
-
You can get started [retrieving data](#retrieve-data) and [providing data](#provide-data) to the IPFS network. If you'd rather develop applications, learn how to build IPFS-native apps or use standard HTTP in the [Build](#build) section.
20
+
Install [IPFS Desktop](./install/ipfs-desktop.md) (GUI), [Kubo](./install/command-line.md) (CLI), or [IPFS Companion](./install/ipfs-companion.md) (browser extension). For infrastructure, see [IPFS Cluster, Rainbow, and Someguy](./install/README.md#infrastructure-tools).
17
21
18
-
:::tip Quick Downloads
19
-
Looking for downloads? Get [IPFS Desktop](./install/ipfs-desktop.md#install-instructions) (GUI), [Kubo](./install/command-line.md#install-official-binary-distributions) (CLI), or [IPFS Companion](./install/ipfs-companion.md#install) (browser extension).
20
-
Running IPFS infrastructure? See [IPFS Cluster, Rainbow, and Someguy](./install/README.md#infrastructure-tools).
21
-
:::
22
+
Learn how to [retrieve data](#retrieve-data), [provide content](#provide-data), [deploy websites](#deploy-static-sites-and-dapps-to-the-ipfs-network), or [build applications](#build).
22
23
23
24
### Retrieve data
24
25
@@ -67,6 +68,7 @@ As the IPFS ecosystem has grown and evolved with multiple implementations in dif
67
68
68
69
## Learn
69
70
71
+
- Look up [key terms and definitions](./concepts/glossary.md) in the IPFS Glossary.
70
72
- Learn what IPFS is and isn't, the problems it solves, the different subsystems that it is composed of and how each one works in [the Basic Concepts](./concepts/README.md#learn-the-basics).
71
73
- Dive into ideas like hashing, immutability, persistence (and more) that underlie IPFS in [Ideas and theory](./concepts/README.md#ideas-and-theory).
72
74
- Learn more about the subsystems that IPFS is composed of in [Subsystems and components](./concepts/README.md#subsystems-and-components)
Copy file name to clipboardExpand all lines: docs/concepts/glossary.md
+36-8Lines changed: 36 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -22,9 +22,9 @@ In computer security, an access-control list (ACL) is a list of permissions asso
22
22
23
23
ADL is short for _Advanced Data Layout_, a concept in [IPLD](#ipld). See [IPLD docs](https://ipld.io/glossary/#adl).
24
24
25
-
### Amino
25
+
### Amino DHT
26
26
27
-
Formerly referred to as the "public DHT", Amino is the public Kademlia-based [DHT](#dht) that [Kubo](#kubo) and other implementations default to bootstrapping into with the [libp2p](#libp2p) protocol `/ipfs/kad/1.0.0`. See the [blog post](https://blog.ipfs.tech/2023-09-amino-refactoring/) for more info.
27
+
Formerly referred to as the "public DHT", Amino DHT is the public Kademlia-based [DHT](#dht) that [Kubo](#kubo) and other implementations default to bootstrapping into with the [libp2p](#libp2p) protocol `/ipfs/kad/1.0.0`. [Amino DHT specification](https://specs.ipfs.tech/routing/kad-dht/#amino-dht) | [Blog post](https://blog.ipfs.tech/2023-09-amino-refactoring/)
28
28
29
29
### Announcing
30
30
@@ -54,7 +54,7 @@ Case-sensitive [Multibase](#multibase), uses modified Base64 with URL and filena
54
54
55
55
### Bitswap
56
56
57
-
Bitswap is IPFS's central block exchange protocol. Its purpose is to request blocks from and send blocks to other peers in the network. [More about Bitswap](../concepts/bitswap.md)
57
+
Bitswap is IPFS's central block exchange protocol. Its purpose is to request blocks from and send blocks to other peers in the network. [Bitswap specification](https://specs.ipfs.tech/bitswap-protocol/) | [More about Bitswap](../concepts/bitswap.md)
58
58
59
59
### BitTorrent
60
60
@@ -174,7 +174,7 @@ Delegated routing is useful in browsers and other constrained environments where
174
174
175
175
### DHT
176
176
177
-
A _Distributed Hash Table_ (DHT) is a distributed key-value store where keys are cryptographic hashes. In IPFS, each peer is responsible for a subset of the IPFS DHT.[More about DHT](dht.md)
177
+
A _Distributed Hash Table_ (DHT) is a distributed key-value store where keys are cryptographic hashes. IPFS uses a modified [Kademlia](#kademlia) algorithm for its DHT. See [Amino DHT](#amino-dht) for the public network. [IPFS Kademlia DHT specification](https://specs.ipfs.tech/routing/kad-dht/) |[More about DHT](dht.md)
178
178
179
179
### DMT
180
180
@@ -188,9 +188,13 @@ Dialing is a function of the IPFS networking layer in [libp2p](#libp2p), wherein
188
188
189
189
DNSAddr is a protocol for publishing multiple [Multiaddrs](#multiaddr) on DNS name. DNSAddr itself is a valid Multiaddr that looks like `/dnsaddr/bootstrap.libp2p.io`. Can be used for scaling, dynamic bootstrapping, or act as an additional content routing hint for [DNSLink](#dnslink) websites. [More about DNSAddr](https://github.com/multiformats/multiaddr/blob/master/protocols/DNSADDR.md)
190
190
191
+
### Denylist
192
+
193
+
A mechanism for IPFS node operators to block specific [CIDs](#cid) from being served. The compact denylist format enables efficient content filtering. [Compact Denylist Format specification](https://specs.ipfs.tech/compact-denylist-format/) | [Content blocking in Kubo](https://github.com/ipfs/kubo/blob/master/docs/content-blocking.md)
194
+
191
195
### DNSLink
192
196
193
-
DNSLink is a protocol to link content and services directly from DNS. A DNSLink address looks like an IPNS address, but it uses a domain name instead of a hashed public key, like `/ipns/en.wikipedia-on-ipfs.org`. [More about DNSLink](https://dnslink.dev/)
197
+
DNSLink is a protocol to link content and services directly from DNS. A DNSLink address looks like an IPNS address, but it uses a domain name instead of a hashed public key, like `/ipns/en.wikipedia-on-ipfs.org`. [DNSLink Gateway specification](https://specs.ipfs.tech/http-gateways/dnslink-gateway/) | [More about DNSLink](https://dnslink.dev/)
194
198
195
199
### DWeb
196
200
@@ -264,11 +268,15 @@ The InterPlanetary Linked Data (IPLD) model is a set of specifications in suppor
264
268
265
269
### IPNI
266
270
267
-
The InterPlanetary Network Indexer (IPNI), also referred to as Network Indexer, indexer and IPNI, enables quick and efficient search of content-addressable data. IPNI is designed to improve the performance and efficiency of IPFS by providing an alternate method of content routing to the [Amino](#amino) DHT. [More about IPNI](../concepts/ipni.md)
271
+
The InterPlanetary Network Indexer (IPNI), also referred to as Network Indexer, indexer and IPNI, enables quick and efficient search of content-addressable data. IPNI is designed to improve the performance and efficiency of IPFS by providing an alternate method of content routing to the [Amino DHT](#amino-dht). [More about IPNI](../concepts/ipni.md)
268
272
269
273
### IPNS
270
274
271
-
The InterPlanetary Name System (IPNS) is a system for creating and updating mutable links to IPFS content. IPNS allows for publishing the latest version of any IPFS content, even though the underlying IPFS hash has changed. [More about IPNS](ipns.md)
275
+
The InterPlanetary Name System (IPNS) is a system for creating and updating mutable links to IPFS content. IPNS allows for publishing the latest version of any IPFS content, even though the underlying IPFS hash has changed. [IPNS Record specification](https://specs.ipfs.tech/ipns/ipns-record/) | [More about IPNS](ipns.md)
276
+
277
+
### IPIP
278
+
279
+
An InterPlanetary Improvement Proposal (IPIP) is a design document for introducing features or changes to IPFS specifications. IPIPs provide a structured process for proposing, discussing, and documenting improvements. [IPIP process specification](https://specs.ipfs.tech/meta/spec-for-specs/) | [All IPIPs](https://specs.ipfs.tech/ipips/)
272
280
273
281
## J
274
282
@@ -286,6 +294,10 @@ JavaScript Object Notation (JSON) is a lightweight data-interchange format. JSON
286
294
287
295
Kubo (previously known as [go-ipfs](#go-ipfs)) is the earliest and most widely used implementation of IPFS, written in Go. It runs on servers and user machines with full IPFS capabilities. [Install IPFS Kubo](../install/command-line.md) or see [Kubo README](https://github.com/ipfs/kubo#readme).
288
296
297
+
### Kademlia
298
+
299
+
A peer-to-peer distributed hash table algorithm using XOR-based distance metrics for efficient routing. [libp2p](#libp2p) originally implemented this as Kad-DHT, which IPFS extends with support for [CID](#cid) lookups, [IPNS](#ipns) records, and provider advertisements. See [DHT](#dht) and [Amino DHT](#amino-dht). [IPFS Kademlia DHT specification](https://specs.ipfs.tech/routing/kad-dht/) | [libp2p Kad-DHT relation](https://specs.ipfs.tech/routing/kad-dht/#relation-to-libp2p-kad-dht)
300
+
289
301
## L
290
302
291
303
### LAN
@@ -312,7 +324,7 @@ In IPFS and [IPLD](#ipld), a _link_ usually means a pointer to some [CID](#cid).
312
324
313
325
### Mainnet
314
326
315
-
IPFS Mainnet is a term used to describe the default or "main" public network that most IPFS implementations connect to by default. Most [IPFS implementations](https://specs.ipfs.tech/architecture/principles/#ipfs-implementation-requirements) were designed to work with Mainnet (but some can be configured instead to form a private swarm). Mainnet IPFS nodes typically join the [Amino DHT](#amino) for content routing with the help of the [Bootstrap nodes](#bootstrap-node), rely on [Bitswap](#bitswap) for data transfer, [UnixFS](#unixfs) for encoding files and directories, and typically expose an [IPFS Gateway](#gateway). This has mostly been assumed for the IPFS network. Nonetheless, IPFS Mainnet is a useful distinction in a world of many [IPFS implementations](../concepts/implementations.md) with varying degrees of interoperability.
327
+
IPFS Mainnet is a term used to describe the default or "main" public network that most IPFS implementations connect to by default. Most [IPFS implementations](https://specs.ipfs.tech/architecture/principles/#ipfs-implementation-requirements) were designed to work with Mainnet (but some can be configured instead to form a private swarm). Mainnet IPFS nodes typically join the [Amino DHT](#amino-dht) for content routing with the help of the [Bootstrap nodes](#bootstrap-node), rely on [Bitswap](#bitswap) for data transfer, [UnixFS](#unixfs) for encoding files and directories, and typically expose an [IPFS Gateway](#gateway). This has mostly been assumed for the IPFS network. Nonetheless, IPFS Mainnet is a useful distinction in a world of many [IPFS implementations](../concepts/implementations.md) with varying degrees of interoperability.
316
328
317
329
### Merkle-DAG
318
330
@@ -378,6 +390,10 @@ For example, in a family tree each person is a _node_, while each branch connect
378
390
379
391
## P
380
392
393
+
### Path Gateway
394
+
395
+
An HTTP [Gateway](#gateway) that serves deserialized IPFS content at `/ipfs/{cid}` or `/ipns/{name}` paths. Good for loading files and assets, but the lack of origin isolation and URL paths prefixed with `/ipfs` or `/ipns` make it unsuitable for hosting websites or web apps. Use a [Subdomain Gateway](#subdomain-gateway) for those. Requires trust in the gateway operator as responses can be modified; only use with a local, trusted gateway to avoid MITM risks. [Path Gateway specification](https://specs.ipfs.tech/http-gateways/path-gateway/)
396
+
381
397
### Path/Address
382
398
383
399
A Path/Address is the method within IPFS of referencing content on the web. Addresses for content are path-like; they are components separated by slashes. [More about Path/Address](../how-to/address-ipfs-on-web.md)
@@ -426,6 +442,10 @@ QUIC (`/quic-v1`) is one of [libp2p](#libp2p) [transport](#transport) protocols.
426
442
427
443
## R
428
444
445
+
### `_redirects` file
446
+
447
+
A configuration file for defining URL redirects and rewrites on [Subdomain](#subdomain-gateway) and [DNSLink](https://specs.ipfs.tech/http-gateways/dnslink-gateway/) gateways. Useful for single-page applications and custom routing on websites hosted on IPFS. [How to use _redirects](../how-to/websites-on-ipfs/redirects-and-custom-404s.md) | [Web _redirects File specification](https://specs.ipfs.tech/http-gateways/web-redirects-file/)
448
+
429
449
### Redundancy
430
450
431
451
In IPFS context, the practice of [pinning](#pinning) the same content to multiple nodes or [pinning services](#pinning-service) to ensure availability even if one source goes offline. This increases the resilience and availability of data on the [network](#mainnet).
@@ -482,6 +502,10 @@ An introduction of horizontal partition of data in a database or a data structur
482
502
483
503
The signing of data cryptographically allows for trusting of data from untrusted sources. Cryptographically signed values can be passed through an untrusted channel, and any tampering of the data can be detected. [More about Digital signature](https://en.wikipedia.org/wiki/Digital_signature)
484
504
505
+
### Subdomain Gateway
506
+
507
+
An HTTP [Gateway](#gateway) that serves deserialized content with each [CID](#cid) on its own subdomain (e.g., `{cid}.ipfs.gateway.example`). Provides [origin](https://en.wikipedia.org/wiki/Same-origin_policy) isolation, making it safe for hosting websites and web apps. Requires trust in the gateway operator; use with a local gateway to avoid MITM risks. [Subdomain Gateway specification](https://specs.ipfs.tech/http-gateways/subdomain-gateway/)
508
+
485
509
### Substrate
486
510
487
511
A vocabulary term in [IPLD](#ipld), related to [ADLs](#adl). [More in IPLD glossary](https://ipld.io/glossary/#substrate)
@@ -508,6 +532,10 @@ In [libp2p](#libp2p), transport refers to the technology that lets us move data
508
532
509
533
In [IPLD](#ipld), the act of walking across the [Data Model](#data-model). [More in IPLD glossary](https://ipld.io/glossary/#substrate)
510
534
535
+
### Trustless Gateway
536
+
537
+
A [Gateway](#gateway) that returns raw content-addressed data (blocks, [CAR](#car) files) that can be [verified](https://docs.ipfs.tech/reference/http/gateway/#trustless-verifiable-retrieval) by the client (e.g., [@helia/verified-fetch](https://www.npmjs.com/package/@helia/verified-fetch)). Unlike [Path](#path-gateway) or [Subdomain](#subdomain-gateway) gateways, no trust in the gateway operator is needed. Immune to MITM attacks because integrity is verified using cryptographic hashes. [Trustless Gateway specification](https://specs.ipfs.tech/http-gateways/trustless-gateway/)
Copy file name to clipboardExpand all lines: docs/install/README.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -50,6 +50,10 @@ If you only want to run production-grade HTTP [Gateway](../concepts/glossary.md#
50
50
51
51
If you need to run your own [delegated routing](../concepts/glossary.md#delegated-routing) endpoint that hits both Amino DHT and IPNI, consider running [Someguy →](https://github.com/ipfs/someguy/#readme).
52
52
53
+
### IPFS Check
54
+
55
+
A tool for checking the retrievability of CIDs from the IPFS network. Useful for debugging and monitoring. [IPFS Check →](https://github.com/ipfs/ipfs-check/#readme)
-[All IPFS Specs](https://specs.ipfs.tech/) — complete specifications for IPFS protocols
18
+
10
19
## HTTP Gateway
11
20
12
21
The [Gateway API](http/gateway.md) provides implementation-agnostic HTTP interface for retrieving [content-addressed](../concepts/glossary.md#content-addressing) data from IPFS with regular HTTP clients and libraries. Use it for future-proofing your applications.
0 commit comments