diff options
82 files changed, 711 insertions, 498 deletions
diff --git a/.gitignore b/.gitignore index f867868185..7615fe3915 100644 --- a/.gitignore +++ b/.gitignore @@ -81,4 +81,4 @@ win32-build qa/pull-tester/run-bitcoind-for-test.sh qa/pull-tester/build-tests.sh -!src/leveldb-*/Makefile +!src/leveldb*/Makefile diff --git a/configure.ac b/configure.ac index 82f489a06d..88c20cdce6 100644 --- a/configure.ac +++ b/configure.ac @@ -5,7 +5,7 @@ define(_CLIENT_VERSION_MINOR, 8) define(_CLIENT_VERSION_REVISION, 99) define(_CLIENT_VERSION_BUILD, 0) define(_CLIENT_VERSION_IS_RELEASE, false) -define(_COPYRIGHT_YEAR, 2013) +define(_COPYRIGHT_YEAR, 2014) AC_INIT([Bitcoin],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION],[info@bitcoin.org],[bitcoin]) AC_CONFIG_AUX_DIR([src/build-aux]) AC_CONFIG_MACRO_DIR([src/m4]) @@ -395,7 +395,7 @@ LIBS="$TEMP_LIBS" fi if test x$boost_sleep != xyes; then - AC_MSG_ERROR(No working boost sleep implementation found) + AC_MSG_ERROR(No working boost sleep implementation found. If on ubuntu 13.10 with libboost1.54-all-dev remove libboost.1.54-all-dev and use libboost1.53-all-dev) fi BITCOIN_QT_INIT diff --git a/contrib/debian/copyright b/contrib/debian/copyright index b99604913c..a6ee201991 100644 --- a/contrib/debian/copyright +++ b/contrib/debian/copyright @@ -6,9 +6,9 @@ Source: http://sourceforge.net/projects/bitcoin/files/ https://github.com/bitcoin/bitcoin Files: * -Copyright: 2009-2012, Bitcoin Developers +Copyright: 2009-2012, Bitcoin Core Developers License: Expat -Comment: The Bitcoin Developers encompasses the current developers listed on bitcoin.org, +Comment: The Bitcoin Core Developers encompasses the current developers listed on bitcoin.org, as well as the numerous contributors to the project. Files: src/json/* @@ -71,7 +71,7 @@ Copyright: Bitboy (optimized for 16x16 by Wladimir van der Laan) License: PUB-DOM Comment: Site: https://bitcointalk.org/?topic=1756.0 -Files: scripts/img/reload.xcf, src/qt/res/movies/update_spinner.mng +Files: scripts/img/reload.xcf, src/qt/res/movies/*.png Copyright: Everaldo (Everaldo Coelho) License: GPL-3+ Comment: Icon Pack: Kids diff --git a/contrib/gitian-descriptors/README.md b/contrib/gitian-descriptors/README.md index 40bdbd8e32..3a90b4d038 100644 --- a/contrib/gitian-descriptors/README.md +++ b/contrib/gitian-descriptors/README.md @@ -25,18 +25,8 @@ Once you've got the right hardware and software: mkdir gitian-builder/inputs cd gitian-builder/inputs - # Inputs for Linux and Win32: - wget -O miniupnpc-1.6.tar.gz 'http://miniupnp.tuxfamily.org/files/download.php?file=miniupnpc-1.6.tar.gz' - wget 'http://fukuchi.org/works/qrencode/qrencode-3.2.0.tar.bz2' - - # Inputs for Win32: (Linux has packages for these) - wget 'https://downloads.sourceforge.net/project/boost/boost/1.50.0/boost_1_50_0.tar.bz2' - wget 'http://www.openssl.org/source/openssl-1.0.1c.tar.gz' - wget 'http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz' - wget 'https://downloads.sourceforge.net/project/libpng/zlib/1.2.6/zlib-1.2.6.tar.gz' - wget 'https://downloads.sourceforge.net/project/libpng/libpng15/older-releases/1.5.9/libpng-1.5.9.tar.gz' - wget 'https://download.qt-project.org/archive/qt/4.8/4.8.3/qt-everywhere-opensource-src-4.8.3.tar.gz' - wget 'http://protobuf.googlecode.com/files/protobuf-2.5.0.tar.bz2' + # Get inputs (see doc/release-process.md for exact inputs needed and where to get them) + ... cd ../.. cd gitian-builder @@ -49,7 +39,7 @@ Once you've got the right hardware and software: git pull cd ../gitian-builder git pull - ./bin/gbuild --commit bitcoin=HEAD ../bitcoin/contrib/gitian-descriptors/gitian.yml + ./bin/gbuild --commit bitcoin=HEAD ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml # Build Win32 dependencies: (only needs to be done once, or when dependency versions change) ./bin/gbuild --commit bitcoin=HEAD ../bitcoin/contrib/gitian-descriptors/boost-win32.yml @@ -87,4 +77,4 @@ Here's a description of Gavin's setup on OSX 10.6: export USE_LXC=1 git clone git://github.com/bitcoin/bitcoin.git - ... etc
\ No newline at end of file + ... etc diff --git a/contrib/gitian-descriptors/deps-linux.yml b/contrib/gitian-descriptors/deps-linux.yml new file mode 100644 index 0000000000..4ebf5c53a3 --- /dev/null +++ b/contrib/gitian-descriptors/deps-linux.yml @@ -0,0 +1,63 @@ +--- +name: "bitcoin" +suites: +- "precise" +architectures: +- "i386" +- "amd64" +packages: +- "unzip" +- "zip" +- "pkg-config" +- "libtool" +- "faketime" +- "bsdmainutils" +reference_datetime: "2013-06-01 00:00:00" +remotes: [] +files: +- "miniupnpc-1.8.tar.gz" +- "qrencode-3.4.3.tar.bz2" +- "protobuf-2.5.0.tar.bz2" +- "db-4.8.30.NC.tar.gz" +script: | + STAGING="$HOME/install" + OPTFLAGS='-O2' + export LIBRARY_PATH="$STAGING/lib" + # Integrity Check + echo "bc5f73c7b0056252c1888a80e6075787a1e1e9112b808f863a245483ff79859c miniupnpc-1.8.tar.gz" | sha256sum -c + echo "dfd71487513c871bad485806bfd1fdb304dedc84d2b01a8fb8e0940b50597a98 qrencode-3.4.3.tar.bz2" | sha256sum -c + echo "13bfc5ae543cf3aa180ac2485c0bc89495e3ae711fc6fab4f8ffe90dfb4bb677 protobuf-2.5.0.tar.bz2" | sha256sum -c + echo "12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef db-4.8.30.NC.tar.gz" | sha256sum -c + + tar xzfm miniupnpc-1.8.tar.gz + cd miniupnpc-1.8 + # miniupnpc is always built with -fPIC + INSTALLPREFIX=$STAGING make $MAKEOPTS install + rm -f $STAGING/lib/libminiupnpc.so* # no way to skip shared lib build + cd .. + # + tar xjfm qrencode-3.4.3.tar.bz2 + cd qrencode-3.4.3 + # need --with-pic to avoid relocation error in 64 bit builds + ./configure --prefix=$STAGING --enable-static --disable-shared -with-pic --without-tools + make $MAKEOPTS install + cd .. + # + tar xjfm protobuf-2.5.0.tar.bz2 + cd protobuf-2.5.0 + mkdir -p $STAGING/host/bin + # need --with-pic to avoid relocation error in 64 bit builds + ./configure --prefix=$STAGING --bindir=$STAGING/host/bin --enable-static --disable-shared --with-pic + make $MAKEOPTS install + cd .. + # + tar xzf db-4.8.30.NC.tar.gz + cd db-4.8.30.NC/build_unix + # need --with-pic to avoid relocation error in 64 bit builds + ../dist/configure --prefix=$STAGING --enable-cxx --disable-shared --with-pic + make $MAKEOPTS library_build + make install_lib install_include + cd ../.. + # + cd $STAGING + zip -r $OUTDIR/bitcoin-deps-linux${GBUILD_BITS}-gitian-r1.zip include lib bin host diff --git a/contrib/gitian-descriptors/deps-win32.yml b/contrib/gitian-descriptors/deps-win32.yml index addb11d726..12b9dfc70c 100644 --- a/contrib/gitian-descriptors/deps-win32.yml +++ b/contrib/gitian-descriptors/deps-win32.yml @@ -14,12 +14,12 @@ packages: reference_datetime: "2011-01-30 00:00:00" remotes: [] files: -- "openssl-1.0.1c.tar.gz" +- "openssl-1.0.1e.tar.gz" - "db-4.8.30.NC.tar.gz" -- "miniupnpc-1.6.tar.gz" -- "zlib-1.2.6.tar.gz" -- "libpng-1.5.9.tar.gz" -- "qrencode-3.2.0.tar.bz2" +- "miniupnpc-1.8.tar.gz" +- "zlib-1.2.8.tar.gz" +- "libpng-1.6.8.tar.gz" +- "qrencode-3.4.3.tar.bz2" script: | # export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1 @@ -28,17 +28,17 @@ script: | export INSTALLPREFIX=$OUTDIR/staging/deps export HOST=i686-w64-mingw32 # Input Integrity Check - echo "2a9eb3cd4e8b114eb9179c0d3884d61658e7d8e8bf4984798a5f5bd48e325ebe openssl-1.0.1c.tar.gz" | sha256sum -c + echo "f74f15e8c8ff11aa3d5bb5f276d202ec18d7246e95f961db76054199c69c1ae3 openssl-1.0.1e.tar.gz" | sha256sum -c echo "12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef db-4.8.30.NC.tar.gz" | sha256sum -c - echo "bbd6b756e6af44b5a5b0f9b93eada3fb8922ed1d6451b7d6f184d0ae0c813994 miniupnpc-1.6.tar.gz" | sha256sum -c - echo "21235e08552e6feba09ea5e8d750805b3391c62fb81c71a235c0044dc7a8a61b zlib-1.2.6.tar.gz" | sha256sum -c - echo "b75dae26151f9b031062c8d2f577a094b08da0ae44fe8c11175d0b9ff434cc02 libpng-1.5.9.tar.gz" | sha256sum -c - echo "03c4bc7cd9a75747c3815d509bbe061907d615764f2357923f0db948c567068f qrencode-3.2.0.tar.bz2" | sha256sum -c + echo "bc5f73c7b0056252c1888a80e6075787a1e1e9112b808f863a245483ff79859c miniupnpc-1.8.tar.gz" | sha256sum -c + echo "36658cb768a54c1d4dec43c3116c27ed893e88b02ecfcb44f2166f9c0b7f2a0d zlib-1.2.8.tar.gz" | sha256sum -c + echo "32c7acf1608b9c8b71b743b9780adb7a7b347563dbfb4a5263761056da44cc96 libpng-1.6.8.tar.gz" | sha256sum -c + echo "dfd71487513c871bad485806bfd1fdb304dedc84d2b01a8fb8e0940b50597a98 qrencode-3.4.3.tar.bz2" | sha256sum -c mkdir -p $INSTALLPREFIX - tar xzf openssl-1.0.1c.tar.gz - cd openssl-1.0.1c + tar xzf openssl-1.0.1e.tar.gz + cd openssl-1.0.1e ./Configure --cross-compile-prefix=$HOST- mingw --openssldir=$INSTALLPREFIX make make install_sw @@ -51,11 +51,11 @@ script: | make install_lib install_include cd ../.. # - tar xzf miniupnpc-1.6.tar.gz - cd miniupnpc-1.6 + tar xzf miniupnpc-1.8.tar.gz + cd miniupnpc-1.8 echo " - --- miniupnpc-1.6/Makefile.mingw.orig 2013-09-29 18:52:51.014087958 -1000 - +++ miniupnpc-1.6/Makefile.mingw 2013-09-29 19:09:29.663318691 -1000 + --- miniupnpc-1.8/Makefile.mingw.orig 2013-09-29 18:52:51.014087958 -1000 + +++ miniupnpc-1.8/Makefile.mingw 2013-09-29 19:09:29.663318691 -1000 @@ -67,8 +67,8 @@ wingenminiupnpcstrings.o: wingenminiupnpcstrings.c @@ -75,26 +75,27 @@ script: | install libminiupnpc.a $INSTALLPREFIX/lib cd .. # - tar xzf zlib-1.2.6.tar.gz - cd zlib-1.2.6 + tar xzf zlib-1.2.8.tar.gz + cd zlib-1.2.8 CROSS_PREFIX=$HOST- ./configure --prefix=$INSTALLPREFIX --static make make install cd .. # - tar xzf libpng-1.5.9.tar.gz - cd libpng-1.5.9 - CFLAGS="-I$INSTALLPREFIX/include" LDFLAGS="-L$INSTALLPREFIX/lib" ./configure --disable-shared --prefix=$INSTALLPREFIX --host=$HOST + tar xzf libpng-1.6.8.tar.gz + cd libpng-1.6.8 + OPT="-O2" + CPPFLAGS="${OPT} -I$INSTALLPREFIX/include" CFLAGS="${OPT} -I$INSTALLPREFIX/include" LDFLAGS="${OPT} -L$INSTALLPREFIX/lib" ./configure --disable-shared --prefix=$INSTALLPREFIX --host=$HOST make $MAKEOPTS make install cd .. # - tar xjf qrencode-3.2.0.tar.bz2 - cd qrencode-3.2.0 + tar xjf qrencode-3.4.3.tar.bz2 + cd qrencode-3.4.3 png_CFLAGS="-I$INSTALLPREFIX/include" png_LIBS="-L$INSTALLPREFIX/lib -lpng" ./configure --prefix=$INSTALLPREFIX --host=$HOST make make install cd .. # cd $INSTALLPREFIX - zip -r $OUTDIR/bitcoin-deps-win32-gitian-r9.zip include lib + zip -r $OUTDIR/bitcoin-deps-win32-gitian-r10.zip include lib diff --git a/contrib/gitian-descriptors/gitian-linux.yml b/contrib/gitian-descriptors/gitian-linux.yml new file mode 100644 index 0000000000..b0fe86e259 --- /dev/null +++ b/contrib/gitian-descriptors/gitian-linux.yml @@ -0,0 +1,56 @@ +--- +name: "bitcoin" +suites: +- "precise" +architectures: +- "i386" +- "amd64" +packages: +- "qt4-qmake" +- "libqt4-dev" +- "libboost-system-dev" +- "libboost-filesystem-dev" +- "libboost-program-options-dev" +- "libboost-thread-dev" +- "libboost-test-dev" +- "libssl-dev" +- "git-core" +- "unzip" +- "pkg-config" +- "autoconf2.13" +- "libtool" +- "automake" +- "faketime" +- "bsdmainutils" +reference_datetime: "2013-06-01 00:00:00" +remotes: +- "url": "https://github.com/bitcoin/bitcoin.git" + "dir": "bitcoin" +files: +- "bitcoin-deps-linux32-gitian-r1.zip" +- "bitcoin-deps-linux64-gitian-r1.zip" +script: | + STAGING="$HOME/install" + OPTFLAGS='-O2' + BINDIR="${OUTDIR}/bin/${GBUILD_BITS}" # 32/64 bit build specific output directory + export LIBRARY_PATH="$STAGING/lib" + mkdir -p ${BINDIR} + # + mkdir -p $STAGING + cd $STAGING + unzip ../build/bitcoin-deps-linux${GBUILD_BITS}-gitian-r1.zip + cd ../build + # + cd bitcoin + export TAR_OPTIONS=--mtime=`echo $REFERENCE_DATETIME | awk '{ print $1 }'` + ./autogen.sh + ./configure --prefix=$STAGING --bindir=$BINDIR --with-protoc-bindir=$STAGING/host/bin --disable-maintainer-mode --disable-dependency-tracking PKG_CONFIG_PATH="$STAGING/lib/pkgconfig" CPPFLAGS="-I$STAGING/include ${OPTFLAGS}" LDFLAGS="-L$STAGING/lib ${OPTFLAGS}" CXXFLAGS="-frandom-seed=bitcoin ${OPTFLAGS}" + make dist + mkdir -p distsrc + cd distsrc + tar --strip-components=1 -xf ../bitcoin-*.tar.* + ./configure --prefix=$STAGING --bindir=$BINDIR --with-protoc-bindir=$STAGING/host/bin --disable-maintainer-mode --disable-dependency-tracking PKG_CONFIG_PATH="$STAGING/lib/pkgconfig" CPPFLAGS="-I$STAGING/include ${OPTFLAGS}" LDFLAGS="-L$STAGING/lib ${OPTFLAGS}" CXXFLAGS="-frandom-seed=bitcoin ${OPTFLAGS}" + make $MAKEOPTS + make $MAKEOPTS install-strip + mkdir -p $OUTDIR/src + cp ../bitcoin-*.tar.* $OUTDIR/src diff --git a/contrib/gitian-descriptors/gitian-win32.yml b/contrib/gitian-descriptors/gitian-win32.yml index a863335ce9..794fa27f1f 100644 --- a/contrib/gitian-descriptors/gitian-win32.yml +++ b/contrib/gitian-descriptors/gitian-win32.yml @@ -22,9 +22,9 @@ remotes: - "url": "https://github.com/bitcoin/bitcoin.git" "dir": "bitcoin" files: -- "qt-win32-4.8.3-gitian-r4.zip" +- "qt-win32-5.2.0-gitian-r1.zip" - "boost-win32-1.55.0-gitian-r6.zip" -- "bitcoin-deps-win32-gitian-r9.zip" +- "bitcoin-deps-win32-gitian-r10.zip" - "protobuf-win32-2.5.0-gitian-r3.zip" script: | # @@ -34,9 +34,9 @@ script: | # mkdir -p $STAGING cd $STAGING - unzip ../build/qt-win32-4.8.3-gitian-r4.zip + unzip ../build/qt-win32-5.2.0-gitian-r1.zip unzip ../build/boost-win32-1.55.0-gitian-r6.zip - unzip ../build/bitcoin-deps-win32-gitian-r9.zip + unzip ../build/bitcoin-deps-win32-gitian-r10.zip unzip ../build/protobuf-win32-2.5.0-gitian-r3.zip cd $HOME/build/ # diff --git a/contrib/gitian-descriptors/gitian.yml b/contrib/gitian-descriptors/gitian.yml deleted file mode 100644 index e29033d29b..0000000000 --- a/contrib/gitian-descriptors/gitian.yml +++ /dev/null @@ -1,74 +0,0 @@ ---- -name: "bitcoin" -suites: -- "lucid" -architectures: -- "i386" -- "amd64" -packages: -- "libdb4.8++-dev" -- "qt4-qmake" -- "libqt4-dev" -- "libboost-system-dev" -- "libboost-filesystem-dev" -- "libboost-program-options-dev" -- "libboost-thread-dev" -- "libboost-test-dev" -- "libssl-dev" -- "git-core" -- "unzip" -- "pkg-config" -- "libpng12-dev" -- "autoconf2.13" -- "libtool" -- "automake" -- "faketime" -- "bsdmainutils" -reference_datetime: "2013-06-01 00:00:00" -remotes: -- "url": "https://github.com/bitcoin/bitcoin.git" - "dir": "bitcoin" -files: -- "miniupnpc-1.6.tar.gz" -- "qrencode-3.2.0.tar.bz2" -- "protobuf-2.5.0.tar.bz2" -script: | - STAGING="$HOME/install" - export LIBRARY_PATH="$STAGING/lib" - # Integrity Check - echo "bbd6b756e6af44b5a5b0f9b93eada3fb8922ed1d6451b7d6f184d0ae0c813994 miniupnpc-1.6.tar.gz" | sha256sum -c - echo "03c4bc7cd9a75747c3815d509bbe061907d615764f2357923f0db948c567068f qrencode-3.2.0.tar.bz2" | sha256sum -c - echo "13bfc5ae543cf3aa180ac2485c0bc89495e3ae711fc6fab4f8ffe90dfb4bb677 protobuf-2.5.0.tar.bz2" | sha256sum -c - - tar xzfm miniupnpc-1.6.tar.gz - cd miniupnpc-1.6 - INSTALLPREFIX=$STAGING make $MAKEOPTS install - cd .. - # - tar xjfm qrencode-3.2.0.tar.bz2 - cd qrencode-3.2.0 - sed -i 's/@LIBPTHREAD@//' libqrencode.pc.in - ./configure --prefix=$STAGING --enable-static --disable-shared - make $MAKEOPTS install - cd .. - # - tar xjfm protobuf-2.5.0.tar.bz2 - cd protobuf-2.5.0 - mkdir -p $STAGING/host/bin - ./configure --prefix=$STAGING --bindir=$STAGING/host/bin --enable-static --disable-shared - make $MAKEOPTS install - cd .. - # - cd bitcoin - export TAR_OPTIONS=--mtime=`echo $REFERENCE_DATETIME | awk '{ print $1 }'` - ./autogen.sh - ./configure --prefix=$STAGING --bindir=$OUTDIR --with-protoc-bindir=$STAGING/host/bin --disable-maintainer-mode --disable-dependency-tracking PKG_CONFIG_PATH="$STAGING/lib/pkgconfig" CPPFLAGS="-I$STAGING/include" LDFLAGS="-L$STAGING/lib" CXXFLAGS="-frandom-seed=bitcoin" - make dist - mkdir -p distsrc - cd distsrc - tar --strip-components=1 -xf ../bitcoin-*.tar.* - ./configure --prefix=$STAGING --bindir=$OUTDIR --with-protoc-bindir=$STAGING/host/bin --disable-maintainer-mode --disable-dependency-tracking PKG_CONFIG_PATH="$STAGING/lib/pkgconfig" CPPFLAGS="-I$STAGING/include" LDFLAGS="-L$STAGING/lib" CXXFLAGS="-frandom-seed=bitcoin" - make $MAKEOPTS - make $MAKEOPTS install-strip - mkdir -p $OUTDIR/src - cp ../bitcoin-*.tar.* $OUTDIR/src diff --git a/contrib/gitian-descriptors/qt-win32.yml b/contrib/gitian-descriptors/qt-win32.yml index ffa8bcab46..8bc53bbf25 100644 --- a/contrib/gitian-descriptors/qt-win32.yml +++ b/contrib/gitian-descriptors/qt-win32.yml @@ -10,41 +10,38 @@ packages: - "zip" - "unzip" - "faketime" -- "unzip" +- "libz-dev" reference_datetime: "2011-01-30 00:00:00" remotes: [] files: -- "qt-everywhere-opensource-src-4.8.3.tar.gz" -- "bitcoin-deps-win32-gitian-r9.zip" +- "qt-everywhere-opensource-src-5.2.0.tar.gz" +- "bitcoin-deps-win32-gitian-r10.zip" script: | # HOST=i686-w64-mingw32 INSTDIR="$HOME/qt/" # Integrity Check - echo "f1f72974f924861be04019f49f07cd43ab3c95056db2ba8f34b283487cccc728 qt-everywhere-opensource-src-4.8.3.tar.gz" | sha256sum -c + echo "395ec72277c5786c65b8163ef5817fd03d0a1f524a6d47f53624baf8056f1081 qt-everywhere-opensource-src-5.2.0.tar.gz" | sha256sum -c mkdir $INSTDIR mkdir -p $INSTDIR/host/bin # # Need mingw-compiled openssl from bitcoin-deps: - unzip bitcoin-deps-win32-gitian-r9.zip + unzip bitcoin-deps-win32-gitian-r10.zip DEPSDIR=`pwd` # - tar xzf qt-everywhere-opensource-src-4.8.3.tar.gz - cd qt-everywhere-opensource-src-4.8.3 + tar xzf qt-everywhere-opensource-src-5.2.0.tar.gz + cd qt-everywhere-opensource-src-5.2.0 + SPECNAME="win32-g++" + SPECFILE="qtbase/mkspecs/${SPECNAME}/qmake.conf" sed 's/$TODAY/2011-01-30/' -i configure - sed "s/i686-pc-mingw32-/$HOST-/" -i mkspecs/unsupported/win32-g++-cross/qmake.conf - sed --posix "s|QMAKE_CFLAGS\t\t= -pipe|QMAKE_CFLAGS\t\t= -pipe -isystem /usr/$HOST/include/ -frandom-seed=qtbuild|" -i mkspecs/unsupported/win32-g++-cross/qmake.conf - sed 's/QMAKE_CXXFLAGS_EXCEPTIONS_ON = -fexceptions -mthreads/QMAKE_CXXFLAGS_EXCEPTIONS_ON = -fexceptions/' -i mkspecs/unsupported/win32-g++-cross/qmake.conf - sed 's/QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads/QMAKE_LFLAGS_EXCEPTIONS_ON = -lmingwthrd/' -i mkspecs/unsupported/win32-g++-cross/qmake.conf - sed --posix "s/QMAKE_MOC\t\t= $HOST-moc/QMAKE_MOC\t\t= moc/" -i mkspecs/unsupported/win32-g++-cross/qmake.conf - sed --posix "s/QMAKE_RCC\t\t= $HOST-rcc/QMAKE_RCC\t\t= rcc/" -i mkspecs/unsupported/win32-g++-cross/qmake.conf - sed --posix "s/QMAKE_UIC\t\t= $HOST-uic/QMAKE_UIC\t\t= uic/" -i mkspecs/unsupported/win32-g++-cross/qmake.conf + sed --posix "s|QMAKE_CFLAGS = -pipe -fno-keep-inline-dllexport|QMAKE_CFLAGS\t\t= -pipe -fno-keep-inline-dllexport -isystem /usr/$HOST/include/ -frandom-seed=qtbuild -I$DEPSDIR/include|" -i ${SPECFILE} + sed --posix "s|QMAKE_LFLAGS =|QMAKE_LFLAGS\t\t= -L$DEPSDIR/lib|" -i ${SPECFILE} # ar adds timestamps to every object file included in the static library # providing -D as ar argument is supposed to solve it, but doesn't work as qmake strips off the arguments and adds -M to pass a script... # which somehow cannot be combined with other flags. # use faketime only for ar, as it confuses make/qmake into hanging sometimes - sed --posix "s|QMAKE_LIB\t\t= $HOST-ar -ru|QMAKE_LIB\t\t= $HOME/ar -Dr|" -i mkspecs/unsupported/win32-g++-cross/qmake.conf + sed --posix "s|QMAKE_LIB = \\\$\\\${CROSS_COMPILE}ar -ru|QMAKE_LIB\t\t= $HOME/ar -Dr|" -i ${SPECFILE} echo '#!/bin/bash' > $HOME/ar echo 'export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1' >> $HOME/ar echo "$HOST-ar \"\$@\"" >> $HOME/ar @@ -52,14 +49,12 @@ script: | #export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1 export FAKETIME=$REFERENCE_DATETIME export TZ=UTC + # # Compile static libraries, and use statically linked openssl (-openssl-linked): - OPENSSL_LIBS="-L$DEPSDIR/lib -lssl -lcrypto -lgdi32" ./configure -prefix $INSTDIR -bindir $INSTDIR/host/bin -I $DEPSDIR/include -confirm-license -release -opensource -static -no-qt3support -xplatform unsupported/win32-g++-cross -no-multimedia -no-audio-backend -no-phonon -no-phonon-backend -no-declarative -no-script -no-scripttools -no-javascript-jit -no-webkit -no-svg -no-xmlpatterns -no-sql-sqlite -no-nis -no-cups -no-iconv -no-dbus -no-gif -no-libtiff -no-opengl -nomake examples -nomake demos -nomake docs -no-feature-style-plastique -no-feature-style-cleanlooks -no-feature-style-motif -no-feature-style-cde -no-feature-style-windowsce -no-feature-style-windowsmobile -no-feature-style-s60 -openssl-linked - find . -name *.prl | xargs -l sed 's|/\.||' -i - find . -name *.prl | xargs -l sed 's|/$||' -i + OPENSSL_LIBS="-L$DEPSDIR/lib -lssl -lcrypto -lgdi32" ./configure -prefix $INSTDIR -bindir $INSTDIR/host/bin -confirm-license -release -opensource -static -xplatform $SPECNAME -device-option CROSS_COMPILE="$HOST-" -no-audio-backend -no-javascript-jit -no-sql-sqlite -no-sql-odbc -no-nis -no-cups -no-iconv -no-dbus -no-gif -no-opengl -no-compile-examples -no-feature-style-windowsce -no-feature-style-windowsmobile -no-qml-debug -openssl-linked -skip qtsvg -skip qtwebkit -skip qtwebkit-examples -skip qtserialport -skip qtdeclarative -skip qtmultimedia -skip qtimageformats -skip qtlocation -skip qtsensors -skip qtquick1 -skip qtquickcontrols -skip qtactiveqt -skip qtconnectivity -skip qtwinextras -skip qtxmlpatterns -skip qtscript -skip qtdoc -system-libpng -system-zlib make $MAKEOPTS install cd $INSTDIR - find . -name *.prl | xargs -l sed 's|/$||' -i # as zip stores file timestamps, use faketime to intercept stat calls to set dates for all files to reference date export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1 - zip -r $OUTDIR/qt-win32-4.8.3-gitian-r4.zip * + zip -r $OUTDIR/qt-win32-5.2.0-gitian-r1.zip * diff --git a/contrib/linearize/linearize.py b/contrib/linearize/linearize.py index 2d8509f83c..12049100dc 100644 --- a/contrib/linearize/linearize.py +++ b/contrib/linearize/linearize.py @@ -73,9 +73,9 @@ def get_blocks(settings): rpc = BitcoinRPC(settings['host'], settings['port'], settings['rpcuser'], settings['rpcpass']) - outf = open(settings['output'], 'wb') + outf = open(settings['output'], 'ab') - for height in xrange(settings['max_height']+1): + for height in xrange(settings['min_height'], settings['max_height']+1): data = getblock(rpc, settings, height) outhdr = settings['netmagic'] @@ -114,6 +114,8 @@ if __name__ == '__main__': settings['host'] = '127.0.0.1' if 'port' not in settings: settings['port'] = 8332 + if 'min_height' not in settings: + settings['min_height'] = 0 if 'max_height' not in settings: settings['max_height'] = 250000 if 'rpcuser' not in settings or 'rpcpass' not in settings: @@ -122,6 +124,7 @@ if __name__ == '__main__': settings['netmagic'] = settings['netmagic'].decode('hex') settings['port'] = int(settings['port']) + settings['min_height'] = int(settings['min_height']) settings['max_height'] = int(settings['max_height']) get_blocks(settings) diff --git a/doc/assets-attribution.md b/doc/assets-attribution.md index b095491285..d42be8fb24 100644 --- a/doc/assets-attribution.md +++ b/doc/assets-attribution.md @@ -76,7 +76,7 @@ Everaldo (Everaldo Coelho) * Site: [http://findicons.com/icon/17102/reload?id=17102](http://findicons.com/icon/17102/reload?id=17102) ### Assets Used - scripts/img/reload.xcf (modified), src/qt/res/movies/update_spinner.mng + scripts/img/reload.xcf (modified), src/qt/res/movies/*.png [Vignoni David](http://www.oxygen-icons.org) ----------------------- @@ -101,4 +101,4 @@ Jonas Schnelli src/qt/res/src/bitcoin.ico, src/qt/res/src/bitcoin.png, src/qt/res/src/bitcoin_testnet.png, docs/bitcoin_logo_doxygen.png, src/qt/res/icons/toolbar.png, src/qt/res/icons/toolbar_testnet.png, - src/qt/res/images/splash.png, src/qt/res/images/splash_testnet.png
\ No newline at end of file + src/qt/res/images/splash.png, src/qt/res/images/splash_testnet.png diff --git a/doc/build-osx.md b/doc/build-osx.md index a9a78b374b..381e8b6f0a 100644 --- a/doc/build-osx.md +++ b/doc/build-osx.md @@ -45,7 +45,7 @@ Instructions: MacPorts Installing the dependencies using MacPorts is very straightforward. - sudo port install boost db48@+no_java openssl miniupnpc autoconf pkgconfig + sudo port install boost db48@+no_java openssl miniupnpc autoconf pkgconfig automake ### Building `bitcoind` diff --git a/doc/build-unix.md b/doc/build-unix.md index b88186a70e..5124205a34 100644 --- a/doc/build-unix.md +++ b/doc/build-unix.md @@ -68,6 +68,9 @@ for Ubuntu 12.04 and later: Ubuntu 12.04 and later have packages for libdb5.1-dev and libdb5.1++-dev, but using these will break binary wallet compatibility, and is not recommended. + +for Ubuntu 13.10: + libboost1.54-all-dev will not work. Remove libboost1.54-all-dev and install libboost1.53-all-dev for other Ubuntu & Debian: diff --git a/doc/release-process.md b/doc/release-process.md index 2c0e2a3677..4281936819 100644 --- a/doc/release-process.md +++ b/doc/release-process.md @@ -39,18 +39,20 @@ Release Process Fetch and build inputs: (first time, or when dependency versions change) mkdir -p inputs; cd inputs/ - wget 'http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.6.tar.gz' -O miniupnpc-1.6.tar.gz - wget 'https://www.openssl.org/source/openssl-1.0.1c.tar.gz' + wget 'http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.8.tar.gz' -O miniupnpc-1.8.tar.gz + wget 'https://www.openssl.org/source/openssl-1.0.1e.tar.gz' wget 'http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz' - wget 'ftp://ftp.simplesystems.org/pub/libpng/png/src/history/zlib/zlib-1.2.6.tar.gz' - wget 'ftp://ftp.simplesystems.org/pub/libpng/png/src/history/libpng15/libpng-1.5.9.tar.gz' - wget 'https://fukuchi.org/works/qrencode/qrencode-3.2.0.tar.bz2' - wget 'https://downloads.sourceforge.net/project/boost/boost/1.54.0/boost_1_54_0.tar.bz2' + wget 'http://zlib.net/zlib-1.2.8.tar.gz' + wget 'ftp://ftp.simplesystems.org/pub/png/src/libpng16/libpng-1.6.8.tar.gz' + wget 'https://fukuchi.org/works/qrencode/qrencode-3.4.3.tar.bz2' + wget 'https://downloads.sourceforge.net/project/boost/boost/1.55.0/boost_1_55_0.tar.bz2' wget 'https://svn.boost.org/trac/boost/raw-attachment/ticket/7262/boost-mingw.patch' -O \ boost-mingw-gas-cross-compile-2013-03-03.patch - wget 'https://download.qt-project.org/archive/qt/4.8/4.8.3/qt-everywhere-opensource-src-4.8.3.tar.gz' + wget 'https://download.qt-project.org/official_releases/qt/5.2/5.2.0/single/qt-everywhere-opensource-src-5.2.0.tar.gz' wget 'https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.bz2' cd .. + ./bin/gbuild ../bitcoin/contrib/gitian-descriptors/deps-linux.yml + mv build/out/bitcoin-deps-*.zip inputs/ ./bin/gbuild ../bitcoin/contrib/gitian-descriptors/boost-win32.yml mv build/out/boost-win32-*.zip inputs/ ./bin/gbuild ../bitcoin/contrib/gitian-descriptors/deps-win32.yml @@ -62,8 +64,8 @@ Release Process Build bitcoind and bitcoin-qt on Linux32, Linux64, and Win32: - ./bin/gbuild --commit bitcoin=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian.yml - ./bin/gsign --signer $SIGNER --release ${VERSION} --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian.yml + ./bin/gbuild --commit bitcoin=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml + ./bin/gsign --signer $SIGNER --release ${VERSION} --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml pushd build/out zip -r bitcoin-${VERSION}-linux-gitian.zip * mv bitcoin-${VERSION}-linux-gitian.zip ../../../ diff --git a/share/qt/Info.plist.in b/share/qt/Info.plist.in index 54ced278f2..b1c2dcb462 100644 --- a/share/qt/Info.plist.in +++ b/share/qt/Info.plist.in @@ -9,7 +9,7 @@ <string>APPL</string> <key>CFBundleGetInfoString</key> - <string>@CLIENT_VERSION_MAJOR@.@CLIENT_VERSION_MINOR@, Copyright © 2009-@COPYRIGHT_YEAR@ The Bitcoin developers</string> + <string>@CLIENT_VERSION_MAJOR@.@CLIENT_VERSION_MINOR@, Copyright © 2009-@COPYRIGHT_YEAR@ The Bitcoin Core developers</string> <key>CFBundleShortVersionString</key> <string>@CLIENT_VERSION_MAJOR@.@CLIENT_VERSION_MINOR@</string> diff --git a/share/qt/img/reload.png b/share/qt/img/reload.png Binary files differnew file mode 100644 index 0000000000..9068db9a63 --- /dev/null +++ b/share/qt/img/reload.png diff --git a/share/qt/make_spinner.py b/share/qt/make_spinner.py index 136aff3cb7..bb19e91508 100755 --- a/share/qt/make_spinner.py +++ b/share/qt/make_spinner.py @@ -1,16 +1,15 @@ #!/usr/bin/env python # W.J. van der Laan, 2011 -# Make spinning .mng animation from a .png +# Make spinning animation from a .png # Requires imagemagick 6.7+ from __future__ import division from os import path from PIL import Image from subprocess import Popen -SRC='img/reload_scaled.png' -DST='../../src/qt/res/movies/update_spinner.mng' -TMPDIR='/tmp' -TMPNAME='tmp-%03i.png' +SRC='img/reload.png' +TMPDIR='../../src/qt/res/movies/' +TMPNAME='spinner-%03i.png' NUMFRAMES=35 FRAMERATE=10.0 CONVERT='convert' @@ -36,8 +35,4 @@ for frame in xrange(NUMFRAMES): im_new.save(outfile, 'png') frame_files.append(outfile) -p = Popen([CONVERT, "-delay", str(FRAMERATE), "-dispose", "2"] + frame_files + [DST]) -p.communicate() - - diff --git a/src/Makefile.include b/src/Makefile.include index 070902c519..b9e6c262ca 100644 --- a/src/Makefile.include +++ b/src/Makefile.include @@ -12,7 +12,6 @@ LIBBITCOIN_CLI=$(top_builddir)/src/libbitcoin_cli.a LIBLEVELDB=$(top_builddir)/src/leveldb/libleveldb.a LIBMEMENV=$(top_builddir)/src/leveldb/libmemenv.a LIBBITCOINQT=$(top_builddir)/src/qt/libbitcoinqt.a -MOC_DEFS=$(DEFS) -I$(top_srcdir)/src $(LIBBITCOIN): $(MAKE) -C $(top_builddir)/src $(@F) diff --git a/src/bitcoin-cli-res.rc b/src/bitcoin-cli-res.rc index 337897753e..f8bfb3a881 100644 --- a/src/bitcoin-cli-res.rc +++ b/src/bitcoin-cli-res.rc @@ -5,7 +5,7 @@ #define VER_PRODUCTVERSION_STR STRINGIZE(CLIENT_VERSION_MAJOR) "." STRINGIZE(CLIENT_VERSION_MINOR) "." STRINGIZE(CLIENT_VERSION_REVISION) "." STRINGIZE(CLIENT_VERSION_BUILD) #define VER_FILEVERSION VER_PRODUCTVERSION #define VER_FILEVERSION_STR VER_PRODUCTVERSION_STR -#define COPYRIGHT_STR "2009-" STRINGIZE(COPYRIGHT_YEAR) " The Bitcoin developers" +#define COPYRIGHT_STR "2009-" STRINGIZE(COPYRIGHT_YEAR) " The Bitcoin Core developers" VS_VERSION_INFO VERSIONINFO FILEVERSION VER_FILEVERSION diff --git a/src/bitcoind-res.rc b/src/bitcoind-res.rc index 202b7ab352..dc5c56b797 100644 --- a/src/bitcoind-res.rc +++ b/src/bitcoind-res.rc @@ -5,7 +5,7 @@ #define VER_PRODUCTVERSION_STR STRINGIZE(CLIENT_VERSION_MAJOR) "." STRINGIZE(CLIENT_VERSION_MINOR) "." STRINGIZE(CLIENT_VERSION_REVISION) "." STRINGIZE(CLIENT_VERSION_BUILD) #define VER_FILEVERSION VER_PRODUCTVERSION #define VER_FILEVERSION_STR VER_PRODUCTVERSION_STR -#define COPYRIGHT_STR "2009-" STRINGIZE(COPYRIGHT_YEAR) " The Bitcoin developers" +#define COPYRIGHT_STR "2009-" STRINGIZE(COPYRIGHT_YEAR) " The Bitcoin Core developers" VS_VERSION_INFO VERSIONINFO FILEVERSION VER_FILEVERSION diff --git a/src/clientversion.h b/src/clientversion.h index b376a67c8a..a06ceb7505 100644 --- a/src/clientversion.h +++ b/src/clientversion.h @@ -19,7 +19,7 @@ // Copyright year (2009-this) // Todo: update this when changing our copyright comments in the source -#define COPYRIGHT_YEAR 2013 +#define COPYRIGHT_YEAR 2014 #endif //HAVE_CONFIG_H diff --git a/src/m4/bitcoin_qt.m4 b/src/m4/bitcoin_qt.m4 index 91c399eef0..758aea3499 100644 --- a/src/m4/bitcoin_qt.m4 +++ b/src/m4/bitcoin_qt.m4 @@ -100,13 +100,13 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[ BITCOIN_QT_PATH_PROGS([LRELEASE], [lrelease-qt${bitcoin_qt_got_major_vers} lrelease${bitcoin_qt_got_major_vers} lrelease], $qt_bin_path) BITCOIN_QT_PATH_PROGS([LUPDATE], [lupdate-qt${bitcoin_qt_got_major_vers} lupdate${bitcoin_qt_got_major_vers} lupdate],$qt_bin_path, yes) + MOC_DEFS='-DHAVE_CONFIG_H -I$(top_srcdir)/src' case $host in *darwin*) BITCOIN_QT_CHECK([ - MOC_DEFS="-DQ_OS_MAC" + MOC_DEFS="${MOC_DEFS} -DQ_OS_MAC" base_frameworks="-framework Foundation -framework ApplicationServices -framework AppKit" AX_CHECK_LINK_FLAG([[$base_frameworks]],[QT_LIBS="$QT_LIBS $base_frameworks"],[AC_MSG_ERROR(could not find base frameworks)]) - AC_SUBST(MOC_DEFS) ]) ;; esac @@ -142,6 +142,7 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[ AC_SUBST(QT_TEST_INCLUDES) AC_SUBST(QT_TEST_LIBS) AC_SUBST(QT_SELECT, qt${bitcoin_qt_got_major_vers}) + AC_SUBST(MOC_DEFS) ]) dnl All macros below are internal and should _not_ be used from the main @@ -316,6 +317,7 @@ AC_DEFUN([_BITCOIN_QT_FIND_LIBS_WITHOUT_PKGCONFIG],[ ]) BITCOIN_QT_CHECK(AC_CHECK_LIB([z] ,[main],,BITCOIN_QT_FAIL(zlib not found))) + BITCOIN_QT_CHECK(AC_CHECK_LIB([png] ,[main],,BITCOIN_QT_FAIL(png not found))) BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Core] ,[main],,BITCOIN_QT_FAIL(lib$QT_LIB_PREFIXCore not found))) BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Gui] ,[main],,BITCOIN_QT_FAIL(lib$QT_LIB_PREFIXGui not found))) BITCOIN_QT_CHECK(AC_CHECK_LIB([${QT_LIB_PREFIX}Network],[main],,BITCOIN_QT_FAIL(lib$QT_LIB_PREFIXNetwork not found))) diff --git a/src/main.cpp b/src/main.cpp index 017a0768d5..9c6c1ba0c3 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -56,8 +56,13 @@ int64_t CTransaction::nMinRelayTxFee = 10000; static CMedianFilter<int> cPeerBlockCounts(8, 0); // Amount of blocks that other nodes claim to have -map<uint256, CBlock*> mapOrphanBlocks; -multimap<uint256, CBlock*> mapOrphanBlocksByPrev; +struct COrphanBlock { + uint256 hashBlock; + uint256 hashPrev; + vector<unsigned char> vchBlock; +}; +map<uint256, COrphanBlock*> mapOrphanBlocks; +multimap<uint256, COrphanBlock*> mapOrphanBlocksByPrev; map<uint256, CTransaction> mapOrphanTransactions; map<uint256, set<uint256> > mapOrphanTransactionsByPrev; @@ -985,12 +990,19 @@ bool ReadBlockFromDisk(CBlock& block, const CBlockIndex* pindex) return true; } -uint256 static GetOrphanRoot(const CBlockHeader* pblock) +uint256 static GetOrphanRoot(const uint256& hash) { + map<uint256, COrphanBlock*>::iterator it = mapOrphanBlocks.find(hash); + if (it == mapOrphanBlocks.end()) + return hash; + // Work back to the first block in the orphan chain - while (mapOrphanBlocks.count(pblock->hashPrevBlock)) - pblock = mapOrphanBlocks[pblock->hashPrevBlock]; - return pblock->GetHash(); + do { + map<uint256, COrphanBlock*>::iterator it2 = mapOrphanBlocks.find(it->second->hashPrev); + if (it2 == mapOrphanBlocks.end()) + return it->first; + it = it2; + } while(true); } int64_t GetBlockValue(int nHeight, int64_t nFees) @@ -2277,12 +2289,19 @@ bool ProcessBlock(CValidationState &state, CNode* pfrom, CBlock* pblock, CDiskBl // Accept orphans as long as there is a node to request its parents from if (pfrom) { - CBlock* pblock2 = new CBlock(*pblock); + COrphanBlock* pblock2 = new COrphanBlock(); + { + CDataStream ss(SER_DISK, CLIENT_VERSION); + ss << *pblock; + pblock2->vchBlock = std::vector<unsigned char>(ss.begin(), ss.end()); + } + pblock2->hashBlock = hash; + pblock2->hashPrev = pblock->hashPrevBlock; mapOrphanBlocks.insert(make_pair(hash, pblock2)); - mapOrphanBlocksByPrev.insert(make_pair(pblock2->hashPrevBlock, pblock2)); + mapOrphanBlocksByPrev.insert(make_pair(pblock2->hashPrev, pblock2)); // Ask this guy to fill in what we're missing - PushGetBlocks(pfrom, chainActive.Tip(), GetOrphanRoot(pblock2)); + PushGetBlocks(pfrom, chainActive.Tip(), GetOrphanRoot(hash)); } return true; } @@ -2297,17 +2316,22 @@ bool ProcessBlock(CValidationState &state, CNode* pfrom, CBlock* pblock, CDiskBl for (unsigned int i = 0; i < vWorkQueue.size(); i++) { uint256 hashPrev = vWorkQueue[i]; - for (multimap<uint256, CBlock*>::iterator mi = mapOrphanBlocksByPrev.lower_bound(hashPrev); + for (multimap<uint256, COrphanBlock*>::iterator mi = mapOrphanBlocksByPrev.lower_bound(hashPrev); mi != mapOrphanBlocksByPrev.upper_bound(hashPrev); ++mi) { - CBlock* pblockOrphan = (*mi).second; + CBlock block; + { + CDataStream ss(mi->second->vchBlock, SER_DISK, CLIENT_VERSION); + ss >> block; + } + block.BuildMerkleTree(); // Use a dummy CValidationState so someone can't setup nodes to counter-DoS based on orphan resolution (that is, feeding people an invalid block based on LegitBlockX in order to get anyone relaying LegitBlockX banned) CValidationState stateDummy; - if (AcceptBlock(*pblockOrphan, stateDummy)) - vWorkQueue.push_back(pblockOrphan->GetHash()); - mapOrphanBlocks.erase(pblockOrphan->GetHash()); - delete pblockOrphan; + if (AcceptBlock(block, stateDummy)) + vWorkQueue.push_back(mi->second->hashBlock); + mapOrphanBlocks.erase(mi->second->hashBlock); + delete mi->second; } mapOrphanBlocksByPrev.erase(hashPrev); } @@ -3331,7 +3355,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) if (!fImporting && !fReindex) pfrom->AskFor(inv); } else if (inv.type == MSG_BLOCK && mapOrphanBlocks.count(inv.hash)) { - PushGetBlocks(pfrom, chainActive.Tip(), GetOrphanRoot(mapOrphanBlocks[inv.hash])); + PushGetBlocks(pfrom, chainActive.Tip(), GetOrphanRoot(inv.hash)); } else if (nInv == nLastBlock) { // In case we are on a very long side-chain, it is possible that we already have // the last block in an inv bundle sent in response to getblocks. Try to detect @@ -4119,7 +4143,7 @@ public: mapBlockIndex.clear(); // orphan blocks - std::map<uint256, CBlock*>::iterator it2 = mapOrphanBlocks.begin(); + std::map<uint256, COrphanBlock*>::iterator it2 = mapOrphanBlocks.begin(); for (; it2 != mapOrphanBlocks.end(); it2++) delete (*it2).second; mapOrphanBlocks.clear(); @@ -209,7 +209,7 @@ public: std::string addrName; CService addrLocal; int nVersion; - // strSubVer is whatever byte array we read from the wire. However, this field is intended + // strSubVer is whatever byte array we read from the wire. However, this field is intended // to be printed out, displayed to humans in various forms and so on. So we sanitize it and // store the sanitized version in cleanSubVer. The original should be used when dealing with // the network or wire types and the cleaned string used when displayed or logged. @@ -264,7 +264,7 @@ public: int64_t nPingUsecStart; int64_t nPingUsecTime; bool fPingQueued; - + CNode(SOCKET hSocketIn, CAddress addrIn, std::string addrNameIn = "", bool fInboundIn=false) : ssSend(SER_NETWORK, INIT_PROTO_VERSION) { nServices = 0; diff --git a/src/qt/Makefile.am b/src/qt/Makefile.am index ac11625c86..274cebcf3a 100644 --- a/src/qt/Makefile.am +++ b/src/qt/Makefile.am @@ -84,8 +84,8 @@ QT_FORMS_UI = \ forms/openuridialog.ui \ forms/optionsdialog.ui \ forms/overviewpage.ui \ - forms/receiverequestdialog.ui \ forms/receivecoinsdialog.ui \ + forms/receiverequestdialog.ui \ forms/rpcconsole.ui \ forms/sendcoinsdialog.ui \ forms/sendcoinsentry.ui \ @@ -117,10 +117,10 @@ QT_MOC_CPP = \ moc_optionsmodel.cpp \ moc_overviewpage.cpp \ moc_paymentserver.cpp \ - moc_receiverequestdialog.cpp \ moc_qvalidatedlineedit.cpp \ moc_qvaluecombobox.cpp \ moc_receivecoinsdialog.cpp \ + moc_receiverequestdialog.cpp \ moc_recentrequeststablemodel.cpp \ moc_rpcconsole.cpp \ moc_sendcoinsdialog.cpp \ @@ -137,9 +137,15 @@ QT_MOC_CPP = \ moc_walletmodel.cpp \ moc_walletview.cpp -BITCOIN_MM = macdockiconhandler.mm macnotificationhandler.mm +BITCOIN_MM = \ + macdockiconhandler.mm \ + macnotificationhandler.mm -QT_MOC = intro.moc overviewpage.moc rpcconsole.moc bitcoin.moc +QT_MOC = \ + bitcoin.moc \ + intro.moc \ + overviewpage.moc \ + rpcconsole.moc QT_QRC_CPP = qrc_bitcoin.cpp QT_QRC = bitcoin.qrc @@ -175,19 +181,19 @@ BITCOIN_QT_H = \ overviewpage.h \ paymentrequestplus.h \ paymentserver.h \ - receivecoinsdialog.h \ - recentrequeststablemodel.h \ - receiverequestdialog.h \ qvalidatedlineedit.h \ qvaluecombobox.h \ + receivecoinsdialog.h \ + receiverequestdialog.h \ + recentrequeststablemodel.h \ rpcconsole.h \ sendcoinsdialog.h \ sendcoinsentry.h \ signverifymessagedialog.h \ splashscreen.h \ trafficgraphwidget.h \ - transactiondescdialog.h \ transactiondesc.h \ + transactiondescdialog.h \ transactionfilterproxy.h \ transactionrecord.h \ transactiontablemodel.h \ @@ -198,54 +204,54 @@ BITCOIN_QT_H = \ walletview.h RES_ICONS = \ - res/icons/bitcoin.png \ + res/icons/add.png \ res/icons/address-book.png \ - res/icons/quit.png \ - res/icons/send.png \ - res/icons/toolbar.png \ - res/icons/connect0_16.png \ - res/icons/connect1_16.png \ - res/icons/connect2_16.png \ - res/icons/connect3_16.png \ - res/icons/connect4_16.png \ - res/icons/transaction0.png \ - res/icons/transaction2.png \ + res/icons/bitcoin.ico \ + res/icons/bitcoin.png \ + res/icons/bitcoin_testnet.ico \ + res/icons/bitcoin_testnet.png \ res/icons/clock1.png \ res/icons/clock2.png \ res/icons/clock3.png \ res/icons/clock4.png \ res/icons/clock5.png \ res/icons/configure.png \ - res/icons/receive.png \ - res/icons/editpaste.png \ - res/icons/editcopy.png \ - res/icons/add.png \ - res/icons/bitcoin_testnet.png \ - res/icons/toolbar_testnet.png \ + res/icons/connect0_16.png \ + res/icons/connect1_16.png \ + res/icons/connect2_16.png \ + res/icons/connect3_16.png \ + res/icons/connect4_16.png \ + res/icons/debugwindow.png \ res/icons/edit.png \ + res/icons/editcopy.png \ + res/icons/editpaste.png \ + res/icons/export.png \ + res/icons/filesave.png \ res/icons/history.png \ + res/icons/key.png \ + res/icons/lock_closed.png \ + res/icons/lock_open.png \ res/icons/overview.png \ - res/icons/export.png \ - res/icons/synced.png \ + res/icons/qrcode.png \ + res/icons/quit.png \ + res/icons/receive.png \ res/icons/remove.png \ - res/icons/tx_mined.png \ + res/icons/send.png \ + res/icons/synced.png \ + res/icons/toolbar.png \ + res/icons/toolbar_testnet.png \ + res/icons/transaction0.png \ + res/icons/transaction2.png \ + res/icons/tx_inout.png \ res/icons/tx_input.png \ res/icons/tx_output.png \ - res/icons/tx_inout.png \ - res/icons/lock_closed.png \ - res/icons/lock_open.png \ - res/icons/key.png \ - res/icons/filesave.png \ - res/icons/qrcode.png \ - res/icons/debugwindow.png \ - res/icons/bitcoin.ico \ - res/icons/bitcoin_testnet.ico + res/icons/tx_mined.png BITCOIN_QT_CPP = \ aboutdialog.cpp \ + bitcoin.cpp \ bitcoinaddressvalidator.cpp \ bitcoinamountfield.cpp \ - bitcoin.cpp \ bitcoingui.cpp \ bitcoinunits.cpp \ clientmodel.cpp \ @@ -292,10 +298,12 @@ BITCOIN_QT_CPP += \ walletview.cpp endif -RES_IMAGES = res/images/about.png res/images/splash.png \ +RES_IMAGES = \ + res/images/about.png \ + res/images/splash.png \ res/images/splash_testnet.png -RES_MOVIES = res/movies/update_spinner.mng +RES_MOVIES = $(wildcard res/movies/spinner-*.png) BITCOIN_RC = res/bitcoin-qt-res.rc diff --git a/src/qt/aboutdialog.cpp b/src/qt/aboutdialog.cpp index 797ebf97ed..6581a19c18 100644 --- a/src/qt/aboutdialog.cpp +++ b/src/qt/aboutdialog.cpp @@ -16,7 +16,7 @@ AboutDialog::AboutDialog(QWidget *parent) : ui->setupUi(this); // Set current copyright year - ui->copyrightLabel->setText(tr("Copyright") + QString(" © 2009-%1 ").arg(COPYRIGHT_YEAR) + tr("The Bitcoin developers")); + ui->copyrightLabel->setText(tr("Copyright") + QString(" © 2009-%1 ").arg(COPYRIGHT_YEAR) + tr("The Bitcoin Core developers")); } void AboutDialog::setModel(ClientModel *model) diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index d04a49ebe7..3cf7e53c02 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -2,7 +2,10 @@ // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. +#if defined(HAVE_CONFIG_H) #include "bitcoin-config.h" +#endif + #include "bitcoingui.h" #include "clientmodel.h" @@ -356,7 +359,7 @@ void BitcoinApplication::requestShutdown() QWidget *shutdownWindow = new QWidget(); QVBoxLayout *layout = new QVBoxLayout(); layout->addWidget(new QLabel( - tr("Bitcoin Core is shutting down...\n") + + tr("Bitcoin Core is shutting down...") + "<br /><br />" + tr("Do not shut down the computer until this window disappears."))); shutdownWindow->setLayout(layout); @@ -553,15 +556,6 @@ int main(int argc, char *argv[]) // Subscribe to global signals from core uiInterface.InitMessage.connect(InitMessage); - // Show help message immediately after parsing command-line options (for "-lang") and setting locale, - // but before showing splash screen. - if (mapArgs.count("-?") || mapArgs.count("--help")) - { - GUIUtil::HelpMessageBox help; - help.showOrPrint(); - return 1; - } - if (GetBoolArg("-splash", true) && !GetBoolArg("-min", false)) app.createSplashScreen(isaTestNet); diff --git a/src/qt/bitcoin.qrc b/src/qt/bitcoin.qrc index 3c3220c2b3..746b5a4092 100644 --- a/src/qt/bitcoin.qrc +++ b/src/qt/bitcoin.qrc @@ -47,7 +47,41 @@ <file alias="splash_testnet">res/images/splash_testnet.png</file> </qresource> <qresource prefix="/movies"> - <file alias="update_spinner">res/movies/update_spinner.mng</file> + <file alias="spinner-000">res/movies/spinner-000.png</file> + <file alias="spinner-001">res/movies/spinner-001.png</file> + <file alias="spinner-002">res/movies/spinner-002.png</file> + <file alias="spinner-003">res/movies/spinner-003.png</file> + <file alias="spinner-004">res/movies/spinner-004.png</file> + <file alias="spinner-005">res/movies/spinner-005.png</file> + <file alias="spinner-006">res/movies/spinner-006.png</file> + <file alias="spinner-007">res/movies/spinner-007.png</file> + <file alias="spinner-008">res/movies/spinner-008.png</file> + <file alias="spinner-009">res/movies/spinner-009.png</file> + <file alias="spinner-010">res/movies/spinner-010.png</file> + <file alias="spinner-011">res/movies/spinner-011.png</file> + <file alias="spinner-012">res/movies/spinner-012.png</file> + <file alias="spinner-013">res/movies/spinner-013.png</file> + <file alias="spinner-014">res/movies/spinner-014.png</file> + <file alias="spinner-015">res/movies/spinner-015.png</file> + <file alias="spinner-016">res/movies/spinner-016.png</file> + <file alias="spinner-017">res/movies/spinner-017.png</file> + <file alias="spinner-018">res/movies/spinner-018.png</file> + <file alias="spinner-019">res/movies/spinner-019.png</file> + <file alias="spinner-020">res/movies/spinner-020.png</file> + <file alias="spinner-021">res/movies/spinner-021.png</file> + <file alias="spinner-022">res/movies/spinner-022.png</file> + <file alias="spinner-023">res/movies/spinner-023.png</file> + <file alias="spinner-024">res/movies/spinner-024.png</file> + <file alias="spinner-025">res/movies/spinner-025.png</file> + <file alias="spinner-026">res/movies/spinner-026.png</file> + <file alias="spinner-027">res/movies/spinner-027.png</file> + <file alias="spinner-028">res/movies/spinner-028.png</file> + <file alias="spinner-029">res/movies/spinner-029.png</file> + <file alias="spinner-030">res/movies/spinner-030.png</file> + <file alias="spinner-031">res/movies/spinner-031.png</file> + <file alias="spinner-032">res/movies/spinner-032.png</file> + <file alias="spinner-033">res/movies/spinner-033.png</file> + <file alias="spinner-034">res/movies/spinner-034.png</file> </qresource> <qresource prefix="/translations"> <file alias="ach">locale/bitcoin_ach.qm</file> diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 22c41a6201..692fb6dc1d 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -39,7 +39,6 @@ #include <QMenuBar> #include <QMessageBox> #include <QMimeData> -#include <QMovie> #include <QProgressBar> #include <QSettings> #include <QStackedWidget> @@ -68,7 +67,8 @@ BitcoinGUI::BitcoinGUI(bool fIsTestnet, QWidget *parent) : trayIcon(0), notificator(0), rpcConsole(0), - prevBlocks(0) + prevBlocks(0), + spinnerFrame(0) { GUIUtil::restoreWindowGeometry("nWindow", QSize(850, 550), this); @@ -187,8 +187,6 @@ BitcoinGUI::BitcoinGUI(bool fIsTestnet, QWidget *parent) : statusBar()->addWidget(progressBar); statusBar()->addPermanentWidget(frameBlocks); - syncIconMovie = new QMovie(":/movies/update_spinner", "mng", this); - connect(openRPCConsoleAction, SIGNAL(triggered()), rpcConsole, SLOT(show())); // prevents an oben debug window from becoming stuck/unusable on client shutdown @@ -302,12 +300,12 @@ void BitcoinGUI::createActions(bool fIsTestnet) openRPCConsoleAction = new QAction(QIcon(":/icons/debugwindow"), tr("&Debug window"), this); openRPCConsoleAction->setStatusTip(tr("Open debugging and diagnostic console")); - usedSendingAddressesAction = new QAction(QIcon(":/icons/address-book"), tr("&Used sending addresses..."), this); + usedSendingAddressesAction = new QAction(QIcon(":/icons/address-book"), tr("&Sending addresses..."), this); usedSendingAddressesAction->setStatusTip(tr("Show the list of used sending addresses and labels")); - usedReceivingAddressesAction = new QAction(QIcon(":/icons/address-book"), tr("Used &receiving addresses..."), this); + usedReceivingAddressesAction = new QAction(QIcon(":/icons/address-book"), tr("&Receiving addresses..."), this); usedReceivingAddressesAction->setStatusTip(tr("Show the list of used receiving addresses and labels")); - openAction = new QAction(QApplication::style()->standardIcon(QStyle::SP_FileIcon), tr("Open URI..."), this); + openAction = new QAction(QApplication::style()->standardIcon(QStyle::SP_FileIcon), tr("Open &URI..."), this); openAction->setStatusTip(tr("Open a bitcoin: URI or payment request")); connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit())); @@ -684,9 +682,13 @@ void BitcoinGUI::setNumBlocks(int count, int nTotalBlocks) progressBar->setVisible(true); tooltip = tr("Catching up...") + QString("<br>") + tooltip; - labelBlocksIcon->setMovie(syncIconMovie); if(count != prevBlocks) - syncIconMovie->jumpToNextFrame(); + { + labelBlocksIcon->setPixmap(QIcon(QString( + ":/movies/spinner-%1").arg(spinnerFrame, 3, 10, QChar('0'))) + .pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE)); + spinnerFrame = (spinnerFrame + 1) % SPINNER_FRAMES; + } prevBlocks = count; #ifdef ENABLE_WALLET diff --git a/src/qt/bitcoingui.h b/src/qt/bitcoingui.h index 1038e2739c..d5bbdca484 100644 --- a/src/qt/bitcoingui.h +++ b/src/qt/bitcoingui.h @@ -98,9 +98,9 @@ private: Notificator *notificator; RPCConsole *rpcConsole; - QMovie *syncIconMovie; /** Keep track of previous number of blocks, to detect progress */ int prevBlocks; + int spinnerFrame; /** Create the main UI actions. */ void createActions(bool fIsTestnet); diff --git a/src/qt/bitcoinstrings.cpp b/src/qt/bitcoinstrings.cpp index 183a98061d..b88c7ec290 100644 --- a/src/qt/bitcoinstrings.cpp +++ b/src/qt/bitcoinstrings.cpp @@ -40,6 +40,9 @@ QT_TRANSLATE_NOOP("bitcoin-core", "" "be solved instantly. This is intended for regression testing tools and app " "development."), QT_TRANSLATE_NOOP("bitcoin-core", "" +"Enter regression test mode, which uses a special chain in which blocks can " +"be solved instantly."), +QT_TRANSLATE_NOOP("bitcoin-core", "" "Error: The transaction was rejected! This might happen if some of the coins " "in your wallet were already spent, such as if you used a copy of wallet.dat " "and coins were spent in the copy but not marked as spent here."), @@ -119,6 +122,7 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Connect to JSON-RPC on <port> (default: 8332 QT_TRANSLATE_NOOP("bitcoin-core", "Connect to a node to retrieve peer addresses, and disconnect"), QT_TRANSLATE_NOOP("bitcoin-core", "Corrupted block database detected"), QT_TRANSLATE_NOOP("bitcoin-core", "Discover own IP address (default: 1 when listening and no -externalip)"), +QT_TRANSLATE_NOOP("bitcoin-core", "Do not load the wallet and disable wallet RPC calls"), QT_TRANSLATE_NOOP("bitcoin-core", "Do you want to rebuild the block database now?"), QT_TRANSLATE_NOOP("bitcoin-core", "Done loading"), QT_TRANSLATE_NOOP("bitcoin-core", "Error initializing block database"), @@ -185,7 +189,6 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Select SOCKS version for -proxy (4 or 5, defa QT_TRANSLATE_NOOP("bitcoin-core", "Send command to Bitcoin server"), QT_TRANSLATE_NOOP("bitcoin-core", "Send commands to node running on <ip> (default: 127.0.0.1)"), QT_TRANSLATE_NOOP("bitcoin-core", "Send trace/debug info to console instead of debug.log file"), -QT_TRANSLATE_NOOP("bitcoin-core", "Send trace/debug info to debugger"), QT_TRANSLATE_NOOP("bitcoin-core", "Server certificate file (default: server.cert)"), QT_TRANSLATE_NOOP("bitcoin-core", "Server private key (default: server.pem)"), QT_TRANSLATE_NOOP("bitcoin-core", "Set database cache size in megabytes (default: 25)"), @@ -204,6 +207,7 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Specify your own public address"), QT_TRANSLATE_NOOP("bitcoin-core", "Start Bitcoin server"), QT_TRANSLATE_NOOP("bitcoin-core", "System error: "), QT_TRANSLATE_NOOP("bitcoin-core", "This help message"), +QT_TRANSLATE_NOOP("bitcoin-core", "This is intended for regression testing tools and app development."), QT_TRANSLATE_NOOP("bitcoin-core", "Threshold for disconnecting misbehaving peers (default: 100)"), QT_TRANSLATE_NOOP("bitcoin-core", "To use the %s option"), QT_TRANSLATE_NOOP("bitcoin-core", "Transaction amount too small"), @@ -225,6 +229,7 @@ QT_TRANSLATE_NOOP("bitcoin-core", "Verifying wallet..."), QT_TRANSLATE_NOOP("bitcoin-core", "Wait for RPC server to start"), QT_TRANSLATE_NOOP("bitcoin-core", "Wallet %s resides outside data directory %s"), QT_TRANSLATE_NOOP("bitcoin-core", "Wallet needed to be rewritten: restart Bitcoin to complete"), +QT_TRANSLATE_NOOP("bitcoin-core", "Wallet options:"), QT_TRANSLATE_NOOP("bitcoin-core", "Warning"), QT_TRANSLATE_NOOP("bitcoin-core", "Warning: Deprecated argument -debugnet ignored, use -debug=net"), QT_TRANSLATE_NOOP("bitcoin-core", "Warning: This version is obsolete, upgrade required!"), diff --git a/src/qt/forms/optionsdialog.ui b/src/qt/forms/optionsdialog.ui index 9056ab7696..e0d99aac39 100644 --- a/src/qt/forms/optionsdialog.ui +++ b/src/qt/forms/optionsdialog.ui @@ -473,7 +473,7 @@ <item> <widget class="QLabel" name="overriddenByCommandLineInfoLabel"> <property name="text"> - <string>Active command-line options that override above options: </string> + <string>Active command-line options that override above options:</string> </property> <property name="textFormat"> <enum>Qt::PlainText</enum> diff --git a/src/qt/forms/overviewpage.ui b/src/qt/forms/overviewpage.ui index 9d0d838daa..d1ca969431 100644 --- a/src/qt/forms/overviewpage.ui +++ b/src/qt/forms/overviewpage.ui @@ -90,6 +90,8 @@ </layout> </item> <item> + <layout class="QHBoxLayout" name="horizontalLayout_3"> + <item> <layout class="QFormLayout" name="formLayout_2"> <property name="fieldGrowthPolicy"> <enum>QFormLayout::AllNonFixedFieldsGrow</enum> @@ -234,6 +236,21 @@ </item> </layout> </item> + <item> + <spacer name="horizontalSpacer_3"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> </layout> </widget> </item> diff --git a/src/qt/forms/receivecoinsdialog.ui b/src/qt/forms/receivecoinsdialog.ui index e7138f5371..8242763e77 100644 --- a/src/qt/forms/receivecoinsdialog.ui +++ b/src/qt/forms/receivecoinsdialog.ui @@ -202,7 +202,7 @@ </font> </property> <property name="text"> - <string>Previously requested payments</string> + <string>Requested payments</string> </property> </widget> </item> diff --git a/src/qt/guiconstants.h b/src/qt/guiconstants.h index 6c9fa6a755..d1a601706b 100644 --- a/src/qt/guiconstants.h +++ b/src/qt/guiconstants.h @@ -38,4 +38,7 @@ static const int MAX_PAYMENT_REQUEST_SIZE = 50000; // bytes /* QRCodeDialog -- size of exported QR Code image */ #define EXPORT_IMAGE_SIZE 256 +/* Number of frames in spinner animation */ +#define SPINNER_FRAMES 35 + #endif // GUICONSTANTS_H diff --git a/src/qt/locale/bitcoin_en.ts b/src/qt/locale/bitcoin_en.ts index 368a4d6003..f52544687b 100644 --- a/src/qt/locale/bitcoin_en.ts +++ b/src/qt/locale/bitcoin_en.ts @@ -322,24 +322,43 @@ This product includes software developed by the OpenSSL Project for use in the O </message> </context> <context> + <name>BitcoinApplication</name> + <message> + <location filename="../bitcoin.cpp" line="+362"/> + <source>Bitcoin Core is shutting down... +</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Do not shut down the computer until this window disappears.</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>BitcoinGUI</name> <message> - <location filename="../bitcoingui.cpp" line="+260"/> + <location filename="../bitcoingui.cpp" line="+297"/> <source>Sign &message...</source> <translation>Sign &message...</translation> </message> <message> - <location line="+290"/> + <location line="+323"/> <source>Synchronizing with network...</source> <translation>Synchronizing with network...</translation> </message> <message> - <location line="-360"/> + <location line="-395"/> <source>&Overview</source> <translation>&Overview</translation> </message> <message> - <location line="+1"/> + <location line="-139"/> + <source>Node</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+140"/> <source>Show general overview of wallet</source> <translation>Show general overview of wallet</translation> </message> @@ -354,7 +373,7 @@ This product includes software developed by the OpenSSL Project for use in the O <translation>Browse transaction history</translation> </message> <message> - <location line="+15"/> + <location line="+17"/> <source>E&xit</source> <translation>E&xit</translation> </message> @@ -400,7 +419,22 @@ This product includes software developed by the OpenSSL Project for use in the O <translation>&Change Passphrase...</translation> </message> <message> - <location line="+295"/> + <location line="+10"/> + <source>&Sending addresses...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> + <source>&Receiving addresses...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>Open &URI...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+313"/> <source>Importing blocks from disk...</source> <translation>Importing blocks from disk...</translation> </message> @@ -410,12 +444,12 @@ This product includes software developed by the OpenSSL Project for use in the O <translation>Reindexing blocks on disk...</translation> </message> <message> - <location line="-358"/> + <location line="-393"/> <source>Send coins to a Bitcoin address</source> <translation>Send coins to a Bitcoin address</translation> </message> <message> - <location line="+47"/> + <location line="+49"/> <source>Modify configuration options for Bitcoin</source> <translation>Modify configuration options for Bitcoin</translation> </message> @@ -445,18 +479,17 @@ This product includes software developed by the OpenSSL Project for use in the O <translation>&Verify message...</translation> </message> <message> - <location line="+375"/> + <location line="+414"/> <source>Bitcoin</source> <translation>Bitcoin</translation> </message> <message> - <location line="-563"/> - <location line="+10"/> + <location line="-629"/> <source>Wallet</source> <translation>Wallet</translation> </message> <message> - <location line="+113"/> + <location line="+148"/> <source>&Send</source> <translation>&Send</translation> </message> @@ -466,7 +499,7 @@ This product includes software developed by the OpenSSL Project for use in the O <translation>&Receive</translation> </message> <message> - <location line="+44"/> + <location line="+46"/> <location line="+2"/> <source>&Show / Hide</source> <translation>&Show / Hide</translation> @@ -492,86 +525,70 @@ This product includes software developed by the OpenSSL Project for use in the O <translation>Verify messages to ensure they were signed with specified Bitcoin addresses</translation> </message> <message> - <location line="+39"/> + <location line="+44"/> <source>&File</source> <translation>&File</translation> </message> <message> - <location line="+11"/> + <location line="+14"/> <source>&Settings</source> <translation>&Settings</translation> </message> <message> - <location line="+6"/> + <location line="+9"/> <source>&Help</source> <translation>&Help</translation> </message> <message> - <location line="+9"/> + <location line="+14"/> <source>Tabs toolbar</source> <translation>Tabs toolbar</translation> </message> <message> - <location line="-244"/> - <location line="+321"/> + <location line="-281"/> + <location line="+373"/> <source>[testnet]</source> <translation>[testnet]</translation> </message> <message> - <location line="-331"/> - <location line="+10"/> + <location line="-398"/> <source>Bitcoin Core</source> <translation type="unfinished">Bitcoin Core</translation> </message> <message> - <location line="+121"/> + <location line="+165"/> <source>Request payments (generates QR codes and bitcoin: URIs)</source> <translation type="unfinished"></translation> </message> <message> - <location line="+27"/> + <location line="+29"/> <location line="+2"/> <source>&About Bitcoin Core</source> <translation type="unfinished"></translation> </message> <message> - <location line="+34"/> - <source>&Used sending addresses...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> + <location line="+35"/> <source>Show the list of used sending addresses and labels</source> <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> - <source>Used &receiving addresses...</source> - <translation type="unfinished"></translation> - </message> - <message> - <location line="+1"/> - <source>Show the list of used receiving addresses and labels</source> - <translation type="unfinished"></translation> - </message> - <message> <location line="+2"/> - <source>Open URI...</source> + <source>Show the list of used receiving addresses and labels</source> <translation type="unfinished"></translation> </message> <message> - <location line="+1"/> + <location line="+3"/> <source>Open a bitcoin: URI or payment request</source> <translation type="unfinished"></translation> </message> <message> - <location line="+126"/> + <location line="+157"/> <location line="+5"/> <source>Bitcoin client</source> <translation>Bitcoin client</translation> </message> <message numerus="yes"> - <location line="+133"/> + <location line="+135"/> <source>%n active connection(s) to Bitcoin network</source> <translation> <numerusform>%n active connection to Bitcoin network</numerusform> @@ -594,7 +611,7 @@ This product includes software developed by the OpenSSL Project for use in the O <translation>Processed %1 blocks of transaction history.</translation> </message> <message numerus="yes"> - <location line="+20"/> + <location line="+23"/> <source>%n hour(s)</source> <translation> <numerusform>%n hour</numerusform> @@ -623,7 +640,7 @@ This product includes software developed by the OpenSSL Project for use in the O <translation>%1 behind</translation> </message> <message> - <location line="+14"/> + <location line="+17"/> <source>Last received block was generated %1 ago.</source> <translation>Last received block was generated %1 ago.</translation> </message> @@ -648,27 +665,17 @@ This product includes software developed by the OpenSSL Project for use in the O <translation>Information</translation> </message> <message> - <location line="+77"/> - <source>This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee?</source> - <translation>This transaction is over the size limit. You can still send it for a fee of %1, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee?</translation> - </message> - <message> - <location line="-152"/> + <location line="-81"/> <source>Up to date</source> <translation>Up to date</translation> </message> <message> - <location line="+31"/> + <location line="+34"/> <source>Catching up...</source> <translation>Catching up...</translation> </message> <message> - <location line="+124"/> - <source>Confirm transaction fee</source> - <translation>Confirm transaction fee</translation> - </message> - <message> - <location line="+8"/> + <location line="+126"/> <source>Sent transaction</source> <translation>Sent transaction</translation> </message> @@ -691,7 +698,7 @@ Address: %4 </translation> </message> <message> - <location line="+67"/> + <location line="+69"/> <source>Wallet is <b>encrypted</b> and currently <b>unlocked</b></source> <translation>Wallet is <b>encrypted</b> and currently <b>unlocked</b></translation> </message> @@ -701,7 +708,7 @@ Address: %4 <translation>Wallet is <b>encrypted</b> and currently <b>locked</b></translation> </message> <message> - <location filename="../bitcoin.cpp" line="+116"/> + <location filename="../bitcoin.cpp" line="+78"/> <source>A fatal error occurred. Bitcoin can no longer continue safely and will quit.</source> <translation>A fatal error occurred. Bitcoin can no longer continue safely and will quit.</translation> </message> @@ -923,7 +930,12 @@ Address: %4 <translation type="unfinished"></translation> </message> <message> - <location line="+171"/> + <location line="+31"/> + <source>none</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+140"/> <source>Dust</source> <translation type="unfinished"></translation> </message> @@ -960,7 +972,7 @@ Address: %4 </message> <message> <location line="+1"/> - <source>This label turns red, if the priority is smaller than "medium"</source> + <source>This label turns red, if the priority is smaller than "medium".</source> <translation type="unfinished"></translation> </message> <message> @@ -1029,7 +1041,7 @@ Address: %4 <translation>&Address</translation> </message> <message> - <location filename="../editaddressdialog.cpp" line="+25"/> + <location filename="../editaddressdialog.cpp" line="+28"/> <source>New receiving address</source> <translation>New receiving address</translation> </message> @@ -1240,7 +1252,7 @@ Address: %4 <translation>Options</translation> </message> <message> - <location line="+16"/> + <location line="+13"/> <source>&Main</source> <translation>&Main</translation> </message> @@ -1265,7 +1277,47 @@ Address: %4 <translation>&Start Bitcoin on system login</translation> </message> <message> - <location line="+35"/> + <location line="+9"/> + <source>Size of &database cache</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+13"/> + <source>Set database cache size in megabytes (default: 25)</source> + <translation type="unfinished">Set database cache size in megabytes (default: 25)</translation> + </message> + <message> + <location line="+13"/> + <source>MB</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+27"/> + <source>Number of script &verification threads</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+13"/> + <source>Set the number of script verification threads (up to 16, 0 = auto, <0 = leave that many cores free, default: 0)</source> + <translation type="unfinished">Set the number of script verification threads (up to 16, 0 = auto, <0 = leave that many cores free, default: 0)</translation> + </message> + <message> + <location line="+58"/> + <source>Connect to the Bitcoin network through a SOCKS proxy.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> + <source>&Connect through SOCKS proxy (default proxy):</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+34"/> + <source>IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+267"/> <source>Reset all client options to default.</source> <translation>Reset all client options to default.</translation> </message> @@ -1275,7 +1327,7 @@ Address: %4 <translation>&Reset Options</translation> </message> <message> - <location line="+13"/> + <location line="-323"/> <source>&Network</source> <translation>&Network</translation> </message> @@ -1290,32 +1342,17 @@ Address: %4 <translation>Map port using &UPnP</translation> </message> <message> - <location line="+7"/> - <source>Connect to the Bitcoin network through a SOCKS proxy (e.g. when connecting through Tor).</source> - <translation>Connect to the Bitcoin network through a SOCKS proxy (e.g. when connecting through Tor).</translation> - </message> - <message> - <location line="+3"/> - <source>&Connect through SOCKS proxy:</source> - <translation>&Connect through SOCKS proxy:</translation> - </message> - <message> - <location line="+9"/> + <location line="+19"/> <source>Proxy &IP:</source> <translation>Proxy &IP:</translation> </message> <message> - <location line="+19"/> - <source>IP address of the proxy (e.g. 127.0.0.1)</source> - <translation>IP address of the proxy (e.g. 127.0.0.1)</translation> - </message> - <message> - <location line="+7"/> + <location line="+32"/> <source>&Port:</source> <translation>&Port:</translation> </message> <message> - <location line="+19"/> + <location line="+25"/> <source>Port of the proxy (e.g. 9050)</source> <translation>Port of the proxy (e.g. 9050)</translation> </message> @@ -1400,7 +1437,12 @@ Address: %4 <translation type="unfinished"></translation> </message> <message> - <location line="+71"/> + <location line="+29"/> + <source>Active command-line options that override above options: </source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+107"/> <source>&OK</source> <translation>&OK</translation> </message> @@ -1410,44 +1452,38 @@ Address: %4 <translation>&Cancel</translation> </message> <message> - <location line="+10"/> - <source>&Apply</source> - <translation>&Apply</translation> - </message> - <message> - <location filename="../optionsdialog.cpp" line="+63"/> + <location filename="../optionsdialog.cpp" line="+68"/> <source>default</source> <translation>default</translation> </message> <message> - <location line="+131"/> + <location line="+57"/> + <source>none</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+75"/> <source>Confirm options reset</source> <translation>Confirm options reset</translation> </message> <message> <location line="+1"/> - <source>Some settings may require a client restart to take effect.</source> - <translation>Some settings may require a client restart to take effect.</translation> - </message> - <message> - <location line="+0"/> - <source>Do you want to proceed?</source> - <translation>Do you want to proceed?</translation> + <location line="+29"/> + <source>Client restart required to activate changes.</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+42"/> - <location line="+9"/> - <source>Warning</source> - <translation>Warning</translation> + <location line="-29"/> + <source>Client will be shutdown, do you want to proceed?</source> + <translation type="unfinished"></translation> </message> <message> - <location line="-9"/> - <location line="+9"/> - <source>This setting will take effect after restarting Bitcoin.</source> - <translation>This setting will take effect after restarting Bitcoin.</translation> + <location line="+33"/> + <source>This change would require a client restart.</source> + <translation type="unfinished"></translation> </message> <message> - <location line="+29"/> + <location line="+34"/> <source>The supplied proxy address is invalid.</source> <translation>The supplied proxy address is invalid.</translation> </message> @@ -1461,22 +1497,22 @@ Address: %4 </message> <message> <location line="+50"/> - <location line="+214"/> + <location line="+231"/> <source>The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet.</source> <translation>The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet.</translation> </message> <message> - <location line="-140"/> + <location line="-155"/> <source>Unconfirmed:</source> <translation>Unconfirmed:</translation> </message> <message> - <location line="-81"/> + <location line="-83"/> <source>Wallet</source> <translation>Wallet</translation> </message> <message> - <location line="+49"/> + <location line="+51"/> <source>Confirmed:</source> <translation>Confirmed:</translation> </message> @@ -1511,7 +1547,7 @@ Address: %4 <translation>Your current total balance</translation> </message> <message> - <location line="+56"/> + <location line="+71"/> <source><b>Recent transactions</b></source> <translation><b>Recent transactions</b></translation> </message> @@ -1525,7 +1561,8 @@ Address: %4 <context> <name>PaymentServer</name> <message> - <location filename="../paymentserver.cpp" line="+397"/> + <location filename="../paymentserver.cpp" line="+400"/> + <location line="+13"/> <source>URI handling</source> <translation type="unfinished">URI handling</translation> </message> @@ -1535,24 +1572,42 @@ Address: %4 <translation type="unfinished">URI can not be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters.</translation> </message> <message> - <location line="+91"/> + <location line="+96"/> <source>Requested payment amount of %1 is too small (considered dust).</source> <translation type="unfinished"></translation> </message> <message> - <location line="-204"/> - <location line="+195"/> + <location line="-216"/> + <location line="+207"/> <location line="+13"/> + <location line="+95"/> + <location line="+18"/> + <location line="+16"/> <source>Payment request error</source> <translation type="unfinished"></translation> </message> <message> - <location line="-207"/> + <location line="-348"/> <source>Cannot start bitcoin: click-to-pay handler</source> <translation type="unfinished"></translation> </message> <message> - <location line="+195"/> + <location line="+106"/> + <source>Payment request fetch URL is invalid: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+27"/> + <source>Payment request file handling</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> + <source>Payment request file can not be read or processed! This can be caused by an invalid payment request file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+73"/> <source>Unverified payment requests to custom payment scripts are unsupported.</source> <translation type="unfinished"></translation> </message> @@ -1562,24 +1617,27 @@ Address: %4 <translation type="unfinished"></translation> </message> <message> - <location line="+42"/> + <location line="+43"/> <source>Error communicating with %1: %2</source> <translation type="unfinished"></translation> </message> <message> - <location line="+28"/> + <location line="+24"/> + <source>Payment request can not be parsed or processed!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+11"/> <source>Bad response from server %1</source> <translation type="unfinished"></translation> </message> <message> - <location line="+32"/> + <location line="+33"/> <source>Payment acknowledged</source> <translation type="unfinished"></translation> </message> <message> - <location line="-55"/> - <location line="+27"/> - <location line="+17"/> + <location line="-11"/> <source>Network request error</source> <translation type="unfinished"></translation> </message> @@ -1587,18 +1645,18 @@ Address: %4 <context> <name>QObject</name> <message> - <location filename="../bitcoin.cpp" line="+119"/> - <location line="+5"/> + <location filename="../bitcoin.cpp" line="+71"/> + <location line="+11"/> <source>Bitcoin</source> <translation>Bitcoin</translation> </message> <message> - <location line="-4"/> + <location line="+1"/> <source>Error: Specified data directory "%1" does not exist.</source> <translation>Error: Specified data directory "%1" does not exist.</translation> </message> <message> - <location line="+4"/> + <location line="-12"/> <source>Error: Invalid combination of -regtest and -testnet.</source> <translation type="unfinished"></translation> </message> @@ -1640,7 +1698,8 @@ Address: %4 <location line="+23"/> <location line="+23"/> <location line="+36"/> - <location line="+53"/> + <location line="+23"/> + <location line="+36"/> <location line="+23"/> <location line="+23"/> <location filename="../rpcconsole.cpp" line="+360"/> @@ -1648,7 +1707,7 @@ Address: %4 <translation>N/A</translation> </message> <message> - <location line="-217"/> + <location line="-223"/> <source>Client version</source> <translation>Client version</translation> </message> @@ -1663,7 +1722,12 @@ Address: %4 <translation type="unfinished"></translation> </message> <message> - <location line="+78"/> + <location line="+25"/> + <source>General</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+53"/> <source>Using OpenSSL version</source> <translation>Using OpenSSL version</translation> </message> @@ -1679,16 +1743,16 @@ Address: %4 </message> <message> <location line="+7"/> - <source>Number of connections</source> - <translation>Number of connections</translation> + <source>Name</source> + <translation type="unfinished"></translation> </message> <message> <location line="+23"/> - <source>On testnet</source> - <translation>On testnet</translation> + <source>Number of connections</source> + <translation>Number of connections</translation> </message> <message> - <location line="+23"/> + <location line="+29"/> <source>Block chain</source> <translation>Block chain</translation> </message> @@ -1753,17 +1817,12 @@ Address: %4 <translation type="unfinished"></translation> </message> <message> - <location line="-541"/> + <location line="-547"/> <source>Build date</source> <translation>Build date</translation> </message> <message> - <location line="-79"/> - <source>Bitcoin Core</source> - <translation>Bitcoin Core</translation> - </message> - <message> - <location line="+279"/> + <location line="+206"/> <source>Debug log file</source> <translation>Debug log file</translation> </message> @@ -1897,7 +1956,7 @@ Address: %4 </message> <message> <location line="+47"/> - <source>Previously requested payments</source> + <source>Requested payments</source> <translation type="unfinished"></translation> </message> <message> @@ -1992,7 +2051,7 @@ Address: %4 <context> <name>RecentRequestsTableModel</name> <message> - <location filename="../recentrequeststablemodel.cpp" line="+14"/> + <location filename="../recentrequeststablemodel.cpp" line="+17"/> <source>Date</source> <translation type="unfinished">Date</translation> </message> @@ -2012,7 +2071,7 @@ Address: %4 <translation type="unfinished">Amount</translation> </message> <message> - <location line="+36"/> + <location line="+38"/> <source>(no label)</source> <translation type="unfinished">(no label)</translation> </message> @@ -2027,7 +2086,7 @@ Address: %4 <message> <location filename="../forms/sendcoinsdialog.ui" line="+14"/> <location filename="../sendcoinsdialog.cpp" line="+381"/> - <location line="+81"/> + <location line="+80"/> <source>Send Coins</source> <translation>Send Coins</translation> </message> @@ -2137,7 +2196,7 @@ Address: %4 <translation>S&end</translation> </message> <message> - <location filename="../sendcoinsdialog.cpp" line="-229"/> + <location filename="../sendcoinsdialog.cpp" line="-228"/> <source>Confirm send coins</source> <translation>Confirm send coins</translation> </message> @@ -2240,22 +2299,22 @@ Address: %4 <translation type="unfinished"></translation> </message> <message> - <location line="+113"/> + <location line="+112"/> <source>Warning: Invalid Bitcoin address</source> <translation type="unfinished"></translation> </message> <message> - <location line="+13"/> + <location line="+21"/> <source>(no label)</source> <translation type="unfinished">(no label)</translation> </message> <message> - <location line="+8"/> + <location line="-11"/> <source>Warning: Unknown change address</source> <translation type="unfinished"></translation> </message> <message> - <location line="-378"/> + <location line="-366"/> <source>Are you sure you want to send?</source> <translation type="unfinished"></translation> </message> @@ -2565,7 +2624,7 @@ Address: %4 <context> <name>SplashScreen</name> <message> - <location filename="../splashscreen.cpp" line="+26"/> + <location filename="../splashscreen.cpp" line="+28"/> <source>Bitcoin Core</source> <translation type="unfinished">Bitcoin Core</translation> </message> @@ -2811,8 +2870,13 @@ Address: %4 <source>Amount</source> <translation>Amount</translation> </message> + <message> + <location line="+59"/> + <source>Immature (%1 confirmations, will be available after %2)</source> + <translation type="unfinished"></translation> + </message> <message numerus="yes"> - <location line="+57"/> + <location line="+16"/> <source>Open for %n more block(s)</source> <translation> <numerusform>Open for %n more block</numerusform> @@ -2835,20 +2899,13 @@ Address: %4 <translation>Unconfirmed (%1 of %2 confirmations)</translation> </message> <message> - <location line="+3"/> + <location line="-22"/> + <location line="+25"/> <source>Confirmed (%1 confirmations)</source> <translation>Confirmed (%1 confirmations)</translation> </message> - <message numerus="yes"> - <location line="+8"/> - <source>Mined balance will be available when it matures in %n more block(s)</source> - <translation> - <numerusform>Mined balance will be available when it matures in %n more block</numerusform> - <numerusform>Mined balance will be available when it matures in %n more blocks</numerusform> - </translation> - </message> <message> - <location line="+5"/> + <location line="-22"/> <source>This block was not received by any other nodes and will probably not be accepted!</source> <translation>This block was not received by any other nodes and will probably not be accepted!</translation> </message> @@ -2858,7 +2915,7 @@ Address: %4 <translation>Generated but not accepted</translation> </message> <message> - <location line="+43"/> + <location line="+62"/> <source>Received with</source> <translation>Received with</translation> </message> @@ -3154,7 +3211,7 @@ Address: %4 <context> <name>bitcoin-core</name> <message> - <location filename="../bitcoinstrings.cpp" line="+217"/> + <location filename="../bitcoinstrings.cpp" line="+221"/> <source>Usage:</source> <translation>Usage:</translation> </message> @@ -3174,7 +3231,7 @@ Address: %4 <translation>Options:</translation> </message> <message> - <location line="+23"/> + <location line="+22"/> <source>Specify configuration file (default: bitcoin.conf)</source> <translation>Specify configuration file (default: bitcoin.conf)</translation> </message> @@ -3194,7 +3251,7 @@ Address: %4 <translation>Set database cache size in megabytes (default: 25)</translation> </message> <message> - <location line="-27"/> + <location line="-26"/> <source>Listen for connections on <port> (default: 8333 or testnet: 18333)</source> <translation>Listen for connections on <port> (default: 8333 or testnet: 18333)</translation> </message> @@ -3204,7 +3261,7 @@ Address: %4 <translation>Maintain at most <n> connections to peers (default: 125)</translation> </message> <message> - <location line="-50"/> + <location line="-51"/> <source>Connect to a node to retrieve peer addresses, and disconnect</source> <translation>Connect to a node to retrieve peer addresses, and disconnect</translation> </message> @@ -3214,22 +3271,22 @@ Address: %4 <translation>Specify your own public address</translation> </message> <message> - <location line="+4"/> + <location line="+5"/> <source>Threshold for disconnecting misbehaving peers (default: 100)</source> <translation>Threshold for disconnecting misbehaving peers (default: 100)</translation> </message> <message> - <location line="-147"/> + <location line="-148"/> <source>Number of seconds to keep misbehaving peers from reconnecting (default: 86400)</source> <translation>Number of seconds to keep misbehaving peers from reconnecting (default: 86400)</translation> </message> <message> - <location line="-33"/> + <location line="-36"/> <source>An error occurred while setting up the RPC port %u for listening on IPv4: %s</source> <translation>An error occurred while setting up the RPC port %u for listening on IPv4: %s</translation> </message> <message> - <location line="+31"/> + <location line="+34"/> <source>Listen for JSON-RPC connections on <port> (default: 8332 or testnet: 18332)</source> <translation>Listen for JSON-RPC connections on <port> (default: 8332 or testnet: 18332)</translation> </message> @@ -3239,7 +3296,7 @@ Address: %4 <translation>Accept command line and JSON-RPC commands</translation> </message> <message> - <location line="+79"/> + <location line="+80"/> <source>Run in the background as a daemon and accept commands</source> <translation>Run in the background as a daemon and accept commands</translation> </message> @@ -3249,12 +3306,12 @@ Address: %4 <translation>Use the test network</translation> </message> <message> - <location line="-117"/> + <location line="-118"/> <source>Accept connections from outside (default: 1 if no -proxy or -connect)</source> <translation>Accept connections from outside (default: 1 if no -proxy or -connect)</translation> </message> <message> - <location line="-92"/> + <location line="-95"/> <source>%s, you must set a rpcpassword in the configuration file: %s It is recommended you use the following random password: @@ -3305,6 +3362,11 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. </message> <message> <location line="+4"/> + <source>Enter regression test mode, which uses a special chain in which blocks can be solved instantly.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+3"/> <source>Error: The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.</source> <translation>Error: The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here.</translation> </message> @@ -3410,6 +3472,11 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. </message> <message> <location line="+1"/> + <source>Do not load the wallet and disable wallet RPC calls</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+1"/> <source>Do you want to rebuild the block database now?</source> <translation>Do you want to rebuild the block database now?</translation> </message> @@ -3574,7 +3641,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation type="unfinished"></translation> </message> <message> - <location line="+8"/> + <location line="+7"/> <source>Set maximum block size in bytes (default: %d)</source> <translation type="unfinished"></translation> </message> @@ -3594,7 +3661,12 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation type="unfinished"></translation> </message> <message> - <location line="+12"/> + <location line="+3"/> + <source>This is intended for regression testing tools and app development.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+10"/> <source>Usage (deprecated, use bitcoin-cli):</source> <translation type="unfinished"></translation> </message> @@ -3619,7 +3691,12 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Wallet %s resides outside data directory %s</translation> </message> <message> - <location line="+3"/> + <location line="+2"/> + <source>Wallet options:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location line="+2"/> <source>Warning: Deprecated argument -debugnet ignored, use -debug=net</source> <translation type="unfinished"></translation> </message> @@ -3629,12 +3706,12 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>You need to rebuild the database using -reindex to change -txindex</translation> </message> <message> - <location line="-78"/> + <location line="-79"/> <source>Imports blocks from external blk000??.dat file</source> <translation>Imports blocks from external blk000??.dat file</translation> </message> <message> - <location line="-104"/> + <location line="-105"/> <source>Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message)</source> <translation>Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message)</translation> </message> @@ -3654,7 +3731,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Set the number of script verification threads (up to 16, 0 = auto, <0 = leave that many cores free, default: 0)</translation> </message> <message> - <location line="+88"/> + <location line="+89"/> <source>Information</source> <translation>Information</translation> </message> @@ -3704,11 +3781,6 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Send trace/debug info to console instead of debug.log file</translation> </message> <message> - <location line="+1"/> - <source>Send trace/debug info to debugger</source> - <translation>Send trace/debug info to debugger</translation> - </message> - <message> <location line="+6"/> <source>Set minimum block size in bytes (default: 0)</source> <translation>Set minimum block size in bytes (default: 0)</translation> @@ -3734,7 +3806,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>System error: </translation> </message> <message> - <location line="+4"/> + <location line="+5"/> <source>Transaction amount too small</source> <translation>Transaction amount too small</translation> </message> @@ -3764,7 +3836,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Username for JSON-RPC connections</translation> </message> <message> - <location line="+6"/> + <location line="+7"/> <source>Warning</source> <translation>Warning</translation> </message> @@ -3784,37 +3856,37 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>wallet.dat corrupt, salvage failed</translation> </message> <message> - <location line="-57"/> + <location line="-58"/> <source>Password for JSON-RPC connections</source> <translation>Password for JSON-RPC connections</translation> </message> <message> - <location line="-69"/> + <location line="-70"/> <source>Allow JSON-RPC connections from specified IP address</source> <translation>Allow JSON-RPC connections from specified IP address</translation> </message> <message> - <location line="+79"/> + <location line="+80"/> <source>Send commands to node running on <ip> (default: 127.0.0.1)</source> <translation>Send commands to node running on <ip> (default: 127.0.0.1)</translation> </message> <message> - <location line="-131"/> + <location line="-132"/> <source>Execute command when the best block changes (%s in cmd is replaced by block hash)</source> <translation>Execute command when the best block changes (%s in cmd is replaced by block hash)</translation> </message> <message> - <location line="+160"/> + <location line="+161"/> <source>Upgrade wallet to latest format</source> <translation>Upgrade wallet to latest format</translation> </message> <message> - <location line="-23"/> + <location line="-24"/> <source>Set key pool size to <n> (default: 100)</source> <translation>Set key pool size to <n> (default: 100)</translation> </message> <message> - <location line="-12"/> + <location line="-11"/> <source>Rescan the block chain for missing wallet transactions</source> <translation>Rescan the block chain for missing wallet transactions</translation> </message> @@ -3824,7 +3896,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Use OpenSSL (https) for JSON-RPC connections</translation> </message> <message> - <location line="-29"/> + <location line="-30"/> <source>Server certificate file (default: server.cert)</source> <translation>Server certificate file (default: server.cert)</translation> </message> @@ -3839,17 +3911,17 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>This help message</translation> </message> <message> - <location line="+6"/> + <location line="+7"/> <source>Unable to bind to %s on this computer (bind returned error %d, %s)</source> <translation>Unable to bind to %s on this computer (bind returned error %d, %s)</translation> </message> <message> - <location line="-106"/> + <location line="-107"/> <source>Allow DNS lookups for -addnode, -seednode and -connect</source> <translation>Allow DNS lookups for -addnode, -seednode and -connect</translation> </message> <message> - <location line="+59"/> + <location line="+60"/> <source>Loading addresses...</source> <translation>Loading addresses...</translation> </message> @@ -3889,7 +3961,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Unknown -socks proxy version requested: %i</translation> </message> <message> - <location line="-100"/> + <location line="-101"/> <source>Cannot resolve -bind address: '%s'</source> <translation>Cannot resolve -bind address: '%s'</translation> </message> @@ -3899,7 +3971,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Cannot resolve -externalip address: '%s'</translation> </message> <message> - <location line="+47"/> + <location line="+48"/> <source>Invalid amount for -paytxfee=<amount>: '%s'</source> <translation>Invalid amount for -paytxfee=<amount>: '%s'</translation> </message> @@ -3919,7 +3991,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Loading block index...</translation> </message> <message> - <location line="-61"/> + <location line="-62"/> <source>Add a node to connect to and attempt to keep the connection open</source> <translation>Add a node to connect to and attempt to keep the connection open</translation> </message> @@ -3929,12 +4001,12 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Unable to bind to %s on this computer. Bitcoin is probably already running.</translation> </message> <message> - <location line="+94"/> + <location line="+95"/> <source>Loading wallet...</source> <translation>Loading wallet...</translation> </message> <message> - <location line="-55"/> + <location line="-56"/> <source>Cannot downgrade wallet</source> <translation>Cannot downgrade wallet</translation> </message> @@ -3944,7 +4016,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Cannot write default address</translation> </message> <message> - <location line="+66"/> + <location line="+67"/> <source>Rescanning...</source> <translation>Rescanning...</translation> </message> @@ -3964,7 +4036,7 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo. <translation>Error</translation> </message> <message> - <location line="-34"/> + <location line="-35"/> <source>You must set rpcpassword=<password> in the configuration file: %s If the file does not exist, create it with owner-readable-only file permissions.</source> diff --git a/src/qt/paymentserver.cpp b/src/qt/paymentserver.cpp index 17d80940b7..7642cd117a 100644 --- a/src/qt/paymentserver.cpp +++ b/src/qt/paymentserver.cpp @@ -8,8 +8,6 @@ #include "guiconstants.h" #include "guiutil.h" #include "optionsmodel.h" -#include "paymentserver.h" -#include "walletmodel.h" #include "base58.h" #include "ui_interface.h" @@ -382,40 +380,52 @@ void PaymentServer::handleURIOrFile(const QString& s) #else QUrlQuery uri((QUrl(s))); #endif - if (uri.hasQueryItem("r")) + if (uri.hasQueryItem("r")) // payment request URI { QByteArray temp; temp.append(uri.queryItemValue("r")); QString decoded = QUrl::fromPercentEncoding(temp); QUrl fetchUrl(decoded, QUrl::StrictMode); - qDebug() << "PaymentServer::handleURIOrFile : fetchRequest(" << fetchUrl << ")"; - if (fetchUrl.isValid()) + { + qDebug() << "PaymentServer::handleURIOrFile : fetchRequest(" << fetchUrl << ")"; fetchRequest(fetchUrl); + } else + { qDebug() << "PaymentServer::handleURIOrFile : Invalid URL: " << fetchUrl; + emit message(tr("URI handling"), + tr("Payment request fetch URL is invalid: %1").arg(fetchUrl.toString()), + CClientUIInterface::ICON_WARNING); + } return; } + else // normal URI + { + SendCoinsRecipient recipient; + if (GUIUtil::parseBitcoinURI(s, &recipient)) + emit receivedPaymentRequest(recipient); + else + emit message(tr("URI handling"), + tr("URI can not be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters."), + CClientUIInterface::ICON_WARNING); - SendCoinsRecipient recipient; - if (GUIUtil::parseBitcoinURI(s, &recipient)) - emit receivedPaymentRequest(recipient); - else - emit message(tr("URI handling"), - tr("URI can not be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters."), - CClientUIInterface::ICON_WARNING); - - return; + return; + } } - if (QFile::exists(s)) + if (QFile::exists(s)) // payment request file { PaymentRequestPlus request; SendCoinsRecipient recipient; if (readPaymentRequest(s, request) && processPaymentRequest(request, recipient)) emit receivedPaymentRequest(recipient); + else + emit message(tr("Payment request file handling"), + tr("Payment request file can not be read or processed! This can be caused by an invalid payment request file."), + CClientUIInterface::ICON_WARNING); return; } @@ -594,7 +604,7 @@ void PaymentServer::netRequestFinished(QNetworkReply* reply) .arg(reply->errorString()); qDebug() << "PaymentServer::netRequestFinished : " << msg; - emit message(tr("Network request error"), msg, CClientUIInterface::MSG_ERROR); + emit message(tr("Payment request error"), msg, CClientUIInterface::MSG_ERROR); return; } @@ -606,9 +616,16 @@ void PaymentServer::netRequestFinished(QNetworkReply* reply) PaymentRequestPlus request; SendCoinsRecipient recipient; if (request.parse(data) && processPaymentRequest(request, recipient)) + { emit receivedPaymentRequest(recipient); + } else + { qDebug() << "PaymentServer::netRequestFinished : Error processing payment request"; + emit message(tr("Payment request error"), + tr("Payment request can not be parsed or processed!"), + CClientUIInterface::MSG_ERROR); + } return; } @@ -621,9 +638,10 @@ void PaymentServer::netRequestFinished(QNetworkReply* reply) .arg(reply->request().url().toString()); qDebug() << "PaymentServer::netRequestFinished : " << msg; - emit message(tr("Network request error"), msg, CClientUIInterface::MSG_ERROR); + emit message(tr("Payment request error"), msg, CClientUIInterface::MSG_ERROR); } - else { + else + { emit receivedPaymentACK(GUIUtil::HtmlEscape(paymentACK.memo())); } } diff --git a/src/qt/paymentserver.h b/src/qt/paymentserver.h index 5ee85f7db4..af19661bdd 100644 --- a/src/qt/paymentserver.h +++ b/src/qt/paymentserver.h @@ -102,7 +102,7 @@ public slots: // Submit Payment message to a merchant, get back PaymentACK: void fetchPaymentACK(CWallet* wallet, SendCoinsRecipient recipient, QByteArray transaction); - // Handle an incoming URI or file + // Handle an incoming URI, URI with local file scheme or file void handleURIOrFile(const QString& s); private slots: diff --git a/src/qt/res/movies/spinner-000.png b/src/qt/res/movies/spinner-000.png Binary files differnew file mode 100644 index 0000000000..1f4fb732ef --- /dev/null +++ b/src/qt/res/movies/spinner-000.png diff --git a/src/qt/res/movies/spinner-001.png b/src/qt/res/movies/spinner-001.png Binary files differnew file mode 100644 index 0000000000..e6ca67a1b0 --- /dev/null +++ b/src/qt/res/movies/spinner-001.png diff --git a/src/qt/res/movies/spinner-002.png b/src/qt/res/movies/spinner-002.png Binary files differnew file mode 100644 index 0000000000..2360467aff --- /dev/null +++ b/src/qt/res/movies/spinner-002.png diff --git a/src/qt/res/movies/spinner-003.png b/src/qt/res/movies/spinner-003.png Binary files differnew file mode 100644 index 0000000000..52bed62566 --- /dev/null +++ b/src/qt/res/movies/spinner-003.png diff --git a/src/qt/res/movies/spinner-004.png b/src/qt/res/movies/spinner-004.png Binary files differnew file mode 100644 index 0000000000..de5c88a56f --- /dev/null +++ b/src/qt/res/movies/spinner-004.png diff --git a/src/qt/res/movies/spinner-005.png b/src/qt/res/movies/spinner-005.png Binary files differnew file mode 100644 index 0000000000..27b30336a1 --- /dev/null +++ b/src/qt/res/movies/spinner-005.png diff --git a/src/qt/res/movies/spinner-006.png b/src/qt/res/movies/spinner-006.png Binary files differnew file mode 100644 index 0000000000..1fa6b0e242 --- /dev/null +++ b/src/qt/res/movies/spinner-006.png diff --git a/src/qt/res/movies/spinner-007.png b/src/qt/res/movies/spinner-007.png Binary files differnew file mode 100644 index 0000000000..f54fa8775e --- /dev/null +++ b/src/qt/res/movies/spinner-007.png diff --git a/src/qt/res/movies/spinner-008.png b/src/qt/res/movies/spinner-008.png Binary files differnew file mode 100644 index 0000000000..d25aa5300f --- /dev/null +++ b/src/qt/res/movies/spinner-008.png diff --git a/src/qt/res/movies/spinner-009.png b/src/qt/res/movies/spinner-009.png Binary files differnew file mode 100644 index 0000000000..1349b87586 --- /dev/null +++ b/src/qt/res/movies/spinner-009.png diff --git a/src/qt/res/movies/spinner-010.png b/src/qt/res/movies/spinner-010.png Binary files differnew file mode 100644 index 0000000000..6020e275f1 --- /dev/null +++ b/src/qt/res/movies/spinner-010.png diff --git a/src/qt/res/movies/spinner-011.png b/src/qt/res/movies/spinner-011.png Binary files differnew file mode 100644 index 0000000000..0d0e811ea7 --- /dev/null +++ b/src/qt/res/movies/spinner-011.png diff --git a/src/qt/res/movies/spinner-012.png b/src/qt/res/movies/spinner-012.png Binary files differnew file mode 100644 index 0000000000..937afb6be2 --- /dev/null +++ b/src/qt/res/movies/spinner-012.png diff --git a/src/qt/res/movies/spinner-013.png b/src/qt/res/movies/spinner-013.png Binary files differnew file mode 100644 index 0000000000..4ae5a671a3 --- /dev/null +++ b/src/qt/res/movies/spinner-013.png diff --git a/src/qt/res/movies/spinner-014.png b/src/qt/res/movies/spinner-014.png Binary files differnew file mode 100644 index 0000000000..c3a81add0e --- /dev/null +++ b/src/qt/res/movies/spinner-014.png diff --git a/src/qt/res/movies/spinner-015.png b/src/qt/res/movies/spinner-015.png Binary files differnew file mode 100644 index 0000000000..184a9fe424 --- /dev/null +++ b/src/qt/res/movies/spinner-015.png diff --git a/src/qt/res/movies/spinner-016.png b/src/qt/res/movies/spinner-016.png Binary files differnew file mode 100644 index 0000000000..2da9b9dc72 --- /dev/null +++ b/src/qt/res/movies/spinner-016.png diff --git a/src/qt/res/movies/spinner-017.png b/src/qt/res/movies/spinner-017.png Binary files differnew file mode 100644 index 0000000000..ada83fbe84 --- /dev/null +++ b/src/qt/res/movies/spinner-017.png diff --git a/src/qt/res/movies/spinner-018.png b/src/qt/res/movies/spinner-018.png Binary files differnew file mode 100644 index 0000000000..cc436ba8cb --- /dev/null +++ b/src/qt/res/movies/spinner-018.png diff --git a/src/qt/res/movies/spinner-019.png b/src/qt/res/movies/spinner-019.png Binary files differnew file mode 100644 index 0000000000..03da25bc2a --- /dev/null +++ b/src/qt/res/movies/spinner-019.png diff --git a/src/qt/res/movies/spinner-020.png b/src/qt/res/movies/spinner-020.png Binary files differnew file mode 100644 index 0000000000..e7f2ac78e8 --- /dev/null +++ b/src/qt/res/movies/spinner-020.png diff --git a/src/qt/res/movies/spinner-021.png b/src/qt/res/movies/spinner-021.png Binary files differnew file mode 100644 index 0000000000..dc9e580bf3 --- /dev/null +++ b/src/qt/res/movies/spinner-021.png diff --git a/src/qt/res/movies/spinner-022.png b/src/qt/res/movies/spinner-022.png Binary files differnew file mode 100644 index 0000000000..6e236c805e --- /dev/null +++ b/src/qt/res/movies/spinner-022.png diff --git a/src/qt/res/movies/spinner-023.png b/src/qt/res/movies/spinner-023.png Binary files differnew file mode 100644 index 0000000000..f1c3228485 --- /dev/null +++ b/src/qt/res/movies/spinner-023.png diff --git a/src/qt/res/movies/spinner-024.png b/src/qt/res/movies/spinner-024.png Binary files differnew file mode 100644 index 0000000000..d8cf21f178 --- /dev/null +++ b/src/qt/res/movies/spinner-024.png diff --git a/src/qt/res/movies/spinner-025.png b/src/qt/res/movies/spinner-025.png Binary files differnew file mode 100644 index 0000000000..2b5ede3293 --- /dev/null +++ b/src/qt/res/movies/spinner-025.png diff --git a/src/qt/res/movies/spinner-026.png b/src/qt/res/movies/spinner-026.png Binary files differnew file mode 100644 index 0000000000..5ee3d2fa8e --- /dev/null +++ b/src/qt/res/movies/spinner-026.png diff --git a/src/qt/res/movies/spinner-027.png b/src/qt/res/movies/spinner-027.png Binary files differnew file mode 100644 index 0000000000..c2ee8082bd --- /dev/null +++ b/src/qt/res/movies/spinner-027.png diff --git a/src/qt/res/movies/spinner-028.png b/src/qt/res/movies/spinner-028.png Binary files differnew file mode 100644 index 0000000000..f70d3531ad --- /dev/null +++ b/src/qt/res/movies/spinner-028.png diff --git a/src/qt/res/movies/spinner-029.png b/src/qt/res/movies/spinner-029.png Binary files differnew file mode 100644 index 0000000000..02b97207a9 --- /dev/null +++ b/src/qt/res/movies/spinner-029.png diff --git a/src/qt/res/movies/spinner-030.png b/src/qt/res/movies/spinner-030.png Binary files differnew file mode 100644 index 0000000000..0c74e82c6f --- /dev/null +++ b/src/qt/res/movies/spinner-030.png diff --git a/src/qt/res/movies/spinner-031.png b/src/qt/res/movies/spinner-031.png Binary files differnew file mode 100644 index 0000000000..c5e29bcec7 --- /dev/null +++ b/src/qt/res/movies/spinner-031.png diff --git a/src/qt/res/movies/spinner-032.png b/src/qt/res/movies/spinner-032.png Binary files differnew file mode 100644 index 0000000000..d72c9bf0dd --- /dev/null +++ b/src/qt/res/movies/spinner-032.png diff --git a/src/qt/res/movies/spinner-033.png b/src/qt/res/movies/spinner-033.png Binary files differnew file mode 100644 index 0000000000..a8b822bfaf --- /dev/null +++ b/src/qt/res/movies/spinner-033.png diff --git a/src/qt/res/movies/spinner-034.png b/src/qt/res/movies/spinner-034.png Binary files differnew file mode 100644 index 0000000000..684aa385e0 --- /dev/null +++ b/src/qt/res/movies/spinner-034.png diff --git a/src/qt/res/movies/update_spinner.mng b/src/qt/res/movies/update_spinner.mng Binary files differdeleted file mode 100644 index 7df3baac6f..0000000000 --- a/src/qt/res/movies/update_spinner.mng +++ /dev/null diff --git a/src/qt/test/Makefile.am b/src/qt/test/Makefile.am index 9c3f0417ac..00ccfadf3f 100644 --- a/src/qt/test/Makefile.am +++ b/src/qt/test/Makefile.am @@ -16,12 +16,13 @@ endif TEST_QT_H = \ uritests.h \ - paymentservertests.h \ - paymentrequestdata.h + paymentrequestdata.h \ + paymentservertests.h BUILT_SOURCES = $(TEST_QT_MOC_CPP) test_bitcoin_qt_CPPFLAGS = $(AM_CPPFLAGS) $(QT_INCLUDES) $(QT_TEST_INCLUDES) + test_bitcoin_qt_SOURCES = \ test_main.cpp \ uritests.cpp \ @@ -30,7 +31,9 @@ if ENABLE_WALLET test_bitcoin_qt_SOURCES += \ paymentservertests.cpp endif + nodist_test_bitcoin_qt_SOURCES = $(TEST_QT_MOC_CPP) + test_bitcoin_qt_LDADD = $(LIBBITCOINQT) $(LIBBITCOIN_SERVER) if ENABLE_WALLET test_bitcoin_qt_LDADD += $(LIBBITCOIN_WALLET) @@ -40,4 +43,3 @@ test_bitcoin_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBLEVELDB) \ $(QR_LIBS) $(PROTOBUF_LIBS) $(BDB_LIBS) CLEANFILES = $(BUILT_SOURCES) *.gcda *.gcno - diff --git a/src/qt/walletmodel.cpp b/src/qt/walletmodel.cpp index 6f3e3b0aaf..14f29c933b 100644 --- a/src/qt/walletmodel.cpp +++ b/src/qt/walletmodel.cpp @@ -488,6 +488,7 @@ bool WalletModel::getPubKey(const CKeyID &address, CPubKey& vchPubKeyOut) const // returns a list of COutputs from COutPoints void WalletModel::getOutputs(const std::vector<COutPoint>& vOutpoints, std::vector<COutput>& vOutputs) { + LOCK(wallet->cs_wallet); BOOST_FOREACH(const COutPoint& outpoint, vOutpoints) { if (!wallet->mapWallet.count(outpoint.hash)) continue; diff --git a/src/rpcmisc.cpp b/src/rpcmisc.cpp index c61cc4192b..f8a7d07fc3 100644 --- a/src/rpcmisc.cpp +++ b/src/rpcmisc.cpp @@ -4,11 +4,11 @@ // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "base58.h" -#include "rpcserver.h" #include "init.h" #include "main.h" #include "net.h" #include "netbase.h" +#include "rpcserver.h" #include "util.h" #ifdef ENABLE_WALLET #include "wallet.h" @@ -323,4 +323,3 @@ Value verifymessage(const Array& params, bool fHelp) return (pubkey.GetID() == keyID); } - diff --git a/src/rpcrawtransaction.cpp b/src/rpcrawtransaction.cpp index 86025918ef..ff652ca34d 100644 --- a/src/rpcrawtransaction.cpp +++ b/src/rpcrawtransaction.cpp @@ -4,13 +4,13 @@ // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "base58.h" -#include "rpcserver.h" +#include "core.h" #include "init.h" +#include "keystore.h" +#include "main.h" #include "net.h" +#include "rpcserver.h" #include "uint256.h" -#include "core.h" -#include "main.h" -#include "keystore.h" #ifdef ENABLE_WALLET #include "wallet.h" #endif diff --git a/src/rpcserver.cpp b/src/rpcserver.cpp index 9f2100a8d7..9d34a900ff 100644 --- a/src/rpcserver.cpp +++ b/src/rpcserver.cpp @@ -8,8 +8,8 @@ #include "base58.h" #include "init.h" #include "main.h" -#include "util.h" #include "ui_interface.h" +#include "util.h" #ifdef ENABLE_WALLET #include "wallet.h" #endif diff --git a/src/test/Makefile.am b/src/test/Makefile.am index ff1d22cc24..667e53c6b4 100644 --- a/src/test/Makefile.am +++ b/src/test/Makefile.am @@ -37,7 +37,8 @@ test_bitcoin_SOURCES = \ base58_tests.cpp \ base64_tests.cpp \ bignum_tests.cpp \ - bloom_tests.cpp canonical_tests.cpp \ + bloom_tests.cpp \ + canonical_tests.cpp \ checkblock_tests.cpp \ Checkpoints_tests.cpp \ compress_tests.cpp \ diff --git a/src/walletdb.cpp b/src/walletdb.cpp index 2dc6594e93..9c5bddba60 100644 --- a/src/walletdb.cpp +++ b/src/walletdb.cpp @@ -357,16 +357,13 @@ ReadKeyValue(CWallet* pwallet, CDataStream& ssKey, CDataStream& ssValue, { uint256 hash; ssKey >> hash; - CWalletTx& wtx = pwallet->mapWallet[hash]; + CWalletTx wtx; ssValue >> wtx; CValidationState state; if (CheckTransaction(wtx, state) && (wtx.GetHash() == hash) && state.IsValid()) wtx.BindWallet(pwallet); else - { - pwallet->mapWallet.erase(hash); return false; - } // Undo serialize changes in 31600 if (31404 <= wtx.fTimeReceivedIsTxTime && wtx.fTimeReceivedIsTxTime <= 31703) @@ -391,6 +388,7 @@ ReadKeyValue(CWallet* pwallet, CDataStream& ssKey, CDataStream& ssValue, if (wtx.nOrderPos == -1) wss.fAnyUnordered = true; + pwallet->mapWallet[hash] = wtx; //// debug print //LogPrintf("LoadWallet %s\n", wtx.GetHash().ToString().c_str()); //LogPrintf(" %12"PRId64" %s %s %s\n", |