An alternative full node implementation of LBRY's blockchain written in Go (golang)
Find a file
Owain G. Ainsworth 6c05e9d475 Flesh out addrmanger with some basic functionality.
Use it to add multiple peer support. We try and keep 8 outbound peers
active at all times.

This address manager is not as complete as the one in bitcoind yet, but
additional functionality is being worked on.

We currently handle (in a similar manner to bitcoind):

- biasing between new and already tried addresses based on number of connected
  peers.
- rejection of non-default ports until desparate
- address selection probabilities based on last successful connection and number
  of failures.
- routability checks based on known unroutable subnets.
- only connecting to each network `group' once at any one time.

We currently lack support for:
- tor ``addresses'' (an .onion address encoded in 64 bytes of ip address)
- full state save and restore (we just save a json with the list of known
  addresses in it)
- multiple buckets for new and tried addresses selected by a hash of address and
 source.  The current algorithm functions the same as bitcoind would with only
 one bucket for new and tried (making the address cache rather smaller than it
 otherwise would be).
2013-09-15 20:25:55 -05:00
.gitignore Convert .gitignore line endings to unix. 2013-08-07 15:00:20 -05:00
addrmanager.go Flesh out addrmanger with some basic functionality. 2013-09-15 20:25:55 -05:00
addrmanager_test.go Move btcd to root directory. 2013-08-07 12:47:51 -05:00
blockmanager.go Remove old regression test db in regtest mode. 2013-09-15 16:58:02 -05:00
btcd.go Flesh out addrmanger with some basic functionality. 2013-09-15 20:25:55 -05:00
config.go Use the new btcdb.SupportedDBs for known db types. 2013-09-15 15:21:46 -05:00
discovery.go Flesh out addrmanger with some basic functionality. 2013-09-15 20:25:55 -05:00
LICENSE Initial import. 2013-08-06 19:17:05 -05:00
logclosure.go Move log closure code into its own file. 2013-08-10 20:07:37 -05:00
mruinvmap.go Add block inventory relay. 2013-09-11 20:14:13 -05:00
params.go Rework the data path and db type handling. 2013-09-15 14:25:32 -05:00
peer.go Flesh out addrmanger with some basic functionality. 2013-09-15 20:25:55 -05:00
README.md Remove block relay from TODO list. 2013-09-12 09:15:38 -05:00
rpcserver.go Increment waitgroups before goroutines are started. 2013-09-12 17:24:37 -05:00
sample-btcd.conf Misc comment and doco cleanup. 2013-08-08 12:47:15 -05:00
server.go Flesh out addrmanger with some basic functionality. 2013-09-15 20:25:55 -05:00
signal.go Move btcd to root directory. 2013-08-07 12:47:51 -05:00
upgrade.go Rework the data path and db type handling. 2013-09-15 14:25:32 -05:00
version.go Rework the data path and db type handling. 2013-09-15 14:25:32 -05:00

btcd

btcd is an alternative full node bitcoin implementation written in Go (golang).

This project is currently under active development and is not production ready yet.

TODO

The following is a list of major items remaining before production release:

  • Implement multi-peer support
  • Implement transaction mempool & relay
  • Complete address manager
  • Documentation
  • A lot of code cleanup
  • Optimize