diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2011-09-28 21:52:32 +0200 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2011-09-28 21:52:32 +0200 |
commit | 002a4dcad0c0f74b1063cf27f0a9550d5e56c3f0 (patch) | |
tree | 58a16a226571a80537bfa7e3b1147aa4d0ee8767 /doc | |
parent | a8b95ce6ed5e84d34748ecdd0ff1db4d03377cf0 (diff) | |
parent | 4dcad1d294e264a81280fd007d1508d9bd4f0273 (diff) | |
download | bitcoin-002a4dcad0c0f74b1063cf27f0a9550d5e56c3f0.tar.xz |
Merge branch 'master' of https://github.com/bitcoin/bitcoin
Conflicts:
.gitignore (used upstream version)
bitcoin-qt.pro
Diffstat (limited to 'doc')
-rw-r--r-- | doc/README | 2 | ||||
-rw-r--r-- | doc/README_windows.txt | 2 | ||||
-rw-r--r-- | doc/build-msw.txt | 21 | ||||
-rw-r--r-- | doc/build-osx.txt | 102 | ||||
-rw-r--r-- | doc/build-unix.txt | 77 | ||||
-rw-r--r-- | doc/readme-qt.rst | 162 | ||||
-rw-r--r-- | doc/release-process.txt | 74 |
7 files changed, 287 insertions, 153 deletions
diff --git a/doc/README b/doc/README index 772fd7f31e..789cc9fb87 100644 --- a/doc/README +++ b/doc/README @@ -1,4 +1,4 @@ -Bitcoin 0.4.0rc1 BETA +Bitcoin 0.4.1 BETA Copyright (c) 2009-2011 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying diff --git a/doc/README_windows.txt b/doc/README_windows.txt index 8378ae50d8..7ff8834920 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,4 +1,4 @@ -Bitcoin 0.4.00rc1 BETA
+Bitcoin 0.4.1 BETA
Copyright (c) 2009-2011 Bitcoin Developers
Distributed under the MIT/X11 software license, see the accompanying
diff --git a/doc/build-msw.txt b/doc/build-msw.txt index d08e3a23b7..f3150e086e 100644 --- a/doc/build-msw.txt +++ b/doc/build-msw.txt @@ -7,6 +7,9 @@ cryptographic software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. +See readme-qt.rst for instructions on building Bitcoin QT, the +graphical user interface. + WINDOWS BUILD NOTES =================== @@ -27,39 +30,24 @@ Dependencies Libraries you need to download separately and build: default path download -wxWidgets \wxwidgets-2.9.2-mgw http://www.wxwidgets.org/downloads/ OpenSSL \openssl-1.0.0d-mgw http://www.openssl.org/source/ Berkeley DB \db-4.8.30.NC-mgw http://www.oracle.com/technology/software/products/berkeley-db/index.html Boost \boost-1.47.0-mgw http://www.boost.org/users/download/ miniupnpc \miniupnpc-1.6-mgw http://miniupnp.tuxfamily.org/files/ Their licenses: -wxWidgets LGPL 2.1 with very liberal exceptions OpenSSL Old BSD license with the problematic advertising requirement Berkeley DB New BSD license with additional requirement that linked software must be free open source Boost MIT-like license miniupnpc New (3-clause) BSD license Versions used in this release: -wxWidgets 2.9.2 OpenSSL 1.0.0d Berkeley DB 4.8.30.NC Boost 1.47.0 miniupnpc 1.6 -Notes ------ -The UI layout is edited with wxFormBuilder. The project file is -uiproject.fbp. It generates uibase.cpp and uibase.h, which define base -classes that do the rote work of constructing all the UI elements. - -wxWidgets ---------- -DOS shell: -cd \wxWidgets-2.9.2-mgw\build\msw -mingw32-make -f makefile.gcc - OpenSSL ------- MSYS shell: @@ -98,6 +86,5 @@ Bitcoin ------- DOS prompt: cd \bitcoin\src -mingw32-make bitcoin.exe bitcoind.exe -f makefile.mingw -strip bitcoin.exe +mingw32-make bitcoind.exe -f makefile.mingw strip bitcoind.exe diff --git a/doc/build-osx.txt b/doc/build-osx.txt index 52d876d82b..ac67080c3a 100644 --- a/doc/build-osx.txt +++ b/doc/build-osx.txt @@ -8,11 +8,14 @@ software written by Eric Young (eay@cryptsoft.com) and UPnP software written by Thomas Bernard. -Mac OS X build instructions +Mac OS X bitcoind build instructions Laszlo Hanyecz <solar@heliacal.net> Douglas Huff <dhuff@jrbobdobbs.org> +See readme-qt.rst for instructions on building Bitcoin QT, the +graphical user interface. + Tested on 10.5 and 10.6 intel. PPC is not supported because it's big-endian. All of the commands should be executed in Terminal.app.. it's in @@ -32,7 +35,6 @@ structure I use looks like this: ~/bitcoin/bitcoin # Upstream source tree ~/bitcoin/src # source code (symlink to ~/bitcoin/bitcoin/src) ~/bitcoin/deps # dependencies.. like libraries and headers needed to compile -~/bitcoin/Bitcoin.app # the application bundle where you can run the app Just execute: mkdir ~/bitcoin This will create the top dir for you.. @@ -180,99 +182,7 @@ cd db-4.8.30/build_unix ../dist/configure --prefix=/Users/macosuser/bitcoin/deps --enable-cxx && make && make install -wxWidgets ---------- - -(The wxWidgets-devel MacPorts package will work but will throw annoying assertion dialogs.) - -This is the big one.. - -Check it out from svn - -cd ~/bitcoin/deps -svn checkout http://svn.wxwidgets.org/svn/wx/wxWidgets/trunk wxWidgets-trunk - -This will make a wxWidgets-trunk directory in deps. - -Use this script snippet, change your prefix to whatever your dir is: - -PREFIX=~/bitcoin/deps -SRCDIR="$PREFIX/wxWidgets-trunk" -BUILDDIR="$SRCDIR/macbuild" - -cd "$PREFIX" && -#svn checkout http://svn.wxwidgets.org/svn/wx/wxWidgets/trunk wxWidgets-trunk && -cd "$SRCDIR" && - -[ -f include/wx/hashmap.h.orig ] || cp include/wx/hashmap.h include/wx/hashmap.h.orig && -sed 's/if wxUSE_STL/if 0 \&\& wxUSE_STL/g' < include/wx/hashmap.h.orig > include/wx/hashmap.h && - -[ -f include/wx/hashset.h.orig ] || cp include/wx/hashset.h include/wx/hashset.h.orig && -sed 's/if wxUSE_STL/if 0 \&\& wxUSE_STL/g' < include/wx/hashset.h.orig > include/wx/hashset.h && - - - -rm -vrf "$BUILDDIR" && -mkdir "$BUILDDIR" && -cd "$BUILDDIR" && - -../configure --prefix="$PREFIX" \ ---with-osx_cocoa \ ---disable-shared \ ---disable-debug_flag \ ---with-macosx-version-min=10.5 \ ---enable-stl \ ---enable-utf8 \ ---enable-universal_binary \ ---with-libjpeg=builtin \ ---with-libpng=builtin \ ---with-regex=builtin \ ---with-libtiff=builtin \ ---with-zlib=builtin \ ---with-expat=builtin \ ---with-macosx-sdk=/Developer/SDKs/MacOSX10.5.sdk && - - -find . -name Makefile | -while read i; do - echo $i; - sed 's/-arch i386/-arch i386 -arch x86_64/g' < "$i" > "$i".new && - mv "$i" "$i".old && - mv "$i".new "$i"; -done - - - -make && -make install - - - -Now you should be able to build bitcoin +Now you should be able to build bitcoind: cd ~/bitcoin/src -make -f makefile.osx bitcoin - -Before you can run it, you need to create an application bundle for Mac OS. - -A bundle is provided in contrib/Bitcoin.app. - -Copy the bitcoin binary in to it like this: - cp -pR ~/bitcoin/bitcoin/contrib/Bitcoin.app ~/bitcoin/ - cp ~/bitcoin/src/bitcoin ~/bitcoin/Bitcoin.app/Contents/MacOS/ - -To run it you can just click the Bitcoin.app in Finder, or just do: -open ~/bitcoin/Bitcoin.app - -If you want to run it with arguments you can just run it without backgrounding -by specifying the full name in terminal: - -~/bitcoin/Bitcoin.app/Contents/MacOS/bitcoin -addnode=192.75.207.66 - -You can also run it with arguments in the background with output going to the -normal places for apps (Console) like this: - -open ~/bitcoin/Bitcoin.app --args -connect=192.75.207.66 - -It is advisable to relocate Bitcoin.app to /Applications or $HOME/Applications. - +make -f makefile.osx bitcoind diff --git a/doc/build-unix.txt b/doc/build-unix.txt index 4ecf15aa33..b7aa7112b4 100644 --- a/doc/build-unix.txt +++ b/doc/build-unix.txt @@ -1,4 +1,5 @@ Copyright (c) 2009-2010 Satoshi Nakamoto +Copyright (c) 2011 Bitcoin Developers Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php. This product includes software developed by the OpenSSL Project for use in @@ -14,16 +15,14 @@ To Build -------- cd src/ +make -f makefile.unix # Headless bitcoin -make -f makefile.unix # Bitcoin with wxWidgets GUI - or -make -f makefile.unix bitcoind # Headless bitcoin - +See readme-qt.rst for instructions on building Bitcoin QT, +the graphical bitcoin. Dependencies ------------ sudo apt-get install build-essential -sudo apt-get install libgtk2.0-dev sudo apt-get install libssl-dev sudo apt-get install libdb4.8-dev sudo apt-get install libdb4.8++-dev @@ -32,12 +31,6 @@ or Boost 1.37: sudo apt-get install libboost1.37-dev If using Boost 1.37, append -mt to the boost libraries in the makefile. -Requires wxWidgets 2.9.1 or newer. - -You need to download wxWidgets from http://www.wxwidgets.org/downloads/ -and build it yourself. See the build instructions and configure parameters -below. - Requires miniupnpc for UPnP port mapping. It can be downloaded from http://miniupnp.tuxfamily.org/files/. UPnP support is compiled in and turned off by default. Set USE_UPNP to a different value to control this: @@ -46,7 +39,6 @@ USE_UPNP=0 (the default) UPnP support turned off by default at runtime; USE_UPNP=1 UPnP support turned on by default at runtime. Licenses of statically linked libraries: -wxWidgets LGPL 2.1 with very liberal exceptions Berkeley DB New BSD license with additional requirement that linked software must be free open source Boost MIT-like license miniupnpc New (3-clause) BSD license @@ -54,7 +46,6 @@ miniupnpc New (3-clause) BSD license Versions used in this release: GCC 4.3.3 OpenSSL 0.9.8g -wxWidgets 2.9.2 Berkeley DB 4.8.30.NC Boost 1.37 miniupnpc 1.6 @@ -62,28 +53,10 @@ miniupnpc 1.6 Notes ----- -The UI layout is edited with wxFormBuilder. The project file is -uiproject.fbp. It generates uibase.cpp and uibase.h, which define base -classes that do the rote work of constructing all the UI elements. - The release is built with GCC and then "strip bitcoin" to strip the debug symbols, which reduces the executable size by about 90%. -wxWidgets ---------- -cd /usr/local -tar -xzvf wxWidgets-2.9.2.tar.gz -cd wxWidgets-2.9.2 -mkdir buildgtk -cd buildgtk -../configure --with-gtk --enable-debug --disable-shared --enable-monolithic --without-libpng --disable-svg -make -sudo su -make install -ldconfig - - miniupnpc --------- tar -xzvf miniupnpc-1.6.tar.gz @@ -106,3 +79,45 @@ If you need to build Boost yourself: sudo su ./bootstrap.sh ./bjam install + + +Security +-------- +To help make your bitcoin installation more secure by making certain attacks impossible to +exploit even if a vulnerability is found, you can take the following measures: + +* Position Independent Executable + Build position independent code to take advantage of Address Space Layout Randomization + offered by some kernels. An attacker who is able to cause execution of code at an arbitrary + memory location is thwarted if he doesn't know where anything useful is located. + The stack and heap are randomly located by default but this allows the code section to be + randomly located as well. + + On an Amd64 processor where a library was not compiled with -fPIC, this will cause an error + such as: "relocation R_X86_64_32 against `......' can not be used when making a shared object;" + + To build with PIE, use: + make -f makefile.unix ... -e PIE=1 + + To test that you have built PIE executable, install scanelf, part of paxutils, and use: + scanelf -e ./bitcoin + + The output should contain: + TYPE + ET_DYN + +* Non-executable Stack + If the stack is executable then trivial stack based buffer overflow exploits are possible if + vulnerable buffers are found. By default, bitcoin should be built with a non-executable stack + but if one of the libraries it uses asks for an executable stack or someone makes a mistake + and uses a compiler extension which requires an executable stack, it will silently build an + executable without the non-executable stack protection. + + To verify that the stack is non-executable after compiling use: + scanelf -e ./bitcoin + + the output should contain: + STK/REL/PTL + RW- R-- RW- + + The STK RW- means that the stack is readable and writeable but not executable. diff --git a/doc/readme-qt.rst b/doc/readme-qt.rst new file mode 100644 index 0000000000..b12aa30904 --- /dev/null +++ b/doc/readme-qt.rst @@ -0,0 +1,162 @@ +Bitcoin-qt: Qt4 based GUI replacement for Bitcoin +================================================= + +Features +======== + +- All functionality of the Wx GUI, including wallet encryption + +- Compatibility with Linux (both GNOME and KDE), MacOSX and Windows + +- Notification on incoming / outgoing transactions (compatible with FreeDesktop and other desktop notification schemes) + +- General interface improvements: Splash screen, tabbed interface + +- Overview page with current balance, unconfirmed balance, and such + +- Better transaction list with status icons, real-time filtering and a context menu + +- Asks for confirmation before sending coins, for your own safety + +- CSV export of transactions and address book (for Excel bookkeeping) + +- Shows alternative icon when connected to testnet, so you never accidentally send real coins during testing + +- Shows a progress bar on initial block download, so that you don't have to wonder how many blocks it needs to download to be up to date + +- Sendmany support, send to multiple recipients at the same time + +- Multiple unit support, can show subdivided bitcoins (uBTC, mBTC) for users that like large numbers + +- Support for English, German, Russian and Dutch languages + +- Address books and transaction table can be sorted by any column + +- Accepts "bitcoin:" URLs from browsers and other sources through drag and drop + +Build instructions +=================== + +Debian +------- + +First, make sure that the required packages for Qt4 development of your +distribution are installed, for Debian and Ubuntu these are: + +:: + + apt-get install qt4-qmake libqt4-dev build-essential libboost-dev libboost-system-dev \ + libboost-filesystem-dev libboost-program-options-dev libboost-thread-dev \ + libssl-dev libdb4.8++-dev + +then execute the following: + +:: + + qmake + make + +Alternatively, install Qt Creator and open the `bitcoin-qt.pro` file. + +An executable named `bitcoin-qt` will be built. + + +Windows +-------- + +Windows build instructions: + +- Download the `QT Windows SDK`_ and install it. You don't need the Symbian stuff, just the desktop Qt. + +- Download and extract the `dependencies archive`_ [#]_, or compile openssl, boost and dbcxx yourself. + +- Copy the contents of the folder "deps" to "X:\\QtSDK\\mingw", replace X:\\ with the location where you installed the Qt SDK. Make sure that the contents of "deps\\include" end up in the current "include" directory. + +- Open the .pro file in QT creator and build as normal (ctrl-B) + +.. _`QT Windows SDK`: http://qt.nokia.com/downloads/sdk-windows-cpp +.. _`dependencies archive`: https://download.visucore.com/bitcoin/qtgui_deps_1.zip +.. [#] PGP signature: https://download.visucore.com/bitcoin/qtgui_deps_1.zip.sig (signed with RSA key ID `610945D0`_) +.. _`610945D0`: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x610945D0 + + +Mac OS X +-------- + +- Download and install the `Qt Mac OS X SDK`_. It is recommended to also install Apple's Xcode with UNIX tools. + +- Download and install `MacPorts`_. + +- Execute the following commands in a terminal to get the dependencies: + +:: + + sudo port selfupdate + sudo port install boost db48 + +- Open the .pro file in Qt Creator and build as normal (cmd-B) + +.. _`Qt Mac OS X SDK`: http://qt.nokia.com/downloads/sdk-mac-os-cpp +.. _`MacPorts`: http://www.macports.org/install.php + + +Build configuration options +============================ + +UPNnP port forwarding +--------------------- + +To use UPnP for port forwarding behind a NAT router (recommended, as more connections overall allow for a faster and more stable bitcoin experience), pass the following argument to qmake: + +:: + + qmake "USE_UPNP=1" + +(in **Qt Creator**, you can find the setting for additional qmake arguments under "Projects" -> "Build Settings" -> "Build Steps", then click "Details" next to **qmake**) + +This requires miniupnpc for UPnP port mapping. It can be downloaded from +http://miniupnp.tuxfamily.org/files/. UPnP support is not compiled in by default. + +Set USE_UPNP to a different value to control this: + ++------------+--------------------------------------------------------------+ +| USE_UPNP= | (the default) no UPnP support, miniupnpc not required; | ++------------+--------------------------------------------------------------+ +| USE_UPNP=0 | UPnP support turned off by default at runtime; | ++------------+--------------------------------------------------------------+ +| USE_UPNP=1 | UPnP support turned on by default at runtime. | ++------------+--------------------------------------------------------------+ + +Mac OS X users: miniupnpc is currently outdated on MacPorts. An updated Portfile is provided in contrib/miniupnpc within this project. +You can execute the following commands in a terminal to install it: + +:: + + cd <location of bitcoin-qt>/contrib/miniupnpc + sudo port install + +Notification support for recent (k)ubuntu versions +--------------------------------------------------- + +To see desktop notifications on (k)ubuntu versions starting from 10.04, enable usage of the +FreeDesktop notification interface through DBUS using the following qmake option: + +:: + + qmake "USE_DBUS=1" + +Berkely DB version warning +========================== + +A warning for people using the *static binary* version of Bitcoin on a Linux/UNIX-ish system (tl;dr: **Berkely DB databases are not forward compatible**). + +The static binary version of Bitcoin is linked against libdb4.7 or libdb4.8 (see also `this Debian issue`_). + +Now the nasty thing is that databases from 5.X are not compatible with 4.X. + +If the globally installed development package of Berkely DB installed on your system is 5.X, any source you +build yourself will be linked against that. The first time you run with a 5.X version the database will be upgraded, +and 4.X cannot open the new format. This means that you cannot go back to the old statically linked version without +significant hassle! + +.. _`this Debian issue`: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=621425 diff --git a/doc/release-process.txt b/doc/release-process.txt index bcda64dbed..ff00b121fc 100644 --- a/doc/release-process.txt +++ b/doc/release-process.txt @@ -23,15 +23,45 @@ * perform gitian builds - * From the bitcoin source dir - $ cd ../gitian-builder - $ ./bin/gbuild --commit bitcoin=v0.3.23 ../bitcoin/contrib/gitian.yml - $ ./bin/gbuild --commit bitcoin=v0.3.23 ../bitcoin/contrib/gitian-win32.yml + * From a directory containing the bitcoin source, gitian-builder and bitcoin-gitian-sigs + $ export VERSION=0.3.23 + $ cd ./gitian-builder + $ ./bin/gbuild --commit bitcoin=v$VERSION ../bitcoin/contrib/gitian-descriptors/gitian.yml + $ ./bin/gsign --signer (your gitian key, ie bluematt, sipa, etc) --release $VERSION --destination ../bitcoin-gitian-sigs/ ../bitcoin/contrib/gitian-descriptors/gitian.yml + $ cd build/out + $ zip bitcoin-$VERSION-linux-gitian.zip * + $ mv bitcoin-$VERSION-linux-gitian.zip ../../ + $ ./bin/gbuild --commit bitcoin=v$VERSION ../bitcoin/contrib/gitian-descriptors/gitian-win32.yml + $ ./bin/gsign --signer (your gitian key, ie bluematt, sipa, etc) --release $VERSION-win32 --destination ../bitcoin-gitian-sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-win32.yml + $ cd build/out + $ zip bitcoin-$VERSION-win32-gitian.zip * + $ mv bitcoin-$VERSION-win32-gitian.zip ../../ Build output expected: - 1. linux 32-bit and 64-bit binaries + source - 2. windows 32-bit binary + source - 3. windows installer + 1. linux 32-bit and 64-bit binaries + source (bitcoin-$VERSION-linux-gitian.zip) + 2. windows 32-bit binary, installer + source (bitcoin-$VERSION-win32-gitian.zip) + 3. Gitian signatures (in bitcoin-gitian-sigs/$VERSION[-win32]/(your gitian key)/ + +* repackage gitian builds for release as stand-alone zip/tar/installer exe + + * Windows .zip and setup.exe: + $ mkdir bitcoin-$VERSION-win32 + $ cd bitcoin-$VERSION-win32 + $ unzip bitcoin-$VERSION-win32-gitian.zip + $ mv bitcoin-$VERSION-win32-setup.exe .. + $ cd ..; zip bitcoin-$VERSION-win32.zip bitcoin-$VERSION-win32 + + * Linux .tar.gz: + $ mkdir bitcoin-$VERSION-linux + $ cd bitcoin-$VERSION-linux + $ unzip bitcoin-$VERSION-linux-gitian.zip + $ cd ..; tar czvf bitcoin-$VERSION-linux.tar.gz bitcoin-$VERSION-linux + +* perform Mac build + * From the bitcoin source dir + $ cd contrib + $ ./create_osx_dmg.sh + $ mv Bitcoin.dmg bitcoin-$VERSION-macosx.dmg * upload source and builds to SF @@ -45,4 +75,34 @@ * update wiki download links +* release gitian-signed gitian archives + + * Collect enough gitian signatures to meet minimum_weight (see contrib/gitian-downloader/*-download-config) + + * From a directory containing bitcoin source, bitcoin-gitian-sigs and gitian zips + $ export VERSION=0.3.23 + $ mkdir bitcoin-$VERSION-win32-gitian; cd bitcoin-$VERSION-win32-gitian + $ unzip ../bitcoin-$VERSION-win32-gitian.zip + $ mkdir gitian + $ cp ../bitcoin/contrib/gitian-downloader/*.pgp ./gitian/ + $ for file in `ls ../bitcoin-gitian-sigs/$VERSION-win32/`; do + $ cp ../bitcoin-gitian-sigs/$VERSION-win32/$file/bitcoin-build.assert ./gitian/$file-build.assert + $ cp ../bitcoin-gitian-sigs/$VERSION-win32/$file/bitcoin-build.assert.sig ./gitian/$file-build.assert.sig + $ done + $ zip bitcoin-$VERSION-win32-gitian.zip * + $ cp bitcoin-$VERSION-win32-gitian.zip ../ + $ cd .. + $ mkdir bitcoin-$VERSION-linux-gitian; cd bitcoin-$VERSION-linux-gitian + $ unzip ../bitcoin-$VERSION-linux-gitian.zip + $ mkdir gitian + $ cp ../bitcoin/contrib/gitian-downloader/*.pgp ./gitian/ + $ for file in `ls ../bitcoin-gitian-sigs/$VERSION/`; do + $ cp ../bitcoin-gitian-sigs/$VERSION/$file/bitcoin-build.assert ./gitian/$file-build.assert + $ cp ../bitcoin-gitian-sigs/$VERSION/$file/bitcoin-build.assert.sig ./gitian/$file-build.assert.sig + $ done + $ zip bitcoin-$VERSION-linux-gitian.zip * + $ cp bitcoin-$VERSION-linux-gitian.zip ../ + + * Upload gitian zips to SF + |