<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.bitcoin.it/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jonasbits</id>
	<title>Bitcoin Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://en.bitcoin.it/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jonasbits"/>
	<link rel="alternate" type="text/html" href="https://en.bitcoin.it/wiki/Special:Contributions/Jonasbits"/>
	<updated>2026-04-29T22:59:43Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:Casascius_Bitcoin_Utility&amp;diff=69276</id>
		<title>Talk:Casascius Bitcoin Utility</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:Casascius_Bitcoin_Utility&amp;diff=69276"/>
		<updated>2022-04-13T12:23:33Z</updated>

		<summary type="html">&lt;p&gt;Jonasbits: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This link should be here https://github.com/casascius/Bitcoin-Address-Utility {{unsigned|Jonasbits|01:20, 14 November 2013‎}}&lt;br /&gt;
&lt;br /&gt;
https://en.bitcoin.it/wiki/Bitcoin_Address_Utility&lt;/div&gt;</summary>
		<author><name>Jonasbits</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:QuickCoin&amp;diff=61802</id>
		<title>Talk:QuickCoin</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:QuickCoin&amp;diff=61802"/>
		<updated>2016-11-08T17:16:19Z</updated>

		<summary type="html">&lt;p&gt;Jonasbits: archive.org snapshot of site&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cloudflare error right now, use this archive.org snapshot of the site https://web.archive.org/web/20160313064709/http://www.quickcoin.co/&lt;/div&gt;</summary>
		<author><name>Jonasbits</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=47761</id>
		<title>Changelog</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=47761"/>
		<updated>2014-05-31T00:27:09Z</updated>

		<summary type="html">&lt;p&gt;Jonasbits: v0.7.1 was the first version importing bootstrap.dat automatically&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page aggregates the changelogs that have been posted on the forum for the Bitcoin releases. &lt;br /&gt;
Note that some download links are not longer valid as highly insecure versions may have been deleted, or links may have changed.&lt;br /&gt;
&lt;br /&gt;
=Changelogs=&lt;br /&gt;
&lt;br /&gt;
https://bitcoin.org/en/release/v0.7.1&lt;br /&gt;
==0.7.X==&lt;br /&gt;
&lt;br /&gt;
===0.7.1&amp;lt;ref&amp;gt;[https://bitcoin.org/en/release/v0.7.1 0.7.1 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
New features:&lt;br /&gt;
&lt;br /&gt;
* Added a boolean argument to the RPC stop command, if true sets -detachdb to create standalone database .dat files before shutting down.&lt;br /&gt;
&lt;br /&gt;
* -salvagewallet command-line option, which moves any existing wallet.dat to wallet.{timestamp}.dat and then attempts to salvage public/private keys and master encryption keys (if the wallet is encrypted) into a new wallet.dat. This should only be used if your wallet becomes corrupted, and is not intended to replace regular wallet backups.&lt;br /&gt;
&lt;br /&gt;
* Import $DataDir/bootstrap.dat automatically, if it exists.&lt;br /&gt;
&lt;br /&gt;
==0.6.X==&lt;br /&gt;
After 0.6.3, all subsequent releases are stable maintenance releases, 0.7.0 is based on 0.6.3.&lt;br /&gt;
&lt;br /&gt;
===0.6.3&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=89877.0 0.6.3 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
Bitcoin version 0.6.3 is now available for download at:&lt;br /&gt;
  http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.6.3/&lt;br /&gt;
&lt;br /&gt;
This is a bug-fix release, with no new features.&lt;br /&gt;
&lt;br /&gt;
Please report bugs using the issue tracker at github:&lt;br /&gt;
  https://github.com/bitcoin/bitcoin/issues&lt;br /&gt;
&lt;br /&gt;
CHANGE SUMMARY&lt;br /&gt;
&lt;br /&gt;
Fixed a serious denial-of-service attack that could cause the&lt;br /&gt;
bitcoin process to become unresponsive. Thanks to Sergio Lerner&lt;br /&gt;
for finding and responsibly reporting the problem. (CVE-2012-3789)&lt;br /&gt;
&lt;br /&gt;
Optimized the process of checking transaction signatures, to&lt;br /&gt;
speed up processing of new block messages and make propagating&lt;br /&gt;
blocks across the network faster.&lt;br /&gt;
&lt;br /&gt;
Fixed an obscure bug that could cause the bitcoin process to get&lt;br /&gt;
stuck on an invalid block-chain, if the invalid chain was&lt;br /&gt;
hundreds of blocks long.&lt;br /&gt;
&lt;br /&gt;
Bitcoin-Qt no longer automatically selects the first address&lt;br /&gt;
in the address book (Issue #1384).&lt;br /&gt;
&lt;br /&gt;
Fixed minimize-to-dock behavior of Bitcon-Qt on the Mac.&lt;br /&gt;
&lt;br /&gt;
Added a block checkpoint at block 185,333 to speed up initial&lt;br /&gt;
blockchain download.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===0.6.2&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=80187.0 0.6.2 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
Bitcoin version 0.6.2 is now available for download at:&lt;br /&gt;
http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.6.2/&lt;br /&gt;
&lt;br /&gt;
This is a bug-fix and code-cleanup release, with no major new features.&lt;br /&gt;
&lt;br /&gt;
Please report bugs using the github issue tracker at:&lt;br /&gt;
https://github.com/bitcoin/bitcoin/issues&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTABLE CHANGES&lt;br /&gt;
&lt;br /&gt;
Much faster shutdowns. However, the blkindex.dat file is no longer&lt;br /&gt;
portable to different data directories by default. If you need a&lt;br /&gt;
portable blkindex.dat file then run with the new -detachdb=1 option&lt;br /&gt;
or the &amp;quot;Detach databases at shutdown&amp;quot; GUI preference.&lt;br /&gt;
&lt;br /&gt;
Fixed https://github.com/bitcoin/bitcoin/issues/1065, a bug that&lt;br /&gt;
could cause long-running nodes to crash.&lt;br /&gt;
&lt;br /&gt;
Mac and Windows binaries are compiled against OpenSSL 1.0.1b (Linux&lt;br /&gt;
binaries are dynamically linked to the version of OpenSSL on the system).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CHANGE SUMMARY&lt;br /&gt;
&lt;br /&gt;
Use &#039;git shortlog --no-merges v0.6.0..&#039; for a summary of this release.&lt;br /&gt;
&lt;br /&gt;
Source codebase changes:&lt;br /&gt;
- Many source code cleanups and warnings fixes.  Close to building with -Wall&lt;br /&gt;
- Locking overhaul, and several minor locking fixes&lt;br /&gt;
- Several source code portability fixes, e.g. FreeBSD&lt;br /&gt;
&lt;br /&gt;
JSON-RPC interface changes:&lt;br /&gt;
- addmultisigaddress enabled for mainnet (previously only enabled for testnet)&lt;br /&gt;
&lt;br /&gt;
Network protocol changes:&lt;br /&gt;
- protocol version 60001&lt;br /&gt;
- added nonce value to &amp;quot;ping&amp;quot; message (BIP 31)&lt;br /&gt;
- added new &amp;quot;pong&amp;quot; message (BIP 31)&lt;br /&gt;
&lt;br /&gt;
Backend storage changes:&lt;br /&gt;
- Less redundant database flushing, especially during initial block download&lt;br /&gt;
- Shutdown improvements (see above)&lt;br /&gt;
&lt;br /&gt;
Qt user interface:&lt;br /&gt;
- minor URI handling improvements&lt;br /&gt;
- progressbar improvements&lt;br /&gt;
- error handling improvements (show message box rather than console exception,&lt;br /&gt;
etc.)&lt;br /&gt;
- by popular request, make 4th bar of connection icon green&lt;br /&gt;
&lt;br /&gt;
===0.6.1===&lt;br /&gt;
Never released&lt;br /&gt;
&lt;br /&gt;
===0.6.0&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=74737.0 0.6.0 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
Bitcoin version 0.6.0 is now available for download at:&lt;br /&gt;
http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.6.0/test/&lt;br /&gt;
&lt;br /&gt;
This release includes more than 20 language localizations.&lt;br /&gt;
More translations are welcome; join the&lt;br /&gt;
project at Transifex to help:&lt;br /&gt;
https://www.transifex.net/projects/p/bitcoin/&lt;br /&gt;
&lt;br /&gt;
Please report bugs using the issue tracker at github:&lt;br /&gt;
https://github.com/bitcoin/bitcoin/issues&lt;br /&gt;
&lt;br /&gt;
Project source code is hosted at github; we are no longer&lt;br /&gt;
distributing .tar.gz files here, you can get them&lt;br /&gt;
directly from github:&lt;br /&gt;
https://github.com/bitcoin/bitcoin/tarball/v0.6.0  # .tar.gz&lt;br /&gt;
https://github.com/bitcoin/bitcoin/zipball/v0.6.0  # .zip&lt;br /&gt;
&lt;br /&gt;
For Ubuntu users, there is a ppa maintained by Matt Corallo which&lt;br /&gt;
you can add to your system so that it will automatically keep&lt;br /&gt;
bitcoin up-to-date.  Just type&lt;br /&gt;
sudo apt-add-repository ppa:bitcoin/bitcoin&lt;br /&gt;
in your terminal, then install the bitcoin-qt package.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
KNOWN ISSUES&lt;br /&gt;
&lt;br /&gt;
Shutting down while synchronizing with the network&lt;br /&gt;
(downloading the blockchain) can take more than a minute,&lt;br /&gt;
because database writes are queued to speed up download&lt;br /&gt;
time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NEW FEATURES SINCE BITCOIN VERSION 0.5&lt;br /&gt;
&lt;br /&gt;
Initial network synchronization should be much faster&lt;br /&gt;
(one or two hours on a typical machine instead of ten or more&lt;br /&gt;
hours).&lt;br /&gt;
&lt;br /&gt;
Backup Wallet menu option.&lt;br /&gt;
&lt;br /&gt;
Bitcoin-Qt can display and save QR codes for sending&lt;br /&gt;
and receiving addresses.&lt;br /&gt;
&lt;br /&gt;
New context menu on addresses to copy/edit/delete them.&lt;br /&gt;
&lt;br /&gt;
New Sign Message dialog that allows you to prove that you&lt;br /&gt;
own a bitcoin address by creating a digital&lt;br /&gt;
signature.&lt;br /&gt;
&lt;br /&gt;
New wallets created with this version will&lt;br /&gt;
use 33-byte &#039;compressed&#039; public keys instead of&lt;br /&gt;
65-byte public keys, resulting in smaller&lt;br /&gt;
transactions and less traffic on the bitcoin&lt;br /&gt;
network. The shorter keys are already supported&lt;br /&gt;
by the network but wallet.dat files containing&lt;br /&gt;
short keys are not compatible with earlier&lt;br /&gt;
versions of Bitcoin-Qt/bitcoind.&lt;br /&gt;
&lt;br /&gt;
New command-line argument -blocknotify=&amp;lt;command&amp;gt;&lt;br /&gt;
that will spawn a shell process to run &amp;lt;command&amp;gt; &lt;br /&gt;
when a new block is accepted.&lt;br /&gt;
&lt;br /&gt;
New command-line argument -splash=0 to disable&lt;br /&gt;
Bitcoin-Qt&#039;s initial splash screen&lt;br /&gt;
&lt;br /&gt;
validateaddress JSON-RPC api command output includes&lt;br /&gt;
two new fields for addresses in the wallet:&lt;br /&gt;
pubkey : hexadecimal public key&lt;br /&gt;
iscompressed : true if pubkey is a short 33-byte key&lt;br /&gt;
&lt;br /&gt;
New JSON-RPC api commands for dumping/importing&lt;br /&gt;
private keys from the wallet (dumprivkey, importprivkey).&lt;br /&gt;
&lt;br /&gt;
New JSON-RPC api command for getting information about&lt;br /&gt;
blocks (getblock, getblockhash).&lt;br /&gt;
&lt;br /&gt;
New JSON-RPC api command (getmininginfo) for getting&lt;br /&gt;
extra information related to mining. The getinfo&lt;br /&gt;
JSON-RPC command no longer includes mining-related&lt;br /&gt;
information (generate/genproclimit/hashespersec).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTABLE CHANGES&lt;br /&gt;
&lt;br /&gt;
BIP30 implemented (security fix for an attack involving&lt;br /&gt;
duplicate &amp;quot;coinbase transactions&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
The -nolisten, -noupnp and -nodnsseed command-line&lt;br /&gt;
options were renamed to -listen, -upnp and -dnsseed,&lt;br /&gt;
with a default value of 1. The old names are still&lt;br /&gt;
supported for compatibility (so specifying -nolisten&lt;br /&gt;
is automatically interpreted as -listen=0; every&lt;br /&gt;
boolean argument can now be specified as either&lt;br /&gt;
-foo or -nofoo).&lt;br /&gt;
&lt;br /&gt;
The -noirc command-line options was renamed to&lt;br /&gt;
-irc, with a default value of 0. Run -irc=1 to&lt;br /&gt;
get the old behavior.&lt;br /&gt;
&lt;br /&gt;
Three fill-up-available-memory denial-of-service&lt;br /&gt;
attacks were fixed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOT YET IMPLEMENTED FEATURES&lt;br /&gt;
&lt;br /&gt;
Support for clicking on bitcoin: URIs and&lt;br /&gt;
opening/launching Bitcoin-Qt is available only on Linux,&lt;br /&gt;
and only if you configure your desktop to launch&lt;br /&gt;
Bitcoin-Qt. All platforms support dragging and dropping&lt;br /&gt;
bitcoin: URIs onto the Bitcoin-Qt window to start&lt;br /&gt;
payment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PRELIMINARY SUPPORT FOR MULTISIGNATURE TRANSACTIONS&lt;br /&gt;
&lt;br /&gt;
This release has preliminary support for multisignature&lt;br /&gt;
transactions-- transactions that require authorization&lt;br /&gt;
from more than one person or device before they&lt;br /&gt;
will be accepted by the bitcoin network.&lt;br /&gt;
&lt;br /&gt;
Prior to this release, multisignature transactions&lt;br /&gt;
were considered &#039;non-standard&#039; and were ignored;&lt;br /&gt;
with this release multisignature transactions are&lt;br /&gt;
considered standard and will start to be relayed&lt;br /&gt;
and accepted into blocks.&lt;br /&gt;
&lt;br /&gt;
It is expected that future releases of Bitcoin-Qt&lt;br /&gt;
will support the creation of multisignature transactions,&lt;br /&gt;
once enough of the network has upgraded so relaying&lt;br /&gt;
and validating them is robust.&lt;br /&gt;
&lt;br /&gt;
For this release, creation and testing of multisignature&lt;br /&gt;
transactions is limited to the bitcoin test network using&lt;br /&gt;
the &amp;quot;addmultisigaddress&amp;quot; JSON-RPC api call.&lt;br /&gt;
&lt;br /&gt;
Short multisignature address support is included in this&lt;br /&gt;
release, as specified in BIP 13 and BIP 16.&lt;br /&gt;
&lt;br /&gt;
==0.5.X==&lt;br /&gt;
After 0.5.1, all subsequent releases are stable maintenance releases, 0.6.0 is based on 0.5.1.&lt;br /&gt;
&lt;br /&gt;
===0.5.5&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=79651 0.4.6/0.5.5 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
bitcoind and Bitcoin-Qt version 0.5.5 are now available for download at:&lt;br /&gt;
Windows: installer | zip (sig)&lt;br /&gt;
Source: tar.gz&lt;br /&gt;
bitcoind and Bitcoin-Qt version 0.6.0.7 are also tagged in git, but it is recommended to upgrade to 0.6.1.&lt;br /&gt;
&lt;br /&gt;
These are bugfix-only releases.&lt;br /&gt;
&lt;br /&gt;
Please report bugs by replying to this forum thread. Note that the 0.4.x wxBitcoin GUI client is no longer maintained nor supported. If someone would like to step up to maintain this, they should contact Luke-Jr.&lt;br /&gt;
&lt;br /&gt;
BUG FIXES&lt;br /&gt;
&lt;br /&gt;
Version 0.6.0 allowed importing invalid &amp;quot;private keys&amp;quot;, which would be unspendable; 0.6.0.7 will now verify the private key is valid, and refuse to import an invalid one&lt;br /&gt;
Verify status of encrypt/decrypt calls to detect failed padding&lt;br /&gt;
Check blocks for duplicate transactions earlier. Fixes #1167&lt;br /&gt;
Upgrade Windows builds to OpenSSL 1.0.1b&lt;br /&gt;
Set label when selecting an address that already has a label. Fixes #1080 (Bitcoin-Qt)&lt;br /&gt;
JSON-RPC listtransactions&#039;s from/count handling is now fixed&lt;br /&gt;
Optimize and fix multithreaded access, when checking whether we already know about transactions&lt;br /&gt;
Fix potential networking deadlock&lt;br /&gt;
Proper support for Growl 1.3 notifications&lt;br /&gt;
Display an error, rather than crashing, if encoding a QR Code failed (0.6.0.7)&lt;br /&gt;
Don&#039;t erroneously set &amp;quot;Display addresses&amp;quot; for users who haven&#039;t explicitly enabled it (Bitcoin-Qt)&lt;br /&gt;
Some non-ASCII input in JSON-RPC expecting hexadecimal may have been misinterpreted rather than rejected&lt;br /&gt;
Missing error condition checking added&lt;br /&gt;
Do not show green tick unless all known blocks are downloaded. Fixes #921 (Bitcoin-Qt)&lt;br /&gt;
Increase time ago of last block for &amp;quot;up to date&amp;quot; status from 30 to 90 minutes&lt;br /&gt;
Show a message box when runaway exception happens (Bitcoin-Qt)&lt;br /&gt;
Use a messagebox to display the error when -server is provided without providing a rpc password&lt;br /&gt;
Show error message instead of exception crash when unable to bind RPC port (Bitcoin-Qt)&lt;br /&gt;
Correct sign message bitcoin address tooltip. Fixes #1050 (Bitcoin-Qt)&lt;br /&gt;
Removed &amp;quot;(no label)&amp;quot; from QR Code dialog titlebar if we have no label (0.6.0.7)&lt;br /&gt;
Removed an ugly line break in tooltip for mature transactions (0.6.0.7)&lt;br /&gt;
Add missing tooltip and key shortcut in settings dialog (part of #1088) (Bitcoin-Qt)&lt;br /&gt;
Work around issue in boost::program_options that prevents from compiling in clang&lt;br /&gt;
Fixed bugs occurring only on platforms with unsigned characters (such as ARM).&lt;br /&gt;
Rename make_windows_icon.py to .sh as it is a shell script. Fixes #1099 (Bitcoin-Qt)&lt;br /&gt;
Various trivial internal corrections to types used for counting/size loops and warnings&lt;br /&gt;
&lt;br /&gt;
===0.5.4&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=76808.0 0.5.4 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
Bitcoin version 0.5.4 is now available for download at:&lt;br /&gt;
http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.5.4/&lt;br /&gt;
NOTE: 0.5.4rc3 is being renamed to 0.5.4 final with no changes.&lt;br /&gt;
&lt;br /&gt;
This is a bugfix-only release in the 0.5.x series, plus a few protocol updates.&lt;br /&gt;
&lt;br /&gt;
Please report bugs using the issue tracker at github:&lt;br /&gt;
https://github.com/bitcoin/bitcoin/issues&lt;br /&gt;
&lt;br /&gt;
Stable source code is hosted at Gitorious:&lt;br /&gt;
http://gitorious.org/bitcoin/bitcoind-stable/archive-tarball/v0.5.4#.tar.gz&lt;br /&gt;
&lt;br /&gt;
PROTOCOL UPDATES&lt;br /&gt;
&lt;br /&gt;
BIP 16: Special-case &amp;quot;pay to script hash&amp;quot; logic to enable minimal validation of new transactions.&lt;br /&gt;
Support for validating message signatures produced with compressed public keys.&lt;br /&gt;
&lt;br /&gt;
BUG FIXES&lt;br /&gt;
&lt;br /&gt;
Build with thread-safe MingW libraries for Windows, fixing a dangerous memory corruption scenario when exceptions are thrown.&lt;br /&gt;
Fix broken testnet mining.&lt;br /&gt;
Stop excess inventory relay during initial block download.&lt;br /&gt;
When disconnecting a node, clear the received buffer so that we do not process any already received messages.&lt;br /&gt;
Yet another attempt at implementing &amp;quot;minimize to tray&amp;quot; that works on all operating systems.&lt;br /&gt;
Fix Bitcoin-Qt notifications under Growl 1.3.&lt;br /&gt;
Increase required age of Bitcoin-Qt&#039;s &amp;quot;not up to date&amp;quot; status from 30 to 90 minutes.&lt;br /&gt;
Implemented missing verifications that led to crash on entering some wrong passphrases for encrypted wallets.&lt;br /&gt;
Fix default filename suffixes in GNOME save dialog.&lt;br /&gt;
Make the &amp;quot;Send coins&amp;quot; tab use the configured unit type, even on the first attempt.&lt;br /&gt;
Print detailed wallet loading errors to debug.log when it is corrupt.&lt;br /&gt;
Allocate exactly the amount of space needed for signing transactions, instead of a fixed 10k buffer.&lt;br /&gt;
Workaround for improbable memory access violation.&lt;br /&gt;
Check wallet&#039;s minimum version before trying to load it.&lt;br /&gt;
Remove wxBitcoin properly when installing Bitcoin-Qt over it. (Windows)&lt;br /&gt;
Detail reorganization information better in debug log.&lt;br /&gt;
Use a messagebox to display the error when -server is provided without configuring a RPC password.&lt;br /&gt;
Testing suite build now honours provided CXXFLAGS.&lt;br /&gt;
Removed an extraneous line-break in mature transaction tooltips.&lt;br /&gt;
Fix some grammatical errors in translation process documentation.&lt;br /&gt;
&lt;br /&gt;
===0.5.3&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=68895.0 0.5.3 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
Bitcoin version 0.5.3 is now available for download at:&lt;br /&gt;
http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.5.3/&lt;br /&gt;
&lt;br /&gt;
This is a bugfix-only release based on 0.5.1.&lt;br /&gt;
It also includes a few protocol updates.&lt;br /&gt;
&lt;br /&gt;
Please report bugs using the issue tracker at github:&lt;br /&gt;
https://github.com/bitcoin/bitcoin/issues&lt;br /&gt;
&lt;br /&gt;
Stable source code is hosted at Gitorious:&lt;br /&gt;
http://gitorious.org/bitcoin/bitcoind-stable/archive-tarball/v0.5.3#.tar.gz&lt;br /&gt;
&lt;br /&gt;
PROTOCOL UPDATES&lt;br /&gt;
&lt;br /&gt;
BIP 30: Introduce a new network rule: &amp;quot;a block is not valid if it contains a transaction whose hash already exists in the block chain, unless all that transaction&#039;s outputs were already spent before said block&amp;quot; beginning on March 15, 2012, 00:00 UTC.&lt;br /&gt;
On testnet, allow mining of min-difficulty blocks if 20 minutes have gone by without mining a regular-difficulty block. This is to make testing Bitcoin easier, and will not affect normal mode.&lt;br /&gt;
&lt;br /&gt;
BUG FIXES&lt;br /&gt;
&lt;br /&gt;
Limit the number of orphan transactions stored in memory, to prevent a potential denial-of-service attack by flooding orphan transactions. Also never store invalid transactions at all.&lt;br /&gt;
Fix possible buffer overflow on systems with very long application data paths. This is not exploitable.&lt;br /&gt;
Resolved multiple bugs preventing long-term unlocking of encrypted wallets&lt;br /&gt;
(issue #922).&lt;br /&gt;
Only send local IP in &amp;quot;version&amp;quot; messages if it is globally routable (ie, not private), and try to get such an IP from UPnP if applicable.&lt;br /&gt;
Reannounce UPnP port forwards every 20 minutes, to workaround routers expiring old entries, and allow the -upnp option to override any stored setting.&lt;br /&gt;
Skip splash screen when -min is used, and fix Minimize to Tray function.&lt;br /&gt;
Do not blank &amp;quot;label&amp;quot; in Bitcoin-Qt &amp;quot;Send&amp;quot; tab, if the user has already entered something.&lt;br /&gt;
Correct various labels and messages.&lt;br /&gt;
Various memory leaks and potential null pointer deferences have been fixed.&lt;br /&gt;
Handle invalid Bitcoin URIs using &amp;quot;bitcoin://&amp;quot; instead of &amp;quot;bitcoin:&amp;quot;.&lt;br /&gt;
Several shutdown issues have been fixed.&lt;br /&gt;
Revert to &amp;quot;global progress indication&amp;quot;, as starting from zero every time was considered too confusing for many users.&lt;br /&gt;
Check that keys stored in the wallet are valid at startup, and if not, report corruption.&lt;br /&gt;
Enable accessible widgets on Windows, so that people with screen readers such as NVDA can make sense of it.&lt;br /&gt;
Various build fixes.&lt;br /&gt;
If no password is specified to bitcoind, recommend a secure password.&lt;br /&gt;
Automatically focus and scroll to new &amp;quot;Send coins&amp;quot; entries in Bitcoin-Qt.&lt;br /&gt;
Show a message box for --help on Windows, for Bitcoin-Qt.&lt;br /&gt;
Add missing &amp;quot;About Qt&amp;quot; menu option to show built-in Qt About dialog.&lt;br /&gt;
Don&#039;t show &amp;quot;-daemon&amp;quot; as an option for Bitcoin-Qt, since it isn&#039;t available.&lt;br /&gt;
Update hard-coded fallback seed nodes, choosing recent ones with long uptime and versions at least 0.4.0.&lt;br /&gt;
Add checkpoint at block 168,000.&lt;br /&gt;
&lt;br /&gt;
===0.5.2&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=60146.0 0.5.2 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
Bitcoin version 0.5.2 is now available for download at:&lt;br /&gt;
http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.5.2/&lt;br /&gt;
&lt;br /&gt;
This is a bugfix-only release based on 0.5.1.&lt;br /&gt;
&lt;br /&gt;
Please report bugs using the issue tracker at github:&lt;br /&gt;
https://github.com/bitcoin/bitcoin/issues&lt;br /&gt;
&lt;br /&gt;
Stable source code is hosted at Gitorious:&lt;br /&gt;
http://gitorious.org/bitcoin/bitcoind-stable/archive-tarball/v0.5.2#.tar.gz&lt;br /&gt;
&lt;br /&gt;
BUG FIXES&lt;br /&gt;
&lt;br /&gt;
Check all transactions in blocks after the last checkpoint (0.5.0 and 0.5.1 skipped checking ECDSA signatures during initial blockchain download).&lt;br /&gt;
Cease locking memory used by non-sensitive information (this caused a huge performance hit on some platforms, especially noticable during initial blockchain download; this was&lt;br /&gt;
not a security vulnerability).&lt;br /&gt;
Fixed some address-handling deadlocks (client freezes).&lt;br /&gt;
No longer accept inbound connections over the internet when Bitcoin is being used with Tor (identity leak).&lt;br /&gt;
Re-enable SSL support for the JSON-RPC interface (it was unintentionally disabled for the 0.5.0 and 0.5.1 release Linux binaries).&lt;br /&gt;
Use the correct base transaction fee of 0.0005 BTC for accepting transactions into mined blocks (since 0.4.0, it was incorrectly accepting 0.0001 BTC which was only meant to be relayed).&lt;br /&gt;
Don&#039;t show &amp;quot;IP&amp;quot; for transactions which are not necessarily IP transactions.&lt;br /&gt;
Add new DNS seeds (maintained by Pieter Wuille and Luke Dashjr).&lt;br /&gt;
&lt;br /&gt;
===0.5.1&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=54717.0 0.5.1 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
Bitcoin version 0.5.1 is now available for download at:&lt;br /&gt;
http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.5.1/&lt;br /&gt;
&lt;br /&gt;
This is a bugfix-only release.&lt;br /&gt;
&lt;br /&gt;
This release includes 13 translations, including 5 new translations:&lt;br /&gt;
Italian, Hungarian, Ukranian, Portuguese (Brazilian) and Simplified Chinese.&lt;br /&gt;
More translations are welcome; join the project at Transifex if you can help:&lt;br /&gt;
https://www.transifex.net/projects/p/bitcoin/&lt;br /&gt;
&lt;br /&gt;
Please report bugs using the issue tracker at github:&lt;br /&gt;
https://github.com/bitcoin/bitcoin/issues&lt;br /&gt;
&lt;br /&gt;
Project source code is hosted at github; we are no longer&lt;br /&gt;
distributing .tar.gz files here, you can get them&lt;br /&gt;
directly from github:&lt;br /&gt;
https://github.com/bitcoin/bitcoin/tarball/v0.5.1  # .tar.gz&lt;br /&gt;
https://github.com/bitcoin/bitcoin/zipball/v0.5.1  # .zip&lt;br /&gt;
&lt;br /&gt;
For Ubuntu users, there is a new ppa maintained by Matt Corallo which&lt;br /&gt;
you can add to your system so that it will automatically keep&lt;br /&gt;
bitcoin up-to-date.  Just type&lt;br /&gt;
sudo apt-add-repository ppa:bitcoin/bitcoin&lt;br /&gt;
in your terminal, then install the bitcoin-qt package.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BUG FIXES&lt;br /&gt;
&lt;br /&gt;
Re-enable SSL support for the JSON-RPC interface (it was unintentionally&lt;br /&gt;
disabled for the 0.5.0 release binaries).&lt;br /&gt;
&lt;br /&gt;
The code that finds peers via &amp;quot;dns seeds&amp;quot; no longer stops bitcoin startup&lt;br /&gt;
if one of the dns seed machines is down.&lt;br /&gt;
&lt;br /&gt;
Tooltips on the transaction list view were rendering incorrectly (as black boxes&lt;br /&gt;
or with a transparent background).&lt;br /&gt;
&lt;br /&gt;
Prevent a denial-of-service attack involving flooding a bitcoin node with&lt;br /&gt;
orphan blocks.&lt;br /&gt;
&lt;br /&gt;
The wallet passphrase dialog now warns you if the caps lock key was pressed.&lt;br /&gt;
&lt;br /&gt;
Improved searching in addresses and labels in bitcoin-qt.&lt;br /&gt;
&lt;br /&gt;
===0.5.0&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=52480.0 0.5.0 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
Bitcoin version 0.5.0 is now available for download at:&lt;br /&gt;
http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.5.0/&lt;br /&gt;
&lt;br /&gt;
The major change for this release is a completely new graphical interface that uses the Qt user interface toolkit.&lt;br /&gt;
&lt;br /&gt;
This release include German, Spanish, Spanish-Castilian, Norwegian and Dutch translations. More translations are welcome; join the project at Transifex if you can help:&lt;br /&gt;
https://www.transifex.net/projects/p/bitcoin/&lt;br /&gt;
&lt;br /&gt;
Please report bugs using the issue tracker at github:&lt;br /&gt;
https://github.com/bitcoin/bitcoin/issues&lt;br /&gt;
&lt;br /&gt;
For Ubuntu users, there is a new ppa maintained by Matt Corallo which you can add to your system so that it will automatically keep bitcoin up-to-date.  Just type &amp;quot;sudo apt-add-repository ppa:bitcoin/bitcoin&amp;quot; in your terminal, then install the bitcoin-qt package.&lt;br /&gt;
&lt;br /&gt;
MAJOR BUG FIX  (CVE-2011-4447)&lt;br /&gt;
&lt;br /&gt;
The wallet encryption feature introduced in Bitcoin version 0.4.0 did not sufficiently secure the private keys. An attacker who&lt;br /&gt;
managed to get a copy of your encrypted wallet.dat file might be able to recover some or all of the unencrypted keys and steal the&lt;br /&gt;
associated coins.&lt;br /&gt;
&lt;br /&gt;
If you have a previously encrypted wallet.dat, the first time you run bitcoin-qt or bitcoind the wallet will be rewritten, Bitcoin will&lt;br /&gt;
shut down, and you will be prompted to restart it to run with the new, properly encrypted file.&lt;br /&gt;
&lt;br /&gt;
If you had a previously encrypted wallet.dat that might have been copied or stolen (for example, you backed it up to a public&lt;br /&gt;
location) you should send all of your bitcoins to yourself using a new bitcoin address and stop using any previously generated addresses.&lt;br /&gt;
&lt;br /&gt;
Wallets encrypted with this version of Bitcoin are written properly.&lt;br /&gt;
&lt;br /&gt;
Technical note: the encrypted wallet&#039;s &#039;keypool&#039; will be regenerated the first time you request a new bitcoin address; to be certain that the&lt;br /&gt;
new private keys are properly backed up you should:&lt;br /&gt;
&lt;br /&gt;
1. Run Bitcoin and let it rewrite the wallet.dat file&lt;br /&gt;
&lt;br /&gt;
2. Run it again, then ask it for a new bitcoin address.&lt;br /&gt;
Bitcoin-Qt: Address Book, then New Address...&lt;br /&gt;
bitcoind: run the &#039;walletpassphrase&#039; RPC command to unlock the wallet,  then run the &#039;getnewaddress&#039; RPC command.&lt;br /&gt;
&lt;br /&gt;
3. If your encrypted wallet.dat may have been copied or stolen, send  all of your bitcoins to the new bitcoin address.&lt;br /&gt;
&lt;br /&gt;
4. Shut down Bitcoin, then backup the wallet.dat file.&lt;br /&gt;
IMPORTANT: be sure to request a new bitcoin address before backing up, so that the &#039;keypool&#039; is regenerated and backed up.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Security in depth&amp;quot; is always a good idea, so choosing a secure location for the backup and/or encrypting the backup before uploading it is recommended. And as in previous releases, if your machine is infected by malware there are several ways an attacker might steal your bitcoins.&lt;br /&gt;
&lt;br /&gt;
Thanks to Alan Reiner (etotheipi) for finding and reporting this bug.&lt;br /&gt;
&lt;br /&gt;
MAJOR GUI CHANGES&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Splash&amp;quot; graphics at startup that show address/wallet/blockchain loading progress.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Synchronizing with network&amp;quot; progress bar to show block-chain download progress.&lt;br /&gt;
&lt;br /&gt;
Icons at the bottom of the window that show how well connected you are to the network, with tooltips to display details.&lt;br /&gt;
&lt;br /&gt;
Drag and drop support for bitcoin: URIs on web pages.&lt;br /&gt;
&lt;br /&gt;
Export transactions as a .csv file.&lt;br /&gt;
&lt;br /&gt;
Many other GUI improvements, large and small.&lt;br /&gt;
&lt;br /&gt;
RPC CHANGES&lt;br /&gt;
&lt;br /&gt;
getmemorypool : new RPC command, provides everything needed to construct a block with a custom generation transaction and submit a solution&lt;br /&gt;
&lt;br /&gt;
listsinceblock : new RPC command, list transactions since given block&lt;br /&gt;
&lt;br /&gt;
signmessage/verifymessage : new RPC commands to sign a message with one of your private keys or verify that a message signed by the private key associated with a bitcoin address.&lt;br /&gt;
&lt;br /&gt;
GENERAL CHANGES&lt;br /&gt;
&lt;br /&gt;
Faster initial block download.&lt;br /&gt;
&lt;br /&gt;
==0.4.X==&lt;br /&gt;
After 0.4.0, all subsequent releases are stable maintenance releases, 0.5.0 is based on 0.4.0.&lt;br /&gt;
&lt;br /&gt;
===0.4.6&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=79651 0.4.6/0.5.5 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
bitcoind version 0.4.6 is now available for download at:&lt;br /&gt;
Windows: installer | zip (sig)&lt;br /&gt;
Source: tar.gz&lt;br /&gt;
bitcoind and Bitcoin-Qt version 0.6.0.7 are also tagged in git, but it is recommended to upgrade to 0.6.1.&lt;br /&gt;
&lt;br /&gt;
These are bugfix-only releases.&lt;br /&gt;
&lt;br /&gt;
Please report bugs by replying to this forum thread. Note that the 0.4.x wxBitcoin GUI client is no longer maintained nor supported. If someone would like to step up to maintain this, they should contact Luke-Jr.&lt;br /&gt;
&lt;br /&gt;
BUG FIXES&lt;br /&gt;
&lt;br /&gt;
Version 0.6.0 allowed importing invalid &amp;quot;private keys&amp;quot;, which would be unspendable; 0.6.0.7 will now verify the private key is valid, and refuse to import an invalid one&lt;br /&gt;
Verify status of encrypt/decrypt calls to detect failed padding&lt;br /&gt;
Check blocks for duplicate transactions earlier. Fixes #1167&lt;br /&gt;
Upgrade Windows builds to OpenSSL 1.0.1b&lt;br /&gt;
Set label when selecting an address that already has a label. Fixes #1080 (Bitcoin-Qt)&lt;br /&gt;
JSON-RPC listtransactions&#039;s from/count handling is now fixed&lt;br /&gt;
Optimize and fix multithreaded access, when checking whether we already know about transactions&lt;br /&gt;
Fix potential networking deadlock&lt;br /&gt;
Proper support for Growl 1.3 notifications&lt;br /&gt;
Display an error, rather than crashing, if encoding a QR Code failed (0.6.0.7)&lt;br /&gt;
Don&#039;t erroneously set &amp;quot;Display addresses&amp;quot; for users who haven&#039;t explicitly enabled it (Bitcoin-Qt)&lt;br /&gt;
Some non-ASCII input in JSON-RPC expecting hexadecimal may have been misinterpreted rather than rejected&lt;br /&gt;
Missing error condition checking added&lt;br /&gt;
Do not show green tick unless all known blocks are downloaded. Fixes #921 (Bitcoin-Qt)&lt;br /&gt;
Increase time ago of last block for &amp;quot;up to date&amp;quot; status from 30 to 90 minutes&lt;br /&gt;
Show a message box when runaway exception happens (Bitcoin-Qt)&lt;br /&gt;
Use a messagebox to display the error when -server is provided without providing a rpc password&lt;br /&gt;
Show error message instead of exception crash when unable to bind RPC port (Bitcoin-Qt)&lt;br /&gt;
Correct sign message bitcoin address tooltip. Fixes #1050 (Bitcoin-Qt)&lt;br /&gt;
Removed &amp;quot;(no label)&amp;quot; from QR Code dialog titlebar if we have no label (0.6.0.7)&lt;br /&gt;
Removed an ugly line break in tooltip for mature transactions (0.6.0.7)&lt;br /&gt;
Add missing tooltip and key shortcut in settings dialog (part of #1088) (Bitcoin-Qt)&lt;br /&gt;
Work around issue in boost::program_options that prevents from compiling in clang&lt;br /&gt;
Fixed bugs occurring only on platforms with unsigned characters (such as ARM).&lt;br /&gt;
Rename make_windows_icon.py to .sh as it is a shell script. Fixes #1099 (Bitcoin-Qt)&lt;br /&gt;
Various trivial internal corrections to types used for counting/size loops and warnings&lt;br /&gt;
&lt;br /&gt;
===0.4.5===&lt;br /&gt;
(No known forum post.)&lt;br /&gt;
&lt;br /&gt;
===0.4.4&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=70566.0 0.4.4 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
Bitcoin version 0.4.4 is now available for download at:&lt;br /&gt;
http://luke.dashjr.org/programs/bitcoin/files/bitcoind-0.4.4/&lt;br /&gt;
&lt;br /&gt;
This is a bugfix-only release based on 0.4.0.&lt;br /&gt;
&lt;br /&gt;
Please note that the wxBitcoin GUI client is no longer maintained nor supported. If someone would like to step up to maintain this, they should contact Luke-Jr.&lt;br /&gt;
&lt;br /&gt;
Please report bugs for the daemon only using the issue tracker at github:&lt;br /&gt;
https://github.com/bitcoin/bitcoin/issues&lt;br /&gt;
&lt;br /&gt;
Stable source code is hosted at Gitorious:&lt;br /&gt;
http://gitorious.org/bitcoin/bitcoind-stable/archive-tarball/v0.4.4#.tar.gz&lt;br /&gt;
&lt;br /&gt;
BUG FIXES&lt;br /&gt;
&lt;br /&gt;
Limit the number of orphan transactions stored in memory, to prevent a potential denial-of-service attack by flooding orphan transactions. Also never store invalid transactions at all.&lt;br /&gt;
Fix possible buffer overflow on systems with very long application data paths. This is not exploitable.&lt;br /&gt;
Resolved multiple bugs preventing long-term unlocking of encrypted wallets (issue #922).&lt;br /&gt;
Only send local IP in &amp;quot;version&amp;quot; messages if it is globally routable (ie, not private), and try to get such an IP from UPnP if applicable.&lt;br /&gt;
Reannounce UPnP port forwards every 20 minutes, to workaround routers expiring old entries, and allow the -upnp option to override any stored setting.&lt;br /&gt;
Various memory leaks and potential null pointer deferences have been&lt;br /&gt;
fixed.&lt;br /&gt;
Several shutdown issues have been fixed.&lt;br /&gt;
Check that keys stored in the wallet are valid at startup, and if not,&lt;br /&gt;
report corruption.&lt;br /&gt;
Various build fixes.&lt;br /&gt;
If no password is specified to bitcoind, recommend a secure password.&lt;br /&gt;
Update hard-coded fallback seed nodes, choosing recent ones with long uptime and versions at least 0.4.0.&lt;br /&gt;
Add checkpoint at block 168,000.&lt;br /&gt;
&lt;br /&gt;
===0.4.3&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=57734.0 0.4.3 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
bitcoind version 0.4.3 is now available for download at:&lt;br /&gt;
http://luke.dashjr.org/programs/bitcoin/files/bitcoind-0.4.3/ (until Gavin uploads to SourceForge)&lt;br /&gt;
&lt;br /&gt;
This is a bugfix-only release based on 0.4.0.&lt;br /&gt;
&lt;br /&gt;
Please note that the wxBitcoin GUI client is no longer maintained nor supported. If someone would like to step up to maintain this, they should contact Luke-Jr.&lt;br /&gt;
&lt;br /&gt;
Please report bugs for the daemon only using the issue tracker at github:&lt;br /&gt;
https://github.com/bitcoin/bitcoin/issues&lt;br /&gt;
&lt;br /&gt;
Stable source code is hosted at Gitorious:&lt;br /&gt;
http://gitorious.org/bitcoin/bitcoind-stable/archive-tarball/v0.4.3#.tar.gz&lt;br /&gt;
&lt;br /&gt;
BUG FIXES&lt;br /&gt;
&lt;br /&gt;
Cease locking memory used by non-sensitive information (this caused a huge performance hit on some platforms, especially noticable during initial blockchain download).&lt;br /&gt;
Fixed some address-handling deadlocks (client freezes).&lt;br /&gt;
No longer accept inbound connections over the internet when Bitcoin is being used with Tor (identity leak).&lt;br /&gt;
Use the correct base transaction fee of 0.0005 BTC for accepting transactions into mined blocks (since 0.4.0, it was incorrectly accepting 0.0001 BTC which was only meant to be relayed).&lt;br /&gt;
Add new DNS seeds (maintained by Pieter Wuille and Luke Dashjr).&lt;br /&gt;
&lt;br /&gt;
===0.4.2===&lt;br /&gt;
(No known forum post.)&lt;br /&gt;
&lt;br /&gt;
===0.4.1&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=52503.0 0.4.1 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
Bitcoin version 0.4.1 is now available for download at:&lt;br /&gt;
http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.4.1/&lt;br /&gt;
&lt;br /&gt;
This is a bugfix only release based on 0.4.0.&lt;br /&gt;
&lt;br /&gt;
Please report bugs by replying to this forum thread.&lt;br /&gt;
&lt;br /&gt;
MAJOR BUG FIX  (CVE-2011-4447)&lt;br /&gt;
&lt;br /&gt;
The wallet encryption feature introduced in Bitcoin version 0.4.0 did not sufficiently secure the private keys. An attacker who&lt;br /&gt;
managed to get a copy of your encrypted wallet.dat file might be able to recover some or all of the unencrypted keys and steal the&lt;br /&gt;
associated coins.&lt;br /&gt;
&lt;br /&gt;
If you have a previously encrypted wallet.dat, the first time you run wxbitcoin or bitcoind the wallet will be rewritten, Bitcoin will&lt;br /&gt;
shut down, and you will be prompted to restart it to run with the new, properly encrypted file.&lt;br /&gt;
&lt;br /&gt;
If you had a previously encrypted wallet.dat that might have been copied or stolen (for example, you backed it up to a public&lt;br /&gt;
location) you should send all of your bitcoins to yourself using a new bitcoin address and stop using any previously generated addresses.&lt;br /&gt;
&lt;br /&gt;
Wallets encrypted with this version of Bitcoin are written properly.&lt;br /&gt;
&lt;br /&gt;
Technical note: the encrypted wallet&#039;s &#039;keypool&#039; will be regenerated the first time you request a new bitcoin address; to be certain that the&lt;br /&gt;
new private keys are properly backed up you should:&lt;br /&gt;
&lt;br /&gt;
1. Run Bitcoin and let it rewrite the wallet.dat file&lt;br /&gt;
&lt;br /&gt;
2. Run it again, then ask it for a new bitcoin address.&lt;br /&gt;
wxBitcoin: new address visible on main window&lt;br /&gt;
bitcoind: run the &#039;walletpassphrase&#039; RPC command to unlock the wallet,  then run the &#039;getnewaddress&#039; RPC command.&lt;br /&gt;
&lt;br /&gt;
3. If your encrypted wallet.dat may have been copied or stolen, send all of your bitcoins to the new bitcoin address.&lt;br /&gt;
&lt;br /&gt;
4. Shut down Bitcoin, then backup the wallet.dat file.&lt;br /&gt;
IMPORTANT: be sure to request a new bitcoin address before backing up, so that the &#039;keypool&#039; is regenerated and backed up.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Security in depth&amp;quot; is always a good idea, so choosing a secure location for the backup and/or encrypting the backup before uploading it is recommended. And as in previous releases, if your machine is infected by malware there are several ways an attacker might steal your bitcoins.&lt;br /&gt;
&lt;br /&gt;
Thanks to Alan Reiner (etotheipi) for finding and reporting this bug.&lt;br /&gt;
&lt;br /&gt;
===0.4.0&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=45410.0 0.4 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
Bitcoin version 0.4.0 is now available for download at:&lt;br /&gt;
http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.4.0/&lt;br /&gt;
&lt;br /&gt;
The main feature in this release is wallet private key encryption;&lt;br /&gt;
you can set a passphrase that must be entered before sending coins.&lt;br /&gt;
See below for more information; if you decide to encrypt your wallet,&lt;br /&gt;
WRITE DOWN YOUR PASSPHRASE AND PUT IT IN A SECURE LOCATION. If you&lt;br /&gt;
forget or lose your wallet passphrase, you lose your bitcoins.&lt;br /&gt;
Previous versions of bitcoin are unable to read encrypted wallets,&lt;br /&gt;
and will crash on startup if the wallet is encrypted.&lt;br /&gt;
&lt;br /&gt;
Also note: bitcoin version 0.4 uses a newer version of Berkeley DB&lt;br /&gt;
(bdb version 4.8) than previous versions (bdb 4.7). If you upgrade&lt;br /&gt;
to version 0.4 and then revert back to an earlier version of bitcoin&lt;br /&gt;
the it may be unable to start because bdb 4.7 cannot read bdb 4.8&lt;br /&gt;
&amp;quot;log&amp;quot; files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notable bug fixes from version 0.3.24:&lt;br /&gt;
&lt;br /&gt;
Fix several bitcoin-becomes-unresponsive bugs due to multithreading&lt;br /&gt;
deadlocks.&lt;br /&gt;
&lt;br /&gt;
Optimize database writes for large (lots of inputs) transactions&lt;br /&gt;
(fixes a potential denial-of-service attack)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wallet Encryption&lt;br /&gt;
&lt;br /&gt;
Bitcoin supports native wallet encryption so that people who steal your&lt;br /&gt;
wallet file don&#039;t automatically get access to all of your Bitcoins.&lt;br /&gt;
In order to enable this feature, choose &amp;quot;Encrypt Wallet&amp;quot; from the&lt;br /&gt;
Options menu.  You will be prompted to enter a passphrase, which&lt;br /&gt;
will be used as the key to encrypt your wallet and will be needed&lt;br /&gt;
every time you wish to send Bitcoins.  If you lose this passphrase,&lt;br /&gt;
you will lose access to spend all of the bitcoins in your wallet,&lt;br /&gt;
no one, not even the Bitcoin developers can recover your Bitcoins.&lt;br /&gt;
This means you are responsible for your own security, store your&lt;br /&gt;
passphrase in a secure location and do not forget it.&lt;br /&gt;
&lt;br /&gt;
Remember that the encryption built into bitcoin only encrypts the&lt;br /&gt;
actual keys which are required to send your bitcoins, not the full&lt;br /&gt;
wallet.  This means that someone who steals your wallet file will&lt;br /&gt;
be able to see all the addresses which belong to you, as well as the&lt;br /&gt;
relevant transactions, you are only protected from someone spending&lt;br /&gt;
your coins.&lt;br /&gt;
&lt;br /&gt;
It is recommended that you backup your wallet file before you&lt;br /&gt;
encrypt your wallet.  To do this, close the Bitcoin client and&lt;br /&gt;
copy the wallet.dat file from ~/.bitcoin/ on Linux, /Users/(user&lt;br /&gt;
name)/Application Support/Bitcoin/ on Mac OSX, and %APPDATA%/Bitcoin/&lt;br /&gt;
on Windows (that is /Users/(user name)/AppData/Roaming/Bitcoin on&lt;br /&gt;
Windows Vista and 7 and /Documents and Settings/(user name)/Application&lt;br /&gt;
Data/Bitcoin on Windows XP).  Once you have copied that file to a&lt;br /&gt;
safe location, reopen the Bitcoin client and Encrypt your wallet.&lt;br /&gt;
If everything goes fine, delete the backup and enjoy your encrypted&lt;br /&gt;
wallet.  Note that once you encrypt your wallet, you will never be&lt;br /&gt;
able to go back to a version of the Bitcoin client older than 0.4.&lt;br /&gt;
&lt;br /&gt;
Keep in mind that you are always responsible for your own security.&lt;br /&gt;
All it takes is a slightly more advanced wallet-stealing trojan which&lt;br /&gt;
installs a keylogger to steal your wallet passphrase as you enter it&lt;br /&gt;
in addition to your wallet file and you have lost all your Bitcoins.&lt;br /&gt;
Wallet encryption cannot keep you safe if you do not practice&lt;br /&gt;
good security, such as running up-to-date antivirus software, only&lt;br /&gt;
entering your wallet passphrase in the Bitcoin client and using the&lt;br /&gt;
same passphrase only as your wallet passphrase.&lt;br /&gt;
&lt;br /&gt;
See the doc/README file in the bitcoin source for technical details&lt;br /&gt;
of wallet encryption.&lt;br /&gt;
&lt;br /&gt;
==0.3.X==&lt;br /&gt;
&lt;br /&gt;
===0.3.24&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=27187.0 0.3.24 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
Bitcoin v0.3.24 is now available for download at&lt;br /&gt;
https://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.24/&lt;br /&gt;
&lt;br /&gt;
This is another bug fix release.  We had hoped to have wallet encryption ready for release, but more urgent fixes for existing clients were needed -- most notably block download problems were getting severe.  Wallet encryption is ready for testing at https://github.com/bitcoin/bitcoin/pull/352 for the git-savvy, and hopefully will follow shortly in the next release, v0.4.&lt;br /&gt;
&lt;br /&gt;
Notable fixes in v0.3.24, and the main reasons for this release:&lt;br /&gt;
&lt;br /&gt;
F1) Block downloads were failing or taking unreasonable amounts of time to complete, because the increased size of the block chain was bumping up against some earlier buffer-size DoS limits.&lt;br /&gt;
&lt;br /&gt;
F2) Fix crash caused by loss/lack of network connection.&lt;br /&gt;
&lt;br /&gt;
Notable changes in v0.3.24:&lt;br /&gt;
&lt;br /&gt;
C1) DNS seeding enabled by default.&lt;br /&gt;
&lt;br /&gt;
C2) UPNP enabled by default in the GUI client.  The percentage of bitcoin clients that accept incoming connections is quite small, and that is a problem.  This should help.  bitcoind, and unofficial builds, are unchanged (though we encourage use of &amp;quot;-upnp&amp;quot; to help the network!)&lt;br /&gt;
&lt;br /&gt;
C3) Initial unit testing framework.  Bitcoin sorely needs automated tests, and this is a beginning.  Contributions welcome.&lt;br /&gt;
&lt;br /&gt;
C4) Internal wallet code cleanup.  While invisible to an end user, this change provides the basis for v0.4&#039;s wallet encryption.&lt;br /&gt;
&lt;br /&gt;
===0.3.23&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=16553.0 0.3.23 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
Win32, Linux, MacOSX and source releases for bitcoin v0.3.23 have been uploaded to&lt;br /&gt;
https://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.23/&lt;br /&gt;
&lt;br /&gt;
This is another quick bugfix release, trying to deal with the influx of new bitcoin users.&lt;br /&gt;
&lt;br /&gt;
Main items of note:&lt;br /&gt;
&lt;br /&gt;
* P2P connect-to-node logic changed to reduce timeout a bit.  The network saw a huge influx of new users, who do not permit incoming connections.  This change is a short-term hack, to more quickly hunt for useful P2P connections.  Better &amp;quot;leaf node&amp;quot; logic is in the works, but this should let us limp along until then.  One may use -upnp to properly forward ports, and help the network.&lt;br /&gt;
* Transaction fee reduced to 0.0005 for new transactions&lt;br /&gt;
* Client will relay transactions with fees as low as 0.0001 BTC&lt;br /&gt;
&lt;br /&gt;
===0.3.22&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=12269.0 0.3.22 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
Download URL: https://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.22/&lt;br /&gt;
&lt;br /&gt;
This is largely a bugfix and TX fee schedule release.  We also hope to make 0.3.23 a quick release, to fix problems that the network has seen due to explosive growth in the past week.&lt;br /&gt;
&lt;br /&gt;
Notable changes:&lt;br /&gt;
* Client will accept and relay TX&#039;s with 0.0005 BTC fee schedule (users still pay 0.01 BTC per kb, until next version)&lt;br /&gt;
* Non-standard transactions accepted on testnet&lt;br /&gt;
* Source code tree reorganized (prep for autotools build)&lt;br /&gt;
* Remove &amp;quot;Generate Coins&amp;quot; option from GUI, and remove 4way SSE miner.  Internal reference CPU miner remains available, but users are directed to external miners for best hash production.&lt;br /&gt;
* IRC is overflowing.  Client now bootstraps to channels #bitcoin00 - #bitcoin99&lt;br /&gt;
* DNS names now may be used with -addnode, -connect (requires -dns to enable)&lt;br /&gt;
&lt;br /&gt;
RPC changes:&lt;br /&gt;
* &#039;listtransactions&#039; adds &#039;from&#039; param, for range queries&lt;br /&gt;
* &#039;move&#039; may take account balances negative&lt;br /&gt;
* &#039;settxfee&#039; added, to manually set TX fee&lt;br /&gt;
&lt;br /&gt;
===0.3.21&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=6642.0 0.3.21 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
Binaries for Bitcoin version 0.3.21 are available at:&lt;br /&gt;
  https://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.21/&lt;br /&gt;
&lt;br /&gt;
Changes and new features from the 0.3.20 release include:&lt;br /&gt;
&lt;br /&gt;
* Universal Plug and Play support.  Enable automatic opening of a port for incoming connections by running bitcoin or bitcoind with the - -upnp=1 command line switch or using the Options dialog box.&lt;br /&gt;
&lt;br /&gt;
* Support for full-precision bitcoin amounts.  You can now send, and bitcoin will display, bitcoin amounts smaller than 0.01.  However, sending fewer than 0.01 bitcoins still requires a 0.01 bitcoin fee (so you can send 1.0001 bitcoins without a fee, but you will be asked to pay a fee if you try to send 0.0001).&lt;br /&gt;
&lt;br /&gt;
* A new method of finding bitcoin nodes to connect with, via DNS A records. Use the -dnsseed option to enable.&lt;br /&gt;
&lt;br /&gt;
For developers, changes to bitcoin&#039;s remote-procedure-call API:&lt;br /&gt;
&lt;br /&gt;
* New rpc command &amp;quot;sendmany&amp;quot; to send bitcoins to more than one address in a single transaction.&lt;br /&gt;
&lt;br /&gt;
* Several bug fixes, including a serious intermittent bug that would sometimes cause bitcoind to stop accepting rpc requests. &lt;br /&gt;
&lt;br /&gt;
* -logtimestamps option, to add a timestamp to each line in debug.log.&lt;br /&gt;
&lt;br /&gt;
* Immature blocks (newly generated, under 120 confirmations) are now shown in listtransactions.&lt;br /&gt;
&lt;br /&gt;
===0.3.20.2&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=4167.0 0.3.20.2 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
The maxsendbuffer bug (0.3.20.1 clients not being able to download the block chain from other 0.3.20.1 clients) was only going to get&lt;br /&gt;
worse as people upgraded, so I cherry-picked the bug fix and created a minor release yesterday.&lt;br /&gt;
&lt;br /&gt;
The Amazon Machine Images I used to do the builds are available:&lt;br /&gt;
&lt;br /&gt;
  ami-38a05251   Bitcoin-v0.3.20.2 Mingw    (Windows; Administrator password &#039;bitcoin development&#039;)&lt;br /&gt;
  ami-30a05259   Bitcoin_0.3.20.2 Linux32&lt;br /&gt;
  ami-8abc4ee3   Bitcoin_0.3.20.2 Linux64&lt;br /&gt;
&lt;br /&gt;
(mac build will be done soon)&lt;br /&gt;
&lt;br /&gt;
If you have already downloaded version 0.3.20.1, please either add this to your bitcoin.conf file:&lt;br /&gt;
&lt;br /&gt;
  maxsendbuffer=10000&lt;br /&gt;
  maxreceivebuffer=10000&lt;br /&gt;
&lt;br /&gt;
... or download the new version.&lt;br /&gt;
&lt;br /&gt;
===0.3.20.1===&lt;br /&gt;
(No known forum post.)&lt;br /&gt;
&lt;br /&gt;
===0.3.20&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=2953.0 0.3.20 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
Please checkout the git integration branch from:&lt;br /&gt;
&lt;br /&gt;
https://github.com/bitcoin/bitcoin&lt;br /&gt;
&lt;br /&gt;
... and help test.  The new features that need testing are:&lt;br /&gt;
&lt;br /&gt;
* -nolisten : https://github.com/bitcoin/bitcoin/pull/11&lt;br /&gt;
* -rescan : scan block chain for missing wallet transactions&lt;br /&gt;
* -printtoconsole : https://github.com/bitcoin/bitcoin/pull/37&lt;br /&gt;
* RPC gettransaction details : https://github.com/bitcoin/bitcoin/pull/24&lt;br /&gt;
* listtransactions new features : https://github.com/bitcoin/bitcoin/pull/10&lt;br /&gt;
&lt;br /&gt;
Bug fixes that also need testing:&lt;br /&gt;
&lt;br /&gt;
* -maxconnections= : https://github.com/bitcoin/bitcoin/pull/42&lt;br /&gt;
* RPC listaccounts minconf : https://github.com/bitcoin/bitcoin/pull/27&lt;br /&gt;
* RPC move, add time to output : https://github.com/bitcoin/bitcoin/pull/21&lt;br /&gt;
* ...and several improvements to --help output.&lt;br /&gt;
&lt;br /&gt;
This needs more testing on Windows!  Please drop me a quick private message, email, or IRC message if you are able to do some testing.  If you find bugs, please open an issue at:&lt;br /&gt;
&lt;br /&gt;
https://github.com/bitcoin/bitcoin/issues&lt;br /&gt;
&lt;br /&gt;
===0.3.19&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=2228.0 0.3.19 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
There&#039;s more work to do on DoS, but I&#039;m doing a quick build of what I have so far in case it&#039;s needed, before venturing into more complex ideas.  The build for this is version 0.3.19.&lt;br /&gt;
&lt;br /&gt;
- Added some DoS controls&lt;br /&gt;
As Gavin and I have said clearly before, the software is not at all resistant to DoS attack.  This is one improvement, but there are still more ways to attack than I can count.  &lt;br /&gt;
&lt;br /&gt;
I&#039;m leaving the -limitfreerelay part as a switch for now and it&#039;s there if you need it.&lt;br /&gt;
&lt;br /&gt;
- Removed &amp;quot;safe mode&amp;quot; alerts&lt;br /&gt;
&amp;quot;safe mode&amp;quot; alerts was a temporary measure after the 0.3.9 overflow bug.  We can say all we want that users can just run with &amp;quot;-disablesafemode&amp;quot;, but it&#039;s better just not to have it for the sake of appearances.  It was never intended as a long term feature.  Safe mode can still be triggered by seeing a longer (greater total PoW) invalid block chain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===0.3.18&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=2162.0 0.3.18 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Changes:&lt;br /&gt;
* Fixed a wallet.dat compatibility problem if you downgraded from 0.3.17 and then upgraded again&lt;br /&gt;
* IsStandard() check to only include known transaction types in blocks&lt;br /&gt;
* Jgarzik&#039;s optimisation to speed up the initial block download a little&lt;br /&gt;
&lt;br /&gt;
The main addition in this release is the Accounts-Based JSON-RPC commands that Gavin&#039;s been working on (more details at http://www.bitcoin.org/smf/index.php?topic=1886.0).  &lt;br /&gt;
* getaccountaddress&lt;br /&gt;
* sendfrom&lt;br /&gt;
* move&lt;br /&gt;
* getbalance&lt;br /&gt;
* listtransactions&lt;br /&gt;
&lt;br /&gt;
===0.3.17&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=1946.0 0.3.17 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Version 0.3.17 is now available.&lt;br /&gt;
&lt;br /&gt;
Changes:&lt;br /&gt;
* new getwork, thanks m0mchil&lt;br /&gt;
* added transaction fee setting in UI options menu&lt;br /&gt;
* free transaction limits&lt;br /&gt;
* sendtoaddress returns transaction id instead of &amp;quot;sent&amp;quot;&lt;br /&gt;
* getaccountaddress &amp;lt;account&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The UI transaction fee setting was easy since it was still there from 0.1.5 and all I had to do was re-enable it.&lt;br /&gt;
&lt;br /&gt;
The accounts-based commands: move, sendfrom and getbalance &amp;lt;account&amp;gt; will be in the next release.  We still have some more changes to make first.&lt;br /&gt;
&lt;br /&gt;
===0.3.16===&lt;br /&gt;
&lt;br /&gt;
Never released.&lt;br /&gt;
&lt;br /&gt;
===0.3.15&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=1780.0 0.3.15 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
* paytxfee switch is now per KB, so it adds the correct fee for large transactions&lt;br /&gt;
* sending avoids using coins with less than 6 confirmations if it can&lt;br /&gt;
* BitcoinMiner processes transactions in priority order based on age of dependencies&lt;br /&gt;
* make sure generation doesn&#039;t start before block 74000 downloaded&lt;br /&gt;
* bugfixes by Dean Gores&lt;br /&gt;
* testnet, keypoololdest and paytxfee added to getinfo&lt;br /&gt;
&lt;br /&gt;
===0.3.14&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=1528.0 0.3.14 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Version 0.3.14 is now available&lt;br /&gt;
http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.14/&lt;br /&gt;
&lt;br /&gt;
Changes:&lt;br /&gt;
* Key pool feature for safer wallet backup&lt;br /&gt;
Gavin Andresen:&lt;br /&gt;
* TEST network mode with switch -testnet&lt;br /&gt;
* Option to use SSL for JSON-RPC connections on unix/osx&lt;br /&gt;
* validateaddress RPC command&lt;br /&gt;
eurekafag:&lt;br /&gt;
* Russian translation&lt;br /&gt;
&lt;br /&gt;
===0.3.13&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=1327.0 0.3.13 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Version 0.3.13 is now available.  You should upgrade to prevent potential problems with 0/unconfirmed transactions.  Note: 0.3.13 prevents problems if you haven&#039;t already spent a 0/unconfirmed transaction, but if that already happened, you need 0.3.13.2.&lt;br /&gt;
&lt;br /&gt;
Changes:&lt;br /&gt;
* Don&#039;t count or spend payments until they have 1 confirmation.&lt;br /&gt;
* Internal version number from 312 to 31300.&lt;br /&gt;
* Only accept transactions sent by IP address if -allowreceivebyip is specified.&lt;br /&gt;
* Dropped DB_PRIVATE Berkeley DB flag.&lt;br /&gt;
* Fix problem sending the last cent with sub-cent fractional change.&lt;br /&gt;
* Auto-detect whether to use 128-bit 4-way SSE2 on Linux.&lt;br /&gt;
Gavin Andresen:&lt;br /&gt;
* Option -rpcallowip= to accept json-rpc connections from another machine.&lt;br /&gt;
* Clean shutdown on SIGTERM on Linux.&lt;br /&gt;
&lt;br /&gt;
Download:&lt;br /&gt;
http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.13/&lt;br /&gt;
&lt;br /&gt;
(Thanks Laszlo for the Mac OSX build!)&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
The SSE2 auto-detect in the Linux 64-bit version doesn&#039;t work with AMD in 64-bit mode.  Please try this instead and let me know if it gets it right:&lt;br /&gt;
http://www.bitcoin.org/download/bitcoin-0.3.13.1-specialbuild-linux64.tar.gz&lt;br /&gt;
&lt;br /&gt;
You can still control the SSE2 use manually with -4way and -4way=0.&lt;br /&gt;
&lt;br /&gt;
Version 0.3.13.2 (SVN rev 161) has improvements for the case where you already had 0/unconfirmed transactions that you might have already spent.  Here&#039;s a Windows build of it:&lt;br /&gt;
http://www.bitcoin.org/download/bitcoin-0.3.13.2-win32-setup.exe&lt;br /&gt;
&lt;br /&gt;
===0.3.12&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=999.0 0.3.12 release announcement]&amp;lt;/ref&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Version 0.3.12 is now available.&lt;br /&gt;
&lt;br /&gt;
Features:&lt;br /&gt;
* json-rpc errors return a more standard error object. (thanks to Gavin Andresen)&lt;br /&gt;
* json-rpc command line returns exit codes.&lt;br /&gt;
* json-rpc &amp;quot;backupwallet&amp;quot; command.&lt;br /&gt;
* Recovers and continues if an exception is caused by a message you received.  Other nodes shouldn&#039;t be able to cause an exception, and it hasn&#039;t happened before, but if a way is found to cause an exception, this would keep it from being used to stop network nodes.&lt;br /&gt;
&lt;br /&gt;
If you have json-rpc code that checks the contents of the error string, you need to change it to expect error objects of the form {&amp;quot;code&amp;quot;:&amp;lt;number&amp;gt;,&amp;quot;message&amp;quot;:&amp;lt;string&amp;gt;}, which is the standard.  See this thread:&lt;br /&gt;
http://www.bitcoin.org/smf/index.php?topic=969.0&lt;br /&gt;
&lt;br /&gt;
Download:&lt;br /&gt;
http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.12/&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jonasbits</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=BIP_0050&amp;diff=42614</id>
		<title>BIP 0050</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=BIP_0050&amp;diff=42614"/>
		<updated>2013-11-25T01:21:30Z</updated>

		<summary type="html">&lt;p&gt;Jonasbits: /* Resolution */ adding link to block on blockchain.info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{bip}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  BIP: 50&lt;br /&gt;
  Title: March 2013 Chain Fork Post-Mortem&lt;br /&gt;
  Author: Gavin Andresen &amp;lt;gavinandresen@gmail.com&amp;gt;&lt;br /&gt;
  Status: Draft&lt;br /&gt;
  Type: Informational&lt;br /&gt;
  Created: 20-03-2013&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What went wrong==&lt;br /&gt;
A block that had a larger number of total transaction inputs than previously seen was mined and broadcasted. Bitcoin 0.8 nodes were able to handle this, but some pre-0.8 Bitcoin nodes rejected it, causing an unexpected hard fork of the chain. The pre-0.8 incompatible chain at that point had around 60% of the hash power ensuring the split did not automatically resolve.&lt;br /&gt;
&lt;br /&gt;
In order to restore a canonical chain as soon as possible, BTCGuild and Slush downgraded their Bitcoin 0.8 nodes to 0.7 so their pools would also reject the larger block. This placed majority hashpower on the chain without the larger block.&lt;br /&gt;
&lt;br /&gt;
During this time there was at least [https://bitcointalk.org/index.php?topic=152348.0 one large double spend].  However, it was done by someone experimenting to see if it was possible and was not intended to be malicious.&lt;br /&gt;
&lt;br /&gt;
==What went right==&lt;br /&gt;
* The split was detected very quickly.&lt;br /&gt;
* The right people were online and available in IRC or could be raised via Skype.&lt;br /&gt;
* Marek Palatinus and Michael Marsee quickly downgraded their nodes to restore a pre-0.8 chain as canonical, despite the fact that this caused them to sacrifice significant amounts of money and they were the ones running the bug-free version.&lt;br /&gt;
* Deposits to the major exchanges and payments via BitPay were also suspended (and then un-suspended) very quickly.&lt;br /&gt;
* Fortunately, the only attack on a merchant was done by someone who was not intending to actually steal money&lt;br /&gt;
&lt;br /&gt;
==Root cause==&lt;br /&gt;
Bitcoin versions prior to 0.8 configure an insufficient number of Berkeley DB locks to process large but technically valid blocks. Berkeley DB locks have to be manually configured by API users depending on anticipated load. The manual says this:&lt;br /&gt;
&lt;br /&gt;
:The recommended algorithm for selecting the maximum number of locks, lockers, and lock objects is to run the application under stressful conditions and then review the lock system&#039;s statistics to determine the maximum number of locks, lockers, and lock objects that were used. Then, double these values for safety.&lt;br /&gt;
&lt;br /&gt;
Because max-sized blocks had been successfully processed on the testnet, it did not occur to anyone that there could be blocks that were smaller but require more locks than were available. Prior to 0.7 unmodified mining nodes self-imposed a maximum block size of 500,000 bytes, which further prevented this case from being triggered. 0.7 made the target size configurable and miners had been encouraged to increase this target in the week prior to the incident.&lt;br /&gt;
&lt;br /&gt;
Bitcoin 0.8 does not use Berkeley DB. It uses LevelDB instead, which does not require this kind of pre-configuration. Therefore it was able to process the forking block successfully.&lt;br /&gt;
&lt;br /&gt;
Note that BDB locks are also required during processing of re-organizations. Versions prior to 0.8 may be unable to process some valid re-orgs.&lt;br /&gt;
&lt;br /&gt;
This would be an issue even if the entire network was running version 0.7.2. It is theoretically possible for one 0.7.2 node to create a block that others are unable to validate, or for 0.7.2 nodes to create block re-orgs that peers cannot validate, because the contents of each node&#039;s blkindex.dat database is not identical, and the number of locks required depends on the exact arrangement of the blkindex.dat on disk (locks are acquired per-page).&lt;br /&gt;
&lt;br /&gt;
==Action items==&lt;br /&gt;
&lt;br /&gt;
===Immediately===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Done&#039;&#039;&#039;: Release a version 0.8.1, forked directly from 0.8.0, that, for the next two months has the following new rules:&lt;br /&gt;
# Reject blocks that could cause more than 10,000 locks to be taken.&lt;br /&gt;
# Limit the maximum block-size created to 500,000 bytes&lt;br /&gt;
# Release a patch for older versions that implements the same rules, but also increases the maximum number of locks to 120,000&lt;br /&gt;
# Create a web page on bitcoin.org that will urge users to upgrade to 0.8.1, but will tell them how to set DB_CONFIG to 120,000 locks if they absolutely cannot.&lt;br /&gt;
# Over the next 2 months, send a series of alerts to users of older versions, pointing to the web page.&lt;br /&gt;
&lt;br /&gt;
===Alert system===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Done&#039;&#039;&#039;: Review who has access to the alert system keys, make sure they all have contact information for each other, and get good timezone overlap by people with access to the keys.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Done&#039;&#039;&#039;: Implement a new bitcoind feature so services can get timely notification of alerts:  -alertnotify=&amp;lt;command&amp;gt;   Run command when an AppliesToMe() alert is received.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Done&#039;&#039;&#039;: Pre-generate 52 test alerts, and set a time every week when they are broadcast on -testnet (so -alertnotify scripts can be tested in as-close-to-real-world conditions as possible).&lt;br /&gt;
&lt;br /&gt;
Idea from Michael Gronager: encourage merchants/exchanges (and maybe pools) to run new code behind a bitcoind running the network-majority version.&lt;br /&gt;
&lt;br /&gt;
===Safe mode===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Done&#039;&#039;&#039;: Perhaps trigger an alert if there is a long enough side chain detected, even if it is not the main chain. Pools could use this to automatically suspend payouts if a long side-chain suddenly appeared out of nowhere (it’s hard for an attacker to mine such a thing).&lt;br /&gt;
&lt;br /&gt;
===Testing===&lt;br /&gt;
&lt;br /&gt;
Start running bots on the testnet that grab some coins from a testnet faucet, generate large numbers of random transactions that split/recombine them and then send them back to the faucet. Randomized online testing on the testnet might have revealed the pathological block type earlier.&lt;br /&gt;
&lt;br /&gt;
===Double spending===&lt;br /&gt;
&lt;br /&gt;
A double spend attack was successful, despite that both sides of the chain heard about the transactions in the same order. The reason is most likely that the memory pools were cleared when the mining pool nodes were downgraded. A solution is for nodes to sync their mempools to each other at startup, however, this requires a memory pool expiry policy to be implemented as currently node restarts are the only way for unconfirmed transactions to be evicted from the system.&lt;br /&gt;
&lt;br /&gt;
===Resolution===&lt;br /&gt;
&lt;br /&gt;
On 16 August, 2013 block 252,451 ([https://blockchain.info/sv/block-index/406491/0000000000000024b58eeb1134432f00497a6a860412996e7a260f47126eed07 0x0000000000000024b58eeb1134432f00497a6a860412996e7a260f47126eed07]) was accepted by the main network, forking unpatched nodes off the network.&lt;/div&gt;</summary>
		<author><name>Jonasbits</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:Casascius_Bitcoin_Utility&amp;diff=42355</id>
		<title>Talk:Casascius Bitcoin Utility</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:Casascius_Bitcoin_Utility&amp;diff=42355"/>
		<updated>2013-11-14T01:20:20Z</updated>

		<summary type="html">&lt;p&gt;Jonasbits: this link is needed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This link should be here https://github.com/casascius/Bitcoin-Address-Utility&lt;/div&gt;</summary>
		<author><name>Jonasbits</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Script&amp;diff=41847</id>
		<title>Script</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Script&amp;diff=41847"/>
		<updated>2013-10-21T02:57:10Z</updated>

		<summary type="html">&lt;p&gt;Jonasbits: /* Provably Unspendable/Prunable Outputs */ Added link to transaction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bitcoin uses a scripting system for [[transactions]]. [[Wikipedia:FORTH|Forth]]-like, Script is simple, stack-based, and processed from left to right. It is purposefully not Turing-complete, with no loops.&lt;br /&gt;
&lt;br /&gt;
A script is essentially a list of instructions recorded with each transaction that describe how the next person wanting to spend the Bitcoins being transferred can gain access to them.  The script for a typical Bitcoin transfer to destination Bitcoin address D simply encumbers future spending of the bitcoins with two things: the spender must provide&lt;br /&gt;
# a public key that, when hashed, yields destination address D embedded in the script, and&lt;br /&gt;
# a signature to show evidence of the private key corresponding to the public key just provided.&lt;br /&gt;
&lt;br /&gt;
Scripting provides the flexibility to change the parameters of what&#039;s needed to spend transferred Bitcoins.  For example, the scripting system could be used to require two private keys, or a combination of several, or even no keys at all.&lt;br /&gt;
&lt;br /&gt;
A transaction is valid if nothing in the combined script triggers failure and the top stack item is true (non-zero).  The party who originally &#039;&#039;sent&#039;&#039; the Bitcoins now being spent, dictates the script operations that will occur &#039;&#039;last&#039;&#039; in order to release them for use in another transaction.  The party wanting to spend them must provide the input(s) to the previously recorded script that results in those operations occurring last leaving behind true (non-zero).&lt;br /&gt;
&lt;br /&gt;
Scripts are big-endian.&lt;br /&gt;
&lt;br /&gt;
The stacks hold byte vectors.  Byte vectors are interpreted as little-endian variable-length integers with the most significant bit determining the sign of the integer.  Thus 0x81 represents -1.  0x80 is another representation of zero (so called negative 0).  Byte vectors are interpreted as Booleans where False is represented by any representation of zero, and True is represented by any representation of non-zero.&lt;br /&gt;
&lt;br /&gt;
== Words ==&lt;br /&gt;
This is a list of all Script words (commands/functions). Some of the more complicated opcodes are disabled out of concern that the client might have a bug in their implementation; if a transaction using such an opcode were to be included in the chain any fix would risk forking the chain. &lt;br /&gt;
&lt;br /&gt;
True=1 and False=0.&lt;br /&gt;
&lt;br /&gt;
=== Constants ===&lt;br /&gt;
When talking about scripts, these value-pushing words are usually omitted.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Word&lt;br /&gt;
!Opcode&lt;br /&gt;
!Hex&lt;br /&gt;
!Input&lt;br /&gt;
!Output&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|OP_0, OP_FALSE&lt;br /&gt;
|0&lt;br /&gt;
|0x00&lt;br /&gt;
|Nothing.&lt;br /&gt;
|(empty value)&lt;br /&gt;
|An empty array of bytes is pushed onto the stack. (This is not a no-op: an item is added to the stack.)&lt;br /&gt;
|-&lt;br /&gt;
|N/A&lt;br /&gt;
|1-75&lt;br /&gt;
|0x01-0x4b&lt;br /&gt;
|(special)&lt;br /&gt;
|data&lt;br /&gt;
|The next &#039;&#039;opcode&#039;&#039; bytes is data to be pushed onto the stack&lt;br /&gt;
|-&lt;br /&gt;
|OP_PUSHDATA1&lt;br /&gt;
|76&lt;br /&gt;
|0x4c&lt;br /&gt;
|(special)&lt;br /&gt;
|data&lt;br /&gt;
|The next byte contains the number of bytes to be pushed onto the stack.&lt;br /&gt;
|-&lt;br /&gt;
|OP_PUSHDATA2&lt;br /&gt;
|77&lt;br /&gt;
|0x4d&lt;br /&gt;
|(special)&lt;br /&gt;
|data&lt;br /&gt;
|The next two bytes contain the number of bytes to be pushed onto the stack.&lt;br /&gt;
|-&lt;br /&gt;
|OP_PUSHDATA4&lt;br /&gt;
|78&lt;br /&gt;
|0x4e&lt;br /&gt;
|(special)&lt;br /&gt;
|data&lt;br /&gt;
|The next four bytes contain the number of bytes to be pushed onto the stack.&lt;br /&gt;
|-&lt;br /&gt;
|OP_1NEGATE&lt;br /&gt;
|79&lt;br /&gt;
|0x4f&lt;br /&gt;
|Nothing.&lt;br /&gt;
| -1&lt;br /&gt;
|The number -1 is pushed onto the stack.&lt;br /&gt;
|-&lt;br /&gt;
|OP_1, OP_TRUE&lt;br /&gt;
|81&lt;br /&gt;
|0x51&lt;br /&gt;
|Nothing.&lt;br /&gt;
|1&lt;br /&gt;
|The number 1 is pushed onto the stack.&lt;br /&gt;
|-&lt;br /&gt;
|OP_2-OP_16&lt;br /&gt;
|82-96&lt;br /&gt;
|0x52-0x60&lt;br /&gt;
|Nothing.&lt;br /&gt;
|2-16&lt;br /&gt;
|The number in the word name (2-16) is pushed onto the stack.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Flow control ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Word&lt;br /&gt;
!Opcode&lt;br /&gt;
!Hex&lt;br /&gt;
!Input&lt;br /&gt;
!Output&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|OP_NOP&lt;br /&gt;
|97&lt;br /&gt;
|0x61&lt;br /&gt;
|Nothing&lt;br /&gt;
|Nothing&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|OP_IF&lt;br /&gt;
|99&lt;br /&gt;
|0x63&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|&amp;lt;expression&amp;gt; if [statements] [else [statements]]* endif&lt;br /&gt;
|If the top stack value is not 0, the statements are executed. The top stack value is removed.&lt;br /&gt;
|-&lt;br /&gt;
|OP_NOTIF&lt;br /&gt;
|100&lt;br /&gt;
|0x64&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|&amp;lt;expression&amp;gt; if [statements] [else [statements]]* endif&lt;br /&gt;
|If the top stack value is 0, the statements are executed. The top stack value is removed.&lt;br /&gt;
|-&lt;br /&gt;
|OP_ELSE&lt;br /&gt;
|103&lt;br /&gt;
|0x67&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|&amp;lt;expression&amp;gt; if [statements] [else [statements]]* endif&lt;br /&gt;
|If the preceding OP_IF or OP_NOTIF or OP_ELSE was not executed then these statements are and if the preceding OP_IF or OP_NOTIF or OP_ELSE was executed then these statements are not. &lt;br /&gt;
|-&lt;br /&gt;
|OP_ENDIF&lt;br /&gt;
|104&lt;br /&gt;
|0x68&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot;|&amp;lt;expression&amp;gt; if [statements] [else [statements]]* endif&lt;br /&gt;
|Ends an if/else block.&lt;br /&gt;
|-&lt;br /&gt;
|OP_VERIFY&lt;br /&gt;
|105&lt;br /&gt;
|0x69&lt;br /&gt;
|True / false&lt;br /&gt;
|Nothing / False&lt;br /&gt;
|&#039;&#039;&#039;Marks transaction as invalid&#039;&#039;&#039; if top stack value is not true. True is removed, but false is not.&lt;br /&gt;
|-&lt;br /&gt;
|OP_RETURN&lt;br /&gt;
|106&lt;br /&gt;
|0x6a&lt;br /&gt;
|Nothing&lt;br /&gt;
|Nothing&lt;br /&gt;
|&#039;&#039;&#039;Marks transaction as invalid&#039;&#039;&#039;. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Stack ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
!Word&lt;br /&gt;
!Opcode&lt;br /&gt;
!Hex&lt;br /&gt;
!Input&lt;br /&gt;
!Output&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|OP_TOALTSTACK&lt;br /&gt;
|107&lt;br /&gt;
|0x6b&lt;br /&gt;
|x1&lt;br /&gt;
|(alt)x1&lt;br /&gt;
|Puts the input onto the top of the alt stack. Removes it from the main stack.&lt;br /&gt;
|-&lt;br /&gt;
|OP_FROMALTSTACK&lt;br /&gt;
|108&lt;br /&gt;
|0x6c&lt;br /&gt;
|(alt)x1&lt;br /&gt;
|x1&lt;br /&gt;
|Puts the input onto the top of the main stack. Removes it from the alt stack.&lt;br /&gt;
|-&lt;br /&gt;
|OP_IFDUP&lt;br /&gt;
|115&lt;br /&gt;
|0x73&lt;br /&gt;
|x&lt;br /&gt;
|x / x x&lt;br /&gt;
|If the top stack value is not 0, duplicate it.&lt;br /&gt;
|-&lt;br /&gt;
|OP_DEPTH&lt;br /&gt;
|116&lt;br /&gt;
|0x74&lt;br /&gt;
|Nothing&lt;br /&gt;
|&amp;lt;Stack size&amp;gt;&lt;br /&gt;
|Puts the number of stack items onto the stack.&lt;br /&gt;
|-&lt;br /&gt;
|OP_DROP&lt;br /&gt;
|117&lt;br /&gt;
|0x75&lt;br /&gt;
|x&lt;br /&gt;
|Nothing&lt;br /&gt;
|Removes the top stack item.&lt;br /&gt;
|-&lt;br /&gt;
|OP_DUP&lt;br /&gt;
|118&lt;br /&gt;
|0x76&lt;br /&gt;
|x&lt;br /&gt;
|x x&lt;br /&gt;
|Duplicates the top stack item.&lt;br /&gt;
|-&lt;br /&gt;
|OP_NIP&lt;br /&gt;
|119&lt;br /&gt;
|0x77&lt;br /&gt;
|x1 x2&lt;br /&gt;
|x2&lt;br /&gt;
|Removes the second-to-top stack item.&lt;br /&gt;
|-&lt;br /&gt;
|OP_OVER&lt;br /&gt;
|120&lt;br /&gt;
|0x78&lt;br /&gt;
|x1 x2&lt;br /&gt;
|x1 x2 x1&lt;br /&gt;
|Copies the second-to-top stack item to the top.&lt;br /&gt;
|-&lt;br /&gt;
|OP_PICK&lt;br /&gt;
|121&lt;br /&gt;
|0x79&lt;br /&gt;
|xn ... x2 x1 x0 &amp;lt;n&amp;gt;&lt;br /&gt;
|xn ... x2 x1 x0 xn&lt;br /&gt;
|The item &#039;&#039;n&#039;&#039; back in the stack is copied to the top.&lt;br /&gt;
|-&lt;br /&gt;
|OP_ROLL&lt;br /&gt;
|122&lt;br /&gt;
|0x7a&lt;br /&gt;
|xn ... x2 x1 x0 &amp;lt;n&amp;gt;&lt;br /&gt;
|... x2 x1 x0 xn&lt;br /&gt;
|The item &#039;&#039;n&#039;&#039; back in the stack is moved to the top.&lt;br /&gt;
|-&lt;br /&gt;
|OP_ROT&lt;br /&gt;
|123&lt;br /&gt;
|0x7b&lt;br /&gt;
|x1 x2 x3&lt;br /&gt;
|x2 x3 x1&lt;br /&gt;
|The top three items on the stack are rotated to the left.&lt;br /&gt;
|-&lt;br /&gt;
|OP_SWAP&lt;br /&gt;
|124&lt;br /&gt;
|0x7c&lt;br /&gt;
|x1 x2&lt;br /&gt;
|x2 x1&lt;br /&gt;
|The top two items on the stack are swapped.&lt;br /&gt;
|-&lt;br /&gt;
|OP_TUCK&lt;br /&gt;
|125&lt;br /&gt;
|0x7d&lt;br /&gt;
|x1 x2&lt;br /&gt;
|x2 x1 x2&lt;br /&gt;
|The item at the top of the stack is copied and inserted before the second-to-top item.&lt;br /&gt;
|-&lt;br /&gt;
|OP_2DROP&lt;br /&gt;
|109&lt;br /&gt;
|0x6d&lt;br /&gt;
|x1 x2&lt;br /&gt;
|Nothing&lt;br /&gt;
|Removes the top two stack items.&lt;br /&gt;
|-&lt;br /&gt;
|OP_2DUP&lt;br /&gt;
|110&lt;br /&gt;
|0x6e&lt;br /&gt;
|x1 x2&lt;br /&gt;
|x1 x2 x1 x2&lt;br /&gt;
|Duplicates the top two stack items.&lt;br /&gt;
|-&lt;br /&gt;
|OP_3DUP&lt;br /&gt;
|111&lt;br /&gt;
|0x6f&lt;br /&gt;
|x1 x2 x3&lt;br /&gt;
|x1 x2 x3 x1 x2 x3&lt;br /&gt;
|Duplicates the top three stack items.&lt;br /&gt;
|-&lt;br /&gt;
|OP_2OVER&lt;br /&gt;
|112&lt;br /&gt;
|0x70&lt;br /&gt;
|x1 x2 x3 x4&lt;br /&gt;
|x1 x2 x3 x4 x1 x2&lt;br /&gt;
|Copies the pair of items two spaces back in the stack to the front.&lt;br /&gt;
|-&lt;br /&gt;
|OP_2ROT&lt;br /&gt;
|113&lt;br /&gt;
|0x71&lt;br /&gt;
|x1 x2 x3 x4 x5 x6&lt;br /&gt;
|x3 x4 x5 x6 x1 x2&lt;br /&gt;
|The fifth and sixth items back are moved to the top of the stack.&lt;br /&gt;
|-&lt;br /&gt;
|OP_2SWAP&lt;br /&gt;
|114&lt;br /&gt;
|0x72&lt;br /&gt;
|x1 x2 x3 x4&lt;br /&gt;
|x3 x4 x1 x2&lt;br /&gt;
|Swaps the top two pairs of items.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Splice ===&lt;br /&gt;
&lt;br /&gt;
If any opcode marked as disabled is present in a script, it must abort and fail.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
!Word&lt;br /&gt;
!Opcode&lt;br /&gt;
!Hex&lt;br /&gt;
!Input&lt;br /&gt;
!Output&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|OP_CAT&lt;br /&gt;
|126&lt;br /&gt;
|0x7e&lt;br /&gt;
|x1 x2&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|Concatenates two strings. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_SUBSTR&lt;br /&gt;
|127&lt;br /&gt;
|0x7f&lt;br /&gt;
|in begin size&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|Returns a section of a string. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_LEFT&lt;br /&gt;
|128&lt;br /&gt;
|0x80&lt;br /&gt;
|in size&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|Keeps only characters left of the specified point in a string. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_RIGHT&lt;br /&gt;
|129&lt;br /&gt;
|0x81&lt;br /&gt;
|in size&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|Keeps only characters right of the specified point in a string. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_SIZE&lt;br /&gt;
|130&lt;br /&gt;
|0x82&lt;br /&gt;
|in&lt;br /&gt;
|in size&lt;br /&gt;
|Returns the length of the input string.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Bitwise logic ===&lt;br /&gt;
&lt;br /&gt;
If any opcode marked as disabled is present in a script, it must abort and fail.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
!Word&lt;br /&gt;
!Opcode&lt;br /&gt;
!Hex&lt;br /&gt;
!Input&lt;br /&gt;
!Output&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|OP_INVERT&lt;br /&gt;
|131&lt;br /&gt;
|0x83&lt;br /&gt;
|in&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|Flips all of the bits in the input. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_AND&lt;br /&gt;
|132&lt;br /&gt;
|0x84&lt;br /&gt;
|x1 x2&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|Boolean &#039;&#039;and&#039;&#039; between each bit in the inputs. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_OR&lt;br /&gt;
|133&lt;br /&gt;
|0x85&lt;br /&gt;
|x1 x2&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|Boolean &#039;&#039;or&#039;&#039; between each bit in the inputs. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_XOR&lt;br /&gt;
|134&lt;br /&gt;
|0x86&lt;br /&gt;
|x1 x2&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|Boolean &#039;&#039;exclusive or&#039;&#039; between each bit in the inputs. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_EQUAL&lt;br /&gt;
|135&lt;br /&gt;
|0x87&lt;br /&gt;
|x1 x2&lt;br /&gt;
|True / false&lt;br /&gt;
|Returns 1 if the inputs are exactly equal, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
|OP_EQUALVERIFY&lt;br /&gt;
|136&lt;br /&gt;
|0x88&lt;br /&gt;
|x1 x2&lt;br /&gt;
|True / false&lt;br /&gt;
|Same as OP_EQUAL, but runs OP_VERIFY afterward.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Arithmetic ===&lt;br /&gt;
&lt;br /&gt;
Note: Arithmetic inputs are limited to signed 32-bit integers, but may overflow their output.&lt;br /&gt;
&lt;br /&gt;
If any input value for any of these commands is longer than 4 bytes, the script must abort and fail. &lt;br /&gt;
If any opcode marked as &#039;&#039;disabled&#039;&#039; is present in a script - it must also abort and fail.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
!Word&lt;br /&gt;
!Opcode&lt;br /&gt;
!Hex&lt;br /&gt;
!Input&lt;br /&gt;
!Output&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|OP_1ADD&lt;br /&gt;
|139&lt;br /&gt;
|0x8b&lt;br /&gt;
|in&lt;br /&gt;
|out&lt;br /&gt;
|1 is added to the input.&lt;br /&gt;
|-&lt;br /&gt;
|OP_1SUB&lt;br /&gt;
|140&lt;br /&gt;
|0x8c&lt;br /&gt;
|in&lt;br /&gt;
|out&lt;br /&gt;
|1 is subtracted from the input.&lt;br /&gt;
|-&lt;br /&gt;
|OP_2MUL&lt;br /&gt;
|141&lt;br /&gt;
|0x8d&lt;br /&gt;
|in&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|The input is multiplied by 2. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_2DIV&lt;br /&gt;
|142&lt;br /&gt;
|0x8e&lt;br /&gt;
|in&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|The input is divided by 2. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_NEGATE&lt;br /&gt;
|143&lt;br /&gt;
|0x8f&lt;br /&gt;
|in&lt;br /&gt;
|out&lt;br /&gt;
|The sign of the input is flipped.&lt;br /&gt;
|-&lt;br /&gt;
|OP_ABS&lt;br /&gt;
|144&lt;br /&gt;
|0x90&lt;br /&gt;
|in&lt;br /&gt;
|out&lt;br /&gt;
|The input is made positive.&lt;br /&gt;
|-&lt;br /&gt;
|OP_NOT&lt;br /&gt;
|145&lt;br /&gt;
|0x91&lt;br /&gt;
|in&lt;br /&gt;
|out&lt;br /&gt;
|If the input is 0 or 1, it is flipped. Otherwise the output will be 0.&lt;br /&gt;
|-&lt;br /&gt;
|OP_0NOTEQUAL&lt;br /&gt;
|146&lt;br /&gt;
|0x92&lt;br /&gt;
|in&lt;br /&gt;
|out&lt;br /&gt;
|Returns 0 if the input is 0. 1 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
|OP_ADD&lt;br /&gt;
|147&lt;br /&gt;
|0x93&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|a is added to b.&lt;br /&gt;
|-&lt;br /&gt;
|OP_SUB&lt;br /&gt;
|148&lt;br /&gt;
|0x94&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|b is subtracted from a.&lt;br /&gt;
|-&lt;br /&gt;
|OP_MUL&lt;br /&gt;
|149&lt;br /&gt;
|0x95&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|a is multiplied by b. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_DIV&lt;br /&gt;
|150&lt;br /&gt;
|0x96&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|a is divided by b. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_MOD&lt;br /&gt;
|151&lt;br /&gt;
|0x97&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|Returns the remainder after dividing a by b. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_LSHIFT&lt;br /&gt;
|152&lt;br /&gt;
|0x98&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|Shifts a left b bits, preserving sign. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_RSHIFT&lt;br /&gt;
|153&lt;br /&gt;
|0x99&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|style=&amp;quot;background:#D97171;&amp;quot;|Shifts a right b bits, preserving sign. &#039;&#039;disabled.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|OP_BOOLAND&lt;br /&gt;
|154&lt;br /&gt;
|0x9a&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|If both a and b are not 0, the output is 1. Otherwise 0.&lt;br /&gt;
|-&lt;br /&gt;
|OP_BOOLOR&lt;br /&gt;
|155&lt;br /&gt;
|0x9b&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|If a or b is not 0, the output is 1. Otherwise 0.&lt;br /&gt;
|-&lt;br /&gt;
|OP_NUMEQUAL&lt;br /&gt;
|156&lt;br /&gt;
|0x9c&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|Returns 1 if the numbers are equal, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
|OP_NUMEQUALVERIFY&lt;br /&gt;
|157&lt;br /&gt;
|0x9d&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|Same as OP_NUMEQUAL, but runs OP_VERIFY afterward.&lt;br /&gt;
|-&lt;br /&gt;
|OP_NUMNOTEQUAL&lt;br /&gt;
|158&lt;br /&gt;
|0x9e&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|Returns 1 if the numbers are not equal, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
|OP_LESSTHAN&lt;br /&gt;
|159&lt;br /&gt;
|0x9f&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|Returns 1 if a is less than b, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
|OP_GREATERTHAN&lt;br /&gt;
|160&lt;br /&gt;
|0xa0&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|Returns 1 if a is greater than b, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
|OP_LESSTHANOREQUAL&lt;br /&gt;
|161&lt;br /&gt;
|0xa1&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|Returns 1 if a is less than or equal to b, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
|OP_GREATERTHANOREQUAL&lt;br /&gt;
|162&lt;br /&gt;
|0xa2&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|Returns 1 if a is greater than or equal to b, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
|OP_MIN&lt;br /&gt;
|163&lt;br /&gt;
|0xa3&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|Returns the smaller of a and b.&lt;br /&gt;
|-&lt;br /&gt;
|OP_MAX&lt;br /&gt;
|164&lt;br /&gt;
|0xa4&lt;br /&gt;
|a b&lt;br /&gt;
|out&lt;br /&gt;
|Returns the larger of a and b.&lt;br /&gt;
|-&lt;br /&gt;
|OP_WITHIN&lt;br /&gt;
|165&lt;br /&gt;
|0xa5&lt;br /&gt;
|x min max&lt;br /&gt;
|out&lt;br /&gt;
|Returns 1 if x is within the specified range (left-inclusive), 0 otherwise.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Crypto ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
!Word&lt;br /&gt;
!Opcode&lt;br /&gt;
!Hex&lt;br /&gt;
!Input&lt;br /&gt;
!Output&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|OP_RIPEMD160&lt;br /&gt;
|166&lt;br /&gt;
|0xa6&lt;br /&gt;
|in&lt;br /&gt;
|hash&lt;br /&gt;
|The input is hashed using RIPEMD-160.&lt;br /&gt;
|-&lt;br /&gt;
|OP_SHA1&lt;br /&gt;
|167&lt;br /&gt;
|0xa7&lt;br /&gt;
|in&lt;br /&gt;
|hash&lt;br /&gt;
|The input is hashed using SHA-1.&lt;br /&gt;
|-&lt;br /&gt;
|OP_SHA256&lt;br /&gt;
|168&lt;br /&gt;
|0xa8&lt;br /&gt;
|in&lt;br /&gt;
|hash&lt;br /&gt;
|The input is hashed using SHA-256.&lt;br /&gt;
|-&lt;br /&gt;
|OP_HASH160&lt;br /&gt;
|169&lt;br /&gt;
|0xa9&lt;br /&gt;
|in&lt;br /&gt;
|hash&lt;br /&gt;
|The input is hashed twice: first with SHA-256 and then with RIPEMD-160.&lt;br /&gt;
|-&lt;br /&gt;
|OP_HASH256&lt;br /&gt;
|170&lt;br /&gt;
|0xaa&lt;br /&gt;
|in&lt;br /&gt;
|hash&lt;br /&gt;
|The input is hashed two times with SHA-256.&lt;br /&gt;
|-&lt;br /&gt;
|OP_CODESEPARATOR&lt;br /&gt;
|171&lt;br /&gt;
|0xab&lt;br /&gt;
|Nothing&lt;br /&gt;
|Nothing&lt;br /&gt;
|All of the signature checking words will only match signatures to the data after the most recently-executed OP_CODESEPARATOR.&lt;br /&gt;
|-&lt;br /&gt;
|[[OP_CHECKSIG]]&lt;br /&gt;
|172&lt;br /&gt;
|0xac&lt;br /&gt;
|sig pubkey&lt;br /&gt;
|True / false&lt;br /&gt;
|The entire transaction&#039;s outputs, inputs, and script (from the most recently-executed OP_CODESEPARATOR to the end) are hashed. The signature used by OP_CHECKSIG must be a valid signature for this hash and public key. If it is, 1 is returned, 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
|OP_CHECKSIGVERIFY&lt;br /&gt;
|173&lt;br /&gt;
|0xad&lt;br /&gt;
|sig pubkey&lt;br /&gt;
|True / false&lt;br /&gt;
|Same as OP_CHECKSIG, but OP_VERIFY is executed afterward.&lt;br /&gt;
|-&lt;br /&gt;
|OP_CHECKMULTISIG&lt;br /&gt;
|174&lt;br /&gt;
|0xae&lt;br /&gt;
|x sig1 sig2 ... &amp;lt;number of signatures&amp;gt; pub1 pub2 &amp;lt;number of public keys&amp;gt;&lt;br /&gt;
|True / False&lt;br /&gt;
|For each signature and public key pair, OP_CHECKSIG is executed. If more public keys than signatures are listed, some key/sig pairs can fail. All signatures need to match a public key. If all signatures are valid, 1 is returned, 0 otherwise. Due to a bug, one extra unused value is removed from the stack.&lt;br /&gt;
|-&lt;br /&gt;
|OP_CHECKMULTISIGVERIFY&lt;br /&gt;
|175&lt;br /&gt;
|0xaf&lt;br /&gt;
|x sig1 sig2 ... &amp;lt;number of signatures&amp;gt; pub1 pub2 ... &amp;lt;number of public keys&amp;gt;&lt;br /&gt;
|True / False&lt;br /&gt;
|Same as OP_CHECKMULTISIG, but OP_VERIFY is executed afterward.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Pseudo-words===&lt;br /&gt;
These words are used internally for assisting with transaction matching. They are invalid if used in actual scripts.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
!Word&lt;br /&gt;
!Opcode&lt;br /&gt;
!Hex&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|OP_PUBKEYHASH&lt;br /&gt;
|253&lt;br /&gt;
|0xfd&lt;br /&gt;
|Represents a public key hashed with OP_HASH160.&lt;br /&gt;
|-&lt;br /&gt;
|OP_PUBKEY&lt;br /&gt;
|254&lt;br /&gt;
|0xfe&lt;br /&gt;
|Represents a public key compatible with OP_CHECKSIG.&lt;br /&gt;
|-&lt;br /&gt;
|OP_INVALIDOPCODE&lt;br /&gt;
|255&lt;br /&gt;
|0xff&lt;br /&gt;
|Matches any opcode that is not yet assigned.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Reserved words ===&lt;br /&gt;
Any opcode not assigned is also reserved. Using an unassigned opcode makes the transaction invalid.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
!Word&lt;br /&gt;
!Opcode&lt;br /&gt;
!Hex&lt;br /&gt;
!When used...&lt;br /&gt;
|-&lt;br /&gt;
|OP_RESERVED&lt;br /&gt;
|80&lt;br /&gt;
|0x50&lt;br /&gt;
|Transaction is invalid unless occuring in an unexecuted OP_IF branch&lt;br /&gt;
|-&lt;br /&gt;
|OP_VER&lt;br /&gt;
|98&lt;br /&gt;
|0x62&lt;br /&gt;
|Transaction is invalid unless occuring in an unexecuted OP_IF branch&lt;br /&gt;
|-&lt;br /&gt;
|OP_VERIF&lt;br /&gt;
|101&lt;br /&gt;
|0x65&lt;br /&gt;
|Transaction is invalid even when occuring in an unexecuted OP_IF branch&lt;br /&gt;
|-&lt;br /&gt;
|OP_VERNOTIF&lt;br /&gt;
|102&lt;br /&gt;
|0x66&lt;br /&gt;
|Transaction is invalid even when occuring in an unexecuted OP_IF branch&lt;br /&gt;
|-&lt;br /&gt;
|OP_RESERVED1&lt;br /&gt;
|137&lt;br /&gt;
|0x89&lt;br /&gt;
|Transaction is invalid unless occuring in an unexecuted OP_IF branch&lt;br /&gt;
|-&lt;br /&gt;
|OP_RESERVED2&lt;br /&gt;
|138&lt;br /&gt;
|0x8a&lt;br /&gt;
|Transaction is invalid unless occuring in an unexecuted OP_IF branch&lt;br /&gt;
|-&lt;br /&gt;
|OP_NOP1-OP_NOP10&lt;br /&gt;
|176-185&lt;br /&gt;
|0xb0-0xb9&lt;br /&gt;
|The word is ignored.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Scripts ==&lt;br /&gt;
This is a list of interesting scripts. Keep in mind that all constants actually use the data-pushing commands above. Note that there is a small number of standard script forms that are relayed from node to node; non-standard scripts are accepted if they are in a block, but nodes will not relay them.&lt;br /&gt;
&lt;br /&gt;
=== Standard Transaction to Bitcoin address (pay-to-pubkey-hash) ===&lt;br /&gt;
&lt;br /&gt;
 scriptPubKey: OP_DUP OP_HASH160 &amp;lt;pubKeyHash&amp;gt; OP_EQUALVERIFY OP_CHECKSIG&lt;br /&gt;
 scriptSig: &amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To demonstrate how scripts look on the wire, here is a raw scriptPubKey:&lt;br /&gt;
&amp;lt;pre&amp;gt;  76       A9             14&lt;br /&gt;
OP_DUP OP_HASH160    Bytes to push&lt;br /&gt;
&lt;br /&gt;
89 AB CD EF AB BA AB BA AB BA AB BA AB BA AB BA AB BA AB BA   88         AC&lt;br /&gt;
                      Data to push                     OP_EQUALVERIFY OP_CHECKSIG&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: scriptSig is in the input of the spending transaction and scriptPubKey is in the output of the previously unspent i.e. &amp;quot;available&amp;quot; transaction.&lt;br /&gt;
&lt;br /&gt;
Here is how each word is processed:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Stack &lt;br /&gt;
! Script &lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
|Empty.&lt;br /&gt;
| &amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt; OP_DUP OP_HASH160 &amp;lt;pubKeyHash&amp;gt; OP_EQUALVERIFY OP_CHECKSIG &lt;br /&gt;
| scriptSig and scriptPubKey are combined.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt;&lt;br /&gt;
| OP_DUP OP_HASH160 &amp;lt;pubKeyHash&amp;gt; OP_EQUALVERIFY OP_CHECKSIG &lt;br /&gt;
| Constants are added to the stack.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt; &amp;lt;pubKey&amp;gt;&lt;br /&gt;
| OP_HASH160 &amp;lt;pubKeyHash&amp;gt; OP_EQUALVERIFY OP_CHECKSIG &lt;br /&gt;
| Top stack item is duplicated.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt; &amp;lt;pubHashA&amp;gt;&lt;br /&gt;
|&amp;lt;pubKeyHash&amp;gt; OP_EQUALVERIFY OP_CHECKSIG&lt;br /&gt;
| Top stack item is hashed.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt; &amp;lt;pubHashA&amp;gt; &amp;lt;pubKeyHash&amp;gt;&lt;br /&gt;
|OP_EQUALVERIFY OP_CHECKSIG&lt;br /&gt;
| Constant added.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt;&lt;br /&gt;
|OP_CHECKSIG&lt;br /&gt;
| Equality is checked between the top two stack items.&lt;br /&gt;
|-&lt;br /&gt;
|true&lt;br /&gt;
|Empty.&lt;br /&gt;
|Signature is checked for top two stack items.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Standard Generation Transaction (pay-to-pubkey) ===&lt;br /&gt;
&lt;br /&gt;
OP_CHECKSIG is used directly without first hashing the public key. By default the reference implementation uses this form for coinbase payment, and scriptPubKeys of this transaction form are recognized as payments to user. The disadvantage of this transaction form is that the whole public key needs to be known in advance, implying longer payment addresses, and that it provides less protection in the event of a break in the ECDSA signature algorithm.&lt;br /&gt;
&lt;br /&gt;
 scriptPubKey: &amp;lt;pubKey&amp;gt; OP_CHECKSIG&lt;br /&gt;
 scriptSig: &amp;lt;sig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Checking process:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Stack &lt;br /&gt;
! Script &lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
|Empty.&lt;br /&gt;
|&amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKSIG&lt;br /&gt;
|scriptSig and scriptPubKey are combined.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt;&lt;br /&gt;
| OP_CHECKSIG&lt;br /&gt;
|Constants are added to the stack.&lt;br /&gt;
|-&lt;br /&gt;
|true&lt;br /&gt;
|Empty.&lt;br /&gt;
|Signature is checked for top two stack items.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Provably Unspendable/Prunable Outputs ===&lt;br /&gt;
&lt;br /&gt;
The standard way to mark a transaction as provably unspendable is with a scriptPubKey of the following form:&lt;br /&gt;
&lt;br /&gt;
  scriptPubKey: OP_RETURN {zero or more ops}&lt;br /&gt;
&lt;br /&gt;
OP_RETURN immediately marks the script as invalid, guaranteeing that no scriptSig exists that could possibly spend that output. Thus the output can be immediately pruned from the UTXO set even if it has not been spent. [http://blockexplorer.com/tx/eb31ca1a4cbd97c2770983164d7560d2d03276ae1aee26f12d7c2c6424252f29 eb31ca1a4cbd97c2770983164d7560d2d03276ae1aee26f12d7c2c6424252f29] is an example: it has a single output of zero value, thus giving the full 0.125BTC fee to the miner who mined the transaction without adding an entry to the UTXO set. You can also use OP_RETURN to add data to a transaction without the data ever appearing in the UTXO set, as seen in 1a2e22a717d626fc5db363582007c46924ae6b28319f07cb1b907776bd8293fc; [[P2Pool]] does this with the share chain hash txout in the coinbase of blocks it creates.&lt;br /&gt;
&lt;br /&gt;
Note that this mechanism is not yet a standard transaction type, and thus will not be relayed by nodes on mainnet.&lt;br /&gt;
&lt;br /&gt;
=== Anyone-Can-Spend Outputs ===&lt;br /&gt;
&lt;br /&gt;
Conversely a transaction can be made spendable by anyone at all:&lt;br /&gt;
&lt;br /&gt;
  scriptPubKey: (empty)&lt;br /&gt;
  scriptSig: OP_TRUE&lt;br /&gt;
&lt;br /&gt;
With some software changes such transactions can be used as a way to donate funds to miners in addition to transaction fees: any miner who mines such a transaction can also include an additional one after it sending the funds to an address they control. This mechanism may be used in the future for [[fidelity bonds]] to sacrifice funds in a provable way.&lt;br /&gt;
&lt;br /&gt;
Anyone-Can-Spend outputs are currently considered non-standard, and are not relayed on the P2P network.&lt;br /&gt;
&lt;br /&gt;
=== Transaction puzzle ===&lt;br /&gt;
&lt;br /&gt;
Transaction a4bfa8ab6435ae5f25dae9d89e4eb67dfa94283ca751f393c1ddc5a837bbc31b is an interesting puzzle.&lt;br /&gt;
&lt;br /&gt;
 scriptPubKey: OP_HASH256 6fe28c0ab6f1b372c1a6a246ae63f74f931e8365e15a089c68d6190000000000 OP_EQUAL&lt;br /&gt;
 scriptSig: &amp;lt;data&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To spend the transaction you need to come up with some data such that hashing the data twice results in the given hash.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! Stack &lt;br /&gt;
! Script &lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
|Empty.&lt;br /&gt;
|&amp;lt;data&amp;gt; OP_HASH256 &amp;lt;given_hash&amp;gt; OP_EQUAL&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;data&amp;gt;&lt;br /&gt;
|OP_HASH256 &amp;lt;given_hash&amp;gt; OP_EQUAL&lt;br /&gt;
|scriptSig added to the stack.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;data_hash&amp;gt;&lt;br /&gt;
|&amp;lt;given_hash&amp;gt; OP_EQUAL&lt;br /&gt;
|The data is hashed.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;data_hash&amp;gt; &amp;lt;given_hash&amp;gt;&lt;br /&gt;
|OP_EQUAL&lt;br /&gt;
|The given hash is pushed to the stack.&lt;br /&gt;
|-&lt;br /&gt;
|true&lt;br /&gt;
|Empty.&lt;br /&gt;
|The hashes are compared, leaving true on the stack.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This transaction was successfully spent by 09f691b2263260e71f363d1db51ff3100d285956a40cc0e4f8c8c2c4a80559b1. The required data happened to be the [[Genesis block]], and the given hash was the genesis block hash. Note that while transactions like this are fun, they are not secure, because they do not contain any signatures and thus any transaction attempting to spend them can be replaced with a different transaction sending the funds somewhere else.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Transactions]]&lt;br /&gt;
* [[Contracts]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:Vocabulary]]&lt;/div&gt;</summary>
		<author><name>Jonasbits</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Wallet&amp;diff=41743</id>
		<title>Wallet</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Wallet&amp;diff=41743"/>
		<updated>2013-10-13T19:42:37Z</updated>

		<summary type="html">&lt;p&gt;Jonasbits: /* Armory */ dead link fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Bitcoin &#039;&#039;&#039;wallet&#039;&#039;&#039; is a file that contains a collection of private keys. &lt;br /&gt;
&lt;br /&gt;
=== Bitcoin Qt ===&lt;br /&gt;
&lt;br /&gt;
The original Bitcoin client wallet file is named &#039;&#039;&#039;wallet.dat&#039;&#039;&#039; and contains&amp;lt;ref&amp;gt;[https://bitcointalk.org/index.php?topic=4448.0 Wallet import/export: bitkeys format]&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
* keypairs for each of your [[address|addresses]]&lt;br /&gt;
* transactions done from/to your addresses&lt;br /&gt;
* user preferences &lt;br /&gt;
* default key&lt;br /&gt;
* reserve keys&lt;br /&gt;
* [[Accounts_explained|accounts]]&lt;br /&gt;
* a version number&lt;br /&gt;
* [[Key pool]]&lt;br /&gt;
* Since 0.3.21: information about the current best chain, to be able to rescan automatically when restoring from a backup.&lt;br /&gt;
&lt;br /&gt;
The data file for the wallet is wallet.dat and is located in the [[data directory|Bitcoin data directory]].&lt;br /&gt;
&lt;br /&gt;
It is intended that a wallet be used on only one installation of Bitcoin at a time.  Attempting to clone a wallet for use on multiple computers will result in &amp;quot;weird behavior&amp;quot;&amp;lt;ref&amp;gt;[http://forum.bitcoin.org/index.php?topic=5324.msg77896#msg77896 Multiple instance of bitcoin with the same wallet]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The format of this file is Berkeley DB.  Tools that can manipulate wallet files include [[pywallet]].&lt;br /&gt;
&lt;br /&gt;
=== Armory ===&lt;br /&gt;
&lt;br /&gt;
The Armory client uses a custom [http://bitcoinarmory.com/developers/armory-wallet-files/ binary wallet format].&lt;br /&gt;
&lt;br /&gt;
=== Blockchain.info ===&lt;br /&gt;
&lt;br /&gt;
Blockchain.info use a plain text JSON wallet format documented [https://blockchain.info/wallet/wallet-format here]. Private keys Keys are stored in base58.&lt;br /&gt;
&lt;br /&gt;
=== Multibit ===&lt;br /&gt;
&lt;br /&gt;
Multibit uses the bitcoinj [http://code.google.com/p/protobuf/ protobuf] wallet file.&lt;br /&gt;
&lt;br /&gt;
=== [[Bitcoin Wallet]] ===&lt;br /&gt;
&lt;br /&gt;
Bitcoin Wallet uses the bitcoinj [http://code.google.com/p/protobuf/ protobuf] format for its wallet file. However, due to Android isolation of applications, it is impossible to access the wallet file as a non-root user.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Securing your wallet]]&lt;br /&gt;
* [[EWallet]]&lt;br /&gt;
* [[Deterministic Wallet]]&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jonasbits</name></author>
	</entry>
</feed>