An alternative full node implementation of LBRY's blockchain written in Go (golang)
Find a file
Dave Collins 9880cf4646 Improve chain notification handling.
Previously a new goroutine was launched for each notification in order to
avoid blocking chain from continuing while the notification is being
processed.  This approach had a couple of issues.

First, since goroutines are not guaranteed to execute in any given order,
the notifications were no longer handled in the same order as they were
sent.  For the current code, this is not a problem, but upcoming code that
handles a transaction memory pool, the order needs to be correct.

Second, goroutines are relatively cheap, but it's still quite a bit of
overhead to launch 3-4 goroutines per block.

This commit modifies the handling code to have a single sink executing in
a separate goroutine.  The main handler then adds the notifications to a
queue which is processed by the sink.  This approach retains the
non-blocking behavior of the previous approach, but also keeps the order
correct and, as an additional benefit, is also more efficient.
2013-09-28 22:13:22 -05:00
.gitignore Convert .gitignore line endings to unix. 2013-08-07 15:00:20 -05:00
addrmanager.go Add AMGR prefix to log messages for consistency. 2013-09-18 11:21:19 -05:00
addrmanager_test.go Move btcd to root directory. 2013-08-07 12:47:51 -05:00
blockmanager.go Improve chain notification handling. 2013-09-28 22:13:22 -05:00
btcd.go Address some minor things reported by golint. 2013-09-18 00:36:40 -05:00
config.go Address some minor things reported by golint. 2013-09-18 00:36:40 -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 Move the inventory handling from peer into blockmanager. 2013-09-27 01:51:05 +01:00
README.md Remove block relay from TODO list. 2013-09-12 09:15:38 -05:00
rpcserver.go Address some minor things reported by golint. 2013-09-18 00:36:40 -05:00
sample-btcd.conf Update sample config for recent go-flags fix. 2013-09-19 09:17:15 -05:00
server.go Updated missed function call for lint rename. 2013-09-18 11:25:18 -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