bitcoin 32bit vs 64bit

Or choose your operating system Windows 64 bit - 32 bit Windows (zip) 64 bit - 32 bit Mac OS X dmg - tar.gz Linux (tgz) 64 bit - 32 bit ARM Linux 64 bit - 32 bit Ubuntu (PPA) Verify release signatures Download torrent Source code Show version history Bitcoin Core Release Signing Keys v0.8.6 - 0.9.2.1 v0.9.3 - 0.10.2 v0.11.0+ Bitcoin Core initial synchronization will take time and download a lot of data.You should make sure that you have enough bandwidth and storage for the full block chain size (over 145GB).If you have a good Internet connection, you can help strengthen the network by keeping your PC running with Bitcoin Core and port 8333 open.Read the full node guide for details.Bitcoin Core is a community-driven free software project, released under the MIT license.Projects and procedures to build Bitcoin Core with MS Visual Studio 1.0 - 7/2/15 - initial release for Bitcoin Core 0.10.2 with Visual Studio 2013 1.1 - 11/6/15 - support for Bitcoin Core 0.11.1 with Visual Studio 2013 (includes OpenSSL 1.0.2d) 1.2 - 11/7/15 - support miniupnpc-1.9.20151026 (fixes buffer overrun vulnerability) 1.3 - 3/5/16 - support for Bitcoin Classic 0.11.2 with Visual Studio 2013 There are three parts to this readme.
The first part is a rant.Please feel free to skip :) The second part is a cookbook for building Bitcoin Core with Microsoft Visual Studio.This Git repository includes the project files you'll need to do this.The third part talks about initializing the blockchain.In which an intrepid engineer sets out to build Bitcoin Core from scratch, encounters a minefield of issues, emerges victorious after a long series of battles, and celebrates by writing about his experience.So, there are a million development environments lying around, different languages, platforms, and various tools for creating software.But there is one which is kind of the default, Microsoft Visual Studio for C++.(The second would be Apple XCode for Objective C, and if there were a third, it would be IBM Eclipse for Java...)When Satoshi Nakamoto developed the first Bitcoin client (now called Bitcoin Core), back in 2008, he used Microsoft Visual Studio for C++ (MSVC).It was the logical choice.Subsequently this code has been ported to Linux (of course), and Mac OS, and a variety of other platforms (even iPhone and Android), but naturally Microsoft Visual Studio remains the baseline.
Actually that's not true.MSVC is no longer even supported as a development environment!Way back in 2013 Bitcoin Core was ported away from MSVC to the "MinGW toolchain"*.And now woa betide you should you desire to build Bitcoin Core with MSVC.You are not only on your own, but you are facing a whole series of hurdles.To give you a flavor of the problems, Bitcoin core might be written in C++, but it now takes a lot more than C++ to build it.In addition to MinGW for C++ one needs Perl, Python, and Ruby compilers (specific versions please, to ensure compatibiity), as well as a lot of big ancillary libraries.Even figuring out what external stuff is required is not easy; for the record, we need: Each of these has its own source code stored somewhere on the Internet, each has its own configuration, building, and configuration scripts, and each has its own pattern for how source, object, libraries, and executables should be arranged.Let's not talk about compiler options, static vs dynamic linking, debug vs release builds, etc.
And let's not even talk about 32-bit vs 64-bit.Well okay we will talk about all of these things.ethereum multiple gpu miningBerkeleyDB is fortunately a simple case.local bitcoin helsinki/berkeley-db, and includes template MSVC project files.bitcoin kaufen mit mastercardOf course, the templates are for VS2008, so some adjustment is required to VS2013.gh/s to bitcoin calculator///madler/zlib.git, and we make up MSVC projects to build them.litecoin best mining rigAfter a bit of futzing, poof, they build.litecoin bitcoin profitability
At least they are vanilla C++!Nowhere does it tell you that you need these things, where to get them, or how to build them.bitcoin tx boosterOnward... Boost is ... huge.bitcoin cheat sheet/boostorg/boost.git; it comprises over 40,000 files and requires about 1.5GB on disk, before any compiling or linking.ethereum price 2030Fortunately most of Boost is implemented solely in class headers, which means the functionality is compiled right into your code.No libraries, no building, no linking.But you will have noticed that I said "most", not "all", and as it turns out there are pieces of Boost which do require compiling and linking into libraries, and some of those pieces are used by Bitcoin Core.So yeah, we have to make an MSVC project to do this, and no, it wasn't that easy.
I kind of punted and made a MSVC project which ran a PowerShell script that came with Boost to do most of the making.The biggest challenge was that Boost was designed to be built for 32-bit or 64-bit, but not both on the same machine.So some assembly was required.Okay, what can we say about OpenSSL?It is the absolute standard and of course it makes sense to use it, but somehow the maintainers have turned it into much more than a simple library.Although it is written in C++ and compiles and links into static libraries, the build process requires Perl and Python.I cannot imagine the sequence of events which led to this, well actually, I can, and I am thinking dirty thoughts about the maintainers who allowed such impurity to pollute their pond.Making matters worse, OpenSLL is under active development, so you have to plan on downloading the latest all the time, and rerunning the whole Rube Goldberg build process.As with Boost I made a MSVC project which runs a PowerShell script that comes with OpenSSL.
After serious futzing it works, but it feels quite brittle.Not totally happy with this, but IIWII.Now allow me to make a brief digression to talk about Bitcoin Core itself.Oh yeah, that thing we were building :) Bitcoin Core consists of four executables: So basically you can run bitcoind as a daemon/service, and talk to it with bitcoin-cli and bitcoin-tx, or you can run bitcoin-qt, and have all the functionality of a "full node" including a simple wallet, all in one graphic program.The four executables together comprise "Bitcoin Core".So having successfully fetched/built/compiled/linked/installed BerkeleyDB, Boost, libQREncode, MinUPnPC, protobuf, OpenSSL, and zlib, we can now make bitcoind, bitcoin-cli, and bitcoin-tx.//fsb4000/bitcoin.git), fixing them so they work, updating them, and running them.After sufficient time has elapsed, woo hoo we have a working Bitcoin Code "full node".That was pretty exciting... Now onward, to creating bitcoin-qt.How hard could it be?The rationale behind the Qt framework is pretty defensible.
Back in the day it was created to enable sophisticated fully-functional graphical user interfaces to be created in C++ programs, deployable across a wide variety of platforms, with "native" look and feel on each one.Given that, it is easy to see why Satoshi chose it to build Bitcoin Core.But unfortunately Qt has grown beyond its initial target into a giant unwieldy framework, with its own configuration and installation processes, its own makefile, and its own language and interface preprocessors.All of which requires Perl, Python, and Ruby to install.I cannot imagine that anyone would use it for anything new, it is just too hard to figure out*.Not to mention it comprises 150,000 files and 3.5GB, I kid you not.Having downloaded Qt from here: http://download.qt.io/official\_releases/qt, and having configured and installed it (many, many times, each time with slightly different parameters), whew, it worked.Where by "worked" I mean, I was able to build and link together a working bitcoin-qt.
To give you a feel for the type of arcana involved, under Windows you have to choose how wchar_t is defined; is it a native type or a macro.Naturally the default for OpenSLL conflicted with the default for Qt, and naturally this caused strange linker errors.Another example: the Bitcoin Core modules which interface to Qt have to have numerous preprocessor symbols defined to guide the Qt macros, and they are not well documented and in some cases conflict.You have to tell Qt that yes, you have SSL, and yes, you are using OpenSSL, and yes, you have static linking, and yes, you have a Windows plugin available for it and no, the plugin is not a plugin, because it is statically linked.As you go through this process, you have to make a bunch of decisions, like do you want to use ANGLE or OpenGL?(Who knows, but the right answer was the non-default choice, OpenGL.)At one point I had a completely functional bitcoin-qt (yay!)but it required Qt DLLs to run (boo!), and that was of course ... bogus.Another great thing* is that with Qt, there's some preprocessing involved with their proprietary compiler and interface builder.
All those commands are undocumented, which makes doing anything with them ... challenging.So I took the entire chunk of Qt preprocessor stuff and stuck it in a PowerShell .bat file which has to be run stand-alone before building Bitcoin Core.It's ugly but it works.I have no doubt that new versions of Bitcoin Core will have changes to these commands, so it represents a maintenance crummy-ness, but for now IIWII.After all that, I finally built a stand-alone bitcoin-qt.exe which runs and works.But of course, that was a 32-bit stand-alone bitcoin-qt.exe.Ha... Into 64-bit land we go.So all of the libraries except Boost and Qt were pretty easy to compile for 64-bit.(Boost and Qt of course being the biggest and most complicated ... Miraculously, OpenSLL "just worked" for 64-bit compiling, yay.)Boost was a relatively simple* matter of changing the PowerShell script to put 32-bit and 64-bit libraries into separate directories.Since most of Boost is simply headers, this actually only affected a teeny part of the library as a whole, and worked.
Qt is not 64-bit aware (we've had 64-bit processors for 20 years now!).Anyway my first effort was simply to configure, build, and install the entire thing from scratch as 64-bit, using the MSVC 64-bit compiler.There are a few compiler switches which had to be tuned, and then it actually did work.And I actually did have a 64-bit Qt.However I no longer had a 32-bit Qt anymore.So I ended up installing Qt twice, and configuring, building, and installing it twice, once for 32-bit and once for 64-bit.Since it is so small and simple and doesn't take very long to install, this was easy.Actually I'm kidding, it is huge and complicated and takes hours to install, so this was not easy, but it was done.And lo and behold we can now build 32-bit and 64-bit versions of bitcoin-qt.Hero emerges more victorious.In case it is of use to a future would-be developer, here is the sequence of steps to recreate my path (I've omitted all the false starts, cul de sacs, and tears): Okay, let's start with the desired directory layout.
Let's assume there's a place you want to put everything called .You will end up with the following: This directory structure is important, because there are a lot of relative paths in the MSVC projects.If you've cloned this repo you will have the start of the directory structure, and the MSVC solution and project files.Now it's time to get all the source code from everywhere./bitcoin/bitcoin.git to: \bitcoin You might want to name it per its current version, and create a link from "bitcoin" to the current version.That's what I did.For example, if the current version is 0.11.1, you could name the directory bitcoin-0.11.1 and then >mklink /j bitcoin bitcoin-0.11.1 /berkeley-db and unzip it to: \external\berkeleydb You might want to name it for it's version and create a link, e.g.unzip to db-4.8.30.NC, then >mklink /j berkeleydb db-4.8.30.NC (Note that db-4.8.30.NC is NOT the current version, but it is the version recommended for use with Bitcoin Core...)
/boostorg/boost.git to: \external\boost You might name it boost_1.56.0 and then >mklink /j boost boost_1.56.0 /google/protobuf/releases/download to: \external\protobuf You might name it protobuf-2.6.1 and then >mklink /j protobuf protobuf-2.6.1 /works/qrencode and unzip to: \external\qrencode Maybe name it qrencode-3.4.4 and >mklink /j qrencode qrencode-3.4.4 Download the MiniUPnPc source http://miniupnp.free.fr/files/download.php to: \external\miniupnp Maybe name it miniupnpc-1.9.20151026 and >mklink /j miniupnpc miniupnpc-1.9.20151026 /openssl/openssl.git to: \external\openssl Maybe name it openssl-1.0.2d and >mklink /j openssl openssl-1.0.2d /madler/zlib.git to: \external\zlib Maybe name it zlib_1.2.8 and >mklink /j zlib zlib_1.2.8 Yay, you have all the source code!No actually you don't, we haven't retrieved Qt yet.And we also need a couple of tools for OpenSLL: to download and install Active State Perl.
It can go anywhere but the default is c:\perl64 for the x64 version.It will update your PATH to include this directory.NB I used v5.20.2.2001 for x64. to download and install it.It can go anywhere but the default is c:\python27 for v2.7.NB I used v2.7.10 for x64.For Bitcoin Core 0.11.1, there are a few of tweaks required to the source code in order to get the C++ to compile.Create an empty file named /bitcoin/src/leveldb/include/unistd.h this file is never present for Windows, but some of the source expects it Modify the system header \Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\crtdefs.h right below where size_t is defined, add this typedef __int64 ssize_t; this type is never present for Windows, but some of the source expects it Modify \bitcoin\src\chainparams.cpp in three places, remove the (Checkpoints::CCheckpointData) casts they are not needed and while they appear correct, they cause compile errors (!)Let's build all the external libraries.
Launch VS 2013, open the \external\bitcoinExternal.sln solution, and build all of the external libraries.Each one has a separate project in this solution.You can build them each for two platforms, win32 and x64, and two configurations, Debug and Release.If all went well, this will all work.The diciest parts are the shell scripts for Boost and OpenSLL.Yay, we're making progress.Now let's make Bitcoin Core.From within VS 2013, load the \bitcoin\bitcoin.sln solution.This has a number of projects, including four for each of the executables.At this point go ahead and build bitcoin-cli, bitcoind, and bitcoin-tx.As with the external libraries you can build each one for each of the two platforms and configurations.Hold off on bitcoin-qt for now.This should work, and you now have a working version of bitcoind, and you can talk to it with bitcoin-cli and bitcoin-tx.It's possible this is all you wanted, because you want to run a "full node" on a server; if so, you'd done!Congratulations and take the rest of this readme off.
However if you want the Bitcoin Core GUI, then ... here we go.Download the Qt source http://download.qt.io/official_releases/qt and unzip it to: \external\qt As above, name it qt-opensource-5.4.2 and >mklink /j qt qt-opensource-5.4.2 (This takes a long time, it is a huge library...)Okay, now launch a Visual Studio 2013 x64 shell.This can be done from the Visual Studio Tools folder in the start menu.Now: Congratulations, you've made 64-bit Qt.After make completes... Now, if you also want to make 32-bit Qt, you can do so, by doing the following... Launch a Visual Studio 2013 x86 shell.Again, from the Visual Studio Tools folder.Then: Congratulations, you've made 32-bit Qt.After make completes... Whew.Now we're finally ready to make bitcoin-qt.To start we have to preprocess a bunch of Qt source and interface definitions.This has been packaged as a BAT file which ships in this repo alongside the project files.The script runs Qt tools lcreate (language translator), moc (meta-object compiler), and rcc (resource compiler, as well as a tool called protoc which is built as part of Google's Protocol Buffers.
Open a Visual Studio 2013 x86 shell, and: Normally you would only do this once.If you change anything in the user interface - by editing the Qt forms, etc - then you should rerun this batch file before rebuilding.In principle this batch file could be a prebuild step in the Visual Studio project, but it seemed easier to break it out.Now launch VS 2013 again, and open the \bitcoin\bitcoin.sln solution.And then ... try building it!You should be able to build it for both platforms and both configurations.Note that the output executables can be found in \bitcoin\bin Now that you have a working Bitcoin Core, you will be confronted with the problem of initializing your blockchain.Every "full node" has to have a copy of the entire blockchain, and there are only two ways to get it; you can simply run the node for a while to request all the blocks from peers in the network, or you can initialize it from a known good copy*.When Bitcoin Core 0.10 was released one of the cool new features was the ability to use multiple peers to initialize the blockchain concurrently, supposedly making initializing your copy of the blockchain with a torrent or something like unnecessary.