• This repository has been archived on 26/Jun/2021
  • Stars
    star
    276
  • Rank 149,292 (Top 3 %)
  • Language
    Rust
  • License
    Other
  • Created over 9 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Routing - specialised storage DHT

PLEASE NOTE THAT THIS REPOSITORY HAS NOW BEEN ARCHIVED

All routing development is now via the safe_network repository

sn_routing

sn_routing - a specialised storage DHT

Crate LoC
LoC
Documentation MaidSafe website Safe Dev Forum Safe Network Forum

Overview

A secured DHT, based on a kademlia-like implementation, but with some very stark differences. This is a recursive as opposed to iterative network, enabling easier NAT traversal and providing more efficient use of routers and larger networks. This also allows very fast reconfiguration of network changes, aleviating the requirement for a refresh algorithm. A recursive solution based on a network protocol layer that is 'connection oriented' also allows a close group to be aligned with security protocols.

This library makes use of Public-key cryptography to allow a mechanism to ensure nodes are well recognised and cryptographically secured. This pattern allows the creation of a DHT based PKI and this in turn allows a decentralised network to make use of groups as fixed in relation to any address. This is particularly useful in a continually fluid network as described here, creating a server-less and autonomous network.

This is a very under researched area. For a general introduction to some of the ideas behind the design related to XOR Space, watching The Safe Network from First Principles series is recommended. The slides for XOR Distance Metric and Basic Routing lecture are also available here. The last video from the series on how the same ideas were applied to decentralised BitTorrent trackers is available here. A proper formalisation of the Routing algorithm is in progress.

Logging

Messages are logged via the standard log crate, and where enabled, printed via env_logger. By default this prints messages of level "warn" and higher ("error"), but not lower levels ("info", "debug", "trace"). The level can be set explicitly (any of the above or "off"), e.g.:

export RUST_LOG=sn_routing=info

Optionally, the following sub-targets can be controlled independently:

  • stats — messages about connections and sn_routing table size
  • crust — messages from the mock Crust layer (not real Crust)

Example:

export RUST_LOG=sn_routing=info,stats=off

License

Licensed under the General Public License (GPL), version 3 (LICENSE http://www.gnu.org/licenses/gpl-3.0.en.html).

Linking exception

sn_routing is licensed under GPLv3 with linking exception. This means you can link to and use the library from any program, proprietary or open source; paid or gratis. However, if you modify sn_routing, you must distribute the source to your modified version under the terms of the GPLv3.

See the LICENSE file for more details.

Contributing

Want to contribute? Great 🎉

There are many ways to give back to the project, whether it be writing new code, fixing bugs, or just reporting errors. All forms of contributions are encouraged!

For instructions on how to contribute, see our Guide to contributing.

More Repositories

1

qp2p

peer-to-peer communications library for Rust based on QUIC protocol
Rust
359
star
2

sn_browser

Safe Network Browser Application
TypeScript
201
star
3

crdt_tree

Rust
117
star
4

temp_safe_network

The Safe Network. A libp2p backed data and transfer network
Rust
109
star
5

self_encryption

file self encryptor
Rust
107
star
6

lru_time_cache

LRU cache settable via size or time to live
Rust
100
star
7

rfcs

Request for Comment (RFC) papers and discussions on Project SAFE core libraries and APIs
Rust
97
star
8

rust_sodium

This crate is no longer maintained. Looking for maintainers.
Rust
78
star
9

sn

The Safe Network Core. API message definitions, routing and nodes, client core api.
Rust
68
star
10

safe_network

Rust
56
star
11

sn_data_types

Safe Network Data Types
Rust
24
star
12

maidsafe-utilities

Utility functions
Rust
22
star
13

bls_dkg

Implementation of a BLS DKG mechanism, requires signing key, encryption key and SocketAddr of participants
Rust
20
star
14

sn_nodejs

Rust
18
star
15

blsttc

poanetwork/threshold_crypto using supranational/blst for sign+verify
Rust
18
star
16

safenetwork.tech

JavaScript
16
star
17

QA

JavaScript
15
star
18

sn_launch_tool

A cross platform tool to easily launch a SAFE Network test section from home
Rust
12
star
19

sn_transfers

Implementation of Transfers in the SAFE Network.
Rust
11
star
20

xor_name

Small library. XorName is an array that is useful for calculations in DHT etc.
Rust
11
star
21

safe-web-id-manager-js

JavaScript
10
star
22

maidsafe.net

Repository for maidsafe.net company website
CSS
10
star
23

sn_dbc

Safe Network DBCs
Rust
10
star
24

qjsonrpc

Provides the implementation of JSON-RPC over QUIC, which is required by the Authenticator daemon communication protocol.
Rust
10
star
25

dev-website

SAFE Network Dev Website source.
JavaScript
9
star
26

brb

Rust
9
star
27

safe-patter-js

JavaScript
8
star
28

sn_messaging

Rust
8
star
29

sn_testnet_tool

Just
7
star
30

sn_entropy_check

Rust
6
star
31

sn_fs

Rust
5
star
32

sn_cli

A Rust application which implements a CLI (Command Line Interface) for the Safe Network.
Rust
5
star
33

routing_model

Documentation of the control and message flows in Routing, and tests for validating these.
Rust
5
star
34

Whitepapers

MaidSafe Whitepapers
TeX
4
star
35

brb_membership

Rust
4
star
36

brb_node_qp2p

Rust
4
star
37

sn_authd

Rust
4
star
38

sn_sdkg

Synchronous Distributed Key Generation
Rust
4
star
39

sn_consensus

Rust
4
star
40

pr_size_checker

A GitHub Action which checks the number of additions and deletions made in each submitted PR, adding them together to come up with a total lines changed value, then checking whether this value exceeds the default or set max_lines_changed value. If it does exceed then the CI job will exit with code 1, i.e. fail.
4
star
41

sn_diagrams

Diagrams of the Safe Network codebase structure
HTML
3
star
42

brb_dt_orswot

Rust
3
star
43

brb_dt_at2

Rust
3
star
44

bls_ringct

Rust
3
star
45

bls_signature_aggregator

A Generic BLS Signature Accumulator for SAFE Network
Rust
3
star
46

brb_dt_tree

Rust
3
star
47

rust-version-bump-branch-creator

Bump your rust repo's version automatically, using conventional commits to generate a changelog and determine the correct new version.
JavaScript
3
star
48

sn_url

Rust
2
star
49

secured_linked_list

Rust
2
star
50

resource_proof

A 'proof' of bandwidth, cpu and storage for nodes in a decentralised network
Rust
2
star
51

bls_bulletproofs

Rust
1
star
52

blog-redirection

HTML
1
star
53

sn_testnet_action

1
star
54

safeup

Install and update safe-related components
Rust
1
star
55

cargo-nextest

Github Action for performing a test run using Nextest
1
star
56

sn-local-testnet-action

Github Action for administering local testnets
1
star