Gavin Andresen - 2011-09-23 15:41:40

Bitcoin version 0.4.0 is now available for download at:
  http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.4.0/

The main feature in this release is wallet private key encryption;
you can set a passphrase that must be entered before sending coins.
See below for more information; if you decide to encrypt your wallet,
WRITE DOWN YOUR PASSPHRASE AND PUT IT IN A SECURE LOCATION. If you
forget or lose your wallet passphrase, you lose your bitcoins.
Previous versions of bitcoin are unable to read encrypted wallets,
and will crash on startup if the wallet is encrypted.

Also note: bitcoin version 0.4 uses a newer version of Berkeley DB
(bdb version 4.8) than previous versions (bdb 4.7). If you upgrade
to version 0.4 and then revert back to an earlier version of bitcoin
the it may be unable to start because bdb 4.7 cannot read bdb 4.8
"log" files.

Notable bug fixes from version 0.3.24:
--------------------------------------

Fix several bitcoin-becomes-unresponsive bugs due to multithreading
deadlocks.

Optimize database writes for large (lots of inputs) transactions
(fixes a potential denial-of-service attack)



Wallet Encryption
-----------------
Bitcoin supports native wallet encryption so that people who steal your
wallet file don't automatically get access to all of your Bitcoins.
In order to enable this feature, choose "Encrypt Wallet" from the
Options menu.  You will be prompted to enter a passphrase, which
will be used as the key to encrypt your wallet and will be needed
every time you wish to send Bitcoins.  If you lose this passphrase,
you will lose access to spend all of the bitcoins in your wallet,
no one, not even the Bitcoin developers can recover your Bitcoins.
This means you are responsible for your own security, store your
passphrase in a secure location and do not forget it.

Remember that the encryption built into bitcoin only encrypts the
actual keys which are required to send your bitcoins, not the full
wallet.  This means that someone who steals your wallet file will
be able to see all the addresses which belong to you, as well as the
relevant transactions, you are only protected from someone spending
your coins.

It is recommended that you backup your wallet file before you
encrypt your wallet.  To do this, close the Bitcoin client and
copy the wallet.dat file from ~/.bitcoin/ on Linux, /Users/(user
name)/Application Support/Bitcoin/ on Mac OSX, and %APPDATA%/Bitcoin/
on Windows (that is /Users/(user name)/AppData/Roaming/Bitcoin on
Windows Vista and 7 and /Documents and Settings/(user name)/Application
Data/Bitcoin on Windows XP).  Once you have copied that file to a
safe location, reopen the Bitcoin client and Encrypt your wallet.
If everything goes fine, delete the backup and enjoy your encrypted
wallet.  Note that once you encrypt your wallet, you will never be
able to go back to a version of the Bitcoin client older than 0.4.

Keep in mind that you are always responsible for your own security.
All it takes is a slightly more advanced wallet-stealing trojan which
installs a keylogger to steal your wallet passphrase as you enter it
in addition to your wallet file and you have lost all your Bitcoins.
Wallet encryption cannot keep you safe if you do not practice
good security, such as running up-to-date antivirus software, only
entering your wallet passphrase in the Bitcoin client and using the
same passphrase only as your wallet passphrase.

See the doc/README file in the bitcoin source for technical details
of wallet encryption.

Signed SHA1 checksums of the binary release files:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

25c3ec9683d62235afea24d4a147d4616d8a884f  bitcoin-0.4.0-linux.tar.gz
a800d9fa4aa61527e598708f4ace7f855c22a46b  bitcoin-0.4.0-macosx.dmg
1d2c8d82ede5e8aa9f83b59da07e443de89c5c8f  bitcoin-0.4.0-src.tar.gz
ecf1304ff467bd30dc668b3dadff3044c3c86df1  bitcoin-0.4.0-win32-setup.exe
6034efe23e4bd76b0860f633e81710cd66d499db  bitcoin-0.4.0-win32.zip
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Darwin)

iEYEARECAAYFAk58n20ACgkQdYgkL74406ibEACgzyZj86lsQORi5HTs/N3ABCes
Pg8AoKFXU1vxiZI9qZOQ5ZET60ewcynW
=sY+Q
-----END PGP SIGNATURE-----


Full changelog ("git shortlog --no-merges v0.3.24..")
-----------------------------------------
Abraham Jewowich (1):
      Fix bug with accessing vchData[0] when vchData is empty.     Fix typo in CBase58Data::CompareTo

Alex B (2):
      Romanian translation added
      Spanish translation update

Alex Waters (1):
      Updated readme file

Daniel Folkinshteyn (1):
      Update the list of seednodes.

Dawid Spiechowicz (1):
      added polish wallet encryption messages

Dean Lee (1):
      Update to the Chinese Simp translation

Dev Random (4):
      Linux gitian config with separate wxWidgets build
      Mingw gitian with separate wxWidgets and boost
      Mingw gitian build with deterministic bitcoin.exe by use of faketime
      Add Gitian Build descriptors for Boost and wxWidgets.

Doug Huff (1):
      Make mlock() and munlock() portable to systems that require the address to be on a page boundary.

Dylan Noblesmith (1):
      mlock() all private keys in memory

Eric Hosmer (1):
      Added crypter to makefile.vc.

Fabian H jr. (1):
      Updated checkpoints, maybe Tx fee should be reduced to 0.0001 from 0.0005 and maximum minimum tx should be 0.0010.

Gavin Andresen (24):
      Do-nothing MapPort() ifndef USE_UPNP.  fixes #450
      Don't std::advance past beginning of transactions array.  Fixes #465
      Remove unused ScanMessageStart function
      Compile with DEBUG_LOCKORDER to detect inconsistent lock orderings that can cause deadlocks
      CHECKMULTISIG unit tests.
      Highlight mis-matching locks
      Fix rpc-hanging deadlocks
      Fixed potential deadlocks in GUI code.     Also changed semantics of CWalletTx::GetTxTime(); now always returns the time the transaction was received by this node, not the average block time.     And added information about -DDEBUG_LOCKORDER to coding.txt.
      Fix typo ("you own security")
      SetCrypted() obtains keystore lock, to be safe.
      Logic running with -keypool=0 was wrong (empty keys were being returned). Fixes #445
      Fix RPC call name in error message.
      obtain cs_wallet mutex to protect vchDefaultKey
      Fixed regression I introduced: wallets with lots of transactions were unusable in GUI.
      Fix bad merge: getaccountaddress was broken for new accounts
      Give hard-coded seed nodes a random last-seen time, to randomize order they're tried.
      Do not try to download blockchain from 0.3.23 nodes
      If compiled -DDEBUG_LOCKORDER and run with -debug, print out every mutex lock/unlock (helpful for debugging something-is-holding-a-mutex-too-long problems)
      Stay connected to seed nodes; disconnecting causes problems if you are trying to make the initial blockchain download.
      Versions 0.3.20 THROUGH 0.3.23 have trouble with blockchain downloads; avoid them
      Bumped version numbers to 0.4.0rc1
      Optimize database writes for transactions with lots of TxIns.     Patch from ArtForz, who discovered the problem.
      Fix AddAddress cs_mapaddresses/db transaction deadlock
      Fix QA email address

Giel van Schijndel (15):
      fix warning on 64bit systems: cast to pointer from integer of different size [-Wint-to-pointer-cast]
      fix warnings: expression result unused [-Wunused-value]
      fix warnings: using the result of an assignment as a condition without parentheses [-Wparentheses]
      fix warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare]
      fix warning: X enumeration values not handled in switch [-Wswitch-enum]
      fix warning: unused variable 'X' [-Wunused-variable]
      fix warning: unused function 'SigIllHandlerSSE2' [-Wunused-function]
      fix warning: variable ‘nMinDepth’ set but not used [-Wunused-but-set-variable]
      fix warning: control reaches end of non-void function [-Wreturn-type]
      Make some global variables less-global (static)
      Cleanup makefiles such that diffs to them are smaller
      Move func 'REF' from util.h to serialize.h
      Start moving protocol-specific code to protocol.[ch]pp
      Move CAddress to protocol.[ch]pp
      Move CInv to protocol.[ch]pp

Han Lin Yap (2):
      Comment "deprecated"
      Add a note to only include .po file

Jay Weisskopf (4):
      Add logos/branding currently found on bitcoin.org into NSIS installer.
      Set default compression for NSIS installer to LZMA.
      Remove NSIS branding from bottom divider.
      Increase resolution of Windows icon.

Jeff Garzik (8):
      Update CWallet::LoadWallet for proper return type.
      Bump version to 0.3.25
      doc/README: word wrap into something readable
      CAddrDB::LoadAddresses: properly initialize CAddress
      src/makefile.unix: remove -DFOURWAYSSE2
      Add reference python miner, in contrib/pyminer/
      README.md: word wrap text file
      Revert "Define MSG_NOSIGNAL to 0 on platforms where it is unavailable."

Jeroenz0r (1):
      Translation from "Open Bitcoin" to "Verstuur Bitcoins"

JoelKatz (1):
      Fix UNIX-specific thread handle leak.

Johannes Henninger (1):
      Identify as "Bitcoin + version number" when mapping UPnP port

Luke Dashjr (7):
      Update nTime after nExtraNonce to avoid potential race     (extraNonce being reset due to just-occurred time change after nTime is set)
      Reset extraNonce only every 15 seconds, just in case some miner is updating time himself and stuff
      Reset extraNonce only when prevBlock changes, so miners can continue updating the time on their work until it's stale
      Support for boost filesystem version 3
      ignore stuff
      Save coinbase, not just extraNonce
      Bugfix: Use timestamp in coinbase rather than "bits", needed to ensure coinbase txn is unique even if address is the same

Matt Corallo (35):
      Add minversion to wallet.
      Add wallet privkey encryption.
      Set the number of SHA512 rounds based on the speed of the computer.
      Push unlocked_until in getinfo.
      Dynamically remove/insert the Options for encryption in the menus.
      Add the walletlock RPC method to lock the wallet manually.
      Add Wallet Encryption section to README
      Use DB Transactions when encrypting wallet.     This speeds up the encryption process significantly.
      Make an invalid addrIncoming so that old clients crash.
      Update makefile.linux-mingw to work with crypter and UPnP fix.
      Fix makefile.linux-mingw
      Fix crashes when a wallet is locked and GetReservedKey() is called
      Generate Warning when using default key.
      Fix Build in GetReservedKey() in wallet.cpp
      Fix bad return values in LoadWallet.
      Actually use mapAlreadyAskedFor.
      Fix EncryptKeys crash introduced by a9ba4710, identified by TD.
      Check for duplicate txins in CheckTransaction.
      Make it clear that setting proxy requires restart to fully apply.
      Don't listen if on TOR (resolves #441).
      Add missing include to serialize.h
      Add file for transaction tests.
      Cleanup test suite output to be more useful.
      Unify copyright notices.
      Missed a 'password' should be 'passphrase'.
      Fix incorrect RPC error messages
      Add specific wallet encryption details to doc/README
      Upgrade dependancies and tweak build process.
      Update binary mos to latest translations.
      Fix build process to actually work.
      Add binary mo for new translation.
      Update gitian build descriptors to produce proper builds.
      Update bitcoin icon to make nsis setup exe deterministic.
      Update binary mo to match latest po translation.
      Restructure gitian files and add download config files.

Michael Bemmerl (4):
      Basically some grammatical fixes of the German translation.
      Added German wallet encryption messages translation.
      Changed Russian translation according to comment in issue 395
      Updated German translation

Michal Zima (1):
      Updated czech translation

Nils Schneider (2):
      log low-level network messages only when fDebug is set
      missed printf in AbortMessage(); merged printfs in EndMessage

Patrick Varilly (1):
      Single DB transaction for all addresses in a message

Pieter Wuille (11):
      Prepare codebase for Encrypted Keys.
      Do not use obsolete CPrivKey for passing keys around
      Bugfix: add autogenerated addresses to address book
      get rid of mapPubKeys
      Use CBitcoinAddress instead of string/uint160
      split off CBase58Data from CBitcoinAddress
      Fix for small change outputs
      Bugfix: don't overuse limited ExtractAddress
      avoid strAddress + validity checks
      SocketHandler thread can be detached
      Updated dutch translation

Stéphane Gimenez (1):
      Single DB transaction for addresses from DNS seeds

Vegard Nossum (6):
      Add missing includes to key.h
      Add missing include to script.h
      Add missing includes to net.h
      Fix testing setup
      Add prototype for EvalScript() to script.h
      Add a file for script tests

Venkatesh Srinivas (4):
      Test for SO_NOSIGPIPE rather than assuming all BSDs support it.
      Qualify make_tuple with boost:: namespace.
      Use 'unsigned char' rather than 'char' for pchMessageStart.
      Define MSG_NOSIGNAL to 0 on platforms where it is unavailable.

Wladimir J. van der Laan (2):
      remove magic number: change threshold for nLockTime to constant
      make SetHash160 return a value (as specified in the function signature)

cjdelisle (1):
      wxWidgets needs to be at least version 2.9.1 because wallet crypto uses ToStdString() which is not in 2.9.0

ovdeathiam (1):
      Edited locale/pl/LC_MESSAGES/bitcoin.po via GitHub