diff --git a/notes.md b/notes.md new file mode 100644 index 00000000..08836185 --- /dev/null +++ b/notes.md @@ -0,0 +1,49 @@ +# bitcoind + +## Important Source Files + +- **bitcoind.cpp** - the main entry point, `main()` resides here. This calls + `Appinit()`. + + - `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 calling + `StartNode()` which spawns all of the threads for network activity (accepts + the main `threadGroup`). + +- **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. + +``` bash +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 +```