nimona.io

module
v0.19.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 8, 2021 License: MIT

README

nimona

a new internet stack; or something like it.

Actions Status Coverage GitHub last commit GitHub issues GitHub pull requests License Status


WARNING: Nimona is still in its very early stages of design and development and will stay like this for a while.
Documentation is slowly starting to pop up, but everything is still pretty much in flux.


Nimona

Nimona’s main goal is to provide a number of layers/components to help with the challenges presented when dealing with decentralized and peer to peer applications.

Development

Requirements
  • Go 1.16+ with modules enabled
  • Make
Getting Started
git clone https://github.com/nimona/go-nimona.git go-nimona
cd go-nimona
make deps
Process / Workflow

Nimona is developed using Git Common-Flow, which is essentially GitHub Flow with the addition of versioned releases, and optional release branches.

In addition to the Common-Flow spec, contributors are also highly encouraged to sign commits.

Library Architecture

Library Architecture

Network

Package exchange is responsible for a number of things around connections and object exchange, as well as relaying objects to inaccessible peers.

type Network interface {
    Subscribe(
        filters ...EnvelopeFilter,
    ) EnvelopeSubscription
    Send(
        ctx context.Context,
        object object.Object,
        recipient *peer.ConnectionInfo,
    ) error
    Listen(
        ctx context.Context,
        bindAddress string,
    ) (Listener, error)
}
Resolver

Package resolver is responsible for looking up peers on the network that fulfill specific requirements.

type Resolver interface {
    Lookup(
        ctx context.Context,
        opts ...LookupOption,
    ) (<-chan *peer.ConnectionInfo, error)
}

The currently available LookupOption are the following, and can be used on their own or in groups.

func LookupByHash(hash object.CID) LookupOption { ... }
func LookupByContentType(contentType string) LookupOption { ... }
func LookupByIdentity(key crypto.PublicKey) LookupOption { ... }
func LookupByCertificateSigner(key crypto.PublicKey) LookupOption { ... }

Directories

Path Synopsis
cmd module
examples module
internal
keyvalue
Package keyvalue implements an in-memory key-value store.
Package keyvalue implements an in-memory key-value store.
nat
net
simulation Module
pkg
did
dot
hyperspace/resolvermock
Package resolvermock is a generated GoMock package.
Package resolvermock is a generated GoMock package.
log
multiheader
Package multiheader generalizes the various multiformats by allowing adding and parsing a multicodec code to/from bytes without having or needing to care if the value is a cid/hash/addr/etc.
Package multiheader generalizes the various multiformats by allowing adding and parsing a multicodec code to/from bytes without having or needing to care if the value is a cid/hash/addr/etc.
networkmock
Package networkmock is a generated GoMock package.
Package networkmock is a generated GoMock package.
objectmanagermock
Package objectmanagermock is a generated GoMock package.
Package objectmanagermock is a generated GoMock package.
objectmanagerpubsubmock
Package objectmanagerpubsubmock is a generated GoMock package.
Package objectmanagerpubsubmock is a generated GoMock package.
objectstoremock
Package objectstoremock is a generated GoMock package.
Package objectstoremock is a generated GoMock package.
simulation Module
playground
tools

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL