1.5 KiB
1.5 KiB
bitcoind
Important Source Files
-
bitcoind.cpp - the main entry point,
main()
resides here. This callsAppinit()
.AppInit()
also resides here, it eventually ends up calling AppInit2() which is the most important entry point for what we're doing. AppInit2() will be the handler of$ bitcoind -server -daemon
.
-
init.cpp -
AppInit2()
resides here - this functions ends up callingStartNode()
which spawns all of the threads for network activity (accepts the mainthreadGroup
). -
net.cpp -
StartNode()
resides here - starts all network threads. -
main.cpp - misnamed file which handles all packet handling, framing and parsing.
Plan of Action
First Pass
- Successfully link to bitcoind from our, currently barebones, c++ binding.
- Expose one function from the c++ binding which essentially starts all the net.cpp threads and starts downloading the block chain and connecting to peers.
Second Pass
- Start exposing more functions - a fully function bitcoin library
- Reconcile the issues that may arise making certain calls async (libuv thread pool vs. bitcoind threads?)
Hurdles
- If we expect people to install and compile this, on one core on an i5, bitcoind takes roughly 30 minutes to compile.
git clean -xdf
git checkout v0.9.0
date | tee compile_time; ./autogen.sh
./configure --with-incompatible-bdb
make; date | tee -a compile_time
cat compile_time
Wed Aug 13 14:38:14 CDT 2014
Wed Aug 13 15:07:49 CDT 2014