Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Documentation detailing difference to/migration from Bitcoin Core missing #208

Open
arnuschky opened this issue Jan 7, 2015 · 5 comments · Fixed by #220
Open

Documentation detailing difference to/migration from Bitcoin Core missing #208

arnuschky opened this issue Jan 7, 2015 · 5 comments · Fixed by #220

Comments

@arnuschky
Copy link

Unless I am mistaken, there's no document that clearly details the difference to Bitcoin Core, or describes a migration path. This would be really useful for people that consider moving away from Bitcoin Core.

Some questions this document might cover:

  • incompatibilities
  • differing default features and how to enable them
  • are there migration tools for Bitcoin Core's databases and wallets

I propose to collect related questions here to make writing this document easier.

@arnuschky
Copy link
Author

Question (the one that actually drove me to look for said document): We're currently using Bitcoin Core with -txindex=1. However, I don't have to explicitly enable the index in btcd, right? I couldn't find any location where this is said explicitly.

@davecgh
Copy link
Member

davecgh commented Jan 7, 2015

I don't believe there is a document, but that is a good idea. Given the various uses, providing a specific migration guide might prove challenging since that would largely depend on how it's being used, but documenting any major differences seems like a reasonable thing to do. It could be added to the documentation.

For now, I'll answer your questions here and perhaps it can become the start of such a document.

The biggest difference is the fact that btcd only provides chain services. All wallet functionality has intentionally been split into the separate btcwallet daemon. Bitcoin Core, on the other hand, currently combines everything into the daemon including both chain and wallet functionality (though I believe they have been working towards splitting the wallet functionality out as well). Bitcoin-qt also combines in wallet GUI functionality.

As far as chain services:

  • Incompatibilies:
    • The are no known incompatibilities in any of the core protocol or RPC calls.
    • However, btcd currently does not support JSON-RPC 2.0 batching mode which some things such as electrum use. btcd will be adding support for this in the near future.
  • Differing default features:
    • Bitcoin Core requires the -txindex=1 option to enable the transaction index. Btcd provides the transaction index by default and has no option to disable it.
    • Bitcoin Core does not have TLS protection enabled for RPC connections by default nor does it require it for remote connections. Btcd has TLS enabled by default and requires it for remote connections (non-localhost). TLS can be disable with btcd by using the --notls option, but only when listening solely on localhost interfaces.
    • Bitcoin Core requires the RPC server to be configured in order to start the daemon. Btcd runs without it and will only enable the RPC server once it has been configured.
  • Are there migration tools for bitcoind's databases and wallets?
    • There are currently no migration tools for converting the Bitcoin Core database directly to btcd. However, a tool is provided to import bootstrap.dat (https://github.com/btcsuite/btcd/blob/master/docs/using_bootstrap_dat.md). It would be possible to use the Bitcoin Core linearize.py script to create a new bootstrap.dat file and then use the btcd addblock utility to import it. That said, it's probably not worth the effort as it would most likely be faster to simply redownload the chain.
    • As mentioned above, btcd itself intentionally split the wallet functionality out of the core chain service daemon, so it does not have any wallet functionality, thus the wallet question does not apply directly. However, btcwallet does support the WIF format that is dumped from the Bitcoin Core wallet via the dumpprivkey RPC call. It can be imported with the same importprivkey RPC call that Bitcoin Core uses.
    • The differences in the Bitcoin Core wallet functionality and btcwallet really will probably end up needing its own document as btcwallet is different than Bitcoin Core's wallet in many ways, and it currently has open pull requests that will be bring a ton of new functionality to it such as BIP0032 hierarchical deterministic keys and proper accounts support which will be further differences.

Also, I'd like to point out that btcwallet is a daemon just like btcd. In other words, it's intended for programmatic access. That means it does not have a shiny GUI like Bitcoin-qt/Armory/etc that most end users are used to interfacing with. There is the btcgui project which is a proof of concept on how such a GUI can be built on top of btcwallet, however, since btcgui is only a proof of concept, it is no where near ready for end users.

@arnuschky
Copy link
Author

Wow, amazingly comprehensive answer (in such a short time). Thank you, that answers my question relating -txindex. Good to know for RPC with TLS, I can see this being a major trap when moving an existing (and insecure ;)) installation from Bitcoin Core to btcd.

@arnuschky arnuschky changed the title Documentation detailing difference to/migration from bitcoind missing Documentation detailing difference to/migration from Bitcoin Core missing Jan 8, 2015
davecgh added a commit to davecgh/btcd that referenced this issue Jan 11, 2015
The comment for the RPC listen section in the sample-btcd.conf incorrectly
claimed that the default for the RPC server listener is to listen on all
interfaces by default.  In reality, it only listens on localhost for IPv4
and IPv6 by default.

Refs btcsuite#208.
davecgh added a commit to davecgh/btcd that referenced this issue Jan 11, 2015
The comment for the RPC listen section in the sample-btcd.conf incorrectly
claimed that the default for the RPC server listener is to listen on all
interfaces by default.  In reality, it only listens on localhost for IPv4
and IPv6 by default.

Closes btcsuite#208.
@davecgh
Copy link
Member

davecgh commented Jan 11, 2015

This was not supposed to be closed.

@davecgh davecgh reopened this Jan 11, 2015
@manan19
Copy link

manan19 commented Feb 16, 2015

For a temporary solution,

set port=8339 in bitcoin.conf and start bitcoind
btcd --testnet --addpeer=127.0.0.1:8339 --maxpeers=1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants