-
-
Notifications
You must be signed in to change notification settings - Fork 105
Overall architecture RFC #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 2 commits
Commits
Show all changes
19 commits
Select commit
Hold shift + click to select a range
39b8de7
create arch doc
sanity decece9
karma
sanity 9a12815
flesh out
sanity 9bf6fa0
cp
sanity 20a6199
more docs
sanity 83cb4d7
minor
sanity aaa77bb
minor
sanity bb2a095
minor
sanity dcd2e47
minor
sanity 0206886
minor
sanity a5fc7eb
Merge branch 'architecture-doc' of github.com:freenet/freenet2 into a…
sanity 4ac3a25
minor
sanity ffd2275
minor
sanity f2c3459
Update tech_summary.md
sanity e8c0d14
doc additions
sanity d4242ee
Merge branch 'main' into architecture-doc
sanity 301fd58
doc additions
sanity 55c6c4a
doc additions
sanity 9e14505
use F2
sanity File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
# Architecture Layers | ||
|
||
## Transport | ||
|
||
Communication between peers is handled by libp2p, this includes: | ||
|
||
* Establishing direct P2P connection between peers, through NATs if necessary | ||
* Encryption of communication | ||
* Reliable transmission of data between peers | ||
|
||
## Small World Ring | ||
|
||
Establishes and maintain connection to other peers in a small-world ring, allowing | ||
messages to be routed to peers based on their location in the ring. Maintains | ||
small world topology as peers are disconnected and join. | ||
|
||
### Joining | ||
|
||
A new peer joins the network via a gateway, an "open" peer that accepts unilateral | ||
connections and isn't behind a NAT. The joining peer's network location is negotiated | ||
between that peer and the gateway such that neither can choose the new peer's location. | ||
|
||
### Load balancing | ||
|
||
Peers track how much CPU and bandwidth they use on behalf of other peers. Peers may | ||
disconnect from other peers if they are consuming too many resources. Karma (see below) | ||
may be used to establish a reputation initially. | ||
|
||
## Contract Store | ||
|
||
### Key/value store | ||
|
||
Store and retrieve keys and associated data, perhaps using SQLite implementing a | ||
least-recently-used eviction policy. | ||
|
||
### Network operations | ||
|
||
#### Get | ||
|
||
Retrieve a contract's value | ||
|
||
#### Put | ||
|
||
Set or update the value of a contract | ||
|
||
#### Listen | ||
|
||
Listen for changes to a contract's value | ||
|
||
## Karma | ||
|
||
Karma is a scarce unit of value which can be used to establish trust within the network. | ||
Karma can be acquired through a donation to Freenet development. | ||
|
||
Notes: | ||
* Blind signature may be used to purchase Karma without it being tied to a real-world | ||
transaction. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# Karma | ||
|
||
A currency that can be acquired by making a donation to Freenet, or by | ||
providing resources to the network. | ||
|
||
## Implementation | ||
|
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.