• Stars
    star
    146
  • Rank 251,800 (Top 5 %)
  • Language
    Go
  • License
    MIT License
  • Created over 8 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Go implementation of a Kademlia distributed hash table

kademlia

GoDoc Go Report Card Build Status MIT licensed

This is a Go implementation of a vanilla Kademlia DHT. The implementation is based off of a combination of the original Kademlia whitepaper and the xlattice design specification. It does not attempt to conform to BEP-5, or any other BitTorrent-specific design.

This project has not been heavily battle-tested, and I would not recommend using it in any production environment at this time.

Implementation characteristics

  • uses uTP for all network communication
  • supports IPv4/IPv6
  • uses a well-defined Store interface for extensibility
  • supports STUN for public address discovery

TODO

  • Implement STUN for public address discovery
  • Load testing/Benchmarks
  • More testing around message validation
  • More testing of bad/malicious message handling
  • Banning/throttling of malicious messages/nodes
  • Implement UDP hole punching for NAT traversal
  • Use loose parallelism for iterative lookups
  • Consider breaking store into two messages and transfer bulk of data over TCP
  • Implement republishing according to the xlattice design document
  • Better cleanup of unanswered expected messages
  • Logging support

More Repositories

1

easystarjs

An asynchronous A* pathfinding API written in Javascript.
JavaScript
1,870
star
2

http-status-codes

Constants enumerating the HTTP status codes. All status codes defined in RFC1945 (HTTP/1.0, RFC2616 (HTTP/1.1), and RFC2518 (WebDAV) are supported.
TypeScript
929
star
3

hellobitcoin

A collection of simple programs which can generate bitcoin wallets, create and sign transactions, and send transactions over the bitcoin network.
Go
247
star
4

abidecoder

Kotlin and Java library for decoding data params and events from ethereum transactions
Kotlin
12
star
5

easystaras3

Asynchronous A* made simple in AS3.
ActionScript
9
star
6

blockchainparser

A blockchain parser written in go
Go
8
star
7

roguelikeboard

roguelikeboard.jsx is a simple react.js component for rendering ASCII inspired roguelike boards on the web
JavaScript
8
star
8

imp

Interfaces in JavaScript.
JavaScript
7
star
9

receiver

A simple and configurable deployment tool for github projects.
JavaScript
3
star
10

gridregions

A helper library based heavily on HPA* for tile-based game development
JavaScript
2
star
11

templ

An easier way to create and save language-agnostic project templates in OSX.
Ruby
2
star
12

saveplz.com

Saveplz is a RESTful open API for storing JSON data
Ruby
2
star
13

rugburn

A fast configuration-based caching web scraper written in Go
Go
2
star
14

deltadb

A proof-of-concept time-series database
Go
2
star
15

moremodernwebapptemplate

A more modern web app template
JavaScript
1
star
16

goeasystar

An A* pathfinding library written in Go.
Go
1
star
17

omeglevscleverbot

Omegle vs Cleverbot is a simple ruby program that pipes output from an omegle conversation, to cleverbot, and back.
Ruby
1
star
18

flashio

Reliable TCP socket connectivity from Flash to node.js
ActionScript
1
star
19

typescript-gamedev-template

Typescript Game Dev Template
JavaScript
1
star
20

typescript-nodejs-starter

A simple starter project for Typescript/node.js
JavaScript
1
star
21

ingestr

Ingestr is a Go microservice that consumes Ethereum blocks for enqueing into SNS and storage in S3
Go
1
star
22

blackjack

A simple API which allows a user to play blackjack against a dealer.
JavaScript
1
star
23

scriptcodes

All Bitcoin Script opcodes. For use in your bitcoin-related go projects.
Go
1
star