Bitcoin version 0.4.0 is now available for download at:
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
Notable bug fixes from version 0.3.24:
Fix several bitcoin-becomes-unresponsive bugs due to multithreading
Optimize database writes for large (lots of inputs) transactions
(fixes a potential denial-of-service attack)
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, chose "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
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.
Full changelog ("git shortlog --no-merges v0.3.24..")
Abraham Jewowich (1):
Fix bug with accessing vchData 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
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
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
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):
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."
Translation from "Open Bitcoin" to "Verstuur Bitcoins"
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
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
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 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)
wxWidgets needs to be at least version 2.9.1 because wallet
crypto uses ToStdString() which is not in 2.9.0
Edited locale/pl/LC_MESSAGES/bitcoin.po via GitHub