Btcsuite: Code Migration and Btcd 0.10.0 Release

Code Migration

Code Migration

As many of you actively watching the btcd project are likely already aware, the project was recently migrated to a new organization on github named btcsuite. During this process, the core dependency packages were also combined into the main btcd repository.

Yeah, that’s me driving that truck … or at least it sure felt like it!

Why was the migration done?

The main motivation was that the entire btcd codebase is maturing to the point it deserves its own organization. We want to make it clear that the code is intended to be a community project and have multiple contributors. In addition, since the code was already being moved, we took the opportunity to combine several of the core package repositories into the main btcd repository which has several benefits discussed below.

Some benefits of these changes are:

  • Issue tracking is now consolidated into the btcd issue tracker and is therefore easier for all parties involved to stay on top of them
  • Pull requests that require changes in more than one of the core packages are now feasible which improves the QA loop since it allows the continuous integration builds to complete and provides a unified view of all relevant changes
  • Reconstructing older versions is now much easier to do
  • The initial download and compile of btcd is now faster since there are less repositories to download
  • Alt-coin developers who want to try out experimental features have a lot less work and renaming to do now since most of the core packages were renamed to names which do not include the btc prefix
  • Fetching updates to the btcd repository now also updates all of the core dependency packages which means it’s no longer possible for a user to unintentionally update btcd while not updating the core dependency packages

What about the cons?

The only notable con we can think of is the following:

  • When a 3rd-party wants to use one of the sub-packages, say the txscript package, they have to download the entire btcd repository instead of only the txscript repository. However, we don’t feel like this is a big issue since the resulting binary will only contain the necessary deps and nothing more. It’s simply a matter of binary maintainers downloading more data than they would have to with a different repo per package for the initial build.

Overview of New Package Locations and Names

All of the old packages have been moved from the Conformal organization to the btcsuite organization.

In addition, the following packages have been renamed and merged into the main btcd repository:

Old Package New Package Description
btcwire wire Implements the Bitcoin wire protocol
btcnet chaincfg Defines chain configuration parameters for the three standard Bitcoin networks and provides the ability for callers to define their own custom Bitcoin networks
btcdb database Provides a database interface for the Bitcoin block chain
btcchain blockchain Implements Bitcoin block handling and chain selection rules
btcscript txscript Implements the Bitcoin transaction scripting language
btcec btcec Implements support for the elliptic curve cryptographic functions needed for the Bitcoin scripts
btcjson btcjson Provides an extensive API for the underlying JSON-RPC command and return values
btcws btcws Provides custom types for btcd websocket extension commands (registers the extension commands with btcjson)

New Maintenance Entity

To date, Conformal Systems LLC has maintained btcd and its related projects. Moving forward, maintenance and ongoing development for the btcsuite project will be performed by Company 0 LLC.

New Release of btcd – Version 0.10.0

The blog post also coincides with a new release of the main btcd daemon. The detailed release notes and updated Windows binaries are located here.

Leave a Reply

Your email address will not be published. Required fields are marked *


9 − seven =

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>