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
This spec document defines the IPFS protocol stack, the subsystems, the interfaces, and how it all fits together. It delegates non-interface details to other specs as much as possible. This is meant as a top-level view of the protocol and how the system fits together.
14
16
15
17
Note, this document is not meant to be an introduction of the concepts in IPFS and is not recommended as a first pass to understanding how IPFS works. For that, please refer to the [IPFS paper](https://github.com/ipfs/papers/raw/master/ipfs-cap2pfs/ipfs-p2p-file-system.pdf).
@@ -81,7 +83,7 @@ IPFS has five layers:
81
83
-**routing** - locating peers and objects
82
84
-**network** - establishing connections between peers
83
85
84
-

86
+

85
87
86
88
These are briefly described bottom-up.
87
89
@@ -171,8 +173,7 @@ The IPFS **naming** layer -- or IPNS -- handles the creation of:
171
173
- mutable pointers to objects
172
174
- human-readable names
173
175
174
-
IPNS is based on [SFS](http://en.wikipedia.org/wiki/Self-certifying_File_System). It is a
175
-
PKI namespace -- a name is simply the hash of a public key. Whoever controls the private key controls the name. Records are signed by the private key and distributed anywhere (in IPFS, via the routing system). This is an egalitarian way to assign mutable names in the internet at large, without any centralization whatsoever, or certificate authorities.
176
+
IPNS is based on [SFS](http://en.wikipedia.org/wiki/Self-certifying_File_System). It is a PKI namespace -- a name is simply the hash of a public key. Whoever controls the private key controls the name. Records are signed by the private key and distributed anywhere (in IPFS, via the routing system). This is an egalitarian way to assign mutable names in the internet at large, without any centralization whatsoever, or certificate authorities.
Bitswap is the data trading module for IPFS. Its purpose is to request blocks from and send blocks to other peers in the network. Bitswap has two primary jobs:
18
-
19
-
1. Attempt to acquire blocks from the network that have been requested by the client.
20
-
2. Judiciously (though strategically) send blocks in its possession to other peers who want them.
- Addressing data from other content-addressed systems
26
+
- Network addressing
27
+
- Interoperability
28
+
- DWeb Addressing with HTTP
29
+
- ipfs:// and ipns:// URL schemes
30
+
- dweb: URI scheme
31
+
- Content Security Policy / Origins
32
+
- Appendix
33
+
- DWeb Maturity Model
34
+
- FAQ
35
+
- Implementations
36
+
- Future Work
37
+
- Related work
38
+
39
+
## Introduction
40
+
41
+
Location-based addressing is a centralizing vector on the web. It lets links rot and drives copies of content into mutual competition.
42
+
43
+
This document describes a content-based addressing model which provides permanent links that don't rot and are cryptographically verifiable. The result is a more cooperative, resilient, and performant web.
#  Data Importers & Exporters
5
2
3
+
**Authors(s)**:
6
4
- David Dias
7
5
- Juan Benet
8
6
9
-
Reviewers:
10
-
11
-
- n/a
12
-
13
7
* * *
14
8
15
-
# Abstract
9
+
**Abstract**
16
10
17
11
IPFS Data Importing spec describes the several importing mechanisms used by IPFS that can be also be reused by other systems. An importing mechanism is composed by one or more chunkers and data format layouts.
18
12
19
-
# Status of this spec
20
-
21
13
Lots of discussions around this topic, some of them here:
22
14
23
15
-https://github.com/ipfs/notes/issues/204
24
16
-https://github.com/ipfs/notes/issues/216
25
17
-https://github.com/ipfs/notes/issues/205
26
18
-https://github.com/ipfs/notes/issues/144
27
19
28
-
# Organization of this document
29
-
30
-
This RFC is organized by chapters described on the *Table of contents* section.
31
-
32
20
# Table of contents
33
21
34
-
-[%N%. Introduction]()
35
-
-[%N%. Requirements]()
36
-
-[%N%. Architecture]()
37
-
-[%N%. Interfaces]()
38
-
-[%N%. Implementations]()
39
-
-[%N%. References]()
22
+
-[Introduction]()
23
+
-[Requirements]()
24
+
-[Architecture]()
25
+
-[Interfaces]()
26
+
-[Implementations]()
27
+
-[References]()
40
28
41
-
# Introduction
29
+
##Introduction
42
30
43
-
Importing data into IPFS can be done in a variety of ways. These are use-case specific, produce different datastructures, produce different graph topologies, and so on. These are not strictly needed in an IPFS implementation, but definitely make it more useful.
31
+
Importing data into IPFS can be done in a variety of ways. These are use-case specific, produce different datastructures, produce different graph topologies, and so on. These are not strictly needed in an IPFS implementation, but definitely make it more useful.
44
32
45
33
These data importing primitivies are really just tools on top of IPLD, meaning that these can be generic and separate from IPFS itself.
46
34
@@ -62,7 +50,7 @@ Essentially, data importing is divided into two parts:
62
50
63
51
- Have a set of primitives to digest, chunk and parse files, so that different chunkers can be replaced/added without any trouble.
64
52
65
-
# Requirements
53
+
##Requirements
66
54
67
55
These are a set of requirements (or guidelines) of the expectations that need to be fullfilled for a layout or a splitter:
68
56
@@ -76,7 +64,7 @@ These are a set of requirements (or guidelines) of the expectations that need to
76
64
- a splitter, once fed with data, should yield chunks to be added to layout or another layout of itself
77
65
- an importer is a aggregate of layouts and splitters
78
66
79
-
# Architecture
67
+
##Architecture
80
68
81
69
```bash
82
70
┌───────────┐ ┌──────────┐
@@ -95,15 +83,15 @@ These are a set of requirements (or guidelines) of the expectations that need to
95
83
-`layouts or topologies` graph topologies (eg balanced vs trickledag vs ext4, ... etc)
96
84
-`importer` is a process that reads in some data (single file, set of files, archive, db, etc), and outputs a dag. may use many chunkers. may use many layouts.
97
85
98
-
# Interfaces
86
+
##Interfaces
99
87
100
88
#### splitters
101
89
102
90
#### layout
103
91
104
92
#### importer
105
93
106
-
# Implementations
94
+
##Implementations
107
95
108
96
#### chunker
109
97
@@ -113,5 +101,4 @@ These are a set of requirements (or guidelines) of the expectations that need to
0 commit comments