routing 0.0.6

This is Pre alpha, and not useful, no code worth looking at.
docs.rs failed to build routing-0.0.6
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: routing-0.37.0

routing

Routing - specialised storage DHT

Travis build and test status Appveyor build status Code Coverage
Build Status Build status Coverage Status

| API Documentation| MaidSafe System Documention | MaidSafe web site | Safe Community site |

#Overview

A secured DHT, based on a kademlia like implementation, but with some very stark differences. Thsi is a recursive as opposed to iterative network, this allows easier NAT traversal and makes more efficient use of routers and larger networks. This also allows very fast reconfiguration of network changes and aleviates the requirement of 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 recodnised and cryptographically secured. This pattern allows the creation of a DHT based PKI and this in turn allows us to make use of groups as fixed in relation to any address, in a continually fluid network as described here and create serverless networks that can provide fully autonomous networks.

This is a very under-researched area and is currently being investigated with papers such as {Erick Lavoie} XOR Distance Metric and Basic Routing". McLab Seminars. McGill University, Montreal, October 2014., with videos to also help the curious which can be found here

This video will help provide a quick overview of this particular design

###Pre-requisite: libsodium is a native dependency for sodiumxoide. Thus, install sodium by following the instructions here.

For windows, download and use the prebuilt mingw library. Extract and place the libsodium.a file in "bin\x86_64-pc-windows-gnu" for 64bit System or "bin\i686-pc-windows-gnu" for a 32bit system.

SQLite3 is also native dependency for rustsqlite. Steps to compile SQLite by,

  1. Download SQLite Source code which includes a "configure" script from SQLite download page
  2. On Linux, Run ./configure --prefix=/usr && make && sudo make install to build the SQLite source. While on Windows Users can build using (mingw + msys) and run './configure && make'
  3. On Windows, Copy the libsqlite3.a file from the .libs folder to the "bin{TARGET-TRIPLE}" (i.e. i686-pc-win32 or x86_64-pc-win32 etc.) in the project root folder (or at least in your path).

##Todo Items

  • Set up facade design pattern
  • Test facade pattern
  • Set up accumulator
  • Accumulator tests
  • Message header
  • Message header tests
  • API version 0.0.6
  • Bootstrap handler implementation
  • Bootstrap handler test
  • zero state network
  • Test node network (process on single machine)
  • Test node network (local area network)
  • Test node network (across digital ocean images)
  • Create sort and bucket index methods
  • Implement routing table
  • Test routing table
  • Implement sentinel (initial)
  • Finalise sentinel in line with tests
  • Implement client node
  • Test client node
  • Implement client façade
  • Test client façade
  • Integrate connection manager (bootstrapping)
  • Implement routing node (handle messages , forwarding etc)
  • Test sentinel
  • Implement routing message types (Connect FindNode)
  • Test message types
  • Implement Get Put Post messages
  • Implement routing node
  • Version 0.0.8
  • Integrate with Sentinel
  • Implement NAT traversal (requires crust v0.1.0)
  • Test basic facade (normal DHT Get Put with republish)
  • Version 0.1 (crates.io)