All Projects → nimona → go-nimona

nimona / go-nimona

Licence: MIT license
Peer to peer networking library

Programming Languages

go
31211 projects - #10 most used programming language
Jinja
831 projects
HTML
75241 projects
HCL
1544 projects
Makefile
30231 projects
Vue
7211 projects

Projects that are alternatives of or similar to go-nimona

PyPPSPP
Python implementation of Peer-to-Peer Streaming Peer Protocol (PPSPP) [RFC7574]
Stars: ✭ 18 (-57.14%)
Mutual labels:  peer-to-peer
fabric
Fabric is an experimental protocol for exchanging information.
Stars: ✭ 46 (+9.52%)
Mutual labels:  peer-to-peer
ipfs-chat
Real-time P2P messenger using go-ipfs pubsub. TUI. End-to-end encrypted texting & file-sharing. NAT traversal.
Stars: ✭ 84 (+100%)
Mutual labels:  peer-to-peer
p2p-forwarder
P2P Forwarder - a tool for farwarding tcp/udp ports. Made using libp2p.
Stars: ✭ 31 (-26.19%)
Mutual labels:  peer-to-peer
Peer2PeerTube
A live video streaming 💻 platform based on peer-to-peer architecture.
Stars: ✭ 27 (-35.71%)
Mutual labels:  peer-to-peer
haveno
Decentralized P2P exchange built on Monero and Tor
Stars: ✭ 542 (+1190.48%)
Mutual labels:  peer-to-peer
addon-zerotier
ZeroTier One - Home Assistant Community Add-ons
Stars: ✭ 103 (+145.24%)
Mutual labels:  peer-to-peer
libjuice
JUICE is a UDP Interactive Connectivity Establishment library
Stars: ✭ 197 (+369.05%)
Mutual labels:  peer-to-peer
gon2n
Go bindings, management daemons and CLIs for n2n edges and supernodes.
Stars: ✭ 67 (+59.52%)
Mutual labels:  peer-to-peer
airdrop
Relp ✨ A web messenger. Enjoy free text chat, voice call and file sharing ✔
Stars: ✭ 46 (+9.52%)
Mutual labels:  peer-to-peer
network-monorepo
Monorepo containing all the main components of Streamr Network.
Stars: ✭ 223 (+430.95%)
Mutual labels:  peer-to-peer
ParsecSoda
Parsec Soda is a custom open-source game streaming app that integrates with Parsec API and is focused in Host experience.
Stars: ✭ 135 (+221.43%)
Mutual labels:  peer-to-peer
nvim
Repository for the Tandem NeoVim Plugin
Stars: ✭ 23 (-45.24%)
Mutual labels:  peer-to-peer
school21
Как подготовиться к бассйну Школы 21: изучаем терминал, vim, работаем с gcc, norminette, git, пишем первую программу на Си.
Stars: ✭ 41 (-2.38%)
Mutual labels:  peer-to-peer
meteor-video-chat
Simple id based video calling in meteor
Stars: ✭ 33 (-21.43%)
Mutual labels:  peer-to-peer
TrackCOVID
An open source project which provides privacy-preserving contact tracing for communities using QR codes
Stars: ✭ 23 (-45.24%)
Mutual labels:  peer-to-peer
WiFi-Direct-File-Transfer-App
WiFi Direct File Transfer is a experimental app that will allow sharing of data between Android devices running Android 4.0 or higher using a WiFi direct connection without the use of a WiFi access point. This will enable data transfer between devices without relying on any existing network infrastructure
Stars: ✭ 88 (+109.52%)
Mutual labels:  peer-to-peer
The-Kademlia-Protocol-Succinctly
This is the companion repo for The Kademlia Protocol Succinctly by Marc Clifton. Published by Syncfusion.
Stars: ✭ 28 (-33.33%)
Mutual labels:  peer-to-peer
node-datachannel
Easy to use WebRTC data channels and media transport. libdatachannel node bindings.
Stars: ✭ 135 (+221.43%)
Mutual labels:  peer-to-peer
datachannel-wasm
C++ WebRTC Data Channels and WebSockets for WebAssembly in browsers
Stars: ✭ 77 (+83.33%)
Mutual labels:  peer-to-peer

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.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 { ... }
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].