v1/main
branch soon.
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.
- go 1.18+ with modules enabled
- Make
git clone https://github.com/nimona/go-nimona.git go-nimona
cd go-nimona
make deps
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.
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)
}
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 { ... }