Categorynimona.io
module
0.0.0-20221006195521-8ec79adc037f
Repository: https://github.com/nimona/go-nimona.git
Documentation: pkg.go.dev

# README

nimona

a new internet stack; or something like it.

⚠️ Note: Nimona's architecture is getting an ovehaul based on the findings of the first version and more information should be popping up in the v1/main branch soon.


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.18+ 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 LookupByDigest(hash tilde.Digest) LookupOption { ... }
func LookupByDID(id did.DID) LookupOption { ... }

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author