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
Copy file name to clipboardExpand all lines: ARCHITECTURE.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -112,7 +112,7 @@ The Routing Sytem is an interface that is satisfied by various kinds of implemen
112
112
113
113
See more in the [libp2p specs](https://github.com/libp2p/specs).
114
114
115
-
## 3.3 Block Exchange -- transfering content-addressed data
115
+
## 3.3 Block Exchange -- transferring content-addressed data
116
116
117
117
The IPFS **Block Exchange** takes care of negotiating bulk data transfers. Once nodes know each other -- and are connected -- the exchange protocols govern how the transfer of content-addressed blocks occurs.
118
118
@@ -175,7 +175,7 @@ The IPFS **naming** layer -- or IPNS -- handles the creation of:
175
175
176
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.
177
177
178
-
See more in the namin spec (TODO).
178
+
See more in the naming spec (TODO).
179
179
180
180
# 4. Applications and Datastructures -- on top of IPFS
Copy file name to clipboardExpand all lines: BITSWAP.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -113,7 +113,7 @@ Task workers watch the message queues, dequeue a waiting message, and send it to
113
113
114
114
## Network
115
115
116
-
The network is the abstraction representing all Bitswap peers that are connected to us by one or more hops. Bitswap messages flow in and out of the network. This is where a game-theoretical analysis of Bitswap becomes relevant – in an arbitrary network we must assume that all of our peers are rational and self-interested, and we act accordingly. Work along these lines can be found in the [research-bitswap respository](https://github.com/ipfs/research-bitswap), with a preliminary game-theoretical analysis currently in-progress [here](https://github.com/ipfs/research-bitswap/blob/docs/strategy_analysis/analysis/prelim_strategy_analysis.pdf).
116
+
The network is the abstraction representing all Bitswap peers that are connected to us by one or more hops. Bitswap messages flow in and out of the network. This is where a game-theoretical analysis of Bitswap becomes relevant – in an arbitrary network we must assume that all of our peers are rational and self-interested, and we act accordingly. Work along these lines can be found in the [research-bitswap repository](https://github.com/ipfs/research-bitswap), with a preliminary game-theoretical analysis currently in-progress [here](https://github.com/ipfs/research-bitswap/blob/docs/strategy_analysis/analysis/prelim_strategy_analysis.pdf).
Copy file name to clipboardExpand all lines: IMPORTERS_EXPORTERS.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -30,7 +30,7 @@ Lots of discussions around this topic, some of them here:
30
30
31
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.
32
32
33
-
These data importing primitivies are really just tools on top of IPLD, meaning that these can be generic and separate from IPFS itself.
33
+
These data importing primitives are really just tools on top of IPLD, meaning that these can be generic and separate from IPFS itself.
34
34
35
35
Essentially, data importing is divided into two parts:
36
36
@@ -52,10 +52,10 @@ Essentially, data importing is divided into two parts:
52
52
53
53
## Requirements
54
54
55
-
These are a set of requirements (or guidelines) of the expectations that need to be fullfilled for a layout or a splitter:
55
+
These are a set of requirements (or guidelines) of the expectations that need to be fulfilled for a layout or a splitter:
56
56
57
57
- a layout should expose an API encoder/decoder like, that is, able to convert data to its format and convert it back to the original format
58
-
- a layout should contain a clear umnambiguous representation of the data that gets converted to its format
58
+
- a layout should contain a clear unambiguous representation of the data that gets converted to its format
59
59
- a layout can leverage one or more splitting strategies, applying the best strategy depending on the data format (dedicated format chunking)
60
60
- a splitter can be:
61
61
- agnostic - chunks any data format in the same way
@@ -77,7 +77,7 @@ These are a set of requirements (or guidelines) of the expectations that need to
77
77
Importer
78
78
```
79
79
80
-
-`chunkers or splitters`algorithms that read a stream and produce a series of chunks. for our purposes should be deterministic on the stream. divided into:
80
+
-`chunkers or splitters` algorithms that read a stream and produce a series of chunks. for our purposes should be deterministic on the stream. divided into:
81
81
-`universal chunkers` which work on any streams given to them. (eg size, rabin, etc). should work roughly equally well across inputs.
82
82
-`specific chunkers` which work on specific types of files (tar splitter, mp4 splitter, etc). special purpose but super useful for big files and special types of data.
83
83
-`layouts or topologies` graph topologies (eg balanced vs trickledag vs ext4, ... etc)
Copy file name to clipboardExpand all lines: IPNS.md
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,7 +25,7 @@ All things considered, the IPFS naming layer is responsible for the creation of:
25
25
26
26
## Introduction
27
27
28
-
Each time a file is modified, its content address changes. As a consequence, the address previously used for getting that file needs to be updated by who is using it. As this is not pratical, IPNS was created to solve the problem.
28
+
Each time a file is modified, its content address changes. As a consequence, the address previously used for getting that file needs to be updated by who is using it. As this is not practical, IPNS was created to solve the problem.
29
29
30
30
IPNS is based on [SFS](http://en.wikipedia.org/wiki/Self-certifying_File_System). It consists of a PKI namespace, where a name is simply the hash of a public key. As a result, whoever controls the private key has full control over the name. Accordingly, records are signed by the private key and then distributed across the network (in IPFS, via the routing system). This is an egalitarian way to assign mutable names on the Internet at large, without any centralization whatsoever, or certificate authorities.
31
31
@@ -53,7 +53,7 @@ An IPNS record is a data structure containing the following fields:
53
53
-7.**ttl** (uint64)
54
54
- A hint for how long the record should be cached before going back to, for instance the DHT, in order to check if it has been updated.
55
55
56
-
These records are stored locally, as well as spread accross the network, in order to be accessible to everyone. For storing this structured data, we use [Protocol Buffers](https://github.com/google/protobuf), which is a language-neutral, platform neutral extensible mechanism for serializing structured data.
56
+
These records are stored locally, as well as spread across the network, in order to be accessible to everyone. For storing this structured data, we use [Protocol Buffers](https://github.com/google/protobuf), which is a language-neutral, platform neutral extensible mechanism for serializing structured data.
57
57
58
58
```
59
59
message IpnsEntry {
@@ -79,13 +79,13 @@ message IpnsEntry {
79
79
80
80
Taking into consideration a p2p network, each peer should be able to publish IPNS records to the network, as well as to resolve the IPNS records published by other peers.
81
81
82
-
When a node intends to publish a record to the network, an IPNS record needs to be created first. The node needs to have a previously generated assymetric key pair to create the record according to the datastructure previously specified. It is important pointing out that the record needs to be uniquely identified in the network. As a result, the record identifier should be a hash of the public key used to sign the record.
82
+
When a node intends to publish a record to the network, an IPNS record needs to be created first. The node needs to have a previously generated asymmetric key pair to create the record according to the datastructure previously specified. It is important pointing out that the record needs to be uniquely identified in the network. As a result, the record identifier should be a hash of the public key used to sign the record.
83
83
84
84
As an IPNS record may be updated during its lifetime, a versioning related logic is needed during the publish process. As a consequence, the record must be stored locally, in order to enable the publisher to understand which is the most recent record published. Accordingly, before creating the record, the node must verify if a previous version of the record exists, and update the sequence value for the new record being created.
85
85
86
86
Once the record is created, it is ready to be spread through the network. This way, a peer can use whatever routing system it supports to make the record accessible to the remaining peers of the network.
87
87
88
-
On the other side, each peer must be able to get a record published by another node. It only needs to have the unique identifier used to publish the record to the network. Taking into account the routing system being used, we may obtain a set of occurences of the record from the network. In this case, records can be compared using the sequence number, in order to obtain the most recent one.
88
+
On the other side, each peer must be able to get a record published by another node. It only needs to have the unique identifier used to publish the record to the network. Taking into account the routing system being used, we may obtain a set of occurrences of the record from the network. In this case, records can be compared using the sequence number, in order to obtain the most recent one.
89
89
90
90
As soon as the node has the most recent record, the signature and the validity must be verified, in order to conclude that the record is still valid and not compromised.
91
91
@@ -97,12 +97,12 @@ Finally, the network nodes may also republish their records, so that the records
@@ -120,4 +120,4 @@ The routing record is spread across the network according to the available routi
120
120
121
121
**Key format:**`/ipns/BINARY_ID`
122
122
123
-
The two routing systems currenty available in IPFS are the `DHT` and `pubsub`. As the `pubsub` topics must be `utf-8` for interoperability among different implementations
123
+
The two routing systems currently available in IPFS are the `DHT` and `pubsub`. As the `pubsub` topics must be `utf-8` for interoperability among different implementations
Copy file name to clipboardExpand all lines: MERKLE_DAG.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -41,7 +41,7 @@ The format has two parts, the logical format, and the serialized format.
41
41
42
42
### Logical Format
43
43
44
-
The merkledag format defines two parts, `Nodes` and `Links` between nodes. `Nodes` embed `Links` in their `Link Segement` (or link table).
44
+
The merkledag format defines two parts, `Nodes` and `Links` between nodes. `Nodes` embed `Links` in their `Link Segment` (or link table).
45
45
46
46
A node is divided in two parts:
47
47
- a `Link Segment` which contains all the links.
@@ -112,7 +112,7 @@ In a sense, IPFS is a "web of data-structures", with the merkledag as the common
112
112
113
113
The merkledag is a type of Linked-Data. The links do not follow the standard URI format, and instead opt for a more general and flexible UNIX filesystem path format, but the power is all there. One can trivially map formats like JSON-LD directly onto IPFS (IPFS-LD), making IPFS applications capable of using the full-power of the semantic web.
114
114
115
-
A powerful result of content (and identity) addressing is that linked data definitions can be distributed directly with the content itself, and do not need to be served from the original location. This enables the creation of Linked Data defintions, specs, and applications which can operate faster (no need to fetch it over the network), disconnected, or even completely offline.
115
+
A powerful result of content (and identity) addressing is that linked data definitions can be distributed directly with the content itself, and do not need to be served from the original location. This enables the creation of Linked Data definitions, specs, and applications which can operate faster (no need to fetch it over the network), disconnected, or even completely offline.
Copy file name to clipboardExpand all lines: README.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@
12
12
13
13
We use the following label system to identify the state of each spec:
14
14
15
-
- - A work-in-progress, possibly to describe an idea before actually commiting to a full draft of the spec.
15
+
- - A work-in-progress, possibly to describe an idea before actually committing to a full draft of the spec.
16
16
- - A draft that is ready to review. It should be implementable.
17
17
- - A spec that has been adopted (implemented) and can be used as a reference point to learn how the system works.
18
18
- - We consider this spec to close to final, it might be improved but the system it specifies should not change fundamentally.
@@ -54,7 +54,7 @@ The specs contained in this repository are:
-[KeyStore](./KEYSTORE.md) - Key management on IPFS
57
-
-[KeyChain](./KEYCHAIN.md) - Distribution of cryptographic Artificats
57
+
-[KeyChain](./KEYCHAIN.md) - Distribution of cryptographic Artifacts
58
58
-**Networking layer:**
59
59
-[libp2p](https://github.com/libp2p/specs) - libp2p is a modular and extensible network stack, built and use by IPFS, but that it can be reused as a standalone project. Covers:
60
60
-**Records, Naming and Record Systems:**
@@ -64,7 +64,7 @@ The specs contained in this repository are:
Suggestions, contributions, criticisms are welcome. Though please make sure to familiarize yourself deeply with IPFS, the models it adopts, and the principles it follows.
70
70
This repository falls under the IPFS [Code of Conduct](https://github.com/ipfs/community/blob/master/code-of-conduct.md).
0 commit comments