#hash-table #peer #pulsar #routes #distributed #blockchain #astreuos

pulsar-network

Pulsar Network is a distributed hash table peer-to-peer communication protocol for the Astreuos Blockchain

16 releases (5 breaking)

0.8.0 May 3, 2022
0.7.0 Apr 11, 2022
0.6.1 Apr 5, 2022
0.5.3 Mar 26, 2022
0.1.2 Dec 9, 2021

#1 in #astreuos

MIT license

26KB
530 lines

Pulsar Network

Pulsar Network is the distributed hash table peer-to-peer communication protocol for the Astreuos Blockchain.

Features

  • send and receive messages between peers.
  • messages are contained in an envelope with the context, nonce, sender, route and time.
  • message encryption uses chacha20poly1305 and a x25519 blake3 flavor as the key.
  • peers can join the network by sending join requests and valid peers returning the nearest peers
  • peers can be pinged and respond with their public key and route supported.
  • currently supported routes are Astreuos blockchain main and test routes used for validation.

API

Client

use pulsar_network::{Client, Route};

let bootstrap = false;

let route = Route::Test

let seeders: Vec<SocketAddr>;

let client = Client::new(bootstrap, route, seeders);

for (message, peer) in client.messages() {
    println!("Got: {}", message.body);
}

Message

use pulsar_network::{Message, Kind};

let mut message = Message::new(Kind::Block, message_bytes);

Broadcast

network.broadcast(message);

Send

network.send(message, peer)

Improvements

  • multi-threading
  • ephemeral keys
  • bluetooth communication

Contributions

Pull requests, bug reports and any kind of suggestion are welcome.

2022-05-03

Dependencies

~5.5MB
~118K SLoC