<?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=BlueMatt</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=BlueMatt"/>
	<link rel="alternate" type="text/html" href="https://en.bitcoin.it/wiki/Special:Contributions/BlueMatt"/>
	<updated>2026-04-27T18:47:20Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Fallback_Nodes&amp;diff=69379</id>
		<title>Fallback Nodes</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Fallback_Nodes&amp;diff=69379"/>
		<updated>2022-07-25T05:44:59Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: /* Tor nodes */ Goodbye, old friend.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of nodes which are considered reliable.&lt;br /&gt;
&lt;br /&gt;
== How to use this list ==&lt;br /&gt;
&lt;br /&gt;
=== Connect to nodes ===&lt;br /&gt;
&lt;br /&gt;
You can connect to these nodes with the &#039;&#039;-addnode=ip&#039;&#039; switch instead of the usual node harvesting process (through IRC or via the embedded nodelist). You can connect to more than one node by using &#039;&#039;-addnode=ip&#039;&#039; more than once. It is usually a good idea to connect to more than one of these nodes.&lt;br /&gt;
&lt;br /&gt;
==== Nodes without a fixed ip ====&lt;br /&gt;
&lt;br /&gt;
If the node IP is not fixed (see &amp;quot;Fixed&amp;quot; column), you will have to resolve the node&#039;s name (first column) each time the IP changes. Some nodes may have their ip change once a day, some others once a month, and some others may stay on the same IP for years. Still, as long as the IP is not fixed, there is no guarantee it will stay the same.&lt;br /&gt;
&lt;br /&gt;
In order to enable hostname lookups for the &#039;&#039;-addnode&#039;&#039; and &#039;&#039;-connect&#039;&#039; parameters, you must additionally provide the &#039;&#039;-dns&#039;&#039; parameter. Example:&lt;br /&gt;
 bitcoind -dns -addnode=bitcoin.es&lt;br /&gt;
&lt;br /&gt;
Versions prior to 0.3.22 do not support hostnames to the &#039;&#039;-addnode&#039;&#039; parameter, so you must do the resolving part for it. For example on linux:&lt;br /&gt;
 bitcoind -addnode=$(dig +short bitcoin.es)&lt;br /&gt;
&lt;br /&gt;
=== IP Transactions ===&lt;br /&gt;
&lt;br /&gt;
[[Bitcoin Core]] versions prior to 0.8.0 also could send [[IP Transactions]] to these nodes. If you included your bitcoin address in the &amp;quot;message&amp;quot; field, you might have had your coins back.&lt;br /&gt;
&lt;br /&gt;
=== Tor network ===&lt;br /&gt;
&lt;br /&gt;
BitcoinCore will automatically use Tor if it is available at default (&#039;&#039;127.0.0.1:9050&#039;&#039;), to use Bitcoin-Qt over Tor hidden services &#039;&#039;&#039;only&#039;&#039;&#039;, in a terminal/console enter:&lt;br /&gt;
 bitcoin-qt -proxy=127.0.0.1:9050 -onlynet=tor&lt;br /&gt;
&lt;br /&gt;
To use Bitcoin with one specific Tor node, run&lt;br /&gt;
 bitcoin-qt -proxy=127.0.0.1:9050 -connect=abcde.onion&lt;br /&gt;
, where abcde.onion needs to be substituted with one of the [[Fallback_Nodes#Tor_nodes|Tor nodes below]]. These parameters can be added to [[Running_Bitcoin#Bitcoin.conf_Configuration_File|bitcoin.conf]] to make them permanent.&lt;br /&gt;
&lt;br /&gt;
More details on how to execute BitcoinCore with Tor see [[Setting_up_a_Tor_hidden_service|Setting up a Tor hidden service]]. You can find detailed information on running clients and hidden services within Tor in the [https://github.com/bitcoin/bitcoin/blob/master/doc/tor.md documentation].&lt;br /&gt;
&lt;br /&gt;
== Nodes list ==&lt;br /&gt;
&lt;br /&gt;
=== IPv4 Nodes ===&lt;br /&gt;
&lt;br /&gt;
This entire list was last checked on 2017-11-15.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Hostname !! Owner !! IP !! Fixed !! Status !! Last Seen (GMT) !! Accepts IP transactions&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- BEGIN NODELIST --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.moneypot.com || [https://www.moneypot.com moneypot] || 212.47.228.216 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} || 2015-09-15 || No&lt;br /&gt;
|-&lt;br /&gt;
| node.bitcoin.xxx || [http://www.bitcoin.xxx Bitcoin.xxx] || 66.228.49.201 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} || 2014-08-28 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.coinprism.com || [[Coinprism]] || 137.116.225.142 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} || 2014-04-26 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btcnode1.evolyn.net || Evolyn || 85.214.251.25 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} || 2014-01-26 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| InductiveSoul.US || [[User:Inductivesoul|Inductive Soul]] || 67.186.224.85 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} || 2013-11-13 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| archivum.info || Ferraro Ltd.|| 88.198.58.172 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| 62.75.216.13 || exMULTI, Inc. || 62.75.216.13 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| 69.64.34.118 || exMULTI, Inc. || 69.64.34.118 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| 79.160.221.140 || K-Norway || 79.160.221.140 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| netzbasis.de || unknown3 || 81.169.129.25 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btc.turboadmin.com || osmosis || 98.143.152.14 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| fallback.bitcoin.zhoutong.com || Zhou Tong || 117.121.241.140 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| bauhaus.csail.mit.edu || imsaguy || 128.30.96.44 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| jun.dashjr.org || Luke-Jr || 173.242.112.53 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} || 2017-11-15 || &lt;br /&gt;
|-&lt;br /&gt;
| cheaperinbitcoins.com || Xenland/Shane || 184.154.36.82 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| django.webflows.fr || unknown2 || 188.165.213.169 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| 204.9.55.71 || toasty || 204.9.55.71 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btcnode.novit.ro || ovidiusoft - novit.ro || 93.187.142.114 || {{Table Value No}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| porgressbar.sk || progressbar hackerspace || 91.210.181.21 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| faucet.bitcoin.st || bitcoin street || 64.27.57.225 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.securepayment.cc || SecurePayment CC || 63.247.147.163 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| www.dcscdn.com || [[User:Danw12|Danw12]] || 199.115.228.181 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| ns2.dcscdn.com || [[User:Danw12|Danw12]] || 199.115.228.182 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| coin.soul-dev.com || Soul-Dev || || || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| messier.bzfx.net || BZFX/[[User:A Meteorite|A Meteorite]] || 91.121.205.50 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| btcnode1.bitgroup.cc || BitGroup || 198.211.116.191 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btcnode2.bitgroup.cc || BitGroup || 162.243.120.138 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btcnode3.bitgroup.cc || BitGroup || 95.85.8.237 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btcnode.xiro.co || Xiro Labs || 91.121.108.61 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} || 2017-11-15 || No&lt;br /&gt;
|-&lt;br /&gt;
| stuff.liam-w.io || [[User:liamwli|Liam W]] || 185.122.57.203 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.bitdonut.co || James Hartig ||  ||  || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| coinno.de  || jaknam ||  ||  || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| 82.165.44.44 || anonymous ||  ||  || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin1.dassori.me || gdassori ||  ||  || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin2.dassori.me || gdassori ||  ||  || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| blockchainnode.meulie.net || [[User:Evert|Evert]] ||  ||  || {{Fallback Nodes/Node Up}} || 2017-11-15 ||&lt;br /&gt;
|-&lt;br /&gt;
| fullnode.fybsg.com || Nagato ||  ||  || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| n.bitcoin-fr.io || [[User:Arthur|Arthur]] || 62.210.66.227 ||  || {{Fallback Nodes/Node Up}} || 2017-11-15 ||&lt;br /&gt;
|-&lt;br /&gt;
| homeplex.tk || [[User:Victorsueca|Victorsueca]] || 90.165.120.190 ||  || {{Fallback Nodes/Node Down}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| mars.jordandoyle.uk || [https://doyle.wf Jordan Doyle] || 91.121.83.82 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
&amp;lt;!-- END NODELIST --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== IPv6 Nodes ===&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Hostname !! Owner !! IP !! Fixed !! Status !! Last Seen (GMT) !! Accepts IP transactions&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- BEGIN NODELIST --&amp;gt;&lt;br /&gt;
| InductiveSoul.US || [[User:Inductivesoul|Inductive Soul]] || 2601:7:6680:2ac:4d29:40ff:7513:fcc7 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} || 11-13-2013 (MDY) || Yes&lt;br /&gt;
|-&lt;br /&gt;
| caffeinator.net || [[User:Atrophy|Atrophy]] ||  ||  || {{Fallback Nodes/Node Up}} || 2013-05-10 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2001:470:8:2e1::40 || ? || 2001:470:8:2e1::40 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| messier.bzfx.net || BZFX/[[User:A Meteorite|A Meteorite]] || 2001:41d0:1:d632::1 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| stuff.liam-w.io || [[User:liamwli|Liam W]] || 2a06:8ec0:3::1:2e47 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  ||  No&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.bitdonut.co || James Hartig ||  ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| n.bitcoin-fr.io || [[User:Arthur|Arthur]] || 2001:bc8:c087:2001::1 ||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| mars.jordandoyle.uk || [https://doyle.wf Jordan Doyle] ||  ||  ||  ||  ||&lt;br /&gt;
&amp;lt;!-- END NODELIST --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Tor nodes ===&lt;br /&gt;
&lt;br /&gt;
This entire list was last checked on 2022-07-25.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Hostname !! Owner !! Status !! Last Seen (GMT) !! Accepts IP transactions&lt;br /&gt;
|-&lt;br /&gt;
| pcxlvkgabsowmrx54b5bgqglershgfchr6xavrhbfngridplzhf2pwqd.onion || BlueMatt || Up || 2022-07-25 || No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Adding a node ==&lt;br /&gt;
&lt;br /&gt;
Before adding yourself as a fallback node, you should be sure your node will stay online for a long time. If a node is offline for more than 24 hours it will be removed from the list.&lt;br /&gt;
&lt;br /&gt;
To add a node in this list, you just need the ip/hostname and your name, the other fields will be filled automatically. Insert the following lines before the &amp;lt;tt&amp;gt;END NODELIST&amp;lt;/tt&amp;gt; line:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;|-&lt;br /&gt;
| ip || your name&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Network|Bitcoin Network]]&lt;br /&gt;
* [http://nodes.bitcoin.st Fallback Nodes] List of longest running Bitcoin Nodes listed by Country.&lt;br /&gt;
* [https://getaddr.bitnodes.io/ Bitnodes project]&lt;br /&gt;
* [https://blockchain.info/connected-nodes Recently connected nodes at blockchain.info]&lt;br /&gt;
&lt;br /&gt;
{{Bitcoin Core documentation}}&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Segwit_support&amp;diff=63341</id>
		<title>Segwit support</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Segwit_support&amp;diff=63341"/>
		<updated>2017-06-12T17:00:57Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: Deleted Suhas at his request&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&#039;&#039;&#039;PLEASE NOTE:&#039;&#039;&#039; This list is not yet complete, nor completely vetted by the parties listed for accuracy.&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Developers: Please edit your row (add one if you&#039;re missing) to reflect your positions. If for some reason you don&#039;t already have a wiki account that can edit the page, make an account and ask luke-jr for help if you get caught in the anti-spam.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| {{No}} || doesn&#039;t support (but might or might not go along with it with sufficient community support)&lt;br /&gt;
|-&lt;br /&gt;
| {{Deficient}} || okay with the idea, but considers it to have insufficient community support&lt;br /&gt;
|-&lt;br /&gt;
| {{Evaluating}} || still evaluating the idea&lt;br /&gt;
|-&lt;br /&gt;
| {{Wanting}} || positively likes the idea, but considers it to have insufficient community support&lt;br /&gt;
|-&lt;br /&gt;
| {{Weak}} || better than nothing at all&lt;br /&gt;
|-&lt;br /&gt;
| {{Acceptable}} || it is a workable solution&lt;br /&gt;
|-&lt;br /&gt;
| {{Prefer}} || it is what he would choose if it was only up to him and no outside influences&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- README: please keep alphabetically ordered by surname! --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note that support for BIP148 does not mean developers support merging it into Core.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! rowspan=2 colspan=2 | Developer &amp;amp; affiliation* &amp;lt;!-- Using one year before the the creation date of this page as the benchmark. Do not list yourself as affiliated with a project that you haven&#039;t made meaningful contributions to since then.  --&amp;gt;&lt;br /&gt;
! Segwit itself&lt;br /&gt;
! colspan=3 | Deployment methods&lt;br /&gt;
! colspan=2 | Hardfork bundles (Silbert agreement)&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki BIP 141] !! [https://github.com/bitcoin/bips/blob/master/bip-0148.mediawiki BIP 148] !! [https://github.com/bitcoin/bips/blob/master/bip-0149.mediawiki BIP 149] !! [https://github.com/bitcoin/bips/blob/master/bip-0091.mediawiki BIP 91] || Segwit2x || [https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-May/014445.html COOP]&lt;br /&gt;
|-&lt;br /&gt;
| ฿tcDrak || Core || {{Prefer}} || {{Acceptable}} || {{Acceptable}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Bryan Bishop || || {{Prefer}} || {{Wanting}} || {{Acceptable}} || {{Weak}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Andrew Chow || Core || {{Prefer}} || {{Prefer}} || {{Acceptable}} || {{Weak}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Matt Corallo || Core || {{Prefer}} || {{No}} || || {{Acceptable}} || {{No|LOL}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Johnathan Corgan || Core || {{Prefer}} || {{Prefer}} || {{Acceptable}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Luke Dashjr || Core || {{Prefer}} || {{Prefer}} || {{No}} || {{Acceptable|Acc. until July}} || {{No}} || {{Deficient}}&lt;br /&gt;
|-&lt;br /&gt;
| Christian Decker || Core || {{Prefer}} || {{Acceptable}} ||  ||  || || &lt;br /&gt;
|-&lt;br /&gt;
| Nicolas Dorier || Core || {{Prefer}} || {{Deficient}} || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Marco Falke || Core || {{Prefer}} || {{Deficient}} || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Michael Ford || Core || {{Prefer}} || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Mark Friedenbach || BIP 68/112 || {{Prefer}} || {{Prefer}} || {{No}} || {{Acceptable|Acc. until July}} || {{No|LOL}} || {{No|Nope}}&lt;br /&gt;
|-&lt;br /&gt;
| Pavel Janik || Core || {{Prefer}} || {{No}} || {{Acceptable}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Thomas Kerin || Core || {{Prefer}} || {{Wanting}} || {{Prefer}} || {{Weak}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Johnson Lau || Core || {{Prefer}} || {{Wanting}} || {{Acceptable}} || {{Acceptable}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| Eric Lombrozo || || {{Prefer}} || {{Acceptable}} || {{Weak}} || {{Weak}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Greg Maxwell || Core || {{Prefer}} || {{Deficient}} || {{Acceptable}} || {{Weak}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Alex Morcos || Core || {{Prefer}} || {{Deficient}} || {{Acceptable}} || {{Weak}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Pavol &amp;quot;stick&amp;quot; Rusnak || Trezor || {{Prefer}} || {{Wanting}} || {{Acceptable}} || {{Acceptable}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Rusty Russell || c-lightning || {{Prefer}} || {{Prefer}} || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Gregory Sanders || Core || {{Prefer}} || {{Wanting}} || {{Acceptable}} || {{Weak}} || {{No}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Jonas Schnelli || Core || {{Prefer}} || {{Wanting}} || {{Acceptable}} || {{Acceptable}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Patrick Strateman || Core || {{Prefer}} ||  || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Jorge Timon || Core || {{Prefer}} || {{No}} || {{Prefer}} || {{Deficient}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Peter Todd || Core || {{Prefer}} || {{Acceptable}} || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Warren Togami || Core || {{Prefer}} || {{Prefer}} || {{Acceptable}} || || ||&lt;br /&gt;
|-&lt;br /&gt;
| Wladimir van der Laan || Core || {{Prefer}} || {{Prefer}} || {{Acceptable}} || {{Acceptable}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| flix1 || || {{Prefer}} || {{Acceptable}} || {{Acceptable}} || {{Deficient}} || {{Evaluating}} || {{Evaluating}}&lt;br /&gt;
|-&lt;br /&gt;
| Leo Wandersleb || Mycelium || {{Prefer}} || {{Prefer}} || {{Acceptable}} || {{Weak}} || {{No}} || {{No}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;affiliation&amp;quot; is an optional field for the company or project the individual is associated with, that most qualifies the person to comment on the matter and is not meant as a company or project endorsement of the individual&#039;s position.&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Contract&amp;diff=59172</id>
		<title>Contract</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Contract&amp;diff=59172"/>
		<updated>2015-10-22T19:47:05Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: This wiki is about Bitcoin, not Ripple&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &#039;&#039;&#039;distributed contract&#039;&#039;&#039; is a method of using Bitcoin to form agreements with people via the block chain. Contracts don&#039;t make anything possible that was previously impossible, but rather, they allow you to solve common problems in a way that minimizes trust. Minimal trust often makes things more convenient by allowing human judgements to be taken out of the loop, thus allowing complete automation.&lt;br /&gt;
&lt;br /&gt;
By building low trust protocols that interact with Bitcoin, entirely new products can be created:&lt;br /&gt;
&lt;br /&gt;
* [[Smart Property|Smart property]] is property that can be atomically traded and loaned via the block chain.&lt;br /&gt;
* [[Transferable virtual property]] are digital items that can be traded but not duplicated.&lt;br /&gt;
* [[Agents]] are autonomous programs that maintain their own wallet, which they use to buy server time. Money is obtained by the agent selling services. If demand exceeds supply the agents can spawn children that either survive or die depending on whether they can get enough business.&lt;br /&gt;
* [[Distributed markets]] are a way to implement peer to peer bond and stock trading, allowing Bitcoin to be evolve into a full competitor to the international financial system.&lt;br /&gt;
&lt;br /&gt;
This page also lists some smaller examples.&lt;br /&gt;
&lt;br /&gt;
Many of the ideas underlying Bitcoin contracts were first described by Nick Szabó in his seminal paper, &lt;br /&gt;
[http://szabo.best.vwh.net/formalize.html Formalizing and Securing Relationships on Public Networks]. These pages were written by [mailto:mike@plan99.net Mike Hearn]. Contact him if you have an idea for a new type of contract. You can watch &#039;&#039;&#039;[https://www.youtube.com/watch?feature=player_embedded&amp;amp;v=mD4L7xDNCmA a video of a talk on contracts]&#039;&#039;&#039; that was presented at the Bitcoin 2012 conference in London.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==A warning about the mempool transaction replacement mechanism==&lt;br /&gt;
&lt;br /&gt;
In places this page refers to the ability to use the nSequence field for transaction mempool replacement. This mechanism was disabled in [https://github.com/bitcoin/bitcoin/commit/05454818dc7ed92f577a1a1ef6798049f17a52e7#diff-118fcbaaba162ba17933c7893247df3aR522 2010], and more recently the code has been [https://github.com/bitcoin/bitcoin/commit/98c7c8fd1d3712e02be0e9f2eeca7e02aa54d197 removed completely], due to concerns over people using it to perform DoS attacks. Implementors should take this into account and try to create contract mechanisms that do not rely on mempool replacement if they wish to have their implementations work with current implementations. If Bitcoin changes in future to allow mempool replacement once again, this page will be updated.&lt;br /&gt;
&lt;br /&gt;
==Theory==&lt;br /&gt;
&lt;br /&gt;
Every [[transaction]] in Bitcoin has one or more inputs and outputs. Each input/output has a small, pure function associated with it called a [[script]]. Scripts can contain signatures over simplified forms of the transaction itself.&lt;br /&gt;
&lt;br /&gt;
Every transaction can have a lock time associated with it. This allows the transaction to be pending and replaceable until an agreed-upon future time, specified either as a block index or as a timestamp (the same field is used for both, but values less than 500 million are interpreted as a block index). If a transaction&#039;s lock time has been reached, we say it is final.&lt;br /&gt;
&lt;br /&gt;
Each transaction input has a sequence number. In a normal transaction that just moves value around, the sequence numbers are all UINT_MAX and the lock time is zero. If the lock time has not yet been reached, but all the sequence numbers are UINT_MAX, the transaction is also considered final. Sequence numbers can be used to issue new versions of a transaction without invalidating other inputs signatures, e.g., in the case where each input on a transaction comes from a different party, each input may start with a sequence number of zero, and those numbers can be incremented independently.&lt;br /&gt;
&lt;br /&gt;
Signature checking is flexible because the form of transaction that is signed can be controlled through the use of SIGHASH flags, which are stuck on the end of a signature. In this way, contracts can be constructed in which each party signs only a part of it, allowing other parts to be changed without their involvement.  The SIGHASH flags have two parts, a mode and the ANYONECANPAY modifier:&lt;br /&gt;
&lt;br /&gt;
# SIGHASH_ALL: This is the default. It indicates that everything about the transaction is signed, except for the input scripts. Signing the input scripts as well would obviously make it impossible to construct a transaction, so they are always blanked out. Note, though, that other properties of the input, like the connected output and sequence numbers, &#039;&#039;are&#039;&#039; signed; it&#039;s only the scripts that are not. Intuitively, it means &amp;quot;I agree to put my money in, if everyone puts their money in and the outputs are this&amp;quot;.&lt;br /&gt;
# SIGHASH_NONE: The outputs are not signed and can be anything. Use this to indicate &amp;quot;I agree to put my money in, as long as everyone puts their money in, but I don&#039;t care what&#039;s done with the output&amp;quot;. This mode allows others to update the transaction by changing their inputs sequence numbers.&lt;br /&gt;
# SIGHASH_SINGLE: Like SIGHASH_NONE, the inputs are signed, but the sequence numbers are blanked, so others can create new versions of the transaction. However, the only output that is signed is the one at the same position as the input. Use this to indicate &amp;quot;I agree, as long as my output is what I want; I don&#039;t care about the others&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The SIGHASH_ANYONECANPAY modifier can be combined with the above three modes. When set, only that input is signed and the other inputs can be anything.&lt;br /&gt;
&lt;br /&gt;
Scripts can contain the CHECKMULTISIG opcode. This opcode provides n-of-m checking: you provide multiple public keys, and specify the number of valid signatures that must be present. The number of signatures can be less than the number of public keys. An output can require two signatures to be spent by setting it to something like this:&lt;br /&gt;
&lt;br /&gt;
 2 &amp;lt;pubkey1&amp;gt; &amp;lt;pubkey2&amp;gt; 2 CHECKMULTISIGVERIFY&lt;br /&gt;
&lt;br /&gt;
There are two general patterns for safely creating contracts:&lt;br /&gt;
&lt;br /&gt;
# Transactions are passed around outside of the P2P network, in partially-complete or invalid forms.&lt;br /&gt;
# Two transactions are used: one (the contract) is created and signed but not broadcast right away. Instead, the other transaction (the payment) is broadcast after the contract is agreed to lock in the money, and then the contract is broadcast.&lt;br /&gt;
&lt;br /&gt;
This is to ensure that people always know what they are agreeing to.&lt;br /&gt;
&lt;br /&gt;
Together, these features let us build interesting new financial tools on top of the block chain.&lt;br /&gt;
&lt;br /&gt;
==Example 1: Providing a deposit==&lt;br /&gt;
&lt;br /&gt;
Imagine that you open an account on a website (eg, a forum or wiki) and wish to establish your trustworthiness with the operators, but you don&#039;t have any pre-existing reputation to leverage. One solution is to buy trust by paying the website some money. But if at some point you close your account, you&#039;d probably like that money back. You may not trust the site enough to give them a deposit that they are tempted to spend. Another risk is that the site might just disappear one day. &lt;br /&gt;
&lt;br /&gt;
The goal is to prove that you made a sacrifice of some kind so the site knows you&#039;re not a spambot, but you don&#039;t want them to be able to spend the money. And if the operators disappear, you&#039;d eventually like the coins back without needing anything from them.&lt;br /&gt;
&lt;br /&gt;
We can solve this problem with a contract:&lt;br /&gt;
&lt;br /&gt;
# The user and website send each other a newly-generated public key.&lt;br /&gt;
# The user creates transaction Tx1 (the payment) putting 10 BTC into an output that requires both user and website to sign, but does not broadcast it. They use the key from the previous step for the site.&lt;br /&gt;
# User sends the hash of Tx1 to the website.&lt;br /&gt;
# The website creates a transaction Tx2 (the contract).  Tx2 spends Tx1 and pays it back to the user via the address he provided in the first step. Note that Tx1 requires two signatures, so this transaction can&#039;t be complete. nLockTime is set to some date in the future (eg, six months). The sequence number on the input is set to zero.&lt;br /&gt;
# Finally, the incomplete (half-signed) transaction is sent back to the user. The user checks that the contract is as expected - that the coins will eventually come back to him - but, unless things are changed, only after six months. Because the sequence number is zero, the contract can be amended in future if both parties agree. The script in the input isn&#039;t finished though; there are only zeros where the user&#039;s signature should be. He fixes that by signing the contract and putting the new signature in the appropriate spot.&lt;br /&gt;
# The user broadcasts Tx1, then broadcasts Tx2.&lt;br /&gt;
&lt;br /&gt;
At this stage, the 10 BTC are in a state where neither the user nor the website can spend them independently. After six months, the contract will complete and the user will get the coins back, even if the website disappears.&lt;br /&gt;
&lt;br /&gt;
What if the user wishes to close his account early? The website creates a new version of Tx2 with nLockTime set to zero and the input sequence number set to UINT_MAX, then he re-signs it. The site hands the tx back to the user, who signs it as well. The user then broadcasts the transaction, terminating the contract early and releasing the coins.&lt;br /&gt;
&lt;br /&gt;
What if the six months is nearly up and the user wishes to keep his account? The same thing applies: the contract can be resigned with a newer nLockTime, a sequence number 1 higher than the previous and rebroadcast 2^32 times. No matter what happens, both parties must agree for the contract to change.&lt;br /&gt;
&lt;br /&gt;
Obviously, if the user turns out to be abusive (i.e., a spammer), the website will not allow an early close of the contract. If too much abuse is getting through, the size of the deposit can be raised or the length of the contract can be increased.&lt;br /&gt;
&lt;br /&gt;
==Example 2: Escrow and dispute mediation==&lt;br /&gt;
&lt;br /&gt;
A buyer wants to trade with somebody he doesn&#039;t know or trust. In the common case where the transaction goes well, the client doesn&#039;t want any third parties involved. If something goes wrong though, he&#039;d like a third party to decide who gets the money - perhaps a professional dispute mediation service. Note that this concept can apply to either buyer or seller. The mediator might request proof of postage from the merchant, for example.&lt;br /&gt;
&lt;br /&gt;
In other words, one wants to lock up some coins so a third party has to agree in order for them to be spent:&lt;br /&gt;
&lt;br /&gt;
# Agree with the merchant on a dispute mediator (e.g., ClearCoin).&lt;br /&gt;
# Ask the merchant for a public key (K1). Ask the mediator for a public key (K2). Create a new key for yourself (K3).&lt;br /&gt;
# Send the merchant K2. The merchant challenges the mediator with a random nonce. The mediator signs the nonce with the private form of K2, thus proving it really belongs to merchant.&lt;br /&gt;
# Create a transaction (Tx1) with an output script as follows and broadcast it:&lt;br /&gt;
&lt;br /&gt;
 2 &amp;lt;K1&amp;gt; &amp;lt;K2&amp;gt; &amp;lt;K3&amp;gt; 3 CHECKMULTISIGVERIFY&lt;br /&gt;
&lt;br /&gt;
Now the coins are locked in such a way that they can only be spent by the following methods:&lt;br /&gt;
&lt;br /&gt;
# Client and the merchant agree (either a successful trade, or merchant agrees to reimburse client without mediation)&lt;br /&gt;
# Client and the mediator agree (failed trade, mediator sides with client, like a charge-back)&lt;br /&gt;
# The mediator and the merchant agree (goods delivered, merchant gets client&#039;s coins despite the dispute)&lt;br /&gt;
&lt;br /&gt;
When signing an input, the contents are set to the connected output. Thus, to redeem this transaction, the client creates a scriptSig containing zeros where the other signature should be, signs it, and then sets one of the slots to his new signature. The partially-complete transaction can then be sent to the merchant or mediator for the second signature.&lt;br /&gt;
&lt;br /&gt;
==Example 3: Assurance contracts==&lt;br /&gt;
&lt;br /&gt;
An [http://en.wikipedia.org/wiki/Assurance_contract assurance contract] is a way of funding the creation of a [http://www.auburn.edu/~johnspm/gloss/public_goods public good], that is, a good that, once created, anyone can benefit from for free. The standard example is a lighthouse: whilst everyone may agree that one should be built, it’s too expensive for an individual sailor to justify building one, given that it will also benefit all his competitors. &lt;br /&gt;
&lt;br /&gt;
One solution is for everyone to pledge money towards the creation of the public good, such that the pledges are only committed if the total value of all pledges is above the cost of creation. If not enough people contribute, nobody has to pay anything.&lt;br /&gt;
&lt;br /&gt;
Examples where Bitcoin is superior to traditional payment methods for assurance contract fundraising include applications where frequent, small pledges need to be made automatically, for instance internet radio station funding and [https://bitcointalk.org/index.php?topic=67255.msg788110#msg788110 web page translation]. Consider a browser extension that you send a bit of money to. It detects the current language of the page and broadcasts a pledge for a translation into your language to be prepared. If enough users with the extension land on the same page at the same time (eg, it was linked to from somewhere high traffic), then enough pledges are broadcast to trigger a payment to a company who prepares a high quality translation. When complete it automatically loads in your browser.&lt;br /&gt;
&lt;br /&gt;
We can model this in Bitcoin as follows:&lt;br /&gt;
&lt;br /&gt;
# An entrepreneur creates a new address and announces that the good will be created if at least 1000 BTC is raised. Anyone can contribute.&lt;br /&gt;
# Each party wishing to pledge creates a new transaction spending some of their coins to the announced address, but they do not broadcast it. The transaction is similar to a regular transaction except for three differences: Firstly, there cannot be any change. If you don’t have any outputs of the right size, you must create one first by spending to one of your own addresses. Secondly, the input script signature is signed with SIGHASH_ALL | SIGHASH_ANYONECANPAY. Finally, the output value is set to 1000 BTC. Note that this is not a valid transaction because the output value is larger than the input value.&lt;br /&gt;
# The transaction is uploaded to the entrepreneur&#039;s server, which saves it to disk and updates its count of how many coins have been pledged.&lt;br /&gt;
# Once the server has enough coins, it merges the separate transactions together into a new transaction. The new transaction has a single output that simply spends to the announced address - it is the same as the outputs on each contributed transaction. The inputs to the transaction are collected from the contributed pledges.&lt;br /&gt;
# The finished transaction is broadcast, sending the pledged coins to the announced address.&lt;br /&gt;
&lt;br /&gt;
This scheme relies on several aspects of the protocol. The first is the SIGHASH flags used. SIGHASH_ALL is the default and means the entire contents of the transaction are signed, except for the input scripts. SIGHASH_ANYONECANPAY is an additional modifier that means the signature only covers the input it’s found in - the other inputs are not signed and thus can be anything.&lt;br /&gt;
&lt;br /&gt;
By combining these flags together, we are able to create a signature that is valid even when other inputs are added, but breaks if the outputs or other properties of the transaction are changed.&lt;br /&gt;
&lt;br /&gt;
The second aspect we exploit is the fact that a transaction in which the output values are larger than the input values is invalid (for obvious reasons). This means it’s safe to send the entrepreneur a transaction that spends such coins - it’s impossible for him to claim the coins unless he has other inputs that sum to the output value or more.&lt;br /&gt;
&lt;br /&gt;
It&#039;s possible to create assurance contracts without using SIGHASH_ANYONECANPAY. Instead, a two step process is used in which pledges are collected without transactions, and once the total value is reached, a transaction with an input for each pledger is created and passed around until all signatures are collected. However, using SIGHASH_ANYONECANPAY and then merging is probably more convenient.&lt;br /&gt;
&lt;br /&gt;
An assurance contract can be prepared for &#039;&#039;&#039;[[Funding network security|funding network security]]&#039;&#039;&#039; for the next block. In this way, mining can be funded even if block space is not scarce.&lt;br /&gt;
&lt;br /&gt;
An elaboration of this concept is described by Tabarrok in his paper, [http://mason.gmu.edu/~atabarro/PrivateProvision.pdf “The private provision of public goods via dominant assurance contracts”]. In a dominant assurance contract, if a contract fails (not enough pledges within a set time window) the entrepreneur pays a fee to those who pledged so far. This type of contract attempts to arrange incentives such that taking part is always the right strategy. [[Dominant Assurance Contracts|A scheme for dominant assurance contracts]] in Bitcoin has been proposed.&lt;br /&gt;
&lt;br /&gt;
==Example 4: Using external state==&lt;br /&gt;
&lt;br /&gt;
Scripts are, by design, pure functions. They cannot poll external servers or import any state that may change as it would allow an attacker to outrun the block chain. What&#039;s more, the scripting language is extremely limited in what it can do. Fortunately, we can make transactions connected to the world in other ways.&lt;br /&gt;
&lt;br /&gt;
Consider the example of an old man who wishes to give an inheritance to his grandson, either on the grandson&#039;s 18th birthday or when the man dies, whichever comes first. &lt;br /&gt;
&lt;br /&gt;
To solve this, the man first sends the amount of the inheritance to himself so there is a single output of the right amount. Then he creates a transaction with a lock time of the grandson&#039;s 18th birthday that pays the coins to another key owned by the grandson, signs it, and gives it to him - but does not broadcast it. This takes care of the 18th birthday condition. If the date passes, the grandson broadcasts the transaction and claims the coins. He could do it before then, but it doesn&#039;t let him get the coins any earlier, and some nodes may choose to drop transactions in the memory pool with lock times far in the future.&lt;br /&gt;
&lt;br /&gt;
The death condition is harder. As Bitcoin nodes cannot measure arbitrary conditions, we must rely on an &#039;&#039;oracle&#039;&#039;. An oracle is a server that has a keypair, and signs transactions on request when a user-provided expression evaluates to true.&lt;br /&gt;
&lt;br /&gt;
Here is an example. The man creates a transaction spending his output, and sets the output to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;hash&amp;gt; OP_DROP 2 &amp;lt;sons pubkey&amp;gt; &amp;lt;oracle pubkey&amp;gt; CHECKMULTISIG&lt;br /&gt;
&lt;br /&gt;
This is the oracle script. It has an unusual form - it pushes data to the stack then immediately deletes it again. The pubkey is published on the oracle&#039;s website and is well-known. The hash is set to be the hash of the user-provided expression stating that he has died, written in a form the oracle knows how to evaluate. For example, it could be the hash of the string:&lt;br /&gt;
&lt;br /&gt;
 if (has_died(&#039;john smith&#039;, born_on=1950/01/02)) return (10.0, 1JxgRXEHBi86zYzHN2U4KMyRCg4LvwNUrp);&lt;br /&gt;
&lt;br /&gt;
This little language is hypothetical, it&#039;d be defined by the oracle and could be anything. The return value is an output: an amount of value and an address owned by the grandson.&lt;br /&gt;
&lt;br /&gt;
Once more, the man creates this transaction but gives it directly to his grandson instead of broadcasting it. He also provides the expression that is hashed into the transaction and the name of the oracle that can unlock it.&lt;br /&gt;
&lt;br /&gt;
It is used in the following algorithm:&lt;br /&gt;
&lt;br /&gt;
# The oracle accepts a measurement request. The request contains the user-provided expression, a copy of the output script, and a partially complete transaction provided by the user. Everything in this transaction is finished except for the scriptSig, which contains just one signature (the grandson&#039;s) - not enough to unlock the output.&lt;br /&gt;
# The oracle checks the user-provided expression hashes to the value in the provided output script. If it doesn&#039;t, it returns an error.&lt;br /&gt;
# The oracle evaluates the expression. If the result is not the destination address of the output, it returns an error.&lt;br /&gt;
# Otherwise the oracle signs the transaction and returns the signature to the user. Note that when signing a Bitcoin transaction, the input script is set to the connected output script. The reason is that when OP_CHECKSIG runs, the script containing the opcode is put in the input being evaluated, _not_ the script containing the signature itself. The oracle has never seen the full output it is being asked to sign, but it doesn&#039;t have to. It knows the output script, its own public key, and the hash of the user-provided expression, which is everything it needs to check the output script and finish the transaction.&lt;br /&gt;
# The user accepts the new signature, inserts it into the scriptSig and broadcasts the transaction.&lt;br /&gt;
&lt;br /&gt;
If, and only if, the oracle agrees that the man is dead, the grandson can broadcast the two transactions (the contract and the claim) and take the coins.&lt;br /&gt;
&lt;br /&gt;
Oracles can potentially evaluate anything, yet the output script form in the block chain can always be the same. Consider the following possibilities:&lt;br /&gt;
&lt;br /&gt;
 today() == 2011/09/25 &amp;amp;&amp;amp; exchange_rate(mtgoxUSD) &amp;gt;= 12.5 &amp;amp;&amp;amp; exchange_rate(mtgoxUSD) &amp;lt;= 13.5&lt;br /&gt;
 Require exchange rate to be between two values on a given date&lt;br /&gt;
 &lt;br /&gt;
 google_results_count(site:www.google.com/hostednews &#039;Mike Hearn&#039; olympic gold medal) &amp;gt; 0&lt;br /&gt;
 A bet on me doing something that I will never actually do&lt;br /&gt;
 &lt;br /&gt;
 // Choose between one of two winners of a bet on the outcome of the Eurovision song contest.&lt;br /&gt;
 if (eurovision_winner() == &#039;Azerbaijan&#039;) &lt;br /&gt;
   return 1Lj9udBVDwptFffGSJSC2sohCfudQgSTPD; &lt;br /&gt;
 else &lt;br /&gt;
   return 1JxgRXEHBi86zYzHN2U4KMyRCg4LvwNUrp;&lt;br /&gt;
&lt;br /&gt;
The conditions that control whether the oracle signs can be arbitrarily complex, but the block chain never needs to contain more than a single hash.&lt;br /&gt;
&lt;br /&gt;
The [http://earlytemple.com/ &#039;&#039;Early Temple&#039;&#039; project] has implemented a prototype of an oracle that looks for a key phrase in a web page.&lt;br /&gt;
&lt;br /&gt;
===Trust minimization: challenges===&lt;br /&gt;
&lt;br /&gt;
There are various ways to reduce the level of required trust in the oracle.&lt;br /&gt;
&lt;br /&gt;
Going back to our first example, the oracle has not seen the transaction the grandson is trying to unlock, as it was never broadcast, thus, it cannot hold the grandson to ransom because it does not know whether the transaction it&#039;s signing for even exists. People can, and should, regularly &#039;&#039;&#039;challenge&#039;&#039;&#039; the oracle in an automated fashion to ensure it always outputs what is expected. The challenges can be done without spending any coins because the tx to be signed can be invalid (ie, connected to transactions that don&#039;t exist). The oracle has no way to know whether a request to be signed is random or real. How to challenge the oracle with conditions that are not yet true is however an open research question. &lt;br /&gt;
&lt;br /&gt;
===Trust minimization: multiple independent oracles===&lt;br /&gt;
&lt;br /&gt;
The number of keys in the CHECKMULTISIG can be increased to allow for &#039;&#039;&#039;n-of-m&#039;&#039;&#039; oracles if need be.  Of course, it is vital to check that the oracles really are independent and not in collusion. An implementation of such a system, and explanation was published in the  &#039;&#039;&#039;[http://github.com/orisi/wiki/wiki/Orisi-White-Paper Orisi whitepaper]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The idea, in short, is that independent oracles could be run by a set of trustworthy independent actors. Contract participants would first settle upon a set of oracles they both are comfortable using - for example by trusting [http://oracles.lo/  a dedicated site] - and then sign a contract requiring most of the oracles signatures to resolve.&lt;br /&gt;
&lt;br /&gt;
One of the interesting properties of such a system is that it can possibly implement very complicated sets of scripts and external inputs, while being based on a set of standard bitcoin scripts. Another property is that the oracles can possibly replace each ones by forwarding the funds to new [https://bitcoinmagazine.com/11108/multisig-future-bitcoin/ multisig addresses] when they discover that one of the oracles is faulty/corrupted. Finally, such oracles could be used to implement sidechains without dedicated blockchain opcodes.&lt;br /&gt;
&lt;br /&gt;
===Trust minimization: trusted hardware===&lt;br /&gt;
&lt;br /&gt;
Using commodity hardware, you can use &#039;&#039;&#039;trusted computing&#039;&#039;&#039; in the form of Intel TXT or the AMD equivalent (SKINIT) to set up a sealed hardware environment and then use the TPM chip to attest that fact to a third party. That third party can verify the hardware was in the required state. Defeating this requires someone to be able to interfere with the execution of a program that may run entirely on the CPU, even in extreme cases without any data traversing the memory bus (you can run entirely using on-die cache if the program is small enough).&lt;br /&gt;
&lt;br /&gt;
===Trust minimization: Amazon AWS oracles===&lt;br /&gt;
&lt;br /&gt;
Finally, perhaps the most practical approach currently is to use Amazon Web Services. As of November 2013, the closest we have to a working oracle is [https://bitcointalk.org/index.php?topic=301538.0 this recipe for creating a trusted computing environment using AWS], built in support of [https://bitcointalk.org/index.php?topic=173220.0 this project for doing selective SSL logging and decryption]. The idea is that an oracle, which can be proven trustworthy using the Amazon APIs with Amazon as the root of trust, records encrypted SSL sessions to an online banking interface in such a way that later if there is a dispute about a person-to-person exchange, the logs can be decrypted and the dispute settled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Example 5: Trading across chains==&lt;br /&gt;
&lt;br /&gt;
The Bitcoin technology can be adapted to create [[Alternative chain|multiple, independent currencies]]. NameCoin is an example of one such currency that operates under a slightly different set of rules, and can also be used to rent names in a namespace. Currencies that implement the same ideas as Bitcoin can be traded freely against each other with limited trust. &lt;br /&gt;
&lt;br /&gt;
For example, imagine a consortium of companies that issue EURcoins, a crypto-currency that is backed 1:1 by deposits in the consortium&#039;s bank accounts. Such a currency would have a different set of tradeoffs to Bitcoin: more centralized, but without FX risk. People might wish to trade Bitcoins for EURcoins back and forth, with the companies only getting involved when cashing in/out of the regular banking system.&lt;br /&gt;
&lt;br /&gt;
To implement this, a [https://bitcointalk.org/index.php?topic=193281.msg2224949#msg2224949 protocol proposed by TierNolan] can be used:&lt;br /&gt;
&lt;br /&gt;
# Party &#039;A&#039; generates some random data, x (the secret).&lt;br /&gt;
# Party &#039;A&#039; generates Tx1 (the payment) containing an output with the chain-trade script in it. See below for this script and a discussion of it. It allows coin release either by signing with the two keys (key &#039;A&#039; and key &#039;B&#039;) or with (secret &#039;x&#039;, key &#039;B&#039;). This transaction is not broadcast. The chain release script contains hashes, not the actual secrets themselves.&lt;br /&gt;
# Party &#039;A&#039; generates Tx2 (the contract), which spends Tx1 and has an output going back to key &#039;A&#039;. It has a lock time in the future and the input has a sequence number of zero, so it can be replaced. &#039;A&#039; signs Tx2 and sends it to &#039;B&#039;, who also signs it and sends it back.&lt;br /&gt;
# &#039;A&#039; broadcasts Tx1 and Tx2. Party &#039;B&#039; can now see the coins but cannot spend them because it does not have an output going to him, and the tx is not finalized anyway.&lt;br /&gt;
# &#039;B&#039; performs the same scheme in reverse on the alternative chain. The lock time for &#039;B&#039; should be much larger than the lock time for &#039;A&#039;. Both sides of the trade are now pending but incomplete.&lt;br /&gt;
# Since &#039;A&#039; knows the secret, &#039;A&#039; can claim his coins immediately. However, &#039;A&#039;, in the process of claiming his coin, reveals the secret &#039;x&#039; to &#039;B&#039;, who then uses it to finish the other side of the trade with (&#039;x&#039;, key &#039;B&#039;).&lt;br /&gt;
&lt;br /&gt;
This protocol makes it feasible to do trades automatically in an entirely peer-to-peer manner, which should ensure good liquidity.&lt;br /&gt;
&lt;br /&gt;
The chain-trade script could look like this:&lt;br /&gt;
&lt;br /&gt;
 IF &lt;br /&gt;
   2 &amp;lt;key A&amp;gt; &amp;lt;key B&amp;gt; 2 CHECKMULTISIGVERIFY&lt;br /&gt;
 ELSE&lt;br /&gt;
   &amp;lt;key B&amp;gt; CHECKSIGVERIFY SHA256 &amp;lt;hash of secret x&amp;gt; EQUALVERIFY&lt;br /&gt;
 ENDIF&lt;br /&gt;
&lt;br /&gt;
The contract input script looks like either:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;sig A&amp;gt; &amp;lt;sig B&amp;gt; 1&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;secret x&amp;gt; &amp;lt;sig B&amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
i.e., the first data element selects which phase is being used.&lt;br /&gt;
&lt;br /&gt;
See [[Atomic cross-chain trading]] for details.&lt;br /&gt;
&lt;br /&gt;
Note that whilst EURcoins is a natural idea, there are other ways to implement peer-to-peer currency exchange (Bitcoin to fiat and vice versa), see the [[Ripple currency exchange]] article for more information.&lt;br /&gt;
&lt;br /&gt;
Sergio Demian-Lerner proposed [https://bitcointalk.org/index.php?topic=91843.0 P2PTradeX], a solution requiring the validation rules for one blockchain to be effectively encoded into the validation rules for the other.&lt;br /&gt;
&lt;br /&gt;
==Example 6: Pay-for-proof contracts: buying a solution to any pure function==&lt;br /&gt;
&lt;br /&gt;
In example 4, we saw how to make payments conditional on the output of some arbitrary program. Those programs are very powerful and can do anything a regular program can do, like fetching web pages. The downside is that a third party is required (an oracle). Although there are techniques that can help reduce the trust needed in the oracle, none can reduce it to zero.&lt;br /&gt;
&lt;br /&gt;
For a restricted class of programs, pure functions, new cryptographic techniques are starting to become available that can actually reduce the trust needed all the way to zero with no third parties. These programs cannot perform any I/O, but in many cases this restriction turns out to be unimportant or can be worked around in other ways, like by giving the program a signed/timestamped document as an input instead of having the program download it.&lt;br /&gt;
&lt;br /&gt;
Gregory Maxwell has invented a protocol for doing this, which you can read about here: [[Zero Knowledge Contingent Payment]]&lt;br /&gt;
&lt;br /&gt;
==Example 7: Rapidly-adjusted (micro)payments to a pre-determined party==&lt;br /&gt;
&lt;br /&gt;
Bitcoin transactions are very cheap relative to traditional payment systems, but still have a cost due to the need for it to be mined and stored. There are some cases in which you want to rapidly and cheaply adjust the amount of money sent to a particular recipient without incurring the cost of a broadcast transaction.&lt;br /&gt;
&lt;br /&gt;
For example, consider an untrusted internet access point, like a WiFi hotspot in a cafe you never visited before. You&#039;d like to pay 0.001 BTC per 10 kilobytes of usage, without opening an account with the cafe. A zero-trust solution means it could be fully automatic, so you could just pre-allocate a budget on your phone&#039;s mobile wallet at the start of the month, and then your device automatically negotiates and pays for internet access on demand. The cafe also wants to allow anyone to pay them without the fear of being ripped off.&lt;br /&gt;
&lt;br /&gt;
To do this, the following protocol can be used. This protocol relies upon a &#039;&#039;&#039;different&#039;&#039;&#039; behavior of nLockTime to the original design. Starting around 2013 time-locked transactions were made non standard and no longer enter the memory pool, thus cannot be broadcast before the timelock expires. When the behaviour of nLockTime is restored to the original design from Satoshi, a variant of this protocol is required which is discussed below.&lt;br /&gt;
&lt;br /&gt;
We define the client to be the party sending value, and the server to be the party receiving it. This is written from the clients perspective.&lt;br /&gt;
&lt;br /&gt;
# Create a public key (K1). Request a public key from the server (K2). &lt;br /&gt;
# Create and sign but do not broadcast a transaction (T1) that sets up a payment of (for example) 10 BTC to an output requiring both the server&#039;s private key and one of your own to be used. A good way to do this is use OP_CHECKMULTISIG. The value to be used is chosen as an efficiency tradeoff.&lt;br /&gt;
# Create a refund transaction (T2) that is connected to the output of T1 which sends all the money back to yourself. It has a time lock set for some time in the future, for instance a few hours. Don&#039;t sign it, and provide the unsigned transaction to the server. By convention, the output script is &amp;quot;2 K1 K2 2 CHECKMULTISIG&amp;quot;&lt;br /&gt;
# The server signs T2 using its private key associated with K2 and returns the signature to the client. Note that it has not seen T1 at this point, just the hash (which is in the unsigned T2).&lt;br /&gt;
# The client verifies the servers signature is correct and aborts if not.&lt;br /&gt;
# The client signs T1 and passes the signature to the server, which now broadcasts the transaction (either party can do this if they both have connectivity). This locks in the money.&lt;br /&gt;
# The client then creates a new transaction, T3, which connects to T1 like the refund transaction does and has two outputs. One goes to K1 and the other goes to K2. It starts out with all value allocated to the first output (K1), ie, it does the same thing as the refund transaction but is not time locked. The client signs T3 and provides the transaction and signature to the server.&lt;br /&gt;
# The server verifies the output to itself is of the expected size and verifies the client&#039;s provided signature is correct.&lt;br /&gt;
# When the client wishes to pay the server, it adjusts its copy of T3 to allocate more value to the server&#039;s output and less to its own. It then re-signs the new T3 and sends the signature to the server. It does not have to send the whole transaction, just the signature and the amount to increment by is sufficient. The server adjusts its copy of T3 to match the new amounts, verifies the signature and continues.&lt;br /&gt;
&lt;br /&gt;
This continues until the session ends, or the 1-day period is getting close to expiry. The AP then signs and broadcasts the last transaction it saw, allocating the final amount to itself. The refund transaction is needed to handle the case where the server disappears or halts at any point, leaving the allocated value in limbo. If this happens then once the time lock has expired the client can broadcast the refund transaction and get back all the money.&lt;br /&gt;
&lt;br /&gt;
This protocol has [https://code.google.com/p/bitcoinj/wiki/WorkingWithMicropayments been implemented in bitcoinj].&lt;br /&gt;
&lt;br /&gt;
The lock time and sequence numbers avoid an attack in which the AP provides connectivity, and then the user [[double-spending|double-spends]] the output back to themselves using the first version of TX2, thus preventing the cafe from claiming the bill. If the user does try this, the TX won&#039;t be included right away, giving the access point a window of time in which it can observe the TX broadcast, and then broadcast the last version it saw, overriding the user&#039;s attempted double-spend.&lt;br /&gt;
&lt;br /&gt;
The latter protocol that relies on transaction replacement is more flexible because it allows the value allocated to go down as well as up during the lifetime of the channel as long as the client receives signatures from the server, but for many use cases this functionality is not required. Replacement also allows for more complex configurations of channels that involve more than two parties. Elaboration on such use cases is a left as an exercise for the reader.&lt;br /&gt;
&lt;br /&gt;
==Example 8: Multi-party decentralised lotteries==&lt;br /&gt;
&lt;br /&gt;
Using some of the techniques from example 6 and some very advanced scripting, it becomes possible to build a multi-party lottery with no operator. The exact protocol used is explained in the paper [http://eprint.iacr.org/2013/784 &amp;quot;Secure multiparty computations on Bitcoin&amp;quot;]. A shorter explanation of how it works may be added to this wiki at some point in the future.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Script]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Fallback_Nodes&amp;diff=58641</id>
		<title>Fallback Nodes</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Fallback_Nodes&amp;diff=58641"/>
		<updated>2015-09-03T04:19:30Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: /* Tor nodes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of nodes which are considered reliable.&lt;br /&gt;
&lt;br /&gt;
== How to use this list ==&lt;br /&gt;
&lt;br /&gt;
=== Connect to nodes ===&lt;br /&gt;
&lt;br /&gt;
You can connect to these nodes with the &#039;&#039;-addnode=ip&#039;&#039; switch instead of the usual node harvesting process (through IRC or via the embedded nodelist). You can connect to more than one node by using &#039;&#039;-addnode=ip&#039;&#039; more than once. It is usually a good idea to connect to more than one of these nodes.&lt;br /&gt;
&lt;br /&gt;
==== Nodes without a fixed ip ====&lt;br /&gt;
&lt;br /&gt;
If the node IP is not fixed (see &amp;quot;Fixed&amp;quot; column), you will have to resolve the node&#039;s name (first column) each time the IP changes. Some nodes may have their ip change once a day, some others once a month, and some others may stay on the same IP for years. Still, as long as the IP is not fixed, there is no guarantee it will stay the same.&lt;br /&gt;
&lt;br /&gt;
In order to enable hostname lookups for the &#039;&#039;-addnode&#039;&#039; and &#039;&#039;-connect&#039;&#039; parameters, you must additionally provide the &#039;&#039;-dns&#039;&#039; parameter. Example:&lt;br /&gt;
 bitcoind -dns -addnode=bitcoin.es&lt;br /&gt;
&lt;br /&gt;
Versions prior to 0.3.22 do not support hostnames to the &#039;&#039;-addnode&#039;&#039; parameter, so you must do the resolving part for it. For example on linux:&lt;br /&gt;
 bitcoind -addnode=$(dig +short bitcoin.es)&lt;br /&gt;
&lt;br /&gt;
=== IP Transactions ===&lt;br /&gt;
&lt;br /&gt;
[[Bitcoin Core]] versions prior to 0.8.0 also could send [[IP Transactions]] to these nodes. If you included your bitcoin address in the &amp;quot;message&amp;quot; field, you might have had your coins back.&lt;br /&gt;
&lt;br /&gt;
=== Tor network ===&lt;br /&gt;
&lt;br /&gt;
To use Bitcoin-Qt over Tor hidden services, in a terminal/console enter:&lt;br /&gt;
 bitcoin-qt -proxy=127.0.0.1:9050 -onlynet=tor&lt;br /&gt;
&lt;br /&gt;
To use Bitcoin with one specific Tor node, run&lt;br /&gt;
 bitcoin-qt -proxy=127.0.0.1:9050 -connect=abcde.onion&lt;br /&gt;
, where abcde.onion needs to be substituted with one of the [[Fallback_Nodes#Tor_nodes|Tor nodes below]]. These parameters can be added to [[Running_Bitcoin#Bitcoin.conf_Configuration_File|bitcoin.conf]] to make them permanent.&lt;br /&gt;
&lt;br /&gt;
You can find detailed information on running clients and hidden services within Tor in the [https://github.com/bitcoin/bitcoin/blob/master/doc/tor.md documentation].&lt;br /&gt;
&lt;br /&gt;
== Nodes list ==&lt;br /&gt;
&lt;br /&gt;
=== IPv4 Nodes ===&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Hostname !! Owner !! IP !! Fixed !! Status !! Last Seen (GMT) !! Accepts IP transactions&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- BEGIN NODELIST --&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| node.bitcoin.xxx || www.BitCoin.xxx || 66.228.49.201 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} || 2014-08-28 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.coinprism.com || [[Coinprism]] || 137.116.225.142 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} || 2014-04-26 || Yes&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| btcnode1.evolyn.net || Evolyn || 85.214.251.25 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} || 2014-01-26 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| InductiveSoul.US || [[User:Inductivesoul|Inductive Soul]] || 67.186.224.85 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} || 2013-11-13 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| archivum.info || Ferraro Ltd.|| 88.198.58.172 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| 62.75.216.13 || exMULTI, Inc. || 62.75.216.13 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| 69.64.34.118 || exMULTI, Inc. || 69.64.34.118 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| 79.160.221.140 || K-Norway || 79.160.221.140 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| netzbasis.de || unknown3 || 81.169.129.25 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btc.turboadmin.com || osmosis || 98.143.152.14 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| fallback.bitcoin.zhoutong.com || Zhou Tong || 117.121.241.140 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| bauhaus.csail.mit.edu || imsaguy || 128.30.96.44 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| jun.dashjr.org || Luke-Jr || 173.242.112.53 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || &lt;br /&gt;
|-&lt;br /&gt;
| cheaperinbitcoins.com || Xenland/Shane || 184.154.36.82 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| django.webflows.fr || unknown2 || 188.165.213.169 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| 204.9.55.71 || toasty || 204.9.55.71 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btcnode.novit.ro || ovidiusoft - novit.ro || 93.187.142.114 || {{Table Value No}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| porgressbar.sk || progressbar hackerspace || 91.210.181.21 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| faucet.bitcoin.st || bitcoin street || 64.27.57.225 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.securepayment.cc || SecurePayment CC || 63.247.147.163 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| x.jine.se || jine || 213.112.48.166 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| www.dcscdn.com || [[User:Danw12|Danw12]] || 199.115.228.181 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| ns2.dcscdn.com || [[User:Danw12|Danw12]] || 199.115.228.182 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| coin.soul-dev.com || Soul-Dev || || || {{Fallback Nodes/Node Up}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| messier.bzfx.net || BZFX/[[User:A Meteorite|A Meteorite]] || 91.121.205.50 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| btcnode1.bitgroup.cc || BitGroup || 198.211.116.191 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btcnode2.bitgroup.cc || BitGroup || 162.243.120.138 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btcnode3.bitgroup.cc || BitGroup || 95.85.8.237 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btcnode.xiro.co || Xiro Labs || 91.121.108.61 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| murder.xf-liam.com || [[User:liamwli|Liam W]] || 162.245.217.119 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.bitdonut.co || James Hartig&lt;br /&gt;
|-&lt;br /&gt;
| coinno.de  || jaknam&lt;br /&gt;
|-&lt;br /&gt;
| 82.165.44.44 || anonymous&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin1.dassori.me || gdassori&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin2.dassori.me || gdassori&lt;br /&gt;
|-&lt;br /&gt;
| blockchainnode.meulie.net || [[User:Evert|Evert]]&lt;br /&gt;
|-&lt;br /&gt;
| fullnode.fybsg.com || Nagato&lt;br /&gt;
|-&lt;br /&gt;
| n.bitcoin-fr.io || [[User:Arthur|Arthur]] || 62.210.66.227&lt;br /&gt;
&amp;lt;!-- END NODELIST --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== IPv6 Nodes ===&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Hostname !! Owner !! IP !! Fixed !! Status !! Last Seen (GMT) !! Accepts IP transactions&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- BEGIN NODELIST --&amp;gt;&lt;br /&gt;
| InductiveSoul.US || [[User:Inductivesoul|Inductive Soul]] || 2601:7:6680:2ac:4d29:40ff:7513:fcc7 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} || 11-13-2013 (MDY) || Yes&lt;br /&gt;
|-&lt;br /&gt;
| caffeinator.net || [[User:Atrophy|Atrophy]] ||  ||  || {{Fallback Nodes/Node Up}} || 2013-05-10 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2001:470:8:2e1::40 || ? || 2001:470:8:2e1::40 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| x.jine.se || jine || 213.112.52.246 || {{Table Value No}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| messier.bzfx.net || BZFX/[[User:A Meteorite|A Meteorite]] || 2001:41d0:1:d632::1 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} || ||&lt;br /&gt;
|-&lt;br /&gt;
| murder.xf-liam.com || [[User:liamwli|Liam W]] || 2602:ffc5::ffc5:56b6 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  ||  No&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.bitdonut.co || James Hartig&lt;br /&gt;
|-&lt;br /&gt;
| n.bitcoin-fr.io || [[User:Arthur|Arthur]] || 2001:bc8:c087:2001::1&lt;br /&gt;
&amp;lt;!-- END NODELIST --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Tor nodes ===&lt;br /&gt;
&lt;br /&gt;
This entire list was last checked on 2015-02-22.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Hostname !! Owner !! Status !! Last Seen (GMT) !! Accepts IP transactions&lt;br /&gt;
|-&lt;br /&gt;
| nkf5e6b7pl4jfd4a.onion || BlueMatt || Up || 2015-09-02 || No&lt;br /&gt;
|-&lt;br /&gt;
| hhiv5pnxenvbf4am.onion || ? || Up || 2015-03-17 || No&lt;br /&gt;
|-&lt;br /&gt;
| bpdlwholl7rnkrkw.onion || kenansulayman || Up || 2015-03-17 || ?&lt;br /&gt;
|-&lt;br /&gt;
| bk5ejfe56xakvtkk.onion || dserrano5 || Up || 2015-03-17 || No&lt;br /&gt;
|-&lt;br /&gt;
| wxvp2d4rspn7tqyu.onion || lunokhod || Up || 2015-08-17 || No&lt;br /&gt;
|-&lt;br /&gt;
| vso3r6cmjoomhhgg.onion || echelon || Down || 2015-03-17 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| e3tn727fywnioxrc.onion || Zedd || Down || 2015-03-17 || No&lt;br /&gt;
|-&lt;br /&gt;
| pqosrh6wfaucet32.onion || bitcoin street || Down || 2015-03-17 || No&lt;br /&gt;
|-&lt;br /&gt;
| r4de4zf4lyniu4mx.onion:8444 || ? || Down || 2015-01-20 || ?&lt;br /&gt;
|-&lt;br /&gt;
| zy3kdqowmrb7xm7h.onion || Tril || Down || 2015-01-20 || No&lt;br /&gt;
|-&lt;br /&gt;
| smith4mfhwcq7x3b.onion || Smithtrader || Down || 2014-11-22 || ?&lt;br /&gt;
|-&lt;br /&gt;
| i2r5tbaizb75h26f.onion || TorDude || Down || 2014-07-24 || No&lt;br /&gt;
|-&lt;br /&gt;
| btcnet3utgzyz2bf.onion || anonymous || Down || 2014-07-24 || Yes &lt;br /&gt;
|-&lt;br /&gt;
| kjy2eqzk4zwi5zd3.onion || sipa || Down || 2014-07-24 || No&lt;br /&gt;
|-&lt;br /&gt;
| tsyvzsqwa2kkf6b2.onion || TorDude || Down || 2014-05-19 || No&lt;br /&gt;
|-&lt;br /&gt;
| igpdszqrbqjhak5z.onion || anonymous || Down || 2014-05-15 || ?&lt;br /&gt;
|-&lt;br /&gt;
| evolynhit7shzeet.onion || Evolyn || Down || 2014-05-15 || Yes &lt;br /&gt;
|-&lt;br /&gt;
| z55v4ostefnwfy32.onion || Tril || Down || 2014-04-09 || No&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin2u5jnjzzz.onion || anonymous || Down || 2014-01-27 || Yes &lt;br /&gt;
|-&lt;br /&gt;
| btc4ulpftizx5b72.onion || TorNode || Down || 2013-05-10 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| yyl3ipdmyjkfypmx.onion || redemerald || Down || 2013-05-10 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| siqdznszjf4e6v5j.onion || Tuxavant || Down || 2013-05-10 || ?&lt;br /&gt;
|-&lt;br /&gt;
| 7hxvg2lvr2ashzli.onion || Tuxavant || Down || 2013-05-10 || ?&lt;br /&gt;
|-&lt;br /&gt;
| x3danbeag2kyx644.onion || redemerald || Down || 2013-01-04 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| 6hgmaxwellgpv2oe.onion || Gmaxwell || Down || 2012-07-01 || No&lt;br /&gt;
|-&lt;br /&gt;
| bitcoinprwwpuinm.onion:8333 || ? || Down || 2012-06-26 || ?&lt;br /&gt;
|-&lt;br /&gt;
| mutqcuh7hwxmhx3k.onion || Xirafe || Down || 2012-06-23 || ?&lt;br /&gt;
|-&lt;br /&gt;
| sjdntqu5roj4q6lo.onion || torservers || Down || 2012-05-19 || ?&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin2bkgm3fke.onion || ? || Down || 2012-05-19 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| ceeji4qpfs3ms3zc.onion || creepa&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Adding a node ==&lt;br /&gt;
&lt;br /&gt;
Before adding yourself as a fallback node, you should be sure your node will stay online for a long time. If a node is offline for more than 24 hours it will be removed from the list.&lt;br /&gt;
&lt;br /&gt;
To add a node in this list, you just need the ip/hostname and your name, the other fields will be filled automatically. Insert the following lines before the &amp;lt;tt&amp;gt;END NODELIST&amp;lt;/tt&amp;gt; line:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;|-&lt;br /&gt;
| ip || your name&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Network|Bitcoin Network]]&lt;br /&gt;
* [http://nodes.bitcoin.st Fallback Nodes] List of longest running Bitcoin Nodes listed by Country.&lt;br /&gt;
* [https://getaddr.bitnodes.io/ Bitnodes project]&lt;br /&gt;
* [https://blockchain.info/connected-nodes Recently connected nodes at blockchain.info]&lt;br /&gt;
&lt;br /&gt;
{{Bitcoin Core documentation}}&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Protocol_documentation&amp;diff=57374</id>
		<title>Protocol documentation</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Protocol_documentation&amp;diff=57374"/>
		<updated>2015-07-09T04:46:49Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: version is signed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page &#039;&#039;describes&#039;&#039; the behavior of the [[Original Bitcoin client|reference client]]. The Bitcoin protocol is specified by the behavior of the reference client, not by this page. In particular, while this page is quite complete in describing the network protocol, it does not attempt to list all of the rules for block or transaction validity.&lt;br /&gt;
&lt;br /&gt;
Type names used in this documentation are from the C99 standard.&lt;br /&gt;
&lt;br /&gt;
For protocol used in mining, see [[getblocktemplate]].&lt;br /&gt;
&lt;br /&gt;
==Common standards==&lt;br /&gt;
&lt;br /&gt;
=== Hashes ===&lt;br /&gt;
&lt;br /&gt;
Usually, when a hash is computed within bitcoin, it is computed twice. Most of the time [http://en.wikipedia.org/wiki/SHA-2 SHA-256] hashes are used, however [http://en.wikipedia.org/wiki/RIPEMD RIPEMD-160] is also used when a shorter hash is desirable (for example when creating a bitcoin address).&lt;br /&gt;
&lt;br /&gt;
Example of double-SHA-256 encoding of string &amp;quot;hello&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 hello&lt;br /&gt;
 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 (first round of sha-256)&lt;br /&gt;
 9595c9df90075148eb06860365df33584b75bff782a510c6cd4883a419833d50 (second round of sha-256)&lt;br /&gt;
&lt;br /&gt;
For bitcoin addresses (RIPEMD-160) this would give:&lt;br /&gt;
&lt;br /&gt;
 hello&lt;br /&gt;
 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 (first round is sha-256)&lt;br /&gt;
 b6a9c8c230722b7c748331a8b450f05566dc7d0f (with ripemd-160)&lt;br /&gt;
&lt;br /&gt;
=== Merkle Trees ===&lt;br /&gt;
&lt;br /&gt;
Merkle trees are binary trees of hashes. Merkle trees in bitcoin use a &#039;&#039;&#039;double&#039;&#039;&#039; SHA-256, the SHA-256 hash of the SHA-256 hash of something.&lt;br /&gt;
&lt;br /&gt;
If, when forming a row in the tree (other than the root of the tree), it would have an odd number of elements, the final double-hash is duplicated to ensure that the row has an even number of hashes.&lt;br /&gt;
&lt;br /&gt;
First form the bottom row of the tree with the ordered double-SHA-256 hashes of the byte streams of the transactions in the block.&lt;br /&gt;
&lt;br /&gt;
Then the row above it consists of half that number of hashes.  Each entry is the double-SHA-256 of the 64-byte concatenation of the corresponding two hashes below it in the tree.&lt;br /&gt;
&lt;br /&gt;
This procedure repeats recursively until we reach a row consisting of just a single double-hash.  This is the &#039;&#039;&#039;Merkle root&#039;&#039;&#039; of the tree.&lt;br /&gt;
&lt;br /&gt;
For example, imagine a block with three transactions &#039;&#039;a&#039;&#039;, &#039;&#039;b&#039;&#039; and &#039;&#039;c&#039;&#039;.   The Merkle tree is: &lt;br /&gt;
&lt;br /&gt;
 d1 = dhash(a)&lt;br /&gt;
 d2 = dhash(b)&lt;br /&gt;
 d3 = dhash(c)&lt;br /&gt;
 d4 = dhash(c)            # a, b, c are 3. that&#039;s an odd number, so we take the c twice&lt;br /&gt;
 &lt;br /&gt;
 d5 = dhash(d1 concat d2)&lt;br /&gt;
 d6 = dhash(d3 concat d4)&lt;br /&gt;
 &lt;br /&gt;
 d7 = dhash(d5 concat d6)&lt;br /&gt;
&lt;br /&gt;
where&lt;br /&gt;
 &lt;br /&gt;
 dhash(a) = sha256(sha256(a))&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;d7&#039;&#039; is the Merkle root of the 3 transactions in this block.&lt;br /&gt;
&lt;br /&gt;
Note: Hashes in Merkle Tree displayed in the [[Block Explorer]] are of little-endian notation. For some implementations and [http://www.fileformat.info/tool/hash.htm calculations], the bits need to be reversed before they are hashed, and again after the hashing operation.&lt;br /&gt;
&lt;br /&gt;
=== Signatures ===&lt;br /&gt;
&lt;br /&gt;
Bitcoin uses [http://en.wikipedia.org/wiki/Elliptic_curve_cryptography Elliptic Curve] [http://en.wikipedia.org/wiki/Digital_Signature_Algorithm Digital Signature Algorithm] ([http://en.wikipedia.org/wiki/Elliptic_Curve_DSA ECDSA]) to sign transactions. &lt;br /&gt;
&lt;br /&gt;
For [[ECDSA]] the secp256k1 curve from http://www.secg.org/collateral/sec2_final.pdf is used.&lt;br /&gt;
&lt;br /&gt;
Public keys (in scripts) are given as 04 &amp;lt;x&amp;gt; &amp;lt;y&amp;gt; where &#039;&#039;x&#039;&#039; and &#039;&#039;y&#039;&#039; are 32 byte big-endian integers representing the coordinates of a point on the curve or in compressed form given as &amp;lt;sign&amp;gt; &amp;lt;x&amp;gt; where &amp;lt;sign&amp;gt; is 0x02 if &#039;&#039;y&#039;&#039; is even and 0x03 if &#039;&#039;y&#039;&#039; is odd.&lt;br /&gt;
&lt;br /&gt;
Signatures use [http://en.wikipedia.org/wiki/Distinguished_Encoding_Rules DER encoding] to pack the &#039;&#039;r&#039;&#039; and &#039;&#039;s&#039;&#039; components into a single byte stream (this is also what OpenSSL produces by default).&lt;br /&gt;
&lt;br /&gt;
=== Transaction Verification ===&lt;br /&gt;
Transactions are cryptographically signed records that reassign ownership of Bitcoins to new addresses.  Transactions have &#039;&#039;inputs&#039;&#039; - records which reference the funds from other previous transactions - and &#039;&#039;outputs&#039;&#039; - records which determine the new owner of the transferred Bitcoins, and which will be referenced as inputs in future transactions as those funds are respent.&lt;br /&gt;
&lt;br /&gt;
Each &#039;&#039;input&#039;&#039; must have a cryptographic digital signature that unlocks the funds from the prior transaction.  Only the person possessing the appropriate [[private key]] is able to create a satisfactory signature; this in effect ensures that funds can only be spent by their owners.&lt;br /&gt;
&lt;br /&gt;
Each &#039;&#039;output&#039;&#039; determines which Bitcoin address (or other criteria, see [[Script]]) is the recipient of the funds.&lt;br /&gt;
&lt;br /&gt;
In a transaction, the sum of all inputs must be equal to or greater than the sum of all outputs.  If the inputs exceed the outputs, the difference is considered a [[transaction fee]], and is redeemable by whoever first includes the transaction into the block chain.&lt;br /&gt;
&lt;br /&gt;
A special kind of transaction, called a [[coinbase transaction]], has no inputs.  It is created by [[miners]], and there is one coinbase transaction per block.  Because each block comes with a reward of newly created Bitcoins (e.g. 50 BTC for the first 210,000 blocks), the first transaction of a block is, with few exceptions, the transaction that grants those coins to their recipient (the miner).  In addition to the newly created Bitcoins, the coinbase transaction is also used for assigning the recipient of any transaction fees that were paid within the other transactions being included in the same block.  The coinbase transaction can assign the entire reward to a single Bitcoin address, or split it in portions among multiple addresses, just like any other transaction.  Coinbase transactions always contain outputs totalling the sum of the block reward plus all transaction fees collected from the other transactions in the same block.&lt;br /&gt;
&lt;br /&gt;
The [[coinbase transaction]] in block zero cannot be spent. This is due to a quirk of the reference client implementation that would open the potential for a block chain fork if some nodes accepted the spend and others did not&amp;lt;ref&amp;gt;[http://bitcointalk.org/index.php?topic=119645.msg1288552#msg1288552 Block 0 Network Fork]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Most Bitcoin outputs encumber the newly transferred coins with a single ECDSA private key.  The actual record saved with inputs and outputs isn&#039;t necessarily a key, but a &#039;&#039;script&#039;&#039;.  Bitcoin uses an interpreted scripting system to determine whether an output&#039;s criteria have been satisfied, with which more complex operations are possible, such as outputs that require two ECDSA signatures, or two-of-three-signature schemes.  An output that references a single Bitcoin address is a &#039;&#039;typical&#039;&#039; output; an output actually contains this information in the form of a script that requires a single ECDSA signature (see [[OP_CHECKSIG]]).  The output script specifies what must be provided to unlock the funds later, and when the time comes in the future to spend the transaction in another input, that input must provide all of the thing(s) that satisfy the requirements defined by the original output script.&lt;br /&gt;
&lt;br /&gt;
=== Addresses ===&lt;br /&gt;
&lt;br /&gt;
A bitcoin address is in fact the hash of a ECDSA public key, computed this way:&lt;br /&gt;
&lt;br /&gt;
 Version = 1 byte of 0 (zero); on the test network, this is 1 byte of 111&lt;br /&gt;
 Key hash = Version concatenated with RIPEMD-160(SHA-256(public key))&lt;br /&gt;
 Checksum = 1st 4 bytes of SHA-256(SHA-256(Key hash))&lt;br /&gt;
 Bitcoin Address = Base58Encode(Key hash concatenated with Checksum)&lt;br /&gt;
&lt;br /&gt;
The Base58 encoding used is home made, and has some differences. Especially, leading zeroes are kept as single zeroes when conversion happens.&lt;br /&gt;
&lt;br /&gt;
== Common structures ==&lt;br /&gt;
&lt;br /&gt;
Almost all integers are encoded in little endian. Only IP or port number are encoded big endian.&lt;br /&gt;
&lt;br /&gt;
=== Message structure ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || magic || uint32_t || Magic value indicating message origin network, and used to seek to next message when stream state is unknown&lt;br /&gt;
|-&lt;br /&gt;
| 12 || command || char[12] || ASCII string identifying the packet content, NULL padded (non-NULL padding results in packet rejected)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || length || uint32_t || Length of payload in number of bytes&lt;br /&gt;
|-&lt;br /&gt;
| 4 || checksum || uint32_t || First 4 bytes of sha256(sha256(payload))&lt;br /&gt;
|-&lt;br /&gt;
| ? || payload || uchar[] || The actual data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Known magic values:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Network !! Magic value !! Sent over wire as&lt;br /&gt;
|-&lt;br /&gt;
| main || 0xD9B4BEF9 || F9 BE B4 D9&lt;br /&gt;
|-&lt;br /&gt;
| testnet || 0xDAB5BFFA || FA BF B5 DA&lt;br /&gt;
|-&lt;br /&gt;
| testnet3 || 0x0709110B || 0B 11 09 07&lt;br /&gt;
|-&lt;br /&gt;
| namecoin || 0xFEB4BEF9 || F9 BE B4 FE&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Variable length integer ===&lt;br /&gt;
&lt;br /&gt;
Integer can be encoded depending on the represented value to save space.&lt;br /&gt;
Variable length integers always precede an array/vector of a type of data that may vary in length.&lt;br /&gt;
Longer numbers are encoded in little endian.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value !! Storage length !! Format&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt; 0xfd || 1 || uint8_t&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;= 0xffff || 3 || 0xfd followed by the length as uint16_t&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;= 0xffffffff || 5 || 0xfe followed by the length as uint32_t&lt;br /&gt;
|-&lt;br /&gt;
| - || 9 || 0xff followed by the length as uint64_t&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you&#039;re reading the Satoshi client code (BitcoinQT) it refers to this as a &amp;quot;CompactSize&amp;quot;. Modern BitcoinQT has also CVarInt class which implements even more compact integer for the purpose of local storage (which is incompatible with &amp;quot;CompactSize&amp;quot; described here). CVarInt is not a part of the protocol.&lt;br /&gt;
&lt;br /&gt;
=== Variable length string ===&lt;br /&gt;
&lt;br /&gt;
Variable length string can be stored using a variable length integer followed by the string itself.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || length || [[Protocol_documentation#Variable_length_integer|var_int]] || Length of the string&lt;br /&gt;
|-&lt;br /&gt;
| ? || string || char[] || The string itself (can be empty)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Network address ===&lt;br /&gt;
&lt;br /&gt;
When a network address is needed somewhere, this structure is used. Network addresses are not prefixed with a timestamp in the version message.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || time || uint32 || the Time (version &amp;gt;= 31402). &#039;&#039;&#039;Not present in version message.&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 8 || services || uint64_t || same service(s) listed in [[#version|version]]&lt;br /&gt;
|-&lt;br /&gt;
| 16 || IPv6/4 || char[16] || IPv6 address. Network byte order. The original client only supported IPv4 and only read the last 4 bytes to get the IPv4 address. However, the IPv4 address is written into the message as a 16 byte [http://en.wikipedia.org/wiki/IPv6#IPv4-mapped_IPv6_addresses IPv4-mapped IPv6 address]&lt;br /&gt;
(12 bytes &#039;&#039;00 00 00 00  00 00 00 00  00 00 FF FF&#039;&#039;, followed by the 4 bytes of the IPv4 address).&lt;br /&gt;
|-&lt;br /&gt;
| 2 || port || uint16_t || port number, network byte order&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hexdump example of Network address structure&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0000   01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................&lt;br /&gt;
0010   00 00 FF FF 0A 00 00 01  20 8D                    ........ .&lt;br /&gt;
&lt;br /&gt;
Network address:&lt;br /&gt;
 01 00 00 00 00 00 00 00                         - 1 (NODE_NETWORK: see services listed under version command)&lt;br /&gt;
 00 00 00 00 00 00 00 00 00 00 FF FF 0A 00 00 01 - IPv6: ::ffff:a00:1 or IPv4: 10.0.0.1&lt;br /&gt;
 20 8D                                           - Port 8333&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Inventory Vectors ===&lt;br /&gt;
&lt;br /&gt;
Inventory vectors are used for notifying other nodes about objects they have or data which is being requested.&lt;br /&gt;
&lt;br /&gt;
Inventory vectors consist of the following data format:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || type || uint32_t || Identifies the object type linked to this inventory&lt;br /&gt;
|-&lt;br /&gt;
| 32 || hash || char[32] || Hash of the object&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The object type is currently defined as one of the following possibilities:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ERROR || Any data of with this number may be ignored&lt;br /&gt;
|-&lt;br /&gt;
| 1 || MSG_TX || Hash is related to a transaction&lt;br /&gt;
|-&lt;br /&gt;
| 2 || MSG_BLOCK || Hash is related to a data block&lt;br /&gt;
|-&lt;br /&gt;
| 3 || MSG_FILTERED_BLOCK || Hash of a block header; identical to MSG_BLOCK.  When used in a getdata message, this indicates the reply should be a merkleblock message rather than a block message; this only works if a bloom filter has been set.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Other Data Type values are considered reserved for future implementations.&lt;br /&gt;
&lt;br /&gt;
=== Block Headers ===&lt;br /&gt;
&lt;br /&gt;
Block headers are sent in a headers packet in response to a getheaders message.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || int32_t || Block version information (note, this is signed)&lt;br /&gt;
|-&lt;br /&gt;
| 32 || prev_block || char[32] || The hash value of the previous block this particular block references&lt;br /&gt;
|-&lt;br /&gt;
| 32 || merkle_root || char[32] || The reference to a Merkle tree collection which is a hash of all transactions related to this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || timestamp || uint32_t || A timestamp recording when this block was created (Will overflow in 2106&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Unix_time#Notable.C2.A0events.C2.A0in.C2.A0Unix.C2.A0time&amp;lt;/ref&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bits || uint32_t || The calculated difficulty target being used for this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nonce || uint32_t || The nonce used to generate this block… to allow variations of the header and compute different hashes&lt;br /&gt;
|-&lt;br /&gt;
| 1 || txn_count || [[Protocol_documentation#Variable_length_integer|var_int]] || Number of transaction entries, this value is always 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Message types ==&lt;br /&gt;
&lt;br /&gt;
=== version ===&lt;br /&gt;
&lt;br /&gt;
When a node creates an outgoing connection, it will immediately [[Version Handshake|advertise]] its version. The remote node will respond with its version. No further communication is possible until both peers have exchanged their version.&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || int32_t || Identifies protocol version being used by the node&lt;br /&gt;
|-&lt;br /&gt;
| 8 || services || uint64_t || bitfield of features to be enabled for this connection&lt;br /&gt;
|-&lt;br /&gt;
| 8 || timestamp || int64_t || standard UNIX timestamp in seconds&lt;br /&gt;
|-&lt;br /&gt;
| 26 || addr_recv || [[#Network address|net_addr]] || The network address of the node receiving this message&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;| version &amp;gt;= 106&lt;br /&gt;
|-&lt;br /&gt;
| 26 || addr_from || [[#Network address|net_addr]] || The network address of the node emitting this message&lt;br /&gt;
|-&lt;br /&gt;
| 8 || nonce || uint64_t || Node random nonce, randomly generated every time a version packet is sent. This nonce is used to detect connections to self.&lt;br /&gt;
|-&lt;br /&gt;
| ? || user_agent || [[#Variable length string|var_str]] || [https://github.com/bitcoin/bips/blob/master/bip-0014.mediawiki User Agent] (0x00 if string is 0 bytes long)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || start_height || int32_t || The last block received by the emitting node&lt;br /&gt;
|-&lt;br /&gt;
| 1 || relay || bool || Whether the remote peer should announce relayed transactions or not, see [https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki BIP 0037], since version &amp;gt;= 70001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;verack&amp;quot; packet shall be sent if the version packet was accepted.&lt;br /&gt;
&lt;br /&gt;
The following services are currently assigned:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || NODE_NETWORK || This node can be asked for full blocks instead of just headers.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hexdump example of version message (OBSOLETE EXAMPLE: This example lacks a checksum and user-agent):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0000   F9 BE B4 D9 76 65 72 73  69 6F 6E 00 00 00 00 00   ....version.....&lt;br /&gt;
0010   55 00 00 00 9C 7C 00 00  01 00 00 00 00 00 00 00   U....|..........&lt;br /&gt;
0020   E6 15 10 4D 00 00 00 00  01 00 00 00 00 00 00 00   ...M............&lt;br /&gt;
0030   00 00 00 00 00 00 00 00  00 00 FF FF 0A 00 00 01   ................&lt;br /&gt;
0040   20 8D 01 00 00 00 00 00  00 00 00 00 00 00 00 00   ................&lt;br /&gt;
0050   00 00 00 00 FF FF 0A 00  00 02 20 8D DD 9D 20 2C   .......... ... ,&lt;br /&gt;
0060   3A B4 57 13 00 55 81 01  00                        :.W..U...&lt;br /&gt;
&lt;br /&gt;
Message header:&lt;br /&gt;
 F9 BE B4 D9                                                                   - Main network magic bytes&lt;br /&gt;
 76 65 72 73 69 6F 6E 00 00 00 00 00                                           - &amp;quot;version&amp;quot; command&lt;br /&gt;
 55 00 00 00                                                                   - Payload is 85 bytes long&lt;br /&gt;
                                                                               - No checksum in version message until 20 February 2012. See https://bitcointalk.org/index.php?topic=55852.0&lt;br /&gt;
Version message:&lt;br /&gt;
 9C 7C 00 00                                                                   - 31900 (version 0.3.19)&lt;br /&gt;
 01 00 00 00 00 00 00 00                                                       - 1 (NODE_NETWORK services)&lt;br /&gt;
 E6 15 10 4D 00 00 00 00                                                       - Mon Dec 20 21:50:14 EST 2010&lt;br /&gt;
 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF 0A 00 00 01 20 8D - Recipient address info - see Network Address&lt;br /&gt;
 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF 0A 00 00 02 20 8D - Sender address info - see Network Address&lt;br /&gt;
 DD 9D 20 2C 3A B4 57 13                                                       - Node random unique ID&lt;br /&gt;
 00                                                                            - &amp;quot;&amp;quot; sub-version string (string is 0 bytes long)&lt;br /&gt;
 55 81 01 00                                                                   - Last block sending node has is block #98645&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And here&#039;s a modern (60002) protocol version client advertising itself to a local peer...&lt;br /&gt;
&lt;br /&gt;
Newer protocol includes the checksum now, this is from a mainline (satoshi) client during &lt;br /&gt;
an outgoing connection to another local client, notice that it does not fill out the &lt;br /&gt;
address information at all when the source or destination is &amp;quot;unroutable&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0000   f9 be b4 d9 76 65 72 73 69 6f 6e 00 00 00 00 00  ....version.....&lt;br /&gt;
0010   64 00 00 00 35 8d 49 32 62 ea 00 00 01 00 00 00  d...5.I2b.......&lt;br /&gt;
0020   00 00 00 00 11 b2 d0 50 00 00 00 00 01 00 00 00  .......P........&lt;br /&gt;
0030   00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff  ................&lt;br /&gt;
0040   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................&lt;br /&gt;
0050   00 00 00 00 00 00 00 00 ff ff 00 00 00 00 00 00  ................&lt;br /&gt;
0060   3b 2e b3 5d 8c e6 17 65 0f 2f 53 61 74 6f 73 68  ;..]...e./Satosh&lt;br /&gt;
0070   69 3a 30 2e 37 2e 32 2f c0 3e 03 00              i:0.7.2/.&amp;gt;..&lt;br /&gt;
&lt;br /&gt;
Message Header:&lt;br /&gt;
 F9 BE B4 D9                                                                   - Main network magic bytes&lt;br /&gt;
 76 65 72 73 69 6F 6E 00 00 00 00 00                                           - &amp;quot;version&amp;quot; command&lt;br /&gt;
 64 00 00 00                                                                   - Payload is 100 bytes long&lt;br /&gt;
 3B 64 8D 5A                                                                   - payload checksum&lt;br /&gt;
&lt;br /&gt;
Version message:&lt;br /&gt;
 62 EA 00 00                                                                   - 60002 (protocol version 60002)&lt;br /&gt;
 01 00 00 00 00 00 00 00                                                       - 1 (NODE_NETWORK services)&lt;br /&gt;
 11 B2 D0 50 00 00 00 00                                                       - Tue Dec 18 10:12:33 PST 2012&lt;br /&gt;
 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00 00 00 00 00 - Recipient address info - see Network Address&lt;br /&gt;
 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 00 00 00 00 00 - Sender address info - see Network Address&lt;br /&gt;
 3B 2E B3 5D 8C E6 17 65                                                       - Node ID&lt;br /&gt;
 0F 2F 53 61 74 6F 73 68 69 3A 30 2E 37 2E 32 2F                               - &amp;quot;/Satoshi:0.7.2/&amp;quot; sub-version string (string is 15 bytes long)&lt;br /&gt;
 C0 3E 03 00                                                                   - Last block sending node has is block #212672&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== verack ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;verack&#039;&#039; message is sent in reply to &#039;&#039;[[#version|version]]&#039;&#039;.  This message consists of only a [[#Message structure|message header]] with the command string &amp;quot;verack&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hexdump of the verack message:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0000   F9 BE B4 D9 76 65 72 61  63 6B 00 00 00 00 00 00   ....verack......&lt;br /&gt;
0010   00 00 00 00 5D F6 E0 E2                            ........&lt;br /&gt;
&lt;br /&gt;
Message header:&lt;br /&gt;
 F9 BE B4 D9                          - Main network magic bytes&lt;br /&gt;
 76 65 72 61  63 6B 00 00 00 00 00 00 - &amp;quot;verack&amp;quot; command&lt;br /&gt;
 00 00 00 00                          - Payload is 0 bytes long&lt;br /&gt;
 5D F6 E0 E2                          - Checksum&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== addr ===&lt;br /&gt;
&lt;br /&gt;
Provide information on known nodes of the network. Non-advertised nodes should be forgotten after typically 3 hours&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || count || [[Protocol_documentation#Variable_length_integer|var_int]] || Number of address entries (max: 1000)&lt;br /&gt;
|-&lt;br /&gt;
| 30x? || addr_list || (uint32_t + [[#Network address|net_addr]])[] || Address of other nodes on the network. version &amp;lt; 209 will only read the first one. The uint32_t is a timestamp (see note below).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Starting version 31402, addresses are prefixed with a timestamp. If no timestamp is present, the addresses should not be relayed to other peers, unless it is indeed confirmed they are up.&lt;br /&gt;
&lt;br /&gt;
Hexdump example of &#039;&#039;addr&#039;&#039; message:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0000   F9 BE B4 D9 61 64 64 72  00 00 00 00 00 00 00 00   ....addr........&lt;br /&gt;
0010   1F 00 00 00 ED 52 39 9B  01 E2 15 10 4D 01 00 00   .....R9.....M...&lt;br /&gt;
0020   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 FF   ................&lt;br /&gt;
0030   FF 0A 00 00 01 20 8D                               ..... .&lt;br /&gt;
&lt;br /&gt;
Message Header:&lt;br /&gt;
 F9 BE B4 D9                                     - Main network magic bytes&lt;br /&gt;
 61 64 64 72  00 00 00 00 00 00 00 00            - &amp;quot;addr&amp;quot;&lt;br /&gt;
 1F 00 00 00                                     - payload is 31 bytes long&lt;br /&gt;
 ED 52 39 9B                                     - checksum of payload&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
 01                                              - 1 address in this message&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
 E2 15 10 4D                                     - Mon Dec 20 21:50:10 EST 2010 (only when version is &amp;gt;= 31402)&lt;br /&gt;
 01 00 00 00 00 00 00 00                         - 1 (NODE_NETWORK service - see version message)&lt;br /&gt;
 00 00 00 00 00 00 00 00 00 00 FF FF 0A 00 00 01 - IPv4: 10.0.0.1, IPv6: ::ffff:10.0.0.1 (IPv4-mapped IPv6 address)&lt;br /&gt;
 20 8D                                           - port 8333&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== inv ===&lt;br /&gt;
&lt;br /&gt;
Allows a node to advertise its knowledge of one or more objects. It can be received unsolicited, or in reply to &#039;&#039;getblocks&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Payload (maximum 50,000 entries, which is just over 1.8 megabytes):&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || count || [[Protocol_documentation#Variable_length_integer|var_int]] || Number of inventory entries&lt;br /&gt;
|-&lt;br /&gt;
| 36x? || inventory || [[Protocol specification#Inventory Vectors|inv_vect]][] || Inventory vectors&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== getdata ===&lt;br /&gt;
&lt;br /&gt;
getdata is used in response to inv, to retrieve the content of a specific object, and is usually sent after receiving an &#039;&#039;inv&#039;&#039; packet, after filtering known elements. It can be used to retrieve transactions, but only if they are in the memory pool or relay set - arbitrary access to transactions in the chain is not allowed to avoid having clients start to depend on nodes having full transaction indexes (which modern nodes do not).&lt;br /&gt;
&lt;br /&gt;
Payload (maximum 50,000 entries, which is just over 1.8 megabytes):&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || count || [[Protocol_documentation#Variable_length_integer|var_int]] || Number of inventory entries&lt;br /&gt;
|-&lt;br /&gt;
| 36x? || inventory || [[Protocol specification#Inventory Vectors|inv_vect]][] || Inventory vectors&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== notfound ===&lt;br /&gt;
&lt;br /&gt;
notfound is a response to a getdata, sent if any requested data items could not be relayed, for example, because the requested transaction was not in the memory pool or relay set.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || count || [[Protocol_documentation#Variable_length_integer|var_int]] || Number of inventory entries&lt;br /&gt;
|-&lt;br /&gt;
| 36x? || inventory || [[Protocol specification#Inventory Vectors|inv_vect]][] || Inventory vectors&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== getblocks ===&lt;br /&gt;
&lt;br /&gt;
Return an &#039;&#039;inv&#039;&#039; packet containing the list of blocks starting right after the last known hash in the block locator object, up to hash_stop or 500 blocks, whichever comes first. &lt;br /&gt;
&lt;br /&gt;
The locator hashes are processed by a node in the order as they appear in the message. If a block hash is found in the node&#039;s main chain, the list of its children is returned back via the &#039;&#039;inv&#039;&#039; message and the remaining locators are ignored, no matter if the requested limit was reached, or not.&lt;br /&gt;
&lt;br /&gt;
To receive the next blocks hashes, one needs to issue getblocks again with a new block locator object. Keep in mind that some clients may provide blocks which are invalid if the block locator object contains a hash on the invalid branch.&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || uint32_t || the protocol version&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || hash count || [[Protocol_documentation#Variable_length_integer|var_int]] || number of block locator hash entries&lt;br /&gt;
|-&lt;br /&gt;
| 32+ || block locator hashes || char[32] || block locator object; newest back to genesis block (dense to start, but then sparse)&lt;br /&gt;
|-&lt;br /&gt;
| 32 || hash_stop || char[32] || hash of the last desired block; set to zero to get as many blocks as possible (500)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To create the block locator hashes, keep pushing hashes until you go back to the genesis block. After pushing 10 hashes back, the step backwards doubles every loop:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// From libbitcoin which is under AGPL&lt;br /&gt;
std::vector&amp;lt;size_t&amp;gt; block_locator_indices(int top_depth)&lt;br /&gt;
{&lt;br /&gt;
    // Start at max_depth&lt;br /&gt;
    std::vector&amp;lt;size_t&amp;gt; indices;&lt;br /&gt;
    // Push last 10 indices first&lt;br /&gt;
    size_t step = 1, start = 0;&lt;br /&gt;
    for (int i = top_depth; i &amp;gt; 0; i -= step, ++start)&lt;br /&gt;
    {&lt;br /&gt;
        if (start &amp;gt;= 10)&lt;br /&gt;
            step *= 2;&lt;br /&gt;
        indices.push_back(i);&lt;br /&gt;
    }&lt;br /&gt;
    indices.push_back(0);&lt;br /&gt;
    return indices;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that it is allowed to send in fewer known hashes down to a minimum of just one hash. However, the purpose of the block locator object is to detect a wrong branch in the caller&#039;s main chain. If the peer detects that you are off the main chain, it will send in block hashes which are earlier than your last known block. So if you just send in your last known hash and it is off the main chain, the peer starts over at block #1.&lt;br /&gt;
&lt;br /&gt;
=== getheaders ===&lt;br /&gt;
&lt;br /&gt;
Return a &#039;&#039;headers&#039;&#039; packet containing the headers of blocks starting right after the last known hash in the block locator object, up to hash_stop or 2000 blocks, whichever comes first. To receive the next block headers, one needs to issue getheaders again with a new block locator object. The &#039;&#039;getheaders&#039;&#039; command is used by thin clients to quickly download the block chain where the contents of the transactions would be irrelevant (because they are not ours). Keep in mind that some clients may provide headers of blocks which are invalid if the block locator object contains a hash on the invalid branch.&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || uint32_t || the protocol version&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || hash count || [[Protocol_documentation#Variable_length_integer|var_int]] || number of block locator hash entries&lt;br /&gt;
|-&lt;br /&gt;
| 32+ || block locator hashes || char[32] || block locator object; newest back to genesis block (dense to start, but then sparse)&lt;br /&gt;
|-&lt;br /&gt;
| 32 || hash_stop || char[32] || hash of the last desired block header; set to zero to get as many blocks as possible (2000)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the block locator object in this packet, the same rules apply as for the [[Protocol_documentation#getblocks|getblocks]] packet.&lt;br /&gt;
&lt;br /&gt;
=== tx ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;tx&#039;&#039; describes a bitcoin transaction, in reply to &#039;&#039;[[#getdata|getdata]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || uint32_t || Transaction data format version&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || tx_in count || [[Protocol_documentation#Variable_length_integer|var_int]] || Number of Transaction inputs&lt;br /&gt;
|-&lt;br /&gt;
| 41+ || tx_in || tx_in[] || A list of 1 or more transaction inputs or sources for coins&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || tx_out count || [[Protocol_documentation#Variable_length_integer|var_int]] || Number of Transaction outputs&lt;br /&gt;
|-&lt;br /&gt;
| 9+ || tx_out || tx_out[] || A list of 1 or more transaction outputs or destinations for coins&lt;br /&gt;
|-&lt;br /&gt;
| 4 || lock_time || uint32_t || The block number or timestamp at which this transaction is locked:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Not locked&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt; 500000000  || Block number at which this transaction is locked&lt;br /&gt;
|-&lt;br /&gt;
| &amp;gt;= 500000000 || UNIX timestamp at which this transaction is locked&lt;br /&gt;
|}&lt;br /&gt;
If all TxIn inputs have final (0xffffffff) sequence numbers then lock_time is irrelevant. Otherwise, the transaction may not be added to a block until after lock_time (see [[NLockTime]]).&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
TxIn consists of the following fields:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 36 || previous_output || outpoint || The previous output transaction reference, as an OutPoint structure&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || script length || [[Protocol_documentation#Variable_length_integer|var_int]] || The length of the signature script&lt;br /&gt;
|-&lt;br /&gt;
| ? || signature script || uchar[] || Computational Script for confirming transaction authorization&lt;br /&gt;
|-&lt;br /&gt;
| 4 || [http://bitcoin.stackexchange.com/q/2025/323 sequence] || uint32_t || Transaction version as defined by the sender. Intended for &amp;quot;replacement&amp;quot; of transactions when information is updated before inclusion into a block.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The OutPoint structure consists of the following fields:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 32 || hash || char[32] || The hash of the referenced transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || index || uint32_t || The index of the specific output in the transaction. The first output is 0, etc.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The Script structure consists of a series of pieces of information and operations related to the value of the transaction.&lt;br /&gt;
&lt;br /&gt;
(Structure to be expanded in the future… see script.h and script.cpp and [[Script]] for more information)&lt;br /&gt;
&lt;br /&gt;
The TxOut structure consists of the following fields:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 8 || value || int64_t || Transaction Value&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || pk_script length || [[Protocol_documentation#Variable_length_integer|var_int]] || Length of the pk_script&lt;br /&gt;
|-&lt;br /&gt;
| ? || pk_script || uchar[] || Usually contains the public key as a Bitcoin script setting up conditions to claim this output.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Example &#039;&#039;tx&#039;&#039; message:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
000000	F9 BE B4 D9 74 78 00 00  00 00 00 00 00 00 00 00   ....tx..........&lt;br /&gt;
000010	02 01 00 00 E2 93 CD BE  01 00 00 00 01 6D BD DB   .............m..&lt;br /&gt;
000020	08 5B 1D 8A F7 51 84 F0  BC 01 FA D5 8D 12 66 E9   .[...Q........f.&lt;br /&gt;
000030	B6 3B 50 88 19 90 E4 B4  0D 6A EE 36 29 00 00 00   .;P......j.6)...&lt;br /&gt;
000040	00 8B 48 30 45 02 21 00  F3 58 1E 19 72 AE 8A C7   ..H0E.!..X..r...&lt;br /&gt;
000050	C7 36 7A 7A 25 3B C1 13  52 23 AD B9 A4 68 BB 3A   .6zz%;..R#...h.:&lt;br /&gt;
000060	59 23 3F 45 BC 57 83 80  02 20 59 AF 01 CA 17 D0   Y#?E.W... Y.....&lt;br /&gt;
000070	0E 41 83 7A 1D 58 E9 7A  A3 1B AE 58 4E DE C2 8D   .A.z.X.z...XN...&lt;br /&gt;
000080	35 BD 96 92 36 90 91 3B  AE 9A 01 41 04 9C 02 BF   5...6..;...A....&lt;br /&gt;
000090	C9 7E F2 36 CE 6D 8F E5  D9 40 13 C7 21 E9 15 98   .~.6.m...@..!...&lt;br /&gt;
0000A0	2A CD 2B 12 B6 5D 9B 7D  59 E2 0A 84 20 05 F8 FC   *.+..].}Y... ...&lt;br /&gt;
0000B0	4E 02 53 2E 87 3D 37 B9  6F 09 D6 D4 51 1A DA 8F   N.S..=7.o...Q...&lt;br /&gt;
0000C0	14 04 2F 46 61 4A 4C 70  C0 F1 4B EF F5 FF FF FF   ../FaJLp..K.....&lt;br /&gt;
0000D0	FF 02 40 4B 4C 00 00 00  00 00 19 76 A9 14 1A A0   ..@KL......v....&lt;br /&gt;
0000E0	CD 1C BE A6 E7 45 8A 7A  BA D5 12 A9 D9 EA 1A FB   .....E.z........&lt;br /&gt;
0000F0	22 5E 88 AC 80 FA E9 C7  00 00 00 00 19 76 A9 14   &amp;quot;^...........v..&lt;br /&gt;
000100	0E AB 5B EA 43 6A 04 84  CF AB 12 48 5E FD A0 B7   ..[.Cj.....H^...&lt;br /&gt;
000110	8B 4E CC 52 88 AC 00 00  00 00                     .N.R......&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Message header:&lt;br /&gt;
 F9 BE B4 D9                                       - main network magic bytes&lt;br /&gt;
 74 78 00 00 00 00 00 00 00 00 00 00               - &amp;quot;tx&amp;quot; command&lt;br /&gt;
 02 01 00 00                                       - payload is 258 bytes long&lt;br /&gt;
 E2 93 CD BE                                       - checksum of payload&lt;br /&gt;
&lt;br /&gt;
Transaction:&lt;br /&gt;
 01 00 00 00                                       - version&lt;br /&gt;
&lt;br /&gt;
Inputs:&lt;br /&gt;
 01                                                - number of transaction inputs&lt;br /&gt;
&lt;br /&gt;
Input 1:&lt;br /&gt;
 6D BD DB 08 5B 1D 8A F7  51 84 F0 BC 01 FA D5 8D  - previous output (outpoint)&lt;br /&gt;
 12 66 E9 B6 3B 50 88 19  90 E4 B4 0D 6A EE 36 29&lt;br /&gt;
 00 00 00 00&lt;br /&gt;
&lt;br /&gt;
 8B                                                - script is 139 bytes long&lt;br /&gt;
&lt;br /&gt;
 48 30 45 02 21 00 F3 58  1E 19 72 AE 8A C7 C7 36  - signature script (scriptSig)&lt;br /&gt;
 7A 7A 25 3B C1 13 52 23  AD B9 A4 68 BB 3A 59 23&lt;br /&gt;
 3F 45 BC 57 83 80 02 20  59 AF 01 CA 17 D0 0E 41&lt;br /&gt;
 83 7A 1D 58 E9 7A A3 1B  AE 58 4E DE C2 8D 35 BD&lt;br /&gt;
 96 92 36 90 91 3B AE 9A  01 41 04 9C 02 BF C9 7E&lt;br /&gt;
 F2 36 CE 6D 8F E5 D9 40  13 C7 21 E9 15 98 2A CD&lt;br /&gt;
 2B 12 B6 5D 9B 7D 59 E2  0A 84 20 05 F8 FC 4E 02&lt;br /&gt;
 53 2E 87 3D 37 B9 6F 09  D6 D4 51 1A DA 8F 14 04&lt;br /&gt;
 2F 46 61 4A 4C 70 C0 F1  4B EF F5&lt;br /&gt;
&lt;br /&gt;
 FF FF FF FF                                       - sequence&lt;br /&gt;
&lt;br /&gt;
Outputs:&lt;br /&gt;
 02                                                - 2 Output Transactions&lt;br /&gt;
&lt;br /&gt;
Output 1:&lt;br /&gt;
 40 4B 4C 00 00 00 00 00                           - 0.05 BTC (5000000)&lt;br /&gt;
 19                                                - pk_script is 25 bytes long&lt;br /&gt;
&lt;br /&gt;
 76 A9 14 1A A0 CD 1C BE  A6 E7 45 8A 7A BA D5 12  - pk_script&lt;br /&gt;
 A9 D9 EA 1A FB 22 5E 88  AC&lt;br /&gt;
&lt;br /&gt;
Output 2:&lt;br /&gt;
 80 FA E9 C7 00 00 00 00                           - 33.54 BTC (3354000000)&lt;br /&gt;
 19                                                - pk_script is 25 bytes long&lt;br /&gt;
&lt;br /&gt;
 76 A9 14 0E AB 5B EA 43  6A 04 84 CF AB 12 48 5E  - pk_script&lt;br /&gt;
 FD A0 B7 8B 4E CC 52 88  AC&lt;br /&gt;
&lt;br /&gt;
Locktime:&lt;br /&gt;
 00 00 00 00                                       - lock time&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== block ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;block&#039;&#039;&#039; message is sent in response to a getdata message which requests transaction information from a block hash.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || int32_t || Block version information (note, this is signed)&lt;br /&gt;
|-&lt;br /&gt;
| 32 || prev_block || char[32] || The hash value of the previous block this particular block references&lt;br /&gt;
|-&lt;br /&gt;
| 32 || merkle_root || char[32] || The reference to a Merkle tree collection which is a hash of all transactions related to this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || timestamp || uint32_t || A Unix timestamp recording when this block was created (Currently limited to dates before the year 2106!)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bits || uint32_t || The calculated [[Difficulty|difficulty target]] being used for this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nonce || uint32_t || The nonce used to generate this block… to allow variations of the header and compute different hashes&lt;br /&gt;
|-&lt;br /&gt;
| ? || txn_count || [[Protocol_documentation#Variable_length_integer|var_int]] || Number of transaction entries&lt;br /&gt;
|-&lt;br /&gt;
| ? || txns || tx[] || Block transactions, in format of &amp;quot;tx&amp;quot; command&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The SHA256 hash that identifies each block (and which must have a run of 0 bits) is calculated from the first 6 fields of this structure (version, prev_block, merkle_root, timestamp, bits, nonce, and standard SHA256 padding, making two 64-byte chunks in all) and &#039;&#039;not&#039;&#039; from the complete block. To calculate the hash, only two chunks need to be processed by the SHA256 algorithm. Since the &#039;&#039;nonce&#039;&#039; field is in the second chunk, the first chunk stays constant during mining and therefore only the second chunk needs to be processed. However, a Bitcoin hash is the hash of the hash, so two SHA256 rounds are needed for each mining iteration.&lt;br /&gt;
See [[Block hashing algorithm]] for details and an example.&lt;br /&gt;
&lt;br /&gt;
=== headers ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;headers&#039;&#039; packet returns block headers in response to a &#039;&#039;getheaders&#039;&#039; packet. &lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || count || [[Protocol_documentation#Variable_length_integer|var_int]] || Number of block headers&lt;br /&gt;
|-&lt;br /&gt;
| 81x? || headers || [[Protocol_documentation#Block_Headers|block_header]][] || [[Protocol_documentation#Block_Headers|Block headers]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that the block headers in this packet include a transaction count (a var_int, so there can be more than 81 bytes per header) as opposed to the block headers which are sent to miners.&lt;br /&gt;
&lt;br /&gt;
=== getaddr ===&lt;br /&gt;
&lt;br /&gt;
The getaddr message sends a request to a node asking for information about known active peers to help with finding potential nodes in the network. The response to receiving this message is to transmit one or more addr messages with one or more peers from a database of known active peers. The typical presumption is that a node is likely to be active if it has been sending a message within the last three hours.&lt;br /&gt;
&lt;br /&gt;
No additional data is transmitted with this message.&lt;br /&gt;
&lt;br /&gt;
=== mempool ===&lt;br /&gt;
&lt;br /&gt;
The mempool message sends a request to a node asking for information about transactions it has verified but which have not yet confirmed. The response to receiving this message is an inv message containing the transaction hashes for all the transactions in the node&#039;s mempool.&lt;br /&gt;
&lt;br /&gt;
No additional data is transmitted with this message.&lt;br /&gt;
&lt;br /&gt;
It is specified in [https://github.com/bitcoin/bips/blob/master/bip-0035.mediawiki BIP 35]. Since [https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki BIP 37], if a [[Protocol_documentation#filterload.2C_filteradd.2C_filterclear.2C_merkleblock|bloom filter]] is loaded, only transactions matching the filter are replied.&lt;br /&gt;
&lt;br /&gt;
=== checkorder ===&lt;br /&gt;
&lt;br /&gt;
This message was used for [[IP Transactions]]. As IP transactions have been deprecated, it is no longer used.&lt;br /&gt;
&lt;br /&gt;
=== submitorder ===&lt;br /&gt;
&lt;br /&gt;
This message was used for [[IP Transactions]]. As IP transactions have been deprecated, it is no longer used.&lt;br /&gt;
&lt;br /&gt;
=== reply ===&lt;br /&gt;
&lt;br /&gt;
This message was used for [[IP Transactions]]. As IP transactions have been deprecated, it is no longer used.&lt;br /&gt;
&lt;br /&gt;
=== ping ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;ping&#039;&#039; message is sent primarily to confirm that the TCP/IP connection is still valid. An error in transmission is presumed to be a closed connection and the address is removed as a current peer.&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 8 || nonce || uint64_t || random nonce&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pong ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;pong&#039;&#039; message is sent in response to a &#039;&#039;ping&#039;&#039; message. In modern protocol versions, a &#039;&#039;pong&#039;&#039; response is generated using a nonce included in the ping.&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 8 || nonce || uint64_t || nonce from ping&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== reject===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;reject&#039;&#039; message is sent when messages are rejected.&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || message || var_str || type of message rejected&lt;br /&gt;
|-&lt;br /&gt;
| 1 || ccode || char || code relating to rejected message&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || reason || var_str || text version of reason for rejection&lt;br /&gt;
|-&lt;br /&gt;
| 0+ || data || char || Optional extra data provided by some errors.  Currently, all errors which provide this field fill it with the TXID or block header hash of the object being rejected, so the field is 32 bytes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
CCodes&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || REJECT_MALFORMED|| &lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || REJECT_INVALID ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x11 || REJECT_OBSOLETE ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x12 || REJECT_DUPLICATE ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x40 || REJECT_NONSTANDARD ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x41 || REJECT_DUST ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x42 || REJECT_INSUFFICIENTFEE ||&lt;br /&gt;
|-&lt;br /&gt;
| 0x43 || REJECT_CHECKPOINT ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== filterload, filteradd, filterclear, merkleblock ===&lt;br /&gt;
&lt;br /&gt;
These messages are related to Bloom filtering of connections and are defined in [https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki BIP 0037].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command is defined as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || filter || uint8_t[] || The filter itself is simply a bit field of arbitrary byte-aligned size. The maximum size is 36,000 bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nHashFuncs || uint32_t || The number of hash functions to use in this filter. The maximum value allowed in this field is 50.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nTweak || uint32_t || A random value to add to the seed value in the hash function used by the bloom filter.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || nFlags || uint8_t || A set of flags that control how matched items are added to the filter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See below for a description of the Bloom filter algorithm and how to select nHashFuncs and filter size for a desired false positive rate.&lt;br /&gt;
&lt;br /&gt;
Upon receiving a &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command, the remote peer will immediately restrict the broadcast transactions it announces (in inv packets) to transactions matching the filter, where the matching algorithm is specified below. The flags control the update behaviour of the matching algorithm.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filteradd&amp;lt;/code&amp;gt; command is defined as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || data || uint8_t[] || The data element to add to the current filter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The data field must be smaller than or equal to 520 bytes in size (the maximum size of any potentially matched object).&lt;br /&gt;
&lt;br /&gt;
The given data element will be added to the Bloom filter. A filter must have been previously provided using &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt;. This command is useful if a new key or script is added to a clients wallet whilst it has connections to the network open, it avoids the need to re-calculate and send an entirely new filter to every peer (though doing so is usually advisable to maintain anonymity).&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filterclear&amp;lt;/code&amp;gt; command has no arguments at all.&lt;br /&gt;
&lt;br /&gt;
After a filter has been set, nodes don&#039;t merely stop announcing non-matching transactions, they can also serve filtered blocks. A filtered block is defined by the &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message and is defined like this:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || uint32_t || Block version information, based upon the software version creating this block&lt;br /&gt;
|-&lt;br /&gt;
| 32 || prev_block || char[32] || The hash value of the previous block this particular block references&lt;br /&gt;
|-&lt;br /&gt;
| 32 || merkle_root || char[32] || The reference to a Merkle tree collection which is a hash of all transactions related to this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || timestamp || uint32_t || A timestamp recording when this block was created (Limited to 2106!)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bits || uint32_t || The calculated difficulty target being used for this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nonce || uint32_t || The nonce used to generate this block… to allow variations of the header and compute different hashes&lt;br /&gt;
|-&lt;br /&gt;
| 4 || total_transactions || uint32_t || Number of transactions in the block (including unmatched ones)&lt;br /&gt;
|-&lt;br /&gt;
| ? || hashes || uint256[] || hashes in depth-first order (including standard varint size prefix)&lt;br /&gt;
|-&lt;br /&gt;
| ? || flags || byte[] || flag bits, packed per 8 in a byte, least significant bit first (including standard varint size prefix)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== alert ===&lt;br /&gt;
&lt;br /&gt;
An &#039;&#039;&#039;alert&#039;&#039;&#039; is sent between nodes to send a general notification message throughout the network. If the alert can be confirmed with the signature as having come from the the core development group of the Bitcoin software, the message is suggested to be displayed for end-users. Attempts to perform transactions, particularly automated transactions through the client, are suggested to be halted. The text in the Message string should be relayed to log files and any user interfaces.&lt;br /&gt;
&lt;br /&gt;
Alert format:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || payload || uchar[] || Serialized alert payload&lt;br /&gt;
|-&lt;br /&gt;
| ? || signature || uchar[] || An ECDSA signature of the message&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The developers of Satoshi&#039;s client use this public key for signing alerts:&lt;br /&gt;
 04fc9702847840aaf195de8442ebecedf5b095cdbb9bc716bda9110971b28a49e0ead8564ff0db22209e0374782c093bb899692d524e9d6a6956e7c5ecbcd68284&lt;br /&gt;
 (hash) 1AGRxqDa5WjUKBwHB9XYEjmkv1ucoUUy1s&lt;br /&gt;
&lt;br /&gt;
The payload is serialized into a uchar[] to ensure that versions using incompatible alert formats can still relay alerts among one another. The current alert payload format is:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Version || int32_t || Alert format version&lt;br /&gt;
|-&lt;br /&gt;
| 8 || RelayUntil || int64_t || The timestamp beyond which nodes should stop relaying this alert&lt;br /&gt;
|-&lt;br /&gt;
| 8 || Expiration || int64_t || The timestamp beyond which this alert is no longer in effect and should be ignored&lt;br /&gt;
|-&lt;br /&gt;
| 4 || ID || int32_t || A unique ID number for this alert&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Cancel || int32_t || All alerts with an ID number less than or equal to this number should be cancelled: deleted and not accepted in the future&lt;br /&gt;
|-&lt;br /&gt;
| ? || setCancel || set&amp;lt;int32_t&amp;gt; || All alert IDs contained in this set should be cancelled as above&lt;br /&gt;
|-&lt;br /&gt;
| 4 || MinVer || int32_t || This alert only applies to versions greater than or equal to this version. Other versions should still relay it.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || MaxVer || int32_t || This alert only applies to versions less than or equal to this version. Other versions should still relay it.&lt;br /&gt;
|-&lt;br /&gt;
| ? || setSubVer || set&amp;lt;string&amp;gt; || If this set contains any elements, then only nodes that have their subVer contained in this set are affected by the alert. Other versions should still relay it.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Priority || int32_t || Relative priority compared to other alerts&lt;br /&gt;
|-&lt;br /&gt;
| ? || Comment || string || A comment on the alert that is not displayed&lt;br /&gt;
|-&lt;br /&gt;
| ? || StatusBar || string || The alert message that is displayed to the user&lt;br /&gt;
|-&lt;br /&gt;
| ? || Reserved || string || Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: &#039;&#039;&#039;set&amp;lt;&#039;&#039;type&#039;&#039;&amp;gt;&#039;&#039;&#039; in the table above is a [[#Variable length integer | variable length integer]] followed by the number of fields of the given &#039;&#039;type&#039;&#039; (either int32_t or [[#Variable length string | variable length string]])&lt;br /&gt;
&lt;br /&gt;
Sample alert (no message header):&lt;br /&gt;
 73010000003766404f00000000b305434f00000000f2030000f1030000001027000048ee0000&lt;br /&gt;
 0064000000004653656520626974636f696e2e6f72672f666562323020696620796f75206861&lt;br /&gt;
 76652074726f75626c6520636f6e6e656374696e672061667465722032302046656272756172&lt;br /&gt;
 79004730450221008389df45f0703f39ec8c1cc42c13810ffcae14995bb648340219e353b63b&lt;br /&gt;
 53eb022009ec65e1c1aaeec1fd334c6b684bde2b3f573060d5b70c3a46723326e4e8a4f1&lt;br /&gt;
 &lt;br /&gt;
 Version: 1&lt;br /&gt;
 RelayUntil: 1329620535&lt;br /&gt;
 Expiration: 1329792435&lt;br /&gt;
 ID: 1010&lt;br /&gt;
 Cancel: 1009&lt;br /&gt;
 setCancel: &amp;lt;empty&amp;gt;&lt;br /&gt;
 MinVer: 10000&lt;br /&gt;
 MaxVer: 61000&lt;br /&gt;
 setSubVer: &amp;lt;empty&amp;gt;&lt;br /&gt;
 Priority: 100&lt;br /&gt;
 Comment: &amp;lt;empty&amp;gt;&lt;br /&gt;
 StatusBar: &amp;quot;See bitcoin.org/feb20 if you have trouble connecting after 20 February&amp;quot;&lt;br /&gt;
 Reserved: &amp;lt;empty&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
See [[script]].&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Network]]&lt;br /&gt;
* [[Protocol rules]]&lt;br /&gt;
* [[Hardfork Wishlist]]&lt;br /&gt;
* [https://bitcoin.org/en/developer-documentation Developer Documentation on bitcoin.org]&lt;br /&gt;
* Bitcoin dissectors for Wireshark: https://github.com/lbotsch/wireshark-bitcoin https://github.com/op-sig/bitcoin-wireshark-dissector&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[zh-cn:协议说明]]&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Fallback_Nodes&amp;diff=34027</id>
		<title>Fallback Nodes</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Fallback_Nodes&amp;diff=34027"/>
		<updated>2012-12-24T21:22:25Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: /* IPv4 Nodes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of nodes which are considered reliable. &amp;lt;del&amp;gt;Nodes from this list which are down for more than 24 hours will be automatically removed and status of each node is displayed and updated every hour by [[User:WikiBot|WikiBot]] &amp;lt;/del&amp;gt;.&lt;br /&gt;
&#039;&#039;&#039;Wikibot is currently malfunctioning and is incorrectly marking nodes running version 0.6 as being down&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== How to use this list ==&lt;br /&gt;
&lt;br /&gt;
=== Connect to nodes ===&lt;br /&gt;
&lt;br /&gt;
You can connect to these nodes with the &#039;&#039;-addnode=ip&#039;&#039; switch instead of the usual node harvesting process (through IRC or via the embedded nodelist). You can connect to more than one node by using &#039;&#039;-addnode=ip&#039;&#039; more than once. It is usually a good idea to connect to more than one of these nodes.&lt;br /&gt;
&lt;br /&gt;
==== Nodes without a fixed ip ====&lt;br /&gt;
&lt;br /&gt;
If the node IP is not fixed (see &amp;quot;Fixed&amp;quot; column), you will have to resolve the node&#039;s name (first column) each time the IP changes. Some nodes may have their ip change once a day, some others once a month, and some others may stay on the same IP for years. Still, as long as the IP is not fixed, there is no guarantee it will stay the same.&lt;br /&gt;
&lt;br /&gt;
In order to enable hostname lookups for the &#039;&#039;-addnode&#039;&#039; and &#039;&#039;-connect&#039;&#039; parameters, you must additionally provide the &#039;&#039;-dns&#039;&#039; parameter. Example:&lt;br /&gt;
 bitcoind -dns -addnode=bitcoin.es&lt;br /&gt;
&lt;br /&gt;
Versions prior to 0.3.22 do not support hostnames to the &#039;&#039;-addnode&#039;&#039; parameter, so you must do the resolving part for it. For example on linux:&lt;br /&gt;
 bitcoind -addnode=$(dig +short bitcoin.es)&lt;br /&gt;
&lt;br /&gt;
=== IP Transactions ===&lt;br /&gt;
&lt;br /&gt;
You can also send [[IP Transactions]] to these nodes. If you include your bitcoin address in the &amp;quot;message&amp;quot; field, you may have your coins back.&lt;br /&gt;
&lt;br /&gt;
=== Tor network ===&lt;br /&gt;
&lt;br /&gt;
To use tor .onion addresses ([[Fallback_Nodes#Tor_nodes|listed below]]), you will need to map virtual ips via the &#039;&#039;torrc&#039;&#039; file:&lt;br /&gt;
&lt;br /&gt;
 mapaddress 192.0.2.2 vso3r6cmjoomhhgg.onion&lt;br /&gt;
 mapaddress 192.0.2.3 sjdntqu5roj4q6lo.onion&lt;br /&gt;
&lt;br /&gt;
And then put these IPs in your bitcoin.conf (or run bitcoin with -connect).&lt;br /&gt;
&lt;br /&gt;
 connect=192.0.2.2&lt;br /&gt;
 connect=192.0.2.3&lt;br /&gt;
&lt;br /&gt;
You can use any arbitrary IP addresses with MapAddress, though some of the common non-routable ranges (10.*, 192.168.*) will not work due to a Bitcoin bug (reference?). 192.0.2.1-192.0.2.255 is the recommended range because it is both non-routable and compatible with Bitcoin.&lt;br /&gt;
&lt;br /&gt;
If you would like to use these nodes in addition to the hard-coded node list in the client, you can substitute &amp;quot;connect&amp;quot; with &amp;quot;addnode&amp;quot;. However, if you want to keep all your Bitcoin communication strictly within the Tor network, it is recommended that you use &amp;quot;connect.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Additional suggested settings for hidden node operators:&lt;br /&gt;
&lt;br /&gt;
 noirc=1&lt;br /&gt;
 upnp=0&lt;br /&gt;
 listen=1&lt;br /&gt;
&lt;br /&gt;
== Nodes list ==&lt;br /&gt;
&lt;br /&gt;
=== IPv6 Nodes ===&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Hostname !! Owner !! IP !! Fixed !! Status !! Last Seen (GMT) !! Accepts IP transactions&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- BEGIN NODELIST --&amp;gt;&lt;br /&gt;
| 2001:470:8:2e1::40 || ? || 2001:470:8:2e1::40 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| x.jine.se || jine || 213.112.48.166 || {{Table Value No}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
&amp;lt;!-- END NODELIST --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== IPv4 Nodes ===&lt;br /&gt;
&#039;&#039;&#039;Wikibot is currently malfunctioning and is incorrectly marking nodes running 0.6 as being down&#039;&#039;&#039;.&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Hostname !! Owner !! IP !! Fixed !! Status !! Last Seen (GMT) !! Accepts IP transactions&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- BEGIN NODELIST --&amp;gt;&lt;br /&gt;
| archivum.info || Ferraro Ltd.|| 88.198.58.172 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| 62.75.216.13 || exMULTI, Inc. || 62.75.216.13 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| 69.64.34.118 || exMULTI, Inc. || 69.64.34.118 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| 79.160.221.140 || K-Norway || 79.160.221.140 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| netzbasis.de || unknown3 || 81.169.129.25 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btc.turboadmin.com || osmosis || 98.143.152.14 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| fallback.bitcoin.zhoutong.com || Zhou Tong || 117.121.241.140 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| bauhaus.csail.mit.edu || imsaguy || 128.30.96.44 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| jun.dashjr.org || Luke-Jr || 173.242.112.53 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || &lt;br /&gt;
|-&lt;br /&gt;
| cheaperinbitcoins.com || Xenland/Shane || 184.154.36.82 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| django.webflows.fr || unknown2 || 188.165.213.169 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| 204.9.55.71 || toasty || 204.9.55.71 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btcnode.novit.ro || ovidiusoft - novit.ro || 93.187.142.114 || {{Table Value No}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| porgressbar.sk || progressbar hackerspace || 91.210.181.21 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| faucet.bitcoin.st || bitcoin street || 64.27.57.225 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.securepayment.cc || SecurePayment CC || 63.247.147.163 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| x.jine.se || jine || 213.112.48.166 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| www.dcscdn.com || [[User:Danw12|Danw12]] || 199.115.228.181 || {{Table Value Yes}} &lt;br /&gt;
|-&lt;br /&gt;
| ns2.dcscdn.com || [[User:Danw12|Danw12]] || 199.115.228.182 || {{Table Value Yes}} &lt;br /&gt;
&amp;lt;!-- END NODELIST --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is a list of nodes which have been seen on the network recently at http://blockchain.info/connected-nodes&lt;br /&gt;
&lt;br /&gt;
=== Tor nodes ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Hostname !! Owner !! Status !! Last Seen (GMT) !! Accepts IP transactions&lt;br /&gt;
|-&lt;br /&gt;
| 6hgmaxwellgpv2oe.onion|| Gmaxwell || up || 2012-07-01 || No&lt;br /&gt;
|-&lt;br /&gt;
| pqosrh6wfaucet32.onion|| bitcoin street || up || 2012-08-29 || No&lt;br /&gt;
|-&lt;br /&gt;
| btc4ulpftizx5b72.onion || TorNode || up || 2012-06-22 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| 7hxvg2lvr2ashzli.onion || Tuxavant || up || 2012-06-23 || ?&lt;br /&gt;
|-&lt;br /&gt;
| siqdznszjf4e6v5j.onion || Tuxavant || up || 2012-06-23 || ?&lt;br /&gt;
|-&lt;br /&gt;
| fpt6orohw2nuf2kn.onion || Tril || up || 2012-06-23 || No&lt;br /&gt;
|-&lt;br /&gt;
| vso3r6cmjoomhhgg.onion || echelon || up || 2012-09-16 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| sjdntqu5roj4q6lo.onion || torservers || up || 2012-05-19 || ?&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin2bkgm3fke.onion || ? || down || 2012-05-19 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| ijzt2eeizty3p5xe.onion || ? || ? || 2011-02-11 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| j43z65b6r2usg3vk.onion || Dybbuk || ? || 2011-02-11 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| pvuif6nonbhj3o3r.onion || ? || ? || 2011-02-11 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| c5qvugpewwyyy5oz.onion || ? || ? || 2011-02-11 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| bitcoinbudtoeks7.onion || ? || ? || 2011-02-11 || ?&lt;br /&gt;
|-&lt;br /&gt;
| iy6ni3wkqazp4ytu.onion || ? || ? || 2011-02-11 || ?&lt;br /&gt;
|-&lt;br /&gt;
| h4kklwodpcmo6cbq.onion || ? || ? || 2011-02-11 || ?&lt;br /&gt;
|-&lt;br /&gt;
| vv6kcfscuntybrzm.onion || ? || ? || 2011-02-11 || ?&lt;br /&gt;
|-&lt;br /&gt;
| nlnsivjku4x4lu5n.onion || ? || ? || 2011-02-11 || ?&lt;br /&gt;
|-&lt;br /&gt;
| xqzfakpeuvrobvpj.onion || ? || ? || 2010-11-13 || No&lt;br /&gt;
|-&lt;br /&gt;
| 4lmduyac3svgrrav.onion || ? || ? || 2011-02-11 || No&lt;br /&gt;
|-&lt;br /&gt;
| usasx4urod3yj4az.onion || ? || ? || 2011-02-11 || No&lt;br /&gt;
|-&lt;br /&gt;
| e3tn727fywnioxrc.onion || ? || ? || 2011-11-01 || No&lt;br /&gt;
|-&lt;br /&gt;
| p2hwc26zdsrqxiix.onion || redemerald || down || 2012-05-25 || No&lt;br /&gt;
|-&lt;br /&gt;
| bxfna6fhddpzduck.onion || ? || ? || ? || ?&lt;br /&gt;
|-&lt;br /&gt;
| kjy2eqzk4zwi5zd3.onion || sipa || up || 2012-06-23 || No&lt;br /&gt;
|-&lt;br /&gt;
| mutqcuh7hwxmhx3k.onion || Xirafe || up || 2012-06-23 || ?&lt;br /&gt;
|-&lt;br /&gt;
| r4de4zf4lyniu4mx.onion:8444 || ? || up || 2012-06-26 || ?&lt;br /&gt;
|-&lt;br /&gt;
| bitcoinprwwpuinm.onion:8333 || ? || up || 2012-06-26 || ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Adding a node ==&lt;br /&gt;
&lt;br /&gt;
Before adding yourself as a fallback node, you should be sure your node will stay online for a long time. If a node is offline for more than 24 hours it will be removed from the list.&lt;br /&gt;
&lt;br /&gt;
To add a node in this list, you just need the ip/hostname and your name, the other fields will be filled automatically. Insert the following lines before the &amp;lt;tt&amp;gt;END NODELIST&amp;lt;/tt&amp;gt; line:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;|-&lt;br /&gt;
| ip || your name&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Network|Bitcoin Network]]&lt;br /&gt;
* [http://nodes.bitcoin.st Fallback Nodes] List of longest running Bitcoin Nodes listed by Country.&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=BIP_0037&amp;diff=33874</id>
		<title>BIP 0037</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=BIP_0037&amp;diff=33874"/>
		<updated>2012-12-17T21:11:18Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: Tweak PMT description&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: 37&lt;br /&gt;
  Title: Connection Bloom filtering&lt;br /&gt;
  Author: Mike Hearn &amp;lt;hearn@google.com&amp;gt;, Matt Corallo &amp;lt;bip@bluematt.me&amp;gt;&lt;br /&gt;
  Status: Draft&lt;br /&gt;
  Type: Standards Track&lt;br /&gt;
  Created: 24-10-2012&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
&lt;br /&gt;
This BIP adds new support to the peer-to-peer protocol that allows peers to reduce the amount of transaction data they are sent. Peers have the option of setting &#039;&#039;filters&#039;&#039; on each connection they make after the version handshake has completed. A filter is defined as a [http://en.wikipedia.org/wiki/Bloom_filter Bloom filter] on data derived from transactions. A Bloom filter is a probabilistic data structure which allows for testing set membership - they can have false positives but not false negatives.&lt;br /&gt;
&lt;br /&gt;
This document will not go into the details of how Bloom filters work and the reader is referred to Wikipedia for an introduction to the topic.&lt;br /&gt;
&lt;br /&gt;
==Motivation==&lt;br /&gt;
&lt;br /&gt;
As Bitcoin grows in usage the amount of bandwidth needed to download blocks and transaction broadcasts increases. Clients implementing &#039;&#039;simplified payment verification&#039;&#039; do not attempt to fully verify the block chain, instead just checking that block headers connect together correctly and trusting that the transactions in a chain of high difficulty are in fact valid. See the Bitcoin paper for more detail on this mode.&lt;br /&gt;
&lt;br /&gt;
Today, [[Simplified_Payment_Verification|SPV]] clients have to download the entire contents of blocks and all broadcast transactions, only to throw away the vast majority of the transactions that are not relevant to their wallets. This slows down their synchronization process, wastes users bandwidth (which on phones is often metered) and increases memory usage. All three problems are triggering real user complaints for the Android &amp;quot;Bitcoin Wallet&amp;quot; app which implements SPV mode. In order to make chain synchronization fast, cheap and able to run on older phones with limited memory we want to have remote peers throw away irrelevant transactions before sending them across the network.&lt;br /&gt;
&lt;br /&gt;
==Design rationale==&lt;br /&gt;
&lt;br /&gt;
The most obvious way to implement the stated goal would be for clients to upload lists of their keys to the remote node. We take a more complex approach for the following reasons:&lt;br /&gt;
&lt;br /&gt;
* Privacy: Because Bloom filters are probabilistic, with the false positive rate chosen by the client, nodes can trade off precision vs bandwidth usage. A node with access to lots of bandwidth may choose to have a high FP rate, meaning the remote peer cannot accurately know which transactions belong to the client and which don&#039;t. A node with very little bandwidth may choose to use a very accurate filter meaning that they only get sent transactions actually relevant to their wallet, but remote peers may be able to correlate transactions with IP addresses (and each other).&lt;br /&gt;
* Bloom filters are compact and testing membership in them is fast. This results in satisfying performance characteristics with minimal risk of opening up potential for DoS attacks.&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
&lt;br /&gt;
===New messages===&lt;br /&gt;
&lt;br /&gt;
We start by adding three new messages to the protocol:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt;, which sets the current Bloom filter on the connection&lt;br /&gt;
* &amp;lt;code&amp;gt;filteradd&amp;lt;/code&amp;gt;, which adds the given data element to the connections current filter without requiring a completely new one to be set&lt;br /&gt;
* &amp;lt;code&amp;gt;filterclear&amp;lt;/code&amp;gt;, which deletes the current filter and goes back to regular pre-BIP37 usage.&lt;br /&gt;
&lt;br /&gt;
Note that there is no filterremove command because by their nature, Bloom filters are append-only data structures. Once an element is added it cannot be removed again without rebuilding the entire structure from scratch.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command is defined as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || filter || uint8_t[] || The filter itself is simply a bit field of arbitrary byte-aligned size. The maximum size is 36,000 bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nHashFuncs || uint32_t || The number of hash functions to use in this filter. The maximum value allowed in this field is 50.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nTweak || uint32_t || A random value to add to the seed value in the hash function used by the bloom filter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See below for a description of the Bloom filter algorithm and how to select nHashFuncs and filter size for a desired false positive rate.&lt;br /&gt;
&lt;br /&gt;
Upon receiving a &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command, the remote peer will immediately restrict the broadcast transactions it announces (in inv packets) to transactions matching the filter, where the matching algorithm is specified below.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filteradd&amp;lt;/code&amp;gt; command is defined as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || data || uint8_t[] || The data element to add to the current filter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The data field must be smaller than or equal to 520 bytes in size (the maximum size of any potentially matched object).&lt;br /&gt;
&lt;br /&gt;
The given data element will be added to the Bloom filter. A filter must have been previously provided using &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt;. This command is useful if a new key or script is added to a clients wallet whilst it has connections to the network open, it avoids the need to re-calculate and send an entirely new filter to every peer (though doing so is usually advisable to maintain anonymity).&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filterclear&amp;lt;/code&amp;gt; command has no arguments at all.&lt;br /&gt;
&lt;br /&gt;
After a filter has been set, nodes don&#039;t merely stop announcing non-matching transactions, they can also serve filtered blocks. A filtered block is defined by the &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message and is defined like this:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || uint32_t || Block version information, based upon the software version creating this block&lt;br /&gt;
|-&lt;br /&gt;
| 32 || prev_block || char[32] || The hash value of the previous block this particular block references&lt;br /&gt;
|-&lt;br /&gt;
| 32 || merkle_root || char[32] || The reference to a Merkle tree collection which is a hash of all transactions related to this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || timestamp || uint32_t || A timestamp recording when this block was created (Limited to 2106!)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bits || uint32_t || The calculated difficulty target being used for this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nonce || uint32_t || The nonce used to generate this block… to allow variations of the header and compute different hashes&lt;br /&gt;
|-&lt;br /&gt;
| 4 || total_transactions || uint32_t || Number of transactions in the block (including unmatched ones)&lt;br /&gt;
|-&lt;br /&gt;
| ? || hashes || uint256[] || hashes in depth-first order (including standard varint size prefix)&lt;br /&gt;
|-&lt;br /&gt;
| ? || flags || byte[] || flag bits, packed per 8 in a byte, least significant bit first (including standard varint size prefix)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See below for the format of the partial merkle tree hashes and flags.&lt;br /&gt;
&lt;br /&gt;
Thus, a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message is a block header, plus a part of a merkle tree which can be used to extract identifying information for transactions that matched the filter and prove that the matching transaction data really did appear in the solved block. Clients can use this data to be sure that the remote node is not feeding them fake transactions that never appeared in a real block, although lying through omission is still possible.&lt;br /&gt;
&lt;br /&gt;
===Extensions to existing messages===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; command is extended with a new field:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 1 byte || fRelay || bool || If false then broadcast transactions will not be announced until a filter{load,add,clear} command is received. If missing or true, no change in protocol behaviour occurs.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
SPV clients that wish to use Bloom filtering would normally set fRelay to false in the version message, then set a filter based on their wallet (or a subset of it, if they are overlapping different peers). Being able to opt-out of inv messages until the filter is set prevents a client being flooded with traffic in the brief window of time between finishing version handshaking and setting the filter.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;getdata&amp;lt;/code&amp;gt; command is extended to allow a new type in the &amp;lt;code&amp;gt;inv&amp;lt;/code&amp;gt; submessage. The type field can now be &amp;lt;code&amp;gt;MSG_FILTERED_BLOCK (== 3)&amp;lt;/code&amp;gt; rather than &amp;lt;code&amp;gt;MSG_BLOCK&amp;lt;/code&amp;gt;. If no filter has been set on the connection, a request for filtered blocks is ignored. If a filter has been set, a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message is returned for the requested block hash. In addition, because a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message contains only a list of transaction hashes, transactions matching the filter should also be sent in separate tx messages. This avoids a slow roundtrip that would otherwise be required (receive hashes, didn&#039;t see some of these transactions yet, ask for them).  Note that because there is currently no way to request transactions which are already in a block from a node (aside from requesting the full block), the set of matching transactions that the requesting node hasn&#039;t either received or announced with an inv must be sent and any additional transactions which match the filter may also be sent.  This allows for clients (such as the reference client) to limit the number of invs it must remember a given node to have announced while still providing nodes with, at a minimum, all the transactions it needs.&lt;br /&gt;
&lt;br /&gt;
===Filter matching algorithm===&lt;br /&gt;
&lt;br /&gt;
The filter can be tested against arbitrary pieces of data, to see if that data was inserted by the client. Therefore the question arises of what pieces of data should be inserted/tested.&lt;br /&gt;
&lt;br /&gt;
To determine if a transaction matches the filter, the following algorithm MUST be used. Once a match is found the algorithm aborts.&lt;br /&gt;
&lt;br /&gt;
# Test the hash of the transaction itself.&lt;br /&gt;
# For each output, test each data element of the output script. This means each hash and key in the output script is tested independently. &#039;&#039;&#039;Important:&#039;&#039;&#039; if an output matches whilst testing a transaction, the node MUST update the filter by inserting the serialized COutPoint structure. See below for more details.&lt;br /&gt;
# For each input, test the serialized COutPoint structure.&lt;br /&gt;
# For each input, test each data element of the input script (note: input scripts only ever contain data elements).&lt;br /&gt;
# Otherwise there is no match.&lt;br /&gt;
&lt;br /&gt;
In this way addresses, keys and script hashes (for P2SH outputs) can all be added to the filter. You can also match against classes of transactions that are marked with well known data elements in either inputs or outputs, for example, to implement various forms of [[Smart property]].&lt;br /&gt;
&lt;br /&gt;
The test for outpoints is there to ensure you can find transactions spending outputs in your wallet, even though you don&#039;t know anything about their form. As you can see, once set on a connection the filter is &#039;&#039;&#039;not static&#039;&#039;&#039; and can change throughout the connections lifetime. This is done to avoid the following race condition:&lt;br /&gt;
&lt;br /&gt;
# A client sets a filter matching a key in their wallet. They then start downloading the block chain. The part of the chain that the client is missing is requested using getblocks.&lt;br /&gt;
# The first block is read from disk by the serving peer. It contains TX 1 which sends money to the clients key. It matches the filter and is thus sent to the client.&lt;br /&gt;
# The second block is read from disk by the serving peer. It contains TX 2 which spends TX 1. However TX 2 does not contain any of the clients keys and is thus not sent. The client does not know the money they received was already spent.&lt;br /&gt;
&lt;br /&gt;
By updating the bloom filter atomically in step 2 with the discovered outpoint, the filter will match against TX 2 in step 3 and the client will learn about all relevant transactions, despite that there is no pause between the node processing the first and second blocks.&lt;br /&gt;
&lt;br /&gt;
===Partial Merkle branch format===&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;Merkle tree&#039;&#039; is a way of arranging a set of items as leaf nodes of tree in which the interior nodes are hashes of the concatenations of their child hashes. The root node is called the &#039;&#039;Merkle root&#039;&#039;. Every Bitcoin block contains a Merkle root of the tree formed from the blocks transactions. By providing some elements of the trees interior nodes (called a &#039;&#039;Merkle branch&#039;&#039;) a proof is formed that the given transaction was indeed in the block when it was being mined, but the size of the proof is much smaller than the size of the original block.&lt;br /&gt;
&lt;br /&gt;
The encoding works as follows: we traverse the tree in depth-first order, storing a bit for each traversed node, signifying whether the node is the parent of at least one matched leaf txid (or a matched txid itself). In case we are at the leaf level, or this bit is 0, its merkle node hash is stored, and its children are not explored further. Otherwise, no hash is stored, but we recurse into both (or the only) child branch. During decoding, the same depth-first traversal is performed, consuming bits and hashes as they written during encoding.&lt;br /&gt;
&lt;br /&gt;
===Bloom filter format===&lt;br /&gt;
&lt;br /&gt;
A Bloom filter is a bit-field in which bits are set based on feeding the data element to a set of different hash functions. The number of hash functions used is a parameter of the filter. In Bitcoin we use version 3 of the 32-bit Murmur hash function. To get N &amp;quot;different&amp;quot; hash functions we simply initialize the Murmur algorithm with the following formula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nHashNum * 0xFBA4C795 + nTweak&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i.e. if the filter is initialized with 4 hash functions and a tweak of 0x00000005, when the second function (index 1) is needed h1 would be equal to 4221880218.&lt;br /&gt;
&lt;br /&gt;
When loading a filter with the &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command, there are two parameters that can be chosen. One is the size of the filter in bytes. The other is the number of hash functions to use. To select the parameters you can use the following formulas:&lt;br /&gt;
&lt;br /&gt;
Let N be the number of elements you wish to insert into the set and P be the probability of a false positive, where 1.0 is &amp;quot;match everything&amp;quot; and zero is unachievable.&lt;br /&gt;
&lt;br /&gt;
The size S of the filter in bytes is given by &amp;lt;code&amp;gt;(-1 / pow(log(2), 2) * N * log(P)) / 8&amp;lt;/code&amp;gt;. Of course you must ensure it does not go over the maximum size (36,000: selected as it represents a filter of 20,000 items with false positive rate of &amp;lt; 0.1% or 10,000 items and a false positive rate of &amp;lt; 0.0001%).&lt;br /&gt;
&lt;br /&gt;
The number of hash functions required is given by &amp;lt;code&amp;gt;S * 8 / N * log(2)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Copyright==&lt;br /&gt;
&lt;br /&gt;
This document is placed in the public domain.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:BIP|D]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=BIP_0037&amp;diff=33873</id>
		<title>BIP 0037</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=BIP_0037&amp;diff=33873"/>
		<updated>2012-12-17T21:08:15Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: Add nTweak&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: 37&lt;br /&gt;
  Title: Connection Bloom filtering&lt;br /&gt;
  Author: Mike Hearn &amp;lt;hearn@google.com&amp;gt;, Matt Corallo &amp;lt;bip@bluematt.me&amp;gt;&lt;br /&gt;
  Status: Draft&lt;br /&gt;
  Type: Standards Track&lt;br /&gt;
  Created: 24-10-2012&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
&lt;br /&gt;
This BIP adds new support to the peer-to-peer protocol that allows peers to reduce the amount of transaction data they are sent. Peers have the option of setting &#039;&#039;filters&#039;&#039; on each connection they make after the version handshake has completed. A filter is defined as a [http://en.wikipedia.org/wiki/Bloom_filter Bloom filter] on data derived from transactions. A Bloom filter is a probabilistic data structure which allows for testing set membership - they can have false positives but not false negatives.&lt;br /&gt;
&lt;br /&gt;
This document will not go into the details of how Bloom filters work and the reader is referred to Wikipedia for an introduction to the topic.&lt;br /&gt;
&lt;br /&gt;
==Motivation==&lt;br /&gt;
&lt;br /&gt;
As Bitcoin grows in usage the amount of bandwidth needed to download blocks and transaction broadcasts increases. Clients implementing &#039;&#039;simplified payment verification&#039;&#039; do not attempt to fully verify the block chain, instead just checking that block headers connect together correctly and trusting that the transactions in a chain of high difficulty are in fact valid. See the Bitcoin paper for more detail on this mode.&lt;br /&gt;
&lt;br /&gt;
Today, [[Simplified_Payment_Verification|SPV]] clients have to download the entire contents of blocks and all broadcast transactions, only to throw away the vast majority of the transactions that are not relevant to their wallets. This slows down their synchronization process, wastes users bandwidth (which on phones is often metered) and increases memory usage. All three problems are triggering real user complaints for the Android &amp;quot;Bitcoin Wallet&amp;quot; app which implements SPV mode. In order to make chain synchronization fast, cheap and able to run on older phones with limited memory we want to have remote peers throw away irrelevant transactions before sending them across the network.&lt;br /&gt;
&lt;br /&gt;
==Design rationale==&lt;br /&gt;
&lt;br /&gt;
The most obvious way to implement the stated goal would be for clients to upload lists of their keys to the remote node. We take a more complex approach for the following reasons:&lt;br /&gt;
&lt;br /&gt;
* Privacy: Because Bloom filters are probabilistic, with the false positive rate chosen by the client, nodes can trade off precision vs bandwidth usage. A node with access to lots of bandwidth may choose to have a high FP rate, meaning the remote peer cannot accurately know which transactions belong to the client and which don&#039;t. A node with very little bandwidth may choose to use a very accurate filter meaning that they only get sent transactions actually relevant to their wallet, but remote peers may be able to correlate transactions with IP addresses (and each other).&lt;br /&gt;
* Bloom filters are compact and testing membership in them is fast. This results in satisfying performance characteristics with minimal risk of opening up potential for DoS attacks.&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
&lt;br /&gt;
===New messages===&lt;br /&gt;
&lt;br /&gt;
We start by adding three new messages to the protocol:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt;, which sets the current Bloom filter on the connection&lt;br /&gt;
* &amp;lt;code&amp;gt;filteradd&amp;lt;/code&amp;gt;, which adds the given data element to the connections current filter without requiring a completely new one to be set&lt;br /&gt;
* &amp;lt;code&amp;gt;filterclear&amp;lt;/code&amp;gt;, which deletes the current filter and goes back to regular pre-BIP37 usage.&lt;br /&gt;
&lt;br /&gt;
Note that there is no filterremove command because by their nature, Bloom filters are append-only data structures. Once an element is added it cannot be removed again without rebuilding the entire structure from scratch.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command is defined as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || filter || uint8_t[] || The filter itself is simply a bit field of arbitrary byte-aligned size. The maximum size is 36,000 bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nHashFuncs || uint32_t || The number of hash functions to use in this filter. The maximum value allowed in this field is 50.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nTweak || uint32_t || A random value to add to the seed value in the hash function used by the bloom filter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See below for a description of the Bloom filter algorithm and how to select nHashFuncs and filter size for a desired false positive rate.&lt;br /&gt;
&lt;br /&gt;
Upon receiving a &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command, the remote peer will immediately restrict the broadcast transactions it announces (in inv packets) to transactions matching the filter, where the matching algorithm is specified below.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filteradd&amp;lt;/code&amp;gt; command is defined as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || data || uint8_t[] || The data element to add to the current filter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The data field must be smaller than or equal to 520 bytes in size (the maximum size of any potentially matched object).&lt;br /&gt;
&lt;br /&gt;
The given data element will be added to the Bloom filter. A filter must have been previously provided using &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt;. This command is useful if a new key or script is added to a clients wallet whilst it has connections to the network open, it avoids the need to re-calculate and send an entirely new filter to every peer (though doing so is usually advisable to maintain anonymity).&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filterclear&amp;lt;/code&amp;gt; command has no arguments at all.&lt;br /&gt;
&lt;br /&gt;
After a filter has been set, nodes don&#039;t merely stop announcing non-matching transactions, they can also serve filtered blocks. A filtered block is defined by the &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message and is defined like this:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || uint32_t || Block version information, based upon the software version creating this block&lt;br /&gt;
|-&lt;br /&gt;
| 32 || prev_block || char[32] || The hash value of the previous block this particular block references&lt;br /&gt;
|-&lt;br /&gt;
| 32 || merkle_root || char[32] || The reference to a Merkle tree collection which is a hash of all transactions related to this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || timestamp || uint32_t || A timestamp recording when this block was created (Limited to 2106!)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bits || uint32_t || The calculated difficulty target being used for this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nonce || uint32_t || The nonce used to generate this block… to allow variations of the header and compute different hashes&lt;br /&gt;
|-&lt;br /&gt;
| 4 || total_transactions || uint32_t || Number of transactions in the block (including unmatched ones)&lt;br /&gt;
|-&lt;br /&gt;
| ? || number_of_hashes || varint || Number of hashes&lt;br /&gt;
|-&lt;br /&gt;
| ? || hashes || uint256[] || hashes in depth-first order (&amp;lt;= 32*N bytes)&lt;br /&gt;
|-&lt;br /&gt;
| ? || bytes_of_flags || varint || number of bytes of flag bits (1-3 bytes)&lt;br /&gt;
|-&lt;br /&gt;
| ? || flags || byte[] || flag bits, packed per 8 in a byte, least significant bit first (&amp;lt;= 2*N-1 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See below for the format of the partial merkle tree hashes and flags.&lt;br /&gt;
&lt;br /&gt;
Thus, a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message is a block header, plus a part of a merkle tree which can be used to extract identifying information for transactions that matched the filter and prove that the matching transaction data really did appear in the solved block. Clients can use this data to be sure that the remote node is not feeding them fake transactions that never appeared in a real block, although lying through omission is still possible.&lt;br /&gt;
&lt;br /&gt;
===Extensions to existing messages===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; command is extended with a new field:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 1 byte || fRelay || bool || If false then broadcast transactions will not be announced until a filter{load,add,clear} command is received. If missing or true, no change in protocol behaviour occurs.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
SPV clients that wish to use Bloom filtering would normally set fRelay to false in the version message, then set a filter based on their wallet (or a subset of it, if they are overlapping different peers). Being able to opt-out of inv messages until the filter is set prevents a client being flooded with traffic in the brief window of time between finishing version handshaking and setting the filter.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;getdata&amp;lt;/code&amp;gt; command is extended to allow a new type in the &amp;lt;code&amp;gt;inv&amp;lt;/code&amp;gt; submessage. The type field can now be &amp;lt;code&amp;gt;MSG_FILTERED_BLOCK (== 3)&amp;lt;/code&amp;gt; rather than &amp;lt;code&amp;gt;MSG_BLOCK&amp;lt;/code&amp;gt;. If no filter has been set on the connection, a request for filtered blocks is ignored. If a filter has been set, a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message is returned for the requested block hash. In addition, because a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message contains only a list of transaction hashes, transactions matching the filter should also be sent in separate tx messages. This avoids a slow roundtrip that would otherwise be required (receive hashes, didn&#039;t see some of these transactions yet, ask for them).  Note that because there is currently no way to request transactions which are already in a block from a node (aside from requesting the full block), the set of matching transactions that the requesting node hasn&#039;t either received or announced with an inv must be sent and any additional transactions which match the filter may also be sent.  This allows for clients (such as the reference client) to limit the number of invs it must remember a given node to have announced while still providing nodes with, at a minimum, all the transactions it needs.&lt;br /&gt;
&lt;br /&gt;
===Filter matching algorithm===&lt;br /&gt;
&lt;br /&gt;
The filter can be tested against arbitrary pieces of data, to see if that data was inserted by the client. Therefore the question arises of what pieces of data should be inserted/tested.&lt;br /&gt;
&lt;br /&gt;
To determine if a transaction matches the filter, the following algorithm MUST be used. Once a match is found the algorithm aborts.&lt;br /&gt;
&lt;br /&gt;
# Test the hash of the transaction itself.&lt;br /&gt;
# For each output, test each data element of the output script. This means each hash and key in the output script is tested independently. &#039;&#039;&#039;Important:&#039;&#039;&#039; if an output matches whilst testing a transaction, the node MUST update the filter by inserting the serialized COutPoint structure. See below for more details.&lt;br /&gt;
# For each input, test the serialized COutPoint structure.&lt;br /&gt;
# For each input, test each data element of the input script (note: input scripts only ever contain data elements).&lt;br /&gt;
# Otherwise there is no match.&lt;br /&gt;
&lt;br /&gt;
In this way addresses, keys and script hashes (for P2SH outputs) can all be added to the filter. You can also match against classes of transactions that are marked with well known data elements in either inputs or outputs, for example, to implement various forms of [[Smart property]].&lt;br /&gt;
&lt;br /&gt;
The test for outpoints is there to ensure you can find transactions spending outputs in your wallet, even though you don&#039;t know anything about their form. As you can see, once set on a connection the filter is &#039;&#039;&#039;not static&#039;&#039;&#039; and can change throughout the connections lifetime. This is done to avoid the following race condition:&lt;br /&gt;
&lt;br /&gt;
# A client sets a filter matching a key in their wallet. They then start downloading the block chain. The part of the chain that the client is missing is requested using getblocks.&lt;br /&gt;
# The first block is read from disk by the serving peer. It contains TX 1 which sends money to the clients key. It matches the filter and is thus sent to the client.&lt;br /&gt;
# The second block is read from disk by the serving peer. It contains TX 2 which spends TX 1. However TX 2 does not contain any of the clients keys and is thus not sent. The client does not know the money they received was already spent.&lt;br /&gt;
&lt;br /&gt;
By updating the bloom filter atomically in step 2 with the discovered outpoint, the filter will match against TX 2 in step 3 and the client will learn about all relevant transactions, despite that there is no pause between the node processing the first and second blocks.&lt;br /&gt;
&lt;br /&gt;
===Partial Merkle branch format===&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;Merkle tree&#039;&#039; is a way of arranging a set of items as leaf nodes of tree in which the interior nodes are hashes of the concatenations of their child hashes. The root node is called the &#039;&#039;Merkle root&#039;&#039;. Every Bitcoin block contains a Merkle root of the tree formed from the blocks transactions. By providing some elements of the trees interior nodes (called a &#039;&#039;Merkle branch&#039;&#039;) a proof is formed that the given transaction was indeed in the block when it was being mined, but the size of the proof is much smaller than the size of the original block.&lt;br /&gt;
&lt;br /&gt;
The encoding works as follows: we traverse the tree in depth-first order, storing a bit for each traversed node, signifying whether the node is the parent of at least one matched leaf txid (or a matched txid itself). In case we are at the leaf level, or this bit is 0, its merkle node hash is stored, and its children are not explored further. Otherwise, no hash is stored, but we recurse into both (or the only) child branch. During decoding, the same depth-first traversal is performed, consuming bits and hashes as they written during encoding.&lt;br /&gt;
&lt;br /&gt;
===Bloom filter format===&lt;br /&gt;
&lt;br /&gt;
A Bloom filter is a bit-field in which bits are set based on feeding the data element to a set of different hash functions. The number of hash functions used is a parameter of the filter. In Bitcoin we use version 3 of the 32-bit Murmur hash function. To get N &amp;quot;different&amp;quot; hash functions we simply initialize the Murmur algorithm with the following formula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nHashNum * 0xFBA4C795 + nTweak&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i.e. if the filter is initialized with 4 hash functions and a tweak of 0x00000005, when the second function (index 1) is needed h1 would be equal to 4221880218.&lt;br /&gt;
&lt;br /&gt;
When loading a filter with the &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command, there are two parameters that can be chosen. One is the size of the filter in bytes. The other is the number of hash functions to use. To select the parameters you can use the following formulas:&lt;br /&gt;
&lt;br /&gt;
Let N be the number of elements you wish to insert into the set and P be the probability of a false positive, where 1.0 is &amp;quot;match everything&amp;quot; and zero is unachievable.&lt;br /&gt;
&lt;br /&gt;
The size S of the filter in bytes is given by &amp;lt;code&amp;gt;(-1 / pow(log(2), 2) * N * log(P)) / 8&amp;lt;/code&amp;gt;. Of course you must ensure it does not go over the maximum size (36,000: selected as it represents a filter of 20,000 items with false positive rate of &amp;lt; 0.1% or 10,000 items and a false positive rate of &amp;lt; 0.0001%).&lt;br /&gt;
&lt;br /&gt;
The number of hash functions required is given by &amp;lt;code&amp;gt;S * 8 / N * log(2)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Copyright==&lt;br /&gt;
&lt;br /&gt;
This document is placed in the public domain.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:BIP|D]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=BIP_0037&amp;diff=33872</id>
		<title>BIP 0037</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=BIP_0037&amp;diff=33872"/>
		<updated>2012-12-17T20:59:39Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: re add &amp;lt;code&amp;gt;&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: 37&lt;br /&gt;
  Title: Connection Bloom filtering&lt;br /&gt;
  Author: Mike Hearn &amp;lt;hearn@google.com&amp;gt;, Matt Corallo &amp;lt;bip@bluematt.me&amp;gt;&lt;br /&gt;
  Status: Draft&lt;br /&gt;
  Type: Standards Track&lt;br /&gt;
  Created: 24-10-2012&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
&lt;br /&gt;
This BIP adds new support to the peer-to-peer protocol that allows peers to reduce the amount of transaction data they are sent. Peers have the option of setting &#039;&#039;filters&#039;&#039; on each connection they make after the version handshake has completed. A filter is defined as a [http://en.wikipedia.org/wiki/Bloom_filter Bloom filter] on data derived from transactions. A Bloom filter is a probabilistic data structure which allows for testing set membership - they can have false positives but not false negatives.&lt;br /&gt;
&lt;br /&gt;
This document will not go into the details of how Bloom filters work and the reader is referred to Wikipedia for an introduction to the topic.&lt;br /&gt;
&lt;br /&gt;
==Motivation==&lt;br /&gt;
&lt;br /&gt;
As Bitcoin grows in usage the amount of bandwidth needed to download blocks and transaction broadcasts increases. Clients implementing &#039;&#039;simplified payment verification&#039;&#039; do not attempt to fully verify the block chain, instead just checking that block headers connect together correctly and trusting that the transactions in a chain of high difficulty are in fact valid. See the Bitcoin paper for more detail on this mode.&lt;br /&gt;
&lt;br /&gt;
Today, [[Simplified_Payment_Verification|SPV]] clients have to download the entire contents of blocks and all broadcast transactions, only to throw away the vast majority of the transactions that are not relevant to their wallets. This slows down their synchronization process, wastes users bandwidth (which on phones is often metered) and increases memory usage. All three problems are triggering real user complaints for the Android &amp;quot;Bitcoin Wallet&amp;quot; app which implements SPV mode. In order to make chain synchronization fast, cheap and able to run on older phones with limited memory we want to have remote peers throw away irrelevant transactions before sending them across the network.&lt;br /&gt;
&lt;br /&gt;
==Design rationale==&lt;br /&gt;
&lt;br /&gt;
The most obvious way to implement the stated goal would be for clients to upload lists of their keys to the remote node. We take a more complex approach for the following reasons:&lt;br /&gt;
&lt;br /&gt;
* Privacy: Because Bloom filters are probabilistic, with the false positive rate chosen by the client, nodes can trade off precision vs bandwidth usage. A node with access to lots of bandwidth may choose to have a high FP rate, meaning the remote peer cannot accurately know which transactions belong to the client and which don&#039;t. A node with very little bandwidth may choose to use a very accurate filter meaning that they only get sent transactions actually relevant to their wallet, but remote peers may be able to correlate transactions with IP addresses (and each other).&lt;br /&gt;
* Bloom filters are compact and testing membership in them is fast. This results in satisfying performance characteristics with minimal risk of opening up potential for DoS attacks.&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
&lt;br /&gt;
===New messages===&lt;br /&gt;
&lt;br /&gt;
We start by adding three new messages to the protocol:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt;, which sets the current Bloom filter on the connection&lt;br /&gt;
* &amp;lt;code&amp;gt;filteradd&amp;lt;/code&amp;gt;, which adds the given data element to the connections current filter without requiring a completely new one to be set&lt;br /&gt;
* &amp;lt;code&amp;gt;filterclear&amp;lt;/code&amp;gt;, which deletes the current filter and goes back to regular pre-BIP37 usage.&lt;br /&gt;
&lt;br /&gt;
Note that there is no filterremove command because by their nature, Bloom filters are append-only data structures. Once an element is added it cannot be removed again without rebuilding the entire structure from scratch.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command is defined as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || filter || uint8_t[] || The filter itself is simply a bit field of arbitrary byte-aligned size. The maximum size is 36,000 bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nHashFuncs || uint32_t || The number of hash functions to use in this filter. The maximum value allowed in this field is 50.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See below for a description of the Bloom filter algorithm and how to select nHashFuncs and filter size for a desired false positive rate.&lt;br /&gt;
&lt;br /&gt;
Upon receiving a &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command, the remote peer will immediately restrict the broadcast transactions it announces (in inv packets) to transactions matching the filter, where the matching algorithm is specified below.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filteradd&amp;lt;/code&amp;gt; command is defined as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || data || uint8_t[] || The data element to add to the current filter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The data field must be smaller than or equal to 520 bytes in size (the maximum size of any potentially matched object).&lt;br /&gt;
&lt;br /&gt;
The given data element will be added to the Bloom filter. A filter must have been previously provided using &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt;. This command is useful if a new key or script is added to a clients wallet whilst it has connections to the network open, it avoids the need to re-calculate and send an entirely new filter to every peer (though doing so is usually advisable to maintain anonymity).&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filterclear&amp;lt;/code&amp;gt; command has no arguments at all.&lt;br /&gt;
&lt;br /&gt;
After a filter has been set, nodes don&#039;t merely stop announcing non-matching transactions, they can also serve filtered blocks. A filtered block is defined by the &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message and is defined like this:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || uint32_t || Block version information, based upon the software version creating this block&lt;br /&gt;
|-&lt;br /&gt;
| 32 || prev_block || char[32] || The hash value of the previous block this particular block references&lt;br /&gt;
|-&lt;br /&gt;
| 32 || merkle_root || char[32] || The reference to a Merkle tree collection which is a hash of all transactions related to this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || timestamp || uint32_t || A timestamp recording when this block was created (Limited to 2106!)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bits || uint32_t || The calculated difficulty target being used for this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nonce || uint32_t || The nonce used to generate this block… to allow variations of the header and compute different hashes&lt;br /&gt;
|-&lt;br /&gt;
| 4 || total_transactions || uint32_t || Number of transactions in the block (including unmatched ones)&lt;br /&gt;
|-&lt;br /&gt;
| ? || number_of_hashes || varint || Number of hashes&lt;br /&gt;
|-&lt;br /&gt;
| ? || hashes || uint256[] || hashes in depth-first order (&amp;lt;= 32*N bytes)&lt;br /&gt;
|-&lt;br /&gt;
| ? || bytes_of_flags || varint || number of bytes of flag bits (1-3 bytes)&lt;br /&gt;
|-&lt;br /&gt;
| ? || flags || byte[] || flag bits, packed per 8 in a byte, least significant bit first (&amp;lt;= 2*N-1 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See below for the format of the partial merkle tree hashes and flags.&lt;br /&gt;
&lt;br /&gt;
Thus, a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message is a block header, plus a part of a merkle tree which can be used to extract identifying information for transactions that matched the filter and prove that the matching transaction data really did appear in the solved block. Clients can use this data to be sure that the remote node is not feeding them fake transactions that never appeared in a real block, although lying through omission is still possible.&lt;br /&gt;
&lt;br /&gt;
===Extensions to existing messages===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; command is extended with a new field:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 1 byte || fRelay || bool || If false then broadcast transactions will not be announced until a filter{load,add,clear} command is received. If missing or true, no change in protocol behaviour occurs.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
SPV clients that wish to use Bloom filtering would normally set fRelay to false in the version message, then set a filter based on their wallet (or a subset of it, if they are overlapping different peers). Being able to opt-out of inv messages until the filter is set prevents a client being flooded with traffic in the brief window of time between finishing version handshaking and setting the filter.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;getdata&amp;lt;/code&amp;gt; command is extended to allow a new type in the &amp;lt;code&amp;gt;inv&amp;lt;/code&amp;gt; submessage. The type field can now be &amp;lt;code&amp;gt;MSG_FILTERED_BLOCK (== 3)&amp;lt;/code&amp;gt; rather than &amp;lt;code&amp;gt;MSG_BLOCK&amp;lt;/code&amp;gt;. If no filter has been set on the connection, a request for filtered blocks is ignored. If a filter has been set, a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message is returned for the requested block hash. In addition, because a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message contains only a list of transaction hashes, transactions matching the filter should also be sent in separate tx messages. This avoids a slow roundtrip that would otherwise be required (receive hashes, didn&#039;t see some of these transactions yet, ask for them).  Note that because there is currently no way to request transactions which are already in a block from a node (aside from requesting the full block), the set of matching transactions that the requesting node hasn&#039;t either received or announced with an inv must be sent and any additional transactions which match the filter may also be sent.  This allows for clients (such as the reference client) to limit the number of invs it must remember a given node to have announced while still providing nodes with, at a minimum, all the transactions it needs.&lt;br /&gt;
&lt;br /&gt;
===Filter matching algorithm===&lt;br /&gt;
&lt;br /&gt;
The filter can be tested against arbitrary pieces of data, to see if that data was inserted by the client. Therefore the question arises of what pieces of data should be inserted/tested.&lt;br /&gt;
&lt;br /&gt;
To determine if a transaction matches the filter, the following algorithm MUST be used. Once a match is found the algorithm aborts.&lt;br /&gt;
&lt;br /&gt;
# Test the hash of the transaction itself.&lt;br /&gt;
# For each output, test each data element of the output script. This means each hash and key in the output script is tested independently. &#039;&#039;&#039;Important:&#039;&#039;&#039; if an output matches whilst testing a transaction, the node MUST update the filter by inserting the serialized COutPoint structure. See below for more details.&lt;br /&gt;
# For each input, test the serialized COutPoint structure.&lt;br /&gt;
# For each input, test each data element of the input script (note: input scripts only ever contain data elements).&lt;br /&gt;
# Otherwise there is no match.&lt;br /&gt;
&lt;br /&gt;
In this way addresses, keys and script hashes (for P2SH outputs) can all be added to the filter. You can also match against classes of transactions that are marked with well known data elements in either inputs or outputs, for example, to implement various forms of [[Smart property]].&lt;br /&gt;
&lt;br /&gt;
The test for outpoints is there to ensure you can find transactions spending outputs in your wallet, even though you don&#039;t know anything about their form. As you can see, once set on a connection the filter is &#039;&#039;&#039;not static&#039;&#039;&#039; and can change throughout the connections lifetime. This is done to avoid the following race condition:&lt;br /&gt;
&lt;br /&gt;
# A client sets a filter matching a key in their wallet. They then start downloading the block chain. The part of the chain that the client is missing is requested using getblocks.&lt;br /&gt;
# The first block is read from disk by the serving peer. It contains TX 1 which sends money to the clients key. It matches the filter and is thus sent to the client.&lt;br /&gt;
# The second block is read from disk by the serving peer. It contains TX 2 which spends TX 1. However TX 2 does not contain any of the clients keys and is thus not sent. The client does not know the money they received was already spent.&lt;br /&gt;
&lt;br /&gt;
By updating the bloom filter atomically in step 2 with the discovered outpoint, the filter will match against TX 2 in step 3 and the client will learn about all relevant transactions, despite that there is no pause between the node processing the first and second blocks.&lt;br /&gt;
&lt;br /&gt;
===Partial Merkle branch format===&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;Merkle tree&#039;&#039; is a way of arranging a set of items as leaf nodes of tree in which the interior nodes are hashes of the concatenations of their child hashes. The root node is called the &#039;&#039;Merkle root&#039;&#039;. Every Bitcoin block contains a Merkle root of the tree formed from the blocks transactions. By providing some elements of the trees interior nodes (called a &#039;&#039;Merkle branch&#039;&#039;) a proof is formed that the given transaction was indeed in the block when it was being mined, but the size of the proof is much smaller than the size of the original block.&lt;br /&gt;
&lt;br /&gt;
The encoding works as follows: we traverse the tree in depth-first order, storing a bit for each traversed node, signifying whether the node is the parent of at least one matched leaf txid (or a matched txid itself). In case we are at the leaf level, or this bit is 0, its merkle node hash is stored, and its children are not explored further. Otherwise, no hash is stored, but we recurse into both (or the only) child branch. During decoding, the same depth-first traversal is performed, consuming bits and hashes as they written during encoding.&lt;br /&gt;
&lt;br /&gt;
===Bloom filter format===&lt;br /&gt;
&lt;br /&gt;
A Bloom filter is a bit-field in which bits are set based on feeding the data element to a set of different hash functions. The number of hash functions used is a parameter of the filter. In Bitcoin we use version 3 of the 32-bit Murmur hash function. To get N &amp;quot;different&amp;quot; hash functions we simply initialize the Murmur algorithm with the following formula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nHashNum * (MAX_UINT32 / (nHashFuncs - 1))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i.e. if the filter is initialized with 4 hash functions, when the second function is needed h1 would be equal to 1431655765.&lt;br /&gt;
&lt;br /&gt;
When loading a filter with the &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command, there are two parameters that can be chosen. One is the size of the filter in bytes. The other is the number of hash functions to use. To select the parameters you can use the following formulas:&lt;br /&gt;
&lt;br /&gt;
Let N be the number of elements you wish to insert into the set and P be the probability of a false positive, where 1.0 is &amp;quot;match everything&amp;quot; and zero is unachievable.&lt;br /&gt;
&lt;br /&gt;
The size S of the filter in bytes is given by &amp;lt;code&amp;gt;(-1 / pow(log(2), 2) * N * log(P)) / 8&amp;lt;/code&amp;gt;. Of course you must ensure it does not go over the maximum size (36,000).&lt;br /&gt;
&lt;br /&gt;
The number of hash functions required is given by &amp;lt;code&amp;gt;S * 8 / N * log(2)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Copyright==&lt;br /&gt;
&lt;br /&gt;
This document is placed in the public domain.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:BIP|D]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=BIP_0037&amp;diff=33871</id>
		<title>BIP 0037</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=BIP_0037&amp;diff=33871"/>
		<updated>2012-12-17T20:56:22Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: Require a previous filter before filteradd&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: 37&lt;br /&gt;
  Title: Connection Bloom filtering&lt;br /&gt;
  Author: Mike Hearn &amp;lt;hearn@google.com&amp;gt;, Matt Corallo &amp;lt;bip@bluematt.me&amp;gt;&lt;br /&gt;
  Status: Draft&lt;br /&gt;
  Type: Standards Track&lt;br /&gt;
  Created: 24-10-2012&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
&lt;br /&gt;
This BIP adds new support to the peer-to-peer protocol that allows peers to reduce the amount of transaction data they are sent. Peers have the option of setting &#039;&#039;filters&#039;&#039; on each connection they make after the version handshake has completed. A filter is defined as a [http://en.wikipedia.org/wiki/Bloom_filter Bloom filter] on data derived from transactions. A Bloom filter is a probabilistic data structure which allows for testing set membership - they can have false positives but not false negatives.&lt;br /&gt;
&lt;br /&gt;
This document will not go into the details of how Bloom filters work and the reader is referred to Wikipedia for an introduction to the topic.&lt;br /&gt;
&lt;br /&gt;
==Motivation==&lt;br /&gt;
&lt;br /&gt;
As Bitcoin grows in usage the amount of bandwidth needed to download blocks and transaction broadcasts increases. Clients implementing &#039;&#039;simplified payment verification&#039;&#039; do not attempt to fully verify the block chain, instead just checking that block headers connect together correctly and trusting that the transactions in a chain of high difficulty are in fact valid. See the Bitcoin paper for more detail on this mode.&lt;br /&gt;
&lt;br /&gt;
Today, [[Simplified_Payment_Verification|SPV]] clients have to download the entire contents of blocks and all broadcast transactions, only to throw away the vast majority of the transactions that are not relevant to their wallets. This slows down their synchronization process, wastes users bandwidth (which on phones is often metered) and increases memory usage. All three problems are triggering real user complaints for the Android &amp;quot;Bitcoin Wallet&amp;quot; app which implements SPV mode. In order to make chain synchronization fast, cheap and able to run on older phones with limited memory we want to have remote peers throw away irrelevant transactions before sending them across the network.&lt;br /&gt;
&lt;br /&gt;
==Design rationale==&lt;br /&gt;
&lt;br /&gt;
The most obvious way to implement the stated goal would be for clients to upload lists of their keys to the remote node. We take a more complex approach for the following reasons:&lt;br /&gt;
&lt;br /&gt;
* Privacy: Because Bloom filters are probabilistic, with the false positive rate chosen by the client, nodes can trade off precision vs bandwidth usage. A node with access to lots of bandwidth may choose to have a high FP rate, meaning the remote peer cannot accurately know which transactions belong to the client and which don&#039;t. A node with very little bandwidth may choose to use a very accurate filter meaning that they only get sent transactions actually relevant to their wallet, but remote peers may be able to correlate transactions with IP addresses (and each other).&lt;br /&gt;
* Bloom filters are compact and testing membership in them is fast. This results in satisfying performance characteristics with minimal risk of opening up potential for DoS attacks.&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
&lt;br /&gt;
===New messages===&lt;br /&gt;
&lt;br /&gt;
We start by adding three new messages to the protocol:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt;, which sets the current Bloom filter on the connection&lt;br /&gt;
* &amp;lt;code&amp;gt;filteradd&amp;lt;/code&amp;gt;, which adds the given data element to the connections current filter without requiring a completely new one to be set&lt;br /&gt;
* &amp;lt;code&amp;gt;filterclear&amp;lt;/code&amp;gt;, which deletes the current filter and goes back to regular pre-BIP37 usage.&lt;br /&gt;
&lt;br /&gt;
Note that there is no filterremove command because by their nature, Bloom filters are append-only data structures. Once an element is added it cannot be removed again without rebuilding the entire structure from scratch.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command is defined as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || filter || uint8_t[] || The filter itself is simply a bit field of arbitrary byte-aligned size. The maximum size is 36,000 bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nHashFuncs || uint32_t || The number of hash functions to use in this filter. The maximum value allowed in this field is 50.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See below for a description of the Bloom filter algorithm and how to select nHashFuncs and filter size for a desired false positive rate.&lt;br /&gt;
&lt;br /&gt;
Upon receiving a &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command, the remote peer will immediately restrict the broadcast transactions it announces (in inv packets) to transactions matching the filter, where the matching algorithm is specified below.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filteradd&amp;lt;/code&amp;gt; command is defined as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || data || uint8_t[] || The data element to add to the current filter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The data field must be smaller than or equal to 520 bytes in size (the maximum size of any potentially matched object).&lt;br /&gt;
&lt;br /&gt;
The given data element will be added to the Bloom filter. A filter must have been previously provided using filterload. This command is useful if a new key or script is added to a clients wallet whilst it has connections to the network open, it avoids the need to re-calculate and send an entirely new filter to every peer (though doing so is usually advisable to maintain anonymity).&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filterclear&amp;lt;/code&amp;gt; command has no arguments at all.&lt;br /&gt;
&lt;br /&gt;
After a filter has been set, nodes don&#039;t merely stop announcing non-matching transactions, they can also serve filtered blocks. A filtered block is defined by the &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message and is defined like this:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || uint32_t || Block version information, based upon the software version creating this block&lt;br /&gt;
|-&lt;br /&gt;
| 32 || prev_block || char[32] || The hash value of the previous block this particular block references&lt;br /&gt;
|-&lt;br /&gt;
| 32 || merkle_root || char[32] || The reference to a Merkle tree collection which is a hash of all transactions related to this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || timestamp || uint32_t || A timestamp recording when this block was created (Limited to 2106!)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bits || uint32_t || The calculated difficulty target being used for this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nonce || uint32_t || The nonce used to generate this block… to allow variations of the header and compute different hashes&lt;br /&gt;
|-&lt;br /&gt;
| 4 || total_transactions || uint32_t || Number of transactions in the block (including unmatched ones)&lt;br /&gt;
|-&lt;br /&gt;
| ? || number_of_hashes || varint || Number of hashes&lt;br /&gt;
|-&lt;br /&gt;
| ? || hashes || uint256[] || hashes in depth-first order (&amp;lt;= 32*N bytes)&lt;br /&gt;
|-&lt;br /&gt;
| ? || bytes_of_flags || varint || number of bytes of flag bits (1-3 bytes)&lt;br /&gt;
|-&lt;br /&gt;
| ? || flags || byte[] || flag bits, packed per 8 in a byte, least significant bit first (&amp;lt;= 2*N-1 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See below for the format of the partial merkle tree hashes and flags.&lt;br /&gt;
&lt;br /&gt;
Thus, a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message is a block header, plus a part of a merkle tree which can be used to extract identifying information for transactions that matched the filter and prove that the matching transaction data really did appear in the solved block. Clients can use this data to be sure that the remote node is not feeding them fake transactions that never appeared in a real block, although lying through omission is still possible.&lt;br /&gt;
&lt;br /&gt;
===Extensions to existing messages===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; command is extended with a new field:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 1 byte || fRelay || bool || If false then broadcast transactions will not be announced until a filter{load,add,clear} command is received. If missing or true, no change in protocol behaviour occurs.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
SPV clients that wish to use Bloom filtering would normally set fRelay to false in the version message, then set a filter based on their wallet (or a subset of it, if they are overlapping different peers). Being able to opt-out of inv messages until the filter is set prevents a client being flooded with traffic in the brief window of time between finishing version handshaking and setting the filter.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;getdata&amp;lt;/code&amp;gt; command is extended to allow a new type in the &amp;lt;code&amp;gt;inv&amp;lt;/code&amp;gt; submessage. The type field can now be &amp;lt;code&amp;gt;MSG_FILTERED_BLOCK (== 3)&amp;lt;/code&amp;gt; rather than &amp;lt;code&amp;gt;MSG_BLOCK&amp;lt;/code&amp;gt;. If no filter has been set on the connection, a request for filtered blocks is ignored. If a filter has been set, a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message is returned for the requested block hash. In addition, because a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message contains only a list of transaction hashes, transactions matching the filter should also be sent in separate tx messages. This avoids a slow roundtrip that would otherwise be required (receive hashes, didn&#039;t see some of these transactions yet, ask for them).  Note that because there is currently no way to request transactions which are already in a block from a node (aside from requesting the full block), the set of matching transactions that the requesting node hasn&#039;t either received or announced with an inv must be sent and any additional transactions which match the filter may also be sent.  This allows for clients (such as the reference client) to limit the number of invs it must remember a given node to have announced while still providing nodes with, at a minimum, all the transactions it needs.&lt;br /&gt;
&lt;br /&gt;
===Filter matching algorithm===&lt;br /&gt;
&lt;br /&gt;
The filter can be tested against arbitrary pieces of data, to see if that data was inserted by the client. Therefore the question arises of what pieces of data should be inserted/tested.&lt;br /&gt;
&lt;br /&gt;
To determine if a transaction matches the filter, the following algorithm MUST be used. Once a match is found the algorithm aborts.&lt;br /&gt;
&lt;br /&gt;
# Test the hash of the transaction itself.&lt;br /&gt;
# For each output, test each data element of the output script. This means each hash and key in the output script is tested independently. &#039;&#039;&#039;Important:&#039;&#039;&#039; if an output matches whilst testing a transaction, the node MUST update the filter by inserting the serialized COutPoint structure. See below for more details.&lt;br /&gt;
# For each input, test the serialized COutPoint structure.&lt;br /&gt;
# For each input, test each data element of the input script (note: input scripts only ever contain data elements).&lt;br /&gt;
# Otherwise there is no match.&lt;br /&gt;
&lt;br /&gt;
In this way addresses, keys and script hashes (for P2SH outputs) can all be added to the filter. You can also match against classes of transactions that are marked with well known data elements in either inputs or outputs, for example, to implement various forms of [[Smart property]].&lt;br /&gt;
&lt;br /&gt;
The test for outpoints is there to ensure you can find transactions spending outputs in your wallet, even though you don&#039;t know anything about their form. As you can see, once set on a connection the filter is &#039;&#039;&#039;not static&#039;&#039;&#039; and can change throughout the connections lifetime. This is done to avoid the following race condition:&lt;br /&gt;
&lt;br /&gt;
# A client sets a filter matching a key in their wallet. They then start downloading the block chain. The part of the chain that the client is missing is requested using getblocks.&lt;br /&gt;
# The first block is read from disk by the serving peer. It contains TX 1 which sends money to the clients key. It matches the filter and is thus sent to the client.&lt;br /&gt;
# The second block is read from disk by the serving peer. It contains TX 2 which spends TX 1. However TX 2 does not contain any of the clients keys and is thus not sent. The client does not know the money they received was already spent.&lt;br /&gt;
&lt;br /&gt;
By updating the bloom filter atomically in step 2 with the discovered outpoint, the filter will match against TX 2 in step 3 and the client will learn about all relevant transactions, despite that there is no pause between the node processing the first and second blocks.&lt;br /&gt;
&lt;br /&gt;
===Partial Merkle branch format===&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;Merkle tree&#039;&#039; is a way of arranging a set of items as leaf nodes of tree in which the interior nodes are hashes of the concatenations of their child hashes. The root node is called the &#039;&#039;Merkle root&#039;&#039;. Every Bitcoin block contains a Merkle root of the tree formed from the blocks transactions. By providing some elements of the trees interior nodes (called a &#039;&#039;Merkle branch&#039;&#039;) a proof is formed that the given transaction was indeed in the block when it was being mined, but the size of the proof is much smaller than the size of the original block.&lt;br /&gt;
&lt;br /&gt;
The encoding works as follows: we traverse the tree in depth-first order, storing a bit for each traversed node, signifying whether the node is the parent of at least one matched leaf txid (or a matched txid itself). In case we are at the leaf level, or this bit is 0, its merkle node hash is stored, and its children are not explored further. Otherwise, no hash is stored, but we recurse into both (or the only) child branch. During decoding, the same depth-first traversal is performed, consuming bits and hashes as they written during encoding.&lt;br /&gt;
&lt;br /&gt;
===Bloom filter format===&lt;br /&gt;
&lt;br /&gt;
A Bloom filter is a bit-field in which bits are set based on feeding the data element to a set of different hash functions. The number of hash functions used is a parameter of the filter. In Bitcoin we use version 3 of the 32-bit Murmur hash function. To get N &amp;quot;different&amp;quot; hash functions we simply initialize the Murmur algorithm with the following formula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nHashNum * (MAX_UINT32 / (nHashFuncs - 1))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i.e. if the filter is initialized with 4 hash functions, when the second function is needed h1 would be equal to 1431655765.&lt;br /&gt;
&lt;br /&gt;
When loading a filter with the &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command, there are two parameters that can be chosen. One is the size of the filter in bytes. The other is the number of hash functions to use. To select the parameters you can use the following formulas:&lt;br /&gt;
&lt;br /&gt;
Let N be the number of elements you wish to insert into the set and P be the probability of a false positive, where 1.0 is &amp;quot;match everything&amp;quot; and zero is unachievable.&lt;br /&gt;
&lt;br /&gt;
The size S of the filter in bytes is given by &amp;lt;code&amp;gt;(-1 / pow(log(2), 2) * N * log(P)) / 8&amp;lt;/code&amp;gt;. Of course you must ensure it does not go over the maximum size (36,000).&lt;br /&gt;
&lt;br /&gt;
The number of hash functions required is given by &amp;lt;code&amp;gt;S * 8 / N * log(2)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Copyright==&lt;br /&gt;
&lt;br /&gt;
This document is placed in the public domain.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:BIP|D]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=BIP_0037&amp;diff=33767</id>
		<title>BIP 0037</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=BIP_0037&amp;diff=33767"/>
		<updated>2012-12-15T00:23:30Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: Update for PMT&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: 37&lt;br /&gt;
  Title: Connection Bloom filtering&lt;br /&gt;
  Author: Mike Hearn &amp;lt;hearn@google.com&amp;gt;, Matt Corallo &amp;lt;bip@bluematt.me&amp;gt;&lt;br /&gt;
  Status: Draft&lt;br /&gt;
  Type: Standards Track&lt;br /&gt;
  Created: 24-10-2012&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
&lt;br /&gt;
This BIP adds new support to the peer-to-peer protocol that allows peers to reduce the amount of transaction data they are sent. Peers have the option of setting &#039;&#039;filters&#039;&#039; on each connection they make after the version handshake has completed. A filter is defined as a [http://en.wikipedia.org/wiki/Bloom_filter Bloom filter] on data derived from transactions. A Bloom filter is a probabilistic data structure which allows for testing set membership - they can have false positives but not false negatives.&lt;br /&gt;
&lt;br /&gt;
This document will not go into the details of how Bloom filters work and the reader is referred to Wikipedia for an introduction to the topic.&lt;br /&gt;
&lt;br /&gt;
==Motivation==&lt;br /&gt;
&lt;br /&gt;
As Bitcoin grows in usage the amount of bandwidth needed to download blocks and transaction broadcasts increases. Clients implementing &#039;&#039;simplified payment verification&#039;&#039; do not attempt to fully verify the block chain, instead just checking that block headers connect together correctly and trusting that the transactions in a chain of high difficulty are in fact valid. See the Bitcoin paper for more detail on this mode.&lt;br /&gt;
&lt;br /&gt;
Today, [[Simplified_Payment_Verification|SPV]] clients have to download the entire contents of blocks and all broadcast transactions, only to throw away the vast majority of the transactions that are not relevant to their wallets. This slows down their synchronization process, wastes users bandwidth (which on phones is often metered) and increases memory usage. All three problems are triggering real user complaints for the Android &amp;quot;Bitcoin Wallet&amp;quot; app which implements SPV mode. In order to make chain synchronization fast, cheap and able to run on older phones with limited memory we want to have remote peers throw away irrelevant transactions before sending them across the network.&lt;br /&gt;
&lt;br /&gt;
==Design rationale==&lt;br /&gt;
&lt;br /&gt;
The most obvious way to implement the stated goal would be for clients to upload lists of their keys to the remote node. We take a more complex approach for the following reasons:&lt;br /&gt;
&lt;br /&gt;
* Privacy: Because Bloom filters are probabilistic, with the false positive rate chosen by the client, nodes can trade off precision vs bandwidth usage. A node with access to lots of bandwidth may choose to have a high FP rate, meaning the remote peer cannot accurately know which transactions belong to the client and which don&#039;t. A node with very little bandwidth may choose to use a very accurate filter meaning that they only get sent transactions actually relevant to their wallet, but remote peers may be able to correlate transactions with IP addresses (and each other).&lt;br /&gt;
* Bloom filters are compact and testing membership in them is fast. This results in satisfying performance characteristics with minimal risk of opening up potential for DoS attacks.&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
&lt;br /&gt;
===New messages===&lt;br /&gt;
&lt;br /&gt;
We start by adding three new messages to the protocol:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt;, which sets the current Bloom filter on the connection&lt;br /&gt;
* &amp;lt;code&amp;gt;filteradd&amp;lt;/code&amp;gt;, which adds the given data element to the connections current filter without requiring a completely new one to be set&lt;br /&gt;
* &amp;lt;code&amp;gt;filterclear&amp;lt;/code&amp;gt;, which deletes the current filter and goes back to regular pre-BIP37 usage.&lt;br /&gt;
&lt;br /&gt;
Note that there is no filterremove command because by their nature, Bloom filters are append-only data structures. Once an element is added it cannot be removed again without rebuilding the entire structure from scratch.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command is defined as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || filter || uint8_t[] || The filter itself is simply a bit field of arbitrary byte-aligned size. The maximum size is 36,000 bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nHashFuncs || uint32_t || The number of hash functions to use in this filter. The maximum value allowed in this field is 50.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See below for a description of the Bloom filter algorithm and how to select nHashFuncs and filter size for a desired false positive rate.&lt;br /&gt;
&lt;br /&gt;
Upon receiving a &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command, the remote peer will immediately restrict the broadcast transactions it announces (in inv packets) to transactions matching the filter, where the matching algorithm is specified below.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filteradd&amp;lt;/code&amp;gt; command is defined as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || data || uint8_t[] || The data element to add to the current filter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The data field must be smaller than or equal to 520 bytes in size (the maximum size of any potentially matched object).&lt;br /&gt;
&lt;br /&gt;
The given data element will be added to the Bloom filter. If no filter has been previously provided using &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt;, a new one will be initialized that would have a false positive rate of, at a minimum, 0.1% with 1000 inserted elements. This command is useful if a new key or script is added to a clients wallet whilst it has connections to the network open, it avoids the need to re-calculate and send an entirely new filter to every peer.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filterclear&amp;lt;/code&amp;gt; command has no arguments at all.&lt;br /&gt;
&lt;br /&gt;
After a filter has been set, nodes don&#039;t merely stop announcing non-matching transactions, they can also serve filtered blocks. A filtered block is defined by the &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message and is defined like this:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || uint32_t || Block version information, based upon the software version creating this block&lt;br /&gt;
|-&lt;br /&gt;
| 32 || prev_block || char[32] || The hash value of the previous block this particular block references&lt;br /&gt;
|-&lt;br /&gt;
| 32 || merkle_root || char[32] || The reference to a Merkle tree collection which is a hash of all transactions related to this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || timestamp || uint32_t || A timestamp recording when this block was created (Limited to 2106!)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bits || uint32_t || The calculated difficulty target being used for this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nonce || uint32_t || The nonce used to generate this block… to allow variations of the header and compute different hashes&lt;br /&gt;
|-&lt;br /&gt;
| 4 || total_transactions || uint32_t || Number of transactions in the block (including unmatched ones)&lt;br /&gt;
|-&lt;br /&gt;
| ? || number_of_hashes || varint || Number of hashes&lt;br /&gt;
|-&lt;br /&gt;
| ? || hashes || uint256[] || hashes in depth-first order (&amp;lt;= 32*N bytes)&lt;br /&gt;
|-&lt;br /&gt;
| ? || bytes_of_flags || varint || number of bytes of flag bits (1-3 bytes)&lt;br /&gt;
|-&lt;br /&gt;
| ? || flags || byte[] || flag bits, packed per 8 in a byte, least significant bit first (&amp;lt;= 2*N-1 bits)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See below for the format of the partial merkle tree hashes and flags.&lt;br /&gt;
&lt;br /&gt;
Thus, a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message is a block header, plus a part of a merkle tree which can be used to extract identifying information for transactions that matched the filter and prove that the matching transaction data really did appear in the solved block. Clients can use this data to be sure that the remote node is not feeding them fake transactions that never appeared in a real block, although lying through omission is still possible.&lt;br /&gt;
&lt;br /&gt;
===Extensions to existing messages===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; command is extended with a new field:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 1 byte || fRelay || bool || If false then broadcast transactions will not be announced until a filter{load,add,clear} command is received. If missing or true, no change in protocol behaviour occurs.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
SPV clients that wish to use Bloom filtering would normally set fRelay to false in the version message, then set a filter based on their wallet (or a subset of it, if they are overlapping different peers). Being able to opt-out of inv messages until the filter is set prevents a client being flooded with traffic in the brief window of time between finishing version handshaking and setting the filter.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;getdata&amp;lt;/code&amp;gt; command is extended to allow a new type in the &amp;lt;code&amp;gt;inv&amp;lt;/code&amp;gt; submessage. The type field can now be &amp;lt;code&amp;gt;MSG_FILTERED_BLOCK (== 3)&amp;lt;/code&amp;gt; rather than &amp;lt;code&amp;gt;MSG_BLOCK&amp;lt;/code&amp;gt;. If no filter has been set on the connection, a request for filtered blocks is ignored. If a filter has been set, a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message is returned for the requested block hash. In addition, because a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message contains only a list of transaction hashes, transactions matching the filter should also be sent in separate tx messages. This avoids a slow roundtrip that would otherwise be required (receive hashes, didn&#039;t see some of these transactions yet, ask for them).  Note that because there is currently no way to request transactions which are already in a block from a node (aside from requesting the full block), the set of matching transactions that the requesting node hasn&#039;t either received or announced with an inv must be sent and any additional transactions which match the filter may also be sent.  This allows for clients (such as the reference client) to limit the number of invs it must remember a given node to have announced while still providing nodes with, at a minimum, all the transactions it needs.&lt;br /&gt;
&lt;br /&gt;
===Filter matching algorithm===&lt;br /&gt;
&lt;br /&gt;
The filter can be tested against arbitrary pieces of data, to see if that data was inserted by the client. Therefore the question arises of what pieces of data should be inserted/tested.&lt;br /&gt;
&lt;br /&gt;
To determine if a transaction matches the filter, the following algorithm MUST be used. Once a match is found the algorithm aborts.&lt;br /&gt;
&lt;br /&gt;
# Test the hash of the transaction itself.&lt;br /&gt;
# For each output, test each data element of the output script. This means each hash and key in the output script is tested independently. &#039;&#039;&#039;Important:&#039;&#039;&#039; if an output matches whilst testing a transaction, the node MUST update the filter by inserting the serialized COutPoint structure. See below for more details.&lt;br /&gt;
# For each input, test the serialized COutPoint structure.&lt;br /&gt;
# For each input, test each data element of the input script (note: input scripts only ever contain data elements).&lt;br /&gt;
# Otherwise there is no match.&lt;br /&gt;
&lt;br /&gt;
In this way addresses, keys and script hashes (for P2SH outputs) can all be added to the filter. You can also match against classes of transactions that are marked with well known data elements in either inputs or outputs, for example, to implement various forms of [[Smart property]].&lt;br /&gt;
&lt;br /&gt;
The test for outpoints is there to ensure you can find transactions spending outputs in your wallet, even though you don&#039;t know anything about their form. As you can see, once set on a connection the filter is &#039;&#039;&#039;not static&#039;&#039;&#039; and can change throughout the connections lifetime. This is done to avoid the following race condition:&lt;br /&gt;
&lt;br /&gt;
# A client sets a filter matching a key in their wallet. They then start downloading the block chain. The part of the chain that the client is missing is requested using getblocks.&lt;br /&gt;
# The first block is read from disk by the serving peer. It contains TX 1 which sends money to the clients key. It matches the filter and is thus sent to the client.&lt;br /&gt;
# The second block is read from disk by the serving peer. It contains TX 2 which spends TX 1. However TX 2 does not contain any of the clients keys and is thus not sent. The client does not know the money they received was already spent.&lt;br /&gt;
&lt;br /&gt;
By updating the bloom filter atomically in step 2 with the discovered outpoint, the filter will match against TX 2 in step 3 and the client will learn about all relevant transactions, despite that there is no pause between the node processing the first and second blocks.&lt;br /&gt;
&lt;br /&gt;
===Partial Merkle branch format===&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;Merkle tree&#039;&#039; is a way of arranging a set of items as leaf nodes of tree in which the interior nodes are hashes of the concatenations of their child hashes. The root node is called the &#039;&#039;Merkle root&#039;&#039;. Every Bitcoin block contains a Merkle root of the tree formed from the blocks transactions. By providing some elements of the trees interior nodes (called a &#039;&#039;Merkle branch&#039;&#039;) a proof is formed that the given transaction was indeed in the block when it was being mined, but the size of the proof is much smaller than the size of the original block.&lt;br /&gt;
&lt;br /&gt;
The encoding works as follows: we traverse the tree in depth-first order, storing a bit for each traversed node, signifying whether the node is the parent of at least one matched leaf txid (or a matched txid itself). In case we are at the leaf level, or this bit is 0, its merkle node hash is stored, and its children are not explored further. Otherwise, no hash is stored, but we recurse into both (or the only) child branch. During decoding, the same depth-first traversal is performed, consuming bits and hashes as they written during encoding.&lt;br /&gt;
&lt;br /&gt;
===Bloom filter format===&lt;br /&gt;
&lt;br /&gt;
A Bloom filter is a bit-field in which bits are set based on feeding the data element to a set of different hash functions. The number of hash functions used is a parameter of the filter. In Bitcoin we use version 3 of the 32-bit Murmur hash function. To get N &amp;quot;different&amp;quot; hash functions we simply initialize the Murmur algorithm with the following formula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nHashNum * (MAX_UINT32 / (nHashFuncs - 1))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i.e. if the filter is initialized with 4 hash functions, when the second function is needed h1 would be equal to 1431655765.&lt;br /&gt;
&lt;br /&gt;
When loading a filter with the &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command, there are two parameters that can be chosen. One is the size of the filter in bytes. The other is the number of hash functions to use. To select the parameters you can use the following formulas:&lt;br /&gt;
&lt;br /&gt;
Let N be the number of elements you wish to insert into the set and P be the probability of a false positive, where 1.0 is &amp;quot;match everything&amp;quot; and zero is unachievable.&lt;br /&gt;
&lt;br /&gt;
The size S of the filter in bytes is given by &amp;lt;code&amp;gt;(-1 / pow(log(2), 2) * N * log(P)) / 8&amp;lt;/code&amp;gt;. Of course you must ensure it does not go over the maximum size (36,000).&lt;br /&gt;
&lt;br /&gt;
The number of hash functions required is given by &amp;lt;code&amp;gt;S * 8 / N * log(2)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Copyright==&lt;br /&gt;
&lt;br /&gt;
This document is placed in the public domain.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:BIP|D]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Developers&amp;diff=33596</id>
		<title>Developers</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Developers&amp;diff=33596"/>
		<updated>2012-12-11T04:07:26Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* &#039;&#039;&#039;This list is not complete.&#039;&#039;&#039; Please make updates/corrections as needed.&lt;br /&gt;
* Attempt to sort by contribution&lt;br /&gt;
* Legend:&lt;br /&gt;
** &amp;quot;Author&amp;quot; = original author; &amp;quot;Lead&amp;quot; = current project lead&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;background:#90ff90&amp;quot; | active maintainer&lt;br /&gt;
| style=&amp;quot;background:#ffffaa&amp;quot; | has made contributions&lt;br /&gt;
| style=&amp;quot;background:#ff9090&amp;quot; | no involvement&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Name !! Reference !! BitcoinJ !! BFGMiner !! Tools !! Spesmilo !! Gentoo !! Supybot !! Other&lt;br /&gt;
|-&lt;br /&gt;
| Satoshi Nakamoto&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author/Retired&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| Bitcoin original designer&lt;br /&gt;
|-&lt;br /&gt;
| [[Gavin Andresen]]&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Lead&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| sirius-m&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Retired&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| tcatm&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Jeff Garzik&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Retired&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|pushpool&lt;br /&gt;
|-&lt;br /&gt;
| TD&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Daniel Folkinshteyn&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Luke Dashjr&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Maintainer&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|URI, Wallet protocols, Eloipool&lt;br /&gt;
|-&lt;br /&gt;
| genjix&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| https://bitcoinconsultancy.com/wiki/index.php/Libbitcoin&lt;br /&gt;
|-&lt;br /&gt;
| Matt Giuca&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Con Kolivas&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Mizery De Aria&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Laurent Bachelier&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Florian Schmaus&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| BioMike&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Chris Moore&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Matt Corallo&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Pieter Wuille&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Marius Hanne&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| David FRANCOIS&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Nils Schneider&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Giel van Schijndel&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Fabian H jr.&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| ovdeathiam&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dev Random&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Michal Zima&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Venkatesh Srinivas&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Vegard Nossum&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| JoelKatz&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Joerie de Gram&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Johannes Henninger&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jeroenz0r&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Han Lin Yap&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Wladimir J. van der Laan&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Abraham Jewowich&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Michael Bemmerl&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Eric Hosmer&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dawid Spiechowicz&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Stéphane Gimenez&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Patrick Varilly&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jay Weisskopf&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dylan Noblesmith&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| James Burkle&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jordan Lewis&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dean Lee&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| xHire&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| HostFat&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jakob Kramer&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| ariel&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| dabaopku&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Federico Faggiano&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| m0ray&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Danube&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Carlos Pizarro&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Blitzboom&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Daniel Holbert&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jaromil&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Carlo Alberto Ferraris&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Forrest Voight&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Amir Yalon&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| John Maguire&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Ricardo M. Correia&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dan Helfman&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| gjs278&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dan Loewenherz&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Eric Swanson&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Santiago M. Mola&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Shane Wegner&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Sven Slootweg&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| ojab&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| sandos&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Witchspace&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| laszloh&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Original client developers]]&lt;br /&gt;
* [[People]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Developers&amp;diff=33595</id>
		<title>Developers</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Developers&amp;diff=33595"/>
		<updated>2012-12-11T04:06:13Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* &#039;&#039;&#039;This list is not complete.&#039;&#039;&#039; Please make updates/corrections as needed.&lt;br /&gt;
* Attempt to sort by contribution&lt;br /&gt;
* Legend:&lt;br /&gt;
** &amp;quot;Author&amp;quot; = original author; &amp;quot;Lead&amp;quot; = current project lead&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;background:#90ff90&amp;quot; | active maintainer&lt;br /&gt;
| style=&amp;quot;background:#ffffaa&amp;quot; | has made contributions&lt;br /&gt;
| style=&amp;quot;background:#ff9090&amp;quot; | no involvement&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Name !! Reference !! BitcoinJ !! BFGMiner !! Tools !! Spesmilo !! Gentoo !! Supybot !! Other&lt;br /&gt;
|-&lt;br /&gt;
| Satoshi Nakamoto&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author/Retired&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| Bitcoin original designer&lt;br /&gt;
|-&lt;br /&gt;
| [[Gavin Andresen]]&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Lead&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| sirius-m&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Retired&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| tcatm&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Jeff Garzik&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Retired&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|pushpool&lt;br /&gt;
|-&lt;br /&gt;
| TD&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Daniel Folkinshteyn&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Luke Dashjr&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Maintainer&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|URI, Wallet protocols, Eloipool&lt;br /&gt;
|-&lt;br /&gt;
| genjix&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| https://bitcoinconsultancy.com/wiki/index.php/Libbitcoin&lt;br /&gt;
|-&lt;br /&gt;
| Matt Giuca&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Con Kolivas&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Mizery De Aria&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Laurent Bachelier&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Florian Schmaus&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| BioMike&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Chris Moore&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Matt Corallo&lt;br /&gt;
| {{Table value Yes}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Pieter Wuille&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Marius Hanne&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| David FRANCOIS&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Nils Schneider&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Giel van Schijndel&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Fabian H jr.&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| ovdeathiam&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dev Random&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Michal Zima&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Venkatesh Srinivas&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Vegard Nossum&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| JoelKatz&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Joerie de Gram&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Johannes Henninger&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jeroenz0r&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Han Lin Yap&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Wladimir J. van der Laan&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Abraham Jewowich&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Michael Bemmerl&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Eric Hosmer&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dawid Spiechowicz&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Stéphane Gimenez&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Patrick Varilly&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jay Weisskopf&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dylan Noblesmith&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| James Burkle&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jordan Lewis&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dean Lee&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| xHire&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| HostFat&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jakob Kramer&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| ariel&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| dabaopku&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Federico Faggiano&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| m0ray&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Danube&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Carlos Pizarro&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Blitzboom&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Daniel Holbert&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jaromil&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Carlo Alberto Ferraris&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Forrest Voight&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Amir Yalon&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| John Maguire&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Ricardo M. Correia&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dan Helfman&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| gjs278&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dan Loewenherz&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Eric Swanson&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Santiago M. Mola&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Shane Wegner&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Sven Slootweg&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| ojab&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| sandos&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Witchspace&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| laszloh&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Original client developers]]&lt;br /&gt;
* [[People]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Developers&amp;diff=33594</id>
		<title>Developers</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Developers&amp;diff=33594"/>
		<updated>2012-12-11T04:05:24Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* &#039;&#039;&#039;This list is not complete.&#039;&#039;&#039; Please make updates/corrections as needed.&lt;br /&gt;
* Attempt to sort by contribution&lt;br /&gt;
* Legend:&lt;br /&gt;
** &amp;quot;Author&amp;quot; = original author; &amp;quot;Lead&amp;quot; = current project lead&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;background:#90ff90&amp;quot; | active maintainer&lt;br /&gt;
| style=&amp;quot;background:#ffffaa&amp;quot; | has made contributions&lt;br /&gt;
| style=&amp;quot;background:#ff9090&amp;quot; | no involvement&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Name !! Reference !! BitcoinJ !! BFGMiner !! Tools !! Spesmilo !! Gentoo !! Supybot !! Other&lt;br /&gt;
|-&lt;br /&gt;
| Satoshi Nakamoto&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author/Retired&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| Bitcoin original designer&lt;br /&gt;
|-&lt;br /&gt;
| [[Gavin Andresen]]&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Lead&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| sirius-m&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Retired&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| tcatm&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Jeff Garzik&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Retired&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|pushpool&lt;br /&gt;
|-&lt;br /&gt;
| TD&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Daniel Folkinshteyn&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Luke Dashjr&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Maintainer&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|URI, Wallet protocols, Eloipool&lt;br /&gt;
|-&lt;br /&gt;
| genjix&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| https://bitcoinconsultancy.com/wiki/index.php/Libbitcoin&lt;br /&gt;
|-&lt;br /&gt;
| Matt Giuca&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Con Kolivas&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Mizery De Aria&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Laurent Bachelier&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Florian Schmaus&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| BioMike&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Chris Moore&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Matt Corallo&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Pieter Wuille&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Marius Hanne&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| David FRANCOIS&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Nils Schneider&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Giel van Schijndel&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Fabian H jr.&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| ovdeathiam&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dev Random&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Michal Zima&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Venkatesh Srinivas&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Vegard Nossum&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| JoelKatz&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Joerie de Gram&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Johannes Henninger&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jeroenz0r&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Han Lin Yap&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Wladimir J. van der Laan&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Abraham Jewowich&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Michael Bemmerl&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Eric Hosmer&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dawid Spiechowicz&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Stéphane Gimenez&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Patrick Varilly&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jay Weisskopf&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dylan Noblesmith&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| James Burkle&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jordan Lewis&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dean Lee&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| xHire&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| HostFat&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jakob Kramer&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| ariel&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| dabaopku&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Federico Faggiano&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| m0ray&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Danube&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Carlos Pizarro&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Blitzboom&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Daniel Holbert&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jaromil&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Carlo Alberto Ferraris&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Forrest Voight&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Amir Yalon&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| John Maguire&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Ricardo M. Correia&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dan Helfman&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| gjs278&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dan Loewenherz&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Eric Swanson&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Santiago M. Mola&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Shane Wegner&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Sven Slootweg&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| ojab&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| sandos&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Witchspace&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| laszloh&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Original client developers]]&lt;br /&gt;
* [[People]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Developers&amp;diff=33593</id>
		<title>Developers</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Developers&amp;diff=33593"/>
		<updated>2012-12-11T04:05:08Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* &#039;&#039;&#039;This list is not complete.&#039;&#039;&#039; Please make updates/corrections as needed.&lt;br /&gt;
* Attempt to sort by contribution&lt;br /&gt;
* Legend:&lt;br /&gt;
** &amp;quot;Author&amp;quot; = original author; &amp;quot;Lead&amp;quot; = current project lead&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;background:#90ff90&amp;quot; | active maintainer&lt;br /&gt;
| style=&amp;quot;background:#ffffaa&amp;quot; | has made contributions&lt;br /&gt;
| style=&amp;quot;background:#ff9090&amp;quot; | no involvement&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Name !! Reference !! BitcoinJ !! BFGMiner !! Tools !! Spesmilo !! Gentoo !! Supybot !! Other&lt;br /&gt;
|-&lt;br /&gt;
| Satoshi Nakamoto&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author/Retired&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| Bitcoin original designer&lt;br /&gt;
|-&lt;br /&gt;
| [[Gavin Andresen]]&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Lead&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| sirius-m&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Retired&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| tcatm&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Jeff Garzik&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Retired&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|pushpool&lt;br /&gt;
|-&lt;br /&gt;
| TD&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Daniel Folkinshteyn&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Luke Dashjr&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Maintainer&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|URI, Wallet protocols, Eloipool&lt;br /&gt;
|-&lt;br /&gt;
| genjix&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| https://bitcoinconsultancy.com/wiki/index.php/Libbitcoin&lt;br /&gt;
|-&lt;br /&gt;
| Matt Giuca&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Con Kolivas&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Mizery De Aria&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Laurent Bachelier&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Florian Schmaus&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| BioMike&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Chris Moore&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Matt Corallo&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Pieter Wuille&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Marius Hanne&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| David FRANCOIS&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Nils Schneider&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Giel van Schijndel&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Fabian H jr.&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| ovdeathiam&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dev Random&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Michal Zima&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Venkatesh Srinivas&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Vegard Nossum&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| JoelKatz&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Joerie de Gram&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Johannes Henninger&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jeroenz0r&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Han Lin Yap&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Wladimir J. van der Laan&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Abraham Jewowich&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Michael Bemmerl&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Eric Hosmer&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dawid Spiechowicz&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Stéphane Gimenez&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Patrick Varilly&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jay Weisskopf&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dylan Noblesmith&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| James Burkle&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jordan Lewis&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dean Lee&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| xHire&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| HostFat&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jakob Kramer&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| ariel&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| dabaopku&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Federico Faggiano&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| m0ray&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Danube&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Carlos Pizarro&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Blitzboom&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Daniel Holbert&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jaromil&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Carlo Alberto Ferraris&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Forrest Voight&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Amir Yalon&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| John Maguire&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Ricardo M. Correia&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dan Helfman&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| gjs278&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dan Loewenherz&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Eric Swanson&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Santiago M. Mola&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Shane Wegner&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Sven Slootweg&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| ojab&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| sandos&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Witchspace&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| laszloh&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Original client developers]]&lt;br /&gt;
* [[People]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=BIP_0037&amp;diff=32680</id>
		<title>BIP 0037</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=BIP_0037&amp;diff=32680"/>
		<updated>2012-11-16T20:11:07Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: /* New messages */&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: 37&lt;br /&gt;
  Title: Connection Bloom filtering&lt;br /&gt;
  Author: Mike Hearn &amp;lt;hearn@google.com&amp;gt;, Matt Corallo &amp;lt;bip@bluematt.me&amp;gt;&lt;br /&gt;
  Status: Draft&lt;br /&gt;
  Type: Standards Track&lt;br /&gt;
  Created: 24-10-2012&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
&lt;br /&gt;
This BIP adds new support to the peer-to-peer protocol that allows peers to reduce the amount of transaction data they are sent. Peers have the option of setting &#039;&#039;filters&#039;&#039; on each connection they make after the version handshake has completed. A filter is defined as a [http://en.wikipedia.org/wiki/Bloom_filter Bloom filter] on data derived from transactions. A Bloom filter is a probabilistic data structure which allows for testing set membership - they can have false positives but not false negatives.&lt;br /&gt;
&lt;br /&gt;
This document will not go into the details of how Bloom filters work and the reader is referred to Wikipedia for an introduction to the topic.&lt;br /&gt;
&lt;br /&gt;
==Motivation==&lt;br /&gt;
&lt;br /&gt;
As Bitcoin grows in usage the amount of bandwidth needed to download blocks and transaction broadcasts increases. Clients implementing &#039;&#039;simplified payment verification&#039;&#039; do not attempt to fully verify the block chain, instead just checking that block headers connect together correctly and trusting that the transactions in a chain of high difficulty are in fact valid. See the Bitcoin paper for more detail on this mode.&lt;br /&gt;
&lt;br /&gt;
Today, SPV clients have to download the entire contents of blocks and all broadcast transactions, only to throw away the vast majority of the transactions that are not relevant to their wallets. This slows down their synchronization process, wastes users bandwidth (which on phones is often metered) and increases memory usage. All three problems are triggering real user complaints for the Android &amp;quot;Bitcoin Wallet&amp;quot; app which implements SPV mode. In order to make chain synchronization fast, cheap and able to run on older phones with limited memory we want to have remote peers throw away irrelevant transactions before sending them across the network.&lt;br /&gt;
&lt;br /&gt;
==Design rationale==&lt;br /&gt;
&lt;br /&gt;
The most obvious way to implement the stated goal would be for clients to upload lists of their keys to the remote node. We take a more complex approach for the following reasons:&lt;br /&gt;
&lt;br /&gt;
* Privacy: Because Bloom filters are probabilistic, with the false positive rate chosen by the client, nodes can trade off precision vs bandwidth usage. A node with access to lots of bandwidth may choose to have a high FP rate, meaning the remote peer cannot accurately know which transactions belong to the client and which don&#039;t. A node with very little bandwidth may choose to use a very accurate filter meaning that they only get sent transactions actually relevant to their wallet, but remote peers may be able to correlate transactions with IP addresses (and each other).&lt;br /&gt;
* Bloom filters are compact and testing membership in them is fast. This results in satisfying performance characteristics with minimal risk of opening up potential for DoS attacks.&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
&lt;br /&gt;
===New messages===&lt;br /&gt;
&lt;br /&gt;
We start by adding three new messages to the protocol:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt;, which sets the current Bloom filter on the connection&lt;br /&gt;
* &amp;lt;code&amp;gt;filteradd&amp;lt;/code&amp;gt;, which adds the given data element to the connections current filter without requiring a completely new one to be set&lt;br /&gt;
* &amp;lt;code&amp;gt;filterclear&amp;lt;/code&amp;gt;, which deletes the current filter and goes back to regular pre-BIP37 usage.&lt;br /&gt;
&lt;br /&gt;
Note that there is no filterremove command because by their nature, Bloom filters are append-only data structures. Once an element is added it cannot be removed again without rebuilding the entire structure from scratch.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command is defined as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || filter || uint8_t[] || The filter itself is simply a bit field of arbitrary byte-aligned size. The maximum size is 36,000 bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nHashFuncs || uint32_t || The number of hash functions to use in this filter. The maximum value allowed in this field is 50.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See below for a description of the Bloom filter algorithm and how to select nHashFuncs and filter size for a desired false positive rate.&lt;br /&gt;
&lt;br /&gt;
Upon receiving a &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command, the remote peer will immediately restrict the broadcast transactions it announces (in inv packets) to transactions matching the filter, where the matching algorithm is specified below.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filteradd&amp;lt;/code&amp;gt; command is defined as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || data || uint8_t[] || The data element to add to the current filter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The data field must be smaller than or equal to 520 bytes in size (the maximum size of any potentially matched object).&lt;br /&gt;
&lt;br /&gt;
The given data element will be added to the Bloom filter. If no filter has been previously provided using &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt;, a new one will be initialized that would have a false positive rate of, at a minimum, 0.1% with 1000 inserted elements. This command is useful if a new key or script is added to a clients wallet whilst it has connections to the network open, it avoids the need to re-calculate and send an entirely new filter to every peer.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filterclear&amp;lt;/code&amp;gt; command has no arguments at all.&lt;br /&gt;
&lt;br /&gt;
After a filter has been set, nodes don&#039;t merely stop announcing non-matching transactions, they can also serve filtered blocks. A filtered block is defined by the &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message and is defined like this:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || uint32_t || Block version information, based upon the software version creating this block&lt;br /&gt;
|-&lt;br /&gt;
| 32 || prev_block || char[32] || The hash value of the previous block this particular block references&lt;br /&gt;
|-&lt;br /&gt;
| 32 || merkle_root || char[32] || The reference to a Merkle tree collection which is a hash of all transactions related to this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || timestamp || uint32_t || A timestamp recording when this block was created (Limited to 2106!)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bits || uint32_t || The calculated difficulty target being used for this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nonce || uint32_t || The nonce used to generate this block… to allow variations of the header and compute different hashes&lt;br /&gt;
|-&lt;br /&gt;
| 1 || txn_count || uint32_t || Number of transactions that matched the filter&lt;br /&gt;
|-&lt;br /&gt;
| ? || transactions || merkle_tx[] || A series of merkle_tx messages, defined below, for each transaction in the block that matched the filter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;merkle_tx&amp;lt;/code&amp;gt; message is defined below:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || index || uint32_t || The index in the original block that the transaction appeared at.&lt;br /&gt;
|-&lt;br /&gt;
| 32 || hash || uint256_t || The hash of the matching transaction.&lt;br /&gt;
|-&lt;br /&gt;
| ? || merkle_branch || uint256_t[] || A vector of hashes defining the Merkle branch linking this transaction to the merkle root in the block header&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See below for the format of the merkle branch.&lt;br /&gt;
&lt;br /&gt;
As you can see a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message is a block header, plus identifying information for transactions that matched the filter, plus the Merkle branch which can be used to prove that the matching transaction data really did appear in the solved block. Clients can use this data to be sure that the remote node is not feeding them fake transactions that never appeared in a real block, although lying through omission is still possible.&lt;br /&gt;
&lt;br /&gt;
===Extensions to existing messages===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; command is extended with a new field:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 1 byte || fRelay || bool || If false then broadcast transactions will not be announced until a filter{load,add,clear} command is received. If missing or true, no change in protocol behaviour occurs.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
SPV clients that wish to use Bloom filtering would normally set fRelay to false in the version message, then set a filter based on their wallet (or a subset of it, if they are overlapping different peers). Being able to opt-out of inv messages until the filter is set prevents a client being flooded with traffic in the brief window of time between finishing version handshaking and setting the filter.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;getdata&amp;lt;/code&amp;gt; command is extended to allow a new type in the &amp;lt;code&amp;gt;inv&amp;lt;/code&amp;gt; submessage. The type field can now be &amp;lt;code&amp;gt;MSG_FILTERED_BLOCK (== 3)&amp;lt;/code&amp;gt; rather than &amp;lt;code&amp;gt;MSG_BLOCK&amp;lt;/code&amp;gt;. If no filter has been set on the connection, a request for filtered blocks is ignored. If a filter has been set, a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message is returned for the requested block hash. In addition, because a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message contains only a list of transaction hashes, transactions matching the filter should also be sent in separate tx messages. This avoids a slow roundtrip that would otherwise be required (receive hashes, didn&#039;t see some of these transactions yet, ask for them).  Note that because there is currently no way to request transactions which are already in a block from a node (aside from requesting the full block), the set of matching transactions that the requesting node hasn&#039;t either received or announced with an inv must be sent and any additional transactions which match the filter may also be sent.  This allows for clients (such as the reference client) to limit the number of invs it must remember a given node to have announced while still providing nodes with, at a minimum, all the transactions it needs.&lt;br /&gt;
&lt;br /&gt;
===Filter matching algorithm===&lt;br /&gt;
&lt;br /&gt;
The filter can be tested against arbitrary pieces of data, to see if that data was inserted by the client. Therefore the question arises of what pieces of data should be inserted/tested.&lt;br /&gt;
&lt;br /&gt;
To determine if a transaction matches the filter, the following algorithm MUST be used. Once a match is found the algorithm aborts.&lt;br /&gt;
&lt;br /&gt;
# Test the hash of the transaction itself.&lt;br /&gt;
# For each output, test each data element of the output script. This means each hash and key in the output script is tested independently. &#039;&#039;&#039;Important:&#039;&#039;&#039; if an output matches whilst testing a transaction, the node MUST update the filter by inserting the serialized COutPoint structure. See below for more details.&lt;br /&gt;
# For each input, test the serialized COutPoint structure.&lt;br /&gt;
# For each input, test each data element of the input script (note: input scripts only ever contain data elements).&lt;br /&gt;
# Otherwise there is no match.&lt;br /&gt;
&lt;br /&gt;
In this way addresses, keys and script hashes (for P2SH outputs) can all be added to the filter. You can also match against classes of transactions that are marked with well known data elements in either inputs or outputs, for example, to implement various forms of [[Smart property]].&lt;br /&gt;
&lt;br /&gt;
The test for outpoints is there to ensure you can find transactions spending outputs in your wallet, even though you don&#039;t know anything about their form. As you can see, once set on a connection the filter is &#039;&#039;&#039;not static&#039;&#039;&#039; and can change throughout the connections lifetime. This is done to avoid the following race condition:&lt;br /&gt;
&lt;br /&gt;
# A client sets a filter matching a key in their wallet. They then start downloading the block chain. The part of the chain that the client is missing is requested using getblocks.&lt;br /&gt;
# The first block is read from disk by the serving peer. It contains TX 1 which sends money to the clients key. It matches the filter and is thus sent to the client.&lt;br /&gt;
# The second block is read from disk by the serving peer. It contains TX 2 which spends TX 1. However TX 2 does not contain any of the clients keys and is thus not sent. The client does not know the money they received was already spent.&lt;br /&gt;
&lt;br /&gt;
By updating the bloom filter atomically in step 2 with the discovered outpoint, the filter will match against TX 2 in step 3 and the client will learn about all relevant transactions, despite that there is no pause between the node processing the first and second blocks.&lt;br /&gt;
&lt;br /&gt;
===Merkle branch format===&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;Merkle tree&#039;&#039; is a way of arranging a set of items as leaf nodes of tree in which the interior nodes are hashes of the concatenations of their child hashes. The root node is called the &#039;&#039;Merkle root&#039;&#039;. Every Bitcoin block contains a Merkle root of the tree formed from the blocks transactions. By providing some elements of the trees interior nodes (called a &#039;&#039;Merkle branch&#039;&#039;) a proof is formed that the given transaction was indeed in the block when it was being mined, but the size of the proof is much smaller than the size of the original block.&lt;br /&gt;
&lt;br /&gt;
The branch is a list of hashes that can be used with the following algorithm.&lt;br /&gt;
&lt;br /&gt;
# Let H = the hash of the transaction being checked for block inclusion.&lt;br /&gt;
# Let I = the index in the original block of the transaction being checked.&lt;br /&gt;
# For each element E in the branch:&lt;br /&gt;
## If I is even, H = SHA256(SHA256(concatenation of E and H))&lt;br /&gt;
## If I is odd, H = SHA256(SHA256(concatenation of H and E))&lt;br /&gt;
## Divide I by 2   (right-shift)&lt;br /&gt;
# If H is equal to the merkle root in the block header, the transaction was included&lt;br /&gt;
&lt;br /&gt;
===Bloom filter format===&lt;br /&gt;
&lt;br /&gt;
A Bloom filter is a bit-field in which bits are set based on feeding the data element to a set of different hash functions. The number of hash functions used is a parameter of the filter. In Bitcoin we use version 3 of the 32-bit Murmur hash function. To get N &amp;quot;different&amp;quot; hash functions we simply initialize the Murmur algorithm with the following formula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nHashNum * (MAX_UINT32 / (nHashFuncs - 1))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i.e. if the filter is initialized with 4 hash functions, when the second function is needed h1 would be equal to 1431655765.&lt;br /&gt;
&lt;br /&gt;
When loading a filter with the &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command, there are two parameters that can be chosen. One is the size of the filter in bytes. The other is the number of hash functions to use. To select the parameters you can use the following formulas:&lt;br /&gt;
&lt;br /&gt;
Let N be the number of elements you wish to insert into the set and P be the probability of a false positive, where 1.0 is &amp;quot;match everything&amp;quot; and zero is unachievable.&lt;br /&gt;
&lt;br /&gt;
The size S of the filter in bytes is given by &amp;lt;code&amp;gt;(-1 / pow(log(2), 2) * N * log(P)) / 8&amp;lt;/code&amp;gt;. Of course you must ensure it does not go over the maximum size (36,000).&lt;br /&gt;
&lt;br /&gt;
The number of hash functions required is given by &amp;lt;code&amp;gt;S * 8 / N * log(2)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Copyright==&lt;br /&gt;
&lt;br /&gt;
This document is placed in the public domain.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:BIP|D]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=BIP_0037&amp;diff=32679</id>
		<title>BIP 0037</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=BIP_0037&amp;diff=32679"/>
		<updated>2012-11-16T20:02:27Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: 520 byte max for filteradd&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: 37&lt;br /&gt;
  Title: Connection Bloom filtering&lt;br /&gt;
  Author: Mike Hearn &amp;lt;hearn@google.com&amp;gt;, Matt Corallo &amp;lt;bip@bluematt.me&amp;gt;&lt;br /&gt;
  Status: Draft&lt;br /&gt;
  Type: Standards Track&lt;br /&gt;
  Created: 24-10-2012&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
&lt;br /&gt;
This BIP adds new support to the peer-to-peer protocol that allows peers to reduce the amount of transaction data they are sent. Peers have the option of setting &#039;&#039;filters&#039;&#039; on each connection they make after the version handshake has completed. A filter is defined as a [http://en.wikipedia.org/wiki/Bloom_filter Bloom filter] on data derived from transactions. A Bloom filter is a probabilistic data structure which allows for testing set membership - they can have false positives but not false negatives.&lt;br /&gt;
&lt;br /&gt;
This document will not go into the details of how Bloom filters work and the reader is referred to Wikipedia for an introduction to the topic.&lt;br /&gt;
&lt;br /&gt;
==Motivation==&lt;br /&gt;
&lt;br /&gt;
As Bitcoin grows in usage the amount of bandwidth needed to download blocks and transaction broadcasts increases. Clients implementing &#039;&#039;simplified payment verification&#039;&#039; do not attempt to fully verify the block chain, instead just checking that block headers connect together correctly and trusting that the transactions in a chain of high difficulty are in fact valid. See the Bitcoin paper for more detail on this mode.&lt;br /&gt;
&lt;br /&gt;
Today, SPV clients have to download the entire contents of blocks and all broadcast transactions, only to throw away the vast majority of the transactions that are not relevant to their wallets. This slows down their synchronization process, wastes users bandwidth (which on phones is often metered) and increases memory usage. All three problems are triggering real user complaints for the Android &amp;quot;Bitcoin Wallet&amp;quot; app which implements SPV mode. In order to make chain synchronization fast, cheap and able to run on older phones with limited memory we want to have remote peers throw away irrelevant transactions before sending them across the network.&lt;br /&gt;
&lt;br /&gt;
==Design rationale==&lt;br /&gt;
&lt;br /&gt;
The most obvious way to implement the stated goal would be for clients to upload lists of their keys to the remote node. We take a more complex approach for the following reasons:&lt;br /&gt;
&lt;br /&gt;
* Privacy: Because Bloom filters are probabilistic, with the false positive rate chosen by the client, nodes can trade off precision vs bandwidth usage. A node with access to lots of bandwidth may choose to have a high FP rate, meaning the remote peer cannot accurately know which transactions belong to the client and which don&#039;t. A node with very little bandwidth may choose to use a very accurate filter meaning that they only get sent transactions actually relevant to their wallet, but remote peers may be able to correlate transactions with IP addresses (and each other).&lt;br /&gt;
* Bloom filters are compact and testing membership in them is fast. This results in satisfying performance characteristics with minimal risk of opening up potential for DoS attacks.&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
&lt;br /&gt;
===New messages===&lt;br /&gt;
&lt;br /&gt;
We start by adding three new messages to the protocol:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt;, which sets the current Bloom filter on the connection&lt;br /&gt;
* &amp;lt;code&amp;gt;filteradd&amp;lt;/code&amp;gt;, which adds the given data element to the connections current filter without requiring a completely new one to be set&lt;br /&gt;
* &amp;lt;code&amp;gt;filterclear&amp;lt;/code&amp;gt;, which deletes the current filter and goes back to regular pre-BIP37 usage.&lt;br /&gt;
&lt;br /&gt;
Note that there is no filterremove command because by their nature, Bloom filters are append-only data structures. Once an element is added it cannot be removed again without rebuilding the entire structure from scratch.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command is defined as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || filter || uint8_t[] || The filter itself is simply a bit field of arbitrary byte-aligned size. The maximum size is 36,000 bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nHashFuncs || uint32_t || The number of hash functions to use in this filter. The maximum value allowed in this field is 50.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See below for a description of the Bloom filter algorithm and how to select nHashFuncs and filter size for a desired false positive rate.&lt;br /&gt;
&lt;br /&gt;
Upon receiving a &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command, the remote peer will immediately restrict the broadcast transactions it announces (in inv packets) to transactions matching the filter, where the matching algorithm is specified below.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filteradd&amp;lt;/code&amp;gt; command is defined as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || data || uint8_t[] || The data element to add to the current filter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The data field must be smaller than or equal to 520 bytes in size (the maximum size of any potentially matched object).&lt;br /&gt;
&lt;br /&gt;
The given data element will be added to the Bloom filter. If no filter has been previously provided using &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt;, a new one will be initialized that would have a false positive rate of 0.1% with 1000 inserted elements. This command is useful if a new key or script is added to a clients wallet whilst it has connections to the network open, it avoids the need to re-calculate and send an entirely new filter to every peer.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filterclear&amp;lt;/code&amp;gt; command has no arguments at all.&lt;br /&gt;
&lt;br /&gt;
After a filter has been set, nodes don&#039;t merely stop announcing non-matching transactions, they can also serve filtered blocks. A filtered block is defined by the &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message and is defined like this:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || uint32_t || Block version information, based upon the software version creating this block&lt;br /&gt;
|-&lt;br /&gt;
| 32 || prev_block || char[32] || The hash value of the previous block this particular block references&lt;br /&gt;
|-&lt;br /&gt;
| 32 || merkle_root || char[32] || The reference to a Merkle tree collection which is a hash of all transactions related to this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || timestamp || uint32_t || A timestamp recording when this block was created (Limited to 2106!)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bits || uint32_t || The calculated difficulty target being used for this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nonce || uint32_t || The nonce used to generate this block… to allow variations of the header and compute different hashes&lt;br /&gt;
|-&lt;br /&gt;
| 1 || txn_count || uint32_t || Number of transactions that matched the filter&lt;br /&gt;
|-&lt;br /&gt;
| ? || transactions || merkle_tx[] || A series of merkle_tx messages, defined below, for each transaction in the block that matched the filter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;merkle_tx&amp;lt;/code&amp;gt; message is defined below:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || index || uint32_t || The index in the original block that the transaction appeared at.&lt;br /&gt;
|-&lt;br /&gt;
| 32 || hash || uint256_t || The hash of the matching transaction.&lt;br /&gt;
|-&lt;br /&gt;
| ? || merkle_branch || uint256_t[] || A vector of hashes defining the Merkle branch linking this transaction to the merkle root in the block header&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See below for the format of the merkle branch.&lt;br /&gt;
&lt;br /&gt;
As you can see a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message is a block header, plus identifying information for transactions that matched the filter, plus the Merkle branch which can be used to prove that the matching transaction data really did appear in the solved block. Clients can use this data to be sure that the remote node is not feeding them fake transactions that never appeared in a real block, although lying through omission is still possible.&lt;br /&gt;
&lt;br /&gt;
===Extensions to existing messages===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; command is extended with a new field:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 1 byte || fRelay || bool || If false then broadcast transactions will not be announced until a filter{load,add,clear} command is received. If missing or true, no change in protocol behaviour occurs.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
SPV clients that wish to use Bloom filtering would normally set fRelay to false in the version message, then set a filter based on their wallet (or a subset of it, if they are overlapping different peers). Being able to opt-out of inv messages until the filter is set prevents a client being flooded with traffic in the brief window of time between finishing version handshaking and setting the filter.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;getdata&amp;lt;/code&amp;gt; command is extended to allow a new type in the &amp;lt;code&amp;gt;inv&amp;lt;/code&amp;gt; submessage. The type field can now be &amp;lt;code&amp;gt;MSG_FILTERED_BLOCK (== 3)&amp;lt;/code&amp;gt; rather than &amp;lt;code&amp;gt;MSG_BLOCK&amp;lt;/code&amp;gt;. If no filter has been set on the connection, a request for filtered blocks is ignored. If a filter has been set, a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message is returned for the requested block hash. In addition, because a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message contains only a list of transaction hashes, transactions matching the filter should also be sent in separate tx messages. This avoids a slow roundtrip that would otherwise be required (receive hashes, didn&#039;t see some of these transactions yet, ask for them).  Note that because there is currently no way to request transactions which are already in a block from a node (aside from requesting the full block), the set of matching transactions that the requesting node hasn&#039;t either received or announced with an inv must be sent and any additional transactions which match the filter may also be sent.  This allows for clients (such as the reference client) to limit the number of invs it must remember a given node to have announced while still providing nodes with, at a minimum, all the transactions it needs.&lt;br /&gt;
&lt;br /&gt;
===Filter matching algorithm===&lt;br /&gt;
&lt;br /&gt;
The filter can be tested against arbitrary pieces of data, to see if that data was inserted by the client. Therefore the question arises of what pieces of data should be inserted/tested.&lt;br /&gt;
&lt;br /&gt;
To determine if a transaction matches the filter, the following algorithm MUST be used. Once a match is found the algorithm aborts.&lt;br /&gt;
&lt;br /&gt;
# Test the hash of the transaction itself.&lt;br /&gt;
# For each output, test each data element of the output script. This means each hash and key in the output script is tested independently. &#039;&#039;&#039;Important:&#039;&#039;&#039; if an output matches whilst testing a transaction, the node MUST update the filter by inserting the serialized COutPoint structure. See below for more details.&lt;br /&gt;
# For each input, test the serialized COutPoint structure.&lt;br /&gt;
# For each input, test each data element of the input script (note: input scripts only ever contain data elements).&lt;br /&gt;
# Otherwise there is no match.&lt;br /&gt;
&lt;br /&gt;
In this way addresses, keys and script hashes (for P2SH outputs) can all be added to the filter. You can also match against classes of transactions that are marked with well known data elements in either inputs or outputs, for example, to implement various forms of [[Smart property]].&lt;br /&gt;
&lt;br /&gt;
The test for outpoints is there to ensure you can find transactions spending outputs in your wallet, even though you don&#039;t know anything about their form. As you can see, once set on a connection the filter is &#039;&#039;&#039;not static&#039;&#039;&#039; and can change throughout the connections lifetime. This is done to avoid the following race condition:&lt;br /&gt;
&lt;br /&gt;
# A client sets a filter matching a key in their wallet. They then start downloading the block chain. The part of the chain that the client is missing is requested using getblocks.&lt;br /&gt;
# The first block is read from disk by the serving peer. It contains TX 1 which sends money to the clients key. It matches the filter and is thus sent to the client.&lt;br /&gt;
# The second block is read from disk by the serving peer. It contains TX 2 which spends TX 1. However TX 2 does not contain any of the clients keys and is thus not sent. The client does not know the money they received was already spent.&lt;br /&gt;
&lt;br /&gt;
By updating the bloom filter atomically in step 2 with the discovered outpoint, the filter will match against TX 2 in step 3 and the client will learn about all relevant transactions, despite that there is no pause between the node processing the first and second blocks.&lt;br /&gt;
&lt;br /&gt;
===Merkle branch format===&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;Merkle tree&#039;&#039; is a way of arranging a set of items as leaf nodes of tree in which the interior nodes are hashes of the concatenations of their child hashes. The root node is called the &#039;&#039;Merkle root&#039;&#039;. Every Bitcoin block contains a Merkle root of the tree formed from the blocks transactions. By providing some elements of the trees interior nodes (called a &#039;&#039;Merkle branch&#039;&#039;) a proof is formed that the given transaction was indeed in the block when it was being mined, but the size of the proof is much smaller than the size of the original block.&lt;br /&gt;
&lt;br /&gt;
The branch is a list of hashes that can be used with the following algorithm.&lt;br /&gt;
&lt;br /&gt;
# Let H = the hash of the transaction being checked for block inclusion.&lt;br /&gt;
# Let I = the index in the original block of the transaction being checked.&lt;br /&gt;
# For each element E in the branch:&lt;br /&gt;
## If I is even, H = SHA256(SHA256(concatenation of E and H))&lt;br /&gt;
## If I is odd, H = SHA256(SHA256(concatenation of H and E))&lt;br /&gt;
## Divide I by 2   (right-shift)&lt;br /&gt;
# If H is equal to the merkle root in the block header, the transaction was included&lt;br /&gt;
&lt;br /&gt;
===Bloom filter format===&lt;br /&gt;
&lt;br /&gt;
A Bloom filter is a bit-field in which bits are set based on feeding the data element to a set of different hash functions. The number of hash functions used is a parameter of the filter. In Bitcoin we use version 3 of the 32-bit Murmur hash function. To get N &amp;quot;different&amp;quot; hash functions we simply initialize the Murmur algorithm with the following formula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nHashNum * (MAX_UINT32 / (nHashFuncs - 1))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i.e. if the filter is initialized with 4 hash functions, when the second function is needed h1 would be equal to 1431655765.&lt;br /&gt;
&lt;br /&gt;
When loading a filter with the &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command, there are two parameters that can be chosen. One is the size of the filter in bytes. The other is the number of hash functions to use. To select the parameters you can use the following formulas:&lt;br /&gt;
&lt;br /&gt;
Let N be the number of elements you wish to insert into the set and P be the probability of a false positive, where 1.0 is &amp;quot;match everything&amp;quot; and zero is unachievable.&lt;br /&gt;
&lt;br /&gt;
The size S of the filter in bytes is given by &amp;lt;code&amp;gt;(-1 / pow(log(2), 2) * N * log(P)) / 8&amp;lt;/code&amp;gt;. Of course you must ensure it does not go over the maximum size (36,000).&lt;br /&gt;
&lt;br /&gt;
The number of hash functions required is given by &amp;lt;code&amp;gt;S * 8 / N * log(2)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Copyright==&lt;br /&gt;
&lt;br /&gt;
This document is placed in the public domain.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:BIP|D]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=BIP_0037&amp;diff=32292</id>
		<title>BIP 0037</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=BIP_0037&amp;diff=32292"/>
		<updated>2012-11-02T21:06:11Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: /* Extensions to existing messages */&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: 37&lt;br /&gt;
  Title: Connection Bloom filtering&lt;br /&gt;
  Author: Mike Hearn &amp;lt;hearn@google.com&amp;gt;, Matt Corallo &amp;lt;bip@bluematt.me&amp;gt;&lt;br /&gt;
  Status: Draft&lt;br /&gt;
  Type: Standards Track&lt;br /&gt;
  Created: 24-10-2012&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
&lt;br /&gt;
This BIP adds new support to the peer-to-peer protocol that allows peers to reduce the amount of transaction data they are sent. Peers have the option of setting &#039;&#039;filters&#039;&#039; on each connection they make after the version handshake has completed. A filter is defined as a [http://en.wikipedia.org/wiki/Bloom_filter Bloom filter] on data derived from transactions. A Bloom filter is a probabilistic data structure which allows for testing set membership - they can have false positives but not false negatives.&lt;br /&gt;
&lt;br /&gt;
This document will not go into the details of how Bloom filters work and the reader is referred to Wikipedia for an introduction to the topic.&lt;br /&gt;
&lt;br /&gt;
==Motivation==&lt;br /&gt;
&lt;br /&gt;
As Bitcoin grows in usage the amount of bandwidth needed to download blocks and transaction broadcasts increases. Clients implementing &#039;&#039;simplified payment verification&#039;&#039; do not attempt to fully verify the block chain, instead just checking that block headers connect together correctly and trusting that the transactions in a chain of high difficulty are in fact valid. See the Bitcoin paper for more detail on this mode.&lt;br /&gt;
&lt;br /&gt;
Today, SPV clients have to download the entire contents of blocks and all broadcast transactions, only to throw away the vast majority of the transactions that are not relevant to their wallets. This slows down their synchronization process, wastes users bandwidth (which on phones is often metered) and increases memory usage. All three problems are triggering real user complaints for the Android &amp;quot;Bitcoin Wallet&amp;quot; app which implements SPV mode. In order to make chain synchronization fast, cheap and able to run on older phones with limited memory we want to have remote peers throw away irrelevant transactions before sending them across the network.&lt;br /&gt;
&lt;br /&gt;
==Design rationale==&lt;br /&gt;
&lt;br /&gt;
The most obvious way to implement the stated goal would be for clients to upload lists of their keys to the remote node. We take a more complex approach for the following reasons:&lt;br /&gt;
&lt;br /&gt;
* Privacy: Because Bloom filters are probabilistic, with the false positive rate chosen by the client, nodes can trade off precision vs bandwidth usage. A node with access to lots of bandwidth may choose to have a high FP rate, meaning the remote peer cannot accurately know which transactions belong to the client and which don&#039;t. A node with very little bandwidth may choose to use a very accurate filter meaning that they only get sent transactions actually relevant to their wallet, but remote peers may be able to correlate transactions with IP addresses (and each other).&lt;br /&gt;
* Bloom filters are compact and testing membership in them is fast. This results in satisfying performance characteristics with minimal risk of opening up potential for DoS attacks.&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
&lt;br /&gt;
===New messages===&lt;br /&gt;
&lt;br /&gt;
We start by adding three new messages to the protocol:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt;, which sets the current Bloom filter on the connection&lt;br /&gt;
* &amp;lt;code&amp;gt;filteradd&amp;lt;/code&amp;gt;, which adds the given data element to the connections current filter without requiring a completely new one to be set&lt;br /&gt;
* &amp;lt;code&amp;gt;filterclear&amp;lt;/code&amp;gt;, which deletes the current filter and goes back to regular pre-BIP37 usage.&lt;br /&gt;
&lt;br /&gt;
Note that there is no filterremove command because by their nature, Bloom filters are append-only data structures. Once an element is added it cannot be removed again without rebuilding the entire structure from scratch.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command is defined as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || filter || uint8_t[] || The filter itself is simply a bit field of arbitrary byte-aligned size. The maximum size is 36,000 bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nHashFuncs || uint32_t || The number of hash functions to use in this filter. The maximum value allowed in this field is 50.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See below for a description of the Bloom filter algorithm and how to select nHashFuncs and filter size for a desired false positive rate.&lt;br /&gt;
&lt;br /&gt;
Upon receiving a &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command, the remote peer will immediately restrict the broadcast transactions it announces (in inv packets) to transactions matching the filter, where the matching algorithm is specified below.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filteradd&amp;lt;/code&amp;gt; command is defined as follows:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || data || uint8_t[] || The data element to add to the current filter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The data field can be of any size up to the maximum message size limit.&lt;br /&gt;
&lt;br /&gt;
The given data element will be added to the Bloom filter. If no filter has been previously provided using &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt;, a new one will be initialized that would have a false positive rate of 0.1% with 1000 inserted elements. This command is useful if a new key or script is added to a clients wallet whilst it has connections to the network open, it avoids the need to re-calculate and send an entirely new filter to every peer.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;filterclear&amp;lt;/code&amp;gt; command has no arguments at all.&lt;br /&gt;
&lt;br /&gt;
After a filter has been set, nodes don&#039;t merely stop announcing non-matching transactions, they can also serve filtered blocks. A filtered block is defined by the &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message and is defined like this:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || uint32_t || Block version information, based upon the software version creating this block&lt;br /&gt;
|-&lt;br /&gt;
| 32 || prev_block || char[32] || The hash value of the previous block this particular block references&lt;br /&gt;
|-&lt;br /&gt;
| 32 || merkle_root || char[32] || The reference to a Merkle tree collection which is a hash of all transactions related to this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || timestamp || uint32_t || A timestamp recording when this block was created (Limited to 2106!)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bits || uint32_t || The calculated difficulty target being used for this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nonce || uint32_t || The nonce used to generate this block… to allow variations of the header and compute different hashes&lt;br /&gt;
|-&lt;br /&gt;
| 1 || txn_count || uint32_t || Number of transactions that matched the filter&lt;br /&gt;
|-&lt;br /&gt;
| ? || transactions || merkle_tx[] || A series of merkle_tx messages, defined below, for each transaction in the block that matched the filter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;merkle_tx&amp;lt;/code&amp;gt; message is defined below:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || index || uint32_t || The index in the original block that the transaction appeared at.&lt;br /&gt;
|-&lt;br /&gt;
| 32 || hash || uint256_t || The hash of the matching transaction.&lt;br /&gt;
|-&lt;br /&gt;
| ? || merkle_branch || uint256_t[] || A vector of hashes defining the Merkle branch linking this transaction to the merkle root in the block header&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See below for the format of the merkle branch.&lt;br /&gt;
&lt;br /&gt;
As you can see a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message is a block header, plus identifying information for transactions that matched the filter, plus the Merkle branch which can be used to prove that the matching transaction data really did appear in the solved block. Clients can use this data to be sure that the remote node is not feeding them fake transactions that never appeared in a real block, although lying through omission is still possible.&lt;br /&gt;
&lt;br /&gt;
===Extensions to existing messages===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; command is extended with a new field:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 1 byte || fRelay || bool || If false then broadcast transactions will not be announced until a filter{load,add,clear} command is received. If missing or true, no change in protocol behaviour occurs.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
SPV clients that wish to use Bloom filtering would normally set fRelay to false in the version message, then set a filter based on their wallet (or a subset of it, if they are overlapping different peers). Being able to opt-out of inv messages until the filter is set prevents a client being flooded with traffic in the brief window of time between finishing version handshaking and setting the filter.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;getdata&amp;lt;/code&amp;gt; command is extended to allow a new type in the &amp;lt;code&amp;gt;inv&amp;lt;/code&amp;gt; submessage. The type field can now be &amp;lt;code&amp;gt;MSG_FILTERED_BLOCK (== 3)&amp;lt;/code&amp;gt; rather than &amp;lt;code&amp;gt;MSG_BLOCK&amp;lt;/code&amp;gt;. If no filter has been set on the connection, a request for filtered blocks is ignored. If a filter has been set, a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message is returned for the requested block hash. In addition, because a &amp;lt;code&amp;gt;merkleblock&amp;lt;/code&amp;gt; message contains only a list of transaction hashes, transactions matching the filter should also be sent in separate tx messages. This avoids a slow roundtrip that would otherwise be required (receive hashes, didn&#039;t see some of these transactions yet, ask for them).  Note that because there is currently no way to request transactions which are already in a block from a node (aside from requesting the full block), the set of matching transactions that the requesting node hasn&#039;t either received or announced with an inv must be sent and any additional transactions which match the filter may also be sent.  This allows for clients (such as the reference client) to limit the number of invs it must remember a given node to have announced while still providing nodes with, at a minimum, all the transactions it needs.&lt;br /&gt;
&lt;br /&gt;
===Filter matching algorithm===&lt;br /&gt;
&lt;br /&gt;
The filter can be tested against arbitrary pieces of data, to see if that data was inserted by the client. Therefore the question arises of what pieces of data should be inserted/tested.&lt;br /&gt;
&lt;br /&gt;
To determine if a transaction matches the filter, the following algorithm MUST be used. Once a match is found the algorithm aborts.&lt;br /&gt;
&lt;br /&gt;
# Test the hash of the transaction itself.&lt;br /&gt;
# For each output, test each data element of the output script. This means each hash and key in the output script is tested independently. &#039;&#039;&#039;Important:&#039;&#039;&#039; if an output matches whilst testing a transaction, the node MUST update the filter by inserting the serialized COutPoint structure. See below for more details.&lt;br /&gt;
# For each input, test the serialized COutPoint structure.&lt;br /&gt;
# For each input, test each data element of the input script (note: input scripts only ever contain data elements).&lt;br /&gt;
# Otherwise there is no match.&lt;br /&gt;
&lt;br /&gt;
In this way addresses, keys and script hashes (for P2SH outputs) can all be added to the filter. You can also match against classes of transactions that are marked with well known data elements in either inputs or outputs, for example, to implement various forms of [[Smart property]].&lt;br /&gt;
&lt;br /&gt;
The test for outpoints is there to ensure you can find transactions spending outputs in your wallet, even though you don&#039;t know anything about their form. As you can see, once set on a connection the filter is &#039;&#039;&#039;not static&#039;&#039;&#039; and can change throughout the connections lifetime. This is done to avoid the following race condition:&lt;br /&gt;
&lt;br /&gt;
# A client sets a filter matching a key in their wallet. They then start downloading the block chain. The part of the chain that the client is missing is requested using getblocks.&lt;br /&gt;
# The first block is read from disk by the serving peer. It contains TX 1 which sends money to the clients key. It matches the filter and is thus sent to the client.&lt;br /&gt;
# The second block is read from disk by the serving peer. It contains TX 2 which spends TX 1. However TX 2 does not contain any of the clients keys and is thus not sent. The client does not know the money they received was already spent.&lt;br /&gt;
&lt;br /&gt;
By updating the bloom filter atomically in step 2 with the discovered outpoint, the filter will match against TX 2 in step 3 and the client will learn about all relevant transactions, despite that there is no pause between the node processing the first and second blocks.&lt;br /&gt;
&lt;br /&gt;
===Merkle branch format===&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;Merkle tree&#039;&#039; is a way of arranging a set of items as leaf nodes of tree in which the interior nodes are hashes of the concatenations of their child hashes. The root node is called the &#039;&#039;Merkle root&#039;&#039;. Every Bitcoin block contains a Merkle root of the tree formed from the blocks transactions. By providing some elements of the trees interior nodes (called a &#039;&#039;Merkle branch&#039;&#039;) a proof is formed that the given transaction was indeed in the block when it was being mined, but the size of the proof is much smaller than the size of the original block.&lt;br /&gt;
&lt;br /&gt;
The branch is a list of hashes that can be used with the following algorithm.&lt;br /&gt;
&lt;br /&gt;
# Let H = the hash of the transaction being checked for block inclusion.&lt;br /&gt;
# Let I = the index in the original block of the transaction being checked.&lt;br /&gt;
# For each element E in the branch:&lt;br /&gt;
## If I is even, H = SHA256(SHA256(concatenation of E and H))&lt;br /&gt;
## If I is odd, H = SHA256(SHA256(concatenation of H and E))&lt;br /&gt;
## Divide I by 2   (right-shift)&lt;br /&gt;
# If H is equal to the merkle root in the block header, the transaction was included&lt;br /&gt;
&lt;br /&gt;
===Bloom filter format===&lt;br /&gt;
&lt;br /&gt;
A Bloom filter is a bit-field in which bits are set based on feeding the data element to a set of different hash functions. The number of hash functions used is a parameter of the filter. In Bitcoin we use version 3 of the 32-bit Murmur hash function. To get N &amp;quot;different&amp;quot; hash functions we simply initialize the Murmur algorithm with the following formula:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nHashNum * (MAX_UINT32 / (nHashFuncs - 1))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i.e. if the filter is initialized with 4 hash functions, when the second function is needed h1 would be equal to 1431655765.&lt;br /&gt;
&lt;br /&gt;
When loading a filter with the &amp;lt;code&amp;gt;filterload&amp;lt;/code&amp;gt; command, there are two parameters that can be chosen. One is the size of the filter in bytes. The other is the number of hash functions to use. To select the parameters you can use the following formulas:&lt;br /&gt;
&lt;br /&gt;
Let N be the number of elements you wish to insert into the set and P be the probability of a false positive, where 1.0 is &amp;quot;match everything&amp;quot; and zero is unachievable.&lt;br /&gt;
&lt;br /&gt;
The size S of the filter in bytes is given by &amp;lt;code&amp;gt;(-1 / pow(log(2), 2) * N * log(P)) / 8&amp;lt;/code&amp;gt;. Of course you must ensure it does not go over the maximum size (36,000).&lt;br /&gt;
&lt;br /&gt;
The number of hash functions required is given by &amp;lt;code&amp;gt;S * 8 / N * log(2)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Copyright==&lt;br /&gt;
&lt;br /&gt;
This document is placed in the public domain.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:BIP|D]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Fallback_Nodes&amp;diff=31751</id>
		<title>Fallback Nodes</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Fallback_Nodes&amp;diff=31751"/>
		<updated>2012-10-12T03:33:42Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: /* IPv4 Nodes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of nodes which are considered reliable. &amp;lt;del&amp;gt;Nodes from this list which are down for more than 24 hours will be automatically removed and status of each node is displayed and updated every hour by [[User:WikiBot|WikiBot]] &amp;lt;/del&amp;gt;.&lt;br /&gt;
&#039;&#039;&#039;Wikibot is currently malfunctioning and is incorrectly marking nodes running version 0.6 as being down&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== How to use this list ==&lt;br /&gt;
&lt;br /&gt;
=== Connect to nodes ===&lt;br /&gt;
&lt;br /&gt;
You can connect to these nodes with the &#039;&#039;-addnode=ip&#039;&#039; switch instead of the usual node harvesting process (through IRC or via the embedded nodelist). You can connect to more than one node by using &#039;&#039;-addnode=ip&#039;&#039; more than once. It is usually a good idea to connect to more than one of these nodes.&lt;br /&gt;
&lt;br /&gt;
==== Nodes without a fixed ip ====&lt;br /&gt;
&lt;br /&gt;
If the node IP is not fixed (see &amp;quot;Fixed&amp;quot; column), you will have to resolve the node&#039;s name (first column) each time the IP changes. Some nodes may have their ip change once a day, some others once a month, and some others may stay on the same IP for years. Still, as long as the IP is not fixed, there is no guarantee it will stay the same.&lt;br /&gt;
&lt;br /&gt;
In order to enable hostname lookups for the &#039;&#039;-addnode&#039;&#039; and &#039;&#039;-connect&#039;&#039; parameters, you must additionally provide the &#039;&#039;-dns&#039;&#039; parameter. Example:&lt;br /&gt;
 bitcoind -dns -addnode=bitcoin.es&lt;br /&gt;
&lt;br /&gt;
Versions prior to 0.3.22 do not support hostnames to the &#039;&#039;-addnode&#039;&#039; parameter, so you must do the resolving part for it. For example on linux:&lt;br /&gt;
 bitcoind -addnode=$(dig +short bitcoin.es)&lt;br /&gt;
&lt;br /&gt;
=== IP Transactions ===&lt;br /&gt;
&lt;br /&gt;
You can also send [[IP Transactions]] to these nodes. If you include your bitcoin address in the &amp;quot;message&amp;quot; field, you may have your coins back.&lt;br /&gt;
&lt;br /&gt;
=== Tor network ===&lt;br /&gt;
&lt;br /&gt;
To use tor .onion addresses ([[Fallback_Nodes#Tor_nodes|listed below]]), you will need to map virtual ips via the &#039;&#039;torrc&#039;&#039; file:&lt;br /&gt;
&lt;br /&gt;
 mapaddress 192.0.2.2 vso3r6cmjoomhhgg.onion&lt;br /&gt;
 mapaddress 192.0.2.3 sjdntqu5roj4q6lo.onion&lt;br /&gt;
&lt;br /&gt;
And then put these IPs in your bitcoin.conf (or run bitcoin with -connect).&lt;br /&gt;
&lt;br /&gt;
 connect=192.0.2.2&lt;br /&gt;
 connect=192.0.2.3&lt;br /&gt;
&lt;br /&gt;
You can use any arbitrary IP addresses with MapAddress, though some of the common non-routable ranges (10.*, 192.168.*) will not work due to a Bitcoin bug (reference?). 192.0.2.1-192.0.2.255 is the recommended range because it is both non-routable and compatible with Bitcoin.&lt;br /&gt;
&lt;br /&gt;
If you would like to use these nodes in addition to the hard-coded node list in the client, you can substitute &amp;quot;connect&amp;quot; with &amp;quot;addnode&amp;quot;. However, if you want to keep all your Bitcoin communication strictly within the Tor network, it is recommended that you use &amp;quot;connect.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Additional suggested settings for hidden node operators:&lt;br /&gt;
&lt;br /&gt;
 noirc=1&lt;br /&gt;
 upnp=0&lt;br /&gt;
 listen=1&lt;br /&gt;
&lt;br /&gt;
== Nodes list ==&lt;br /&gt;
&lt;br /&gt;
=== IPv6 Nodes ===&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Hostname !! Owner !! IP !! Fixed !! Status !! Last Seen (GMT) !! Accepts IP transactions&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- BEGIN NODELIST --&amp;gt;&lt;br /&gt;
| 2001:470:8:2e1::40 || ? || 2001:470:8:2e1::40 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END NODELIST --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== IPv4 Nodes ===&lt;br /&gt;
&#039;&#039;&#039;Wikibot is currently malfunctioning and is incorrectly marking nodes running 0.6 as being down&#039;&#039;&#039;.&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Hostname !! Owner !! IP !! Fixed !! Status !! Last Seen (GMT) !! Accepts IP transactions&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- BEGIN NODELIST --&amp;gt;&lt;br /&gt;
| dorm.bluematt.me || Matt Corallo || 152.23.202.249 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| 62.75.216.13 || exMULTI, Inc. || 62.75.216.13 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| 69.64.34.118 || exMULTI, Inc. || 69.64.34.118 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| 79.160.221.140 || K-Norway || 79.160.221.140 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| netzbasis.de || unknown3 || 81.169.129.25 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btc.turboadmin.com || osmosis || 98.143.152.14 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| fallback.bitcoin.zhoutong.com || Zhou Tong || 117.121.241.140 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || No&lt;br /&gt;
|-&lt;br /&gt;
| bauhaus.csail.mit.edu || imsaguy || 128.30.96.44 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| jun.dashjr.org || Luke-Jr || 173.242.112.53 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || &lt;br /&gt;
|-&lt;br /&gt;
| cheaperinbitcoins.com || Xenland/Shane || 184.154.36.82 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| django.webflows.fr || unknown2 || 188.165.213.169 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| 204.9.55.71 || toasty || 204.9.55.71 || {{Table Value Yes}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| btcnode.novit.ro || ovidiusoft - novit.ro || 93.187.142.114 || {{Table Value No}} || {{Fallback Nodes/Node Down}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| porgressbar.sk || progressbar hackerspace || 91.210.181.21 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| faucet.bitcoin.st || bitcoin street || 64.27.57.225 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.securepayment.cc || SecurePayment CC || 63.247.147.163 || {{Table Value Yes}} || {{Fallback Nodes/Node Up}} ||  || Yes&lt;br /&gt;
&amp;lt;!-- END NODELIST --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is a list of nodes which have been seen on the network recently at http://blockchain.info/connected-nodes&lt;br /&gt;
&lt;br /&gt;
=== Tor nodes ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Hostname !! Owner !! Status !! Last Seen (GMT) !! Accepts IP transactions&lt;br /&gt;
|-&lt;br /&gt;
| 6hgmaxwellgpv2oe.onion|| Gmaxwell || up || 2012-07-01 || No&lt;br /&gt;
|-&lt;br /&gt;
| pqosrh6wfaucet32.onion|| bitcoin street || up || 2012-08-29 || No&lt;br /&gt;
|-&lt;br /&gt;
| btc4ulpftizx5b72.onion || TorNode || up || 2012-06-22 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| 7hxvg2lvr2ashzli.onion || Tuxavant || up || 2012-06-23 || ?&lt;br /&gt;
|-&lt;br /&gt;
| siqdznszjf4e6v5j.onion || Tuxavant || up || 2012-06-23 || ?&lt;br /&gt;
|-&lt;br /&gt;
| fpt6orohw2nuf2kn.onion || Tril || up || 2012-06-23 || No&lt;br /&gt;
|-&lt;br /&gt;
| vso3r6cmjoomhhgg.onion || echelon || up || 2012-09-16 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| sjdntqu5roj4q6lo.onion || torservers || up || 2012-05-19 || ?&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin2bkgm3fke.onion || ? || down || 2012-05-19 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| ijzt2eeizty3p5xe.onion || ? || ? || 2011-02-11 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| j43z65b6r2usg3vk.onion || Dybbuk || ? || 2011-02-11 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| pvuif6nonbhj3o3r.onion || ? || ? || 2011-02-11 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| c5qvugpewwyyy5oz.onion || ? || ? || 2011-02-11 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| bitcoinbudtoeks7.onion || ? || ? || 2011-02-11 || ?&lt;br /&gt;
|-&lt;br /&gt;
| iy6ni3wkqazp4ytu.onion || ? || ? || 2011-02-11 || ?&lt;br /&gt;
|-&lt;br /&gt;
| h4kklwodpcmo6cbq.onion || ? || ? || 2011-02-11 || ?&lt;br /&gt;
|-&lt;br /&gt;
| vv6kcfscuntybrzm.onion || ? || ? || 2011-02-11 || ?&lt;br /&gt;
|-&lt;br /&gt;
| nlnsivjku4x4lu5n.onion || ? || ? || 2011-02-11 || ?&lt;br /&gt;
|-&lt;br /&gt;
| xqzfakpeuvrobvpj.onion || ? || ? || 2010-11-13 || No&lt;br /&gt;
|-&lt;br /&gt;
| 4lmduyac3svgrrav.onion || ? || ? || 2011-02-11 || No&lt;br /&gt;
|-&lt;br /&gt;
| usasx4urod3yj4az.onion || ? || ? || 2011-02-11 || No&lt;br /&gt;
|-&lt;br /&gt;
| e3tn727fywnioxrc.onion || ? || ? || 2011-11-01 || No&lt;br /&gt;
|-&lt;br /&gt;
| p2hwc26zdsrqxiix.onion || redemerald || down || 2012-05-25 || No&lt;br /&gt;
|-&lt;br /&gt;
| bxfna6fhddpzduck.onion || ? || ? || ? || ?&lt;br /&gt;
|-&lt;br /&gt;
| kjy2eqzk4zwi5zd3.onion || sipa || up || 2012-06-23 || No&lt;br /&gt;
|-&lt;br /&gt;
| mutqcuh7hwxmhx3k.onion || Xirafe || up || 2012-06-23 || ?&lt;br /&gt;
|-&lt;br /&gt;
| r4de4zf4lyniu4mx.onion:8444 || ? || up || 2012-06-26 || ?&lt;br /&gt;
|-&lt;br /&gt;
| bitcoinprwwpuinm.onion:8333 || ? || up || 2012-06-26 || ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Adding a node ==&lt;br /&gt;
&lt;br /&gt;
Before adding yourself as a fallback node, you should be sure your node will stay online for a long time. If a node is offline for more than 24 hours it will be removed from the list.&lt;br /&gt;
&lt;br /&gt;
To add a node in this list, you just need the ip/hostname and your name, the other fields will be filled automatically. Insert the following lines before the &amp;lt;tt&amp;gt;END NODELIST&amp;lt;/tt&amp;gt; line:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;|-&lt;br /&gt;
| ip || your name&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Network|Bitcoin Network]]&lt;br /&gt;
* [http://nodes.bitcoin.st Fallback Nodes] List of longest running Bitcoin Nodes listed by Country.&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Protocol_documentation&amp;diff=29743</id>
		<title>Protocol documentation</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Protocol_documentation&amp;diff=29743"/>
		<updated>2012-08-13T16:06:23Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sources:&lt;br /&gt;
* [[Original Bitcoin client]] source&lt;br /&gt;
&lt;br /&gt;
Type names used in this documentation are from the C99 standard.&lt;br /&gt;
&lt;br /&gt;
For protocol used in mining, see [[Getwork]].&lt;br /&gt;
&lt;br /&gt;
==Common standards==&lt;br /&gt;
&lt;br /&gt;
=== Hashes ===&lt;br /&gt;
&lt;br /&gt;
Usually, when a hash is computed within bitcoin, it is computed twice. Most of the time [http://en.wikipedia.org/wiki/SHA-2 SHA-256] hashes are used, however [http://en.wikipedia.org/wiki/RIPEMD RIPEMD-160] is also used when a shorter hash is desirable (for example when creating a bitcoin address).&lt;br /&gt;
&lt;br /&gt;
Example of double-SHA-256 encoding of string &amp;quot;hello&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 hello&lt;br /&gt;
 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 (first round of sha-256)&lt;br /&gt;
 9595c9df90075148eb06860365df33584b75bff782a510c6cd4883a419833d50 (second round of sha-256)&lt;br /&gt;
&lt;br /&gt;
For bitcoin addresses (RIPEMD-160) this would give:&lt;br /&gt;
&lt;br /&gt;
 hello&lt;br /&gt;
 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 (first round is sha-256)&lt;br /&gt;
 b6a9c8c230722b7c748331a8b450f05566dc7d0f (with ripemd-160)&lt;br /&gt;
&lt;br /&gt;
=== Merkle Trees ===&lt;br /&gt;
&lt;br /&gt;
Merkle trees are binary trees of hashes. Merkle trees in bitcoin use &#039;&#039;&#039;Double&#039;&#039;&#039; SHA-256, and are built up as so:&lt;br /&gt;
 &lt;br /&gt;
 hash(a) = sha256(sha256(a))&lt;br /&gt;
 &lt;br /&gt;
 hash(a) hash(b) hash(c)&lt;br /&gt;
 hash(hash(a)+hash(b)) hash(hash(c)+hash(c))&lt;br /&gt;
 hash(hash(hash(a)+hash(b))+hash(hash(c)+hash(c)))&lt;br /&gt;
&lt;br /&gt;
They are paired up, with the last element being _duplicated_.&lt;br /&gt;
&lt;br /&gt;
Note: Hashes in Merkle Tree displayed in the [[Block Explorer]] are of little-endian notation. For some implementations and [http://www.fileformat.info/tool/hash.htm calculations], the bits need to be reversed before they are hashed, and again after the hashing operation.&lt;br /&gt;
&lt;br /&gt;
=== Signatures ===&lt;br /&gt;
&lt;br /&gt;
Bitcoin uses [http://en.wikipedia.org/wiki/Elliptic_curve_cryptography Elliptic Curve] [http://en.wikipedia.org/wiki/Digital_Signature_Algorithm Digital Signature Algorithm] ([http://en.wikipedia.org/wiki/Elliptic_Curve_DSA ECDSA]) to sign transactions. &lt;br /&gt;
&lt;br /&gt;
For ECDSA the secp256k1 curve from http://www.secg.org/collateral/sec2_final.pdf is used.&lt;br /&gt;
&lt;br /&gt;
Public keys (in scripts) are given as 04 &amp;lt;x&amp;gt; &amp;lt;y&amp;gt; where &#039;&#039;x&#039;&#039; and &#039;&#039;y&#039;&#039; are 32 byte big-endian integers representing the coordinates of a point on the curve or in compressed form given as &amp;lt;sign&amp;gt; &amp;lt;x&amp;gt; where &amp;lt;sign&amp;gt; is 0x02 if &#039;&#039;y&#039;&#039; is even and 0x03 if &#039;&#039;y&#039;&#039; is odd. Signatures use [http://en.wikipedia.org/wiki/Distinguished_Encoding_Rules DER encoding] to pack the &#039;&#039;r&#039;&#039; and &#039;&#039;s&#039;&#039; components into a single byte stream (this is also what OpenSSL produces by default).&lt;br /&gt;
&lt;br /&gt;
=== Transaction Verification ===&lt;br /&gt;
Transactions are cryptographically signed records that reassign ownership of Bitcoins to new addresses.  Transactions have &#039;&#039;inputs&#039;&#039; - records which reference the funds from other previous transactions - and &#039;&#039;outputs&#039;&#039; - records which determine the new owner of the transferred Bitcoins, and which will be referenced as inputs in future transactions as those funds are respent.&lt;br /&gt;
&lt;br /&gt;
Each &#039;&#039;input&#039;&#039; must have a cryptographic digital signature that unlocks the funds from the prior transaction.  Only the person possessing the appropriate [[private key]] is able to create a satisfactory signature; this in effect ensures that funds can only be spent by their owners.&lt;br /&gt;
&lt;br /&gt;
Each &#039;&#039;output&#039;&#039; determines which Bitcoin address (or other criteria, see [[Scripting]]) is the recipient of the funds.&lt;br /&gt;
&lt;br /&gt;
In a transaction, the sum of all inputs must be equal to or greater than the sum of all outputs.  If the inputs exceed the outputs, the difference is considered a [[transaction fee]], and is redeemable by whoever first includes the transaction into the block chain.&lt;br /&gt;
&lt;br /&gt;
A special kind of transaction, called a [[coinbase transaction]], has no inputs.  It is created by [[miners]], and there is one coinbase transaction per block.  Because each block comes with a reward of newly created Bitcoins (e.g. 50 BTC for the first 210,000 blocks), the first transaction of a block is, with few exceptions, the transaction that grants those coins to their recipient (the miner).  In addition to the newly created Bitcoins, the coinbase transaction is also used for assigning the recipient of any transaction fees that were paid within the other transactions being included in the same block.  The coinbase transaction can assign the entire reward to a single Bitcoin address, or split it in portions among multiple addresses, just like any other transaction.  Coinbase transactions always contain outputs totaling the sum of the block reward plus all transaction fees collected from the other transactions in the same block.&lt;br /&gt;
&lt;br /&gt;
Most Bitcoin outputs encumber the newly transferred coins with a single ECDSA private key.  The actual record saved with inputs and outputs isn&#039;t necessarily a key, but a &#039;&#039;script&#039;&#039;.  Bitcoin uses an interpreted scripting system to determine whether an output&#039;s criteria have been satisfied, with which more complex operations are possible, such as outputs that require two ECDSA signatures, or two-of-three-signature schemes.  An output that references a single Bitcoin address is a &#039;&#039;typical&#039;&#039; output; an output actually contains this information in the form of a script that requires a single ECDSA signature (see [[OP_CHECKSIG]]).  The output script specifies what must be provided to unlock the funds later, and when the time comes in the future to spend the transaction in another input, that input must provide all of the thing(s) that satisfy the requirements defined by the original output script.&lt;br /&gt;
&lt;br /&gt;
=== Addresses ===&lt;br /&gt;
&lt;br /&gt;
A bitcoin address is in fact the hash of a ECDSA public key, computed this way:&lt;br /&gt;
&lt;br /&gt;
 Version = 1 byte of 0 (zero); on the test network, this is 1 byte of 111&lt;br /&gt;
 Key hash = Version concatenated with RIPEMD-160(SHA-256(public key))&lt;br /&gt;
 Checksum = 1st 4 bytes of SHA-256(SHA-256(Key hash))&lt;br /&gt;
 Bitcoin Address = Base58Encode(Key hash concatenated with Checksum)&lt;br /&gt;
&lt;br /&gt;
The Base58 encoding used is home made, and has some differences. Especially, leading zeroes are kept as single zeroes when conversion happens.&lt;br /&gt;
&lt;br /&gt;
== Common structures ==&lt;br /&gt;
&lt;br /&gt;
Almost all integers are encoded in little endian. Only IP or port number are encoded big endian.&lt;br /&gt;
&lt;br /&gt;
=== Message structure ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || magic || uint32_t || Magic value indicating message origin network, and used to seek to next message when stream state is unknown&lt;br /&gt;
|-&lt;br /&gt;
| 12 || command || char[12] || ASCII string identifying the packet content, NULL padded (non-NULL padding results in packet rejected)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || length || uint32_t || Length of payload in number of bytes&lt;br /&gt;
|-&lt;br /&gt;
| 4 || checksum || uint32_t || First 4 bytes of sha256(sha256(payload))&lt;br /&gt;
|-&lt;br /&gt;
| ? || payload || uchar[] || The actual data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Known magic values:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Network !! Magic value !! Sent over wire as&lt;br /&gt;
|-&lt;br /&gt;
| main || 0xD9B4BEF9 || F9 BE B4 D9&lt;br /&gt;
|-&lt;br /&gt;
| testnet || 0xDAB5BFFA || FA BF B5 DA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Variable length integer ===&lt;br /&gt;
&lt;br /&gt;
Integer can be encoded depending on the represented value to save space.  Variable length integers always precede an array/vector of a type of data that may vary in length.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value !! Storage length !! Format&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt; 0xfd || 1 || uint8_t&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;= 0xffff || 3 || 0xfd followed by the length as uint16_t&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;= 0xffffffff || 5 || 0xfe followed by the length as uint32_t&lt;br /&gt;
|-&lt;br /&gt;
| - || 9 || 0xff followed by the length as uint64_t&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Variable length string ===&lt;br /&gt;
&lt;br /&gt;
Variable length string can be stored using a variable length integer followed by the string itself.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || length || [[Protocol_specification#Variable_length_integer|var_int]] || Length of the string&lt;br /&gt;
|-&lt;br /&gt;
| ? || string || char[] || The string itself (can be empty)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Network address ===&lt;br /&gt;
&lt;br /&gt;
When a network address is needed somewhere, this structure is used.  This protocol and structure supports IPv6, &#039;&#039;&#039;but note that the original client currently only supports IPv4 networking&#039;&#039;&#039;. Network addresses are not prefixed with a timestamp in the version message.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || time || uint32 || the Time (version &amp;gt;= 31402)&lt;br /&gt;
|-&lt;br /&gt;
| 8 || services || uint64_t || same service(s) listed in [[#version|version]]&lt;br /&gt;
|-&lt;br /&gt;
| 16 || IPv6/4 || char[16] || IPv6 address. Network byte order. The original client only supports IPv4 and only reads the last 4 bytes to get the IPv4 address. However, the IPv4 address is written into the message as a 16 byte [http://en.wikipedia.org/wiki/IPv6#IPv4-mapped_IPv6_addresses IPv4-mapped IPv6 address]&lt;br /&gt;
(12 bytes &#039;&#039;00 00 00 00  00 00 00 00  00 00 FF FF&#039;&#039;, followed by the 4 bytes of the IPv4 address).&lt;br /&gt;
|-&lt;br /&gt;
| 2 || port || uint16_t || port number, network byte order&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hexdump example of Network address structure&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0000   01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................&lt;br /&gt;
0010   00 00 FF FF 0A 00 00 01  20 8D                    ........ .&lt;br /&gt;
&lt;br /&gt;
Network address:&lt;br /&gt;
 01 00 00 00 00 00 00 00                         - 1 (NODE_NETWORK: see services listed under version command)&lt;br /&gt;
 00 00 00 00 00 00 00 00 00 00 FF FF 0A 00 00 01 - IPv6: ::ffff:10.0.0.1 or IPv4: 10.0.0.1&lt;br /&gt;
 20 8D                                           - Port 8333&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Inventory Vectors ===&lt;br /&gt;
&lt;br /&gt;
Inventory vectors are used for notifying other nodes about objects they have or data which is being requested.&lt;br /&gt;
&lt;br /&gt;
Inventory vectors consist of the following data format:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || type || uint32_t || Identifies the object type linked to this inventory&lt;br /&gt;
|-&lt;br /&gt;
| 32 || hash || char[32] || Hash of the object&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The object type is currently defined as one of the following possibilities:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ERROR || Any data of with this number may be ignored&lt;br /&gt;
|-&lt;br /&gt;
| 1 || MSG_TX || Hash is related to a transaction&lt;br /&gt;
|-&lt;br /&gt;
| 2 || MSG_BLOCK || Hash is related to a data block&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Other Data Type values are considered reserved for future implementations.&lt;br /&gt;
&lt;br /&gt;
=== Block Headers ===&lt;br /&gt;
&lt;br /&gt;
Block headers are sent in a headers packet in response to a getheaders message.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || uint32_t || Block version information, based upon the software version creating this block&lt;br /&gt;
|-&lt;br /&gt;
| 32 || prev_block || char[32] || The hash value of the previous block this particular block references&lt;br /&gt;
|-&lt;br /&gt;
| 32 || merkle_root || char[32] || The reference to a Merkle tree collection which is a hash of all transactions related to this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || timestamp || uint32_t || A timestamp recording when this block was created (Limited to 2106!)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bits || uint32_t || The calculated difficulty target being used for this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nonce || uint32_t || The nonce used to generate this block… to allow variations of the header and compute different hashes&lt;br /&gt;
|-&lt;br /&gt;
| 1 || txn_count || uint8_t || Number of transaction entries, this value is always 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Message types ==&lt;br /&gt;
&lt;br /&gt;
=== version ===&lt;br /&gt;
&lt;br /&gt;
When a node creates an outgoing connection, it will immediately advertise its version. The remote node will respond with its version. No futher communication is possible until both peers have exchanged their version.&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || int32_t || Identifies protocol version being used by the node&lt;br /&gt;
|-&lt;br /&gt;
| 8 || services || uint64_t || bitfield of features to be enabled for this connection&lt;br /&gt;
|-&lt;br /&gt;
| 8 || timestamp || int64_t || standard UNIX timestamp in seconds&lt;br /&gt;
|-&lt;br /&gt;
| 26 || addr_recv || net_addr || The network address of the node receiving this message&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;| version &amp;gt;= 106&lt;br /&gt;
|-&lt;br /&gt;
| 26 || addr_from || net_addr || The network address of the node emitting this message&lt;br /&gt;
|-&lt;br /&gt;
| 8 || nonce || uint64_t || Node random nonce, randomly generated every time a version packet is sent. This nonce is used to detect connections to self.&lt;br /&gt;
|-&lt;br /&gt;
| ? || user_agent || [[#Variable length string|var_str]] || [[BIP_0014|User Agent]] (0x00 if string is 0 bytes long)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || start_height || int32_t || The last block received by the emitting node&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;verack&amp;quot; packet shall be sent if the version packet was accepted.&lt;br /&gt;
&lt;br /&gt;
The following services are currently assigned:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || NODE_NETWORK || This node can be asked for full blocks instead of just headers.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hexdump example of version message (OBSOLETE EXAMPLE. This example lacks a checksum and user-agent):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0000   F9 BE B4 D9 76 65 72 73  69 6F 6E 00 00 00 00 00   ....version.....&lt;br /&gt;
0010   55 00 00 00 9C 7C 00 00  01 00 00 00 00 00 00 00   U....|..........&lt;br /&gt;
0020   E6 15 10 4D 00 00 00 00  01 00 00 00 00 00 00 00   ...M............&lt;br /&gt;
0030   00 00 00 00 00 00 00 00  00 00 FF FF 0A 00 00 01   ................&lt;br /&gt;
0040   20 8D 01 00 00 00 00 00  00 00 00 00 00 00 00 00   ................&lt;br /&gt;
0050   00 00 00 00 FF FF 0A 00  00 02 20 8D DD 9D 20 2C   .......... ... ,&lt;br /&gt;
0060   3A B4 57 13 00 55 81 01  00                        :.W..U...&lt;br /&gt;
&lt;br /&gt;
Message header:&lt;br /&gt;
 F9 BE B4 D9                                                                   - Main network magic bytes&lt;br /&gt;
 76 65 72 73 69 6F 6E 00 00 00 00 00                                           - &amp;quot;version&amp;quot; command&lt;br /&gt;
 55 00 00 00                                                                   - Payload is 85 bytes long&lt;br /&gt;
                                                                               - No checksum in version message until 20 February 2012. See https://bitcointalk.org/index.php?topic=55852.0&lt;br /&gt;
Version message:&lt;br /&gt;
 9C 7C 00 00                                                                   - 31900 (version 0.3.19)&lt;br /&gt;
 01 00 00 00 00 00 00 00                                                       - 1 (NODE_NETWORK services)&lt;br /&gt;
 E6 15 10 4D 00 00 00 00                                                       - Mon Dec 20 21:50:14 EST 2010&lt;br /&gt;
 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF 0A 00 00 01 20 8D - Recipient address info - see Network Address&lt;br /&gt;
 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF 0A 00 00 02 20 8D - Sender address info - see Network Address&lt;br /&gt;
 DD 9D 20 2C 3A B4 57 13                                                       - Node random unique ID&lt;br /&gt;
 00                                                                            - &amp;quot;&amp;quot; sub-version string (string is 0 bytes long)&lt;br /&gt;
 55 81 01 00                                                                   - Last block sending node has is block #98645&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== verack ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;verack&#039;&#039; message is sent in reply to &#039;&#039;version&#039;&#039;.  This message consists of only a [[#Message structure|message header]] with the command string &amp;quot;verack&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hexdump of the verack message:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0000   F9 BE B4 D9 76 65 72 61  63 6B 00 00 00 00 00 00   ....verack......&lt;br /&gt;
0010   00 00 00 00 5D F6 E0 E2                            ........&lt;br /&gt;
&lt;br /&gt;
Message header:&lt;br /&gt;
 F9 BE B4 D9                          - Main network magic bytes&lt;br /&gt;
 76 65 72 61  63 6B 00 00 00 00 00 00 - &amp;quot;verack&amp;quot; command&lt;br /&gt;
 00 00 00 00                          - Payload is 0 bytes long&lt;br /&gt;
 5D F6 E0 E2                          - Checksum&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== addr ===&lt;br /&gt;
&lt;br /&gt;
Provide information on known nodes of the network. Non-advertised nodes should be forgotten after typically 3 hours&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || count || [[Protocol_specification#Variable_length_integer|var_int]] || Number of address entries (max: 1000)&lt;br /&gt;
|-&lt;br /&gt;
| 30x? || addr_list || (uint32_t + net_addr)[] || Address of other nodes on the network. version &amp;lt; 209 will only read the first one. The uint32_t is a timestamp (see note below).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Starting version 31402, addresses are prefixed with a timestamp. If no timestamp is present, the addresses should not be relayed to other peers, unless it is indeed confirmed they are up.&lt;br /&gt;
&lt;br /&gt;
Hexdump example of &#039;&#039;addr&#039;&#039; message:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0000   F9 BE B4 D9 61 64 64 72  00 00 00 00 00 00 00 00   ....addr........&lt;br /&gt;
0010   1F 00 00 00 ED 52 39 9B  01 E2 15 10 4D 01 00 00   .....R9.....M...&lt;br /&gt;
0020   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 FF   ................&lt;br /&gt;
0030   FF 0A 00 00 01 20 8D                               ..... .&lt;br /&gt;
&lt;br /&gt;
Message Header:&lt;br /&gt;
 F9 BE B4 D9                                     - Main network magic bytes&lt;br /&gt;
 61 64 64 72  00 00 00 00 00 00 00 00            - &amp;quot;addr&amp;quot;&lt;br /&gt;
 1F 00 00 00                                     - payload is 31 bytes long&lt;br /&gt;
 ED 52 39 9B                                     - checksum of payload&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
 01                                              - 1 address in this message&lt;br /&gt;
&lt;br /&gt;
Address:&lt;br /&gt;
 E2 15 10 4D                                     - Mon Dec 20 21:50:10 EST 2010 (only when version is &amp;gt;= 31402)&lt;br /&gt;
 01 00 00 00 00 00 00 00                         - 1 (NODE_NETWORK service - see version message)&lt;br /&gt;
 00 00 00 00 00 00 00 00 00 00 FF FF 0A 00 00 01 - IPv4: 10.0.0.1, IPv6: ::ffff:10.0.0.1 (IPv4-mapped IPv6 address)&lt;br /&gt;
 20 8D                                           - port 8333&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== inv ===&lt;br /&gt;
&lt;br /&gt;
Allows a node to advertise its knowledge of one or more objects. It can be received unsolicited, or in reply to &#039;&#039;getblocks&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Payload (maximum payload length: 50000 bytes):&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || count || [[Protocol_specification#Variable_length_integer|var_int]] || Number of inventory entries&lt;br /&gt;
|-&lt;br /&gt;
| 36x? || inventory || [[Protocol specification#Inventory Vectors|inv_vect]][] || Inventory vectors&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== getdata ===&lt;br /&gt;
&lt;br /&gt;
getdata is used in response to inv, to retrieve the content of a specific object, and is usually sent after receiving an &#039;&#039;inv&#039;&#039; packet, after filtering known elements.&lt;br /&gt;
&lt;br /&gt;
Payload (maximum payload length: 50000 bytes):&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || count || [[Protocol_specification#Variable_length_integer|var_int]] || Number of inventory entries&lt;br /&gt;
|-&lt;br /&gt;
| 36x? || inventory || [[Protocol specification#Inventory Vectors|inv_vect]][] || Inventory vectors&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== getblocks ===&lt;br /&gt;
&lt;br /&gt;
Return an &#039;&#039;inv&#039;&#039; packet containing the list of blocks starting right after the last known hash in the block locator object, up to hash_stop or 500 blocks, whichever comes first. To receive the next blocks hashes, one needs to issue getblocks again with a new block locator object. Keep in mind that some clients (specifically the Satoshi client) will gladly provide blocks which are invalid if the block locator object contains a hash on the invalid branch.&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || uint32_t || the protocol version&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || hash count || [[Protocol_specification#Variable_length_integer|var_int]] || number of block locator hash entries&lt;br /&gt;
|-&lt;br /&gt;
| 32+ || block locator hashes || char[32] || block locator object; newest back to genesis block (dense to start, but then sparse)&lt;br /&gt;
|-&lt;br /&gt;
| 32 || hash_stop || char[32] || hash of the last desired block; set to zero to get as many blocks as possible (500)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To create the block locator hashes, keep pushing hashes until you go back to the genesis block. After pushing 10 hashes back, the step backwards doubles every loop:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// From libbitcoin which is under AGPL&lt;br /&gt;
std::vector&amp;lt;size_t&amp;gt; block_locator_indices(int top_depth)&lt;br /&gt;
{&lt;br /&gt;
    // Start at max_depth&lt;br /&gt;
    std::vector&amp;lt;size_t&amp;gt; indices;&lt;br /&gt;
    // Push last 10 indices first&lt;br /&gt;
    size_t step = 1, start = 0;&lt;br /&gt;
    for (int i = top_depth; i &amp;gt; 0; i -= step, ++start)&lt;br /&gt;
    {&lt;br /&gt;
        if (start &amp;gt;= 10)&lt;br /&gt;
            step *= 2;&lt;br /&gt;
        indices.push_back(i);&lt;br /&gt;
    }&lt;br /&gt;
    indices.push_back(0);&lt;br /&gt;
    return indices;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that it is allowed to send in fewer known hashes down to a minimum of just one hash. However, the purpose of the block locator object is to detect a wrong branch in the caller&#039;s main chain. If the peer detects that you are off the main chain, it will send in block hashes which are earlier than your last known block. So if you just send in your last known hash and it is off the main chain, the peer starts over at block #1.&lt;br /&gt;
&lt;br /&gt;
=== getheaders ===&lt;br /&gt;
&lt;br /&gt;
Return a &#039;&#039;headers&#039;&#039; packet containing the headers of blocks starting right after the last known hash in the block locator object, up to hash_stop or 2000 blocks, whichever comes first. To receive the next block headers, one needs to issue getheaders again with a new block locator object. The &#039;&#039;getheaders&#039;&#039; command is used by thin clients to quickly download the blockchain where the contents of the transactions would be irrelevant (because they are not ours). Keep in mind that some clients (specifically the Satoshi client) will gladly provide headers of blocks which are invalid if the block locator object contains a hash on the invalid branch.&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || uint32_t || the protocol version&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || hash count || [[Protocol_specification#Variable_length_integer|var_int]] || number of block locator hash entries&lt;br /&gt;
|-&lt;br /&gt;
| 32+ || block locator hashes || char[32] || block locator object; newest back to genesis block (dense to start, but then sparse)&lt;br /&gt;
|-&lt;br /&gt;
| 32 || hash_stop || char[32] || hash of the last desired block header; set to zero to get as many blocks as possible (2000)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For the block locator object in this packet, the same rules apply as for the [[Protocol_specification#Variable_length_integer|getblocks]] packet.&lt;br /&gt;
&lt;br /&gt;
=== tx ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;tx&#039;&#039; describes a bitcoin transaction, in reply to &#039;&#039;getdata&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || uint32_t || Transaction data format version&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || tx_in count || [[Protocol_specification#Variable_length_integer|var_int]] || Number of Transaction inputs&lt;br /&gt;
|-&lt;br /&gt;
| 41+ || tx_in || tx_in[] || A list of 1 or more transaction inputs or sources for coins&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || tx_out count || [[Protocol_specification#Variable_length_integer|var_int]] || Number of Transaction outputs&lt;br /&gt;
|-&lt;br /&gt;
| 8+ || tx_out || tx_out[] || A list of 1 or more transaction outputs or destinations for coins&lt;br /&gt;
|-&lt;br /&gt;
| 4 || lock_time || uint32_t || The block number or timestamp at which this transaction is locked:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || Always locked&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt; 500000000  || Block number at which this transaction is locked&lt;br /&gt;
|-&lt;br /&gt;
| &amp;gt;= 500000000 || UNIX timestamp at which this transaction is locked&lt;br /&gt;
|}&lt;br /&gt;
A non-locked transaction must not be included in blocks, and it can be modified by broadcasting a new version before the time has expired (replacement is currently disabled in Bitcoin, however, so this is useless).&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
TxIn consists of the following fields:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 36 || previous_output || outpoint || The previous output transaction reference, as an OutPoint structure&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || script length || [[Protocol_specification#Variable_length_integer|var_int]] || The length of the signature script&lt;br /&gt;
|-&lt;br /&gt;
| ? || signature script || uchar[] || Computational Script for confirming transaction authorization&lt;br /&gt;
|-&lt;br /&gt;
| 4 || [http://bitcoin.stackexchange.com/q/2025/323 sequence] || uint32_t || Transaction version as defined by the sender. Intended for &amp;quot;replacement&amp;quot; of transactions when information is updated before inclusion into a block.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The OutPoint structure consists of the following fields:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 32 || hash || char[32] || The hash of the referenced transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || index || uint32_t || The index of the specific output in the transaction. The first output is 0, etc.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The Script structure consists of a series of pieces of information and operations related to the value of the transaction.&lt;br /&gt;
&lt;br /&gt;
(Structure to be expanded in the future… see script.h and script.cpp and [[Script]] for more information)&lt;br /&gt;
&lt;br /&gt;
The TxOut structure consists of the following fields:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 8 || value || int64_t || Transaction Value&lt;br /&gt;
|-&lt;br /&gt;
| 1+ || pk_script length || [[Protocol_specification#Variable_length_integer|var_int]] || Length of the pk_script&lt;br /&gt;
|-&lt;br /&gt;
| ? || pk_script || uchar[] || Usually contains the public key as a Bitcoin script setting up conditions to claim this output.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Example &#039;&#039;tx&#039;&#039; message:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
000000	F9 BE B4 D9 74 78 00 00  00 00 00 00 00 00 00 00   ....tx..........&lt;br /&gt;
000010	02 01 00 00 E2 93 CD BE  01 00 00 00 01 6D BD DB   .............m..&lt;br /&gt;
000020	08 5B 1D 8A F7 51 84 F0  BC 01 FA D5 8D 12 66 E9   .[...Q........f.&lt;br /&gt;
000030	B6 3B 50 88 19 90 E4 B4  0D 6A EE 36 29 00 00 00   .;P......j.6)...&lt;br /&gt;
000040	00 8B 48 30 45 02 21 00  F3 58 1E 19 72 AE 8A C7   ..H0E.!..X..r...&lt;br /&gt;
000050	C7 36 7A 7A 25 3B C1 13  52 23 AD B9 A4 68 BB 3A   .6zz%;..R#...h.:&lt;br /&gt;
000060	59 23 3F 45 BC 57 83 80  02 20 59 AF 01 CA 17 D0   Y#?E.W... Y.....&lt;br /&gt;
000070	0E 41 83 7A 1D 58 E9 7A  A3 1B AE 58 4E DE C2 8D   .A.z.X.z...XN...&lt;br /&gt;
000080	35 BD 96 92 36 90 91 3B  AE 9A 01 41 04 9C 02 BF   5...6..;...A....&lt;br /&gt;
000090	C9 7E F2 36 CE 6D 8F E5  D9 40 13 C7 21 E9 15 98   .~.6.m...@..!...&lt;br /&gt;
0000A0	2A CD 2B 12 B6 5D 9B 7D  59 E2 0A 84 20 05 F8 FC   *.+..].}Y... ...&lt;br /&gt;
0000B0	4E 02 53 2E 87 3D 37 B9  6F 09 D6 D4 51 1A DA 8F   N.S..=7.o...Q...&lt;br /&gt;
0000C0	14 04 2F 46 61 4A 4C 70  C0 F1 4B EF F5 FF FF FF   ../FaJLp..K.....&lt;br /&gt;
0000D0	FF 02 40 4B 4C 00 00 00  00 00 19 76 A9 14 1A A0   ..@KL......v....&lt;br /&gt;
0000E0	CD 1C BE A6 E7 45 8A 7A  BA D5 12 A9 D9 EA 1A FB   .....E.z........&lt;br /&gt;
0000F0	22 5E 88 AC 80 FA E9 C7  00 00 00 00 19 76 A9 14   &amp;quot;^...........v..&lt;br /&gt;
000100	0E AB 5B EA 43 6A 04 84  CF AB 12 48 5E FD A0 B7   ..[.Cj.....H^...&lt;br /&gt;
000110	8B 4E CC 52 88 AC 00 00  00 00                     .N.R......&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Message header:&lt;br /&gt;
 F9 BE B4 D9                                       - main network magic bytes&lt;br /&gt;
 74 78 00 00 00 00 00 00 00 00 00 00               - &amp;quot;tx&amp;quot; command&lt;br /&gt;
 02 01 00 00                                       - payload is 258 bytes long&lt;br /&gt;
 E2 93 CD BE                                       - checksum of payload&lt;br /&gt;
&lt;br /&gt;
Transaction:&lt;br /&gt;
 01 00 00 00                                       - version&lt;br /&gt;
&lt;br /&gt;
Inputs:&lt;br /&gt;
 01                                                - number of transaction inputs&lt;br /&gt;
&lt;br /&gt;
Input 1:&lt;br /&gt;
 6D BD DB 08 5B 1D 8A F7  51 84 F0 BC 01 FA D5 8D  - previous output (outpoint)&lt;br /&gt;
 12 66 E9 B6 3B 50 88 19  90 E4 B4 0D 6A EE 36 29&lt;br /&gt;
 00 00 00 00&lt;br /&gt;
&lt;br /&gt;
 8B                                                - script is 139 bytes long&lt;br /&gt;
&lt;br /&gt;
 48 30 45 02 21 00 F3 58  1E 19 72 AE 8A C7 C7 36  - signature script (scriptSig)&lt;br /&gt;
 7A 7A 25 3B C1 13 52 23  AD B9 A4 68 BB 3A 59 23&lt;br /&gt;
 3F 45 BC 57 83 80 02 20  59 AF 01 CA 17 D0 0E 41&lt;br /&gt;
 83 7A 1D 58 E9 7A A3 1B  AE 58 4E DE C2 8D 35 BD&lt;br /&gt;
 96 92 36 90 91 3B AE 9A  01 41 04 9C 02 BF C9 7E&lt;br /&gt;
 F2 36 CE 6D 8F E5 D9 40  13 C7 21 E9 15 98 2A CD&lt;br /&gt;
 2B 12 B6 5D 9B 7D 59 E2  0A 84 20 05 F8 FC 4E 02&lt;br /&gt;
 53 2E 87 3D 37 B9 6F 09  D6 D4 51 1A DA 8F 14 04&lt;br /&gt;
 2F 46 61 4A 4C 70 C0 F1  4B EF F5&lt;br /&gt;
&lt;br /&gt;
 FF FF FF FF                                       - sequence&lt;br /&gt;
&lt;br /&gt;
Outputs:&lt;br /&gt;
 02                                                - 2 Output Transactions&lt;br /&gt;
&lt;br /&gt;
Output 1:&lt;br /&gt;
 40 4B 4C 00 00 00 00 00                           - 0.05 BTC (5000000)&lt;br /&gt;
 19                                                - pk_script is 25 bytes long&lt;br /&gt;
&lt;br /&gt;
 76 A9 14 1A A0 CD 1C BE  A6 E7 45 8A 7A BA D5 12  - pk_script&lt;br /&gt;
 A9 D9 EA 1A FB 22 5E 88  AC&lt;br /&gt;
&lt;br /&gt;
Output 2:&lt;br /&gt;
 80 FA E9 C7 00 00 00 00                           - 33.54 BTC (3354000000)&lt;br /&gt;
 19                                                - pk_script is 25 bytes long&lt;br /&gt;
&lt;br /&gt;
 76 A9 14 0E AB 5B EA 43  6A 04 84 CF AB 12 48 5E  - pk_script&lt;br /&gt;
 FD A0 B7 8B 4E CC 52 88  AC&lt;br /&gt;
&lt;br /&gt;
Locktime:&lt;br /&gt;
 00 00 00 00                                       - lock time&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== block ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;block&#039;&#039;&#039; message is sent in response to a getdata message which requests transaction information from a block hash.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || version || uint32_t || Block version information, based upon the software version creating this block&lt;br /&gt;
|-&lt;br /&gt;
| 32 || prev_block || char[32] || The hash value of the previous block this particular block references&lt;br /&gt;
|-&lt;br /&gt;
| 32 || merkle_root || char[32] || The reference to a Merkle tree collection which is a hash of all transactions related to this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || timestamp || uint32_t || A unix timestamp recording when this block was created (Currently limited to dates before the year 2106!)&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bits || uint32_t || The calculated [[Difficulty|difficulty target]] being used for this block&lt;br /&gt;
|-&lt;br /&gt;
| 4 || nonce || uint32_t || The nonce used to generate this block… to allow variations of the header and compute different hashes&lt;br /&gt;
|-&lt;br /&gt;
| ? || txn_count || [[Protocol_specification#Variable_length_integer|var_int]] || Number of transaction entries&lt;br /&gt;
|-&lt;br /&gt;
| ? || txns || tx[] || Block transactions, in format of &amp;quot;tx&amp;quot; command&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The SHA256 hash that identifies each block (and which must have a run of 0 bits) is calculated from the first 6 fields of this structure (version, prev_block, merkle_root, timestamp, bits, nonce, and standard SHA256 padding, making two 64-byte chunks in all) and &#039;&#039;not&#039;&#039; from the complete block. To calculate the hash, only two chunks need to be processed by the SHA256 algorithm. Since the &#039;&#039;nonce&#039;&#039; field is in the second chunk, the first chunk stays constant during mining and therefore only the second chunk needs to be processed. However, a Bitcoin hash is the hash of the hash, so two SHA256 rounds are needed for each mining iteration.&lt;br /&gt;
See [[Block hashing algorithm]] for details and an example.&lt;br /&gt;
&lt;br /&gt;
=== headers ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;headers&#039;&#039; packet returns block headers in response to a &#039;&#039;getheaders&#039;&#039; packet. &lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || count || [[Protocol_specification#Variable_length_integer|var_int]] || Number of block headers&lt;br /&gt;
|-&lt;br /&gt;
| 81x? || headers || [[Protocol_specification#Block_Headers|block_header]][] || [[Protocol_specification#Block_Headers|Block headers]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that the block headers in this packet include a transaction count (a var_int, so there can be more than 81 bytes per header) as opposed to the block headers which are sent to miners.&lt;br /&gt;
&lt;br /&gt;
=== getaddr ===&lt;br /&gt;
&lt;br /&gt;
The getaddr message sends a request to a node asking for information about known active peers to help with identifying potential nodes in the network. The response to receiving this message is to transmit an addr message with one or more peers from a database of known active peers. The typical presumption is that a node is likely to be active if it has been sending a message within the last three hours.&lt;br /&gt;
&lt;br /&gt;
No additional data is transmitted with this message.&lt;br /&gt;
&lt;br /&gt;
=== checkorder ===&lt;br /&gt;
&lt;br /&gt;
This message is used for [[IP Transactions]], to ask the peer if it accepts such transactions and allow it to look at the content of the order.&lt;br /&gt;
&lt;br /&gt;
It contains a CWalletTx object&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;| Fields from CMerkleTx&lt;br /&gt;
|-&lt;br /&gt;
| ? || hashBlock&lt;br /&gt;
|-&lt;br /&gt;
| ? || vMerkleBranch&lt;br /&gt;
|-&lt;br /&gt;
| ? || nIndex&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;| Fields from CWalletTx&lt;br /&gt;
|-&lt;br /&gt;
| ? || vtxPrev&lt;br /&gt;
|-&lt;br /&gt;
| ? || mapValue&lt;br /&gt;
|-&lt;br /&gt;
| ? || vOrderForm&lt;br /&gt;
|-&lt;br /&gt;
| ? || fTimeReceivedIsTxTime&lt;br /&gt;
|-&lt;br /&gt;
| ? || nTimeReceived&lt;br /&gt;
|-&lt;br /&gt;
| ? || fFromMe&lt;br /&gt;
|-&lt;br /&gt;
| ? || fSpent&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== submitorder ===&lt;br /&gt;
&lt;br /&gt;
Confirms an order has been submitted. &lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 32 || hash || char[32] || Hash of the transaction&lt;br /&gt;
|-&lt;br /&gt;
| ? || wallet_entry || CWalletTx || Same payload as checkorder&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== reply ===&lt;br /&gt;
&lt;br /&gt;
Generic reply for [[IP Transactions]]&lt;br /&gt;
&lt;br /&gt;
Payload:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || reply || uint32_t || reply code&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Possible values:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value !! Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 || SUCCESS || The IP Transaction can proceed (&#039;&#039;checkorder&#039;&#039;), or has been accepted (&#039;&#039;submitorder&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || WALLET_ERROR || AcceptWalletTransaction() failed&lt;br /&gt;
|-&lt;br /&gt;
| 2 || DENIED || IP Transactions are not accepted by this node&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ping ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;ping&#039;&#039; message is sent primarily to confirm that the TCP/IP connection is still valid. An error in transmission is presumed to be a closed connection and the address is removed as a current peer. No reply is expected as a result of this message being sent nor any sort of action expected on the part of a client when it is used.&lt;br /&gt;
&lt;br /&gt;
=== alert ===&lt;br /&gt;
&lt;br /&gt;
An &#039;&#039;&#039;alert&#039;&#039;&#039; is sent between nodes to send a general notification message throughout the network. If the alert can be confirmed with the signature as having come from the the core development group of the Bitcoin software, the message is suggested to be displayed for end-users. Attempts to perform transactions, particularly automated transactions through the client, are suggested to be halted. The text in the Message string should be relayed to log files and any user interfaces.&lt;br /&gt;
&lt;br /&gt;
Alert format:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ? || payload || var_str || Serialized alert payload&lt;br /&gt;
|-&lt;br /&gt;
| ? || signature || var_str || An ECDSA signature of the message&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The developers of Satoshi&#039;s client use this public key for signing alerts:&lt;br /&gt;
 04fc9702847840aaf195de8442ebecedf5b095cdbb9bc716bda9110971b28a49e0ead8564ff0db22209e0374782c093bb899692d524e9d6a6956e7c5ecbcd68284&lt;br /&gt;
 (hash) 1AGRxqDa5WjUKBwHB9XYEjmkv1ucoUUy1s&lt;br /&gt;
&lt;br /&gt;
The payload is serialized into a var_str to ensure that versions using incompatible alert formats can still relay alerts among one another. The current alert payload format is:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Field Size !! Description !! Data type !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Version || int32_t || Alert format version&lt;br /&gt;
|-&lt;br /&gt;
| 8 || RelayUntil || int64_t || The timestamp beyond which nodes should stop relaying this alert&lt;br /&gt;
|-&lt;br /&gt;
| 8 || Expiration || int64_t || The timestamp beyond which this alert is no longer in effect and should be ignored&lt;br /&gt;
|-&lt;br /&gt;
| 4 || ID || int32_t || A unique ID number for this alert&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Cancel || int32_t || All alerts with an ID number less than or equal to this number should be canceled: deleted and not accepted in the future&lt;br /&gt;
|-&lt;br /&gt;
| ? || setCancel || set&amp;lt;int&amp;gt; || All alert IDs contained in this set should be canceled as above&lt;br /&gt;
|-&lt;br /&gt;
| 4 || MinVer || int32_t || This alert only applies to versions greater than or equal to this version. Other versions should still relay it.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || MaxVer || int32_t || This alert only applies to versions less than or equal to this version. Other versions should still relay it.&lt;br /&gt;
|-&lt;br /&gt;
| ? || setSubVer || set&amp;lt;string&amp;gt; || If this set contains any elements, then only nodes that have their subVer contained in this set are affected by the alert. Other versions should still relay it.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Priority || int32_t || Relative priority compared to other alerts&lt;br /&gt;
|-&lt;br /&gt;
| ? || Comment || string || A comment on the alert that is not displayed&lt;br /&gt;
|-&lt;br /&gt;
| ? || StatusBar || string || The alert message that is displayed to the user&lt;br /&gt;
|-&lt;br /&gt;
| ? || Reserved || string || Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Sample alert (no message header):&lt;br /&gt;
 73010000003766404f00000000b305434f00000000f2030000f1030000001027000048ee0000&lt;br /&gt;
 0064000000004653656520626974636f696e2e6f72672f666562323020696620796f75206861&lt;br /&gt;
 76652074726f75626c6520636f6e6e656374696e672061667465722032302046656272756172&lt;br /&gt;
 79004730450221008389df45f0703f39ec8c1cc42c13810ffcae14995bb648340219e353b63b&lt;br /&gt;
 53eb022009ec65e1c1aaeec1fd334c6b684bde2b3f573060d5b70c3a46723326e4e8a4f1&lt;br /&gt;
 &lt;br /&gt;
 Version: 1&lt;br /&gt;
 RelayUntil: 1329620535&lt;br /&gt;
 Expiration: 1329792435&lt;br /&gt;
 ID: 1010&lt;br /&gt;
 Cancel: 1009&lt;br /&gt;
 setCancel: &amp;lt;empty&amp;gt;&lt;br /&gt;
 MinVer: 10000&lt;br /&gt;
 MaxVer: 61000&lt;br /&gt;
 setSubVer: &amp;lt;empty&amp;gt;&lt;br /&gt;
 Priority: 100&lt;br /&gt;
 Comment: &amp;lt;empty&amp;gt;&lt;br /&gt;
 StatusBar: &amp;quot;See bitcoin.org/feb20 if you have trouble connecting after 20 February&amp;quot;&lt;br /&gt;
 Reserved: &amp;lt;empty&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
See [[script]].&lt;br /&gt;
&lt;br /&gt;
== Wireshark dissector ==&lt;br /&gt;
A dissector for wireshark is being developed at https://github.com/blueCommand/bitcoin-dissector&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Network]]&lt;br /&gt;
* [[Protocol rules]]&lt;br /&gt;
[[zh-cn:协议说明]]&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Script&amp;diff=29153</id>
		<title>Script</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Script&amp;diff=29153"/>
		<updated>2012-07-28T00:48:57Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: /* Transaction with a message */ Line is if (opcode &amp;gt; OP_16 &amp;amp;&amp;amp; ++nOpCount &amp;gt; 201)&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;
{| 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;
|Concatenates two strings. &#039;&#039;Currently 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;
|Returns a section of a string. &#039;&#039;Currently 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;
|Keeps only characters left of the specified point in a string. &#039;&#039;Currently 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;
|Keeps only characters right of the specified point in a string. &#039;&#039;Currently 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;
{| 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;
|Flips all of the bits in the input. &#039;&#039;Currently 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;
|Boolean &#039;&#039;and&#039;&#039; between each bit in the inputs. &#039;&#039;Currently 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;
|Boolean &#039;&#039;or&#039;&#039; between each bit in the inputs. &#039;&#039;Currently 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;
|Boolean &#039;&#039;exclusive or&#039;&#039; between each bit in the inputs. &#039;&#039;Currently 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;
Arithmetic is limited to max 4 byte integers&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;
|The input is multiplied by 2. &#039;&#039;Currently 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;
|The input is divided by 2. &#039;&#039;Currently 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;
|a is multiplied by b. &#039;&#039;Currently 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;
|a is divided by b. &#039;&#039;Currently 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;
|Returns the remainder after dividing a by b. &#039;&#039;Currently 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;
|Shifts a left b bits, preserving sign. &#039;&#039;Currently 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;
|Shifts a right b bits, preserving sign. &#039;&#039;Currently 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.&lt;br /&gt;
&lt;br /&gt;
=== Standard Transaction to Bitcoin address ===&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 to IP address ===&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;
=== Transaction with a message ===&lt;br /&gt;
&lt;br /&gt;
It&#039;s possible to add arbitrary data to any transaction by just adding some data along with OP_DROP. Scripts are limited to 10,000 bytes and 201 instructions, and each individual instruction/value is limited to 520 bytes.&lt;br /&gt;
&lt;br /&gt;
 scriptPubKey: &amp;lt;message&amp;gt; OP_DROP &amp;lt;pubKey&amp;gt; OP_CHECKSIG&lt;br /&gt;
 scriptSig: &amp;lt;sig&amp;gt;&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;sig&amp;gt; &amp;lt;message&amp;gt; OP_DROP &amp;lt;pubKey&amp;gt; OP_CHECKSIG&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sig&amp;gt;&lt;br /&gt;
|&amp;lt;message&amp;gt; OP_DROP &amp;lt;pubKey&amp;gt; OP_CHECKSIG&lt;br /&gt;
|scriptSig added to the stack.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sig&amp;gt; &amp;lt;message&amp;gt;&lt;br /&gt;
|OP_DROP &amp;lt;pubKey&amp;gt; OP_CHECKSIG&lt;br /&gt;
|The message has been put.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sig&amp;gt;&lt;br /&gt;
|&amp;lt;pubKey&amp;gt; OP_CHECKSIG&lt;br /&gt;
|Top stack item has been removed.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt;&lt;br /&gt;
|OP_CHECKSIG&lt;br /&gt;
|Checking signature against the public key.&lt;br /&gt;
|-&lt;br /&gt;
|true&lt;br /&gt;
|Empty.&lt;br /&gt;
|Stack holds the value of signature check now.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Example non standard transaction on Testnet ===&lt;br /&gt;
&lt;br /&gt;
These 2 links below show a non standard transaction. It just prepends the hex of &amp;quot;bob&amp;quot; and the operation OP_DROP&lt;br /&gt;
which just removes it. As you can see they can be spent as normal.&lt;br /&gt;
&lt;br /&gt;
Input non-std transaction:&lt;br /&gt;
http://blockexplorer.com/testnet/t/6ttfeb55B1&lt;br /&gt;
&lt;br /&gt;
Spent by:&lt;br /&gt;
http://blockexplorer.com/testnet/t/AFdRB1CHS3&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>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=27787</id>
		<title>Changelog</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=27787"/>
		<updated>2012-06-12T23:03:12Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: Not a stub&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;
==0.6.X==&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>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=27786</id>
		<title>Changelog</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=27786"/>
		<updated>2012-06-12T23:03:01Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: /* 0.6.00.6.0 release announcement */ Remove Box&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&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;
==0.6.X==&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>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=27784</id>
		<title>Changelog</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=27784"/>
		<updated>2012-06-12T23:02:32Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: 0.6.X&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&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;
==0.6.X==&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>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=27783</id>
		<title>Changelog</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=27783"/>
		<updated>2012-06-12T22:50:31Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: /* 0.5.00.5.0 release announcement */ Remove Boxes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&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;
==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>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=27782</id>
		<title>Changelog</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=27782"/>
		<updated>2012-06-12T22:50:14Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: /* Changelogs */  Remove Boxes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&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;
==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>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=27781</id>
		<title>Changelog</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=27781"/>
		<updated>2012-06-12T22:49:14Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: /* 0.4.10.4.1 release announcement */ Remove Boxes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&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;
==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>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=27779</id>
		<title>Changelog</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=27779"/>
		<updated>2012-06-12T22:48:39Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: 0.5.X&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&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;
==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>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=27774</id>
		<title>Changelog</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=27774"/>
		<updated>2012-06-12T22:30:30Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: Add 0.4.X&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&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;
==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>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=27771</id>
		<title>Changelog</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=27771"/>
		<updated>2012-06-12T22:09:40Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: /* 0.4.00.4 release announcement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
This page aggregates the changelogs that have been posted on the forum for the Bitcoin releases. &lt;br /&gt;
&lt;br /&gt;
=Changelogs=&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.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>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=27770</id>
		<title>Changelog</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=27770"/>
		<updated>2012-06-12T22:09:21Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: Fix Formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
This page aggregates the changelogs that have been posted on the forum for the Bitcoin releases. &lt;br /&gt;
&lt;br /&gt;
=Changelogs=&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.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>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=27769</id>
		<title>Changelog</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=27769"/>
		<updated>2012-06-12T22:08:45Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: Add 0.4&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
This page aggregates the changelogs that have been posted on the forum for the Bitcoin releases. &lt;br /&gt;
&lt;br /&gt;
=Changelogs=&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;
Notable bug fixes from version 0.3.24:&lt;br /&gt;
--------------------------------------&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;
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.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>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=27768</id>
		<title>Changelog</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Changelog&amp;diff=27768"/>
		<updated>2012-06-12T22:07:34Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: Update references.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
This page aggregates the changelogs that have been posted on the forum for the Bitcoin releases. &lt;br /&gt;
&lt;br /&gt;
=Changelogs=&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>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Comparison_of_mining_pools&amp;diff=23978</id>
		<title>Comparison of mining pools</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Comparison_of_mining_pools&amp;diff=23978"/>
		<updated>2012-02-17T01:46:39Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: Update p2pool hashrate&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reward types &amp;amp; explanation:&lt;br /&gt;
* &#039;&#039;&#039;DGM&#039;&#039;&#039; - Double Geometric Method.  A hybrid between PPLNS and Geometric reward types that enables to operator to absorb some of the variance risk.  Operator receives portion of payout on short rounds and returns it on longer rounds to normalize payments. [https://bitcointalk.org/index.php?topic=39497.0]&lt;br /&gt;
* &#039;&#039;&#039;Prop.&#039;&#039;&#039; - Proportional. When block is found, the reward is distributed among all workers proportionally to how much shares each of them has found.&lt;br /&gt;
* &#039;&#039;&#039;PPLNS&#039;&#039;&#039; - Pay Per Last N Shares. Similar to proportional, but instead of looking at the number of shares in the round, instead looks at the last N shares, regardless of round boundaries.&lt;br /&gt;
* &#039;&#039;&#039;PPS&#039;&#039;&#039; - Pay Per Share. Each submitted share is worth certain amount of BC. Since finding a block requires &amp;lt;current difficulty&amp;gt; shares &#039;&#039;on average&#039;&#039;, a PPS method with 0% fee would be 50 BTC divided by &amp;lt;current difficulty&amp;gt;. It is risky for pool operators, hence the fee is highest.&lt;br /&gt;
* &#039;&#039;&#039;SMPPS&#039;&#039;&#039; - Shared Maximum Pay Per Share. Like Pay Per Share, but never pays more than the pool earns. [http://eligius.st/wiki/index.php/Shared_Maximum_PPS]&lt;br /&gt;
* &#039;&#039;&#039;ESMPPS&#039;&#039;&#039; - Equalized Shared Maximum Pay Per Share. Like SMPPS, but equalizes payments fairly among all those who are owed. [http://forum.bitcoin.org/index.php?topic=12181.msg378851#msg378851]&lt;br /&gt;
* &#039;&#039;&#039;CPPSRB&#039;&#039;&#039; - Capped Pay Per Share with Recent Backpay.&lt;br /&gt;
* &#039;&#039;&#039;Score&#039;&#039;&#039; - Score based system: a proportional reward, but weighed by time submitted. Each submitted share is worth more in the function of time &#039;&#039;t&#039;&#039; since start of current round. For each share score is updated by: score += exp(t/C). This makes later shares worth much more than earlier shares, thus the miner&#039;s score quickly diminishes when they stop mining on the pool. Rewards are calculated proportionally to scores (and not to shares). (at slush&#039;s pool C=300 seconds, and every hour scores are normalized)&lt;br /&gt;
[http://eligius.st/~luke-jr/samples/800MH-3/ Visual examples of the various payout methods]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Location !! GH/s&amp;lt;ref name=&amp;quot;hashrate2&amp;quot;&amp;gt;Note that pool hashrate is largely irrelevant but can be seen as a popularity measurement. Note however that it is a theoretical security issue if one pool gains above 50% of the total computational power of the network, thus consider joining a pool based on other metrics.&amp;lt;/ref&amp;gt; !! Merged Mining&amp;lt;ref name=&amp;quot;merged&amp;quot;&amp;gt;Merged mining allows miners to mine on multiple [[block chains]] at the same time with the same hashing.&amp;lt;/ref&amp;gt; !! Reward Type !! Transaction fees !! Fee PPS !! Fee Prop / Score !! Protocol !! Launched !! Forum !! Website&lt;br /&gt;
|-&lt;br /&gt;
| [[50BTC]] || Germany || 170 || No || PPS+stales&amp;lt;ref name=&amp;quot;stales&amp;quot;&amp;gt;Pool also rewards stale shares&amp;lt;/ref&amp;gt; || kept by pool || 3% || || RPC+LP || 2011-11-11 || [http://bitcointalk.org/index.php?topic=54673.0 Link] || [http://50btc.com/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[ABCPool.co|ABCPool.co]] || USA || 430 || ? || PPS&amp;lt;ref name=&amp;quot;stales&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt; || kept by pool || 4%&amp;lt;ref name=&amp;quot;donations&amp;quot;&amp;gt;Donations are possible&amp;lt;/ref&amp;gt; ||  || RPC+LP || 2011-08-02 || [http://bitcointalk.org/index.php?topic=33586.0 Link] || [http://www.ABCPool.co/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[ArsBitcoin|ArsBitcoin]] || USA || 433 || No || SMPPS || kept by pool || 0%&amp;lt;ref name=&amp;quot;donations&amp;quot;&amp;gt;Donations are possible&amp;lt;/ref&amp;gt; ||  || RPC+LP || 2011-06-15 || [http://forum.bitcoin.org/index.php?topic=18567.0 Link] || [https://arsbitcoin.com/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bitcash.cz|Bitcash.cz]] || Czech Republic || 14 || ? || Prop. || kept by pool ||  || 0% || RPC+LP || 2011-07-21 || [http://bitcash.cz/forum/ Link] || &lt;br /&gt;
[http://bitcash.cz/pool/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bitcoin-Station|Bitcoin-Station]] || Germany || 5 || ? || Prop. || kept by pool ||  || 2% || RPC+LP || 2011-09-11 ||  || [https://bitcoin-station.com/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[Betcoin.co_Pool|Betcoin.co Pool]] || USA || 5.9 || ? || PPLNS || kept by pool || || 0% || RPC+LP || 2011-07-07 || [http://forum.bitcoin.org/index.php?topic=26439.0 Link] || [http://pool.betcoin.co/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bitarama|Bitarama.com]] || USA || 0.021 || ? || Prop || kept by pool ||  ||  || RPC+LP || 2011-08-02 ||  || [http://www.bitarama.com/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bitclockers|BitClockers]] || USA, EU || 325 || ? || Prop. || kept by pool || || 2% || RPC+LP || 2011-05-27 || [http://forum.bitcoin.org/index.php?topic=10127.0 Link] || [http://bitclockers.com/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bitcoin_Pool|Bitcoin Mining Pool]] || USA || 51 || ? || Prop. || kept by pool || || 0%&amp;lt;ref name=&amp;quot;donations&amp;quot;&amp;gt;Donations are possible&amp;lt;/ref&amp;gt; || RPC+LP || Unknown || [http://bitcoinpool.com/forum/ Link] || [http://www.bitcoinpool.com/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bitcoin_Pooled_Mining|Bitcoin Pooled Mining (Slush)]] || EU/London || 1454 || [[NMC]] || Score || kept by pool || || 2% || RPC+LP || 2010-11-27 || [http://forum.bitcoin.org/index.php?topic=1976.0 Link] || [http://mining.bitcoin.cz/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bitcoinitalia]] || Italy || 0.45 || ? || Prop. || kept by pool || || 0% || RPC+LP || 2011-07-12 || [http://forum.bitcoin.org/index.php?topic=26634.0 Link] || [http://www.btcfarm.us/ Link]&lt;br /&gt;
|- &lt;br /&gt;
| [[Bitcoins.lc]] || EU || 387 || ? || Prop. || kept by pool || || 0% || RPC+LP || 2011-05-27 || [http://forum.bitcoin.org/index.php?topic=10121.0 Link] || [http://www.bitcoins.lc/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[BitLotto Pool]] || Los Angeles || 0.4 || ? || Prop || kept by pool || || || RPC+LP || 2011-06-08 || [http://forum.bitcoin.org/index.php?topic=13794.0 Link] || [http://www.bitlottopool.com/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[BitMinter]] || Germany || 120 || [[NMC]] || PPLNS || shared || || 0% || RPC+LP || 2011-06-18 || [https://bitcointalk.org/index.php?topic=27062.0 Link] || [https://bitminter.com Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[Bitp.it]] || USA || 20 || ? || ESMPPS || kept by pool || || 0% || RPC+LP || 2011-06-08 || [http://forum.bitcoin.org/index.php?topic=12181.0 Link] || [https://pool.bitp.it Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[BitPenny]] || USA || 10 || No || CPPSRB || 97% shared || 3% || || Proprietary&amp;lt;ref name=&amp;quot;local&amp;quot;&amp;gt;Proprietary-protocol pools (BitPenny and p2pool) provide JSON-RPC to miners locally.&amp;lt;/ref&amp;gt; || 2011-02-08 || [https://bitcointalk.org/index.php?topic=36371.0 Link] || [http://bitpenny.com/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[BTC Guild]] || USA, EU || 1410 || [[NMC]] || PPS || kept by pool || 5% || || RPC+LP || 2011-05-09 || [http://forum.bitcoin.org/index.php?topic=7760.0 Link] || [http://www.btcguild.com/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[BTCMine]] || UK || 175 || ? || Score || kept by pool || || 2% || RPC+LP || 2011-03-11 || [http://forum.bitcoin.org/index.php?topic=4251.0 Link] || [http://www.btcmine.com/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[btcmp.com]] || Germany || 18 || ? || PPS || kept by pool || || 0% || RPC+LP || 2011-06-28 ||  || [http://www.btcmp.com/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[Btcserv|BTCServ]] || Germany || 71 || Converted to BC || PPS || kept by pool || 0% ||  || RPC+LP || 2011-07-09 || [http://forum.bitcoin.org/index.php?topic=27101.0 Link] || [http://btcserv.net/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[Btcworld.de]] || Germany || 2.5 || ? || Prop || kept by pool || || ? || RPC+LP || 2011-06-18 ||  || [http://btcworld.de/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [http://chwpool.kr105.com/ CHWpool] || Chile || 0 || ? || Prop || kept by pool || || 1% || RPC+LP || 2011-06-30 ||  || [http://chwpool.kr105.com/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[Coinotron|Coinotron]] || Poland || 7 || ? || Prop || kept by pool ||  || 0% || RPC+LP || 2011-07-06 || [http://forum.bitcoin.org/index.php?topic=26727.0 Link] || [http://www.coinotron.com Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[DeepBit]] || Germany || 3673 || No || PPS / Prop. || kept by pool || 10% || 3% || RPC+LP || 2011-02-26 || [http://forum.bitcoin.org/index.php?topic=3889.0 Link] || [http://deepbit.net/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[Eclipse Mining Consortium]] || USA / Europe / AU / Asia || 500|| [[NMC]] || DGM || kept by pool || || 0% || RPC+LP || 2011-06-14 || [http://forum.bitcoin.org/index.php?topic=16385.0 Link] || [https://eclipsemc.com Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[Eligius]] || Germany || 450 &amp;lt;!-- don&#039;t update this just because you catch us at a low instance; pools have variance just like any other miner --&amp;gt; || [[NMC]] || SMPPS || kept by pool || 0.000001%&amp;lt;ref name=&amp;quot;donations&amp;quot;&amp;gt;Donations are possible&amp;lt;/ref&amp;gt; || || RPC+LP || 2011-04-27 || [https://bitcointalk.org/index.php?topic=6667.0 Link] || [http://eligius.st Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[MasterPool]] || Germany || 20 || [[NMC]] || PPLNS || shared ||  || 1 or 2%&amp;lt;ref name=&amp;quot;payoutfee&amp;quot;&amp;gt;Fee is a payout fee. Instant payout: 2%. Scheduled payout (each night): 1%&amp;lt;/ref&amp;gt; || RPC+LP || 2011-07-18 || [https://bitcointalk.org/index.php?topic=42667.0 Link] || [https://www.masterpool.eu Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[Mineco.in]] || UK || 94 || ? || PPLNS || shared || || 0% || RPC+LP || 2011-06-15 || [http://forum.bitcoin.org/index.php?topic=17310.0 Link] || [https://mineco.in/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[Mining Team Reddit (MtRed)]] || USA, EU || 95 || [[NMC]] || PPS || kept by pool || 7% || || RPC+LP || 2011-05-25 || [http://forum.bitcoin.org/index.php?topic=15929.0 1] [http://reddit.com/r/mtred/ 2] || [http://www.mtred.com/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[NoFeeMining]] || USA || 0 (closed) || ? || RSMPPS || shared || || 0% || RPC+LP || 2011-06-17 || [http://forum.bitcoin.org/index.php?topic=18301.0 Link] || [http://nofeemining.appspot.com/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[Ozco.in]] || USA/EU/AUS || 88 || [[NMC]] || DGM || kept by pool || || 0% || RPC+LP || 2011-06-07 || [http://forum.bitcoin.org/index.php?topic=14085.0/ Link] || [http://www.ozco.in Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[P2Pool]] || Earth (P2P) || 271 || Yes/Solo&amp;lt;ref&amp;gt;P2Pool supports merged mining but payouts in the merged chain are not pooled.&amp;lt;/ref&amp;gt; || PPLNS || shared || || &amp;lt;0%&amp;lt;ref&amp;gt;People are donating &#039;&#039;to&#039;&#039; P2Pool miners to encourage people to use it. The P2Pool author also accepts optional donations.&amp;lt;/ref&amp;gt; || Proprietary&amp;lt;ref name=&amp;quot;local&amp;quot;/&amp;gt; || 2011-06-17 || [http://forum.bitcoin.org/index.php?topic=18313.0 Link] || [https://en.bitcoin.it/wiki/P2Pool Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[PolMine]] || Poland || 52 || ? || PPS || shared || 2% ||  || RPC || 2011-06-13 || [http://forum.polmine.pl/ Link] || [https://polmine.pl/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[pool.itzod.ru]] || Russian Federation || 35 || Converted to BTC || RSMPPS || shared || 0% || 0% || RPC+LP || 2011-08-01 || [https://bitcointalk.org/index.php?topic=25127.0 Link] [https://bitcointalk.org/index.php?topic=44024.0 Link] || [http://pool.itzod.ru/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[rfcpool]] || UK, EU || 60 || No || PPLNS || shared || 0%&amp;lt;ref name=&amp;quot;donations&amp;quot;&amp;gt;Donations are possible&amp;lt;/ref&amp;gt; || 0%&amp;lt;ref name=&amp;quot;donations&amp;quot;&amp;gt;Donations are possible&amp;lt;/ref&amp;gt; || RPC+LP || 2011-07-05 || [http://forum.bitcoin.org/index.php?topic=26164.0/ Link] || [https://www.rfcpool.com Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[Simplecoin|Simplecoin.us]] || US || 25 || [[NMC]] || SMPPS / PPLNS / Prop || kept by pool || 0%&amp;lt;ref name=&amp;quot;donations&amp;quot;&amp;gt;Donations are possible&amp;lt;/ref&amp;gt; || 0%&amp;lt;ref name=&amp;quot;donations&amp;quot;&amp;gt;Donations are possible&amp;lt;/ref&amp;gt; || RPC+LP || 2011-06-02 || [http://forum.bitcoin.org/index.php?topic=11186.0 Link] || [http://simplecoin.us/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[Triplemining]] || Europe || 40 || ? || PPLNS || kept by pool || || 0% &amp;lt;ref name=&amp;quot;jackpot&amp;quot;&amp;gt;Triplemining keeps 1% to redistribute using a weekly jackpot and affiliations&amp;lt;/ref&amp;gt; || RPC+LP || 2011-06-28 || [http://forum.bitcoin.org/index.php?topic=23664.0 Link] || [http://tinyurl.com/triplemining Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[UnitedMiners]] || US || 2 || ? || Prop || kept by pool || || 0% || RPC+LP || 2011-06-28 || [http://forum.bitcoin.org/index.php?topic=23664.0 Link] || [http://www.unitedminers.com Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[yourbtc.net]] || Germany || 18 || [[NMC]] || DGM || shared || || 0% || RPC+LP || 2011-09-10 || [http://bitcointalk.org/index.php?topic=42631.0 Link] || [http://yourbtc.net/ Link]&lt;br /&gt;
|-&lt;br /&gt;
| [[pool.mkalinin.ru]] || Russia || 16 || No || PPLNS || kept by pool || || 0% || RPC+LP || 2011-07-20 || [https://bitcointalk.org/index.php?topic=30703.0 Link] || [http://pool.mkalinin.ru/ Link]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
*[[Pooled mining]]&lt;br /&gt;
*[http://bcx.me/ Bitcoin Mining Pool Tracker]&lt;br /&gt;
*[http://blockchain.info/pools Hashrate distribution pie chart]&lt;br /&gt;
&lt;br /&gt;
[[Category:Mining]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=BIP_0021&amp;diff=23157</id>
		<title>BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=BIP_0021&amp;diff=23157"/>
		<updated>2012-01-31T21:21:23Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: Specify number locale, s/mustimplement/req/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  BIP: 21&lt;br /&gt;
  Title: URI Scheme&lt;br /&gt;
  Author: Nils Schneider &amp;lt;nils.schneider@gmail.com&amp;gt;&lt;br /&gt;
          Matt Corallo &amp;lt;bip21@bluematt.me&amp;gt;&lt;br /&gt;
  Status: Draft&lt;br /&gt;
  Type: Standards Track&lt;br /&gt;
  Created: 29-01-2012&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This BIP is a modification of an earlier [[BIP 0020]] by Luke Dashjr. BIP 0020 was based off an earlier document by Nils Schneider. The alternative payment amounts in BIP 0020 have been removed.&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
This BIP proposes a URI scheme for making Bitcoin payments.&lt;br /&gt;
&lt;br /&gt;
==Motivation==&lt;br /&gt;
The purpose of this URI scheme is to enable users to easily make payments by simply clicking links on webpages or scanning QR Codes.&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
&lt;br /&gt;
=== General rules for handling (important!) ===&lt;br /&gt;
&lt;br /&gt;
Bitcoin clients MUST NOT act on URIs without getting the user&#039;s authorization.&lt;br /&gt;
They SHOULD require the user to manually approve each payment individually, though in some cases they MAY allow the user to automatically make this decision.&lt;br /&gt;
&lt;br /&gt;
=== Operating system integration ===&lt;br /&gt;
Graphical bitcoin clients SHOULD register themselves as the handler for the &amp;quot;bitcoin:&amp;quot; URI scheme by default, if no other handler is already registered. If there is already a registered handler, they MAY prompt the user to change it once when they first run the client.&lt;br /&gt;
&lt;br /&gt;
=== BNF grammar ===&lt;br /&gt;
&lt;br /&gt;
(See also [[#Simpler syntax|a simpler representation of syntax]])&lt;br /&gt;
&lt;br /&gt;
 bitcoinurn     = &amp;quot;bitcoin:&amp;quot; bitcoinaddress [ &amp;quot;?&amp;quot; bitcoinparams ]&lt;br /&gt;
 bitcoinaddress = base58 *base58&lt;br /&gt;
 bitcoinparams  = *bitcoinparam&lt;br /&gt;
 bitcoinparam   = amountparam | labelparam | messageparam | otherparam | reqparam&lt;br /&gt;
 amountparam    = &amp;quot;amount=&amp;quot; *digit [ &amp;quot;.&amp;quot; *digit ]&lt;br /&gt;
 labelparam     = &amp;quot;label=&amp;quot; *pchar&lt;br /&gt;
 messageparam   = &amp;quot;message=&amp;quot; *pchar&lt;br /&gt;
 otherparam     = pchar *pchar &amp;quot;=&amp;quot; *pchar&lt;br /&gt;
 reqparam       = &amp;quot;req:&amp;quot; pchar *pchar &amp;quot;=&amp;quot; *pchar&lt;br /&gt;
&lt;br /&gt;
=== Query Keys ===&lt;br /&gt;
&lt;br /&gt;
*label: Label for that address (e.g. name of receiver)&lt;br /&gt;
*address: bitcoin address&lt;br /&gt;
*message: message that shown to the user after scanning the QR code&lt;br /&gt;
*size: amount of base bitcoin units ([[#Transfer amount/size|see below]])&lt;br /&gt;
*(others): optional, for future extensions&lt;br /&gt;
&lt;br /&gt;
==== Transfer amount/size ====&lt;br /&gt;
&lt;br /&gt;
If an amount is provided, it MUST be specified in decimal BTC.&lt;br /&gt;
All amounts MUST contain no commas and use a period (.) as the separating character to separate whole numbers and decimal fractions.&lt;br /&gt;
I.e. amount=50.00 or amount=50 is treated as 50 BTC, and amount=50,000.00 is invalid.&lt;br /&gt;
&lt;br /&gt;
Bitcoin clients MAY display the amount in any format that is not intended to deceive the user.&lt;br /&gt;
They SHOULD choose a format that is foremost least confusing, and only after that most reasonable given the amount requested.&lt;br /&gt;
For example, so long as the majority of users work in BTC units, values should always be displayed in BTC by default, even if mBTC or TBC would otherwise be a more logical interpretation of the amount.&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
===Payment identifiers, not person identifiers===&lt;br /&gt;
Current best practices are that a unique address should be used for every transaction.&lt;br /&gt;
Therefore, a URI scheme should not represent an exchange of personal information, but a one-time payment.&lt;br /&gt;
&lt;br /&gt;
===Accessibility (URI scheme name)===&lt;br /&gt;
Should someone from the outside happen to see such a URI, the URI scheme name already gives a description.&lt;br /&gt;
A quick search should then do the rest to help them find the resources needed to make their payment.&lt;br /&gt;
Other proposed names sound much more cryptic; the chance that someone googles that out of curiosity are much slimmer.&lt;br /&gt;
Also, very likely, what he will find are mostly technical specifications - not the best introduction to bitcoin.&lt;br /&gt;
&lt;br /&gt;
==Forward compatibility==&lt;br /&gt;
Variables which are prefixed with a req: are considered required.  If a client does not implement any variables which are prefixed with req:, it MUST consider the entire URI invalid.  Any other variables which are not implemented, but which are not prefixed with a req:, can be safely ignored.  &lt;br /&gt;
&lt;br /&gt;
==Backward compatibility==&lt;br /&gt;
As this BIP is written, several clients already implement a bitcoin: URI scheme similar to this one, however usually without the additional &amp;quot;req:&amp;quot; prefix requirement.  Thus, it is recommended that additional variables prefixed with req: not be used in a mission-critical way until a grace period of 6 months from the finalization of this BIP has passed in order to allow client developers to release new versions, and users of old clients to upgrade.&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Simpler syntax ===&lt;br /&gt;
&lt;br /&gt;
This section is non-normative and does not cover all possible syntax.&lt;br /&gt;
Please see the [[#BNF grammar|BNF grammar]] above for the normative syntax.&lt;br /&gt;
&lt;br /&gt;
[foo] means optional, &amp;lt;bar&amp;gt; are placeholders&lt;br /&gt;
&lt;br /&gt;
 bitcoin:&amp;lt;address&amp;gt;[?amount=&amp;lt;amount&amp;gt;][?label=&amp;lt;label&amp;gt;][?message=&amp;lt;message&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
Just the address:&lt;br /&gt;
 bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W&lt;br /&gt;
&lt;br /&gt;
Address with name:&lt;br /&gt;
 bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?label=Luke-Jr&lt;br /&gt;
&lt;br /&gt;
Request 20.30 BTC to &amp;quot;Luke-Jr&amp;quot;:&lt;br /&gt;
 bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=20.3&amp;amp;label=Luke-Jr&lt;br /&gt;
&lt;br /&gt;
Request 50 BTC with message:&lt;br /&gt;
 bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=50&amp;amp;label=Luke-Jr&amp;amp;message=Donation%20for%20project%20xyz&lt;br /&gt;
&lt;br /&gt;
Some future version that has variables which are (currently) not understood and required and thus invalid:&lt;br /&gt;
 bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?req:somethingyoudontunderstand=50&amp;amp;req:somethingelseyoudontget=999&lt;br /&gt;
&lt;br /&gt;
Some future version that has variables which are (currently) not understood but not required and thus valid:&lt;br /&gt;
 bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?somethingyoudontunderstand=50&amp;amp;somethingelseyoudontget=999&lt;br /&gt;
&lt;br /&gt;
Characters must be URI encoded properly.&lt;br /&gt;
&lt;br /&gt;
== Reference Implementations ==&lt;br /&gt;
=== Bitcoin clients ===&lt;br /&gt;
* [[Bitcoin-Qt]] supports the old version of Bitcoin URIs (ie without the req: prefix), with Windows and KDE integration as of commit 70f55355e29c8e45b607e782c5d76609d23cc858.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:BIP|D]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=BIP_0021&amp;diff=23153</id>
		<title>BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=BIP_0021&amp;diff=23153"/>
		<updated>2012-01-31T18:15:34Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: Replace version with mustimplement. replace sample address with invalid sample address from wikipedia.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  BIP: 21&lt;br /&gt;
  Title: URI Scheme&lt;br /&gt;
  Author: Nils Schneider &amp;lt;nils.schneider@gmail.com&amp;gt;&lt;br /&gt;
          Matt Corallo &amp;lt;bip21@bluematt.me&amp;gt;&lt;br /&gt;
  Status: Draft&lt;br /&gt;
  Type: Standards Track&lt;br /&gt;
  Created: 29-01-2012&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This BIP is a modification of an earlier [[BIP 0020]] by Luke Dashjr. BIP 0020 was based off an earlier document by Nils Schneider. The alternative payment amounts in BIP 0020 have been removed.&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
This BIP proposes a URI scheme for making Bitcoin payments.&lt;br /&gt;
&lt;br /&gt;
==Motivation==&lt;br /&gt;
The purpose of this URI scheme is to enable users to easily make payments by simply clicking links on webpages or scanning QR Codes.&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
&lt;br /&gt;
=== General rules for handling (important!) ===&lt;br /&gt;
&lt;br /&gt;
Bitcoin clients MUST NOT act on URIs without getting the user&#039;s authorization.&lt;br /&gt;
They SHOULD require the user to manually approve each payment individually, though in some cases they MAY allow the user to automatically make this decision.&lt;br /&gt;
&lt;br /&gt;
=== Operating system integration ===&lt;br /&gt;
Graphical bitcoin clients SHOULD register themselves as the handler for the &amp;quot;bitcoin:&amp;quot; URI scheme by default, if no other handler is already registered. If there is already a registered handler, they MAY prompt the user to change it once when they first run the client.&lt;br /&gt;
&lt;br /&gt;
=== BNF grammar ===&lt;br /&gt;
&lt;br /&gt;
(See also [[#Simpler syntax|a simpler representation of syntax]])&lt;br /&gt;
&lt;br /&gt;
 bitcoinurn         = &amp;quot;bitcoin:&amp;quot; bitcoinaddress [ &amp;quot;?&amp;quot; bitcoinparams ]&lt;br /&gt;
 bitcoinaddress     = base58 *base58&lt;br /&gt;
 bitcoinparams      = *bitcoinparam&lt;br /&gt;
 bitcoinparam       = amountparam | labelparam | messageparam | otherparam | mustimplementparam&lt;br /&gt;
 amountparam        = &amp;quot;amount=&amp;quot; *digit [ &amp;quot;.&amp;quot; *digit ]&lt;br /&gt;
 labelparam         = &amp;quot;label=&amp;quot; *pchar&lt;br /&gt;
 messageparam       = &amp;quot;message=&amp;quot; *pchar&lt;br /&gt;
 otherparam         = pchar *pchar &amp;quot;=&amp;quot; *pchar&lt;br /&gt;
 mustimplementparam = &amp;quot;mustimplement:&amp;quot; pchar *pchar &amp;quot;=&amp;quot; *pchar&lt;br /&gt;
&lt;br /&gt;
=== Query Keys ===&lt;br /&gt;
&lt;br /&gt;
*label: Label for that address (e.g. name of receiver)&lt;br /&gt;
*address: bitcoin address&lt;br /&gt;
*message: message that shown to the user after scanning the QR code&lt;br /&gt;
*size: amount of base bitcoin units ([[#Transfer amount/size|see below]])&lt;br /&gt;
*(others): optional, for future extensions&lt;br /&gt;
&lt;br /&gt;
==== Transfer amount/size ====&lt;br /&gt;
&lt;br /&gt;
If an amount is provided, it must be specified in decimal BTC.&lt;br /&gt;
I.e. amount=50.00 is treated as 50 BTC.&lt;br /&gt;
&lt;br /&gt;
Bitcoin clients MAY display the amount in any format that is not intended to deceive the user.&lt;br /&gt;
They SHOULD choose a format that is foremost least confusing, and only after that most reasonable given the amount requested.&lt;br /&gt;
For example, so long as the majority of users work in BTC units, values should always be displayed in BTC by default, even if mBTC or TBC would otherwise be a more logical interpretation of the amount.&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
===Payment identifiers, not person identifiers===&lt;br /&gt;
Current best practices are that a unique address should be used for every transaction.&lt;br /&gt;
Therefore, a URI scheme should not represent an exchange of personal information, but a one-time payment.&lt;br /&gt;
&lt;br /&gt;
===Accessibility (URI scheme name)===&lt;br /&gt;
Should someone from the outside happen to see such a URI, the URI scheme name already gives a description.&lt;br /&gt;
A quick search should then do the rest to help them find the resources needed to make their payment.&lt;br /&gt;
Other proposed names sound much more cryptic; the chance that someone googles that out of curiosity are much slimmer.&lt;br /&gt;
Also, very likely, what he will find are mostly technical specifications - not the best introduction to bitcoin.&lt;br /&gt;
&lt;br /&gt;
==Forward compatibility==&lt;br /&gt;
Variables which are prefixed with a mustimplement: are considered required.  If a client does not implement any variables which are prefixed with mustimplement:, it MUST consider the entire URI invalid.  Any other variables which are not implemented, but which are not prefixed with a mustimplement:, can be safely ignored.  &lt;br /&gt;
&lt;br /&gt;
==Backward compatibility==&lt;br /&gt;
As this BIP is written, several clients already implement a bitcoin: URI scheme similar to this one, however usually without the additional &amp;quot;mustimplement:&amp;quot; prefix requirement.  Thus, it is recommended that additional variables prefixed with mustimplement: not be used in a mission-critical way until a grace period of 6 months from the finalization of this BIP has passed in order to allow client developers to release new versions, and users of old clients to upgrade.&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Simpler syntax ===&lt;br /&gt;
&lt;br /&gt;
This section is non-normative and does not cover all possible syntax.&lt;br /&gt;
Please see the [[#BNF grammar|BNF grammar]] above for the normative syntax.&lt;br /&gt;
&lt;br /&gt;
[foo] means optional, &amp;lt;bar&amp;gt; are placeholders&lt;br /&gt;
&lt;br /&gt;
 bitcoin:&amp;lt;address&amp;gt;[?amount=&amp;lt;amount&amp;gt;][?label=&amp;lt;label&amp;gt;][?message=&amp;lt;message&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
Just the address:&lt;br /&gt;
 bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W&lt;br /&gt;
&lt;br /&gt;
Address with name:&lt;br /&gt;
 bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?label=Luke-Jr&lt;br /&gt;
&lt;br /&gt;
Request 20.30 BTC to &amp;quot;Luke-Jr&amp;quot;:&lt;br /&gt;
 bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=20.3&amp;amp;label=Luke-Jr&lt;br /&gt;
&lt;br /&gt;
Request 50 BTC with message:&lt;br /&gt;
 bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=50&amp;amp;label=Luke-Jr&amp;amp;message=Donation%20for%20project%20xyz&lt;br /&gt;
&lt;br /&gt;
Some future version that has variables which are (currently) not understood and required and thus invalid:&lt;br /&gt;
 bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?mustimplement:somethingyoudontunderstand=50&amp;amp;mustimplement:somethingelseyoudontget=999&lt;br /&gt;
&lt;br /&gt;
Some future version that has variables which are (currently) not understood but not required and thus valid:&lt;br /&gt;
 bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?somethingyoudontunderstand=50&amp;amp;somethingelseyoudontget=999&lt;br /&gt;
&lt;br /&gt;
Characters must be URI encoded properly.&lt;br /&gt;
&lt;br /&gt;
== Reference Implementations ==&lt;br /&gt;
=== Bitcoin clients ===&lt;br /&gt;
* [[Bitcoin-Qt]] supports the old version of Bitcoin URIs (ie without the mustimplement: prefix), with Windows and KDE integration as of commit 70f55355e29c8e45b607e782c5d76609d23cc858.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:BIP|D]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=BIP_0021&amp;diff=23150</id>
		<title>BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=BIP_0021&amp;diff=23150"/>
		<updated>2012-01-31T17:32:18Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  BIP: 21&lt;br /&gt;
  Title: URI Scheme&lt;br /&gt;
  Author: Nils Schneider &amp;lt;nils.schneider@gmail.com&amp;gt;&lt;br /&gt;
          Matt Corallo &amp;lt;bip21@bluematt.me&amp;gt;&lt;br /&gt;
  Status: Draft&lt;br /&gt;
  Type: Standards Track&lt;br /&gt;
  Created: 29-01-2012&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This BIP is a modification of an earlier [[BIP 0020]] by Luke Dashjr. BIP 0020 was based off an earlier document by Nils Schneider. The alternative payment amounts in BIP 0020 have been removed.&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
This BIP proposes a URI scheme for making Bitcoin payments.&lt;br /&gt;
&lt;br /&gt;
==Motivation==&lt;br /&gt;
The purpose of this URI scheme is to enable users to easily make payments by simply clicking links on webpages or scanning QR Codes.&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
&lt;br /&gt;
=== General rules for handling (important!) ===&lt;br /&gt;
&lt;br /&gt;
Bitcoin clients MUST NOT act on URIs without getting the user&#039;s authorization.&lt;br /&gt;
They SHOULD require the user to manually approve each payment individually, though in some cases they MAY allow the user to automatically make this decision.&lt;br /&gt;
&lt;br /&gt;
=== Operating system integration ===&lt;br /&gt;
Graphical bitcoin clients SHOULD register themselves as the handler for the &amp;quot;bitcoin:&amp;quot; URI scheme by default, if no other handler is already registered. If there is already a registered handler, they MAY prompt the user to change it once when they first run the client.&lt;br /&gt;
&lt;br /&gt;
=== BNF grammar ===&lt;br /&gt;
&lt;br /&gt;
(See also [[#Simpler syntax|a simpler representation of syntax]])&lt;br /&gt;
&lt;br /&gt;
 bitcoinurn      = &amp;quot;bitcoin:&amp;quot; bitcoinaddress [ &amp;quot;;version=&amp;quot; bitcoinversion ] [ &amp;quot;?&amp;quot; bitcoinparams ]&lt;br /&gt;
 bitcoinaddress  = base58 *base58&lt;br /&gt;
 bitcoinversion  = &amp;quot;1.0&amp;quot;&lt;br /&gt;
 bitcoinparams   = *bitcoinparam&lt;br /&gt;
 bitcoinparam    = amountparam | labelparam | messageparam | otherparam&lt;br /&gt;
 amountparam     = &amp;quot;amount=&amp;quot; *digit [ &amp;quot;.&amp;quot; *digit ]&lt;br /&gt;
 labelparam      = &amp;quot;label=&amp;quot; *pchar&lt;br /&gt;
 messageparam    = &amp;quot;message=&amp;quot; *pchar&lt;br /&gt;
 otherparam      = pchar *pchar &amp;quot;=&amp;quot; *pchar&lt;br /&gt;
&lt;br /&gt;
=== Query Keys ===&lt;br /&gt;
&lt;br /&gt;
*label: Label for that address (e.g. name of receiver)&lt;br /&gt;
*address: bitcoin address&lt;br /&gt;
*message: message that shown to the user after scanning the QR code&lt;br /&gt;
*size: amount of base bitcoin units ([[#Transfer amount/size|see below]])&lt;br /&gt;
*(others): optional, for future extensions&lt;br /&gt;
&lt;br /&gt;
==== Transfer amount/size ====&lt;br /&gt;
&lt;br /&gt;
If an amount is provided, it must be specified in decimal BTC.&lt;br /&gt;
I.e. amount=50.00 is treated as 50 BTC.&lt;br /&gt;
&lt;br /&gt;
Bitcoin clients MAY display the amount in any format that is not intended to deceive the user.&lt;br /&gt;
They SHOULD choose a format that is foremost least confusing, and only after that most reasonable given the amount requested.&lt;br /&gt;
For example, so long as the majority of users work in BTC units, values should always be displayed in BTC by default, even if mBTC or TBC would otherwise be a more logical interpretation of the amount.&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
===Payment identifiers, not person identifiers===&lt;br /&gt;
Current best practices are that a unique address should be used for every transaction.&lt;br /&gt;
Therefore, a URI scheme should not represent an exchange of personal information, but a one-time payment.&lt;br /&gt;
&lt;br /&gt;
===Accessibility (URI scheme name)===&lt;br /&gt;
Should someone from the outside happen to see such a URI, the URI scheme name already gives a description.&lt;br /&gt;
A quick search should then do the rest to help them find the resources needed to make their payment.&lt;br /&gt;
Other proposed names sound much more cryptic; the chance that someone googles that out of curiosity are much slimmer.&lt;br /&gt;
Also, very likely, what he will find are mostly technical specifications - not the best introduction to bitcoin.&lt;br /&gt;
&lt;br /&gt;
==Forward compatibility==&lt;br /&gt;
We want URIs generated in 2011 to still work in 2036: think about extensibility.&lt;br /&gt;
Of course we can make only educated guesses about the future, but don&#039;t act as if there is none.&lt;br /&gt;
This should be the best we can do, but it should not be seen as set in stone.&lt;br /&gt;
Make it possible for later generations to improve our work, to mend our errors, without breaking the URIs created now.&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Simpler syntax ===&lt;br /&gt;
&lt;br /&gt;
This section is non-normative and does not cover all possible syntax.&lt;br /&gt;
Please see the [[#BNF grammar|BNF grammar]] above for the normative syntax.&lt;br /&gt;
&lt;br /&gt;
[foo] means optional, &amp;lt;bar&amp;gt; are placeholders&lt;br /&gt;
&lt;br /&gt;
 bitcoin:&amp;lt;address&amp;gt;[;version=1.0][?amount=&amp;lt;amount&amp;gt;][?label=&amp;lt;label&amp;gt;][?message=&amp;lt;message&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
Just the address:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L&lt;br /&gt;
&lt;br /&gt;
Address with name:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?label=Luke-Jr&lt;br /&gt;
&lt;br /&gt;
Request 20.30 BTC to &amp;quot;Luke-Jr&amp;quot;:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?amount=20.3&amp;amp;label=Luke-Jr&lt;br /&gt;
&lt;br /&gt;
Request 50 BTC with message:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?amount=50&amp;amp;label=Luke-Jr&amp;amp;message=Donation%20for%20project%20xyz&lt;br /&gt;
&lt;br /&gt;
Characters must be URI encoded properly.&lt;br /&gt;
&lt;br /&gt;
== Reference Implementations ==&lt;br /&gt;
=== Bitcoin clients ===&lt;br /&gt;
* [[Bitcoin-Qt]] supports all valid Bitcoin URIs, with Windows and KDE integration as of commit 70f55355e29c8e45b607e782c5d76609d23cc858.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:BIP|D]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=BIP_0021&amp;diff=23144</id>
		<title>BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=BIP_0021&amp;diff=23144"/>
		<updated>2012-01-31T16:01:15Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: Remove send crap&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  BIP: 21&lt;br /&gt;
  Title: URI Scheme&lt;br /&gt;
  Author: Nils Schneider &amp;lt;nils.schneider@gmail.com&amp;gt;&lt;br /&gt;
          Matt Corallo&lt;br /&gt;
  Status: Draft&lt;br /&gt;
  Type: Standards Track&lt;br /&gt;
  Created: 29-01-2011&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This BIP is a modification of an earlier [[BIP 0020]] by Luke Dashjr. BIP 0020 was based off an earlier document by Nils Schneider. The alternative payment amounts in BIP 0020 have been removed.&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
This BIP proposes a URI scheme for making Bitcoin payments.&lt;br /&gt;
&lt;br /&gt;
==Motivation==&lt;br /&gt;
The purpose of this URI scheme is to enable users to easily make payments by simply clicking links on webpages or scanning QR Codes.&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
&lt;br /&gt;
=== General rules for handling (important!) ===&lt;br /&gt;
&lt;br /&gt;
Bitcoin clients MUST NOT act on URIs without getting the user&#039;s authorization.&lt;br /&gt;
They SHOULD require the user to manually approve each payment individually, though in some cases they MAY allow the user to automatically make this decision.&lt;br /&gt;
&lt;br /&gt;
=== Operating system integration ===&lt;br /&gt;
Graphical bitcoin clients SHOULD register themselves as the handler for the &amp;quot;bitcoin:&amp;quot; URI scheme by default, if no other handler is already registered. If there is already a registered handler, they MAY prompt the user to change it once when they first run the client.&lt;br /&gt;
&lt;br /&gt;
=== BNF grammar ===&lt;br /&gt;
&lt;br /&gt;
(See also [[#Simpler syntax|a simpler representation of syntax]])&lt;br /&gt;
&lt;br /&gt;
 bitcoinurn      = &amp;quot;bitcoin:&amp;quot; bitcoinaddress [ &amp;quot;;version=&amp;quot; bitcoinversion ] [ &amp;quot;?&amp;quot; bitcoinparams ]&lt;br /&gt;
 bitcoinaddress  = base58 *base58&lt;br /&gt;
 bitcoinversion  = &amp;quot;1.0&amp;quot;&lt;br /&gt;
 bitcoinparams   = *bitcoinparam&lt;br /&gt;
 bitcoinparam    = amountparam | labelparam | messageparam | otherparam&lt;br /&gt;
 amountparam     = &amp;quot;amount=&amp;quot; *digit [ &amp;quot;.&amp;quot; *digit ]&lt;br /&gt;
 labelparam      = &amp;quot;label=&amp;quot; *pchar&lt;br /&gt;
 messageparam    = &amp;quot;message=&amp;quot; *pchar&lt;br /&gt;
 otherparam      = pchar *pchar &amp;quot;=&amp;quot; *pchar&lt;br /&gt;
&lt;br /&gt;
=== Query Keys ===&lt;br /&gt;
&lt;br /&gt;
*label: Label for that address (e.g. name of receiver)&lt;br /&gt;
*address: bitcoin address&lt;br /&gt;
*message: message that shown to the user after scanning the QR code&lt;br /&gt;
*size: amount of base bitcoin units ([[#Transfer amount/size|see below]])&lt;br /&gt;
*(others): optional, for future extensions&lt;br /&gt;
&lt;br /&gt;
==== Transfer amount/size ====&lt;br /&gt;
&lt;br /&gt;
If an amount is provided, it must be specified in decimal BTC.&lt;br /&gt;
I.e. amount=50.00 is treated as 50 BTC.&lt;br /&gt;
&lt;br /&gt;
Bitcoin clients MAY display the amount in any format that is not intended to deceive the user.&lt;br /&gt;
They SHOULD choose a format that is foremost least confusing, and only after that most reasonable given the amount requested.&lt;br /&gt;
For example, so long as the majority of users work in BTC units, values should always be displayed in BTC by default, even if mBTC or TBC would otherwise be a more logical interpretation of the amount.&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
===Payment identifiers, not person identifiers===&lt;br /&gt;
Current best practices are that a unique address should be used for every transaction.&lt;br /&gt;
Therefore, a URI scheme should not represent an exchange of personal information, but a one-time payment.&lt;br /&gt;
&lt;br /&gt;
===Accessibility (URI scheme name)===&lt;br /&gt;
Should someone from the outside happen to see such a URI, the URI scheme name already gives a description.&lt;br /&gt;
A quick search should then do the rest to help them find the resources needed to make their payment.&lt;br /&gt;
Other proposed names sound much more cryptic; the chance that someone googles that out of curiosity are much slimmer.&lt;br /&gt;
Also, very likely, what he will find are mostly technical specifications - not the best introduction to bitcoin.&lt;br /&gt;
&lt;br /&gt;
==Forward compatibility==&lt;br /&gt;
We want URIs generated in 2011 to still work in 2036: think about extensibility.&lt;br /&gt;
Of course we can make only educated guesses about the future, but don&#039;t act as if there is none.&lt;br /&gt;
This should be the best we can do, but it should not be seen as set in stone.&lt;br /&gt;
Make it possible for later generations to improve our work, to mend our errors, without breaking the URIs created now.&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Simpler syntax ===&lt;br /&gt;
&lt;br /&gt;
This section is non-normative and does not cover all possible syntax.&lt;br /&gt;
Please see the [[#BNF grammar|BNF grammar]] above for the normative syntax.&lt;br /&gt;
&lt;br /&gt;
[foo] means optional, &amp;lt;bar&amp;gt; are placeholders&lt;br /&gt;
&lt;br /&gt;
 bitcoin:&amp;lt;address&amp;gt;[;version=1.0][?amount=&amp;lt;amount&amp;gt;][?label=&amp;lt;label&amp;gt;][?message=&amp;lt;message&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
Just the address:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L&lt;br /&gt;
&lt;br /&gt;
Address with name:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?label=Luke-Jr&lt;br /&gt;
&lt;br /&gt;
Request 20.30 BTC to &amp;quot;Luke-Jr&amp;quot;:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?amount=20.3&amp;amp;label=Luke-Jr&lt;br /&gt;
&lt;br /&gt;
Request 50 BTC with message:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?amount=50&amp;amp;label=Luke-Jr&amp;amp;message=Donation%20for%20project%20xyz&lt;br /&gt;
&lt;br /&gt;
Characters must be URI encoded properly.&lt;br /&gt;
&lt;br /&gt;
== Reference Implementations ==&lt;br /&gt;
=== Bitcoin clients ===&lt;br /&gt;
* [[Bitcoin-Qt]] supports all valid Bitcoin URIs, with Windows and KDE integration as of commit 70f55355e29c8e45b607e782c5d76609d23cc858.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:BIP|D]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=BIP_0020&amp;diff=23002</id>
		<title>BIP 0020</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=BIP_0020&amp;diff=23002"/>
		<updated>2012-01-29T22:58:45Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: s/Final/Draft/ and is now competing with BIP 21&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  BIP: 20&lt;br /&gt;
  Title: URI Scheme&lt;br /&gt;
  Author: Luke Dashjr &amp;lt;luke+bip@dashjr.org&amp;gt;&lt;br /&gt;
          Nils Schneider &amp;lt;nils.schneider@gmail.com&amp;gt;&lt;br /&gt;
  Status: Draft&lt;br /&gt;
  Type: Standards Track&lt;br /&gt;
  Created: 10-01-2011&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
This BIP proposes a URI scheme for making Bitcoin payments.&lt;br /&gt;
&lt;br /&gt;
==Motivation==&lt;br /&gt;
The purpose of this URI scheme is to enable users to easily make payments by simply clicking links on webpages or scanning QR Codes.&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
&lt;br /&gt;
=== General rules for handling (important!) ===&lt;br /&gt;
&lt;br /&gt;
Bitcoin clients MUST NOT act on URIs without getting the user&#039;s authorization.&lt;br /&gt;
They SHOULD require the user to manually approve each payment individually, though in some cases they MAY allow the user to automatically make this decision.&lt;br /&gt;
&lt;br /&gt;
=== Operating system integration ===&lt;br /&gt;
Graphical bitcoin clients SHOULD register themselves as the handler for the &amp;quot;bitcoin:&amp;quot; URI scheme by default, if no other handler is already registered. If there is already a registered handler, they MAY prompt the user to change it once when they first run the client.&lt;br /&gt;
&lt;br /&gt;
=== BNF grammar ===&lt;br /&gt;
&lt;br /&gt;
(See also [[#Simpler syntax|a simpler representation of syntax]])&lt;br /&gt;
&lt;br /&gt;
 bitcoinurn      = &amp;quot;bitcoin:&amp;quot; bitcoinaddress [ &amp;quot;;version=&amp;quot; bitcoinversion ] [ &amp;quot;?&amp;quot; bitcoinparams ]&lt;br /&gt;
 bitcoinaddress  = base58 *base58&lt;br /&gt;
 bitcoinversion  = &amp;quot;1.0&amp;quot;&lt;br /&gt;
 bitcoinparams   = *bitcoinparam&lt;br /&gt;
 bitcoinparam    = amountparam | labelparam | messageparam | sendparam | otherparam&lt;br /&gt;
 amountparam     = &amp;quot;amount=&amp;quot; amount&lt;br /&gt;
 amount          = amountdecimal | amounthex&lt;br /&gt;
 amountdecimal   = *digit [ &amp;quot;.&amp;quot; *digit ] [ &amp;quot;X&amp;quot; *digit ]&lt;br /&gt;
 amounthex       = &amp;quot;x&amp;quot; *hexdigit [ &amp;quot;.&amp;quot; *hexdigit ] [ &amp;quot;X&amp;quot; *hexdigit ]&lt;br /&gt;
 labelparam      = &amp;quot;label=&amp;quot; *pchar&lt;br /&gt;
 messageparam    = &amp;quot;message=&amp;quot; *pchar&lt;br /&gt;
 sendparam       = &amp;quot;send=&amp;quot; *pchar&lt;br /&gt;
 otherparam      = pchar *pchar &amp;quot;=&amp;quot; *pchar&lt;br /&gt;
&lt;br /&gt;
=== Query Keys ===&lt;br /&gt;
&lt;br /&gt;
*label: Label for that address (e.g. name of receiver)&lt;br /&gt;
*address: bitcoin address&lt;br /&gt;
*message: message that shown to the user after scanning the QR code&lt;br /&gt;
*size: amount of base bitcoin units ([[#Transfer amount/size|see below]])&lt;br /&gt;
*send: used to send bitcoin, rather than to request them&lt;br /&gt;
*(others): optional, for future extensions&lt;br /&gt;
&lt;br /&gt;
==== Transfer amount/size ====&lt;br /&gt;
&lt;br /&gt;
If an amount is provided, it may be specified either in decimal or, when prefixed with a single &amp;quot;x&amp;quot; character, hexadecimal.&lt;br /&gt;
The number SHOULD be followed by &amp;quot;X&amp;quot; &amp;lt;digits&amp;gt; to signify an exponent to the base multiplier.&lt;br /&gt;
Thus, &amp;quot;X8&amp;quot; multiplies your number by 100,000,000.&lt;br /&gt;
For decimal values, this means the standard BTC unit.&lt;br /&gt;
For hexadecimal values, this means ᵇTBC units (which are equivalent to 42.94967296 BTC).&lt;br /&gt;
If exponent is omitted, implementations SHOULD assume X8 for decimal numbers, and X4 for hexadecimal numbers.&lt;br /&gt;
I.e. amount=50.00 is treated as 50 BTC, and amount=x40 is treated as 40 TBC.&lt;br /&gt;
When specifying bitcoin base units, &amp;quot;X0&amp;quot; SHOULD be used.&lt;br /&gt;
&lt;br /&gt;
Bitcoin clients MAY display the amount in any format that is not intended to deceive the user.&lt;br /&gt;
They SHOULD choose a format that is foremost least confusing, and only after that most reasonable given the amount requested.&lt;br /&gt;
For example, so long as the majority of users work in BTC units, values should always be displayed in BTC by default, even if mBTC or TBC would otherwise be a more logical interpretation of the amount.&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
===Payment identifiers, not person identifiers===&lt;br /&gt;
Current best practices are that a unique address should be used for every transaction.&lt;br /&gt;
Therefore, a URI scheme should not represent an exchange of personal information, but a one-time payment.&lt;br /&gt;
&lt;br /&gt;
===Accessibility (URI scheme name)===&lt;br /&gt;
Should someone from the outside happen to see such a URI, the URI scheme name already gives a description.&lt;br /&gt;
A quick search should then do the rest to help them find the resources needed to make their payment.&lt;br /&gt;
Other proposed names sound much more cryptic; the chance that someone googles that out of curiosity are much slimmer.&lt;br /&gt;
Also, very likely, what he will find are mostly technical specifications - not the best introduction to bitcoin.&lt;br /&gt;
&lt;br /&gt;
==Forward compatibility==&lt;br /&gt;
We want URIs generated in 2011 to still work in 2036: think about extensibility.&lt;br /&gt;
Of course we can make only educated guesses about the future, but don&#039;t act as if there is none.&lt;br /&gt;
This should be the best we can do, but it should not be seen as set in stone.&lt;br /&gt;
Make it possible for later generations to improve our work, to mend our errors, without breaking the URIs created now.&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Simpler syntax ===&lt;br /&gt;
&lt;br /&gt;
This section is non-normative and does not cover all possible syntax.&lt;br /&gt;
Please see the [[#BNF grammar|BNF grammar]] above for the normative syntax.&lt;br /&gt;
&lt;br /&gt;
[foo] means optional, &amp;lt;bar&amp;gt; are placeholders&lt;br /&gt;
&lt;br /&gt;
 bitcoin:&amp;lt;address&amp;gt;[;version=1.0][?amount=&amp;lt;amount&amp;gt;][?label=&amp;lt;label&amp;gt;][?message=&amp;lt;message&amp;gt;][?send=&amp;lt;private key&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
Just the address:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L&lt;br /&gt;
&lt;br /&gt;
Address with name:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?label=Luke-Jr&lt;br /&gt;
&lt;br /&gt;
Request 20.30 BTC to &amp;quot;Luke-Jr&amp;quot;:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?amount=20.3X8&amp;amp;label=Luke-Jr&lt;br /&gt;
&lt;br /&gt;
Request 400 TBC:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?amount=x400X4&lt;br /&gt;
&lt;br /&gt;
Request 4000 TBC:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?amount=x4X7&lt;br /&gt;
&lt;br /&gt;
Request 5 uBTC:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?amount=5X2&lt;br /&gt;
&lt;br /&gt;
Request 50 BTC with message:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?amount=50X8&amp;amp;label=Luke-Jr&amp;amp;message=Donation%20for%20project%20xyz&lt;br /&gt;
&lt;br /&gt;
Send 1 BTC:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?amount=1X8&amp;amp;send=S4b3N3oGqDqR5jNuxEvDwf&lt;br /&gt;
&lt;br /&gt;
Characters must be URI encoded properly.&lt;br /&gt;
&lt;br /&gt;
===Sending money via private key===&lt;br /&gt;
To send a payment to someone else first construct a new keypair. You may want to use a [[mini private key format]], or you may also use a full private key for more security depending on the amount being sent and how long you expect to pass before a claim. Now create and publish a transaction with an output of the amount you wish to send. Use this script in that output:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pubkey&amp;gt; OP_CHECKSIG&lt;br /&gt;
&lt;br /&gt;
Construct an address from the public key. Encode the URI as below:&lt;br /&gt;
&lt;br /&gt;
 bitcoin:&amp;lt;address&amp;gt;?send=&amp;lt;base 58 encoded private key&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may optionally include amount or message fields as well. In a wallet to claim money sent this way search for an incoming transaction with the output script form above, where &amp;lt;address&amp;gt; matches the public key in the script. When you find the transaction create a claim transaction with an input script of this form:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;sig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This claims the money you were sent. Until your claim transaction has confirmed the sender may take their money back.&lt;br /&gt;
&lt;br /&gt;
== Reference Implementations ==&lt;br /&gt;
=== Bitcoin clients ===&lt;br /&gt;
* [[Spesmilo]] supports all valid Bitcoin URIs, with Windows and KDE integration&lt;br /&gt;
&lt;br /&gt;
=== Parsing amount ===&lt;br /&gt;
==== ECMAScript ====&lt;br /&gt;
 reAmount = /^(([\d.]+)(X(\d+))?|x([\da-f]*)(\.([\da-f]*))?(X([\da-f]+))?)$/i;&lt;br /&gt;
 function parseAmount(txt) {&lt;br /&gt;
 	var m = txt.match(reAmount);&lt;br /&gt;
 	return m[5] ? (&lt;br /&gt;
 		(&lt;br /&gt;
 			parseInt(m[5], 16) +&lt;br /&gt;
 			(m[7] ? (parseInt(m[7], 16) * Math.pow(16, -(m[7].length))) : 0)&lt;br /&gt;
 		) * (&lt;br /&gt;
 			m[9] ? Math.pow(16, parseInt(m[9], 16)) : 0x10000&lt;br /&gt;
 		)&lt;br /&gt;
 	) : (&lt;br /&gt;
 			m[2]&lt;br /&gt;
 		*&lt;br /&gt;
 			(m[4] ? Math.pow(10, m[4]) : 1e8)&lt;br /&gt;
 	);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== Python ====&lt;br /&gt;
 m = re.match(r&#039;^(([\d.]+)(X(\d+))?|x([\da-f]*)(\.([\da-f]*))?(X([\da-f]+))?)$&#039;, amount, re.IGNORECASE)&lt;br /&gt;
 if m.group(5):&lt;br /&gt;
     amount = float(int(m.group(5), 16))&lt;br /&gt;
     if m.group(7):&lt;br /&gt;
         amount += float(int(m.group(7), 16)) * pow(16, -(len(m.group(7))))&lt;br /&gt;
     if m.group(9):&lt;br /&gt;
         amount *= pow(16, int(m.group(9), 16))&lt;br /&gt;
     else:&lt;br /&gt;
         amount *= 0x10000&lt;br /&gt;
 else:&lt;br /&gt;
     amount = Decimal(m.group(2))&lt;br /&gt;
     if m.group(4):&lt;br /&gt;
         amount *= 10 ** int(m.group(4))&lt;br /&gt;
     else:&lt;br /&gt;
         amount *= 100000000&lt;br /&gt;
&lt;br /&gt;
==== C# ====&lt;br /&gt;
 Regex amountExpression = new Regex(@&amp;quot;^(([\d.]+)(X(\d+))?|x([\da-f]*)(\.([\da-f]*))?(X([\da-f]+))?)$&amp;quot;, RegexOptions.IgnoreCase);&lt;br /&gt;
 Match match = amountExpression.Match(value);&lt;br /&gt;
 if (match.Success)&lt;br /&gt;
 {&lt;br /&gt;
     if (match.Groups[5].Success)&lt;br /&gt;
     {&lt;br /&gt;
         long hexDecimal = 0;&lt;br /&gt;
         if (match.Groups[7].Success)&lt;br /&gt;
             hexDecimal = Convert.ToInt64(match.Groups[7].Value, 16) * (long)Math.Pow(16, -match.Groups[7].Length);&lt;br /&gt;
 &lt;br /&gt;
         long hexExponent = 0x10000;&lt;br /&gt;
         if (match.Groups[9].Success)&lt;br /&gt;
             hexExponent = (long)Math.Pow(16, Convert.ToInt32(match.Groups[9].Value, 16));&lt;br /&gt;
 &lt;br /&gt;
         Amount = (Convert.ToInt64(match.Groups[5].Value, 16) + hexDecimal) * hexExponent;&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
         long decimalExponent = 100000000;&lt;br /&gt;
         if (match.Groups[4].Success)&lt;br /&gt;
             decimalExponent = (long)Math.Pow(10, int.Parse(match.Groups[4].Value));&lt;br /&gt;
         Amount = (long)(decimal.Parse(match.Groups[2].Value) * decimalExponent);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:BIP|D]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=BIP_0021&amp;diff=23001</id>
		<title>BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=BIP_0021&amp;diff=23001"/>
		<updated>2012-01-29T22:58:28Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: s/Final/Draft/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  BIP: 20&lt;br /&gt;
  Title: URI Scheme&lt;br /&gt;
  Author: Luke Dashjr &amp;lt;luke+bip@dashjr.org&amp;gt;&lt;br /&gt;
          Nils Schneider &amp;lt;nils.schneider@gmail.com&amp;gt;&lt;br /&gt;
  Status: Draft&lt;br /&gt;
  Type: Standards Track&lt;br /&gt;
  Created: 10-01-2011&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
This BIP proposes a URI scheme for making Bitcoin payments.&lt;br /&gt;
&lt;br /&gt;
==Motivation==&lt;br /&gt;
The purpose of this URI scheme is to enable users to easily make payments by simply clicking links on webpages or scanning QR Codes.&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
&lt;br /&gt;
=== General rules for handling (important!) ===&lt;br /&gt;
&lt;br /&gt;
Bitcoin clients MUST NOT act on URIs without getting the user&#039;s authorization.&lt;br /&gt;
They SHOULD require the user to manually approve each payment individually, though in some cases they MAY allow the user to automatically make this decision.&lt;br /&gt;
&lt;br /&gt;
=== Operating system integration ===&lt;br /&gt;
Graphical bitcoin clients SHOULD register themselves as the handler for the &amp;quot;bitcoin:&amp;quot; URI scheme by default, if no other handler is already registered. If there is already a registered handler, they MAY prompt the user to change it once when they first run the client.&lt;br /&gt;
&lt;br /&gt;
=== BNF grammar ===&lt;br /&gt;
&lt;br /&gt;
(See also [[#Simpler syntax|a simpler representation of syntax]])&lt;br /&gt;
&lt;br /&gt;
 bitcoinurn      = &amp;quot;bitcoin:&amp;quot; bitcoinaddress [ &amp;quot;;version=&amp;quot; bitcoinversion ] [ &amp;quot;?&amp;quot; bitcoinparams ]&lt;br /&gt;
 bitcoinaddress  = base58 *base58&lt;br /&gt;
 bitcoinversion  = &amp;quot;1.0&amp;quot;&lt;br /&gt;
 bitcoinparams   = *bitcoinparam&lt;br /&gt;
 bitcoinparam    = amountparam | labelparam | messageparam | sendparam | otherparam&lt;br /&gt;
 amountparam     = &amp;quot;amount=&amp;quot; *digit [ &amp;quot;.&amp;quot; *digit ]&lt;br /&gt;
 labelparam      = &amp;quot;label=&amp;quot; *pchar&lt;br /&gt;
 messageparam    = &amp;quot;message=&amp;quot; *pchar&lt;br /&gt;
 sendparam       = &amp;quot;send=&amp;quot; *pchar&lt;br /&gt;
 otherparam      = pchar *pchar &amp;quot;=&amp;quot; *pchar&lt;br /&gt;
&lt;br /&gt;
=== Query Keys ===&lt;br /&gt;
&lt;br /&gt;
*label: Label for that address (e.g. name of receiver)&lt;br /&gt;
*address: bitcoin address&lt;br /&gt;
*message: message that shown to the user after scanning the QR code&lt;br /&gt;
*size: amount of base bitcoin units ([[#Transfer amount/size|see below]])&lt;br /&gt;
*send: used to send bitcoin, rather than to request them&lt;br /&gt;
*(others): optional, for future extensions&lt;br /&gt;
&lt;br /&gt;
==== Transfer amount/size ====&lt;br /&gt;
&lt;br /&gt;
If an amount is provided, it must be specified in decimal BTC.&lt;br /&gt;
I.e. amount=50.00 is treated as 50 BTC.&lt;br /&gt;
&lt;br /&gt;
Bitcoin clients MAY display the amount in any format that is not intended to deceive the user.&lt;br /&gt;
They SHOULD choose a format that is foremost least confusing, and only after that most reasonable given the amount requested.&lt;br /&gt;
For example, so long as the majority of users work in BTC units, values should always be displayed in BTC by default, even if mBTC or TBC would otherwise be a more logical interpretation of the amount.&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
===Payment identifiers, not person identifiers===&lt;br /&gt;
Current best practices are that a unique address should be used for every transaction.&lt;br /&gt;
Therefore, a URI scheme should not represent an exchange of personal information, but a one-time payment.&lt;br /&gt;
&lt;br /&gt;
===Accessibility (URI scheme name)===&lt;br /&gt;
Should someone from the outside happen to see such a URI, the URI scheme name already gives a description.&lt;br /&gt;
A quick search should then do the rest to help them find the resources needed to make their payment.&lt;br /&gt;
Other proposed names sound much more cryptic; the chance that someone googles that out of curiosity are much slimmer.&lt;br /&gt;
Also, very likely, what he will find are mostly technical specifications - not the best introduction to bitcoin.&lt;br /&gt;
&lt;br /&gt;
==Forward compatibility==&lt;br /&gt;
We want URIs generated in 2011 to still work in 2036: think about extensibility.&lt;br /&gt;
Of course we can make only educated guesses about the future, but don&#039;t act as if there is none.&lt;br /&gt;
This should be the best we can do, but it should not be seen as set in stone.&lt;br /&gt;
Make it possible for later generations to improve our work, to mend our errors, without breaking the URIs created now.&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Simpler syntax ===&lt;br /&gt;
&lt;br /&gt;
This section is non-normative and does not cover all possible syntax.&lt;br /&gt;
Please see the [[#BNF grammar|BNF grammar]] above for the normative syntax.&lt;br /&gt;
&lt;br /&gt;
[foo] means optional, &amp;lt;bar&amp;gt; are placeholders&lt;br /&gt;
&lt;br /&gt;
 bitcoin:&amp;lt;address&amp;gt;[;version=1.0][?amount=&amp;lt;amount&amp;gt;][?label=&amp;lt;label&amp;gt;][?message=&amp;lt;message&amp;gt;][?send=&amp;lt;private key&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
Just the address:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L&lt;br /&gt;
&lt;br /&gt;
Address with name:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?label=Luke-Jr&lt;br /&gt;
&lt;br /&gt;
Request 20.30 BTC to &amp;quot;Luke-Jr&amp;quot;:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?amount=20.3&amp;amp;label=Luke-Jr&lt;br /&gt;
&lt;br /&gt;
Request 50 BTC with message:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?amount=50&amp;amp;label=Luke-Jr&amp;amp;message=Donation%20for%20project%20xyz&lt;br /&gt;
&lt;br /&gt;
Send 1 BTC:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?amount=1&amp;amp;send=S4b3N3oGqDqR5jNuxEvDwf&lt;br /&gt;
&lt;br /&gt;
Characters must be URI encoded properly.&lt;br /&gt;
&lt;br /&gt;
===Sending money via private key===&lt;br /&gt;
To send a payment to someone else first construct a new keypair. You may want to use a [[mini private key format]], or you may also use a full private key for more security depending on the amount being sent and how long you expect to pass before a claim. Now create and publish a transaction with an output of the amount you wish to send. Use this script in that output:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pubkey&amp;gt; OP_CHECKSIG&lt;br /&gt;
&lt;br /&gt;
Construct an address from the public key. Encode the URI as below:&lt;br /&gt;
&lt;br /&gt;
 bitcoin:&amp;lt;address&amp;gt;?send=&amp;lt;base 58 encoded private key&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may optionally include amount or message fields as well. In a wallet to claim money sent this way search for an incoming transaction with the output script form above, where &amp;lt;address&amp;gt; matches the public key in the script. When you find the transaction create a claim transaction with an input script of this form:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;sig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This claims the money you were sent. Until your claim transaction has confirmed the sender may take their money back.&lt;br /&gt;
&lt;br /&gt;
== Reference Implementations ==&lt;br /&gt;
=== Bitcoin clients ===&lt;br /&gt;
* [[Bitcoin-Qt]] supports all valid Bitcoin URIs, with Windows and KDE integration as of commit 70f55355e29c8e45b607e782c5d76609d23cc858.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:BIP|D]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=BIP_0021&amp;diff=23000</id>
		<title>BIP 0021</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=BIP_0021&amp;diff=23000"/>
		<updated>2012-01-29T22:58:05Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: BIP 21 aka BIP 20 without Luke&amp;#039;s crap which was voted against.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  BIP: 20&lt;br /&gt;
  Title: URI Scheme&lt;br /&gt;
  Author: Luke Dashjr &amp;lt;luke+bip@dashjr.org&amp;gt;&lt;br /&gt;
          Nils Schneider &amp;lt;nils.schneider@gmail.com&amp;gt;&lt;br /&gt;
  Status: Final&lt;br /&gt;
  Type: Standards Track&lt;br /&gt;
  Created: 10-01-2011&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
This BIP proposes a URI scheme for making Bitcoin payments.&lt;br /&gt;
&lt;br /&gt;
==Motivation==&lt;br /&gt;
The purpose of this URI scheme is to enable users to easily make payments by simply clicking links on webpages or scanning QR Codes.&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
&lt;br /&gt;
=== General rules for handling (important!) ===&lt;br /&gt;
&lt;br /&gt;
Bitcoin clients MUST NOT act on URIs without getting the user&#039;s authorization.&lt;br /&gt;
They SHOULD require the user to manually approve each payment individually, though in some cases they MAY allow the user to automatically make this decision.&lt;br /&gt;
&lt;br /&gt;
=== Operating system integration ===&lt;br /&gt;
Graphical bitcoin clients SHOULD register themselves as the handler for the &amp;quot;bitcoin:&amp;quot; URI scheme by default, if no other handler is already registered. If there is already a registered handler, they MAY prompt the user to change it once when they first run the client.&lt;br /&gt;
&lt;br /&gt;
=== BNF grammar ===&lt;br /&gt;
&lt;br /&gt;
(See also [[#Simpler syntax|a simpler representation of syntax]])&lt;br /&gt;
&lt;br /&gt;
 bitcoinurn      = &amp;quot;bitcoin:&amp;quot; bitcoinaddress [ &amp;quot;;version=&amp;quot; bitcoinversion ] [ &amp;quot;?&amp;quot; bitcoinparams ]&lt;br /&gt;
 bitcoinaddress  = base58 *base58&lt;br /&gt;
 bitcoinversion  = &amp;quot;1.0&amp;quot;&lt;br /&gt;
 bitcoinparams   = *bitcoinparam&lt;br /&gt;
 bitcoinparam    = amountparam | labelparam | messageparam | sendparam | otherparam&lt;br /&gt;
 amountparam     = &amp;quot;amount=&amp;quot; *digit [ &amp;quot;.&amp;quot; *digit ]&lt;br /&gt;
 labelparam      = &amp;quot;label=&amp;quot; *pchar&lt;br /&gt;
 messageparam    = &amp;quot;message=&amp;quot; *pchar&lt;br /&gt;
 sendparam       = &amp;quot;send=&amp;quot; *pchar&lt;br /&gt;
 otherparam      = pchar *pchar &amp;quot;=&amp;quot; *pchar&lt;br /&gt;
&lt;br /&gt;
=== Query Keys ===&lt;br /&gt;
&lt;br /&gt;
*label: Label for that address (e.g. name of receiver)&lt;br /&gt;
*address: bitcoin address&lt;br /&gt;
*message: message that shown to the user after scanning the QR code&lt;br /&gt;
*size: amount of base bitcoin units ([[#Transfer amount/size|see below]])&lt;br /&gt;
*send: used to send bitcoin, rather than to request them&lt;br /&gt;
*(others): optional, for future extensions&lt;br /&gt;
&lt;br /&gt;
==== Transfer amount/size ====&lt;br /&gt;
&lt;br /&gt;
If an amount is provided, it must be specified in decimal BTC.&lt;br /&gt;
I.e. amount=50.00 is treated as 50 BTC.&lt;br /&gt;
&lt;br /&gt;
Bitcoin clients MAY display the amount in any format that is not intended to deceive the user.&lt;br /&gt;
They SHOULD choose a format that is foremost least confusing, and only after that most reasonable given the amount requested.&lt;br /&gt;
For example, so long as the majority of users work in BTC units, values should always be displayed in BTC by default, even if mBTC or TBC would otherwise be a more logical interpretation of the amount.&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
===Payment identifiers, not person identifiers===&lt;br /&gt;
Current best practices are that a unique address should be used for every transaction.&lt;br /&gt;
Therefore, a URI scheme should not represent an exchange of personal information, but a one-time payment.&lt;br /&gt;
&lt;br /&gt;
===Accessibility (URI scheme name)===&lt;br /&gt;
Should someone from the outside happen to see such a URI, the URI scheme name already gives a description.&lt;br /&gt;
A quick search should then do the rest to help them find the resources needed to make their payment.&lt;br /&gt;
Other proposed names sound much more cryptic; the chance that someone googles that out of curiosity are much slimmer.&lt;br /&gt;
Also, very likely, what he will find are mostly technical specifications - not the best introduction to bitcoin.&lt;br /&gt;
&lt;br /&gt;
==Forward compatibility==&lt;br /&gt;
We want URIs generated in 2011 to still work in 2036: think about extensibility.&lt;br /&gt;
Of course we can make only educated guesses about the future, but don&#039;t act as if there is none.&lt;br /&gt;
This should be the best we can do, but it should not be seen as set in stone.&lt;br /&gt;
Make it possible for later generations to improve our work, to mend our errors, without breaking the URIs created now.&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Simpler syntax ===&lt;br /&gt;
&lt;br /&gt;
This section is non-normative and does not cover all possible syntax.&lt;br /&gt;
Please see the [[#BNF grammar|BNF grammar]] above for the normative syntax.&lt;br /&gt;
&lt;br /&gt;
[foo] means optional, &amp;lt;bar&amp;gt; are placeholders&lt;br /&gt;
&lt;br /&gt;
 bitcoin:&amp;lt;address&amp;gt;[;version=1.0][?amount=&amp;lt;amount&amp;gt;][?label=&amp;lt;label&amp;gt;][?message=&amp;lt;message&amp;gt;][?send=&amp;lt;private key&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
Just the address:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L&lt;br /&gt;
&lt;br /&gt;
Address with name:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?label=Luke-Jr&lt;br /&gt;
&lt;br /&gt;
Request 20.30 BTC to &amp;quot;Luke-Jr&amp;quot;:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?amount=20.3&amp;amp;label=Luke-Jr&lt;br /&gt;
&lt;br /&gt;
Request 50 BTC with message:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?amount=50&amp;amp;label=Luke-Jr&amp;amp;message=Donation%20for%20project%20xyz&lt;br /&gt;
&lt;br /&gt;
Send 1 BTC:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?amount=1&amp;amp;send=S4b3N3oGqDqR5jNuxEvDwf&lt;br /&gt;
&lt;br /&gt;
Characters must be URI encoded properly.&lt;br /&gt;
&lt;br /&gt;
===Sending money via private key===&lt;br /&gt;
To send a payment to someone else first construct a new keypair. You may want to use a [[mini private key format]], or you may also use a full private key for more security depending on the amount being sent and how long you expect to pass before a claim. Now create and publish a transaction with an output of the amount you wish to send. Use this script in that output:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pubkey&amp;gt; OP_CHECKSIG&lt;br /&gt;
&lt;br /&gt;
Construct an address from the public key. Encode the URI as below:&lt;br /&gt;
&lt;br /&gt;
 bitcoin:&amp;lt;address&amp;gt;?send=&amp;lt;base 58 encoded private key&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may optionally include amount or message fields as well. In a wallet to claim money sent this way search for an incoming transaction with the output script form above, where &amp;lt;address&amp;gt; matches the public key in the script. When you find the transaction create a claim transaction with an input script of this form:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;sig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This claims the money you were sent. Until your claim transaction has confirmed the sender may take their money back.&lt;br /&gt;
&lt;br /&gt;
== Reference Implementations ==&lt;br /&gt;
=== Bitcoin clients ===&lt;br /&gt;
* [[Bitcoin-Qt]] supports all valid Bitcoin URIs, with Windows and KDE integration as of commit 70f55355e29c8e45b607e782c5d76609d23cc858.&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;br /&gt;
[[Category:Technical]]&lt;br /&gt;
[[Category:BIP|D]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Incidents&amp;diff=22659</id>
		<title>Incidents</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Incidents&amp;diff=22659"/>
		<updated>2012-01-23T22:33:32Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: Later stuff was completely off-topic.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Micropayment contamination ==&lt;br /&gt;
Around September 29, 2010, people started [http://www.bitcoin.org/smf/index.php?topic=1306.0 reporting] that their sent transactions would not confirm. This happened because people modified Bitcoin to send sub-0.01 transactions without any fees. A 0.01 fee was at that time required by the network for such transactions (essentially prohibiting them), so the transactions remained at 0 confirmations forever. This became a more serious issue because Bitcoin would send transactions using bitcoins gotten from transactions with 0 confirmations, and these resulting transactions would also never confirm. Because Bitcoin tends to prefer sending smaller coins, these invalid transactions quickly multiplied, contaminating the wallets of everyone who received them.&lt;br /&gt;
&lt;br /&gt;
Bitcoin was changed to only select coins with at least 1 confirmation. The remaining sub-0.01 transactions were cleared by generators who modified their version of Bitcoin to not require the micropayment fee. It took a while for everything to get cleared, though, because many of the intermediate transactions had been forgotten by the network by this point and had to be rebroadcast by the original senders.&lt;br /&gt;
&lt;br /&gt;
== Value overflow ==&lt;br /&gt;
&lt;br /&gt;
On August 15 2010, it was [http://bitcointalk.org/index.php?topic=822.0 discovered] that block 74638 contained a transaction that created over 184 billion bitcoins for two different addresses. This was possible because the code used for checking transactions before including them in a block didn&#039;t account for the case of outputs so large that they overflowed when summed. A new version was published within a few hours of the discovery. The block chain had to be forked. Although many unpatched nodes continued to build on the &amp;quot;bad&amp;quot; block chain, the &amp;quot;good&amp;quot; block chain overtook it at a block height of 74691. The bad transaction no longer exists for people using the longest chain.&lt;br /&gt;
&lt;br /&gt;
The block and transaction:&lt;br /&gt;
&amp;lt;pre&amp;gt;CBlock(hash=0000000000790ab3, ver=1, hashPrevBlock=0000000000606865, hashMerkleRoot=618eba,&lt;br /&gt;
nTime=1281891957, nBits=1c00800e, nNonce=28192719, vtx=2)&lt;br /&gt;
  CTransaction(hash=012cd8, ver=1, vin.size=1, vout.size=1, nLockTime=0)&lt;br /&gt;
    CTxIn(COutPoint(000000, -1), coinbase 040e80001c028f00)&lt;br /&gt;
    CTxOut(nValue=50.51000000, scriptPubKey=0x4F4BA55D1580F8C3A8A2C7)&lt;br /&gt;
  CTransaction(hash=1d5e51, ver=1, vin.size=1, vout.size=2, nLockTime=0)&lt;br /&gt;
    CTxIn(COutPoint(237fe8, 0), scriptSig=0xA87C02384E1F184B79C6AC)&lt;br /&gt;
    CTxOut(nValue=92233720368.54275808, scriptPubKey=OP_DUP OP_HASH160 0xB7A7)&lt;br /&gt;
    CTxOut(nValue=92233720368.54275808, scriptPubKey=OP_DUP OP_HASH160 0x1512)&lt;br /&gt;
  vMerkleTree: 012cd8 1d5e51 618eba&lt;br /&gt;
&lt;br /&gt;
Block hash: 0000000000790ab3f22ec756ad43b6ab569abf0bddeb97c67a6f7b1470a7ec1c&lt;br /&gt;
Transaction hash: 1d5e512a9723cbef373b970eb52f1e9598ad67e7408077a82fdac194b65333c9&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OP_CHECKSIG abuse ==&lt;br /&gt;
&lt;br /&gt;
On July 29 2010, it was discovered that block [http://blockexplorer.com/block/00000000000997f9fd2fe1ee376293ef8c42ad09193a5d2086dddf8e5c426b56 71036] contained several transactions with a ton of OP_CHECKSIG commands. There should only ever be one such command. This caused every node to do extra unnecessary work, and it could have been used as a denial-of-service attack. A new version of Bitcoin was quickly released. The new version did not cause a fork on the main network, though it did cause one on the test network (where someone had played around with the attack more).&lt;br /&gt;
&lt;br /&gt;
== LSHIFT and RETURN bugs ==&lt;br /&gt;
&lt;br /&gt;
On July 28 2010 two bugs were discovered and demonstrated on the test network.  The first caused bitcoin to crash on some machines when processing a transaction containing an OP_LSHIFT.  The second exploited another bug in the transaction handling code and allowed an attacker to spend coins that they did not own.  Neither were exploited on the main network, and both were fixed by Bitcoin version 0.3.5.&lt;br /&gt;
&lt;br /&gt;
After these bugs were discovered, many currently-unused [[script]] words were disabled for safety.&lt;br /&gt;
&lt;br /&gt;
== ASCII embedding into blockchain ==&lt;br /&gt;
&lt;br /&gt;
Security researchers Dan Kaminsky and Travis Goodspeed successfully embedded [http://pastebin.com/raw.php?i=BUB3dygQ extraneous text] into the blockchain from a mined block.  This was disclosed on July 31, 2011, prior to Kaminsky&#039;s presentation at the Black Hat Briefings conference entitled [http://www.slideshare.net/dakami/black-ops-of-tcpip-2011-black-hat-usa-2011 Black Ops Of TCP/IP 2011].&lt;br /&gt;
&lt;br /&gt;
Though Block chain embedding should not really be seen as an attack (BitCoin is ultimately a channel by which arbitrary data is validated and retained over time), the ability of users to store arbitrary data in the blockchain is a potential avenue for abuse.  That said, placing arbitrary data in a coinbase does not require additional space on user&#039;s drives (as the [[genesis block]] did).&lt;br /&gt;
[[Category:Technical]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Developers&amp;diff=16288</id>
		<title>Developers</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Developers&amp;diff=16288"/>
		<updated>2011-09-07T19:34:58Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* &#039;&#039;&#039;This list is not complete.&#039;&#039;&#039; Please make updates/corrections as needed.&lt;br /&gt;
* Attempt to sort by contribution&lt;br /&gt;
* Legend:&lt;br /&gt;
** &amp;quot;Author&amp;quot; = original author; &amp;quot;Lead&amp;quot; = current project lead&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;background:#90ff90&amp;quot; | active maintainer&lt;br /&gt;
| style=&amp;quot;background:#ffffaa&amp;quot; | has made contributions&lt;br /&gt;
| style=&amp;quot;background:#ff9090&amp;quot; | no involvement&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Name !! Original !! BitcoinJ !! Tools !! Spesmilo !! Gentoo !! Supybot !! Other&lt;br /&gt;
|-&lt;br /&gt;
| Satoshi Nakamoto&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author/Retired&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| Bitcoin original designer&lt;br /&gt;
|-&lt;br /&gt;
| [[Gavin Andresen]]&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Lead&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| sirius-m&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Retired&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| tcatm&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Jeff Garzik&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|cpuminer, pushpool&lt;br /&gt;
|-&lt;br /&gt;
| TD&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Daniel Folkinshteyn&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Luke Dashjr&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|Few&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|URI, Wallet protocols&lt;br /&gt;
|-&lt;br /&gt;
| genjix&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Matt Giuca&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Mizery De Aria&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|style=&amp;quot;background:#90ff90&amp;quot;|Author&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Laurent Bachelier&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Florian Schmaus&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| BioMike&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value Yes}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Chris Moore&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Matt Corallo&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Pieter Wuille&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Marius Hanne&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| David FRANCOIS&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Nils Schneider&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Giel van Schijndel&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Fabian H jr.&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| ovdeathiam&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dev Random&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Michal Zima&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Venkatesh Srinivas&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Vegard Nossum&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| JoelKatz&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Joerie de Gram&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Johannes Henninger&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jeroenz0r&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Han Lin Yap&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Wladimir J. van der Laan&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Abraham Jewowich&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Michael Bemmerl&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Eric Hosmer&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dawid Spiechowicz&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Stéphane Gimenez&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Patrick Varilly&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jay Weisskopf&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dylan Noblesmith&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| James Burkle&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jordan Lewis&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dean Lee&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| xHire&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| HostFat&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jakob Kramer&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| ariel&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| dabaopku&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Federico Faggiano&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| m0ray&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Danube&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Carlos Pizarro&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Blitzboom&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Daniel Holbert&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Jaromil&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Carlo Alberto Ferraris&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Forrest Voight&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Amir Yalon&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| John Maguire&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Ricardo M. Correia&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dan Helfman&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| gjs278&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Dan Loewenherz&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Eric Swanson&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Santiago M. Mola&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Shane Wegner&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Sven Slootweg&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| ojab&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| sandos&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| Witchspace&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|-&lt;br /&gt;
| laszloh&lt;br /&gt;
|style=&amp;quot;background:#ffffaa&amp;quot;|&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
| {{Table Value No}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Original client developers]]&lt;br /&gt;
* [[People]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Network&amp;diff=13706</id>
		<title>Network</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Network&amp;diff=13706"/>
		<updated>2011-07-27T13:03:29Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: /* Bootstrapping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bitcoin uses a simple broadcast network to propagate transactions and blocks. All communications are done over TCP. Bitcoin is fully able to use ports other than 8333 via the -port parameter. IPv6 is currently not supported.&lt;br /&gt;
&lt;br /&gt;
== Messages ==&lt;br /&gt;
* &#039;&#039;version&#039;&#039; - Information about program version and block count. Exchanged when first connecting.&lt;br /&gt;
* &#039;&#039;verack&#039;&#039; - Sent in response to a version message to acknowledge that we are willing to connect.&lt;br /&gt;
* &#039;&#039;addr&#039;&#039; - List of one or more IP addresses and ports.&lt;br /&gt;
* &#039;&#039;inv&#039;&#039; - &amp;quot;I have these blocks/transactions: ...&amp;quot; Normally sent only when a &#039;&#039;new&#039;&#039; block or transaction is being relayed. This is only a list, not the actual data.&lt;br /&gt;
* &#039;&#039;getdata&#039;&#039; - Request a single block or transaction by hash.&lt;br /&gt;
* &#039;&#039;getblocks&#039;&#039; - Request an &#039;&#039;inv&#039;&#039; of all blocks in a range.&lt;br /&gt;
* &#039;&#039;getheaders&#039;&#039; - Request a &#039;&#039;headers&#039;&#039; message containing all block headers in a range.&lt;br /&gt;
* &#039;&#039;tx&#039;&#039; - Send a transaction. This is only sent in response to a &#039;&#039;getdata&#039;&#039; request.&lt;br /&gt;
* &#039;&#039;block&#039;&#039; - Send a block. This is only sent in response to a &#039;&#039;getdata&#039;&#039; request.&lt;br /&gt;
* &#039;&#039;headers&#039;&#039; - Send up to 2,000 block headers. Non-generators can download the headers of blocks instead of entire blocks.&lt;br /&gt;
* &#039;&#039;getaddr&#039;&#039; - Request an &#039;&#039;addr&#039;&#039; message containing a bunch of known-active peers (for bootstrapping).&lt;br /&gt;
* &#039;&#039;submitorder&#039;&#039;, &#039;&#039;checkorder&#039;&#039;, and &#039;&#039;reply&#039;&#039; - Used when performing an [[IP address|IP transaction]].&lt;br /&gt;
* &#039;&#039;alert&#039;&#039; - Send a network alert.&lt;br /&gt;
* &#039;&#039;ping&#039;&#039; - Does nothing. Used to check that the connection is still online. A TCP error will occur if the connection has died.&lt;br /&gt;
&lt;br /&gt;
More information and in-depth technical information is in the [[Protocol Specification]].&lt;br /&gt;
&lt;br /&gt;
== Connection ==&lt;br /&gt;
&lt;br /&gt;
To connect to a peer, you send a &#039;&#039;version&#039;&#039; message containing your version number, block count, and current time. The remote peer will send back a &#039;&#039;verack&#039;&#039; message and his own &#039;&#039;version&#039;&#039; message if he is accepting connections from your version. You will respond with your own &#039;&#039;verack&#039;&#039; if you are accepting connections from his version.&lt;br /&gt;
&lt;br /&gt;
The time data from all of your peers is collected, and the median is used by Bitcoin for all network tasks that use the time (except for other version messages).&lt;br /&gt;
&lt;br /&gt;
You then exchange &#039;&#039;getaddr&#039;&#039; and &#039;&#039;addr&#039;&#039; messages, storing all addresses that you don&#039;t know about. Normally &#039;&#039;addr&#039;&#039; messages only contain one address, but in this initial exchange it contains many recent peers.&lt;br /&gt;
&lt;br /&gt;
== Standard relaying ==&lt;br /&gt;
&lt;br /&gt;
When someone sends a transaction, they send an &#039;&#039;inv&#039;&#039; message containing it to all of their peers. Their peers will request the full transaction with &#039;&#039;getdata&#039;&#039;. If they consider the transaction valid after receiving it, they will also broadcast the transaction to all of their peers with an &#039;&#039;inv&#039;&#039;, and so on. Peers only ask for or relay transactions if they don&#039;t already have them. A peer will never rebroadcast a transaction that it already knows about, though transactions will eventually be forgotten if they don&#039;t get into a block after a while. The sender and receiver of the transaction will rebroadcast, however.&lt;br /&gt;
&lt;br /&gt;
Anyone who is generating will collect valid received transactions and work on including them in a block. When someone does find a block, they send an &#039;&#039;inv&#039;&#039; containing it to all of their peers, as above. It works the same as transactions.&lt;br /&gt;
&lt;br /&gt;
Everyone broadcasts an &#039;&#039;addr&#039;&#039; containing their own IP address every 24 hours. Nodes relay these messages to a couple of their peers and store the address if it&#039;s new to them. Through this system, everyone has a reasonably clear picture of which IPs are connected to the network at the moment. After connecting to the network, you get added to everyone&#039;s address database almost instantly because of your initial &#039;&#039;addr&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Network alerts are broadcast with &#039;&#039;alert&#039;&#039; messages. No &#039;&#039;inv&#039;&#039;-like system is used; these contain the entire alert. If a received alert is valid (signed by one of the people with the private key), it is relayed to all peers. For as long as an alert is still in effect, it is rebroadcast at the start of every new connection.&lt;br /&gt;
&lt;br /&gt;
== Initial block download ==&lt;br /&gt;
&lt;br /&gt;
At the start of a connection, you send a &#039;&#039;getblocks&#039;&#039; message containing the hash of the latest block you know about. If the peer doesn&#039;t think that this is the latest block, it will send an &#039;&#039;inv&#039;&#039; that contains up to 500 blocks ahead of the one you listed. You will then request all of these blocks with &#039;&#039;getdata&#039;&#039;, and the peer will send them to you with &#039;&#039;block&#039;&#039; messages. After you have downloaded and processed all of these blocks, you will send another &#039;&#039;getblocks&#039;&#039;, etc., until you have all of the blocks.&lt;br /&gt;
&lt;br /&gt;
0.3.18 introduced new &#039;&#039;headers&#039;&#039; and &#039;&#039;getheaders&#039;&#039; messages. These are not currently used, but they will be used by non-generators to download block headers without the corresponding block bodies. Only the headers are necessary for verifying received transactions -- full blocks are only needed by generators. Instead of the &#039;&#039;getblocks/inv/getdata/block&#039;&#039; sequence, non-generators will send a &#039;&#039;getheaders&#039;&#039; message (very like &#039;&#039;getblocks&#039;&#039;), and the peer will immediately respond with a &#039;&#039;headers&#039;&#039; message containing up to 2,000 of the next headers. This will make initial block download &#039;&#039;much&#039;&#039; faster.&lt;br /&gt;
&lt;br /&gt;
== Bootstrapping ==&lt;br /&gt;
&lt;br /&gt;
You choose which peers to connect to by sorting your address database by the time since you last saw the address and then adding a bit of randomization.&lt;br /&gt;
&lt;br /&gt;
Bitcoin has three methods of finding peers.&lt;br /&gt;
&lt;br /&gt;
=== Addr ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;addr&#039;&#039; messages described above create an effect similar to the IRC bootstrapping method. You know reasonably quickly whenever a peer joins, though you won&#039;t know for a while when they leave.&lt;br /&gt;
&lt;br /&gt;
Bitcoin comes with a list of addresses known as &amp;quot;seed nodes&amp;quot;. If you are unable to connect to IRC and you&#039;ve never connected to the network before, the client will update the address database by connecting to one of the nodes from this list.&lt;br /&gt;
&lt;br /&gt;
The -addnode command line option can be used to manually add a node.  The -connect option can force bitcoin to only connect to a specific node.&lt;br /&gt;
&lt;br /&gt;
=== DNS ===&lt;br /&gt;
&lt;br /&gt;
Bitcoin looks up the IP Addresses of several host names and adds those to the list of potential addresses.  This is intended to replace the IRC seeding mechanism in future releases.&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
&lt;br /&gt;
Bitcoin joins a random channel between #bitcoin00 and #bitcoin99 on irc.lfnet.org. Your nick is set to an encoded form of your IP address. By decoding all the nicks of all users on the channel, you get a list of all IP addresses currently connected to Bitcoin.&lt;br /&gt;
&lt;br /&gt;
For hosts that cannot make outbound connections on port 6667, the lfnet servers are also [[FAQ#Do_I_need_to_configure_my_firewall_to_run_bitcoin?|listening on port 7777]].&lt;br /&gt;
&lt;br /&gt;
== Heartbeat ==&lt;br /&gt;
&lt;br /&gt;
If thirty minutes or more has passed since the client has transmitted any messages it will transmit a message to keep the connection to the peer node alive.&lt;br /&gt;
&lt;br /&gt;
If ninety minutes has passed since a peer node has communicated any messages, then the client will assume that connection has closed.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Protocol Specification]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Network&amp;diff=13705</id>
		<title>Network</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Network&amp;diff=13705"/>
		<updated>2011-07-27T12:58:05Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bitcoin uses a simple broadcast network to propagate transactions and blocks. All communications are done over TCP. Bitcoin is fully able to use ports other than 8333 via the -port parameter. IPv6 is currently not supported.&lt;br /&gt;
&lt;br /&gt;
== Messages ==&lt;br /&gt;
* &#039;&#039;version&#039;&#039; - Information about program version and block count. Exchanged when first connecting.&lt;br /&gt;
* &#039;&#039;verack&#039;&#039; - Sent in response to a version message to acknowledge that we are willing to connect.&lt;br /&gt;
* &#039;&#039;addr&#039;&#039; - List of one or more IP addresses and ports.&lt;br /&gt;
* &#039;&#039;inv&#039;&#039; - &amp;quot;I have these blocks/transactions: ...&amp;quot; Normally sent only when a &#039;&#039;new&#039;&#039; block or transaction is being relayed. This is only a list, not the actual data.&lt;br /&gt;
* &#039;&#039;getdata&#039;&#039; - Request a single block or transaction by hash.&lt;br /&gt;
* &#039;&#039;getblocks&#039;&#039; - Request an &#039;&#039;inv&#039;&#039; of all blocks in a range.&lt;br /&gt;
* &#039;&#039;getheaders&#039;&#039; - Request a &#039;&#039;headers&#039;&#039; message containing all block headers in a range.&lt;br /&gt;
* &#039;&#039;tx&#039;&#039; - Send a transaction. This is only sent in response to a &#039;&#039;getdata&#039;&#039; request.&lt;br /&gt;
* &#039;&#039;block&#039;&#039; - Send a block. This is only sent in response to a &#039;&#039;getdata&#039;&#039; request.&lt;br /&gt;
* &#039;&#039;headers&#039;&#039; - Send up to 2,000 block headers. Non-generators can download the headers of blocks instead of entire blocks.&lt;br /&gt;
* &#039;&#039;getaddr&#039;&#039; - Request an &#039;&#039;addr&#039;&#039; message containing a bunch of known-active peers (for bootstrapping).&lt;br /&gt;
* &#039;&#039;submitorder&#039;&#039;, &#039;&#039;checkorder&#039;&#039;, and &#039;&#039;reply&#039;&#039; - Used when performing an [[IP address|IP transaction]].&lt;br /&gt;
* &#039;&#039;alert&#039;&#039; - Send a network alert.&lt;br /&gt;
* &#039;&#039;ping&#039;&#039; - Does nothing. Used to check that the connection is still online. A TCP error will occur if the connection has died.&lt;br /&gt;
&lt;br /&gt;
More information and in-depth technical information is in the [[Protocol Specification]].&lt;br /&gt;
&lt;br /&gt;
== Connection ==&lt;br /&gt;
&lt;br /&gt;
To connect to a peer, you send a &#039;&#039;version&#039;&#039; message containing your version number, block count, and current time. The remote peer will send back a &#039;&#039;verack&#039;&#039; message and his own &#039;&#039;version&#039;&#039; message if he is accepting connections from your version. You will respond with your own &#039;&#039;verack&#039;&#039; if you are accepting connections from his version.&lt;br /&gt;
&lt;br /&gt;
The time data from all of your peers is collected, and the median is used by Bitcoin for all network tasks that use the time (except for other version messages).&lt;br /&gt;
&lt;br /&gt;
You then exchange &#039;&#039;getaddr&#039;&#039; and &#039;&#039;addr&#039;&#039; messages, storing all addresses that you don&#039;t know about. Normally &#039;&#039;addr&#039;&#039; messages only contain one address, but in this initial exchange it contains many recent peers.&lt;br /&gt;
&lt;br /&gt;
== Standard relaying ==&lt;br /&gt;
&lt;br /&gt;
When someone sends a transaction, they send an &#039;&#039;inv&#039;&#039; message containing it to all of their peers. Their peers will request the full transaction with &#039;&#039;getdata&#039;&#039;. If they consider the transaction valid after receiving it, they will also broadcast the transaction to all of their peers with an &#039;&#039;inv&#039;&#039;, and so on. Peers only ask for or relay transactions if they don&#039;t already have them. A peer will never rebroadcast a transaction that it already knows about, though transactions will eventually be forgotten if they don&#039;t get into a block after a while. The sender and receiver of the transaction will rebroadcast, however.&lt;br /&gt;
&lt;br /&gt;
Anyone who is generating will collect valid received transactions and work on including them in a block. When someone does find a block, they send an &#039;&#039;inv&#039;&#039; containing it to all of their peers, as above. It works the same as transactions.&lt;br /&gt;
&lt;br /&gt;
Everyone broadcasts an &#039;&#039;addr&#039;&#039; containing their own IP address every 24 hours. Nodes relay these messages to a couple of their peers and store the address if it&#039;s new to them. Through this system, everyone has a reasonably clear picture of which IPs are connected to the network at the moment. After connecting to the network, you get added to everyone&#039;s address database almost instantly because of your initial &#039;&#039;addr&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Network alerts are broadcast with &#039;&#039;alert&#039;&#039; messages. No &#039;&#039;inv&#039;&#039;-like system is used; these contain the entire alert. If a received alert is valid (signed by one of the people with the private key), it is relayed to all peers. For as long as an alert is still in effect, it is rebroadcast at the start of every new connection.&lt;br /&gt;
&lt;br /&gt;
== Initial block download ==&lt;br /&gt;
&lt;br /&gt;
At the start of a connection, you send a &#039;&#039;getblocks&#039;&#039; message containing the hash of the latest block you know about. If the peer doesn&#039;t think that this is the latest block, it will send an &#039;&#039;inv&#039;&#039; that contains up to 500 blocks ahead of the one you listed. You will then request all of these blocks with &#039;&#039;getdata&#039;&#039;, and the peer will send them to you with &#039;&#039;block&#039;&#039; messages. After you have downloaded and processed all of these blocks, you will send another &#039;&#039;getblocks&#039;&#039;, etc., until you have all of the blocks.&lt;br /&gt;
&lt;br /&gt;
0.3.18 introduced new &#039;&#039;headers&#039;&#039; and &#039;&#039;getheaders&#039;&#039; messages. These are not currently used, but they will be used by non-generators to download block headers without the corresponding block bodies. Only the headers are necessary for verifying received transactions -- full blocks are only needed by generators. Instead of the &#039;&#039;getblocks/inv/getdata/block&#039;&#039; sequence, non-generators will send a &#039;&#039;getheaders&#039;&#039; message (very like &#039;&#039;getblocks&#039;&#039;), and the peer will immediately respond with a &#039;&#039;headers&#039;&#039; message containing up to 2,000 of the next headers. This will make initial block download &#039;&#039;much&#039;&#039; faster.&lt;br /&gt;
&lt;br /&gt;
== Bootstrapping ==&lt;br /&gt;
&lt;br /&gt;
You choose which peers to connect to by sorting your address database by the time since you last saw the address and then adding a bit of randomization.&lt;br /&gt;
&lt;br /&gt;
Bitcoin has two methods of finding peers.&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
&lt;br /&gt;
Bitcoin joins the #bitcoin channel on irc.lfnet.org. Your nick is set to an encoded form of your IP address. By decoding all the nicks of all users on the channel, you get a list of all IP addresses currently connected to Bitcoin.&lt;br /&gt;
&lt;br /&gt;
For hosts that cannot make outbound connections on port 6667, the lfnet servers are also [[FAQ#Do_I_need_to_configure_my_firewall_to_run_bitcoin?|listening on port 7777]].&lt;br /&gt;
&lt;br /&gt;
=== Addr ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;addr&#039;&#039; messages described above create an effect similar to the IRC bootstrapping method. You know reasonably quickly whenever a peer joins, though you won&#039;t know for a while when they leave.&lt;br /&gt;
&lt;br /&gt;
Bitcoin comes with a list of addresses known as &amp;quot;seed nodes&amp;quot;. If you are unable to connect to IRC and you&#039;ve never connected to the network before, the client will update the address database by connecting to one of the nodes from this list.&lt;br /&gt;
&lt;br /&gt;
The -addnode command line option can be used to manually add a node.  The -connect option can force bitcoin to only connect to a specific node.&lt;br /&gt;
&lt;br /&gt;
== Heartbeat ==&lt;br /&gt;
&lt;br /&gt;
If thirty minutes or more has passed since the client has transmitted any messages it will transmit a message to keep the connection to the peer node alive.&lt;br /&gt;
&lt;br /&gt;
If ninety minutes has passed since a peer node has communicated any messages, then the client will assume that connection has closed.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Protocol Specification]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Technical]]&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:The_way_To_manufacture_a_Realistic_Water_Text_Effect&amp;diff=8859</id>
		<title>Talk:The way To manufacture a Realistic Water Text Effect</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:The_way_To_manufacture_a_Realistic_Water_Text_Effect&amp;diff=8859"/>
		<updated>2011-05-24T20:14:43Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This has nothing to do with Bitcoin.  Not sure why it exists here.  - [[User:Sgornick|Sgornick]] 11:34, 23 May 2011 (GMT)&lt;br /&gt;
&lt;br /&gt;
Should be deleted [[User:BlueMatt|BlueMatt]] 20:14, 24 May 2011 (GMT)&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Talk:The_way_To_manufacture_a_Realistic_Water_Text_Effect&amp;diff=8858</id>
		<title>Talk:The way To manufacture a Realistic Water Text Effect</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Talk:The_way_To_manufacture_a_Realistic_Water_Text_Effect&amp;diff=8858"/>
		<updated>2011-05-24T20:14:29Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This has nothing to do with Bitcoin.  Not sure why it exists here.  - [[User:Sgornick|Sgornick]] 11:34, 23 May 2011 (GMT)&lt;br /&gt;
Should be deleted [[User:BlueMatt|BlueMatt]] 20:14, 24 May 2011 (GMT)&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=BIP_0020&amp;diff=8189</id>
		<title>BIP 0020</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=BIP_0020&amp;diff=8189"/>
		<updated>2011-05-09T16:10:54Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: Undo revision 8182 by Luke-jr (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is about creating a URI scheme for bitcoin.&lt;br /&gt;
Previous discussion was in [http://www.bitcoin.org/smf/index.php?topic=55.0 this forum thread].&lt;br /&gt;
x-btc specification is at [[x-btc]].&lt;br /&gt;
&lt;br /&gt;
==RFC 3986==&lt;br /&gt;
&#039;&#039;&#039;the following is taken from wikipedia&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Internet standard [http://rfc.net/std0066.html STD 66] (also RFC 3986) defines the generic syntax to be used in all URI schemes. Every URI is defined as consisting of four parts, as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;scheme name&amp;gt; : &amp;lt;hierarchical part&amp;gt; [ ? &amp;lt;query&amp;gt; ] [ # &amp;lt;fragment&amp;gt; ]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;scheme name&#039;&#039;&#039; consists of a letter followed by any combination of letters, digits, and the plus (&amp;quot;+&amp;quot;), period (&amp;quot;.&amp;quot;), or hyphen (&amp;quot;-&amp;quot;) characters; and is terminated by a colon (&amp;quot;:&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;hierarchical part&#039;&#039;&#039; of the URI is intended to hold identification information hierarchical in nature. Usually this part begins with a double forward slash (&amp;quot;//&amp;quot;), followed by an &#039;&#039;authority&#039;&#039; part and an optional &#039;&#039;path&#039;&#039;.  &lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;&#039;authority&#039;&#039;&#039; part holds an optional user information part terminated with &amp;quot;@&amp;quot; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;username:password@&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), a hostname (i.e. domain name or IP address), and an optional port number preceded by a colon &amp;quot;:&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;&#039;path&#039;&#039;&#039; part is a sequence of segments (conceptually similar to directories, though not necessarily representing them) separated by a forward slash (&amp;quot;/&amp;quot;). Each segment can contain parameters separated from it using a semicolon (&amp;quot;;&amp;quot;), though this is rarely used in practice.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;query&#039;&#039;&#039;  is an optional part separated with a question mark, which contains additional identification information which is not hierarchical in nature. The query string syntax is not generically defined, but is commonly organized as a sequence of &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;key&amp;gt;=&amp;lt;value&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; pairs separated by a semicolon&amp;lt;ref&amp;gt;&lt;br /&gt;
RFC 1866 section 8.2.1 : by Tim Berners-Lee in 1995 encourages CGI authors to support &#039;;&#039; in addition to &#039;&amp;amp;&#039;.&lt;br /&gt;
&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;&lt;br /&gt;
[http://www.w3.org/TR/REC-html40/appendix/notes.html#h-B.2.2 HTML 4.01 Specification: Implementation, and Design Notes]: &amp;quot;CGI implementors support the use of &amp;quot;;&amp;quot; in place of &amp;quot;&amp;amp;&amp;quot; to save authors the trouble of escaping &amp;quot;&amp;amp;&amp;quot; characters in this manner.&amp;quot;&lt;br /&gt;
&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;&lt;br /&gt;
[http://www.w3.org/MarkUp/html-spec/html-spec_foot.html#FOOT26 Hypertext Markup Language - 2.0]&lt;br /&gt;
&amp;quot;CGI implementors are encouraged to support the use of &#039;;&#039; in place of &#039;&amp;amp;&#039; &amp;quot; &lt;br /&gt;
&amp;lt;/ref&amp;gt; or separated by an ampersand, for example:&lt;br /&gt;
 Semicolon: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;key1=value1;key2=value2;key3=value3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 Ampersand: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;key1=value1&amp;amp;key2=value2&amp;amp;key3=value3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;fragment&#039;&#039;&#039; is an optional part separated from the front parts by a hash (&amp;quot;#&amp;quot;). It holds additional identifying information that provides direction to a secondary resource, e.g. a section heading in an article identified by the remainder of the URI.  When the primary resource is an HTML document, the &#039;&#039;&#039;fragment&#039;&#039;&#039; is often an &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; attribute of a specific element and web browsers will make sure this element is visible.&lt;br /&gt;
&lt;br /&gt;
==Proposed specification==&lt;br /&gt;
&lt;br /&gt;
[] means optional, &amp;lt;&amp;gt; are placeholders&lt;br /&gt;
&lt;br /&gt;
 bitcoin:&amp;lt;address&amp;gt;[?][amount=&amp;lt;size&amp;gt;][&amp;amp;][label=&amp;lt;label&amp;gt;][&amp;amp;][message=&amp;lt;message&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Query Keys ===&lt;br /&gt;
&lt;br /&gt;
*label: Label for that address (e.g. name of receiver)&lt;br /&gt;
*address: bitcoin address&lt;br /&gt;
*message: optional message that is shown to the user after scanning the QR code&lt;br /&gt;
*size: amount of bitcoins (full Decimal BitCoins)&lt;br /&gt;
&lt;br /&gt;
==== Transfer amount/size ====&lt;br /&gt;
&lt;br /&gt;
If an amount is provided, it may be specified in standard BTC decimal units.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
Just the address:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L&lt;br /&gt;
&lt;br /&gt;
Address with name:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?label=Luke-Jr&lt;br /&gt;
&lt;br /&gt;
Request to send 20.30 BTC to &amp;quot;Luke-Jr&amp;quot;:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?amount=20.3&amp;amp;label=Luke-Jr&lt;br /&gt;
&lt;br /&gt;
Request to send 100 TBC:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?amount=0.16777216&lt;br /&gt;
&lt;br /&gt;
Request to send 5 uBTC:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?amount=0.000005&lt;br /&gt;
&lt;br /&gt;
Request to send 50 BTC with message:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?amount=50&amp;amp;label=Luke-Jr&amp;amp;message=Donation%20for%20project%20xyz&lt;br /&gt;
&lt;br /&gt;
Characters must be URI encoded properly.&lt;br /&gt;
&lt;br /&gt;
=== BNF syntax ===&lt;br /&gt;
&lt;br /&gt;
 bitcoinurn      = &amp;quot;bitcoin:&amp;quot; bitcoinaddress [ &amp;quot;;version=&amp;quot; bitcoinversion ] [ &amp;quot;?&amp;quot; bitcoinparams ]&lt;br /&gt;
 bitcoinaddress  = FIXME :)&lt;br /&gt;
 bitcoinversion  = &amp;quot;1.0&amp;quot;&lt;br /&gt;
 bitcoinparams   = *bitcoinparam&lt;br /&gt;
 bitcoinparam    = amountparam | labelparam | messageparam&lt;br /&gt;
 amountparam     = &amp;quot;amount=&amp;quot; amount&lt;br /&gt;
 amount          = amountdecimal | amounthex&lt;br /&gt;
 amountdecimal   = digits [ &amp;quot;X&amp;quot; digits ]&lt;br /&gt;
 amounthex       = &amp;quot;x&amp;quot; hexdigits [ &amp;quot;X&amp;quot; hexdigits ]&lt;br /&gt;
 labelparam      = &amp;quot;label=&amp;quot; *uchar&lt;br /&gt;
 messageparam    = &amp;quot;label=&amp;quot; *uchar&lt;br /&gt;
&lt;br /&gt;
=== Parsing amount ===&lt;br /&gt;
Note that most of these have support for more specifiers of amount and have capabilities beyond what is needed to support this specification.&lt;br /&gt;
==== ECMAScript ====&lt;br /&gt;
 reAmount = /^(([\d.]+)(X(\d+))?|x([\da-f]*)(\.([\da-f]*))?(X([\da-f]+))?)$/i;&lt;br /&gt;
 function parseAmount(txt) {&lt;br /&gt;
 	var m = txt.match(reAmount);&lt;br /&gt;
 	return m[5] ? (&lt;br /&gt;
 		(&lt;br /&gt;
 			parseInt(m[5], 16) +&lt;br /&gt;
 			(m[7] ? (parseInt(m[7], 16) * Math.pow(16, -(m[7].length))) : 0)&lt;br /&gt;
 		) * (&lt;br /&gt;
 			m[9] ? Math.pow(16, parseInt(m[9], 16)) : 0x10000&lt;br /&gt;
 		)&lt;br /&gt;
 	) : (&lt;br /&gt;
 			m[2]&lt;br /&gt;
 		*&lt;br /&gt;
 			(m[4] ? Math.pow(10, m[4]) : 1e8)&lt;br /&gt;
 	);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== Python ====&lt;br /&gt;
 m = re.match(r&#039;^(([\d.]+)(X(\d+))?|x([\da-f]*)(\.([\da-f]*))?(X([\da-f]+))?)$&#039;, amount, re.IGNORECASE)&lt;br /&gt;
 if m.group(5):&lt;br /&gt;
     amount = float(int(m.group(5), 16))&lt;br /&gt;
     if m.group(7):&lt;br /&gt;
         amount += float(int(m.group(7), 16)) * pow(16, -(len(m.group(7))))&lt;br /&gt;
     if m.group(9):&lt;br /&gt;
         amount *= pow(16, int(m.group(9), 16))&lt;br /&gt;
     else:&lt;br /&gt;
         amount *= 0x10000&lt;br /&gt;
 else:&lt;br /&gt;
     amount = Decimal(m.group(2))&lt;br /&gt;
     if m.group(4):&lt;br /&gt;
         amount *= 10 ** int(m.group(4))&lt;br /&gt;
     else:&lt;br /&gt;
         amount *= 100000000&lt;br /&gt;
&lt;br /&gt;
==== C# ====&lt;br /&gt;
 Regex amountExpression = new Regex(@&amp;quot;^(([\d.]+)(X(\d+))?|x([\da-f]*)(\.([\da-f]*))?(X([\da-f]+))?)$&amp;quot;, RegexOptions.IgnoreCase);&lt;br /&gt;
 Match match = amountExpression.Match(value);&lt;br /&gt;
 if (match.Success)&lt;br /&gt;
 {&lt;br /&gt;
     if (match.Groups[5].Success)&lt;br /&gt;
     {&lt;br /&gt;
         long hexDecimal = 0;&lt;br /&gt;
         if (match.Groups[7].Success)&lt;br /&gt;
             hexDecimal = Convert.ToInt64(match.Groups[7].Value, 16) * (long)Math.Pow(16, -match.Groups[7].Length);&lt;br /&gt;
 &lt;br /&gt;
         long hexExponent = 0x10000;&lt;br /&gt;
         if (match.Groups[9].Success)&lt;br /&gt;
             hexExponent = (long)Math.Pow(16, Convert.ToInt32(match.Groups[9].Value, 16));&lt;br /&gt;
 &lt;br /&gt;
         Amount = (Convert.ToInt64(match.Groups[5].Value, 16) + hexDecimal) * hexExponent;&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
         long decimalExponent = 100000000;&lt;br /&gt;
         if (match.Groups[4].Success)&lt;br /&gt;
             decimalExponent = (long)Math.Pow(10, int.Parse(match.Groups[4].Value));&lt;br /&gt;
         Amount = (long)(decimal.Parse(match.Groups[2].Value) * decimalExponent);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
===Payment identifiers, not person identifiers===&lt;br /&gt;
In my opinion, the most basic idea of the URI scheme (as this is a currency) is to facilitate payment. So the URIs should represent first and foremost payments. If it represents something else, this needs to be specified. Thus&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
represents a &#039;&#039;&#039;payment&#039;&#039;&#039; to me using my bitcoin address, not my bitcoin address itself. So after parsing the URI (via link/qr/whatever) the application should open a transaction window with the address filled in. You then need to add an amount and confirm the payment.&lt;br /&gt;
If your application is smart, it will also have a button &amp;quot;just store the address&amp;quot;. But the point I am trying to make is that the default use of the URI should be for payment, nor for exchanging addresses.&lt;br /&gt;
&lt;br /&gt;
===Accessibility===&lt;br /&gt;
&#039;&#039;&#039;Imported from the forum:&#039;&#039;&#039; I like the simplicity of bitcoin:xxxxxxxxxxxxx and very much approve of its accessibility. Should someone from the outside happen to see such a URI, the protocol name already gives a description. A quick google search should then do the rest. x-btc sounds much more cryptic; the chance that someone googles that out of curiosity are much slimmer. Also, very likely, what s/he will find are mostly technical specifications. Not a good introduction to bitcoin.&lt;br /&gt;
&lt;br /&gt;
For the same reason I am for using &#039;&amp;amp;&#039; as a delimiter for key-value pairs. People know it from URLs. Make it easy for people to understand what is going on.&lt;br /&gt;
&lt;br /&gt;
===Keep it simple===&lt;br /&gt;
Don&#039;t explicitly write down information that can be inferred. Don&#039;t mark the address as an address. If there is no address, this does lose much of its utility. We could, however, specify &#039;address&#039; as a reserved word, so that &amp;lt;code&amp;gt;&lt;br /&gt;
bitcoin:address?amount=50X8&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
would initiate a transaction with the amount filled in, but with a blank address. I am not convinced that there is a use case, though.&lt;br /&gt;
&lt;br /&gt;
===Use-cases===&lt;br /&gt;
Before the URI scheme is finalised one should think long and hard about use cases. in what circumstances will which people use this, and for what?&lt;br /&gt;
* an online shop has a &#039;buy this&#039; link, which uses the URI scheme. &lt;br /&gt;
**PROBLEM: click on the link opens the application; how does the merchant notice this?&lt;br /&gt;
***POSSIBLE SOLUTION: javascript can detect the click.&lt;br /&gt;
***POSSIBLE SOLUTION: the checkout site checks its bitcoin account for payment via HTTP request.&lt;br /&gt;
**PROBLEM: the time problem (~10 minutes) is very apparent here; nobody wants to wait 10 minutes for the transaction to be confirmed.&lt;br /&gt;
* a person only has an online client, no actual application&lt;br /&gt;
**PROBLEM: how to redirect the URI so that the online client gets a notice?&lt;br /&gt;
***POSSIBLE SOLUTION: Small application and/or browser plugins to redirect the handler call to the designated online wallet.&lt;br /&gt;
&lt;br /&gt;
===Backwards compatibility===&lt;br /&gt;
We want URIs generated in 2011 to still work in 2036. Think about extensibility. Of course we can make only educated guesses (and nothing more!) about the future, but don&#039;t act as if there is none. This should be the best we can do, but it should not be seen as set in stone. Make it possible for later generations to improve our work, to mend our errors, without breaking the URIs created now. Version incompatibility is the easiest thing to drive users crazy: &amp;quot;I just upgraded to this shiny new version. What? It doesn&#039;t support the old format? AAAAAAARRRGH!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=BIP_0020&amp;diff=8180</id>
		<title>BIP 0020</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=BIP_0020&amp;diff=8180"/>
		<updated>2011-05-09T14:20:50Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: Changed to match the new spec as voted on in the forums quite a while ago.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is about creating a URI scheme for bitcoin.&lt;br /&gt;
Previous discussion was in [http://www.bitcoin.org/smf/index.php?topic=55.0 this forum thread].&lt;br /&gt;
x-btc specification is at [[x-btc]].&lt;br /&gt;
&lt;br /&gt;
==RFC 3986==&lt;br /&gt;
&#039;&#039;&#039;the following is taken from wikipedia&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Internet standard [http://rfc.net/std0066.html STD 66] (also RFC 3986) defines the generic syntax to be used in all URI schemes. Every URI is defined as consisting of four parts, as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;scheme name&amp;gt; : &amp;lt;hierarchical part&amp;gt; [ ? &amp;lt;query&amp;gt; ] [ # &amp;lt;fragment&amp;gt; ]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;scheme name&#039;&#039;&#039; consists of a letter followed by any combination of letters, digits, and the plus (&amp;quot;+&amp;quot;), period (&amp;quot;.&amp;quot;), or hyphen (&amp;quot;-&amp;quot;) characters; and is terminated by a colon (&amp;quot;:&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;hierarchical part&#039;&#039;&#039; of the URI is intended to hold identification information hierarchical in nature. Usually this part begins with a double forward slash (&amp;quot;//&amp;quot;), followed by an &#039;&#039;authority&#039;&#039; part and an optional &#039;&#039;path&#039;&#039;.  &lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;&#039;authority&#039;&#039;&#039; part holds an optional user information part terminated with &amp;quot;@&amp;quot; (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;username:password@&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), a hostname (i.e. domain name or IP address), and an optional port number preceded by a colon &amp;quot;:&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;&#039;path&#039;&#039;&#039; part is a sequence of segments (conceptually similar to directories, though not necessarily representing them) separated by a forward slash (&amp;quot;/&amp;quot;). Each segment can contain parameters separated from it using a semicolon (&amp;quot;;&amp;quot;), though this is rarely used in practice.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;query&#039;&#039;&#039;  is an optional part separated with a question mark, which contains additional identification information which is not hierarchical in nature. The query string syntax is not generically defined, but is commonly organized as a sequence of &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;key&amp;gt;=&amp;lt;value&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; pairs separated by a semicolon&amp;lt;ref&amp;gt;&lt;br /&gt;
RFC 1866 section 8.2.1 : by Tim Berners-Lee in 1995 encourages CGI authors to support &#039;;&#039; in addition to &#039;&amp;amp;&#039;.&lt;br /&gt;
&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;&lt;br /&gt;
[http://www.w3.org/TR/REC-html40/appendix/notes.html#h-B.2.2 HTML 4.01 Specification: Implementation, and Design Notes]: &amp;quot;CGI implementors support the use of &amp;quot;;&amp;quot; in place of &amp;quot;&amp;amp;&amp;quot; to save authors the trouble of escaping &amp;quot;&amp;amp;&amp;quot; characters in this manner.&amp;quot;&lt;br /&gt;
&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;&lt;br /&gt;
[http://www.w3.org/MarkUp/html-spec/html-spec_foot.html#FOOT26 Hypertext Markup Language - 2.0]&lt;br /&gt;
&amp;quot;CGI implementors are encouraged to support the use of &#039;;&#039; in place of &#039;&amp;amp;&#039; &amp;quot; &lt;br /&gt;
&amp;lt;/ref&amp;gt; or separated by an ampersand, for example:&lt;br /&gt;
 Semicolon: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;key1=value1;key2=value2;key3=value3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 Ampersand: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;key1=value1&amp;amp;key2=value2&amp;amp;key3=value3&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;fragment&#039;&#039;&#039; is an optional part separated from the front parts by a hash (&amp;quot;#&amp;quot;). It holds additional identifying information that provides direction to a secondary resource, e.g. a section heading in an article identified by the remainder of the URI.  When the primary resource is an HTML document, the &#039;&#039;&#039;fragment&#039;&#039;&#039; is often an &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; attribute of a specific element and web browsers will make sure this element is visible.&lt;br /&gt;
&lt;br /&gt;
==Proposed specification==&lt;br /&gt;
&lt;br /&gt;
[] means optional, &amp;lt;&amp;gt; are placeholders&lt;br /&gt;
&lt;br /&gt;
 bitcoin:&amp;lt;address&amp;gt;[?][amount=&amp;lt;size&amp;gt;][&amp;amp;][label=&amp;lt;label&amp;gt;][&amp;amp;][message=&amp;lt;message&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Query Keys ===&lt;br /&gt;
&lt;br /&gt;
*label: Label for that address (e.g. name of receiver)&lt;br /&gt;
*address: bitcoin address&lt;br /&gt;
*message: optional message that is shown to the user after scanning the QR code&lt;br /&gt;
*size: amount of bitcoins (full Decimal BitCoins)&lt;br /&gt;
&lt;br /&gt;
==== Transfer amount/size ====&lt;br /&gt;
&lt;br /&gt;
If an amount is provided, it may be specified in standard BTC decimal units.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
Just the address:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L&lt;br /&gt;
&lt;br /&gt;
Address with name:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?label=Luke-Jr&lt;br /&gt;
&lt;br /&gt;
Request to send 20.30 BTC to &amp;quot;Luke-Jr&amp;quot;:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?amount=20.3&amp;amp;label=Luke-Jr&lt;br /&gt;
&lt;br /&gt;
Request to send 100 TBC:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?amount=0.16777216&lt;br /&gt;
&lt;br /&gt;
Request to send 5 uBTC:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?amount=0.000005&lt;br /&gt;
&lt;br /&gt;
Request to send 50 BTC with message:&lt;br /&gt;
 bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L?amount=50&amp;amp;label=Luke-Jr&amp;amp;message=Donation%20for%20project%20xyz&lt;br /&gt;
&lt;br /&gt;
Characters must be URI encoded properly.&lt;br /&gt;
&lt;br /&gt;
=== BNF syntax ===&lt;br /&gt;
&lt;br /&gt;
 bitcoinurn      = &amp;quot;bitcoin:&amp;quot; bitcoinaddress [ &amp;quot;;version=&amp;quot; bitcoinversion ] [ &amp;quot;?&amp;quot; bitcoinparams ]&lt;br /&gt;
 bitcoinaddress  = FIXME :)&lt;br /&gt;
 bitcoinversion  = &amp;quot;1.0&amp;quot;&lt;br /&gt;
 bitcoinparams   = *bitcoinparam&lt;br /&gt;
 bitcoinparam    = amountparam | labelparam | messageparam&lt;br /&gt;
 amountparam     = &amp;quot;amount=&amp;quot; amount&lt;br /&gt;
 amount          = amountdecimal | amounthex&lt;br /&gt;
 amountdecimal   = digits [ &amp;quot;X&amp;quot; digits ]&lt;br /&gt;
 amounthex       = &amp;quot;x&amp;quot; hexdigits [ &amp;quot;X&amp;quot; hexdigits ]&lt;br /&gt;
 labelparam      = &amp;quot;label=&amp;quot; *uchar&lt;br /&gt;
 messageparam    = &amp;quot;label=&amp;quot; *uchar&lt;br /&gt;
&lt;br /&gt;
=== Parsing amount ===&lt;br /&gt;
Note that most of these have support for more specifiers of amount and have capabilities beyond what is needed to support this specification.&lt;br /&gt;
==== ECMAScript ====&lt;br /&gt;
 reAmount = /^(([\d.]+)(X(\d+))?|x([\da-f]*)(\.([\da-f]*))?(X([\da-f]+))?)$/i;&lt;br /&gt;
 function parseAmount(txt) {&lt;br /&gt;
 	var m = txt.match(reAmount);&lt;br /&gt;
 	return m[5] ? (&lt;br /&gt;
 		(&lt;br /&gt;
 			parseInt(m[5], 16) +&lt;br /&gt;
 			(m[7] ? (parseInt(m[7], 16) * Math.pow(16, -(m[7].length))) : 0)&lt;br /&gt;
 		) * (&lt;br /&gt;
 			m[9] ? Math.pow(16, parseInt(m[9], 16)) : 0x10000&lt;br /&gt;
 		)&lt;br /&gt;
 	) : (&lt;br /&gt;
 			m[2]&lt;br /&gt;
 		*&lt;br /&gt;
 			(m[4] ? Math.pow(10, m[4]) : 1e8)&lt;br /&gt;
 	);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== Python ====&lt;br /&gt;
 m = re.match(r&#039;^(([\d.]+)(X(\d+))?|x([\da-f]*)(\.([\da-f]*))?(X([\da-f]+))?)$&#039;, amount, re.IGNORECASE)&lt;br /&gt;
 if m.group(5):&lt;br /&gt;
     amount = float(int(m.group(5), 16))&lt;br /&gt;
     if m.group(7):&lt;br /&gt;
         amount += float(int(m.group(7), 16)) * pow(16, -(len(m.group(7))))&lt;br /&gt;
     if m.group(9):&lt;br /&gt;
         amount *= pow(16, int(m.group(9), 16))&lt;br /&gt;
     else:&lt;br /&gt;
         amount *= 0x10000&lt;br /&gt;
 else:&lt;br /&gt;
     amount = Decimal(m.group(2))&lt;br /&gt;
     if m.group(4):&lt;br /&gt;
         amount *= 10 ** int(m.group(4))&lt;br /&gt;
     else:&lt;br /&gt;
         amount *= 100000000&lt;br /&gt;
&lt;br /&gt;
==== C# ====&lt;br /&gt;
 Regex amountExpression = new Regex(@&amp;quot;^(([\d.]+)(X(\d+))?|x([\da-f]*)(\.([\da-f]*))?(X([\da-f]+))?)$&amp;quot;, RegexOptions.IgnoreCase);&lt;br /&gt;
 Match match = amountExpression.Match(value);&lt;br /&gt;
 if (match.Success)&lt;br /&gt;
 {&lt;br /&gt;
     if (match.Groups[5].Success)&lt;br /&gt;
     {&lt;br /&gt;
         long hexDecimal = 0;&lt;br /&gt;
         if (match.Groups[7].Success)&lt;br /&gt;
             hexDecimal = Convert.ToInt64(match.Groups[7].Value, 16) * (long)Math.Pow(16, -match.Groups[7].Length);&lt;br /&gt;
 &lt;br /&gt;
         long hexExponent = 0x10000;&lt;br /&gt;
         if (match.Groups[9].Success)&lt;br /&gt;
             hexExponent = (long)Math.Pow(16, Convert.ToInt32(match.Groups[9].Value, 16));&lt;br /&gt;
 &lt;br /&gt;
         Amount = (Convert.ToInt64(match.Groups[5].Value, 16) + hexDecimal) * hexExponent;&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
         long decimalExponent = 100000000;&lt;br /&gt;
         if (match.Groups[4].Success)&lt;br /&gt;
             decimalExponent = (long)Math.Pow(10, int.Parse(match.Groups[4].Value));&lt;br /&gt;
         Amount = (long)(decimal.Parse(match.Groups[2].Value) * decimalExponent);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
&lt;br /&gt;
===Payment identifiers, not person identifiers===&lt;br /&gt;
In my opinion, the most basic idea of the URI scheme (as this is a currency) is to facilitate payment. So the URIs should represent first and foremost payments. If it represents something else, this needs to be specified. Thus&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
bitcoin:1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
represents a &#039;&#039;&#039;payment&#039;&#039;&#039; to me using my bitcoin address, not my bitcoin address itself. So after parsing the URI (via link/qr/whatever) the application should open a transaction window with the address filled in. You then need to add an amount and confirm the payment.&lt;br /&gt;
If your application is smart, it will also have a button &amp;quot;just store the address&amp;quot;. But the point I am trying to make is that the default use of the URI should be for payment, nor for exchanging addresses.&lt;br /&gt;
&lt;br /&gt;
===Accessibility===&lt;br /&gt;
&#039;&#039;&#039;Imported from the forum:&#039;&#039;&#039; I like the simplicity of bitcoin:xxxxxxxxxxxxx and very much approve of its accessibility. Should someone from the outside happen to see such a URI, the protocol name already gives a description. A quick google search should then do the rest. x-btc sounds much more cryptic; the chance that someone googles that out of curiosity are much slimmer. Also, very likely, what s/he will find are mostly technical specifications. Not a good introduction to bitcoin.&lt;br /&gt;
&lt;br /&gt;
For the same reason I am for using &#039;&amp;amp;&#039; as a delimiter for key-value pairs. People know it from URLs. Make it easy for people to understand what is going on.&lt;br /&gt;
&lt;br /&gt;
===Keep it simple===&lt;br /&gt;
Don&#039;t explicitly write down information that can be inferred. Don&#039;t mark the address as an address. If there is no address, this does lose much of its utility. We could, however, specify &#039;address&#039; as a reserved word, so that &amp;lt;code&amp;gt;&lt;br /&gt;
bitcoin:address?amount=50X8&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
would initiate a transaction with the amount filled in, but with a blank address. I am not convinced that there is a use case, though.&lt;br /&gt;
&lt;br /&gt;
===Use-cases===&lt;br /&gt;
Before the URI scheme is finalised one should think long and hard about use cases. in what circumstances will which people use this, and for what?&lt;br /&gt;
* an online shop has a &#039;buy this&#039; link, which uses the URI scheme. &lt;br /&gt;
**PROBLEM: click on the link opens the application; how does the merchant notice this?&lt;br /&gt;
***POSSIBLE SOLUTION: javascript can detect the click.&lt;br /&gt;
***POSSIBLE SOLUTION: the checkout site checks its bitcoin account for payment via HTTP request.&lt;br /&gt;
**PROBLEM: the time problem (~10 minutes) is very apparent here; nobody wants to wait 10 minutes for the transaction to be confirmed.&lt;br /&gt;
* a person only has an online client, no actual application&lt;br /&gt;
**PROBLEM: how to redirect the URI so that the online client gets a notice?&lt;br /&gt;
***POSSIBLE SOLUTION: Small application and/or browser plugins to redirect the handler call to the designated online wallet.&lt;br /&gt;
&lt;br /&gt;
===Backwards compatibility===&lt;br /&gt;
We want URIs generated in 2011 to still work in 2036. Think about extensibility. Of course we can make only educated guesses (and nothing more!) about the future, but don&#039;t act as if there is none. This should be the best we can do, but it should not be seen as set in stone. Make it possible for later generations to improve our work, to mend our errors, without breaking the URIs created now. Version incompatibility is the easiest thing to drive users crazy: &amp;quot;I just upgraded to this shiny new version. What? It doesn&#039;t support the old format? AAAAAAARRRGH!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Fallback_Nodes&amp;diff=7954</id>
		<title>Fallback Nodes</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Fallback_Nodes&amp;diff=7954"/>
		<updated>2011-05-03T10:29:49Z</updated>

		<summary type="html">&lt;p&gt;BlueMatt: /* IPv4 Nodes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of nodes which are considered reliable. Nodes from this list which are down for more than 24 hours will be automatically removed and status of each node is displayed and updated every hour by [[User:WikiBot|WikiBot]].&lt;br /&gt;
&lt;br /&gt;
== How to use this list ==&lt;br /&gt;
&lt;br /&gt;
=== Connect to nodes ===&lt;br /&gt;
&lt;br /&gt;
You can connect to these nodes with the &#039;&#039;-addnode=ip&#039;&#039; switch instead of the usual node harvesting process (through IRC or via the embedded nodelist). You can connect to more than one node by using &#039;&#039;-addnode=ip&#039;&#039; more than once. It is usually a good idea to connect to more than one of these nodes.&lt;br /&gt;
&lt;br /&gt;
==== Nodes without a fixed ip ====&lt;br /&gt;
&lt;br /&gt;
If the node IP is not fixed (see &amp;quot;Fixed&amp;quot; column), you will have to resolve the node&#039;s name (first column) each time the IP changes. Some nodes may have their ip change once a day, some others once a month, and some others may stay on the same IP for years. Still, as long as the IP is not fixed, there is no guarantee it will stay the same.&lt;br /&gt;
&lt;br /&gt;
The [[Original Bitcoin client]] do not support hostnames to the &#039;&#039;-addnode&#039;&#039; parameter, so you must do the resolving part for it. For example on linux:&lt;br /&gt;
 bitcoind -addnode=$(host theymos.ath.cx |sed s/&amp;quot;^.*has address &amp;quot;//)&lt;br /&gt;
&lt;br /&gt;
=== IP Transactions ===&lt;br /&gt;
&lt;br /&gt;
You can also send [[IP Transactions]] to these nodes. If you include your bitcoin address in the &amp;quot;message&amp;quot; field, you may have your coins back.&lt;br /&gt;
&lt;br /&gt;
=== Tor network ===&lt;br /&gt;
&lt;br /&gt;
To use tor .onion addresses, you need to map virtual ips via the &#039;&#039;torrc&#039;&#039; file:&lt;br /&gt;
&lt;br /&gt;
 mapaddress 192.0.2.2 ijzt2eeizty3p5xe.onion&lt;br /&gt;
 mapaddress 192.0.2.3 j43z65b6r2usg3vk.onion&lt;br /&gt;
 mapaddress 192.0.2.4 pvuif6nonbhj3o3r.onion&lt;br /&gt;
&lt;br /&gt;
Once you have configured and restarted tor, 192.0.2.2 will connect to ijzt2eeizty3p5xe.onion when accessed through the Tor proxy (and likewise for the other IPs/onions). You can then run Bitcoin with -addnode=192.0.2.2, or even send bitcoins to that IP address. You can use any arbitrary IP addresses with MapAddress, though some of the common non-routable ranges (10.*, 192.168.*) will not work due to a Bitcoin bug. 192.0.2.1-192.0.2.255 is the recommended range because it is both non-routable and compatible with Bitcoin.&lt;br /&gt;
&lt;br /&gt;
== Nodes list ==&lt;br /&gt;
&lt;br /&gt;
=== IPv4 Nodes ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Hostname !! Owner !! IP !! Fixed !! Status !! Last Seen (GMT) !! Accepts IP transactions&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- BEGIN NODELIST --&amp;gt;&lt;br /&gt;
| ndrix.com || mndrix || 64.22.103.150 || {{Table Value Yes}} || {{Fallback Nodes/Node Up|version=0.3.21}} || 2011-04-17 12:00:08 || ?&lt;br /&gt;
|-&lt;br /&gt;
| 69.164.218.197 || Gavin Andresen || 69.164.218.197 || {{Table Value Yes}} || {{Fallback Nodes/Node Up|version=0.3.21}} || 2011-04-17 12:00:08 || ?&lt;br /&gt;
|-&lt;br /&gt;
| jun.dashjr.org || Lightfoot Hosting || 173.242.112.53 || {{Table Value Yes}} || {{Fallback Nodes/Node Up|version=0.3.21}} || 2011-04-17 12:00:08 || ?&lt;br /&gt;
|-&lt;br /&gt;
| mining.bitcoin.cz || slush || 178.79.147.99 || {{Table Value Yes}} || {{Fallback Nodes/Node Up|version=0.3.21}} || 2011-04-17 12:00:08 || No&lt;br /&gt;
|-&lt;br /&gt;
| 217.157.1.202 || kseistrup || 217.157.1.202 || {{Table Value Yes}} || {{Fallback Nodes/Node Up|version=0.3.21}} || 2011-04-17 12:00:09 || ?&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.csy.ca || Martok || 128.189.187.27 || {{Table Value Unknown}} || {{Fallback Nodes/Node Up|version=0.3.21}} || 2011-04-17 12:00:09 || ?&lt;br /&gt;
|-&lt;br /&gt;
| nat.router.dashjr.org || Luke-Jr || 71.1.74.69 || {{Table Value No}} || {{Fallback Nodes/Node Up|version=0.3.21}} || 2011-04-17 12:00:10 || ?&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.sipa.be || sipa || 178.18.90.41 || {{Table Value No}} || {{Fallback Nodes/Node Up|version=0.3.21}} || 2011-04-17 12:00:10 || No&lt;br /&gt;
|-&lt;br /&gt;
| bluematt.me || BlueMatt || 62.155.236.249 || {{Table Value No}} || {{Fallback Nodes/Node Up|version=0.3.21}} || 2011-05-03 12:29:00 || No&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.chrishowie.com || cdhowie || 68.169.45.99 || {{Table Value Yes}} || {{Fallback Nodes/Node Up|version=0.3.20[.2]}} || 2011-04-17 12:00:10 || No&lt;br /&gt;
|-&lt;br /&gt;
| btc1.justmoon.net || justmoon || 109.75.176.226 || {{Table Value Yes}} || {{Fallback Nodes/Node Up|version=0.3.20[.2]}} || 2011-04-17 12:00:10 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| bitcoins.ca || humble || 142.58.248.28 || {{Table Value Yes}} || {{Fallback Nodes/Node Up|version=0.3.20[.2]}} || 2011-04-17 12:00:10 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| BiddingPond.com || BiddingPond || 184.106.111.41 || {{Table Value Yes}} || {{Fallback Nodes/Node Up|version=0.3.20[.2]}} || 2011-04-17 12:00:10 || ?&lt;br /&gt;
|-&lt;br /&gt;
| bitcoin.isdigital.com || joecolotti || 50.7.251.192 || {{Table Value Yes}} || {{Fallback Nodes/Node Up|version=0.3.20[.2]}} || 2011-04-17 12:00:11 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| zack.home.chrishowie.com || cdhowie || 98.222.140.181 || {{Table Value No}} || {{Fallback Nodes/Node Up|version=0.3.20[.2]}} || 2011-04-17 12:00:11 || No&lt;br /&gt;
|-&lt;br /&gt;
| 178.63.15.200 || hendi || 178.63.15.200 || {{Table Value Yes}} || {{Fallback Nodes/Node Up|version=0.3.20[.1]}} || 2011-04-17 12:00:11 || ?&lt;br /&gt;
|-&lt;br /&gt;
| theymos.ath.cx || theymos || 99.27.237.13 || {{Table Value Unknown}} || {{Fallback Nodes/Node Up|version=0.3.19[.2]}} || 2011-04-17 12:00:12 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| fallback1.bitcoin.me.uk || Vladimir || 91.85.220.84 || {{Table Value Yes}} || {{Fallback Nodes/Node Up|version=0.3.19}} || 2011-04-17 12:00:12 || No&lt;br /&gt;
|-&lt;br /&gt;
| 109.75.176.193 || MagicalTux [DE] || 109.75.176.193 || {{Table Value Yes}} || {{Fallback Nodes/Node Up|version=0.3.19}} || 2011-04-17 12:00:12 || No&lt;br /&gt;
|-&lt;br /&gt;
| 173.224.125.222 || MagicalTux [US] || 173.224.125.222 || {{Table Value Yes}} || {{Fallback Nodes/Node Up|version=0.3.19}} || 2011-04-17 12:00:12 || No&lt;br /&gt;
|-&lt;br /&gt;
| 178.63.62.15 || MagicalTux [DE] || 178.63.62.15 || {{Table Value Yes}} || {{Fallback Nodes/Node Up|version=0.3.19}} || 2011-04-17 12:00:12 || No&lt;br /&gt;
|-&lt;br /&gt;
| bitlex.co.cc || BitLex || 78.34.69.123 || {{Table Value No}} || {{Fallback Nodes/Node Up|version=0.3.19}} || 2011-04-17 12:00:13 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| 74.82.216.10 || thufir || 74.82.216.10 || {{Table Value Yes}} || {{Fallback Nodes/Node Up|version=0.3.10}} || 2011-04-17 12:00:13 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| 74.57.236.239 || ? || 74.57.236.239 || {{Table Value Yes}} || {{Fallback Nodes/Node Old|version=0.3.0}} || 2011-04-17 12:00:13 || ?&lt;br /&gt;
|-&lt;br /&gt;
| 67.176.86.181 || BobSGI || 67.176.86.181 ||&lt;br /&gt;
|-&lt;br /&gt;
| BTCSportsBet.com || Cusipzzz || 109.75.176.39 || {{Table Value Yes}}&lt;br /&gt;
&amp;lt;!-- END NODELIST --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Tor nodes ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Hostname !! Owner !! Status !! Last Seen (GMT) !! Accepts IP transactions&lt;br /&gt;
|-&lt;br /&gt;
| ijzt2eeizty3p5xe.onion || ? || ? || 2011-02-11 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| j43z65b6r2usg3vk.onion || Dybbuk || ? || 2011-02-11 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| pvuif6nonbhj3o3r.onion || ? || ? || 2011-02-11 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| c5qvugpewwyyy5oz.onion || ? || ? || 2011-02-11 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| vso3r6cmjoomhhgg.onion || echelon || ? || 2011-02-11 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rnam4cxam62nkcyf.onion || BitLex || ? || 2011-02-11 || Yes&lt;br /&gt;
|-&lt;br /&gt;
| bitcoinbudtoeks7.onion || ? || ? || 2011-02-11 || ?&lt;br /&gt;
|-&lt;br /&gt;
| iy6ni3wkqazp4ytu.onion || ? || ? || 2011-02-11 || ?&lt;br /&gt;
|-&lt;br /&gt;
| h4kklwodpcmo6cbq.onion || ? || ? || 2011-02-11 || ?&lt;br /&gt;
|-&lt;br /&gt;
| vv6kcfscuntybrzm.onion || ? || ? || 2011-02-11 || ?&lt;br /&gt;
|-&lt;br /&gt;
| nlnsivjku4x4lu5n.onion || ? || ? || 2011-02-11 || ?&lt;br /&gt;
|-&lt;br /&gt;
| xqzfakpeuvrobvpj.onion || ? || ? || 2010-11-13 || No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Adding a node ==&lt;br /&gt;
&lt;br /&gt;
Before adding yourself as a fallback node, you should be sure your node will stay online for a long time. If a node is offline for more than 24 hours it will be removed from the list. To accept IP transactions you will have to add the &#039;&#039;-allowreceivebyip&#039;&#039; flag to your command line parameters.&lt;br /&gt;
&lt;br /&gt;
To add a node in this list, you just need the ip/hostname and your name, the other fields will be filled automatically. Insert the following lines before the &amp;lt;tt&amp;gt;END NODELIST&amp;lt;/tt&amp;gt; line:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;|-&lt;br /&gt;
| ip || your name&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note that a bot will connect to your node every hour to check its status and version.&lt;/div&gt;</summary>
		<author><name>BlueMatt</name></author>
	</entry>
</feed>