https://github.com/renproject/aw
A flexible P2P networking library for upgradable distributed systems.
https://github.com/renproject/aw
Last synced: about 1 year ago
JSON representation
A flexible P2P networking library for upgradable distributed systems.
- Host: GitHub
- URL: https://github.com/renproject/aw
- Owner: renproject
- License: mit
- Created: 2019-07-05T21:50:22.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2022-05-18T08:04:35.000Z (about 4 years ago)
- Last Synced: 2024-06-18T20:19:14.189Z (almost 2 years ago)
- Language: Go
- Homepage:
- Size: 3.91 MB
- Stars: 38
- Watchers: 16
- Forks: 18
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# `🌪 airwave`
[](https://godoc.org/github.com/renproject/aw)


[](https://coveralls.io/github/renproject/aw?branch=master)
[](https://opensource.org/licenses/MIT)
A flexible P2P networking library for upgradable distributed systems. The core mission of `airwave` is to provide a simple P2P interface that can support a wide variety of different algorithms, with a focus on backwards compatible. The P2P interface supports:
- Peer discovery
- Handshake
- Casting (send to one)
- Multicasting (send to many)
- Broadcasting (send to everyone)
### Handshake
Airwave uses a 3 way sync handshake method to authorize peers in the network. The process is as follows:

The client sends a signed rsa public key on connect. The server validates the signature, generates a random challenge, and sends the signed random challenge encrypted with the client's public key; and the server's public key. The client validates the server's signature decrypts the challenge encrypts it with the server's publickey, signs it and sends it back.
Built with ❤ by Ren.