:: [Libbitcoin] Library Update
Top Page
Delete this message
Reply to this message
Author: Eric Voskuil
Date:  
To: libbitcoin
Subject: [Libbitcoin] Library Update
Time for an update on libbitcoin progress.

@swansontec, @pmienk and @evoskuil (me) got together at Airbitz in San
Diego a couple of weeks ago to work on libbitcoin. The result is a draft
client-server protocol. The design objectives place a high priority on
privacy as well as performance, scalability, and developer efficiency.
This is a big deal and we are very excited to be pushing it forward.
This work is now available at:

https://github.com/libbitcoin/libbitcoin_protocol


I have pushed my SX fork into libbitcoin_explorer. As you can see from
the history this was an evolutionary set of changes, but at some point
it became a complete rewrite. As such I am not planning to push this
back into spesmilo/sx. I still have a good amount of work to do. I need
to write tests for a number of the commands (which means I don’t know If
they work), and the help is not fully-integrated, but the heavy lifting
is over. I wrote this up to help get my head around all of the command
interactions and to rationalize nomenclature and parameterization:

https://github.com/libbitcoin/libbitcoin.github.io/blob/master/libbitcoin-explorer-commands.pdf


The tool can be built as a single file executable for Linux and Windows
and we should soon have OSX tested. There is extensive documentation,
although I’m still writing:

https://github.com/libbitcoin/libbitcoin_explore


The network commands do not presently work with Obelisk. This is one of
the issues that we worked on in San Diego. By porting the commands to
@swansontec’s new libbitcoin_client library we able to get everything
working against the Airbitz Obelisk servers. So my plan at this point is
to swap out the Obelisk dependency in Explorer for the new client library:

https://github.com/libbitcoin/libbitcoin_client


The client is just the client portion of the interface whereas
previously we have had to link Obelisk, which caused SX to have to drag
in server dependencies. This change gets us closer to our objective of
splitting client and server interface implementations and aligning them
on a shared IDL-based protocol, using generated stubs. Along those lines
we have just forked Obelisk and @pmienk is beginning the process of
implementing the proposed protocol. The new fork is currently just a
clone of the Obelisk ‘develop’ branch:

https://github.com/libbitcoin/libbitcoin_server


As you are all aware, @genjix has been hard at work on a major
blockchain upgrade. Based on his numbers this should dramatically
increase performance and looking at the code it should also provide
significant advantages in simplification. This will eventually be linked
by libbitcoin_server as its database.

https://github.com/libbitcoin/libbitcoin_blockchain


As you can see from the repository names, we have adopted a boost-style
nomenclature. In keeping with that model, the libbitcoin repo is
becoming the base bitcoin utility library, handling curve, script, keys,
hashing, etc. Dedicated server code will live in libbitcoin_server. The
dependency chain for libbitcoin has therefore be reduced to just boost
and secp256k1 (elliptic curve) and libgmp (number library required by
secp256k1). Libwallet has these same dependencies and at this point
there is no reason to keep these distinct, so libwallet will be folded
into libbitcoin. This will happen shortly on the develop branch. Also,
I’ve recently transcribed the libbitcoin documentation to markdown and
made some updates:

https://github.com/libbitcoin/libbitcoin/tree/develop


I’ve added a Travis CI build to libbitcoin_explorer (on the ‘master’
branch) and another to libbitcoin (on the ‘develop’ branch). These are
the same build scripts that are provided for manual install, and contain
no conditionality. In other words we are testing what people will use to
install, at least until we have packages. We'll apply this over time to
the remaining repos. The explorer build exceeds the Travis 50 minute
limit, but otherwise works just fine. Travis is supposed to be dealing
with the time limit at some point. The libbitcoin build is working well too:

https://travis-ci.org/libbitcoin/libbitcoin
https://travis-ci.org/libbitcoin/libbitcoin_explorer


e