xlattice_go
An implementation of the open source XLattice project for the Go programming language.
Project Description
XLattice is a communications library and a set of tools for peer-to-peer networks. The library was originally developed in Java; more extensive (although somewhat dated) information on XLattice for Java is available at the Java XLattice website.
Components
XLattice consists of a number of components. Generally speaking, those listed later depend upon some or all of the earlier components.
All of these are currently in development.
rnglib
This version of xlattice_go includes a Go implementation of the python package rnglib for use in testing. rnglib_go is a Go random number generator a drop-in replacement for Go’s random number generator. It
- is somewhat faster; about 30% in our tests
- has a number of additional functions for generating random file names, directories of random data, etc
util
u
and an implementation of u, a system for storing files by their content keys.
A store organized by content key
crypto
transport
protocol
Chunks
overlay
node
reg
xlReg is a tool, primarily intended for use in testing, which facilitates the formation of clusters, groups of cooperating nodes. On registration, a client/member is issued a globally unique NodeID, a 256-bit random value. Once it has an ID, the member can create and/or join clusters. The cluster has a maximum size set when it is created. When members join the cluster they register their two RSA public keys and either one or two IP addresses. If the cluster only supports communications between members, members register only one IP address. If non-members, clients, are allowed to communicate with the cluster, members register a second address for that purpose. When a member has completed registration, it can retrieve the configuration data other members have registered.
The xlReg server, its clients, and the cluster members, are all XLattice nodes.
httpd
Project Status
The Go version of XLattice httpd is very much in development.
Licensing
The material on this github.io website is licensed under a Creative Commons Attribution 4.0 International License.
Project software is licensed under an MIT license. Follow the SOFTWARE LICENSE link below for more information on project software licensing.